diff --git a/app/ecolyo.d9f1446d60a3f0f2d055.js b/app/ecolyo.23bdbdc3a7102945b134.js
similarity index 99%
rename from app/ecolyo.d9f1446d60a3f0f2d055.js
rename to app/ecolyo.23bdbdc3a7102945b134.js
index e3c81b542fe76c7df3c3b38c34e7768cfb4073be..95cc8b48957abf07955ced0824ce69bcae1303a0 100644
--- a/app/ecolyo.d9f1446d60a3f0f2d055.js
+++ b/app/ecolyo.23bdbdc3a7102945b134.js
@@ -27956,9 +27956,6 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
 function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
 function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
 function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
-function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
-function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
-function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
 var logStack = _cozyLogger.default.namespace('fluidPricesService');
 var FluidPricesService = /*#__PURE__*/function () {
   function FluidPricesService(_client) {
@@ -27968,47 +27965,16 @@ var FluidPricesService = /*#__PURE__*/function () {
   }
 
   /**
-   * Get all prices available in database
+   * Get a price according to a fluidType and a data. This method return the nearest and valid price for the given date.
    */
   (0, _createClass2.default)(FluidPricesService, [{
-    key: "getAllPrices",
+    key: "getPrices",
     value: function () {
-      var _getAllPrices = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
+      var _getPrices = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(fluidType, date) {
         var query, _yield$this$_client$q, fluidsPrices;
         return _regenerator.default.wrap(function _callee$(_context) {
           while (1) {
             switch (_context.prev = _context.next) {
-              case 0:
-                query = (0, _cozyClient.Q)(_doctypes.FLUIDSPRICES_DOCTYPE).limitBy(900); // TODO : handle case of 1000+ entries in doctype
-                _context.next = 3;
-                return this._client.query(query);
-              case 3:
-                _yield$this$_client$q = _context.sent;
-                fluidsPrices = _yield$this$_client$q.data;
-                return _context.abrupt("return", fluidsPrices);
-              case 6:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee, this);
-      }));
-      function getAllPrices() {
-        return _getAllPrices.apply(this, arguments);
-      }
-      return getAllPrices;
-    }()
-    /**
-     * Get a price according to a fluidType and a data. This method return the nearest and valid price for the given date.
-     */
-  }, {
-    key: "getPrices",
-    value: function () {
-      var _getPrices = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(fluidType, date) {
-        var query, _yield$this$_client$q2, fluidsPrices;
-        return _regenerator.default.wrap(function _callee2$(_context2) {
-          while (1) {
-            switch (_context2.prev = _context2.next) {
               case 0:
                 query = (0, _cozyClient.Q)(_doctypes.FLUIDSPRICES_DOCTYPE).where({
                   startDate: {
@@ -28020,18 +27986,18 @@ var FluidPricesService = /*#__PURE__*/function () {
                 }).indexFields(['startDate']).sortBy([{
                   startDate: 'desc'
                 }]).limitBy(1);
-                _context2.next = 3;
+                _context.next = 3;
                 return this._client.query(query);
               case 3:
-                _yield$this$_client$q2 = _context2.sent;
-                fluidsPrices = _yield$this$_client$q2.data;
-                return _context2.abrupt("return", fluidsPrices[0]);
+                _yield$this$_client$q = _context.sent;
+                fluidsPrices = _yield$this$_client$q.data;
+                return _context.abrupt("return", fluidsPrices[0]);
               case 6:
               case "end":
-                return _context2.stop();
+                return _context.stop();
             }
           }
-        }, _callee2, this);
+        }, _callee, this);
       }));
       function getPrices(_x, _x2) {
         return _getPrices.apply(this, arguments);
@@ -28044,11 +28010,11 @@ var FluidPricesService = /*#__PURE__*/function () {
   }, {
     key: "getAllLastPrices",
     value: function () {
-      var _getAllLastPrices = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
-        var query, _yield$this$_client$q3, fluidsPrices, configService, fluidConfig, recoveredFluidsPrices;
-        return _regenerator.default.wrap(function _callee3$(_context3) {
+      var _getAllLastPrices = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
+        var query, _yield$this$_client$q2, fluidsPrices, configService, fluidConfig, recoveredFluidsPrices;
+        return _regenerator.default.wrap(function _callee2$(_context2) {
           while (1) {
-            switch (_context3.prev = _context3.next) {
+            switch (_context2.prev = _context2.next) {
               case 0:
                 query = (0, _cozyClient.Q)(_doctypes.FLUIDSPRICES_DOCTYPE).where({
                   endDate: {
@@ -28057,13 +28023,13 @@ var FluidPricesService = /*#__PURE__*/function () {
                 }).indexFields(['fluidType']).sortBy([{
                   fluidType: 'asc'
                 }]).limitBy(3);
-                _context3.next = 3;
+                _context2.next = 3;
                 return this._client.query(query);
               case 3:
-                _yield$this$_client$q3 = _context3.sent;
-                fluidsPrices = _yield$this$_client$q3.data;
+                _yield$this$_client$q2 = _context2.sent;
+                fluidsPrices = _yield$this$_client$q2.data;
                 if (!(fluidsPrices.length !== 3)) {
-                  _context3.next = 12;
+                  _context2.next = 12;
                   break;
                 }
                 configService = new _fluidConfig.default();
@@ -28084,87 +28050,21 @@ var FluidPricesService = /*#__PURE__*/function () {
                 fluidsPrices.forEach(function (fluidPrice) {
                   recoveredFluidsPrices[fluidPrice.fluidType] = fluidPrice;
                 });
-                return _context3.abrupt("return", recoveredFluidsPrices);
+                return _context2.abrupt("return", recoveredFluidsPrices);
               case 12:
-                return _context3.abrupt("return", fluidsPrices);
+                return _context2.abrupt("return", fluidsPrices);
               case 13:
               case "end":
-                return _context3.stop();
+                return _context2.stop();
             }
           }
-        }, _callee3, this);
+        }, _callee2, this);
       }));
       function getAllLastPrices() {
         return _getAllLastPrices.apply(this, arguments);
       }
       return getAllLastPrices;
     }()
-    /**
-     * Delete all fluidPrices entities from the db
-     * @returns {boolean} - true when deleted with success
-     * @throws {Error}
-     */
-  }, {
-    key: "deleteAllFluidsPrices",
-    value: function () {
-      var _deleteAllFluidsPrices = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
-        var fluidsPrices, _iterator, _step, price, errorMessage;
-        return _regenerator.default.wrap(function _callee4$(_context4) {
-          while (1) {
-            switch (_context4.prev = _context4.next) {
-              case 0:
-                _context4.next = 2;
-                return this.getAllPrices();
-              case 2:
-                fluidsPrices = _context4.sent;
-                _context4.prev = 3;
-                _iterator = _createForOfIteratorHelper(fluidsPrices);
-                _context4.prev = 5;
-                _iterator.s();
-              case 7:
-                if ((_step = _iterator.n()).done) {
-                  _context4.next = 13;
-                  break;
-                }
-                price = _step.value;
-                _context4.next = 11;
-                return this._client.destroy(price);
-              case 11:
-                _context4.next = 7;
-                break;
-              case 13:
-                _context4.next = 18;
-                break;
-              case 15:
-                _context4.prev = 15;
-                _context4.t0 = _context4["catch"](5);
-                _iterator.e(_context4.t0);
-              case 18:
-                _context4.prev = 18;
-                _iterator.f();
-                return _context4.finish(18);
-              case 21:
-                return _context4.abrupt("return", true);
-              case 24:
-                _context4.prev = 24;
-                _context4.t1 = _context4["catch"](3);
-                errorMessage = "deleteAllFluidsPrices: ".concat(JSON.stringify(_context4.t1));
-                logStack('error', errorMessage);
-                _logger.default.error(errorMessage);
-                Sentry.captureException(_context4.t1);
-                return _context4.abrupt("return", false);
-              case 31:
-              case "end":
-                return _context4.stop();
-            }
-          }
-        }, _callee4, this, [[3, 24], [5, 15, 18, 21]]);
-      }));
-      function deleteAllFluidsPrices() {
-        return _deleteAllFluidsPrices.apply(this, arguments);
-      }
-      return deleteAllFluidsPrices;
-    }()
     /**
      * Check if a fluidPrice exists in db
      * @returns {Promise<FluidPrice | null>} price or null
@@ -28172,11 +28072,11 @@ var FluidPricesService = /*#__PURE__*/function () {
   }, {
     key: "checkIfPriceExists",
     value: function () {
-      var _checkIfPriceExists = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(fluidPrice) {
-        var query, _yield$this$_client$q4, _yield$this$_client$q5, price;
-        return _regenerator.default.wrap(function _callee5$(_context5) {
+      var _checkIfPriceExists = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(fluidPrice) {
+        var query, _yield$this$_client$q3, _yield$this$_client$q4, price;
+        return _regenerator.default.wrap(function _callee3$(_context3) {
           while (1) {
-            switch (_context5.prev = _context5.next) {
+            switch (_context3.prev = _context3.next) {
               case 0:
                 query = (0, _cozyClient.Q)(_doctypes.FLUIDSPRICES_DOCTYPE).where({
                   startDate: {
@@ -28186,25 +28086,25 @@ var FluidPricesService = /*#__PURE__*/function () {
                     $eq: fluidPrice.fluidType
                   }
                 });
-                _context5.next = 3;
+                _context3.next = 3;
                 return this._client.query(query);
               case 3:
-                _yield$this$_client$q4 = _context5.sent;
-                _yield$this$_client$q5 = (0, _slicedToArray2.default)(_yield$this$_client$q4.data, 1);
-                price = _yield$this$_client$q5[0];
+                _yield$this$_client$q3 = _context3.sent;
+                _yield$this$_client$q4 = (0, _slicedToArray2.default)(_yield$this$_client$q3.data, 1);
+                price = _yield$this$_client$q4[0];
                 if (!price) {
-                  _context5.next = 8;
+                  _context3.next = 8;
                   break;
                 }
-                return _context5.abrupt("return", price);
+                return _context3.abrupt("return", price);
               case 8:
-                return _context5.abrupt("return", null);
+                return _context3.abrupt("return", null);
               case 9:
               case "end":
-                return _context5.stop();
+                return _context3.stop();
             }
           }
-        }, _callee5, this);
+        }, _callee3, this);
       }));
       function checkIfPriceExists(_x3) {
         return _checkIfPriceExists.apply(this, arguments);
@@ -28218,33 +28118,33 @@ var FluidPricesService = /*#__PURE__*/function () {
   }, {
     key: "createPrice",
     value: function () {
-      var _createPrice = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(newPrice) {
+      var _createPrice = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(newPrice) {
         var _yield$this$_client$c, createdPrice, errorMessage;
-        return _regenerator.default.wrap(function _callee6$(_context6) {
+        return _regenerator.default.wrap(function _callee4$(_context4) {
           while (1) {
-            switch (_context6.prev = _context6.next) {
+            switch (_context4.prev = _context4.next) {
               case 0:
-                _context6.prev = 0;
-                _context6.next = 3;
+                _context4.prev = 0;
+                _context4.next = 3;
                 return this._client.create(_doctypes.FLUIDSPRICES_DOCTYPE, newPrice);
               case 3:
-                _yield$this$_client$c = _context6.sent;
+                _yield$this$_client$c = _context4.sent;
                 createdPrice = _yield$this$_client$c.data;
-                return _context6.abrupt("return", createdPrice);
+                return _context4.abrupt("return", createdPrice);
               case 8:
-                _context6.prev = 8;
-                _context6.t0 = _context6["catch"](0);
-                errorMessage = "'Error creating new createdPrice: ".concat(JSON.stringify(_context6.t0));
+                _context4.prev = 8;
+                _context4.t0 = _context4["catch"](0);
+                errorMessage = "'Error creating new createdPrice: ".concat(JSON.stringify(_context4.t0));
                 logStack('error', errorMessage);
                 _logger.default.error(errorMessage);
-                Sentry.captureException(_context6.t0);
-                throw _context6.t0;
+                Sentry.captureException(_context4.t0);
+                throw _context4.t0;
               case 15:
               case "end":
-                return _context6.stop();
+                return _context4.stop();
             }
           }
-        }, _callee6, this, [[0, 8]]);
+        }, _callee4, this, [[0, 8]]);
       }));
       function createPrice(_x4) {
         return _createPrice.apply(this, arguments);
@@ -28257,30 +28157,30 @@ var FluidPricesService = /*#__PURE__*/function () {
   }, {
     key: "updatePrice",
     value: function () {
-      var _updatePrice = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(doc, attributes) {
+      var _updatePrice = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(doc, attributes) {
         var _yield$this$_client$s, fluidPrice;
-        return _regenerator.default.wrap(function _callee7$(_context7) {
+        return _regenerator.default.wrap(function _callee5$(_context5) {
           while (1) {
-            switch (_context7.prev = _context7.next) {
+            switch (_context5.prev = _context5.next) {
               case 0:
-                _context7.next = 2;
+                _context5.next = 2;
                 return this._client.save(_objectSpread(_objectSpread({}, doc), attributes));
               case 2:
-                _yield$this$_client$s = _context7.sent;
+                _yield$this$_client$s = _context5.sent;
                 fluidPrice = _yield$this$_client$s.data;
                 if (!fluidPrice) {
-                  _context7.next = 6;
+                  _context5.next = 6;
                   break;
                 }
-                return _context7.abrupt("return", fluidPrice);
+                return _context5.abrupt("return", fluidPrice);
               case 6:
-                return _context7.abrupt("return", null);
+                return _context5.abrupt("return", null);
               case 7:
               case "end":
-                return _context7.stop();
+                return _context5.stop();
             }
           }
-        }, _callee7, this);
+        }, _callee5, this);
       }));
       function updatePrice(_x5, _x6) {
         return _updatePrice.apply(this, arguments);
diff --git a/index.html b/index.html
index 730736109759593020cbd9bf0fe4e32513379f4a..f1103cd8c6f6f73a7ebe5c78dd8594e632fa7dc6 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><!-- PWA Colors --><meta name="theme-color" content="#343641"><meta name="background-color" content="#121212">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.9cebad5ae7ea932ed345.js"></script><script src="app/ecolyo.d9f1446d60a3f0f2d055.js"></script></div></body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><!-- PWA Colors --><meta name="theme-color" content="#343641"><meta name="background-color" content="#121212">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.9cebad5ae7ea932ed345.js"></script><script src="app/ecolyo.23bdbdc3a7102945b134.js"></script></div></body></html>
\ No newline at end of file
diff --git a/services/fluidsPrices/ecolyo.js b/services/fluidsPrices/ecolyo.js
index 8f2c1fa76b4737ee35045af487d3c2864ee7ec28..dc5ba88ce2043dadab5b265af296da271e9dabdf 100644
--- a/services/fluidsPrices/ecolyo.js
+++ b/services/fluidsPrices/ecolyo.js
@@ -63596,12829 +63596,9400 @@ exports.UserQuestionState = UserQuestionState;
 /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(197)(module)))
 
 /***/ }),
-/* 250 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VERSION", function() { return VERSION; });
-/* harmony import */ var _datetime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(251);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DateTime", function() { return _datetime_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+/* 250 */,
+/* 251 */,
+/* 252 */,
+/* 253 */,
+/* 254 */,
+/* 255 */,
+/* 256 */,
+/* 257 */,
+/* 258 */,
+/* 259 */,
+/* 260 */,
+/* 261 */,
+/* 262 */,
+/* 263 */,
+/* 264 */,
+/* 265 */,
+/* 266 */,
+/* 267 */,
+/* 268 */,
+/* 269 */,
+/* 270 */,
+/* 271 */,
+/* 272 */,
+/* 273 */,
+/* 274 */,
+/* 275 */
+/***/ (function(module, exports) {
 
-/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(252);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Duration", function() { return _duration_js__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+function _defineProperty(obj, key, value) {
+  if (key in obj) {
+    Object.defineProperty(obj, key, {
+      value: value,
+      enumerable: true,
+      configurable: true,
+      writable: true
+    });
+  } else {
+    obj[key] = value;
+  }
 
-/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(268);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Interval", function() { return _interval_js__WEBPACK_IMPORTED_MODULE_2__["default"]; });
+  return obj;
+}
 
-/* harmony import */ var _info_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(269);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Info", function() { return _info_js__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-/* harmony import */ var _zone_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(262);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Zone", function() { return _zone_js__WEBPACK_IMPORTED_MODULE_4__["default"]; });
+/***/ }),
+/* 276 */
+/***/ (function(module, exports, __webpack_require__) {
 
-/* harmony import */ var _zones_fixedOffsetZone_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(265);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FixedOffsetZone", function() { return _zones_fixedOffsetZone_js__WEBPACK_IMPORTED_MODULE_5__["default"]; });
+"use strict";
 
-/* harmony import */ var _zones_IANAZone_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(263);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "IANAZone", function() { return _zones_IANAZone_js__WEBPACK_IMPORTED_MODULE_6__["default"]; });
 
-/* harmony import */ var _zones_invalidZone_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(266);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "InvalidZone", function() { return _zones_invalidZone_js__WEBPACK_IMPORTED_MODULE_7__["default"]; });
+var _interopRequireWildcard = __webpack_require__(277);
 
-/* harmony import */ var _zones_systemZone_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(261);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SystemZone", function() { return _zones_systemZone_js__WEBPACK_IMPORTED_MODULE_8__["default"]; });
+var _interopRequireDefault = __webpack_require__(1);
 
-/* harmony import */ var _settings_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(260);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Settings", function() { return _settings_js__WEBPACK_IMPORTED_MODULE_9__["default"]; });
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+var _exportNames = {
+  CozyLink: true,
+  StackLink: true,
+  compose: true,
+  QueryDefinition: true,
+  Mutations: true,
+  MutationTypes: true,
+  getDoctypeFromOperation: true,
+  Q: true,
+  Association: true,
+  HasMany: true,
+  HasOne: true,
+  HasOneInPlace: true,
+  HasManyInPlace: true,
+  HasManyTriggers: true,
+  deconstructCozyWebLinkWithSlug: true,
+  deconstructRedirectLink: true,
+  dehydrate: true,
+  generateWebLink: true,
+  ensureFirstSlash: true,
+  rootCozyUrl: true,
+  InvalidCozyUrlError: true,
+  InvalidProtocolError: true,
+  BlockedCozyError: true,
+  cancelable: true,
+  getQueryFromState: true,
+  Registry: true,
+  manifest: true,
+  BulkEditError: true,
+  models: true,
+  fetchPolicies: true
+};
+Object.defineProperty(exports, "default", {
+  enumerable: true,
+  get: function get() {
+    return _CozyClient.default;
+  }
+});
+Object.defineProperty(exports, "CozyLink", {
+  enumerable: true,
+  get: function get() {
+    return _CozyLink.default;
+  }
+});
+Object.defineProperty(exports, "StackLink", {
+  enumerable: true,
+  get: function get() {
+    return _StackLink.default;
+  }
+});
+Object.defineProperty(exports, "compose", {
+  enumerable: true,
+  get: function get() {
+    return _flow.default;
+  }
+});
+Object.defineProperty(exports, "QueryDefinition", {
+  enumerable: true,
+  get: function get() {
+    return _dsl.QueryDefinition;
+  }
+});
+Object.defineProperty(exports, "Mutations", {
+  enumerable: true,
+  get: function get() {
+    return _dsl.Mutations;
+  }
+});
+Object.defineProperty(exports, "MutationTypes", {
+  enumerable: true,
+  get: function get() {
+    return _dsl.MutationTypes;
+  }
+});
+Object.defineProperty(exports, "getDoctypeFromOperation", {
+  enumerable: true,
+  get: function get() {
+    return _dsl.getDoctypeFromOperation;
+  }
+});
+Object.defineProperty(exports, "Q", {
+  enumerable: true,
+  get: function get() {
+    return _dsl.Q;
+  }
+});
+Object.defineProperty(exports, "Association", {
+  enumerable: true,
+  get: function get() {
+    return _associations.Association;
+  }
+});
+Object.defineProperty(exports, "HasMany", {
+  enumerable: true,
+  get: function get() {
+    return _associations.HasMany;
+  }
+});
+Object.defineProperty(exports, "HasOne", {
+  enumerable: true,
+  get: function get() {
+    return _associations.HasOne;
+  }
+});
+Object.defineProperty(exports, "HasOneInPlace", {
+  enumerable: true,
+  get: function get() {
+    return _associations.HasOneInPlace;
+  }
+});
+Object.defineProperty(exports, "HasManyInPlace", {
+  enumerable: true,
+  get: function get() {
+    return _associations.HasManyInPlace;
+  }
+});
+Object.defineProperty(exports, "HasManyTriggers", {
+  enumerable: true,
+  get: function get() {
+    return _associations.HasManyTriggers;
+  }
+});
+Object.defineProperty(exports, "deconstructCozyWebLinkWithSlug", {
+  enumerable: true,
+  get: function get() {
+    return _helpers.deconstructCozyWebLinkWithSlug;
+  }
+});
+Object.defineProperty(exports, "deconstructRedirectLink", {
+  enumerable: true,
+  get: function get() {
+    return _helpers.deconstructRedirectLink;
+  }
+});
+Object.defineProperty(exports, "dehydrate", {
+  enumerable: true,
+  get: function get() {
+    return _helpers.dehydrate;
+  }
+});
+Object.defineProperty(exports, "generateWebLink", {
+  enumerable: true,
+  get: function get() {
+    return _helpers.generateWebLink;
+  }
+});
+Object.defineProperty(exports, "ensureFirstSlash", {
+  enumerable: true,
+  get: function get() {
+    return _helpers.ensureFirstSlash;
+  }
+});
+Object.defineProperty(exports, "rootCozyUrl", {
+  enumerable: true,
+  get: function get() {
+    return _helpers.rootCozyUrl;
+  }
+});
+Object.defineProperty(exports, "InvalidCozyUrlError", {
+  enumerable: true,
+  get: function get() {
+    return _helpers.InvalidCozyUrlError;
+  }
+});
+Object.defineProperty(exports, "InvalidProtocolError", {
+  enumerable: true,
+  get: function get() {
+    return _helpers.InvalidProtocolError;
+  }
+});
+Object.defineProperty(exports, "BlockedCozyError", {
+  enumerable: true,
+  get: function get() {
+    return _helpers.BlockedCozyError;
+  }
+});
+Object.defineProperty(exports, "cancelable", {
+  enumerable: true,
+  get: function get() {
+    return _utils.cancelable;
+  }
+});
+Object.defineProperty(exports, "getQueryFromState", {
+  enumerable: true,
+  get: function get() {
+    return _store.getQueryFromState;
+  }
+});
+Object.defineProperty(exports, "Registry", {
+  enumerable: true,
+  get: function get() {
+    return _registry.default;
+  }
+});
+Object.defineProperty(exports, "BulkEditError", {
+  enumerable: true,
+  get: function get() {
+    return _errors.BulkEditError;
+  }
+});
+Object.defineProperty(exports, "fetchPolicies", {
+  enumerable: true,
+  get: function get() {
+    return _policies.default;
+  }
+});
+exports.models = exports.manifest = void 0;
 
+var _CozyClient = _interopRequireDefault(__webpack_require__(279));
 
+var _CozyLink = _interopRequireDefault(__webpack_require__(623));
 
+var _StackLink = _interopRequireDefault(__webpack_require__(620));
 
+var _flow = _interopRequireDefault(__webpack_require__(702));
 
+var _dsl = __webpack_require__(495);
 
+var _associations = __webpack_require__(625);
 
+var _helpers = __webpack_require__(663);
 
+var _utils = __webpack_require__(714);
 
+var _store = __webpack_require__(627);
 
+var _registry = _interopRequireDefault(__webpack_require__(485));
 
+var manifest = _interopRequireWildcard(__webpack_require__(715));
 
-const VERSION = "3.0.4";
+exports.manifest = manifest;
 
+var _mock = __webpack_require__(716);
 
+Object.keys(_mock).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _mock[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function get() {
+      return _mock[key];
+    }
+  });
+});
 
+var _errors = __webpack_require__(624);
 
-/***/ }),
-/* 251 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+var _cli = __webpack_require__(717);
 
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return DateTime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "friendlyDateTime", function() { return friendlyDateTime; });
-/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(252);
-/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(268);
-/* harmony import */ var _settings_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(260);
-/* harmony import */ var _info_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(269);
-/* harmony import */ var _impl_formatter_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(254);
-/* harmony import */ var _zones_fixedOffsetZone_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(265);
-/* harmony import */ var _impl_locale_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(259);
-/* harmony import */ var _impl_util_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(257);
-/* harmony import */ var _impl_zoneUtil_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(264);
-/* harmony import */ var _impl_diff_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(270);
-/* harmony import */ var _impl_regexParser_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(267);
-/* harmony import */ var _impl_tokenParser_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(271);
-/* harmony import */ var _impl_conversions_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(273);
-/* harmony import */ var _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(256);
-/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(253);
-/* harmony import */ var _impl_invalid_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(258);
+Object.keys(_cli).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _cli[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function get() {
+      return _cli[key];
+    }
+  });
+});
 
+var models = _interopRequireWildcard(__webpack_require__(740));
 
+exports.models = models;
 
+var _policies = _interopRequireDefault(__webpack_require__(686));
 
+/***/ }),
+/* 277 */
+/***/ (function(module, exports, __webpack_require__) {
 
+var _typeof = __webpack_require__(278)["default"];
 
+function _getRequireWildcardCache(nodeInterop) {
+  if (typeof WeakMap !== "function") return null;
+  var cacheBabelInterop = new WeakMap();
+  var cacheNodeInterop = new WeakMap();
+  return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
+    return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
+  })(nodeInterop);
+}
 
+function _interopRequireWildcard(obj, nodeInterop) {
+  if (!nodeInterop && obj && obj.__esModule) {
+    return obj;
+  }
 
+  if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") {
+    return {
+      "default": obj
+    };
+  }
 
+  var cache = _getRequireWildcardCache(nodeInterop);
 
+  if (cache && cache.has(obj)) {
+    return cache.get(obj);
+  }
 
+  var newObj = {};
+  var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
 
+  for (var key in obj) {
+    if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
+      var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
 
+      if (desc && (desc.get || desc.set)) {
+        Object.defineProperty(newObj, key, desc);
+      } else {
+        newObj[key] = obj[key];
+      }
+    }
+  }
 
+  newObj["default"] = obj;
 
+  if (cache) {
+    cache.set(obj, newObj);
+  }
 
+  return newObj;
+}
 
-const INVALID = "Invalid DateTime";
-const MAX_DATE = 8.64e15;
+module.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-function unsupportedZone(zone) {
-  return new _impl_invalid_js__WEBPACK_IMPORTED_MODULE_15__["default"]("unsupported zone", `the zone "${zone.name}" is not supported`);
-}
+/***/ }),
+/* 278 */
+/***/ (function(module, exports) {
 
-// we cache week data on the DT object and this intermediates the cache
-function possiblyCachedWeekData(dt) {
-  if (dt.weekData === null) {
-    dt.weekData = Object(_impl_conversions_js__WEBPACK_IMPORTED_MODULE_12__["gregorianToWeek"])(dt.c);
-  }
-  return dt.weekData;
-}
+function _typeof(obj) {
+  "@babel/helpers - typeof";
 
-// clone really means, "make a new object with these modifications". all "setters" really use this
-// to create a new object while only changing some of the properties
-function clone(inst, alts) {
-  const current = {
-    ts: inst.ts,
-    zone: inst.zone,
-    c: inst.c,
-    o: inst.o,
-    loc: inst.loc,
-    invalid: inst.invalid,
-  };
-  return new DateTime({ ...current, ...alts, old: current });
+  return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
+    return typeof obj;
+  } : function (obj) {
+    return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+  }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(obj);
 }
 
-// find the right offset a given local time. The o input is our guess, which determines which
-// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)
-function fixOffset(localTS, o, tz) {
-  // Our UTC time is just a guess because our offset is just a guess
-  let utcGuess = localTS - o * 60 * 1000;
+module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-  // Test whether the zone matches the offset for this ts
-  const o2 = tz.offset(utcGuess);
+/***/ }),
+/* 279 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  // If so, offset didn't change and we're done
-  if (o === o2) {
-    return [utcGuess, o];
-  }
+"use strict";
 
-  // If not, change the ts by the difference in the offset
-  utcGuess -= (o2 - o) * 60 * 1000;
 
-  // If that gives us the local time we want, we're done
-  const o3 = tz.offset(utcGuess);
-  if (o2 === o3) {
-    return [utcGuess, o2];
-  }
+var _interopRequireWildcard = __webpack_require__(277);
 
-  // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time
-  return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];
-}
+var _interopRequireDefault = __webpack_require__(1);
 
-// convert an epoch timestamp into a calendar object with the given offset
-function tsToObj(ts, offset) {
-  ts += offset * 60 * 1000;
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
 
-  const d = new Date(ts);
+var _toArray2 = _interopRequireDefault(__webpack_require__(280));
 
-  return {
-    year: d.getUTCFullYear(),
-    month: d.getUTCMonth() + 1,
-    day: d.getUTCDate(),
-    hour: d.getUTCHours(),
-    minute: d.getUTCMinutes(),
-    second: d.getUTCSeconds(),
-    millisecond: d.getUTCMilliseconds(),
-  };
-}
+var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
 
-// convert a calendar object to a epoch timestamp
-function objToTS(obj, offset, zone) {
-  return fixOffset(Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["objToLocalTS"])(obj), offset, zone);
-}
-
-// create a new DT instance by adding a duration, adjusting for DSTs
-function adjustTime(inst, dur) {
-  const oPre = inst.o,
-    year = inst.c.year + Math.trunc(dur.years),
-    month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,
-    c = {
-      ...inst.c,
-      year,
-      month,
-      day:
-        Math.min(inst.c.day, Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["daysInMonth"])(year, month)) +
-        Math.trunc(dur.days) +
-        Math.trunc(dur.weeks) * 7,
-    },
-    millisToAdd = _duration_js__WEBPACK_IMPORTED_MODULE_0__["default"].fromObject({
-      years: dur.years - Math.trunc(dur.years),
-      quarters: dur.quarters - Math.trunc(dur.quarters),
-      months: dur.months - Math.trunc(dur.months),
-      weeks: dur.weeks - Math.trunc(dur.weeks),
-      days: dur.days - Math.trunc(dur.days),
-      hours: dur.hours,
-      minutes: dur.minutes,
-      seconds: dur.seconds,
-      milliseconds: dur.milliseconds,
-    }).as("milliseconds"),
-    localTS = Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["objToLocalTS"])(c);
-
-  let [ts, o] = fixOffset(localTS, oPre, inst.zone);
-
-  if (millisToAdd !== 0) {
-    ts += millisToAdd;
-    // that could have changed the offset by going over a DST, but we want to keep the ts the same
-    o = inst.zone.offset(ts);
-  }
-
-  return { ts, o };
-}
-
-// helper useful in turning the results of parsing into real dates
-// by handling the zone options
-function parseDataToDateTime(parsed, parsedZone, opts, format, text, specificOffset) {
-  const { setZone, zone } = opts;
-  if (parsed && Object.keys(parsed).length !== 0) {
-    const interpretationZone = parsedZone || zone,
-      inst = DateTime.fromObject(parsed, {
-        ...opts,
-        zone: interpretationZone,
-        specificOffset,
-      });
-    return setZone ? inst : inst.setZone(zone);
-  } else {
-    return DateTime.invalid(
-      new _impl_invalid_js__WEBPACK_IMPORTED_MODULE_15__["default"]("unparsable", `the input "${text}" can't be parsed as ${format}`)
-    );
-  }
-}
+var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
 
-// if you want to output a technical format (e.g. RFC 2822), this helper
-// helps handle the details
-function toTechFormat(dt, format, allowZ = true) {
-  return dt.isValid
-    ? _impl_formatter_js__WEBPACK_IMPORTED_MODULE_4__["default"].create(_impl_locale_js__WEBPACK_IMPORTED_MODULE_6__["default"].create("en-US"), {
-        allowZ,
-        forceSimple: true,
-      }).formatDateTimeFromString(dt, format)
-    : null;
-}
+var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(291));
 
-function toISODate(o, extended) {
-  const longFormat = o.c.year > 9999 || o.c.year < 0;
-  let c = "";
-  if (longFormat && o.c.year >= 0) c += "+";
-  c += Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["padStart"])(o.c.year, longFormat ? 6 : 4);
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-  if (extended) {
-    c += "-";
-    c += Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["padStart"])(o.c.month);
-    c += "-";
-    c += Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["padStart"])(o.c.day);
-  } else {
-    c += Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["padStart"])(o.c.month);
-    c += Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["padStart"])(o.c.day);
-  }
-  return c;
-}
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-function toISOTime(
-  o,
-  extended,
-  suppressSeconds,
-  suppressMilliseconds,
-  includeOffset,
-  extendedZone
-) {
-  let c = Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["padStart"])(o.c.hour);
-  if (extended) {
-    c += ":";
-    c += Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["padStart"])(o.c.minute);
-    if (o.c.second !== 0 || !suppressSeconds) {
-      c += ":";
-    }
-  } else {
-    c += Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["padStart"])(o.c.minute);
-  }
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-  if (o.c.second !== 0 || !suppressSeconds) {
-    c += Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["padStart"])(o.c.second);
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-    if (o.c.millisecond !== 0 || !suppressMilliseconds) {
-      c += ".";
-      c += Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["padStart"])(o.c.millisecond, 3);
-    }
-  }
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-  if (includeOffset) {
-    if (o.isOffsetFixed && o.offset === 0 && !extendedZone) {
-      c += "Z";
-    } else if (o.o < 0) {
-      c += "-";
-      c += Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["padStart"])(Math.trunc(-o.o / 60));
-      c += ":";
-      c += Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["padStart"])(Math.trunc(-o.o % 60));
-    } else {
-      c += "+";
-      c += Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["padStart"])(Math.trunc(o.o / 60));
-      c += ":";
-      c += Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["padStart"])(Math.trunc(o.o % 60));
-    }
-  }
+var _mapValues = _interopRequireDefault(__webpack_require__(298));
 
-  if (extendedZone) {
-    c += "[" + o.zone.ianaName + "]";
-  }
-  return c;
-}
+var _fromPairs = _interopRequireDefault(__webpack_require__(418));
 
-// defaults for unspecified units in the supported calendars
-const defaultUnitValues = {
-    month: 1,
-    day: 1,
-    hour: 0,
-    minute: 0,
-    second: 0,
-    millisecond: 0,
-  },
-  defaultWeekUnitValues = {
-    weekNumber: 1,
-    weekday: 1,
-    hour: 0,
-    minute: 0,
-    second: 0,
-    millisecond: 0,
-  },
-  defaultOrdinalUnitValues = {
-    ordinal: 1,
-    hour: 0,
-    minute: 0,
-    second: 0,
-    millisecond: 0,
-  };
+var _flatten = _interopRequireDefault(__webpack_require__(419));
 
-// Units in the supported calendars, sorted by bigness
-const orderedUnits = ["year", "month", "day", "hour", "minute", "second", "millisecond"],
-  orderedWeekUnits = [
-    "weekYear",
-    "weekNumber",
-    "weekday",
-    "hour",
-    "minute",
-    "second",
-    "millisecond",
-  ],
-  orderedOrdinalUnits = ["year", "ordinal", "hour", "minute", "second", "millisecond"];
-
-// standardize case and plurality in units
-function normalizeUnit(unit) {
-  const normalized = {
-    year: "year",
-    years: "year",
-    month: "month",
-    months: "month",
-    day: "day",
-    days: "day",
-    hour: "hour",
-    hours: "hour",
-    minute: "minute",
-    minutes: "minute",
-    quarter: "quarter",
-    quarters: "quarter",
-    second: "second",
-    seconds: "second",
-    millisecond: "millisecond",
-    milliseconds: "millisecond",
-    weekday: "weekday",
-    weekdays: "weekday",
-    weeknumber: "weekNumber",
-    weeksnumber: "weekNumber",
-    weeknumbers: "weekNumber",
-    weekyear: "weekYear",
-    weekyears: "weekYear",
-    ordinal: "ordinal",
-  }[unit.toLowerCase()];
-
-  if (!normalized) throw new _errors_js__WEBPACK_IMPORTED_MODULE_14__["InvalidUnitError"](unit);
+var _uniqBy = _interopRequireDefault(__webpack_require__(422));
 
-  return normalized;
-}
+var _zip = _interopRequireDefault(__webpack_require__(432));
 
-// this is a dumbed down version of fromObject() that runs about 60% faster
-// but doesn't do any validation, makes a bunch of assumptions about what units
-// are present, and so on.
-function quickDT(obj, opts) {
-  const zone = Object(_impl_zoneUtil_js__WEBPACK_IMPORTED_MODULE_8__["normalizeZone"])(opts.zone, _settings_js__WEBPACK_IMPORTED_MODULE_2__["default"].defaultZone),
-    loc = _impl_locale_js__WEBPACK_IMPORTED_MODULE_6__["default"].fromObject(opts),
-    tsNow = _settings_js__WEBPACK_IMPORTED_MODULE_2__["default"].now();
+var _forEach = _interopRequireDefault(__webpack_require__(442));
 
-  let ts, o;
+var _get = _interopRequireDefault(__webpack_require__(399));
 
-  // assume we have the higher-order units
-  if (!Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(obj.year)) {
-    for (const u of orderedUnits) {
-      if (Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(obj[u])) {
-        obj[u] = defaultUnitValues[u];
-      }
-    }
+var _microee = _interopRequireDefault(__webpack_require__(447));
 
-    const invalid = Object(_impl_conversions_js__WEBPACK_IMPORTED_MODULE_12__["hasInvalidGregorianData"])(obj) || Object(_impl_conversions_js__WEBPACK_IMPORTED_MODULE_12__["hasInvalidTimeData"])(obj);
-    if (invalid) {
-      return DateTime.invalid(invalid);
-    }
+var _cozyStackClient = _interopRequireWildcard(__webpack_require__(448));
 
-    const offsetProvis = zone.offset(tsNow);
-    [ts, o] = objToTS(obj, offsetProvis, zone);
-  } else {
-    ts = tsNow;
-  }
+var _const = __webpack_require__(619);
 
-  return new DateTime({ ts, zone, loc, o });
-}
+var _StackLink = _interopRequireDefault(__webpack_require__(620));
 
-function diffRelative(start, end, opts) {
-  const round = Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(opts.round) ? true : opts.round,
-    format = (c, unit) => {
-      c = Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["roundTo"])(c, round || opts.calendary ? 0 : 2, true);
-      const formatter = end.loc.clone(opts).relFormatter(opts);
-      return formatter.format(c, unit);
-    },
-    differ = (unit) => {
-      if (opts.calendary) {
-        if (!end.hasSame(start, unit)) {
-          return end.startOf(unit).diff(start.startOf(unit), unit).get(unit);
-        } else return 0;
-      } else {
-        return end.diff(start, unit).get(unit);
-      }
-    };
+var _associations = __webpack_require__(625);
 
-  if (opts.unit) {
-    return format(differ(opts.unit), opts.unit);
-  }
+var _helpers = __webpack_require__(662);
 
-  for (const unit of opts.units) {
-    const count = differ(unit);
-    if (Math.abs(count) >= 1) {
-      return format(count, unit);
-    }
-  }
-  return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);
-}
+var _helpers2 = __webpack_require__(663);
 
-function lastOpts(argList) {
-  let opts = {},
-    args;
-  if (argList.length > 0 && typeof argList[argList.length - 1] === "object") {
-    opts = argList[argList.length - 1];
-    args = Array.from(argList).slice(0, argList.length - 1);
-  } else {
-    args = Array.from(argList);
-  }
-  return [opts, args];
-}
+var _dsl = __webpack_require__(495);
 
-/**
- * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.
- *
- * A DateTime comprises of:
- * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.
- * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).
- * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.
- *
- * Here is a brief overview of the most commonly used functionality it provides:
- *
- * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link DateTime.local}, {@link DateTime.utc}, and (most flexibly) {@link DateTime.fromObject}. To create one from a standard string format, use {@link DateTime.fromISO}, {@link DateTime.fromHTTP}, and {@link DateTime.fromRFC2822}. To create one from a custom string format, use {@link DateTime.fromFormat}. To create one from a native JS date, use {@link DateTime.fromJSDate}.
- * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link DateTime#toObject}), use the {@link DateTime#year}, {@link DateTime#month},
- * {@link DateTime#day}, {@link DateTime#hour}, {@link DateTime#minute}, {@link DateTime#second}, {@link DateTime#millisecond} accessors.
- * * **Week calendar**: For ISO week calendar attributes, see the {@link DateTime#weekYear}, {@link DateTime#weekNumber}, and {@link DateTime#weekday} accessors.
- * * **Configuration** See the {@link DateTime#locale} and {@link DateTime#numberingSystem} accessors.
- * * **Transformation**: To transform the DateTime into other DateTimes, use {@link DateTime#set}, {@link DateTime#reconfigure}, {@link DateTime#setZone}, {@link DateTime#setLocale}, {@link DateTime.plus}, {@link DateTime#minus}, {@link DateTime#endOf}, {@link DateTime#startOf}, {@link DateTime#toUTC}, and {@link DateTime#toLocal}.
- * * **Output**: To convert the DateTime to other representations, use the {@link DateTime#toRelative}, {@link DateTime#toRelativeCalendar}, {@link DateTime#toJSON}, {@link DateTime#toISO}, {@link DateTime#toHTTP}, {@link DateTime#toObject}, {@link DateTime#toRFC2822}, {@link DateTime#toString}, {@link DateTime#toLocaleString}, {@link DateTime#toFormat}, {@link DateTime#toMillis} and {@link DateTime#toJSDate}.
- *
- * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.
- */
-class DateTime {
-  /**
-   * @access private
-   */
-  constructor(config) {
-    const zone = config.zone || _settings_js__WEBPACK_IMPORTED_MODULE_2__["default"].defaultZone;
+var _mobile = __webpack_require__(666);
 
-    let invalid =
-      config.invalid ||
-      (Number.isNaN(config.ts) ? new _impl_invalid_js__WEBPACK_IMPORTED_MODULE_15__["default"]("invalid input") : null) ||
-      (!zone.isValid ? unsupportedZone(zone) : null);
-    /**
-     * @access private
-     */
-    this.ts = Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(config.ts) ? _settings_js__WEBPACK_IMPORTED_MODULE_2__["default"].now() : config.ts;
+var _optimize = _interopRequireDefault(__webpack_require__(684));
 
-    let c = null,
-      o = null;
-    if (!invalid) {
-      const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);
+var _store = _interopRequireWildcard(__webpack_require__(627));
 
-      if (unchanged) {
-        [c, o] = [config.old.c, config.old.o];
-      } else {
-        const ot = zone.offset(this.ts);
-        c = tsToObj(this.ts, ot);
-        invalid = Number.isNaN(c.year) ? new _impl_invalid_js__WEBPACK_IMPORTED_MODULE_15__["default"]("invalid input") : null;
-        c = invalid ? null : c;
-        o = invalid ? null : ot;
-      }
-    }
+var _policies = _interopRequireDefault(__webpack_require__(686));
 
-    /**
-     * @access private
-     */
-    this._zone = zone;
-    /**
-     * @access private
-     */
-    this.loc = config.loc || _impl_locale_js__WEBPACK_IMPORTED_MODULE_6__["default"].create();
-    /**
-     * @access private
-     */
-    this.invalid = invalid;
-    /**
-     * @access private
-     */
-    this.weekData = null;
-    /**
-     * @access private
-     */
-    this.c = c;
-    /**
-     * @access private
-     */
-    this.o = o;
-    /**
-     * @access private
-     */
-    this.isLuxonDateTime = true;
-  }
+var _Schema = _interopRequireDefault(__webpack_require__(687));
 
-  // CONSTRUCT
+var _CozyLink = __webpack_require__(623);
 
-  /**
-   * Create a DateTime for the current instant, in the system's time zone.
-   *
-   * Use Settings to override these default values if needed.
-   * @example DateTime.now().toISO() //~> now in the ISO format
-   * @return {DateTime}
-   */
-  static now() {
-    return new DateTime({});
-  }
+var _ObservableQuery = _interopRequireDefault(__webpack_require__(693));
 
-  /**
-   * Create a local DateTime
-   * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used
-   * @param {number} [month=1] - The month, 1-indexed
-   * @param {number} [day=1] - The day of the month, 1-indexed
-   * @param {number} [hour=0] - The hour of the day, in 24-hour time
-   * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59
-   * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59
-   * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999
-   * @example DateTime.local()                                  //~> now
-   * @example DateTime.local({ zone: "America/New_York" })      //~> now, in US east coast time
-   * @example DateTime.local(2017)                              //~> 2017-01-01T00:00:00
-   * @example DateTime.local(2017, 3)                           //~> 2017-03-01T00:00:00
-   * @example DateTime.local(2017, 3, 12, { locale: "fr" })     //~> 2017-03-12T00:00:00, with a French locale
-   * @example DateTime.local(2017, 3, 12, 5)                    //~> 2017-03-12T05:00:00
-   * @example DateTime.local(2017, 3, 12, 5, { zone: "utc" })   //~> 2017-03-12T05:00:00, in UTC
-   * @example DateTime.local(2017, 3, 12, 5, 45)                //~> 2017-03-12T05:45:00
-   * @example DateTime.local(2017, 3, 12, 5, 45, 10)            //~> 2017-03-12T05:45:10
-   * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765)       //~> 2017-03-12T05:45:10.765
-   * @return {DateTime}
-   */
-  static local() {
-    const [opts, args] = lastOpts(arguments),
-      [year, month, day, hour, minute, second, millisecond] = args;
-    return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);
-  }
+var _snapshots = __webpack_require__(694);
 
-  /**
-   * Create a DateTime in UTC
-   * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used
-   * @param {number} [month=1] - The month, 1-indexed
-   * @param {number} [day=1] - The day of the month
-   * @param {number} [hour=0] - The hour of the day, in 24-hour time
-   * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59
-   * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59
-   * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999
-   * @param {Object} options - configuration options for the DateTime
-   * @param {string} [options.locale] - a locale to set on the resulting DateTime instance
-   * @param {string} [options.outputCalendar] - the output calendar to set on the resulting DateTime instance
-   * @param {string} [options.numberingSystem] - the numbering system to set on the resulting DateTime instance
-   * @example DateTime.utc()                                              //~> now
-   * @example DateTime.utc(2017)                                          //~> 2017-01-01T00:00:00Z
-   * @example DateTime.utc(2017, 3)                                       //~> 2017-03-01T00:00:00Z
-   * @example DateTime.utc(2017, 3, 12)                                   //~> 2017-03-12T00:00:00Z
-   * @example DateTime.utc(2017, 3, 12, 5)                                //~> 2017-03-12T05:00:00Z
-   * @example DateTime.utc(2017, 3, 12, 5, 45)                            //~> 2017-03-12T05:45:00Z
-   * @example DateTime.utc(2017, 3, 12, 5, 45, { locale: "fr" })          //~> 2017-03-12T05:45:00Z with a French locale
-   * @example DateTime.utc(2017, 3, 12, 5, 45, 10)                        //~> 2017-03-12T05:45:10Z
-   * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765, { locale: "fr" }) //~> 2017-03-12T05:45:10.765Z with a French locale
-   * @return {DateTime}
-   */
-  static utc() {
-    const [opts, args] = lastOpts(arguments),
-      [year, month, day, hour, minute, second, millisecond] = args;
+var _logger = _interopRequireDefault(__webpack_require__(498));
 
-    opts.zone = _zones_fixedOffsetZone_js__WEBPACK_IMPORTED_MODULE_5__["default"].utcInstance;
-    return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);
-  }
+var _queries = __webpack_require__(637);
 
-  /**
-   * Create a DateTime from a JavaScript Date object. Uses the default zone.
-   * @param {Date} date - a JavaScript Date object
-   * @param {Object} options - configuration options for the DateTime
-   * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into
-   * @return {DateTime}
-   */
-  static fromJSDate(date, options = {}) {
-    const ts = Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isDate"])(date) ? date.valueOf() : NaN;
-    if (Number.isNaN(ts)) {
-      return DateTime.invalid("invalid input");
-    }
+var _jsonStableStringify = _interopRequireDefault(__webpack_require__(695));
 
-    const zoneToUse = Object(_impl_zoneUtil_js__WEBPACK_IMPORTED_MODULE_8__["normalizeZone"])(options.zone, _settings_js__WEBPACK_IMPORTED_MODULE_2__["default"].defaultZone);
-    if (!zoneToUse.isValid) {
-      return DateTime.invalid(unsupportedZone(zoneToUse));
-    }
+var _promiseCache = _interopRequireDefault(__webpack_require__(699));
 
-    return new DateTime({
-      ts: ts,
-      zone: zoneToUse,
-      loc: _impl_locale_js__WEBPACK_IMPORTED_MODULE_6__["default"].fromObject(options),
-    });
-  }
+var _flagshipCertification = __webpack_require__(700);
 
-  /**
-   * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.
-   * @param {number} milliseconds - a number of milliseconds since 1970 UTC
-   * @param {Object} options - configuration options for the DateTime
-   * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into
-   * @param {string} [options.locale] - a locale to set on the resulting DateTime instance
-   * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance
-   * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance
-   * @return {DateTime}
-   */
-  static fromMillis(milliseconds, options = {}) {
-    if (!Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isNumber"])(milliseconds)) {
-      throw new _errors_js__WEBPACK_IMPORTED_MODULE_14__["InvalidArgumentError"](
-        `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`
-      );
-    } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {
-      // this isn't perfect because because we can still end up out of range because of additional shifting, but it's a start
-      return DateTime.invalid("Timestamp out of range");
-    } else {
-      return new DateTime({
-        ts: milliseconds,
-        zone: Object(_impl_zoneUtil_js__WEBPACK_IMPORTED_MODULE_8__["normalizeZone"])(options.zone, _settings_js__WEBPACK_IMPORTED_MODULE_2__["default"].defaultZone),
-        loc: _impl_locale_js__WEBPACK_IMPORTED_MODULE_6__["default"].fromObject(options),
-      });
-    }
-  }
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-  /**
-   * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.
-   * @param {number} seconds - a number of seconds since 1970 UTC
-   * @param {Object} options - configuration options for the DateTime
-   * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into
-   * @param {string} [options.locale] - a locale to set on the resulting DateTime instance
-   * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance
-   * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance
-   * @return {DateTime}
-   */
-  static fromSeconds(seconds, options = {}) {
-    if (!Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isNumber"])(seconds)) {
-      throw new _errors_js__WEBPACK_IMPORTED_MODULE_14__["InvalidArgumentError"]("fromSeconds requires a numerical input");
-    } else {
-      return new DateTime({
-        ts: seconds * 1000,
-        zone: Object(_impl_zoneUtil_js__WEBPACK_IMPORTED_MODULE_8__["normalizeZone"])(options.zone, _settings_js__WEBPACK_IMPORTED_MODULE_2__["default"].defaultZone),
-        loc: _impl_locale_js__WEBPACK_IMPORTED_MODULE_6__["default"].fromObject(options),
-      });
-    }
-  }
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-  /**
-   * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.
-   * @param {Object} obj - the object to create the DateTime from
-   * @param {number} obj.year - a year, such as 1987
-   * @param {number} obj.month - a month, 1-12
-   * @param {number} obj.day - a day of the month, 1-31, depending on the month
-   * @param {number} obj.ordinal - day of the year, 1-365 or 366
-   * @param {number} obj.weekYear - an ISO week year
-   * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year
-   * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday
-   * @param {number} obj.hour - hour of the day, 0-23
-   * @param {number} obj.minute - minute of the hour, 0-59
-   * @param {number} obj.second - second of the minute, 0-59
-   * @param {number} obj.millisecond - millisecond of the second, 0-999
-   * @param {Object} opts - options for creating this DateTime
-   * @param {string|Zone} [opts.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()
-   * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance
-   * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance
-   * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance
-   * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'
-   * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'
-   * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06
-   * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'utc' }),
-   * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'local' })
-   * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'America/New_York' })
-   * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'
-   * @return {DateTime}
-   */
-  static fromObject(obj, opts = {}) {
-    obj = obj || {};
-    const zoneToUse = Object(_impl_zoneUtil_js__WEBPACK_IMPORTED_MODULE_8__["normalizeZone"])(opts.zone, _settings_js__WEBPACK_IMPORTED_MODULE_2__["default"].defaultZone);
-    if (!zoneToUse.isValid) {
-      return DateTime.invalid(unsupportedZone(zoneToUse));
-    }
-
-    const tsNow = _settings_js__WEBPACK_IMPORTED_MODULE_2__["default"].now(),
-      offsetProvis = !Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(opts.specificOffset)
-        ? opts.specificOffset
-        : zoneToUse.offset(tsNow),
-      normalized = Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["normalizeObject"])(obj, normalizeUnit),
-      containsOrdinal = !Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(normalized.ordinal),
-      containsGregorYear = !Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(normalized.year),
-      containsGregorMD = !Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(normalized.month) || !Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(normalized.day),
-      containsGregor = containsGregorYear || containsGregorMD,
-      definiteWeekDef = normalized.weekYear || normalized.weekNumber,
-      loc = _impl_locale_js__WEBPACK_IMPORTED_MODULE_6__["default"].fromObject(opts);
-
-    // cases:
-    // just a weekday -> this week's instance of that weekday, no worries
-    // (gregorian data or ordinal) + (weekYear or weekNumber) -> error
-    // (gregorian month or day) + ordinal -> error
-    // otherwise just use weeks or ordinals or gregorian, depending on what's specified
-
-    if ((containsGregor || containsOrdinal) && definiteWeekDef) {
-      throw new _errors_js__WEBPACK_IMPORTED_MODULE_14__["ConflictingSpecificationError"](
-        "Can't mix weekYear/weekNumber units with year/month/day or ordinals"
-      );
-    }
+function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
 
-    if (containsGregorMD && containsOrdinal) {
-      throw new _errors_js__WEBPACK_IMPORTED_MODULE_14__["ConflictingSpecificationError"]("Can't mix ordinal dates with month/day");
-    }
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
 
-    const useWeekData = definiteWeekDef || (normalized.weekday && !containsGregor);
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
 
-    // configure ourselves to deal with gregorian dates or week stuff
-    let units,
-      defaultValues,
-      objNow = tsToObj(tsNow, offsetProvis);
-    if (useWeekData) {
-      units = orderedWeekUnits;
-      defaultValues = defaultWeekUnitValues;
-      objNow = Object(_impl_conversions_js__WEBPACK_IMPORTED_MODULE_12__["gregorianToWeek"])(objNow);
-    } else if (containsOrdinal) {
-      units = orderedOrdinalUnits;
-      defaultValues = defaultOrdinalUnitValues;
-      objNow = Object(_impl_conversions_js__WEBPACK_IMPORTED_MODULE_12__["gregorianToOrdinal"])(objNow);
-    } else {
-      units = orderedUnits;
-      defaultValues = defaultUnitValues;
-    }
-
-    // set default values for missing stuff
-    let foundFirst = false;
-    for (const u of units) {
-      const v = normalized[u];
-      if (!Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(v)) {
-        foundFirst = true;
-      } else if (foundFirst) {
-        normalized[u] = defaultValues[u];
-      } else {
-        normalized[u] = objNow[u];
-      }
-    }
-
-    // make sure the values we have are in range
-    const higherOrderInvalid = useWeekData
-        ? Object(_impl_conversions_js__WEBPACK_IMPORTED_MODULE_12__["hasInvalidWeekData"])(normalized)
-        : containsOrdinal
-        ? Object(_impl_conversions_js__WEBPACK_IMPORTED_MODULE_12__["hasInvalidOrdinalData"])(normalized)
-        : Object(_impl_conversions_js__WEBPACK_IMPORTED_MODULE_12__["hasInvalidGregorianData"])(normalized),
-      invalid = higherOrderInvalid || Object(_impl_conversions_js__WEBPACK_IMPORTED_MODULE_12__["hasInvalidTimeData"])(normalized);
-
-    if (invalid) {
-      return DateTime.invalid(invalid);
-    }
-
-    // compute the actual time
-    const gregorian = useWeekData
-        ? Object(_impl_conversions_js__WEBPACK_IMPORTED_MODULE_12__["weekToGregorian"])(normalized)
-        : containsOrdinal
-        ? Object(_impl_conversions_js__WEBPACK_IMPORTED_MODULE_12__["ordinalToGregorian"])(normalized)
-        : normalized,
-      [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse),
-      inst = new DateTime({
-        ts: tsFinal,
-        zone: zoneToUse,
-        o: offsetFinal,
-        loc,
-      });
+var ensureArray = function ensureArray(arr) {
+  return Array.isArray(arr) ? arr : [arr];
+};
 
-    // gregorian data + weekday serves only to validate
-    if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {
-      return DateTime.invalid(
-        "mismatched weekday",
-        `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`
-      );
-    }
-
-    return inst;
-  }
-
-  /**
-   * Create a DateTime from an ISO 8601 string
-   * @param {string} text - the ISO string
-   * @param {Object} opts - options to affect the creation
-   * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone
-   * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one
-   * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance
-   * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance
-   * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance
-   * @example DateTime.fromISO('2016-05-25T09:08:34.123')
-   * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')
-   * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})
-   * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})
-   * @example DateTime.fromISO('2016-W05-4')
-   * @return {DateTime}
-   */
-  static fromISO(text, opts = {}) {
-    const [vals, parsedZone] = Object(_impl_regexParser_js__WEBPACK_IMPORTED_MODULE_10__["parseISODate"])(text);
-    return parseDataToDateTime(vals, parsedZone, opts, "ISO 8601", text);
-  }
-
-  /**
-   * Create a DateTime from an RFC 2822 string
-   * @param {string} text - the RFC 2822 string
-   * @param {Object} opts - options to affect the creation
-   * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.
-   * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one
-   * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance
-   * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance
-   * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance
-   * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')
-   * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')
-   * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')
-   * @return {DateTime}
-   */
-  static fromRFC2822(text, opts = {}) {
-    const [vals, parsedZone] = Object(_impl_regexParser_js__WEBPACK_IMPORTED_MODULE_10__["parseRFC2822Date"])(text);
-    return parseDataToDateTime(vals, parsedZone, opts, "RFC 2822", text);
-  }
-
-  /**
-   * Create a DateTime from an HTTP header date
-   * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1
-   * @param {string} text - the HTTP header date
-   * @param {Object} opts - options to affect the creation
-   * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.
-   * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.
-   * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance
-   * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance
-   * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance
-   * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')
-   * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')
-   * @example DateTime.fromHTTP('Sun Nov  6 08:49:37 1994')
-   * @return {DateTime}
-   */
-  static fromHTTP(text, opts = {}) {
-    const [vals, parsedZone] = Object(_impl_regexParser_js__WEBPACK_IMPORTED_MODULE_10__["parseHTTPDate"])(text);
-    return parseDataToDateTime(vals, parsedZone, opts, "HTTP", opts);
-  }
-
-  /**
-   * Create a DateTime from an input string and format string.
-   * Defaults to en-US if no locale has been specified, regardless of the system's locale. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/parsing?id=table-of-tokens).
-   * @param {string} text - the string to parse
-   * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)
-   * @param {Object} opts - options to affect the creation
-   * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone
-   * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one
-   * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale
-   * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system
-   * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance
-   * @return {DateTime}
-   */
-  static fromFormat(text, fmt, opts = {}) {
-    if (Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(text) || Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(fmt)) {
-      throw new _errors_js__WEBPACK_IMPORTED_MODULE_14__["InvalidArgumentError"]("fromFormat requires an input string and a format");
-    }
-
-    const { locale = null, numberingSystem = null } = opts,
-      localeToUse = _impl_locale_js__WEBPACK_IMPORTED_MODULE_6__["default"].fromOpts({
-        locale,
-        numberingSystem,
-        defaultToEN: true,
-      }),
-      [vals, parsedZone, specificOffset, invalid] = Object(_impl_tokenParser_js__WEBPACK_IMPORTED_MODULE_11__["parseFromTokens"])(localeToUse, text, fmt);
-    if (invalid) {
-      return DateTime.invalid(invalid);
-    } else {
-      return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text, specificOffset);
-    }
-  }
-
-  /**
-   * @deprecated use fromFormat instead
-   */
-  static fromString(text, fmt, opts = {}) {
-    return DateTime.fromFormat(text, fmt, opts);
-  }
-
-  /**
-   * Create a DateTime from a SQL date, time, or datetime
-   * Defaults to en-US if no locale has been specified, regardless of the system's locale
-   * @param {string} text - the string to parse
-   * @param {Object} opts - options to affect the creation
-   * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone
-   * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one
-   * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale
-   * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system
-   * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance
-   * @example DateTime.fromSQL('2017-05-15')
-   * @example DateTime.fromSQL('2017-05-15 09:12:34')
-   * @example DateTime.fromSQL('2017-05-15 09:12:34.342')
-   * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')
-   * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')
-   * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })
-   * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })
-   * @example DateTime.fromSQL('09:12:34.342')
-   * @return {DateTime}
-   */
-  static fromSQL(text, opts = {}) {
-    const [vals, parsedZone] = Object(_impl_regexParser_js__WEBPACK_IMPORTED_MODULE_10__["parseSQL"])(text);
-    return parseDataToDateTime(vals, parsedZone, opts, "SQL", text);
-  }
-
-  /**
-   * Create an invalid DateTime.
-   * @param {DateTime} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent
-   * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information
-   * @return {DateTime}
-   */
-  static invalid(reason, explanation = null) {
-    if (!reason) {
-      throw new _errors_js__WEBPACK_IMPORTED_MODULE_14__["InvalidArgumentError"]("need to specify a reason the DateTime is invalid");
-    }
-
-    const invalid = reason instanceof _impl_invalid_js__WEBPACK_IMPORTED_MODULE_15__["default"] ? reason : new _impl_invalid_js__WEBPACK_IMPORTED_MODULE_15__["default"](reason, explanation);
+var deprecatedHandler = function deprecatedHandler(msg) {
+  return {
+    get: function get(target, prop) {
+      _logger.default.warn(msg);
 
-    if (_settings_js__WEBPACK_IMPORTED_MODULE_2__["default"].throwOnInvalid) {
-      throw new _errors_js__WEBPACK_IMPORTED_MODULE_14__["InvalidDateTimeError"](invalid);
-    } else {
-      return new DateTime({ invalid });
+      return target[prop];
     }
-  }
-
-  /**
-   * Check if an object is an instance of DateTime. Works across context boundaries
-   * @param {object} o
-   * @return {boolean}
-   */
-  static isDateTime(o) {
-    return (o && o.isLuxonDateTime) || false;
-  }
-
-  /**
-   * Produce the format string for a set of options
-   * @param formatOpts
-   * @param localeOpts
-   * @returns {string}
-   */
-  static parseFormatForOpts(formatOpts, localeOpts = {}) {
-    const tokenList = Object(_impl_tokenParser_js__WEBPACK_IMPORTED_MODULE_11__["formatOptsToTokens"])(formatOpts, _impl_locale_js__WEBPACK_IMPORTED_MODULE_6__["default"].fromObject(localeOpts));
-    return !tokenList ? null : tokenList.map((t) => (t ? t.val : null)).join("");
-  }
+  };
+};
 
-  /**
-   * Produce the the fully expanded format token for the locale
-   * Does NOT quote characters, so quoted tokens will not round trip correctly
-   * @param fmt
-   * @param localeOpts
-   * @returns {string}
-   */
-  static expandFormat(fmt, localeOpts = {}) {
-    const expanded = Object(_impl_tokenParser_js__WEBPACK_IMPORTED_MODULE_11__["expandMacroTokens"])(_impl_formatter_js__WEBPACK_IMPORTED_MODULE_4__["default"].parseFormat(fmt), _impl_locale_js__WEBPACK_IMPORTED_MODULE_6__["default"].fromObject(localeOpts));
-    return expanded.map((t) => t.val).join("");
-  }
+var supportsReferences = function supportsReferences(relationshipClass) {
+  return relationshipClass.prototype.addReferences && relationshipClass.prototype.removeReferences;
+};
 
-  // INFO
+var referencesUnsupportedError = function referencesUnsupportedError(relationshipClassName) {
+  return new Error("The \"".concat(relationshipClassName, "\" relationship does not support references. If you need to add references to a document, its relationship class must have the methods {add,remove}References"));
+};
 
-  /**
-   * Get the value of unit.
-   * @param {string} unit - a unit such as 'minute' or 'day'
-   * @example DateTime.local(2017, 7, 4).get('month'); //=> 7
-   * @example DateTime.local(2017, 7, 4).get('day'); //=> 4
-   * @return {number}
-   */
-  get(unit) {
-    return this[unit];
-  }
+var securiseUri = function securiseUri(uri) {
+  var _window$cozy;
 
-  /**
-   * Returns whether the DateTime is valid. Invalid DateTimes occur when:
-   * * The DateTime was created from invalid calendar information, such as the 13th month or February 30
-   * * The DateTime was created by an operation on another invalid date
-   * @type {boolean}
-   */
-  get isValid() {
-    return this.invalid === null;
+  if (uri && typeof window !== 'undefined' && (_window$cozy = window['cozy']) !== null && _window$cozy !== void 0 && _window$cozy.isSecureProtocol) {
+    var secureUrl = new URL(uri);
+    secureUrl.protocol = 'https:';
+    return secureUrl.toString();
   }
 
-  /**
-   * Returns an error code if this DateTime is invalid, or null if the DateTime is valid
-   * @type {string}
-   */
-  get invalidReason() {
-    return this.invalid ? this.invalid.reason : null;
-  }
+  return uri;
+};
 
-  /**
-   * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid
-   * @type {string}
-   */
-  get invalidExplanation() {
-    return this.invalid ? this.invalid.explanation : null;
-  }
+var DOC_CREATION = 'creation';
+var DOC_UPDATE = 'update';
+/**
+ * @typedef {object} ClientOptions
+ * @property {object} [client]
+ * @property {object} [link]
+ * @property {object} [links]
+ * @property {import("./types").Token} [token]
+ * @property {string} [uri]
+ * @property {object} [stackClient]
+ * @property {boolean} [warningForCustomHandlers]
+ * @property {boolean} [autoHydrate]
+ * @property {boolean} [backgroundFetching] - If set to true, backgroundFetching will be enabled by default on every query. Meaning that, when the fetchStatus has already been loaded, it won't be updated during future fetches. Instead, a `isFetching` attribute will be used to indicate when background fetching is started.
+ * @property {object} [oauth]
+ * @property {Function} [onTokenRefresh]
+ * @property {Function} [onError] - Default callback if a query is errored
+ * @property  {import("./types").Link}         [link]   - Backward compatibility
+ * @property  {Array<import("./types").Link>}  [links]  - List of links
+ * @property  {object}       [schema] - Schema description for each doctypes
+ * @property  {import("./types").AppMetadata}  [appMetadata] - Metadata about the application that will be used in ensureCozyMetadata
+ * @property  {import("./types").ClientCapabilities} [capabilities] - Capabilities sent by the stack
+ * @property  {boolean} [store] - If set to false, the client will not instantiate a Redux store automatically. Use this if you want to merge cozy-client's store with your own redux store. See [here](https://docs.cozy.io/en/cozy-client/react-integration/#1b-use-your-own-redux-store) for more information.
+ */
 
-  /**
-   * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime
-   *
-   * @type {string}
-   */
-  get locale() {
-    return this.isValid ? this.loc.locale : null;
-  }
+/**
+ * Responsible for
+ *
+ * - Creating observable queries
+ * - Hydration
+ * - Creating plan for saving documents
+ * - Associations
+ */
 
+var CozyClient = /*#__PURE__*/function () {
   /**
-   * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime
+   * @param  {ClientOptions} rawOptions - Options
    *
-   * @type {string}
-   */
-  get numberingSystem() {
-    return this.isValid ? this.loc.numberingSystem : null;
-  }
-
-  /**
-   * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime
+   * @example
+   * ```js
+   * const client = new CozyClient({
+   *   schema: {
+   *     todos: {
+   *       doctype: 'io.cozy.todos',
+   *       relationships: {
+   *         authors: {
+   *           type: 'has-many',
+   *           doctype: 'io.cozy.persons'
+   *         }
+   *       }
+   *     }
+   *   }
+   * })
+   * ```
    *
-   * @type {string}
-   */
-  get outputCalendar() {
-    return this.isValid ? this.loc.outputCalendar : null;
-  }
-
-  /**
-   * Get the time zone associated with this DateTime.
-   * @type {Zone}
-   */
-  get zone() {
-    return this._zone;
-  }
-
-  /**
-   * Get the name of the time zone.
-   * @type {string}
-   */
-  get zoneName() {
-    return this.isValid ? this.zone.name : null;
-  }
-
-  /**
-   * Get the year
-   * @example DateTime.local(2017, 5, 25).year //=> 2017
-   * @type {number}
-   */
-  get year() {
-    return this.isValid ? this.c.year : NaN;
-  }
-
-  /**
-   * Get the quarter
-   * @example DateTime.local(2017, 5, 25).quarter //=> 2
-   * @type {number}
+   * Cozy-Client will automatically call `this.login()` if provided with a token and an uri
    */
-  get quarter() {
-    return this.isValid ? Math.ceil(this.c.month / 3) : NaN;
-  }
+  function CozyClient() {
+    var _this = this;
 
-  /**
-   * Get the month (1-12).
-   * @example DateTime.local(2017, 5, 25).month //=> 5
-   * @type {number}
-   */
-  get month() {
-    return this.isValid ? this.c.month : NaN;
-  }
+    var rawOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+    (0, _classCallCheck2.default)(this, CozyClient);
+    (0, _defineProperty2.default)(this, "fetchQueryAndGetFromState", /*#__PURE__*/function () {
+      var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
+        var definition, options;
+        return _regenerator.default.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                definition = _ref.definition, options = _ref.options;
+                _context.prev = 1;
+                _context.next = 4;
+                return _this.query(definition, options);
 
-  /**
-   * Get the day of the month (1-30ish).
-   * @example DateTime.local(2017, 5, 25).day //=> 25
-   * @type {number}
-   */
-  get day() {
-    return this.isValid ? this.c.day : NaN;
-  }
+              case 4:
+                return _context.abrupt("return", _this.getQueryFromState(options.as, options));
 
-  /**
-   * Get the hour of the day (0-23).
-   * @example DateTime.local(2017, 5, 25, 9).hour //=> 9
-   * @type {number}
-   */
-  get hour() {
-    return this.isValid ? this.c.hour : NaN;
-  }
+              case 7:
+                _context.prev = 7;
+                _context.t0 = _context["catch"](1);
+                throw _context.t0;
 
-  /**
-   * Get the minute of the hour (0-59).
-   * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30
-   * @type {number}
-   */
-  get minute() {
-    return this.isValid ? this.c.minute : NaN;
-  }
+              case 10:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, null, [[1, 7]]);
+      }));
 
-  /**
-   * Get the second of the minute (0-59).
-   * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52
-   * @type {number}
-   */
-  get second() {
-    return this.isValid ? this.c.second : NaN;
-  }
+      return function (_x) {
+        return _ref2.apply(this, arguments);
+      };
+    }());
 
-  /**
-   * Get the millisecond of the second (0-999).
-   * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654
-   * @type {number}
-   */
-  get millisecond() {
-    return this.isValid ? this.c.millisecond : NaN;
-  }
+    var link = rawOptions.link,
+        links = rawOptions.links,
+        _rawOptions$schema = rawOptions.schema,
+        schema = _rawOptions$schema === void 0 ? {} : _rawOptions$schema,
+        _rawOptions$appMetada = rawOptions.appMetadata,
+        appMetadata = _rawOptions$appMetada === void 0 ? {} : _rawOptions$appMetada,
+        capabilities = rawOptions.capabilities,
+        _options = (0, _objectWithoutProperties2.default)(rawOptions, ["link", "links", "schema", "appMetadata", "capabilities"]);
 
-  /**
-   * Get the week year
-   * @see https://en.wikipedia.org/wiki/ISO_week_date
-   * @example DateTime.local(2014, 12, 31).weekYear //=> 2015
-   * @type {number}
-   */
-  get weekYear() {
-    return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;
-  }
+    if (link) {
+      _logger.default.warn('`link` is deprecated, use `links`');
+    }
 
-  /**
-   * Get the week number of the week year (1-52ish).
-   * @see https://en.wikipedia.org/wiki/ISO_week_date
-   * @example DateTime.local(2017, 5, 25).weekNumber //=> 21
-   * @type {number}
-   */
-  get weekNumber() {
-    return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;
-  }
+    this.appMetadata = appMetadata;
+    this.loginPromise = null;
+    _options.uri = securiseUri(_options.uri);
+    this.options = _options;
+    this.queryIdGenerator = new _queries.QueryIDGenerator();
+    this.isLogged = false;
+    this.instanceOptions = {}; // Bind handlers
 
-  /**
-   * Get the day of the week.
-   * 1 is Monday and 7 is Sunday
-   * @see https://en.wikipedia.org/wiki/ISO_week_date
-   * @example DateTime.local(2014, 11, 31).weekday //=> 4
-   * @type {number}
-   */
-  get weekday() {
-    return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;
-  }
+    this.handleRevocationChange = this.handleRevocationChange.bind(this);
+    this.handleTokenRefresh = this.handleTokenRefresh.bind(this);
+    this.createClient();
+    var stackClient = this.getStackClient();
+    stackClient.on('error', function () {
+      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+        args[_key] = arguments[_key];
+      }
 
-  /**
-   * Get the ordinal (meaning the day of the year)
-   * @example DateTime.local(2017, 5, 25).ordinal //=> 145
-   * @type {number|DateTime}
-   */
-  get ordinal() {
-    return this.isValid ? Object(_impl_conversions_js__WEBPACK_IMPORTED_MODULE_12__["gregorianToOrdinal"])(this.c).ordinal : NaN;
-  }
+      return _this.emit.apply(_this, ['error'].concat(args));
+    });
+    this.links = ensureArray(link || links || new _StackLink.default());
+    this.registerClientOnLinks();
+    this.chain = (0, _CozyLink.chain)(this.links);
+    this.schema = new _Schema.default(schema, stackClient);
+    /**
+     * @type {import("./types").ClientCapabilities}
+     */
 
-  /**
-   * Get the human readable short month name, such as 'Oct'.
-   * Defaults to the system's locale if no locale has been specified
-   * @example DateTime.local(2017, 10, 30).monthShort //=> Oct
-   * @type {string}
-   */
-  get monthShort() {
-    return this.isValid ? _info_js__WEBPACK_IMPORTED_MODULE_3__["default"].months("short", { locObj: this.loc })[this.month - 1] : null;
-  }
+    this.capabilities = capabilities || null; // Instances of plugins registered with registerPlugin
 
-  /**
-   * Get the human readable long month name, such as 'October'.
-   * Defaults to the system's locale if no locale has been specified
-   * @example DateTime.local(2017, 10, 30).monthLong //=> October
-   * @type {string}
-   */
-  get monthLong() {
-    return this.isValid ? _info_js__WEBPACK_IMPORTED_MODULE_3__["default"].months("long", { locObj: this.loc })[this.month - 1] : null;
-  }
+    this.plugins = {};
 
-  /**
-   * Get the human readable short weekday, such as 'Mon'.
-   * Defaults to the system's locale if no locale has been specified
-   * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon
-   * @type {string}
-   */
-  get weekdayShort() {
-    return this.isValid ? _info_js__WEBPACK_IMPORTED_MODULE_3__["default"].weekdays("short", { locObj: this.loc })[this.weekday - 1] : null;
-  }
+    if (!(this.stackClient instanceof _cozyStackClient.OAuthClient)) {
+      try {
+        this.loadInstanceOptionsFromDOM();
+      } catch (err) {// not a critical error, we may be in node or the instance options are not on the default HTML element
+      }
+    }
+    /**
+     * Holds in-flight promises for deduplication purpose
+     *
+     * @private
+     * @type {PromiseCache}
+     */
 
-  /**
-   * Get the human readable long weekday, such as 'Monday'.
-   * Defaults to the system's locale if no locale has been specified
-   * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday
-   * @type {string}
-   */
-  get weekdayLong() {
-    return this.isValid ? _info_js__WEBPACK_IMPORTED_MODULE_3__["default"].weekdays("long", { locObj: this.loc })[this.weekday - 1] : null;
-  }
 
-  /**
-   * Get the UTC offset of this DateTime in minutes
-   * @example DateTime.now().offset //=> -240
-   * @example DateTime.utc().offset //=> 0
-   * @type {number}
-   */
-  get offset() {
-    return this.isValid ? +this.o : NaN;
-  }
+    this._promiseCache = new _promiseCache.default();
 
-  /**
-   * Get the short human name for the zone's current offset, for example "EST" or "EDT".
-   * Defaults to the system's locale if no locale has been specified
-   * @type {string}
-   */
-  get offsetNameShort() {
-    if (this.isValid) {
-      return this.zone.offsetName(this.ts, {
-        format: "short",
-        locale: this.locale,
-      });
-    } else {
-      return null;
+    if (_options.uri && _options.token) {
+      this.login();
     }
-  }
+    /**
+     * @type {object}
+     */
 
-  /**
-   * Get the long human name for the zone's current offset, for example "Eastern Standard Time" or "Eastern Daylight Time".
-   * Defaults to the system's locale if no locale has been specified
-   * @type {string}
-   */
-  get offsetNameLong() {
-    if (this.isValid) {
-      return this.zone.offsetName(this.ts, {
-        format: "long",
-        locale: this.locale,
-      });
-    } else {
-      return null;
-    }
-  }
 
-  /**
-   * Get whether this zone's offset ever changes, as in a DST.
-   * @type {boolean}
-   */
-  get isOffsetFixed() {
-    return this.isValid ? this.zone.isUniversal : null;
-  }
+    this.storeAccesors = null;
 
-  /**
-   * Get whether the DateTime is in a DST.
-   * @type {boolean}
-   */
-  get isInDST() {
-    if (this.isOffsetFixed) {
-      return false;
-    } else {
-      return (
-        this.offset > this.set({ month: 1, day: 1 }).offset ||
-        this.offset > this.set({ month: 5 }).offset
-      );
+    if (_options.store !== false) {
+      this.ensureStore();
     }
   }
-
   /**
-   * Returns true if this DateTime is in a leap year, false otherwise
-   * @example DateTime.local(2016).isInLeapYear //=> true
-   * @example DateTime.local(2013).isInLeapYear //=> false
-   * @type {boolean}
+   * Gets overrided by MicroEE.mixin
+   * This is here just so typescript does not scream
+   *
+   * TODO Find a better way to make TS understand that emit is
+   * a method from cozy-client
    */
-  get isInLeapYear() {
-    return Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isLeapYear"])(this.year);
-  }
 
-  /**
-   * Returns the number of days in this DateTime's month
-   * @example DateTime.local(2016, 2).daysInMonth //=> 29
-   * @example DateTime.local(2016, 3).daysInMonth //=> 31
-   * @type {number}
-   */
-  get daysInMonth() {
-    return Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["daysInMonth"])(this.year, this.month);
-  }
 
-  /**
-   * Returns the number of days in this DateTime's year
-   * @example DateTime.local(2016).daysInYear //=> 366
-   * @example DateTime.local(2013).daysInYear //=> 365
-   * @type {number}
-   */
-  get daysInYear() {
-    return this.isValid ? Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["daysInYear"])(this.year) : NaN;
-  }
+  (0, _createClass2.default)(CozyClient, [{
+    key: "emit",
+    value: function emit() {}
+  }, {
+    key: "on",
+    value: function on() {}
+  }, {
+    key: "removeListener",
+    value: function removeListener() {}
+    /**
+     * A plugin is a class whose constructor receives the client as first argument.
+     * The main mean of interaction with the client should be with events
+     * like "login"/"logout".
+     *
+     * The plugin system is meant to encourage separation of concerns, modularity
+     * and testability : instead of registering events at module level, please
+     * create a plugin that subscribes to events.
+     *
+     * Plugin instances are stored internally in the `plugins` attribute of the client
+     * and can be accessed via this mean. A plugin class must have the attribute
+     * `pluginName` that will be use as the key in the `plugins` object.
+     *
+     * Two plugins with the same `pluginName` cannot co-exist.
+     *
+     * @example
+     * ```js
+     * class AlertPlugin {
+     *   constructor(client, options) {
+     *     this.client = client
+     *     this.options = options
+     *     this.handleLogin = this.handleLogin.bind(this)
+     *     this.handleLogout = this.handleLogout.bind(this)
+     *     this.client.on("login", this.handleLogin)
+     *     this.client.on("logout", this.handleLogout)
+     *   }
+     *
+     *   handleLogin() {
+     *     alert(this.options.onLoginAlert)
+     *   }
+     *
+     *   handleLogout() {
+     *     alert(this.options.onLogoutAlert)
+     *   }
+     * }
+     *
+     * AlertPlugin.pluginName = 'alerts'
+     *
+     * client.registerPlugin(AlertPlugin, {
+     *   onLoginAlert: 'client has logged in !',
+     *   onLogoutAlert: 'client has logged out !'
+     * })
+     *
+     * // the instance of the plugin is accessible via
+     * client.plugins.alerts
+     * ```
+     */
 
-  /**
-   * Returns the number of weeks in this DateTime's year
-   * @see https://en.wikipedia.org/wiki/ISO_week_date
-   * @example DateTime.local(2004).weeksInWeekYear //=> 53
-   * @example DateTime.local(2013).weeksInWeekYear //=> 52
-   * @type {number}
-   */
-  get weeksInWeekYear() {
-    return this.isValid ? Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["weeksInWeekYear"])(this.weekYear) : NaN;
-  }
+  }, {
+    key: "registerPlugin",
+    value: function registerPlugin(Plugin, options) {
+      if (!Plugin.pluginName) {
+        throw new Error('Cannot register a plugin whose class does not have `pluginName` attribute.');
+      }
 
-  /**
-   * Returns the resolved Intl options for this DateTime.
-   * This is useful in understanding the behavior of formatting methods
-   * @param {Object} opts - the same options as toLocaleString
-   * @return {Object}
-   */
-  resolvedLocaleOptions(opts = {}) {
-    const { locale, numberingSystem, calendar } = _impl_formatter_js__WEBPACK_IMPORTED_MODULE_4__["default"].create(
-      this.loc.clone(opts),
-      opts
-    ).resolvedOptions(this);
-    return { locale, numberingSystem, outputCalendar: calendar };
-  }
+      if (this.plugins[Plugin.pluginName]) {
+        throw new Error("Cannot register plugin ".concat(Plugin.pluginName, ". A plugin with the same name has already been registered."));
+      }
 
-  // TRANSFORM
+      var instance = new Plugin(this, options);
+      this.plugins[Plugin.pluginName] = instance;
+      return instance;
+    }
+    /**
+     * To help with the transition from cozy-client-js to cozy-client, it is possible to instantiate
+     * a client with a cookie-based instance of cozy-client-js.
+     *
+     * @param {import("./types").OldCozyClient} oldClient - An instance of the deprecated cozy-client
+     * @param {object} options - CozyStackClient options
+     * @returns {CozyClient}
+     */
 
-  /**
-   * "Set" the DateTime's zone to UTC. Returns a newly-constructed DateTime.
-   *
-   * Equivalent to {@link DateTime#setZone}('utc')
-   * @param {number} [offset=0] - optionally, an offset from UTC in minutes
-   * @param {Object} [opts={}] - options to pass to `setZone()`
-   * @return {DateTime}
-   */
-  toUTC(offset = 0, opts = {}) {
-    return this.setZone(_zones_fixedOffsetZone_js__WEBPACK_IMPORTED_MODULE_5__["default"].instance(offset), opts);
-  }
+  }, {
+    key: "addSchema",
+    value: function addSchema(schemaDefinition) {
+      this.schema.add(schemaDefinition);
+    }
+  }, {
+    key: "registerClientOnLinks",
+    value: function registerClientOnLinks() {
+      var _iterator = _createForOfIteratorHelper(this.links),
+          _step;
 
-  /**
-   * "Set" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.
-   *
-   * Equivalent to `setZone('local')`
-   * @return {DateTime}
-   */
-  toLocal() {
-    return this.setZone(_settings_js__WEBPACK_IMPORTED_MODULE_2__["default"].defaultZone);
-  }
+      try {
+        for (_iterator.s(); !(_step = _iterator.n()).done;) {
+          var link = _step.value;
 
-  /**
-   * "Set" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.
-   *
-   * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link DateTime#plus}. You may wish to use {@link DateTime#toLocal} and {@link DateTime#toUTC} which provide simple convenience wrappers for commonly used zones.
-   * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link DateTime#Zone} class.
-   * @param {Object} opts - options
-   * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.
-   * @return {DateTime}
-   */
-  setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) {
-    zone = Object(_impl_zoneUtil_js__WEBPACK_IMPORTED_MODULE_8__["normalizeZone"])(zone, _settings_js__WEBPACK_IMPORTED_MODULE_2__["default"].defaultZone);
-    if (zone.equals(this.zone)) {
-      return this;
-    } else if (!zone.isValid) {
-      return DateTime.invalid(unsupportedZone(zone));
-    } else {
-      let newTS = this.ts;
-      if (keepLocalTime || keepCalendarTime) {
-        const offsetGuess = zone.offset(this.ts);
-        const asObj = this.toObject();
-        [newTS] = objToTS(asObj, offsetGuess, zone);
+          if (link.registerClient) {
+            try {
+              link.registerClient(this);
+            } catch (e) {
+              _logger.default.warn(e);
+            }
+          }
+        }
+      } catch (err) {
+        _iterator.e(err);
+      } finally {
+        _iterator.f();
       }
-      return clone(this, { ts: newTS, zone });
     }
-  }
+    /**
+     * Notify the links that they can start and set isLogged to true.
+     *
+     * On mobile, where url/token are set after instantiation, use this method
+     * to set the token and uri via options.
+     *
+     * Emits
+     *
+     * - "beforeLogin" at the beginning, before links have been set up
+     * - "login" when the client is fully logged in and links have been set up
+     *
+     * @param  {object}   [options] - Options
+     * @param  {string}   options.token  - If passed, the token is set on the client
+     * @param  {string}   options.uri  - If passed, the uri is set on the client
+     * @returns {Promise} - Resolves when all links have been setup and client is fully logged in
+     *
+     */
 
-  /**
-   * "Set" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.
-   * @param {Object} properties - the properties to set
-   * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })
-   * @return {DateTime}
-   */
-  reconfigure({ locale, numberingSystem, outputCalendar } = {}) {
-    const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });
-    return clone(this, { loc });
-  }
+  }, {
+    key: "login",
+    value: function login(options) {
+      // Keep the promise to be able to return it in future calls.
+      // This allows us to autoLogin in constructor without breaking any compatibility
+      // with codes that uses an explicit login.
+      if (this.isLogged && !this.isRevoked) {
+        _logger.default.warn("CozyClient is already logged.");
 
-  /**
-   * "Set" the locale. Returns a newly-constructed DateTime.
-   * Just a convenient alias for reconfigure({ locale })
-   * @example DateTime.local(2017, 5, 25).setLocale('en-GB')
-   * @return {DateTime}
-   */
-  setLocale(locale) {
-    return this.reconfigure({ locale });
-  }
+        return this.loginPromise;
+      }
 
-  /**
-   * "Set" the values of specified units. Returns a newly-constructed DateTime.
-   * You can only set units with this method; for "setting" metadata, see {@link DateTime#reconfigure} and {@link DateTime#setZone}.
-   * @param {Object} values - a mapping of units to numbers
-   * @example dt.set({ year: 2017 })
-   * @example dt.set({ hour: 8, minute: 30 })
-   * @example dt.set({ weekday: 5 })
-   * @example dt.set({ year: 2005, ordinal: 234 })
-   * @return {DateTime}
-   */
-  set(values) {
-    if (!this.isValid) return this;
-
-    const normalized = Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["normalizeObject"])(values, normalizeUnit),
-      settingWeekStuff =
-        !Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(normalized.weekYear) ||
-        !Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(normalized.weekNumber) ||
-        !Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(normalized.weekday),
-      containsOrdinal = !Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(normalized.ordinal),
-      containsGregorYear = !Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(normalized.year),
-      containsGregorMD = !Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(normalized.month) || !Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(normalized.day),
-      containsGregor = containsGregorYear || containsGregorMD,
-      definiteWeekDef = normalized.weekYear || normalized.weekNumber;
-
-    if ((containsGregor || containsOrdinal) && definiteWeekDef) {
-      throw new _errors_js__WEBPACK_IMPORTED_MODULE_14__["ConflictingSpecificationError"](
-        "Can't mix weekYear/weekNumber units with year/month/day or ordinals"
-      );
+      return this.loginPromise = this._login(options);
     }
+  }, {
+    key: "_login",
+    value: function () {
+      var _login2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(options) {
+        var _iterator2, _step2, link;
 
-    if (containsGregorMD && containsOrdinal) {
-      throw new _errors_js__WEBPACK_IMPORTED_MODULE_14__["ConflictingSpecificationError"]("Can't mix ordinal dates with month/day");
-    }
+        return _regenerator.default.wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                this.emit('beforeLogin');
+                this.registerClientOnLinks();
 
-    let mixed;
-    if (settingWeekStuff) {
-      mixed = Object(_impl_conversions_js__WEBPACK_IMPORTED_MODULE_12__["weekToGregorian"])({ ...Object(_impl_conversions_js__WEBPACK_IMPORTED_MODULE_12__["gregorianToWeek"])(this.c), ...normalized });
-    } else if (!Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(normalized.ordinal)) {
-      mixed = Object(_impl_conversions_js__WEBPACK_IMPORTED_MODULE_12__["ordinalToGregorian"])({ ...Object(_impl_conversions_js__WEBPACK_IMPORTED_MODULE_12__["gregorianToOrdinal"])(this.c), ...normalized });
-    } else {
-      mixed = { ...this.toObject(), ...normalized };
+                if (options) {
+                  if (options.uri) {
+                    this.stackClient.setUri(options.uri);
+                  }
 
-      // if we didn't set the day but we ended up on an overflow date,
-      // use the last day of the right month
-      if (Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isUndefined"])(normalized.day)) {
-        mixed.day = Math.min(Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["daysInMonth"])(mixed.year, mixed.month), mixed.day);
-      }
-    }
+                  if (options.token) {
+                    this.stackClient.setToken(options.token);
+                  }
+                }
 
-    const [ts, o] = objToTS(mixed, this.o, this.zone);
-    return clone(this, { ts, o });
-  }
+                _iterator2 = _createForOfIteratorHelper(this.links);
+                _context2.prev = 4;
 
-  /**
-   * Add a period of time to this DateTime and return the resulting DateTime
-   *
-   * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.
-   * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()
-   * @example DateTime.now().plus(123) //~> in 123 milliseconds
-   * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes
-   * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow
-   * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday
-   * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min
-   * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min
-   * @return {DateTime}
-   */
-  plus(duration) {
-    if (!this.isValid) return this;
-    const dur = _duration_js__WEBPACK_IMPORTED_MODULE_0__["default"].fromDurationLike(duration);
-    return clone(this, adjustTime(this, dur));
-  }
-
-  /**
-   * Subtract a period of time to this DateTime and return the resulting DateTime
-   * See {@link DateTime#plus}
-   * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()
-   @return {DateTime}
-   */
-  minus(duration) {
-    if (!this.isValid) return this;
-    const dur = _duration_js__WEBPACK_IMPORTED_MODULE_0__["default"].fromDurationLike(duration).negate();
-    return clone(this, adjustTime(this, dur));
-  }
+                _iterator2.s();
 
-  /**
-   * "Set" this DateTime to the beginning of a unit of time.
-   * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.
-   * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'
-   * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'
-   * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays
-   * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'
-   * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'
-   * @return {DateTime}
-   */
-  startOf(unit) {
-    if (!this.isValid) return this;
-    const o = {},
-      normalizedUnit = _duration_js__WEBPACK_IMPORTED_MODULE_0__["default"].normalizeUnit(unit);
-    switch (normalizedUnit) {
-      case "years":
-        o.month = 1;
-      // falls through
-      case "quarters":
-      case "months":
-        o.day = 1;
-      // falls through
-      case "weeks":
-      case "days":
-        o.hour = 0;
-      // falls through
-      case "hours":
-        o.minute = 0;
-      // falls through
-      case "minutes":
-        o.second = 0;
-      // falls through
-      case "seconds":
-        o.millisecond = 0;
-        break;
-      case "milliseconds":
-        break;
-      // no default, invalid units throw in normalizeUnit()
-    }
+              case 6:
+                if ((_step2 = _iterator2.n()).done) {
+                  _context2.next = 13;
+                  break;
+                }
 
-    if (normalizedUnit === "weeks") {
-      o.weekday = 1;
-    }
+                link = _step2.value;
 
-    if (normalizedUnit === "quarters") {
-      const q = Math.ceil(this.month / 3);
-      o.month = (q - 1) * 3 + 1;
-    }
+                if (!link.onLogin) {
+                  _context2.next = 11;
+                  break;
+                }
 
-    return this.set(o);
-  }
+                _context2.next = 11;
+                return link.onLogin();
 
-  /**
-   * "Set" this DateTime to the end (meaning the last millisecond) of a unit of time
-   * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.
-   * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'
-   * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'
-   * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays
-   * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'
-   * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'
-   * @return {DateTime}
-   */
-  endOf(unit) {
-    return this.isValid
-      ? this.plus({ [unit]: 1 })
-          .startOf(unit)
-          .minus(1)
-      : this;
-  }
+              case 11:
+                _context2.next = 6;
+                break;
 
-  // OUTPUT
+              case 13:
+                _context2.next = 18;
+                break;
 
-  /**
-   * Returns a string representation of this DateTime formatted according to the specified format string.
-   * **You may not want this.** See {@link DateTime#toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens).
-   * Defaults to en-US if no locale has been specified, regardless of the system's locale.
-   * @param {string} fmt - the format string
-   * @param {Object} opts - opts to override the configuration options on this DateTime
-   * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'
-   * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'
-   * @example DateTime.now().toFormat('yyyy LLL dd', { locale: "fr" }) //=> '2017 avr. 22'
-   * @example DateTime.now().toFormat("HH 'hours and' mm 'minutes'") //=> '20 hours and 55 minutes'
-   * @return {string}
-   */
-  toFormat(fmt, opts = {}) {
-    return this.isValid
-      ? _impl_formatter_js__WEBPACK_IMPORTED_MODULE_4__["default"].create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt)
-      : INVALID;
-  }
+              case 15:
+                _context2.prev = 15;
+                _context2.t0 = _context2["catch"](4);
 
-  /**
-   * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.
-   * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation
-   * of the DateTime in the assigned locale.
-   * Defaults to the system's locale if no locale has been specified
-   * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat
-   * @param formatOpts {Object} - Intl.DateTimeFormat constructor options and configuration options
-   * @param {Object} opts - opts to override the configuration options on this DateTime
-   * @example DateTime.now().toLocaleString(); //=> 4/20/2017
-   * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'
-   * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'
-   * @example DateTime.now().toLocaleString(DateTime.DATE_FULL, { locale: 'fr' }); //=> '28 août 2022'
-   * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'
-   * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'
-   * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'
-   * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'
-   * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hourCycle: 'h23' }); //=> '11:32'
-   * @return {string}
-   */
-  toLocaleString(formatOpts = _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["DATE_SHORT"], opts = {}) {
-    return this.isValid
-      ? _impl_formatter_js__WEBPACK_IMPORTED_MODULE_4__["default"].create(this.loc.clone(opts), formatOpts).formatDateTime(this)
-      : INVALID;
-  }
+                _iterator2.e(_context2.t0);
 
-  /**
-   * Returns an array of format "parts", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.
-   * Defaults to the system's locale if no locale has been specified
-   * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts
-   * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.
-   * @example DateTime.now().toLocaleParts(); //=> [
-   *                                   //=>   { type: 'day', value: '25' },
-   *                                   //=>   { type: 'literal', value: '/' },
-   *                                   //=>   { type: 'month', value: '05' },
-   *                                   //=>   { type: 'literal', value: '/' },
-   *                                   //=>   { type: 'year', value: '1982' }
-   *                                   //=> ]
-   */
-  toLocaleParts(opts = {}) {
-    return this.isValid
-      ? _impl_formatter_js__WEBPACK_IMPORTED_MODULE_4__["default"].create(this.loc.clone(opts), opts).formatDateTimeParts(this)
-      : [];
-  }
+              case 18:
+                _context2.prev = 18;
 
-  /**
-   * Returns an ISO 8601-compliant string representation of this DateTime
-   * @param {Object} opts - options
-   * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0
-   * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0
-   * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'
-   * @param {boolean} [opts.extendedZone=false] - add the time zone format extension
-   * @param {string} [opts.format='extended'] - choose between the basic and extended format
-   * @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'
-   * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'
-   * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'
-   * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'
-   * @return {string}
-   */
-  toISO({
-    format = "extended",
-    suppressSeconds = false,
-    suppressMilliseconds = false,
-    includeOffset = true,
-    extendedZone = false,
-  } = {}) {
-    if (!this.isValid) {
-      return null;
-    }
+                _iterator2.f();
 
-    const ext = format === "extended";
+                return _context2.finish(18);
 
-    let c = toISODate(this, ext);
-    c += "T";
-    c += toISOTime(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone);
-    return c;
-  }
+              case 21:
+                this.isLogged = true;
+                this.isRevoked = false;
 
-  /**
-   * Returns an ISO 8601-compliant string representation of this DateTime's date component
-   * @param {Object} opts - options
-   * @param {string} [opts.format='extended'] - choose between the basic and extended format
-   * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'
-   * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'
-   * @return {string}
-   */
-  toISODate({ format = "extended" } = {}) {
-    if (!this.isValid) {
-      return null;
-    }
+                if (!(this.stackClient instanceof _cozyStackClient.OAuthClient)) {
+                  _context2.next = 26;
+                  break;
+                }
 
-    return toISODate(this, format === "extended");
-  }
+                _context2.next = 26;
+                return this.loadInstanceOptionsFromStack();
 
-  /**
-   * Returns an ISO 8601-compliant string representation of this DateTime's week date
-   * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'
-   * @return {string}
-   */
-  toISOWeekDate() {
-    return toTechFormat(this, "kkkk-'W'WW-c");
-  }
+              case 26:
+                this.emit('login');
 
-  /**
-   * Returns an ISO 8601-compliant string representation of this DateTime's time component
-   * @param {Object} opts - options
-   * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0
-   * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0
-   * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'
-   * @param {boolean} [opts.extendedZone=true] - add the time zone format extension
-   * @param {boolean} [opts.includePrefix=false] - include the `T` prefix
-   * @param {string} [opts.format='extended'] - choose between the basic and extended format
-   * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'
-   * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'
-   * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'
-   * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'
-   * @return {string}
-   */
-  toISOTime({
-    suppressMilliseconds = false,
-    suppressSeconds = false,
-    includeOffset = true,
-    includePrefix = false,
-    extendedZone = false,
-    format = "extended",
-  } = {}) {
-    if (!this.isValid) {
-      return null;
-    }
+              case 27:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2, this, [[4, 15, 18, 21]]);
+      }));
 
-    let c = includePrefix ? "T" : "";
-    return (
-      c +
-      toISOTime(
-        this,
-        format === "extended",
-        suppressSeconds,
-        suppressMilliseconds,
-        includeOffset,
-        extendedZone
-      )
-    );
-  }
+      function _login(_x2) {
+        return _login2.apply(this, arguments);
+      }
 
-  /**
-   * Returns an RFC 2822-compatible string representation of this DateTime
-   * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'
-   * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'
-   * @return {string}
-   */
-  toRFC2822() {
-    return toTechFormat(this, "EEE, dd LLL yyyy HH:mm:ss ZZZ", false);
-  }
+      return _login;
+    }()
+    /**
+     * Logs out the client and reset all the links
+     *
+     * Emits
+     *
+     * - "beforeLogout" at the beginning, before links have been reset
+     * - "logout" when the client is fully logged out and links have been reset
+     *
+     * @returns {Promise} - Resolves when all links have been reset and client is fully logged out
+     */
 
-  /**
-   * Returns a string representation of this DateTime appropriate for use in HTTP headers. The output is always expressed in GMT.
-   * Specifically, the string conforms to RFC 1123.
-   * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1
-   * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'
-   * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'
-   * @return {string}
-   */
-  toHTTP() {
-    return toTechFormat(this.toUTC(), "EEE, dd LLL yyyy HH:mm:ss 'GMT'");
-  }
+  }, {
+    key: "logout",
+    value: function () {
+      var _logout = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
+        var _iterator3, _step3, link;
 
-  /**
-   * Returns a string representation of this DateTime appropriate for use in SQL Date
-   * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'
-   * @return {string}
-   */
-  toSQLDate() {
-    if (!this.isValid) {
-      return null;
-    }
-    return toISODate(this, true);
-  }
+        return _regenerator.default.wrap(function _callee3$(_context3) {
+          while (1) {
+            switch (_context3.prev = _context3.next) {
+              case 0:
+                if (this.isLogged) {
+                  _context3.next = 3;
+                  break;
+                }
 
-  /**
-   * Returns a string representation of this DateTime appropriate for use in SQL Time
-   * @param {Object} opts - options
-   * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.
-   * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'
-   * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'
-   * @example DateTime.utc().toSQL() //=> '05:15:16.345'
-   * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'
-   * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'
-   * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'
-   * @return {string}
-   */
-  toSQLTime({ includeOffset = true, includeZone = false, includeOffsetSpace = true } = {}) {
-    let fmt = "HH:mm:ss.SSS";
+                _logger.default.warn("CozyClient isn't logged.");
 
-    if (includeZone || includeOffset) {
-      if (includeOffsetSpace) {
-        fmt += " ";
-      }
-      if (includeZone) {
-        fmt += "z";
-      } else if (includeOffset) {
-        fmt += "ZZ";
-      }
-    }
+                return _context3.abrupt("return");
 
-    return toTechFormat(this, fmt, true);
-  }
+              case 3:
+                this.emit('beforeLogout');
+                this.isLogged = false;
 
-  /**
-   * Returns a string representation of this DateTime appropriate for use in SQL DateTime
-   * @param {Object} opts - options
-   * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.
-   * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'
-   * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'
-   * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'
-   * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'
-   * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'
-   * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'
-   * @return {string}
-   */
-  toSQL(opts = {}) {
-    if (!this.isValid) {
-      return null;
-    }
+                if (!(this.stackClient instanceof _cozyStackClient.OAuthClient)) {
+                  _context3.next = 17;
+                  break;
+                }
 
-    return `${this.toSQLDate()} ${this.toSQLTime(opts)}`;
-  }
+                _context3.prev = 6;
 
-  /**
-   * Returns a string representation of this DateTime appropriate for debugging
-   * @return {string}
-   */
-  toString() {
-    return this.isValid ? this.toISO() : INVALID;
-  }
+                if (!(this.stackClient.unregister && (!this.stackClient.isRegistered || this.stackClient.isRegistered()))) {
+                  _context3.next = 10;
+                  break;
+                }
 
-  /**
-   * Returns the epoch milliseconds of this DateTime. Alias of {@link DateTime#toMillis}
-   * @return {number}
-   */
-  valueOf() {
-    return this.toMillis();
-  }
+                _context3.next = 10;
+                return this.stackClient.unregister();
 
-  /**
-   * Returns the epoch milliseconds of this DateTime.
-   * @return {number}
-   */
-  toMillis() {
-    return this.isValid ? this.ts : NaN;
-  }
+              case 10:
+                _context3.next = 15;
+                break;
 
-  /**
-   * Returns the epoch seconds of this DateTime.
-   * @return {number}
-   */
-  toSeconds() {
-    return this.isValid ? this.ts / 1000 : NaN;
-  }
+              case 12:
+                _context3.prev = 12;
+                _context3.t0 = _context3["catch"](6);
 
-  /**
-   * Returns the epoch seconds (as a whole number) of this DateTime.
-   * @return {number}
-   */
-  toUnixInteger() {
-    return this.isValid ? Math.floor(this.ts / 1000) : NaN;
-  }
+                _logger.default.warn("Impossible to unregister client on stack: ".concat(_context3.t0));
 
-  /**
-   * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.
-   * @return {string}
-   */
-  toJSON() {
-    return this.toISO();
-  }
+              case 15:
+                _context3.next = 25;
+                break;
 
-  /**
-   * Returns a BSON serializable equivalent to this DateTime.
-   * @return {Date}
-   */
-  toBSON() {
-    return this.toJSDate();
-  }
+              case 17:
+                _context3.prev = 17;
+                _context3.next = 20;
+                return this.stackClient.fetch('DELETE', '/auth/login');
 
-  /**
-   * Returns a JavaScript object with this DateTime's year, month, day, and so on.
-   * @param opts - options for generating the object
-   * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output
-   * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }
-   * @return {Object}
-   */
-  toObject(opts = {}) {
-    if (!this.isValid) return {};
+              case 20:
+                _context3.next = 25;
+                break;
 
-    const base = { ...this.c };
+              case 22:
+                _context3.prev = 22;
+                _context3.t1 = _context3["catch"](17);
 
-    if (opts.includeConfig) {
-      base.outputCalendar = this.outputCalendar;
-      base.numberingSystem = this.loc.numberingSystem;
-      base.locale = this.loc.locale;
-    }
-    return base;
-  }
+                _logger.default.warn("Impossible to log out: ".concat(_context3.t1));
 
-  /**
-   * Returns a JavaScript Date equivalent to this DateTime.
-   * @return {Date}
-   */
-  toJSDate() {
-    return new Date(this.isValid ? this.ts : NaN);
-  }
+              case 25:
+                // clean information on links
+                _iterator3 = _createForOfIteratorHelper(this.links);
+                _context3.prev = 26;
 
-  // COMPARE
+                _iterator3.s();
 
-  /**
-   * Return the difference between two DateTimes as a Duration.
-   * @param {DateTime} otherDateTime - the DateTime to compare this one to
-   * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.
-   * @param {Object} opts - options that affect the creation of the Duration
-   * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use
-   * @example
-   * var i1 = DateTime.fromISO('1982-05-25T09:45'),
-   *     i2 = DateTime.fromISO('1983-10-14T10:30');
-   * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }
-   * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }
-   * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }
-   * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }
-   * @return {Duration}
-   */
-  diff(otherDateTime, unit = "milliseconds", opts = {}) {
-    if (!this.isValid || !otherDateTime.isValid) {
-      return _duration_js__WEBPACK_IMPORTED_MODULE_0__["default"].invalid("created by diffing an invalid DateTime");
-    }
+              case 28:
+                if ((_step3 = _iterator3.n()).done) {
+                  _context3.next = 41;
+                  break;
+                }
 
-    const durOpts = { locale: this.locale, numberingSystem: this.numberingSystem, ...opts };
+                link = _step3.value;
 
-    const units = Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["maybeArray"])(unit).map(_duration_js__WEBPACK_IMPORTED_MODULE_0__["default"].normalizeUnit),
-      otherIsLater = otherDateTime.valueOf() > this.valueOf(),
-      earlier = otherIsLater ? this : otherDateTime,
-      later = otherIsLater ? otherDateTime : this,
-      diffed = Object(_impl_diff_js__WEBPACK_IMPORTED_MODULE_9__["default"])(earlier, later, units, durOpts);
+                if (!link.reset) {
+                  _context3.next = 39;
+                  break;
+                }
 
-    return otherIsLater ? diffed.negate() : diffed;
-  }
+                _context3.prev = 31;
+                _context3.next = 34;
+                return link.reset();
 
-  /**
-   * Return the difference between this DateTime and right now.
-   * See {@link DateTime#diff}
-   * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration
-   * @param {Object} opts - options that affect the creation of the Duration
-   * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use
-   * @return {Duration}
-   */
-  diffNow(unit = "milliseconds", opts = {}) {
-    return this.diff(DateTime.now(), unit, opts);
-  }
+              case 34:
+                _context3.next = 39;
+                break;
 
-  /**
-   * Return an Interval spanning between this DateTime and another DateTime
-   * @param {DateTime} otherDateTime - the other end point of the Interval
-   * @return {Interval}
-   */
-  until(otherDateTime) {
-    return this.isValid ? _interval_js__WEBPACK_IMPORTED_MODULE_1__["default"].fromDateTimes(this, otherDateTime) : this;
-  }
+              case 36:
+                _context3.prev = 36;
+                _context3.t2 = _context3["catch"](31);
 
-  /**
-   * Return whether this DateTime is in the same unit of time as another DateTime.
-   * Higher-order units must also be identical for this function to return `true`.
-   * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link DateTime#setZone} to convert one of the dates if needed.
-   * @param {DateTime} otherDateTime - the other DateTime
-   * @param {string} unit - the unit of time to check sameness on
-   * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day
-   * @return {boolean}
-   */
-  hasSame(otherDateTime, unit) {
-    if (!this.isValid) return false;
+                _logger.default.warn(_context3.t2);
 
-    const inputMs = otherDateTime.valueOf();
-    const adjustedToZone = this.setZone(otherDateTime.zone, { keepLocalTime: true });
-    return adjustedToZone.startOf(unit) <= inputMs && inputMs <= adjustedToZone.endOf(unit);
-  }
+              case 39:
+                _context3.next = 28;
+                break;
 
-  /**
-   * Equality check
-   * Two DateTimes are equal iff they represent the same millisecond, have the same zone and location, and are both valid.
-   * To compare just the millisecond values, use `+dt1 === +dt2`.
-   * @param {DateTime} other - the other DateTime
-   * @return {boolean}
-   */
-  equals(other) {
-    return (
-      this.isValid &&
-      other.isValid &&
-      this.valueOf() === other.valueOf() &&
-      this.zone.equals(other.zone) &&
-      this.loc.equals(other.loc)
-    );
-  }
+              case 41:
+                _context3.next = 46;
+                break;
 
-  /**
-   * Returns a string representation of a this time relative to now, such as "in two days". Can only internationalize if your
-   * platform supports Intl.RelativeTimeFormat. Rounds down by default.
-   * @param {Object} options - options that affect the output
-   * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.
-   * @param {string} [options.style="long"] - the style of units, must be "long", "short", or "narrow"
-   * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of "years", "quarters", "months", "weeks", "days", "hours", "minutes", or "seconds"
-   * @param {boolean} [options.round=true] - whether to round the numbers in the output.
-   * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.
-   * @param {string} options.locale - override the locale of this DateTime
-   * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this
-   * @example DateTime.now().plus({ days: 1 }).toRelative() //=> "in 1 day"
-   * @example DateTime.now().setLocale("es").toRelative({ days: 1 }) //=> "dentro de 1 día"
-   * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: "fr" }) //=> "dans 23 heures"
-   * @example DateTime.now().minus({ days: 2 }).toRelative() //=> "2 days ago"
-   * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: "hours" }) //=> "48 hours ago"
-   * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> "1.5 days ago"
-   */
-  toRelative(options = {}) {
-    if (!this.isValid) return null;
-    const base = options.base || DateTime.fromObject({}, { zone: this.zone }),
-      padding = options.padding ? (this < base ? -options.padding : options.padding) : 0;
-    let units = ["years", "months", "days", "hours", "minutes", "seconds"];
-    let unit = options.unit;
-    if (Array.isArray(options.unit)) {
-      units = options.unit;
-      unit = undefined;
-    }
-    return diffRelative(base, this.plus(padding), {
-      ...options,
-      numeric: "always",
-      units,
-      unit,
-    });
-  }
+              case 43:
+                _context3.prev = 43;
+                _context3.t3 = _context3["catch"](26);
 
-  /**
-   * Returns a string representation of this date relative to today, such as "yesterday" or "next month".
-   * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.
-   * @param {Object} options - options that affect the output
-   * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.
-   * @param {string} options.locale - override the locale of this DateTime
-   * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of "years", "quarters", "months", "weeks", or "days"
-   * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this
-   * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> "tomorrow"
-   * @example DateTime.now().setLocale("es").plus({ days: 1 }).toRelative() //=> ""mañana"
-   * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: "fr" }) //=> "demain"
-   * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> "2 days ago"
-   */
-  toRelativeCalendar(options = {}) {
-    if (!this.isValid) return null;
+                _iterator3.e(_context3.t3);
 
-    return diffRelative(options.base || DateTime.fromObject({}, { zone: this.zone }), this, {
-      ...options,
-      numeric: "auto",
-      units: ["years", "months", "days"],
-      calendary: true,
-    });
-  }
+              case 46:
+                _context3.prev = 46;
 
-  /**
-   * Return the min of several date times
-   * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum
-   * @return {DateTime} the min DateTime, or undefined if called with no argument
-   */
-  static min(...dateTimes) {
-    if (!dateTimes.every(DateTime.isDateTime)) {
-      throw new _errors_js__WEBPACK_IMPORTED_MODULE_14__["InvalidArgumentError"]("min requires all arguments be DateTimes");
-    }
-    return Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["bestBy"])(dateTimes, (i) => i.valueOf(), Math.min);
-  }
+                _iterator3.f();
 
-  /**
-   * Return the max of several date times
-   * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum
-   * @return {DateTime} the max DateTime, or undefined if called with no argument
-   */
-  static max(...dateTimes) {
-    if (!dateTimes.every(DateTime.isDateTime)) {
-      throw new _errors_js__WEBPACK_IMPORTED_MODULE_14__["InvalidArgumentError"]("max requires all arguments be DateTimes");
-    }
-    return Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["bestBy"])(dateTimes, (i) => i.valueOf(), Math.max);
-  }
+                return _context3.finish(46);
 
-  // MISC
+              case 49:
+                if (this.store) {
+                  this.dispatch((0, _store.resetState)());
+                }
 
-  /**
-   * Explain how a string would be parsed by fromFormat()
-   * @param {string} text - the string to parse
-   * @param {string} fmt - the format the string is expected to be in (see description)
-   * @param {Object} options - options taken by fromFormat()
-   * @return {Object}
-   */
-  static fromFormatExplain(text, fmt, options = {}) {
-    const { locale = null, numberingSystem = null } = options,
-      localeToUse = _impl_locale_js__WEBPACK_IMPORTED_MODULE_6__["default"].fromOpts({
-        locale,
-        numberingSystem,
-        defaultToEN: true,
-      });
-    return Object(_impl_tokenParser_js__WEBPACK_IMPORTED_MODULE_11__["explainFromTokens"])(localeToUse, text, fmt);
-  }
+                this.emit('logout');
 
-  /**
-   * @deprecated use fromFormatExplain instead
-   */
-  static fromStringExplain(text, fmt, options = {}) {
-    return DateTime.fromFormatExplain(text, fmt, options);
-  }
+              case 51:
+              case "end":
+                return _context3.stop();
+            }
+          }
+        }, _callee3, this, [[6, 12], [17, 22], [26, 43, 46, 49], [31, 36]]);
+      }));
 
-  // FORMAT PRESETS
+      function logout() {
+        return _logout.apply(this, arguments);
+      }
 
-  /**
-   * {@link DateTime#toLocaleString} format like 10/14/1983
-   * @type {Object}
-   */
-  static get DATE_SHORT() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["DATE_SHORT"];
-  }
+      return logout;
+    }()
+    /**
+     * Forwards to a stack client instance and returns
+     * a [DocumentCollection]{@link https://docs.cozy.io/en/cozy-client/api/cozy-stack-client/#DocumentCollection} instance.
+     *
+     * @param  {string} doctype The collection doctype.
+     * @returns {import("./types").DocumentCollection} Collection corresponding to the doctype
+     */
 
-  /**
-   * {@link DateTime#toLocaleString} format like 'Oct 14, 1983'
-   * @type {Object}
-   */
-  static get DATE_MED() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["DATE_MED"];
-  }
+  }, {
+    key: "collection",
+    value: function collection(doctype) {
+      return this.getStackClient().collection(doctype);
+    }
+  }, {
+    key: "fetch",
+    value: function fetch(method, path, body) {
+      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
+      return this.getStackClient().fetch(method, path, body, options);
+    }
+  }, {
+    key: "all",
+    value: function all(doctype) {
+      _logger.default.warn("\nclient.all is deprecated, prefer to use the Q helper to build a new QueryDefinition.\n\nimport { Q } from 'cozy-client'\nclient.query(Q('io.cozy.bills'))");
 
-  /**
-   * {@link DateTime#toLocaleString} format like 'Fri, Oct 14, 1983'
-   * @type {Object}
-   */
-  static get DATE_MED_WITH_WEEKDAY() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["DATE_MED_WITH_WEEKDAY"];
-  }
+      return (0, _dsl.Q)(doctype);
+    }
+  }, {
+    key: "find",
+    value: function find(doctype) {
+      var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
 
-  /**
-   * {@link DateTime#toLocaleString} format like 'October 14, 1983'
-   * @type {Object}
-   */
-  static get DATE_FULL() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["DATE_FULL"];
-  }
+      _logger.default.warn('client.find(doctype, selector) is deprecated, please use Q(doctype).where(selector) to build the same query.');
 
-  /**
-   * {@link DateTime#toLocaleString} format like 'Tuesday, October 14, 1983'
-   * @type {Object}
-   */
-  static get DATE_HUGE() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["DATE_HUGE"];
-  }
+      return new _dsl.QueryDefinition({
+        doctype: doctype,
+        selector: selector
+      });
+    }
+  }, {
+    key: "get",
+    value: function get(doctype, id) {
+      _logger.default.warn("client.get(".concat(doctype, ", id) is deprecated, please use Q(").concat(doctype, ").getById(id) to build the same query."));
 
-  /**
-   * {@link DateTime#toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.
-   * @type {Object}
-   */
-  static get TIME_SIMPLE() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["TIME_SIMPLE"];
-  }
+      return new _dsl.QueryDefinition({
+        doctype: doctype,
+        id: id
+      });
+    }
+    /**
+     * Creates a document and saves it on the server
+     *
+     * @param  {string} type - Doctype of the document
+     * @param  {object} doc - Document to save
+     * @param  {import("./types").ReferenceMap} [references] - References are a special kind of relationship
+     * that is not stored inside the referencer document, they are used for example between a photo
+     * and its album. You should not need to use it normally.
+     * @param  {object} options - Mutation options
+     *
+     * @example
+     * ```js
+     * await client.create('io.cozy.todos', {
+     *   label: 'My todo',
+     *   relationships: {
+     *     authors: {
+     *       data: [{_id: 1, _type: 'io.cozy.persons'}]
+     *     }
+     *   }
+     * })
+     * ```
+     *
+     * @returns {Promise}
+     */
 
-  /**
-   * {@link DateTime#toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.
-   * @type {Object}
-   */
-  static get TIME_WITH_SECONDS() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["TIME_WITH_SECONDS"];
-  }
+  }, {
+    key: "create",
+    value: function () {
+      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(type, doc, references) {
+        var options,
+            _type,
+            attributes,
+            normalizedDoc,
+            ret,
+            _args4 = arguments;
 
-  /**
-   * {@link DateTime#toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.
-   * @type {Object}
-   */
-  static get TIME_WITH_SHORT_OFFSET() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["TIME_WITH_SHORT_OFFSET"];
-  }
+        return _regenerator.default.wrap(function _callee4$(_context4) {
+          while (1) {
+            switch (_context4.prev = _context4.next) {
+              case 0:
+                options = _args4.length > 3 && _args4[3] !== undefined ? _args4[3] : {};
+                _type = doc._type, attributes = (0, _objectWithoutProperties2.default)(doc, ["_type"]);
+                normalizedDoc = _objectSpread({
+                  _type: type
+                }, attributes);
+                _context4.next = 5;
+                return this.schema.validate(normalizedDoc);
 
-  /**
-   * {@link DateTime#toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.
-   * @type {Object}
-   */
-  static get TIME_WITH_LONG_OFFSET() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["TIME_WITH_LONG_OFFSET"];
-  }
+              case 5:
+                ret = _context4.sent;
 
-  /**
-   * {@link DateTime#toLocaleString} format like '09:30', always 24-hour.
-   * @type {Object}
-   */
-  static get TIME_24_SIMPLE() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["TIME_24_SIMPLE"];
-  }
+                if (!(ret !== true)) {
+                  _context4.next = 8;
+                  break;
+                }
 
-  /**
-   * {@link DateTime#toLocaleString} format like '09:30:23', always 24-hour.
-   * @type {Object}
-   */
-  static get TIME_24_WITH_SECONDS() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["TIME_24_WITH_SECONDS"];
-  }
+                throw new Error('Validation failed');
 
-  /**
-   * {@link DateTime#toLocaleString} format like '09:30:23 EDT', always 24-hour.
-   * @type {Object}
-   */
-  static get TIME_24_WITH_SHORT_OFFSET() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["TIME_24_WITH_SHORT_OFFSET"];
-  }
+              case 8:
+                return _context4.abrupt("return", this.mutate(this.getDocumentSavePlan(normalizedDoc, references), options));
 
-  /**
-   * {@link DateTime#toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.
-   * @type {Object}
-   */
-  static get TIME_24_WITH_LONG_OFFSET() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["TIME_24_WITH_LONG_OFFSET"];
-  }
+              case 9:
+              case "end":
+                return _context4.stop();
+            }
+          }
+        }, _callee4, this);
+      }));
 
-  /**
-   * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.
-   * @type {Object}
-   */
-  static get DATETIME_SHORT() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["DATETIME_SHORT"];
-  }
+      function create(_x3, _x4, _x5) {
+        return _create.apply(this, arguments);
+      }
 
-  /**
-   * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.
-   * @type {Object}
-   */
-  static get DATETIME_SHORT_WITH_SECONDS() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["DATETIME_SHORT_WITH_SECONDS"];
-  }
+      return create;
+    }()
+  }, {
+    key: "validate",
+    value: function validate(document) {
+      return this.schema.validate(document);
+    }
+    /**
+     * Create or update a document on the server
+     *
+     * @param  {object} doc - Document to save
+     * @param  {object} mutationOptions - Mutation options
+     * @returns {Promise}
+     */
 
-  /**
-   * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.
-   * @type {Object}
-   */
-  static get DATETIME_MED() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["DATETIME_MED"];
-  }
+  }, {
+    key: "save",
+    value: function () {
+      var _save = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(doc) {
+        var mutationOptions,
+            _type,
+            attributes,
+            normalizedDoc,
+            ret,
+            _args5 = arguments;
 
-  /**
-   * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.
-   * @type {Object}
-   */
-  static get DATETIME_MED_WITH_SECONDS() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["DATETIME_MED_WITH_SECONDS"];
-  }
+        return _regenerator.default.wrap(function _callee5$(_context5) {
+          while (1) {
+            switch (_context5.prev = _context5.next) {
+              case 0:
+                mutationOptions = _args5.length > 1 && _args5[1] !== undefined ? _args5[1] : {};
+                _type = doc._type, attributes = (0, _objectWithoutProperties2.default)(doc, ["_type"]);
 
-  /**
-   * {@link DateTime#toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.
-   * @type {Object}
-   */
-  static get DATETIME_MED_WITH_WEEKDAY() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["DATETIME_MED_WITH_WEEKDAY"];
-  }
+                if (_type) {
+                  _context5.next = 4;
+                  break;
+                }
 
-  /**
-   * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.
-   * @type {Object}
-   */
-  static get DATETIME_FULL() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["DATETIME_FULL"];
-  }
+                throw new Error('The document must have a `_type` property');
 
-  /**
-   * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.
-   * @type {Object}
-   */
-  static get DATETIME_FULL_WITH_SECONDS() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["DATETIME_FULL_WITH_SECONDS"];
-  }
+              case 4:
+                normalizedDoc = _objectSpread({
+                  _type: _type
+                }, attributes);
+                _context5.next = 7;
+                return this.schema.validate(normalizedDoc);
 
-  /**
-   * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.
-   * @type {Object}
-   */
-  static get DATETIME_HUGE() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["DATETIME_HUGE"];
-  }
+              case 7:
+                ret = _context5.sent;
 
-  /**
-   * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.
-   * @type {Object}
-   */
-  static get DATETIME_HUGE_WITH_SECONDS() {
-    return _impl_formats_js__WEBPACK_IMPORTED_MODULE_13__["DATETIME_HUGE_WITH_SECONDS"];
-  }
-}
+                if (!(ret !== true)) {
+                  _context5.next = 10;
+                  break;
+                }
 
-/**
- * @private
- */
-function friendlyDateTime(dateTimeish) {
-  if (DateTime.isDateTime(dateTimeish)) {
-    return dateTimeish;
-  } else if (dateTimeish && dateTimeish.valueOf && Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_7__["isNumber"])(dateTimeish.valueOf())) {
-    return DateTime.fromJSDate(dateTimeish);
-  } else if (dateTimeish && typeof dateTimeish === "object") {
-    return DateTime.fromObject(dateTimeish);
-  } else {
-    throw new _errors_js__WEBPACK_IMPORTED_MODULE_14__["InvalidArgumentError"](
-      `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`
-    );
-  }
-}
+                throw new Error('Validation failed');
 
+              case 10:
+                return _context5.abrupt("return", this.mutate(this.getDocumentSavePlan(normalizedDoc), mutationOptions));
 
-/***/ }),
-/* 252 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+              case 11:
+              case "end":
+                return _context5.stop();
+            }
+          }
+        }, _callee5, this);
+      }));
 
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lowOrderMatrix", function() { return lowOrderMatrix; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "casualMatrix", function() { return casualMatrix; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "daysInYearAccurate", function() { return daysInYearAccurate; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "daysInMonthAccurate", function() { return daysInMonthAccurate; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "accurateMatrix", function() { return accurateMatrix; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Duration; });
-/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(253);
-/* harmony import */ var _impl_formatter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(254);
-/* harmony import */ var _impl_invalid_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(258);
-/* harmony import */ var _impl_locale_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(259);
-/* harmony import */ var _impl_regexParser_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(267);
-/* harmony import */ var _impl_util_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(257);
-/* harmony import */ var _settings_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(260);
+      function save(_x6) {
+        return _save.apply(this, arguments);
+      }
 
+      return save;
+    }()
+    /**
+     * Saves multiple documents in one batch
+     * - Can only be called with documents from the same doctype
+     * - Does not support automatic creation of references
+     *
+     * @param  {import("./types").CozyClientDocument[]} docs - Documents from the same doctype
+     * @param  {Object} mutationOptions - Mutation Options
+     * @param  {string}    [mutationOptions.as] - Mutation id
+     * @param  {Function}    [mutationOptions.update] - Function to update the document
+     * @param  {Function}    [mutationOptions.updateQueries] - Function to update queries
+     * @returns {Promise<void>}
+     */
 
+  }, {
+    key: "saveAll",
+    value: function () {
+      var _saveAll = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(docs) {
+        var _this2 = this;
 
+        var mutationOptions,
+            doctypes,
+            validations,
+            errors,
+            toSaveDocs,
+            mutation,
+            _args6 = arguments;
+        return _regenerator.default.wrap(function _callee6$(_context6) {
+          while (1) {
+            switch (_context6.prev = _context6.next) {
+              case 0:
+                mutationOptions = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : {};
+                doctypes = Array.from(new Set(docs.map(function (x) {
+                  return x._type;
+                })));
 
+                if (!(doctypes.length !== 1)) {
+                  _context6.next = 4;
+                  break;
+                }
 
+                throw new Error('saveAll can only save documents with the same doctype');
 
+              case 4:
+                _context6.next = 6;
+                return Promise.all(docs.map(function (d) {
+                  return _this2.schema.validate(d);
+                }));
 
+              case 6:
+                validations = _context6.sent;
+                errors = validations.filter(function (validation) {
+                  return validation !== true;
+                });
 
-const INVALID = "Invalid Duration";
+                if (!(errors.length > 0)) {
+                  _context6.next = 11;
+                  break;
+                }
 
-// unit conversion constants
-const lowOrderMatrix = {
-    weeks: {
-      days: 7,
-      hours: 7 * 24,
-      minutes: 7 * 24 * 60,
-      seconds: 7 * 24 * 60 * 60,
-      milliseconds: 7 * 24 * 60 * 60 * 1000,
-    },
-    days: {
-      hours: 24,
-      minutes: 24 * 60,
-      seconds: 24 * 60 * 60,
-      milliseconds: 24 * 60 * 60 * 1000,
-    },
-    hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1000 },
-    minutes: { seconds: 60, milliseconds: 60 * 1000 },
-    seconds: { milliseconds: 1000 },
-  },
-  casualMatrix = {
-    years: {
-      quarters: 4,
-      months: 12,
-      weeks: 52,
-      days: 365,
-      hours: 365 * 24,
-      minutes: 365 * 24 * 60,
-      seconds: 365 * 24 * 60 * 60,
-      milliseconds: 365 * 24 * 60 * 60 * 1000,
-    },
-    quarters: {
-      months: 3,
-      weeks: 13,
-      days: 91,
-      hours: 91 * 24,
-      minutes: 91 * 24 * 60,
-      seconds: 91 * 24 * 60 * 60,
-      milliseconds: 91 * 24 * 60 * 60 * 1000,
-    },
-    months: {
-      weeks: 4,
-      days: 30,
-      hours: 30 * 24,
-      minutes: 30 * 24 * 60,
-      seconds: 30 * 24 * 60 * 60,
-      milliseconds: 30 * 24 * 60 * 60 * 1000,
-    },
+                _logger.default.warn('There has been some validation errors while bulk saving', errors);
 
-    ...lowOrderMatrix,
-  },
-  daysInYearAccurate = 146097.0 / 400,
-  daysInMonthAccurate = 146097.0 / 4800,
-  accurateMatrix = {
-    years: {
-      quarters: 4,
-      months: 12,
-      weeks: daysInYearAccurate / 7,
-      days: daysInYearAccurate,
-      hours: daysInYearAccurate * 24,
-      minutes: daysInYearAccurate * 24 * 60,
-      seconds: daysInYearAccurate * 24 * 60 * 60,
-      milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000,
-    },
-    quarters: {
-      months: 3,
-      weeks: daysInYearAccurate / 28,
-      days: daysInYearAccurate / 4,
-      hours: (daysInYearAccurate * 24) / 4,
-      minutes: (daysInYearAccurate * 24 * 60) / 4,
-      seconds: (daysInYearAccurate * 24 * 60 * 60) / 4,
-      milliseconds: (daysInYearAccurate * 24 * 60 * 60 * 1000) / 4,
-    },
-    months: {
-      weeks: daysInMonthAccurate / 7,
-      days: daysInMonthAccurate,
-      hours: daysInMonthAccurate * 24,
-      minutes: daysInMonthAccurate * 24 * 60,
-      seconds: daysInMonthAccurate * 24 * 60 * 60,
-      milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000,
-    },
-    ...lowOrderMatrix,
-  };
+                throw new Error('Validation failed for at least one doc');
 
-// units ordered by size
-const orderedUnits = [
-  "years",
-  "quarters",
-  "months",
-  "weeks",
-  "days",
-  "hours",
-  "minutes",
-  "seconds",
-  "milliseconds",
-];
+              case 11:
+                toSaveDocs = docs.map(function (d) {
+                  return _this2.prepareDocumentForSave(d);
+                });
+                mutation = _dsl.Mutations.updateDocuments(toSaveDocs);
+                return _context6.abrupt("return", this.mutate(mutation, mutationOptions));
 
-const reverseUnits = orderedUnits.slice(0).reverse();
+              case 14:
+              case "end":
+                return _context6.stop();
+            }
+          }
+        }, _callee6, this);
+      }));
 
-// clone really means "create another instance just like this one, but with these changes"
-function clone(dur, alts, clear = false) {
-  // deep merge for vals
-  const conf = {
-    values: clear ? alts.values : { ...dur.values, ...(alts.values || {}) },
-    loc: dur.loc.clone(alts.loc),
-    conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy,
-    matrix: alts.matrix || dur.matrix,
-  };
-  return new Duration(conf);
-}
+      function saveAll(_x7) {
+        return _saveAll.apply(this, arguments);
+      }
 
-function antiTrunc(n) {
-  return n < 0 ? Math.floor(n) : Math.ceil(n);
-}
+      return saveAll;
+    }()
+    /**
+     * @param  {import("./types").CozyClientDocument} document - Document that will be saved
+     * @param {object} [options={event: DOC_CREATION}] - Event
+     * @param {string} [options.event] - Mutation type
+     * @returns {import("./types").CozyClientDocument}
+     */
 
-// NB: mutates parameters
-function convert(matrix, fromMap, fromUnit, toMap, toUnit) {
-  const conv = matrix[toUnit][fromUnit],
-    raw = fromMap[fromUnit] / conv,
-    sameSign = Math.sign(raw) === Math.sign(toMap[toUnit]),
-    // ok, so this is wild, but see the matrix in the tests
-    added =
-      !sameSign && toMap[toUnit] !== 0 && Math.abs(raw) <= 1 ? antiTrunc(raw) : Math.trunc(raw);
-  toMap[toUnit] += added;
-  fromMap[fromUnit] -= added * conv;
-}
+  }, {
+    key: "ensureCozyMetadata",
+    value: function ensureCozyMetadata(document) {
+      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
+        event: DOC_CREATION
+      };
+      var METADATA_VERSION = 1;
+      if (this.appMetadata === undefined) return document;
+      var doctypeVersion;
 
-// NB: mutates parameters
-function normalizeValues(matrix, vals) {
-  reverseUnits.reduce((previous, current) => {
-    if (!Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_5__["isUndefined"])(vals[current])) {
-      if (previous) {
-        convert(matrix, vals, previous, vals, current);
+      if (document._type) {
+        var schema = this.schema.getDoctypeSchema(document._type);
+        doctypeVersion = (0, _get.default)(schema, 'doctypeVersion');
       }
-      return current;
-    } else {
-      return previous;
-    }
-  }, null);
-}
 
-/**
- * A Duration object represents a period of time, like "2 months" or "1 day, 1 hour". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime#plus} to add a Duration object to a DateTime, producing another DateTime.
- *
- * Here is a brief overview of commonly used methods and getters in Duration:
- *
- * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.
- * * **Unit values** See the {@link Duration#years}, {@link Duration#months}, {@link Duration#weeks}, {@link Duration#days}, {@link Duration#hours}, {@link Duration#minutes}, {@link Duration#seconds}, {@link Duration#milliseconds} accessors.
- * * **Configuration** See  {@link Duration#locale} and {@link Duration#numberingSystem} accessors.
- * * **Transformation** To create new Durations out of old ones use {@link Duration#plus}, {@link Duration#minus}, {@link Duration#normalize}, {@link Duration#set}, {@link Duration#reconfigure}, {@link Duration#shiftTo}, and {@link Duration#negate}.
- * * **Output** To convert the Duration into other representations, see {@link Duration#as}, {@link Duration#toISO}, {@link Duration#toFormat}, and {@link Duration#toJSON}
- *
- * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.
- */
-class Duration {
-  /**
-   * @private
-   */
-  constructor(config) {
-    const accurate = config.conversionAccuracy === "longterm" || false;
-    let matrix = accurate ? accurateMatrix : casualMatrix;
+      var _this$appMetadata = this.appMetadata,
+          slug = _this$appMetadata.slug,
+          sourceAccount = _this$appMetadata.sourceAccount,
+          version = _this$appMetadata.version;
+      var now = new Date().toISOString();
+      var cozyMetadata = (0, _get.default)(document, 'cozyMetadata', {});
 
-    if (config.matrix) {
-      matrix = config.matrix;
-    }
+      if (options.event === DOC_CREATION) {
+        cozyMetadata = _objectSpread({
+          metadataVersion: METADATA_VERSION,
+          doctypeVersion: doctypeVersion,
+          createdByApp: slug,
+          sourceAccount: sourceAccount,
+          createdAt: now,
+          createdByAppVersion: version,
+          updatedAt: now,
+          updatedByApps: slug ? [{
+            date: now,
+            slug: slug,
+            version: version
+          }] : []
+        }, cozyMetadata);
+      } else if (options.event === DOC_UPDATE) {
+        cozyMetadata = _objectSpread(_objectSpread({}, cozyMetadata), {}, {
+          updatedAt: now,
+          updatedByApps: [{
+            date: now,
+            slug: slug,
+            version: version
+          }].concat((0, _toConsumableArray2.default)((0, _get.default)(document, 'cozyMetadata.updatedByApps', []).filter(function (info) {
+            return info.slug !== slug;
+          })))
+        });
+      }
 
+      return _objectSpread(_objectSpread({}, document), {}, {
+        cozyMetadata: cozyMetadata
+      });
+    }
     /**
-     * @access private
-     */
-    this.values = config.values;
-    /**
-     * @access private
-     */
-    this.loc = config.loc || _impl_locale_js__WEBPACK_IMPORTED_MODULE_3__["default"].create();
-    /**
-     * @access private
-     */
-    this.conversionAccuracy = accurate ? "longterm" : "casual";
-    /**
-     * @access private
-     */
-    this.invalid = config.invalid || null;
-    /**
-     * @access private
+     * Dehydrates and adds metadata before saving a document
+     *
+     * @param  {import("./types").CozyClientDocument} doc - Document that will be saved
+     * @returns {import("./types").CozyClientDocument}
      */
-    this.matrix = matrix;
+
+  }, {
+    key: "prepareDocumentForSave",
+    value: function prepareDocumentForSave(doc) {
+      var isNewDoc = !doc._rev;
+      var dehydratedDoc = this.ensureCozyMetadata((0, _helpers2.dehydrate)(doc), {
+        event: isNewDoc ? DOC_CREATION : DOC_UPDATE
+      });
+      return dehydratedDoc;
+    }
     /**
-     * @access private
+     * Creates a list of mutations to execute to create a document and its relationships.
+     *
+     * ```js
+     * const baseDoc = { _type: 'io.cozy.todo', label: 'Go hiking' }
+     * // relations can be arrays or single objects
+     * const relationships = {
+     *   attachments: [{ _id: 12345, _type: 'io.cozy.files' }, { _id: 6789, _type: 'io.cozy.files' }],
+     *   bills: { _id: 9999, _type: 'io.cozy.bills' }
+     * }
+     * client.getDocumentSavePlan(baseDoc, relationships)
+     * ```
+     *
+     *
+     * @param  {import("./types").CozyClientDocument} document - Document to create
+     * @param  {import("./types").ReferenceMap} [referencesByName] - References to the created document. The
+     * relationship class associated to each reference list should support references, otherwise this
+     * method will throw.
+     *
+     * @returns {import("./types").Mutation[]|import("./types").Mutation}  One or more mutation to execute
      */
-    this.isLuxonDuration = true;
-  }
-
-  /**
-   * Create Duration from a number of milliseconds.
-   * @param {number} count of milliseconds
-   * @param {Object} opts - options for parsing
-   * @param {string} [opts.locale='en-US'] - the locale to use
-   * @param {string} opts.numberingSystem - the numbering system to use
-   * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use
-   * @return {Duration}
-   */
-  static fromMillis(count, opts) {
-    return Duration.fromObject({ milliseconds: count }, opts);
-  }
 
-  /**
-   * Create a Duration from a JavaScript object with keys like 'years' and 'hours'.
-   * If this object is empty then a zero milliseconds duration is returned.
-   * @param {Object} obj - the object to create the DateTime from
-   * @param {number} obj.years
-   * @param {number} obj.quarters
-   * @param {number} obj.months
-   * @param {number} obj.weeks
-   * @param {number} obj.days
-   * @param {number} obj.hours
-   * @param {number} obj.minutes
-   * @param {number} obj.seconds
-   * @param {number} obj.milliseconds
-   * @param {Object} [opts=[]] - options for creating this Duration
-   * @param {string} [opts.locale='en-US'] - the locale to use
-   * @param {string} opts.numberingSystem - the numbering system to use
-   * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use
-   * @param {string} [opts.matrix=Object] - the custom conversion system to use
-   * @return {Duration}
-   */
-  static fromObject(obj, opts = {}) {
-    if (obj == null || typeof obj !== "object") {
-      throw new _errors_js__WEBPACK_IMPORTED_MODULE_0__["InvalidArgumentError"](
-        `Duration.fromObject: argument expected to be an object, got ${
-          obj === null ? "null" : typeof obj
-        }`
-      );
-    }
+  }, {
+    key: "getDocumentSavePlan",
+    value: function getDocumentSavePlan(document, referencesByName) {
+      var _this3 = this;
 
-    return new Duration({
-      values: Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_5__["normalizeObject"])(obj, Duration.normalizeUnit),
-      loc: _impl_locale_js__WEBPACK_IMPORTED_MODULE_3__["default"].fromObject(opts),
-      conversionAccuracy: opts.conversionAccuracy,
-      matrix: opts.matrix,
-    });
-  }
+      var isNewDoc = !document._rev;
+      var docToSave = this.prepareDocumentForSave(document);
+      var saveMutation = isNewDoc ? _dsl.Mutations.createDocument(docToSave) : _dsl.Mutations.updateDocument(docToSave);
+      var hasReferences = referencesByName && Object.values(referencesByName).filter(function (references) {
+        return Array.isArray(references) ? references.length > 0 : references;
+      }).length > 0;
 
-  /**
-   * Create a Duration from DurationLike.
-   *
-   * @param {Object | number | Duration} durationLike
-   * One of:
-   * - object with keys like 'years' and 'hours'.
-   * - number representing milliseconds
-   * - Duration instance
-   * @return {Duration}
-   */
-  static fromDurationLike(durationLike) {
-    if (Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_5__["isNumber"])(durationLike)) {
-      return Duration.fromMillis(durationLike);
-    } else if (Duration.isDuration(durationLike)) {
-      return durationLike;
-    } else if (typeof durationLike === "object") {
-      return Duration.fromObject(durationLike);
-    } else {
-      throw new _errors_js__WEBPACK_IMPORTED_MODULE_0__["InvalidArgumentError"](
-        `Unknown duration argument ${durationLike} of type ${typeof durationLike}`
-      );
-    }
-  }
+      if (!hasReferences) {
+        return saveMutation;
+      } else {
+        for (var _i = 0, _Object$keys = Object.keys(referencesByName); _i < _Object$keys.length; _i++) {
+          var relName = _Object$keys[_i];
+          var doctype = document._type;
+          var doctypeRelationship = this.schema.getRelationship(doctype, relName);
+          var relationshipClass = doctypeRelationship.type;
 
-  /**
-   * Create a Duration from an ISO 8601 duration string.
-   * @param {string} text - text to parse
-   * @param {Object} opts - options for parsing
-   * @param {string} [opts.locale='en-US'] - the locale to use
-   * @param {string} opts.numberingSystem - the numbering system to use
-   * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use
-   * @param {string} [opts.matrix=Object] - the preset conversion system to use
-   * @see https://en.wikipedia.org/wiki/ISO_8601#Durations
-   * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }
-   * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }
-   * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }
-   * @return {Duration}
-   */
-  static fromISO(text, opts) {
-    const [parsed] = Object(_impl_regexParser_js__WEBPACK_IMPORTED_MODULE_4__["parseISODuration"])(text);
-    if (parsed) {
-      return Duration.fromObject(parsed, opts);
-    } else {
-      return Duration.invalid("unparsable", `the input "${text}" can't be parsed as ISO 8601`);
-    }
-  }
+          if (!supportsReferences(relationshipClass)) {
+            throw referencesUnsupportedError(doctypeRelationship.name);
+          }
+        }
+      }
 
-  /**
-   * Create a Duration from an ISO 8601 time string.
-   * @param {string} text - text to parse
-   * @param {Object} opts - options for parsing
-   * @param {string} [opts.locale='en-US'] - the locale to use
-   * @param {string} opts.numberingSystem - the numbering system to use
-   * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use
-   * @param {string} [opts.matrix=Object] - the conversion system to use
-   * @see https://en.wikipedia.org/wiki/ISO_8601#Times
-   * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }
-   * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }
-   * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }
-   * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }
-   * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }
-   * @return {Duration}
-   */
-  static fromISOTime(text, opts) {
-    const [parsed] = Object(_impl_regexParser_js__WEBPACK_IMPORTED_MODULE_4__["parseISOTimeOnly"])(text);
-    if (parsed) {
-      return Duration.fromObject(parsed, opts);
-    } else {
-      return Duration.invalid("unparsable", `the input "${text}" can't be parsed as ISO 8601`);
-    }
-  }
+      if (referencesByName && !isNewDoc) {
+        throw new Error('Unable to save external relationships on a not-new document');
+      }
 
-  /**
-   * Create an invalid Duration.
-   * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent
-   * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information
-   * @return {Duration}
-   */
-  static invalid(reason, explanation = null) {
-    if (!reason) {
-      throw new _errors_js__WEBPACK_IMPORTED_MODULE_0__["InvalidArgumentError"]("need to specify a reason the Duration is invalid");
-    }
+      return [saveMutation, function (response) {
+        var doc = _this3.hydrateDocument(response.data);
 
-    const invalid = reason instanceof _impl_invalid_js__WEBPACK_IMPORTED_MODULE_2__["default"] ? reason : new _impl_invalid_js__WEBPACK_IMPORTED_MODULE_2__["default"](reason, explanation);
+        return Object.entries(referencesByName).map(function (_ref3) {
+          var _ref4 = (0, _slicedToArray2.default)(_ref3, 2),
+              relName = _ref4[0],
+              references = _ref4[1];
 
-    if (_settings_js__WEBPACK_IMPORTED_MODULE_6__["default"].throwOnInvalid) {
-      throw new _errors_js__WEBPACK_IMPORTED_MODULE_0__["InvalidDurationError"](invalid);
-    } else {
-      return new Duration({ invalid });
+          var relationship = doc[relName];
+          return relationship.addReferences(references);
+        });
+      }];
     }
-  }
-
-  /**
-   * @private
-   */
-  static normalizeUnit(unit) {
-    const normalized = {
-      year: "years",
-      years: "years",
-      quarter: "quarters",
-      quarters: "quarters",
-      month: "months",
-      months: "months",
-      week: "weeks",
-      weeks: "weeks",
-      day: "days",
-      days: "days",
-      hour: "hours",
-      hours: "hours",
-      minute: "minutes",
-      minutes: "minutes",
-      second: "seconds",
-      seconds: "seconds",
-      millisecond: "milliseconds",
-      milliseconds: "milliseconds",
-    }[unit ? unit.toLowerCase() : unit];
-
-    if (!normalized) throw new _errors_js__WEBPACK_IMPORTED_MODULE_0__["InvalidUnitError"](unit);
-
-    return normalized;
-  }
-
-  /**
-   * Check if an object is a Duration. Works across context boundaries
-   * @param {object} o
-   * @return {boolean}
-   */
-  static isDuration(o) {
-    return (o && o.isLuxonDuration) || false;
-  }
-
-  /**
-   * Get  the locale of a Duration, such 'en-GB'
-   * @type {string}
-   */
-  get locale() {
-    return this.isValid ? this.loc.locale : null;
-  }
+    /**
+     * Hooks are an observable system for events on documents.
+     * There are at the moment only 2 hooks available.
+     *
+     * - before:destroy, called just before a document is destroyed via CozyClient::destroy
+     * - after:destroy, called after a document is destroyed via CozyClient::destroy
+     *
+     * @example
+     * ```
+     * CozyClient.registerHook('io.cozy.bank.accounts', 'before:destroy', () => {
+     *   console.log('A io.cozy.bank.accounts is being destroyed')
+     * })
+     * ```
+     *
+     * @param  {string}   doctype - Doctype on which the hook will be registered
+     * @param  {string}   name    - Name of the hook
+     * @param  {Function} fn      - Callback to be executed
+     */
 
-  /**
-   * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration
-   *
-   * @type {string}
-   */
-  get numberingSystem() {
-    return this.isValid ? this.loc.numberingSystem : null;
-  }
+  }, {
+    key: "triggerHook",
+    value: function triggerHook(name, document) {
+      if (!CozyClient.hooks) return;
+      var allHooks = CozyClient.hooks[document._type] || {};
+      var hooks = allHooks[name] || [];
 
-  /**
-   * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:
-   * * `S` for milliseconds
-   * * `s` for seconds
-   * * `m` for minutes
-   * * `h` for hours
-   * * `d` for days
-   * * `w` for weeks
-   * * `M` for months
-   * * `y` for years
-   * Notes:
-   * * Add padding by repeating the token, e.g. "yy" pads the years to two digits, "hhhh" pads the hours out to four digits
-   * * Tokens can be escaped by wrapping with single quotes.
-   * * The duration will be converted to the set of units in the format string using {@link Duration#shiftTo} and the Durations's conversion accuracy setting.
-   * @param {string} fmt - the format string
-   * @param {Object} opts - options
-   * @param {boolean} [opts.floor=true] - floor numerical values
-   * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("y d s") //=> "1 6 2"
-   * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("yy dd sss") //=> "01 06 002"
-   * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("M S") //=> "12 518402000"
-   * @return {string}
-   */
-  toFormat(fmt, opts = {}) {
-    // reverse-compat since 1.2; we always round down now, never up, and we do it by default
-    const fmtOpts = {
-      ...opts,
-      floor: opts.round !== false && opts.floor !== false,
-    };
-    return this.isValid
-      ? _impl_formatter_js__WEBPACK_IMPORTED_MODULE_1__["default"].create(this.loc, fmtOpts).formatDurationFromString(this, fmt)
-      : INVALID;
-  }
+      var _iterator4 = _createForOfIteratorHelper(hooks),
+          _step4;
 
-  /**
-   * Returns a string representation of a Duration with all units included.
-   * To modify its behavior use the `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant.
-   * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat
-   * @param opts - On option object to override the formatting. Accepts the same keys as the options parameter of the native `Int.NumberFormat` constructor, as well as `listStyle`.
-   * @example
-   * ```js
-   * var dur = Duration.fromObject({ days: 1, hours: 5, minutes: 6 })
-   * dur.toHuman() //=> '1 day, 5 hours, 6 minutes'
-   * dur.toHuman({ listStyle: "long" }) //=> '1 day, 5 hours, and 6 minutes'
-   * dur.toHuman({ unitDisplay: "short" }) //=> '1 day, 5 hr, 6 min'
-   * ```
-   */
-  toHuman(opts = {}) {
-    const l = orderedUnits
-      .map((unit) => {
-        const val = this.values[unit];
-        if (Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_5__["isUndefined"])(val)) {
-          return null;
+      try {
+        for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
+          var h = _step4.value;
+          h(this, document);
         }
-        return this.loc
-          .numberFormatter({ style: "unit", unitDisplay: "long", ...opts, unit: unit.slice(0, -1) })
-          .format(val);
-      })
-      .filter((n) => n);
-
-    return this.loc
-      .listFormatter({ type: "conjunction", style: opts.listStyle || "narrow", ...opts })
-      .format(l);
-  }
+      } catch (err) {
+        _iterator4.e(err);
+      } finally {
+        _iterator4.f();
+      }
+    }
+    /**
+     * Destroys a document. {before,after}:destroy hooks will be fired.
+     *
+     * @param  {import("./types").CozyClientDocument} document - Document to be deleted
+     * @returns {Promise<import("./types").CozyClientDocument>} The document that has been deleted
+     */
 
-  /**
-   * Returns a JavaScript object with this Duration's values.
-   * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }
-   * @return {Object}
-   */
-  toObject() {
-    if (!this.isValid) return {};
-    return { ...this.values };
-  }
+  }, {
+    key: "destroy",
+    value: function () {
+      var _destroy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(document) {
+        var mutationOptions,
+            res,
+            _args7 = arguments;
+        return _regenerator.default.wrap(function _callee7$(_context7) {
+          while (1) {
+            switch (_context7.prev = _context7.next) {
+              case 0:
+                mutationOptions = _args7.length > 1 && _args7[1] !== undefined ? _args7[1] : {};
+                _context7.next = 3;
+                return this.triggerHook('before:destroy', document);
 
-  /**
-   * Returns an ISO 8601-compliant string representation of this Duration.
-   * @see https://en.wikipedia.org/wiki/ISO_8601#Durations
-   * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'
-   * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'
-   * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'
-   * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'
-   * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'
-   * @return {string}
-   */
-  toISO() {
-    // we could use the formatter, but this is an easier way to get the minimum string
-    if (!this.isValid) return null;
-
-    let s = "P";
-    if (this.years !== 0) s += this.years + "Y";
-    if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + "M";
-    if (this.weeks !== 0) s += this.weeks + "W";
-    if (this.days !== 0) s += this.days + "D";
-    if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0)
-      s += "T";
-    if (this.hours !== 0) s += this.hours + "H";
-    if (this.minutes !== 0) s += this.minutes + "M";
-    if (this.seconds !== 0 || this.milliseconds !== 0)
-      // this will handle "floating point madness" by removing extra decimal places
-      // https://stackoverflow.com/questions/588004/is-floating-point-math-broken
-      s += Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_5__["roundTo"])(this.seconds + this.milliseconds / 1000, 3) + "S";
-    if (s === "P") s += "T0S";
-    return s;
-  }
+              case 3:
+                _context7.next = 5;
+                return this.mutate(_dsl.Mutations.deleteDocument(document), mutationOptions);
 
-  /**
-   * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.
-   * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.
-   * @see https://en.wikipedia.org/wiki/ISO_8601#Times
-   * @param {Object} opts - options
-   * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0
-   * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0
-   * @param {boolean} [opts.includePrefix=false] - include the `T` prefix
-   * @param {string} [opts.format='extended'] - choose between the basic and extended format
-   * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000'
-   * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00'
-   * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00'
-   * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000'
-   * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000'
-   * @return {string}
-   */
-  toISOTime(opts = {}) {
-    if (!this.isValid) return null;
-
-    const millis = this.toMillis();
-    if (millis < 0 || millis >= 86400000) return null;
-
-    opts = {
-      suppressMilliseconds: false,
-      suppressSeconds: false,
-      includePrefix: false,
-      format: "extended",
-      ...opts,
-    };
+              case 5:
+                res = _context7.sent;
+                _context7.next = 8;
+                return this.triggerHook('after:destroy', document);
 
-    const value = this.shiftTo("hours", "minutes", "seconds", "milliseconds");
+              case 8:
+                return _context7.abrupt("return", res);
 
-    let fmt = opts.format === "basic" ? "hhmm" : "hh:mm";
+              case 9:
+              case "end":
+                return _context7.stop();
+            }
+          }
+        }, _callee7, this);
+      }));
 
-    if (!opts.suppressSeconds || value.seconds !== 0 || value.milliseconds !== 0) {
-      fmt += opts.format === "basic" ? "ss" : ":ss";
-      if (!opts.suppressMilliseconds || value.milliseconds !== 0) {
-        fmt += ".SSS";
+      function destroy(_x8) {
+        return _destroy.apply(this, arguments);
       }
+
+      return destroy;
+    }()
+  }, {
+    key: "upload",
+    value: function upload(file, dirPath) {
+      var mutationOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+      return this.mutate(_dsl.Mutations.uploadFile(file, dirPath), mutationOptions);
     }
+    /**
+     * Makes sure that the query exists in the store
+     *
+     * @param  {string} queryId - Id of the query
+     * @param  {QueryDefinition} queryDefinition - Definition of the query
+     * @param  {import("./types").QueryOptions} [options] - Additional options
+     */
 
-    let str = value.toFormat(fmt);
+  }, {
+    key: "ensureQueryExists",
+    value: function ensureQueryExists(queryId, queryDefinition, options) {
+      this.ensureStore();
+      var existingQuery = (0, _store.getQueryFromState)(this.store.getState(), queryId); // Don't trigger the INIT_QUERY for fetchMore() calls
 
-    if (opts.includePrefix) {
-      str = "T" + str;
+      if (existingQuery.fetchStatus !== 'loaded' || !queryDefinition.skip && !queryDefinition.bookmark) {
+        this.dispatch((0, _store.initQuery)(queryId, queryDefinition, options));
+      }
     }
+    /**
+     * Executes a query and returns its results.
+     *
+     * Results from the query will be saved internally and can be retrieved via
+     * `getQueryFromState` or directly using `<Query />`. `<Query />` automatically
+     * executes its query when mounted if no fetch policy has been indicated.
+     *
+     * @param  {QueryDefinition} queryDefinition - Definition that will be executed
+     * @param  {import("./types").QueryOptions} [options] - Options
+     * @returns {Promise<import("./types").QueryResult>}
+     */
 
-    return str;
-  }
+  }, {
+    key: "query",
+    value: function () {
+      var _query = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(queryDefinition) {
+        var _this4 = this;
 
-  /**
-   * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.
-   * @return {string}
-   */
-  toJSON() {
-    return this.toISO();
-  }
+        var _ref5,
+            update,
+            options,
+            queryId,
+            existingQuery,
+            shouldFetch,
+            backgroundFetching,
+            response,
+            _args8 = arguments;
 
-  /**
-   * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.
-   * @return {string}
-   */
-  toString() {
-    return this.toISO();
-  }
+        return _regenerator.default.wrap(function _callee8$(_context8) {
+          while (1) {
+            switch (_context8.prev = _context8.next) {
+              case 0:
+                _ref5 = _args8.length > 1 && _args8[1] !== undefined ? _args8[1] : {};
+                update = _ref5.update, options = (0, _objectWithoutProperties2.default)(_ref5, ["update"]);
+                this.ensureStore();
+                queryId = options.as || this.queryIdGenerator.generateId(queryDefinition);
+                existingQuery = this.getQueryFromState(queryId, options);
 
-  /**
-   * Returns an milliseconds value of this Duration.
-   * @return {number}
-   */
-  toMillis() {
-    return this.as("milliseconds");
-  }
+                if (!(options.enabled !== undefined)) {
+                  _context8.next = 8;
+                  break;
+                }
 
-  /**
-   * Returns an milliseconds value of this Duration. Alias of {@link toMillis}
-   * @return {number}
-   */
-  valueOf() {
-    return this.toMillis();
-  }
+                if (!('boolean' !== typeof options.enabled)) {
+                  _context8.next = 8;
+                  break;
+                }
 
-  /**
-   * Make this Duration longer by the specified amount. Return a newly-constructed Duration.
-   * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()
-   * @return {Duration}
-   */
-  plus(duration) {
-    if (!this.isValid) return this;
+                throw new Error("option.enabled should be a boolean for this query: ".concat(JSON.stringify(queryDefinition)));
 
-    const dur = Duration.fromDurationLike(duration),
-      result = {};
+              case 8:
+                if (!options.fetchPolicy) {
+                  _context8.next = 14;
+                  break;
+                }
 
-    for (const k of orderedUnits) {
-      if (Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_5__["hasOwnProperty"])(dur.values, k) || Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_5__["hasOwnProperty"])(this.values, k)) {
-        result[k] = dur.get(k) + this.get(k);
-      }
-    }
-
-    return clone(this, { values: result }, true);
-  }
-
-  /**
-   * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.
-   * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()
-   * @return {Duration}
-   */
-  minus(duration) {
-    if (!this.isValid) return this;
-
-    const dur = Duration.fromDurationLike(duration);
-    return this.plus(dur.negate());
-  }
+                if (options.as) {
+                  _context8.next = 11;
+                  break;
+                }
 
-  /**
-   * Scale this Duration by the specified amount. Return a newly-constructed Duration.
-   * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.
-   * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 }
-   * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === "hours" ? x * 2 : x) //=> { hours: 2, minutes: 30 }
-   * @return {Duration}
-   */
-  mapUnits(fn) {
-    if (!this.isValid) return this;
-    const result = {};
-    for (const k of Object.keys(this.values)) {
-      result[k] = Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_5__["asNumber"])(fn(this.values[k], k));
-    }
-    return clone(this, { values: result }, true);
-  }
+                throw new Error('Cannot use `fetchPolicy` without naming the query, please use `as` to name the query');
 
-  /**
-   * Get the value of unit.
-   * @param {string} unit - a unit such as 'minute' or 'day'
-   * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2
-   * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0
-   * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3
-   * @return {number}
-   */
-  get(unit) {
-    return this[Duration.normalizeUnit(unit)];
-  }
+              case 11:
+                shouldFetch = options.fetchPolicy(existingQuery);
 
-  /**
-   * "Set" the values of specified units. Return a newly-constructed Duration.
-   * @param {Object} values - a mapping of units to numbers
-   * @example dur.set({ years: 2017 })
-   * @example dur.set({ hours: 8, minutes: 30 })
-   * @return {Duration}
-   */
-  set(values) {
-    if (!this.isValid) return this;
+                if (shouldFetch) {
+                  _context8.next = 14;
+                  break;
+                }
 
-    const mixed = { ...this.values, ...Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_5__["normalizeObject"])(values, Duration.normalizeUnit) };
-    return clone(this, { values: mixed });
-  }
+                return _context8.abrupt("return");
 
-  /**
-   * "Set" the locale and/or numberingSystem.  Returns a newly-constructed Duration.
-   * @example dur.reconfigure({ locale: 'en-GB' })
-   * @return {Duration}
-   */
-  reconfigure({ locale, numberingSystem, conversionAccuracy, matrix } = {}) {
-    const loc = this.loc.clone({ locale, numberingSystem });
-    const opts = { loc, matrix, conversionAccuracy };
-    return clone(this, opts);
-  }
+              case 14:
+                if (!(existingQuery && Object.keys(existingQuery).length > 0)) {
+                  _context8.next = 17;
+                  break;
+                }
 
-  /**
-   * Return the length of the duration in the specified unit.
-   * @param {string} unit - a unit such as 'minutes' or 'days'
-   * @example Duration.fromObject({years: 1}).as('days') //=> 365
-   * @example Duration.fromObject({years: 1}).as('months') //=> 12
-   * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5
-   * @return {number}
-   */
-  as(unit) {
-    return this.isValid ? this.shiftTo(unit).get(unit) : NaN;
-  }
+                if (!(existingQuery.fetchStatus === 'loading')) {
+                  _context8.next = 17;
+                  break;
+                }
 
-  /**
-   * Reduce this Duration to its canonical representation in its current units.
-   * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }
-   * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }
-   * @return {Duration}
-   */
-  normalize() {
-    if (!this.isValid) return this;
-    const vals = this.toObject();
-    normalizeValues(this.matrix, vals);
-    return clone(this, { values: vals }, true);
-  }
+                return _context8.abrupt("return", this._promiseCache.get(function () {
+                  return (0, _jsonStableStringify.default)(queryDefinition);
+                }));
 
-  /**
-   * Convert this Duration into its representation in a different set of units.
-   * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }
-   * @return {Duration}
-   */
-  shiftTo(...units) {
-    if (!this.isValid) return this;
+              case 17:
+                this.ensureQueryExists(queryId, queryDefinition, options);
+                _context8.prev = 18;
+                backgroundFetching = options.backgroundFetching !== undefined ? options.backgroundFetching : this.options.backgroundFetching;
+                this.dispatch((0, _store.loadQuery)(queryId, {
+                  backgroundFetching: backgroundFetching
+                }));
+                _context8.next = 23;
+                return this._promiseCache.exec(function () {
+                  return _this4.requestQuery(queryDefinition);
+                }, function () {
+                  return (0, _jsonStableStringify.default)(queryDefinition);
+                });
 
-    if (units.length === 0) {
-      return this;
-    }
+              case 23:
+                response = _context8.sent;
+                this.dispatch((0, _store.receiveQueryResult)(queryId, response, {
+                  update: update,
+                  backgroundFetching: backgroundFetching
+                }));
+                return _context8.abrupt("return", response);
 
-    units = units.map((u) => Duration.normalizeUnit(u));
+              case 28:
+                _context8.prev = 28;
+                _context8.t0 = _context8["catch"](18);
+                this.dispatch((0, _store.receiveQueryError)(queryId, _context8.t0)); // specific onError
 
-    const built = {},
-      accumulated = {},
-      vals = this.toObject();
-    let lastUnit;
+                if (!options.onError) {
+                  _context8.next = 35;
+                  break;
+                }
 
-    for (const k of orderedUnits) {
-      if (units.indexOf(k) >= 0) {
-        lastUnit = k;
+                options.onError(_context8.t0); // defaulted onError
 
-        let own = 0;
+                _context8.next = 40;
+                break;
 
-        // anything we haven't boiled down yet should get boiled to this unit
-        for (const ak in accumulated) {
-          own += this.matrix[ak][k] * accumulated[ak];
-          accumulated[ak] = 0;
-        }
+              case 35:
+                if (!this.options.onError) {
+                  _context8.next = 39;
+                  break;
+                }
 
-        // plus anything that's already in this unit
-        if (Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_5__["isNumber"])(vals[k])) {
-          own += vals[k];
-        }
+                this.options.onError(_context8.t0);
+                _context8.next = 40;
+                break;
 
-        const i = Math.trunc(own);
-        built[k] = i;
-        accumulated[k] = (own * 1000 - i * 1000) / 1000;
+              case 39:
+                throw _context8.t0;
 
-        // plus anything further down the chain that should be rolled up in to this
-        for (const down in vals) {
-          if (orderedUnits.indexOf(down) > orderedUnits.indexOf(k)) {
-            convert(this.matrix, vals, down, built, k);
+              case 40:
+              case "end":
+                return _context8.stop();
+            }
           }
-        }
-        // otherwise, keep it in the wings to boil it later
-      } else if (Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_5__["isNumber"])(vals[k])) {
-        accumulated[k] = vals[k];
-      }
-    }
+        }, _callee8, this, [[18, 28]]);
+      }));
 
-    // anything leftover becomes the decimal for the last unit
-    // lastUnit must be defined since units is not empty
-    for (const key in accumulated) {
-      if (accumulated[key] !== 0) {
-        built[lastUnit] +=
-          key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];
+      function query(_x9) {
+        return _query.apply(this, arguments);
       }
-    }
 
-    return clone(this, { values: built }, true).normalize();
-  }
+      return query;
+    }()
+    /**
+     * Will fetch all documents for a `queryDefinition`, automatically fetching more
+     * documents if the total of documents is superior to the pagination limit. Can
+     * result in a lot of network requests.
+     *
+     * @param  {QueryDefinition} queryDefinition - Definition to be executed
+     * @param {import("./types").QueryOptions} [options] - Options
+     * @returns {Promise<import("./types").QueryResult>} All documents matching the query
+     */
 
-  /**
-   * Return the negative of this Duration.
-   * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }
-   * @return {Duration}
-   */
-  negate() {
-    if (!this.isValid) return this;
-    const negated = {};
-    for (const k of Object.keys(this.values)) {
-      negated[k] = this.values[k] === 0 ? 0 : -this.values[k];
-    }
-    return clone(this, { values: negated }, true);
-  }
+  }, {
+    key: "queryAll",
+    value: function () {
+      var _queryAll = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(queryDefinition) {
+        var options,
+            queryId,
+            mergedOptions,
+            resp,
+            documents,
+            currentResult,
+            _args9 = arguments;
+        return _regenerator.default.wrap(function _callee9$(_context9) {
+          while (1) {
+            switch (_context9.prev = _context9.next) {
+              case 0:
+                options = _args9.length > 1 && _args9[1] !== undefined ? _args9[1] : {};
+                queryId = options.as || this.queryIdGenerator.generateId(queryDefinition);
+                mergedOptions = _objectSpread(_objectSpread({}, options), {}, {
+                  as: queryId
+                });
+                _context9.prev = 3;
+                _context9.next = 6;
+                return this.query(queryDefinition, mergedOptions);
 
-  /**
-   * Get the years.
-   * @type {number}
-   */
-  get years() {
-    return this.isValid ? this.values.years || 0 : NaN;
-  }
+              case 6:
+                resp = _context9.sent;
+                documents = resp.data;
 
-  /**
-   * Get the quarters.
-   * @type {number}
-   */
-  get quarters() {
-    return this.isValid ? this.values.quarters || 0 : NaN;
-  }
+              case 8:
+                if (!(resp && resp.next)) {
+                  _context9.next = 22;
+                  break;
+                }
 
-  /**
-   * Get the months.
-   * @type {number}
-   */
-  get months() {
-    return this.isValid ? this.values.months || 0 : NaN;
-  }
+                if (!resp.bookmark) {
+                  _context9.next = 15;
+                  break;
+                }
 
-  /**
-   * Get the weeks
-   * @type {number}
-   */
-  get weeks() {
-    return this.isValid ? this.values.weeks || 0 : NaN;
-  }
+                _context9.next = 12;
+                return this.query(queryDefinition.offsetBookmark(resp.bookmark), mergedOptions);
 
-  /**
-   * Get the days.
-   * @type {number}
-   */
-  get days() {
-    return this.isValid ? this.values.days || 0 : NaN;
-  }
+              case 12:
+                resp = _context9.sent;
+                _context9.next = 19;
+                break;
 
-  /**
-   * Get the hours.
-   * @type {number}
-   */
-  get hours() {
-    return this.isValid ? this.values.hours || 0 : NaN;
-  }
+              case 15:
+                currentResult = (0, _store.getRawQueryFromState)(this.store.getState(), queryId);
+                _context9.next = 18;
+                return this.query(queryDefinition.offset(currentResult.data.length), mergedOptions);
 
-  /**
-   * Get the minutes.
-   * @type {number}
-   */
-  get minutes() {
-    return this.isValid ? this.values.minutes || 0 : NaN;
-  }
+              case 18:
+                resp = _context9.sent;
 
-  /**
-   * Get the seconds.
-   * @return {number}
-   */
-  get seconds() {
-    return this.isValid ? this.values.seconds || 0 : NaN;
-  }
+              case 19:
+                documents.push.apply(documents, (0, _toConsumableArray2.default)(resp.data));
+                _context9.next = 8;
+                break;
 
-  /**
-   * Get the milliseconds.
-   * @return {number}
-   */
-  get milliseconds() {
-    return this.isValid ? this.values.milliseconds || 0 : NaN;
-  }
+              case 22:
+                return _context9.abrupt("return", documents);
 
-  /**
-   * Returns whether the Duration is invalid. Invalid durations are returned by diff operations
-   * on invalid DateTimes or Intervals.
-   * @return {boolean}
-   */
-  get isValid() {
-    return this.invalid === null;
-  }
+              case 25:
+                _context9.prev = 25;
+                _context9.t0 = _context9["catch"](3);
 
-  /**
-   * Returns an error code if this Duration became invalid, or null if the Duration is valid
-   * @return {string}
-   */
-  get invalidReason() {
-    return this.invalid ? this.invalid.reason : null;
-  }
+                _logger.default.log("queryAll error for ".concat(_context9.t0.toString()));
 
-  /**
-   * Returns an explanation of why this Duration became invalid, or null if the Duration is valid
-   * @type {string}
-   */
-  get invalidExplanation() {
-    return this.invalid ? this.invalid.explanation : null;
-  }
+                return _context9.abrupt("return", []);
 
-  /**
-   * Equality check
-   * Two Durations are equal iff they have the same units and the same values for each unit.
-   * @param {Duration} other
-   * @return {boolean}
-   */
-  equals(other) {
-    if (!this.isValid || !other.isValid) {
-      return false;
-    }
+              case 29:
+              case "end":
+                return _context9.stop();
+            }
+          }
+        }, _callee9, this, [[3, 25]]);
+      }));
 
-    if (!this.loc.equals(other.loc)) {
-      return false;
-    }
+      function queryAll(_x10) {
+        return _queryAll.apply(this, arguments);
+      }
 
-    function eq(v1, v2) {
-      // Consider 0 and undefined as equal
-      if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;
-      return v1 === v2;
-    }
+      return queryAll;
+    }()
+  }, {
+    key: "watchQuery",
+    value: function watchQuery() {
+      _logger.default.warn('client.watchQuery is deprecated, please use client.makeObservableQuery.');
 
-    for (const u of orderedUnits) {
-      if (!eq(this.values[u], other.values[u])) {
-        return false;
-      }
+      return this.makeObservableQuery.apply(this, arguments);
     }
-    return true;
-  }
-}
-
+  }, {
+    key: "makeObservableQuery",
+    value: function makeObservableQuery(queryDefinition) {
+      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+      this.ensureStore();
+      var queryId = options.as || this.queryIdGenerator.generateId(queryDefinition);
+      this.ensureQueryExists(queryId, queryDefinition);
+      return new _ObservableQuery.default(queryId, queryDefinition, this, options);
+    }
+    /**
+     * Mutate a document
+     *
+     * @param  {object}    mutationDefinition - Describe the mutation
+     * @param {object} [options] - Options
+     * @param  {string}    [options.as] - Mutation id
+     * @param  {Function}    [options.update] - Function to update the document
+     * @param  {Function}    [options.updateQueries] - Function to update queries
+     * @returns {Promise}
+     */
 
-/***/ }),
-/* 253 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+  }, {
+    key: "mutate",
+    value: function () {
+      var _mutate = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(mutationDefinition) {
+        var _ref6,
+            update,
+            updateQueries,
+            options,
+            mutationId,
+            response,
+            _args10 = arguments;
 
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InvalidDateTimeError", function() { return InvalidDateTimeError; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InvalidIntervalError", function() { return InvalidIntervalError; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InvalidDurationError", function() { return InvalidDurationError; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ConflictingSpecificationError", function() { return ConflictingSpecificationError; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InvalidUnitError", function() { return InvalidUnitError; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InvalidArgumentError", function() { return InvalidArgumentError; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ZoneIsAbstractError", function() { return ZoneIsAbstractError; });
-// these aren't really private, but nor are they really useful to document
+        return _regenerator.default.wrap(function _callee10$(_context10) {
+          while (1) {
+            switch (_context10.prev = _context10.next) {
+              case 0:
+                _ref6 = _args10.length > 1 && _args10[1] !== undefined ? _args10[1] : {};
+                update = _ref6.update, updateQueries = _ref6.updateQueries, options = (0, _objectWithoutProperties2.default)(_ref6, ["update", "updateQueries"]);
+                this.ensureStore();
+                mutationId = options.as || this.queryIdGenerator.generateId(mutationDefinition);
+                this.dispatch((0, _store.initMutation)(mutationId, mutationDefinition));
+                _context10.prev = 5;
+                _context10.next = 8;
+                return this.requestMutation(mutationDefinition);
 
-/**
- * @private
- */
-class LuxonError extends Error {}
+              case 8:
+                response = _context10.sent;
+                this.dispatch((0, _store.receiveMutationResult)(mutationId, response, {
+                  update: update,
+                  updateQueries: updateQueries
+                }, mutationDefinition));
+                return _context10.abrupt("return", response);
 
-/**
- * @private
- */
-class InvalidDateTimeError extends LuxonError {
-  constructor(reason) {
-    super(`Invalid DateTime: ${reason.toMessage()}`);
-  }
-}
+              case 13:
+                _context10.prev = 13;
+                _context10.t0 = _context10["catch"](5);
+                this.dispatch((0, _store.receiveMutationError)(mutationId, _context10.t0, mutationDefinition));
+                throw _context10.t0;
 
-/**
- * @private
- */
-class InvalidIntervalError extends LuxonError {
-  constructor(reason) {
-    super(`Invalid Interval: ${reason.toMessage()}`);
-  }
-}
+              case 17:
+              case "end":
+                return _context10.stop();
+            }
+          }
+        }, _callee10, this, [[5, 13]]);
+      }));
 
-/**
- * @private
- */
-class InvalidDurationError extends LuxonError {
-  constructor(reason) {
-    super(`Invalid Duration: ${reason.toMessage()}`);
-  }
-}
+      function mutate(_x11) {
+        return _mutate.apply(this, arguments);
+      }
 
-/**
- * @private
- */
-class ConflictingSpecificationError extends LuxonError {}
+      return mutate;
+    }()
+    /**
+     * Executes a query through links and fetches relationships
+     *
+     * @private
+     * @param  {QueryDefinition} definition QueryDefinition to be executed
+     * @returns {Promise<import("./types").ClientResponse>}
+     */
 
-/**
- * @private
- */
-class InvalidUnitError extends LuxonError {
-  constructor(unit) {
-    super(`Invalid unit ${unit}`);
-  }
-}
+  }, {
+    key: "requestQuery",
+    value: function () {
+      var _requestQuery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(definition) {
+        var mainResponse, withIncluded;
+        return _regenerator.default.wrap(function _callee11$(_context11) {
+          while (1) {
+            switch (_context11.prev = _context11.next) {
+              case 0:
+                _context11.next = 2;
+                return this.chain.request(definition);
 
-/**
- * @private
- */
-class InvalidArgumentError extends LuxonError {}
+              case 2:
+                mainResponse = _context11.sent;
 
-/**
- * @private
- */
-class ZoneIsAbstractError extends LuxonError {
-  constructor() {
-    super("Zone is an abstract class");
-  }
-}
+                if (definition.includes) {
+                  _context11.next = 5;
+                  break;
+                }
 
+                return _context11.abrupt("return", mainResponse);
 
-/***/ }),
-/* 254 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+              case 5:
+                _context11.next = 7;
+                return this.fetchRelationships(mainResponse, this.getIncludesRelationships(definition));
 
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Formatter; });
-/* harmony import */ var _english_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(255);
-/* harmony import */ var _formats_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(256);
-/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(257);
+              case 7:
+                withIncluded = _context11.sent;
+                return _context11.abrupt("return", withIncluded);
 
+              case 9:
+              case "end":
+                return _context11.stop();
+            }
+          }
+        }, _callee11, this);
+      }));
 
+      function requestQuery(_x12) {
+        return _requestQuery.apply(this, arguments);
+      }
 
+      return requestQuery;
+    }()
+    /**
+     * Fetch relationships for a response (can be several docs).
+     * Fills the `relationships` attribute of each documents.
+     *
+     * Can potentially result in several fetch requests.
+     * Queries are optimized before being sent (multiple single documents queries can be packed into
+     * one multiple document query) for example.
+     *
+     * @private
+     */
 
-function stringifyTokens(splits, tokenToString) {
-  let s = "";
-  for (const token of splits) {
-    if (token.literal) {
-      s += token.val;
-    } else {
-      s += tokenToString(token.val);
-    }
-  }
-  return s;
-}
+  }, {
+    key: "fetchRelationships",
+    value: function () {
+      var _fetchRelationships = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(response, relationshipsByName) {
+        var _this5 = this;
 
-const macroTokenToFormatOpts = {
-  D: _formats_js__WEBPACK_IMPORTED_MODULE_1__["DATE_SHORT"],
-  DD: _formats_js__WEBPACK_IMPORTED_MODULE_1__["DATE_MED"],
-  DDD: _formats_js__WEBPACK_IMPORTED_MODULE_1__["DATE_FULL"],
-  DDDD: _formats_js__WEBPACK_IMPORTED_MODULE_1__["DATE_HUGE"],
-  t: _formats_js__WEBPACK_IMPORTED_MODULE_1__["TIME_SIMPLE"],
-  tt: _formats_js__WEBPACK_IMPORTED_MODULE_1__["TIME_WITH_SECONDS"],
-  ttt: _formats_js__WEBPACK_IMPORTED_MODULE_1__["TIME_WITH_SHORT_OFFSET"],
-  tttt: _formats_js__WEBPACK_IMPORTED_MODULE_1__["TIME_WITH_LONG_OFFSET"],
-  T: _formats_js__WEBPACK_IMPORTED_MODULE_1__["TIME_24_SIMPLE"],
-  TT: _formats_js__WEBPACK_IMPORTED_MODULE_1__["TIME_24_WITH_SECONDS"],
-  TTT: _formats_js__WEBPACK_IMPORTED_MODULE_1__["TIME_24_WITH_SHORT_OFFSET"],
-  TTTT: _formats_js__WEBPACK_IMPORTED_MODULE_1__["TIME_24_WITH_LONG_OFFSET"],
-  f: _formats_js__WEBPACK_IMPORTED_MODULE_1__["DATETIME_SHORT"],
-  ff: _formats_js__WEBPACK_IMPORTED_MODULE_1__["DATETIME_MED"],
-  fff: _formats_js__WEBPACK_IMPORTED_MODULE_1__["DATETIME_FULL"],
-  ffff: _formats_js__WEBPACK_IMPORTED_MODULE_1__["DATETIME_HUGE"],
-  F: _formats_js__WEBPACK_IMPORTED_MODULE_1__["DATETIME_SHORT_WITH_SECONDS"],
-  FF: _formats_js__WEBPACK_IMPORTED_MODULE_1__["DATETIME_MED_WITH_SECONDS"],
-  FFF: _formats_js__WEBPACK_IMPORTED_MODULE_1__["DATETIME_FULL_WITH_SECONDS"],
-  FFFF: _formats_js__WEBPACK_IMPORTED_MODULE_1__["DATETIME_HUGE_WITH_SECONDS"],
-};
+        var isSingleDoc, responseDocs, queryDefToDocIdAndRel, documents, definitions, optimizedDefinitions, responses, uniqueDocuments, included, relationshipsByDocId, _iterator5, _step5, _step5$value, def, resp, docIdAndRel, _docIdAndRel, docId, relName;
 
-/**
- * @private
- */
+        return _regenerator.default.wrap(function _callee12$(_context12) {
+          while (1) {
+            switch (_context12.prev = _context12.next) {
+              case 0:
+                isSingleDoc = !Array.isArray(response.data);
 
-class Formatter {
-  static create(locale, opts = {}) {
-    return new Formatter(locale, opts);
-  }
-
-  static parseFormat(fmt) {
-    let current = null,
-      currentFull = "",
-      bracketed = false;
-    const splits = [];
-    for (let i = 0; i < fmt.length; i++) {
-      const c = fmt.charAt(i);
-      if (c === "'") {
-        if (currentFull.length > 0) {
-          splits.push({ literal: bracketed, val: currentFull });
-        }
-        current = null;
-        currentFull = "";
-        bracketed = !bracketed;
-      } else if (bracketed) {
-        currentFull += c;
-      } else if (c === current) {
-        currentFull += c;
-      } else {
-        if (currentFull.length > 0) {
-          splits.push({ literal: false, val: currentFull });
-        }
-        currentFull = c;
-        current = c;
-      }
-    }
+                if (!(!isSingleDoc && response.data.length === 0)) {
+                  _context12.next = 3;
+                  break;
+                }
 
-    if (currentFull.length > 0) {
-      splits.push({ literal: bracketed, val: currentFull });
-    }
+                return _context12.abrupt("return", response);
 
-    return splits;
-  }
+              case 3:
+                responseDocs = isSingleDoc ? [response.data] : response.data;
+                queryDefToDocIdAndRel = new Map();
+                documents = [];
+                definitions = [];
+                responseDocs.forEach(function (doc) {
+                  return (0, _forEach.default)(relationshipsByName, function (relationship, relName) {
+                    try {
+                      var queryDef = relationship.type.query(doc, _this5, relationship);
+                      var docId = doc._id; // Used to reattach responses into the relationships attribute of
+                      // each document
 
-  static macroTokenToFormatOpts(token) {
-    return macroTokenToFormatOpts[token];
-  }
+                      queryDefToDocIdAndRel.set(queryDef, [docId, relName]); // Relationships can yield "queries" that are already resolved documents.
+                      // These do not need to go through the usual link request mechanism.
 
-  constructor(locale, formatOpts) {
-    this.opts = formatOpts;
-    this.loc = locale;
-    this.systemLoc = null;
-  }
+                      if (queryDef instanceof _dsl.QueryDefinition) {
+                        definitions.push(queryDef);
+                      } else {
+                        documents.push(queryDef);
+                      }
+                    } catch (_unused) {// eslint-disable-next-line
+                      // We do not crash completely if one the relationship behaves badly and
+                      // throws
+                    }
+                  });
+                }); // Definitions can be in optimized/regrouped in case of HasMany relationships.
 
-  formatWithSystemDefault(dt, opts) {
-    if (this.systemLoc === null) {
-      this.systemLoc = this.loc.redefaultToSystem();
-    }
-    const df = this.systemLoc.dtFormatter(dt, { ...this.opts, ...opts });
-    return df.format();
-  }
+                optimizedDefinitions = (0, _optimize.default)(definitions);
+                _context12.next = 11;
+                return Promise.all(optimizedDefinitions.map(function (req) {
+                  return _this5.chain.request(req);
+                }));
 
-  formatDateTime(dt, opts = {}) {
-    const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts });
-    return df.format();
-  }
+              case 11:
+                responses = _context12.sent;
+                // "Included" documents will be stored in the `documents` store
+                uniqueDocuments = (0, _uniqBy.default)((0, _flatten.default)(documents), '_id');
+                included = (0, _flatten.default)(responses.map(function (r) {
+                  return r.included || r.data;
+                })).concat(uniqueDocuments).filter(Boolean); // Some relationships have the relationship data on the other side of the
+                // relationship (ex: io.cozy.photos.albums do not have photo inclusion information,
+                // it is on the io.cozy.files side).
+                // Here we take the data received from the relationship queries, and group
+                // it so that we can fill the `relationships` attribute of each doc before
+                // storing the document. This makes the data easier to manipulate for the front-end.
 
-  formatDateTimeParts(dt, opts = {}) {
-    const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts });
-    return df.formatToParts();
-  }
+                relationshipsByDocId = {};
+                _iterator5 = _createForOfIteratorHelper((0, _zip.default)(optimizedDefinitions, responses));
 
-  resolvedOptions(dt, opts = {}) {
-    const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts });
-    return df.resolvedOptions();
-  }
+                try {
+                  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
+                    _step5$value = (0, _slicedToArray2.default)(_step5.value, 2), def = _step5$value[0], resp = _step5$value[1];
+                    docIdAndRel = queryDefToDocIdAndRel.get(def);
 
-  num(n, p = 0) {
-    // we get some perf out of doing this here, annoyingly
-    if (this.opts.forceSimple) {
-      return Object(_util_js__WEBPACK_IMPORTED_MODULE_2__["padStart"])(n, p);
-    }
+                    if (docIdAndRel) {
+                      _docIdAndRel = (0, _slicedToArray2.default)(docIdAndRel, 2), docId = _docIdAndRel[0], relName = _docIdAndRel[1];
+                      relationshipsByDocId[docId] = relationshipsByDocId[docId] || {};
+                      relationshipsByDocId[docId][relName] = (0, _helpers.responseToRelationship)(resp);
+                    }
+                  }
+                } catch (err) {
+                  _iterator5.e(err);
+                } finally {
+                  _iterator5.f();
+                }
 
-    const opts = { ...this.opts };
+                return _context12.abrupt("return", _objectSpread(_objectSpread({}, (0, _helpers.attachRelationships)(response, relationshipsByDocId)), {}, {
+                  included: included
+                }));
 
-    if (p > 0) {
-      opts.padTo = p;
-    }
-
-    return this.loc.numberFormatter(opts).format(n);
-  }
+              case 18:
+              case "end":
+                return _context12.stop();
+            }
+          }
+        }, _callee12);
+      }));
 
-  formatDateTimeFromString(dt, fmt) {
-    const knownEnglish = this.loc.listingMode() === "en",
-      useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== "gregory",
-      string = (opts, extract) => this.loc.extract(dt, opts, extract),
-      formatOffset = (opts) => {
-        if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {
-          return "Z";
-        }
+      function fetchRelationships(_x13, _x14) {
+        return _fetchRelationships.apply(this, arguments);
+      }
 
-        return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : "";
-      },
-      meridiem = () =>
-        knownEnglish
-          ? _english_js__WEBPACK_IMPORTED_MODULE_0__["meridiemForDateTime"](dt)
-          : string({ hour: "numeric", hourCycle: "h12" }, "dayperiod"),
-      month = (length, standalone) =>
-        knownEnglish
-          ? _english_js__WEBPACK_IMPORTED_MODULE_0__["monthForDateTime"](dt, length)
-          : string(standalone ? { month: length } : { month: length, day: "numeric" }, "month"),
-      weekday = (length, standalone) =>
-        knownEnglish
-          ? _english_js__WEBPACK_IMPORTED_MODULE_0__["weekdayForDateTime"](dt, length)
-          : string(
-              standalone ? { weekday: length } : { weekday: length, month: "long", day: "numeric" },
-              "weekday"
-            ),
-      maybeMacro = (token) => {
-        const formatOpts = Formatter.macroTokenToFormatOpts(token);
-        if (formatOpts) {
-          return this.formatWithSystemDefault(dt, formatOpts);
-        } else {
-          return token;
-        }
-      },
-      era = (length) =>
-        knownEnglish ? _english_js__WEBPACK_IMPORTED_MODULE_0__["eraForDateTime"](dt, length) : string({ era: length }, "era"),
-      tokenToString = (token) => {
-        // Where possible: http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles
-        switch (token) {
-          // ms
-          case "S":
-            return this.num(dt.millisecond);
-          case "u":
-          // falls through
-          case "SSS":
-            return this.num(dt.millisecond, 3);
-          // seconds
-          case "s":
-            return this.num(dt.second);
-          case "ss":
-            return this.num(dt.second, 2);
-          // fractional seconds
-          case "uu":
-            return this.num(Math.floor(dt.millisecond / 10), 2);
-          case "uuu":
-            return this.num(Math.floor(dt.millisecond / 100));
-          // minutes
-          case "m":
-            return this.num(dt.minute);
-          case "mm":
-            return this.num(dt.minute, 2);
-          // hours
-          case "h":
-            return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);
-          case "hh":
-            return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);
-          case "H":
-            return this.num(dt.hour);
-          case "HH":
-            return this.num(dt.hour, 2);
-          // offset
-          case "Z":
-            // like +6
-            return formatOffset({ format: "narrow", allowZ: this.opts.allowZ });
-          case "ZZ":
-            // like +06:00
-            return formatOffset({ format: "short", allowZ: this.opts.allowZ });
-          case "ZZZ":
-            // like +0600
-            return formatOffset({ format: "techie", allowZ: this.opts.allowZ });
-          case "ZZZZ":
-            // like EST
-            return dt.zone.offsetName(dt.ts, { format: "short", locale: this.loc.locale });
-          case "ZZZZZ":
-            // like Eastern Standard Time
-            return dt.zone.offsetName(dt.ts, { format: "long", locale: this.loc.locale });
-          // zone
-          case "z":
-            // like America/New_York
-            return dt.zoneName;
-          // meridiems
-          case "a":
-            return meridiem();
-          // dates
-          case "d":
-            return useDateTimeFormatter ? string({ day: "numeric" }, "day") : this.num(dt.day);
-          case "dd":
-            return useDateTimeFormatter ? string({ day: "2-digit" }, "day") : this.num(dt.day, 2);
-          // weekdays - standalone
-          case "c":
-            // like 1
-            return this.num(dt.weekday);
-          case "ccc":
-            // like 'Tues'
-            return weekday("short", true);
-          case "cccc":
-            // like 'Tuesday'
-            return weekday("long", true);
-          case "ccccc":
-            // like 'T'
-            return weekday("narrow", true);
-          // weekdays - format
-          case "E":
-            // like 1
-            return this.num(dt.weekday);
-          case "EEE":
-            // like 'Tues'
-            return weekday("short", false);
-          case "EEEE":
-            // like 'Tuesday'
-            return weekday("long", false);
-          case "EEEEE":
-            // like 'T'
-            return weekday("narrow", false);
-          // months - standalone
-          case "L":
-            // like 1
-            return useDateTimeFormatter
-              ? string({ month: "numeric", day: "numeric" }, "month")
-              : this.num(dt.month);
-          case "LL":
-            // like 01, doesn't seem to work
-            return useDateTimeFormatter
-              ? string({ month: "2-digit", day: "numeric" }, "month")
-              : this.num(dt.month, 2);
-          case "LLL":
-            // like Jan
-            return month("short", true);
-          case "LLLL":
-            // like January
-            return month("long", true);
-          case "LLLLL":
-            // like J
-            return month("narrow", true);
-          // months - format
-          case "M":
-            // like 1
-            return useDateTimeFormatter
-              ? string({ month: "numeric" }, "month")
-              : this.num(dt.month);
-          case "MM":
-            // like 01
-            return useDateTimeFormatter
-              ? string({ month: "2-digit" }, "month")
-              : this.num(dt.month, 2);
-          case "MMM":
-            // like Jan
-            return month("short", false);
-          case "MMMM":
-            // like January
-            return month("long", false);
-          case "MMMMM":
-            // like J
-            return month("narrow", false);
-          // years
-          case "y":
-            // like 2014
-            return useDateTimeFormatter ? string({ year: "numeric" }, "year") : this.num(dt.year);
-          case "yy":
-            // like 14
-            return useDateTimeFormatter
-              ? string({ year: "2-digit" }, "year")
-              : this.num(dt.year.toString().slice(-2), 2);
-          case "yyyy":
-            // like 0012
-            return useDateTimeFormatter
-              ? string({ year: "numeric" }, "year")
-              : this.num(dt.year, 4);
-          case "yyyyyy":
-            // like 000012
-            return useDateTimeFormatter
-              ? string({ year: "numeric" }, "year")
-              : this.num(dt.year, 6);
-          // eras
-          case "G":
-            // like AD
-            return era("short");
-          case "GG":
-            // like Anno Domini
-            return era("long");
-          case "GGGGG":
-            return era("narrow");
-          case "kk":
-            return this.num(dt.weekYear.toString().slice(-2), 2);
-          case "kkkk":
-            return this.num(dt.weekYear, 4);
-          case "W":
-            return this.num(dt.weekNumber);
-          case "WW":
-            return this.num(dt.weekNumber, 2);
-          case "o":
-            return this.num(dt.ordinal);
-          case "ooo":
-            return this.num(dt.ordinal, 3);
-          case "q":
-            // like 1
-            return this.num(dt.quarter);
-          case "qq":
-            // like 01
-            return this.num(dt.quarter, 2);
-          case "X":
-            return this.num(Math.floor(dt.ts / 1000));
-          case "x":
-            return this.num(dt.ts);
-          default:
-            return maybeMacro(token);
-        }
-      };
+      return fetchRelationships;
+    }()
+  }, {
+    key: "requestMutation",
+    value: function () {
+      var _requestMutation = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13(definition) {
+        var _this6 = this;
 
-    return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);
-  }
-
-  formatDurationFromString(dur, fmt) {
-    const tokenToField = (token) => {
-        switch (token[0]) {
-          case "S":
-            return "millisecond";
-          case "s":
-            return "second";
-          case "m":
-            return "minute";
-          case "h":
-            return "hour";
-          case "d":
-            return "day";
-          case "w":
-            return "week";
-          case "M":
-            return "month";
-          case "y":
-            return "year";
-          default:
-            return null;
-        }
-      },
-      tokenToString = (lildur) => (token) => {
-        const mapped = tokenToField(token);
-        if (mapped) {
-          return this.num(lildur.get(mapped), token.length);
-        } else {
-          return token;
-        }
-      },
-      tokens = Formatter.parseFormat(fmt),
-      realTokens = tokens.reduce(
-        (found, { literal, val }) => (literal ? found : found.concat(val)),
-        []
-      ),
-      collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter((t) => t));
-    return stringifyTokens(tokens, tokenToString(collapsed));
-  }
-}
+        var _definition, first, rest, firstResponse;
 
+        return _regenerator.default.wrap(function _callee13$(_context13) {
+          while (1) {
+            switch (_context13.prev = _context13.next) {
+              case 0:
+                if (!Array.isArray(definition)) {
+                  _context13.next = 8;
+                  break;
+                }
 
-/***/ }),
-/* 255 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+                _definition = (0, _toArray2.default)(definition), first = _definition[0], rest = _definition.slice(1);
+                _context13.next = 4;
+                return this.requestMutation(first);
 
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "monthsLong", function() { return monthsLong; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "monthsShort", function() { return monthsShort; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "monthsNarrow", function() { return monthsNarrow; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "months", function() { return months; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "weekdaysLong", function() { return weekdaysLong; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "weekdaysShort", function() { return weekdaysShort; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "weekdaysNarrow", function() { return weekdaysNarrow; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "weekdays", function() { return weekdays; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "meridiems", function() { return meridiems; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "erasLong", function() { return erasLong; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "erasShort", function() { return erasShort; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "erasNarrow", function() { return erasNarrow; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "eras", function() { return eras; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "meridiemForDateTime", function() { return meridiemForDateTime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "weekdayForDateTime", function() { return weekdayForDateTime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "monthForDateTime", function() { return monthForDateTime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "eraForDateTime", function() { return eraForDateTime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "formatRelativeTime", function() { return formatRelativeTime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "formatString", function() { return formatString; });
-/* harmony import */ var _formats_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(256);
-/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(257);
-
-
-
-function stringify(obj) {
-  return JSON.stringify(obj, Object.keys(obj).sort());
-}
+              case 4:
+                firstResponse = _context13.sent;
+                _context13.next = 7;
+                return Promise.all(rest.map(function (def) {
+                  var mutationDef = typeof def === 'function' ? def(firstResponse) : def;
+                  return _this6.requestMutation(mutationDef);
+                }));
 
-/**
- * @private
- */
+              case 7:
+                return _context13.abrupt("return", firstResponse);
 
-const monthsLong = [
-  "January",
-  "February",
-  "March",
-  "April",
-  "May",
-  "June",
-  "July",
-  "August",
-  "September",
-  "October",
-  "November",
-  "December",
-];
+              case 8:
+                return _context13.abrupt("return", this.chain.request(definition));
 
-const monthsShort = [
-  "Jan",
-  "Feb",
-  "Mar",
-  "Apr",
-  "May",
-  "Jun",
-  "Jul",
-  "Aug",
-  "Sep",
-  "Oct",
-  "Nov",
-  "Dec",
-];
+              case 9:
+              case "end":
+                return _context13.stop();
+            }
+          }
+        }, _callee13, this);
+      }));
 
-const monthsNarrow = ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"];
-
-function months(length) {
-  switch (length) {
-    case "narrow":
-      return [...monthsNarrow];
-    case "short":
-      return [...monthsShort];
-    case "long":
-      return [...monthsLong];
-    case "numeric":
-      return ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"];
-    case "2-digit":
-      return ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"];
-    default:
-      return null;
-  }
-}
+      function requestMutation(_x15) {
+        return _requestMutation.apply(this, arguments);
+      }
 
-const weekdaysLong = [
-  "Monday",
-  "Tuesday",
-  "Wednesday",
-  "Thursday",
-  "Friday",
-  "Saturday",
-  "Sunday",
-];
+      return requestMutation;
+    }()
+  }, {
+    key: "getIncludesRelationships",
+    value: function getIncludesRelationships(queryDefinition) {
+      var _this7 = this;
 
-const weekdaysShort = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"];
+      var includes = queryDefinition.includes,
+          doctype = queryDefinition.doctype;
+      if (!includes) return {};
+      return (0, _fromPairs.default)(includes.map(function (relName) {
+        return [relName, _this7.schema.getRelationship(doctype, relName)];
+      }));
+    }
+    /**
+     * Returns documents with their relationships resolved according to their schema.
+     * If related documents are not in the store, they will not be fetched automatically.
+     * Instead, the relationships will have null documents.
+     *
+     * @param  {string} doctype - Doctype of the documents being hydrated
+     * @param  {Array<import("./types").CozyClientDocument>} documents - Documents to be hydrated
+     * @returns {Array<import("./types").HydratedDocument>}
+     */
 
-const weekdaysNarrow = ["M", "T", "W", "T", "F", "S", "S"];
+  }, {
+    key: "hydrateDocuments",
+    value: function hydrateDocuments(doctype, documents) {
+      var _this8 = this;
 
-function weekdays(length) {
-  switch (length) {
-    case "narrow":
-      return [...weekdaysNarrow];
-    case "short":
-      return [...weekdaysShort];
-    case "long":
-      return [...weekdaysLong];
-    case "numeric":
-      return ["1", "2", "3", "4", "5", "6", "7"];
-    default:
-      return null;
-  }
-}
+      if (this.options.autoHydrate === false) {
+        return documents;
+      }
 
-const meridiems = ["AM", "PM"];
+      var schema = this.schema.getDoctypeSchema(doctype);
+      var relationships = schema.relationships;
 
-const erasLong = ["Before Christ", "Anno Domini"];
+      if (relationships) {
+        return documents.map(function (doc) {
+          return _this8.hydrateDocument(doc, schema);
+        });
+      } else {
+        return documents;
+      }
+    }
+    /**
+     * Resolves relationships on a document.
+     *
+     * The original document is kept in the target attribute of
+     * the relationship
+     *
+     * @param  {import("./types").CozyClientDocument} document - for which relationships must be resolved
+     * @param  {Schema} [schemaArg] - Optional
+     * @returns {import("./types").HydratedDocument}
+     */
 
-const erasShort = ["BC", "AD"];
+  }, {
+    key: "hydrateDocument",
+    value: function hydrateDocument(document, schemaArg) {
+      if (!document) {
+        return document;
+      }
 
-const erasNarrow = ["B", "A"];
+      var schema = schemaArg || this.schema.getDoctypeSchema(document._type);
+      return _objectSpread(_objectSpread({}, document), this.hydrateRelationships(document, schema.relationships));
+    }
+  }, {
+    key: "hydrateRelationships",
+    value: function hydrateRelationships(document, schemaRelationships) {
+      var methods = this.getRelationshipStoreAccessors();
+      return (0, _mapValues.default)(schemaRelationships, function (assoc, name) {
+        return (0, _associations.create)(document, assoc, methods);
+      });
+    }
+    /**
+     * Creates (locally) a new document for the given doctype.
+     * This document is hydrated : its relationships are there
+     * and working.
+     */
 
-function eras(length) {
-  switch (length) {
-    case "narrow":
-      return [...erasNarrow];
-    case "short":
-      return [...erasShort];
-    case "long":
-      return [...erasLong];
-    default:
-      return null;
-  }
-}
+  }, {
+    key: "makeNewDocument",
+    value: function makeNewDocument(doctype) {
+      var obj = {
+        _type: doctype
+      };
+      return this.hydrateDocument(obj);
+    }
+  }, {
+    key: "generateRandomId",
+    value: function generateRandomId() {
+      return this.queryIdGenerator.generateRandomId();
+    }
+    /**
+     * Creates an association that is linked to the store.
+     */
 
-function meridiemForDateTime(dt) {
-  return meridiems[dt.hour < 12 ? 0 : 1];
-}
+  }, {
+    key: "getAssociation",
+    value: function getAssociation(document, associationName) {
+      return (0, _associations.create)(document, this.schema.getRelationship(document._type, associationName), this.getRelationshipStoreAccessors());
+    }
+    /**
+     * Returns the accessors that are given to the relationships for them
+     * to deal with the stores.
+     *
+     * Relationships need to have access to the store to ping it when
+     * a modification (addById/removeById etc...) has been done. This wakes
+     * the store up, which in turn will update the `<Query>`s and re-render the data.
+     */
 
-function weekdayForDateTime(dt, length) {
-  return weekdays(length)[dt.weekday - 1];
-}
+  }, {
+    key: "getRelationshipStoreAccessors",
+    value: function getRelationshipStoreAccessors() {
+      var _this9 = this;
 
-function monthForDateTime(dt, length) {
-  return months(length)[dt.month - 1];
-}
+      if (!this.storeAccesors) {
+        this.storeAccessors = {
+          get: this.getDocumentFromState.bind(this),
+          save: function save(document, opts) {
+            return _this9.save.call(_this9, document, opts);
+          },
+          dispatch: this.dispatch.bind(this),
+          query: function query(def, opts) {
+            return _this9.query.call(_this9, def, opts);
+          },
+          mutate: function mutate(def, opts) {
+            return _this9.mutate.call(_this9, def, opts);
+          }
+        };
+      }
 
-function eraForDateTime(dt, length) {
-  return eras(length)[dt.year < 0 ? 0 : 1];
-}
+      return this.storeAccessors;
+    }
+    /**
+     * Get a collection of documents from the internal store.
+     *
+     * @param {string} type - Doctype of the collection
+     *
+     * @returns {import("./types").CozyClientDocument[]} Array of documents or null if the collection does not exist.
+     */
 
-function formatRelativeTime(unit, count, numeric = "always", narrow = false) {
-  const units = {
-    years: ["year", "yr."],
-    quarters: ["quarter", "qtr."],
-    months: ["month", "mo."],
-    weeks: ["week", "wk."],
-    days: ["day", "day", "days"],
-    hours: ["hour", "hr."],
-    minutes: ["minute", "min."],
-    seconds: ["second", "sec."],
-  };
+  }, {
+    key: "getCollectionFromState",
+    value: function getCollectionFromState(type) {
+      try {
+        return (0, _store.getCollectionFromState)(this.store.getState(), type);
+      } catch (e) {
+        _logger.default.warn('Could not getCollectionFromState', type, e.message);
 
-  const lastable = ["hours", "minutes", "seconds"].indexOf(unit) === -1;
-
-  if (numeric === "auto" && lastable) {
-    const isDay = unit === "days";
-    switch (count) {
-      case 1:
-        return isDay ? "tomorrow" : `next ${units[unit][0]}`;
-      case -1:
-        return isDay ? "yesterday" : `last ${units[unit][0]}`;
-      case 0:
-        return isDay ? "today" : `this ${units[unit][0]}`;
-      default: // fall through
-    }
-  }
-
-  const isInPast = Object.is(count, -0) || count < 0,
-    fmtValue = Math.abs(count),
-    singular = fmtValue === 1,
-    lilUnits = units[unit],
-    fmtUnit = narrow
-      ? singular
-        ? lilUnits[1]
-        : lilUnits[2] || lilUnits[1]
-      : singular
-      ? units[unit][0]
-      : unit;
-  return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`;
-}
-
-function formatString(knownFormat) {
-  // these all have the offsets removed because we don't have access to them
-  // without all the intl stuff this is backfilling
-  const filtered = Object(_util_js__WEBPACK_IMPORTED_MODULE_1__["pick"])(knownFormat, [
-      "weekday",
-      "era",
-      "year",
-      "month",
-      "day",
-      "hour",
-      "minute",
-      "second",
-      "timeZoneName",
-      "hourCycle",
-    ]),
-    key = stringify(filtered),
-    dateTimeHuge = "EEEE, LLLL d, yyyy, h:mm a";
-  switch (key) {
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["DATE_SHORT"]):
-      return "M/d/yyyy";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["DATE_MED"]):
-      return "LLL d, yyyy";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["DATE_MED_WITH_WEEKDAY"]):
-      return "EEE, LLL d, yyyy";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["DATE_FULL"]):
-      return "LLLL d, yyyy";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["DATE_HUGE"]):
-      return "EEEE, LLLL d, yyyy";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["TIME_SIMPLE"]):
-      return "h:mm a";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["TIME_WITH_SECONDS"]):
-      return "h:mm:ss a";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["TIME_WITH_SHORT_OFFSET"]):
-      return "h:mm a";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["TIME_WITH_LONG_OFFSET"]):
-      return "h:mm a";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["TIME_24_SIMPLE"]):
-      return "HH:mm";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["TIME_24_WITH_SECONDS"]):
-      return "HH:mm:ss";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["TIME_24_WITH_SHORT_OFFSET"]):
-      return "HH:mm";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["TIME_24_WITH_LONG_OFFSET"]):
-      return "HH:mm";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["DATETIME_SHORT"]):
-      return "M/d/yyyy, h:mm a";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["DATETIME_MED"]):
-      return "LLL d, yyyy, h:mm a";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["DATETIME_FULL"]):
-      return "LLLL d, yyyy, h:mm a";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["DATETIME_HUGE"]):
-      return dateTimeHuge;
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["DATETIME_SHORT_WITH_SECONDS"]):
-      return "M/d/yyyy, h:mm:ss a";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["DATETIME_MED_WITH_SECONDS"]):
-      return "LLL d, yyyy, h:mm:ss a";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["DATETIME_MED_WITH_WEEKDAY"]):
-      return "EEE, d LLL yyyy, h:mm a";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["DATETIME_FULL_WITH_SECONDS"]):
-      return "LLLL d, yyyy, h:mm:ss a";
-    case stringify(_formats_js__WEBPACK_IMPORTED_MODULE_0__["DATETIME_HUGE_WITH_SECONDS"]):
-      return "EEEE, LLLL d, yyyy, h:mm:ss a";
-    default:
-      return dateTimeHuge;
-  }
-}
+        return null;
+      }
+    }
+    /**
+     * Get a document from the internal store.
+     *
+     * @param {string} type - Doctype of the document
+     * @param {string} id   - Id of the document
+     *
+     * @returns {import("./types").CozyClientDocument} Document or null if the object does not exist.
+     */
 
+  }, {
+    key: "getDocumentFromState",
+    value: function getDocumentFromState(type, id) {
+      try {
+        return (0, _store.getDocumentFromState)(this.store.getState(), type, id);
+      } catch (e) {
+        _logger.default.warn('Could not getDocumentFromState', type, id, e.message);
 
-/***/ }),
-/* 256 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+        return null;
+      }
+    }
+    /**
+     * Get a query from the internal store.
+     *
+     * @param {string} id - Id of the query (set via Query.props.as)
+     * @param {object} options - Options
+     * @param {boolean} [options.hydrated] - Whether documents should be returned already hydrated (default: false)
+     * @param  {object} [options.singleDocData] - If true, the "data" returned will be
+     * a single doc instead of an array for single doc queries. Defaults to false for backward
+     * compatibility but will be set to true in the future.
+     *
+     * @returns {import("./types").QueryState} - Query state or null if it does not exist.
+     */
 
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DATE_SHORT", function() { return DATE_SHORT; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DATE_MED", function() { return DATE_MED; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DATE_MED_WITH_WEEKDAY", function() { return DATE_MED_WITH_WEEKDAY; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DATE_FULL", function() { return DATE_FULL; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DATE_HUGE", function() { return DATE_HUGE; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TIME_SIMPLE", function() { return TIME_SIMPLE; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TIME_WITH_SECONDS", function() { return TIME_WITH_SECONDS; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TIME_WITH_SHORT_OFFSET", function() { return TIME_WITH_SHORT_OFFSET; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TIME_WITH_LONG_OFFSET", function() { return TIME_WITH_LONG_OFFSET; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TIME_24_SIMPLE", function() { return TIME_24_SIMPLE; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TIME_24_WITH_SECONDS", function() { return TIME_24_WITH_SECONDS; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TIME_24_WITH_SHORT_OFFSET", function() { return TIME_24_WITH_SHORT_OFFSET; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TIME_24_WITH_LONG_OFFSET", function() { return TIME_24_WITH_LONG_OFFSET; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DATETIME_SHORT", function() { return DATETIME_SHORT; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DATETIME_SHORT_WITH_SECONDS", function() { return DATETIME_SHORT_WITH_SECONDS; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DATETIME_MED", function() { return DATETIME_MED; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DATETIME_MED_WITH_SECONDS", function() { return DATETIME_MED_WITH_SECONDS; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DATETIME_MED_WITH_WEEKDAY", function() { return DATETIME_MED_WITH_WEEKDAY; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DATETIME_FULL", function() { return DATETIME_FULL; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DATETIME_FULL_WITH_SECONDS", function() { return DATETIME_FULL_WITH_SECONDS; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DATETIME_HUGE", function() { return DATETIME_HUGE; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DATETIME_HUGE_WITH_SECONDS", function() { return DATETIME_HUGE_WITH_SECONDS; });
-/**
- * @private
- */
+  }, {
+    key: "getQueryFromState",
+    value: function getQueryFromState(id) {
+      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+      var hydrated = options.hydrated || false;
+      var singleDocData = options.singleDocData || false;
 
-const n = "numeric",
-  s = "short",
-  l = "long";
+      try {
+        var queryResults = (0, _store.getQueryFromState)(this.store.getState(), id);
+        var doctype = queryResults.definition && queryResults.definition.doctype;
+        var isSingleDocQuery = queryResults.definition && queryResults.definition.id;
 
-const DATE_SHORT = {
-  year: n,
-  month: n,
-  day: n,
-};
+        if (!hydrated && !singleDocData) {
+          // Early return let's us preserve reference equality in the simple case
+          return queryResults;
+        }
 
-const DATE_MED = {
-  year: n,
-  month: s,
-  day: n,
-};
+        var data = hydrated && doctype ? this.hydrateDocuments(doctype, queryResults.data) : queryResults.data;
+        return _objectSpread(_objectSpread({}, queryResults), {}, {
+          data: isSingleDocQuery && singleDocData ? data[0] : data
+        });
+      } catch (e) {
+        _logger.default.warn("Could not get query from state. queryId: ".concat(id, ", error: ").concat(e.message));
 
-const DATE_MED_WITH_WEEKDAY = {
-  year: n,
-  month: s,
-  day: n,
-  weekday: s,
-};
+        return null;
+      }
+    }
+    /**
+     * Executes a query and returns the results from internal store.
+     *
+     * Can be useful in pure JS context (without React)
+     * Has a behavior close to <Query /> or useQuery
+     *
+     * @param {object} query - Query with definition and options
+     * @param {QueryDefinition} query.definition - Query Definition
+     * @param {import("./types").QueryOptions} query.options - Query Options
+     * @returns {Promise<import("./types").QueryState>} Query state
+     */
 
-const DATE_FULL = {
-  year: n,
-  month: l,
-  day: n,
-};
+  }, {
+    key: "register",
 
-const DATE_HUGE = {
-  year: n,
-  month: l,
-  day: n,
-  weekday: l,
-};
+    /**
+     * Performs a complete OAuth flow using a Cordova webview
+     * or React Native WebView for auth.
+     * The `register` method's name has been chosen for compat reasons with the Authentication compo.
+     *
+     * @param   {string} cozyURL Receives the URL of the cozy instance.
+     * @returns {object}   Contains the fetched token and the client information.
+     */
+    value: function register(cozyURL) {
+      var stackClient = this.getStackClient();
+      stackClient.setUri(cozyURL);
+      return this.startOAuthFlow(_mobile.authFunction);
+    }
+  }, {
+    key: "isReactNative",
+    value: function isReactNative() {
+      return typeof navigator != 'undefined' && navigator.product == 'ReactNative';
+    }
+    /**
+     * Performs a complete OAuth flow, including updating the internal token at the end.
+     *
+     * @param   {import("./types").OpenURLCallback} openURLCallback Receives the URL to present to the user as a parameter, and should return a promise that resolves with the URL the user was redirected to after accepting the permissions.
+     * @returns {Promise<object>} Contains the fetched token and the client information. These should be stored and used to restore the client.
+     */
 
-const TIME_SIMPLE = {
-  hour: n,
-  minute: n,
-};
+  }, {
+    key: "startOAuthFlow",
+    value: function () {
+      var _startOAuthFlow = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14(openURLCallback) {
+        var stackClient;
+        return _regenerator.default.wrap(function _callee14$(_context14) {
+          while (1) {
+            switch (_context14.prev = _context14.next) {
+              case 0:
+                stackClient = this.getStackClient();
+                _context14.next = 3;
+                return stackClient.register();
 
-const TIME_WITH_SECONDS = {
-  hour: n,
-  minute: n,
-  second: n,
-};
+              case 3:
+                _context14.next = 5;
+                return this.certifyFlagship();
 
-const TIME_WITH_SHORT_OFFSET = {
-  hour: n,
-  minute: n,
-  second: n,
-  timeZoneName: s,
-};
+              case 5:
+                return _context14.abrupt("return", this.authorize({
+                  openURLCallback: openURLCallback
+                }));
 
-const TIME_WITH_LONG_OFFSET = {
-  hour: n,
-  minute: n,
-  second: n,
-  timeZoneName: l,
-};
+              case 6:
+              case "end":
+                return _context14.stop();
+            }
+          }
+        }, _callee14, this);
+      }));
 
-const TIME_24_SIMPLE = {
-  hour: n,
-  minute: n,
-  hourCycle: "h23",
-};
+      function startOAuthFlow(_x16) {
+        return _startOAuthFlow.apply(this, arguments);
+      }
 
-const TIME_24_WITH_SECONDS = {
-  hour: n,
-  minute: n,
-  second: n,
-  hourCycle: "h23",
-};
+      return startOAuthFlow;
+    }()
+    /**
+     * Perform the Flagship certification process for verifying that the current running app is a genuine Cozy application
+     *
+     * This mechanism is described in https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/flagship-certification/README.md
+     */
 
-const TIME_24_WITH_SHORT_OFFSET = {
-  hour: n,
-  minute: n,
-  second: n,
-  hourCycle: "h23",
-  timeZoneName: s,
-};
+  }, {
+    key: "certifyFlagship",
+    value: function () {
+      var _certifyFlagship2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {
+        var stackClient;
+        return _regenerator.default.wrap(function _callee15$(_context15) {
+          while (1) {
+            switch (_context15.prev = _context15.next) {
+              case 0:
+                stackClient = this.getStackClient();
 
-const TIME_24_WITH_LONG_OFFSET = {
-  hour: n,
-  minute: n,
-  second: n,
-  hourCycle: "h23",
-  timeZoneName: l,
-};
+                if (!stackClient.oauthOptions.shouldRequireFlagshipPermissions) {
+                  _context15.next = 4;
+                  break;
+                }
 
-const DATETIME_SHORT = {
-  year: n,
-  month: n,
-  day: n,
-  hour: n,
-  minute: n,
-};
+                _context15.next = 4;
+                return (0, _flagshipCertification.certifyFlagship)(stackClient.oauthOptions.certificationConfig, this);
 
-const DATETIME_SHORT_WITH_SECONDS = {
-  year: n,
-  month: n,
-  day: n,
-  hour: n,
-  minute: n,
-  second: n,
-};
+              case 4:
+              case "end":
+                return _context15.stop();
+            }
+          }
+        }, _callee15, this);
+      }));
 
-const DATETIME_MED = {
-  year: n,
-  month: s,
-  day: n,
-  hour: n,
-  minute: n,
-};
+      function certifyFlagship() {
+        return _certifyFlagship2.apply(this, arguments);
+      }
 
-const DATETIME_MED_WITH_SECONDS = {
-  year: n,
-  month: s,
-  day: n,
-  hour: n,
-  minute: n,
-  second: n,
-};
+      return certifyFlagship;
+    }()
+    /**
+     * Creates an OAuth token with needed permissions for the current client.
+     * The authorization page URL generation can be overriding by passing a function pointer as `openURLCallback` parameter
+     * It is possible to skip the session creation process (when using an in-app browser) by passing a sessionCode (see https://docs.cozy.io/en/cozy-stack/auth/#post-authsession_code)
+     *
+     * @param {object} [options] - Authorization options
+     * @param {import("./types").OpenURLCallback} [options.openURLCallback] - Receives the URL to present to the user as a parameter, and should return a promise that resolves with the URL the user was redirected to after accepting the permissions.
+     * @param {import("./types").SessionCode} [options.sessionCode] - session code than can be added to the authorization URL to automatically create the session.
+     * @param {import("./types").PKCECodes} [options.pkceCodes] - code verifier and a code challenge that should be used in the PKCE verification process.
+     * @returns {Promise<object>} Contains the fetched token and the client information. These should be stored and used to restore the client.
+     */
 
-const DATETIME_MED_WITH_WEEKDAY = {
-  year: n,
-  month: s,
-  day: n,
-  weekday: s,
-  hour: n,
-  minute: n,
-};
+  }, {
+    key: "authorize",
+    value: function () {
+      var _authorize = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {
+        var _ref7,
+            _ref7$openURLCallback,
+            openURLCallback,
+            _ref7$sessionCode,
+            sessionCode,
+            _ref7$pkceCodes,
+            pkceCodes,
+            codeVerifier,
+            codeChallenge,
+            stackClient,
+            stateCode,
+            url,
+            redirectedURL,
+            code,
+            token,
+            _stackClient,
+            _args16 = arguments;
 
-const DATETIME_FULL = {
-  year: n,
-  month: l,
-  day: n,
-  hour: n,
-  minute: n,
-  timeZoneName: s,
-};
+        return _regenerator.default.wrap(function _callee16$(_context16) {
+          while (1) {
+            switch (_context16.prev = _context16.next) {
+              case 0:
+                _ref7 = _args16.length > 0 && _args16[0] !== undefined ? _args16[0] : {}, _ref7$openURLCallback = _ref7.openURLCallback, openURLCallback = _ref7$openURLCallback === void 0 ? _mobile.authFunction : _ref7$openURLCallback, _ref7$sessionCode = _ref7.sessionCode, sessionCode = _ref7$sessionCode === void 0 ? undefined : _ref7$sessionCode, _ref7$pkceCodes = _ref7.pkceCodes, pkceCodes = _ref7$pkceCodes === void 0 ? {} : _ref7$pkceCodes;
+                _context16.prev = 1;
+                codeVerifier = pkceCodes.codeVerifier, codeChallenge = pkceCodes.codeChallenge;
+                stackClient = this.getStackClient();
+                stateCode = stackClient.generateStateCode();
+                url = stackClient.getAuthCodeURL({
+                  stateCode: stateCode,
+                  scopes: undefined,
+                  sessionCode: sessionCode,
+                  codeChallenge: codeChallenge
+                });
+                _context16.next = 8;
+                return openURLCallback(url);
 
-const DATETIME_FULL_WITH_SECONDS = {
-  year: n,
-  month: l,
-  day: n,
-  hour: n,
-  minute: n,
-  second: n,
-  timeZoneName: s,
-};
+              case 8:
+                redirectedURL = _context16.sent;
+                code = stackClient.getAccessCodeFromURL(redirectedURL, stateCode);
+                _context16.next = 12;
+                return stackClient.fetchAccessToken(code, undefined, undefined, codeVerifier);
 
-const DATETIME_HUGE = {
-  year: n,
-  month: l,
-  day: n,
-  weekday: l,
-  hour: n,
-  minute: n,
-  timeZoneName: l,
-};
+              case 12:
+                token = _context16.sent;
+                stackClient.setToken(token);
+                return _context16.abrupt("return", {
+                  token: token,
+                  infos: stackClient.oauthOptions,
+                  client: stackClient.oauthOptions // for compat with Authentication comp reasons
 
-const DATETIME_HUGE_WITH_SECONDS = {
-  year: n,
-  month: l,
-  day: n,
-  weekday: l,
-  hour: n,
-  minute: n,
-  second: n,
-  timeZoneName: l,
-};
+                });
 
+              case 17:
+                _context16.prev = 17;
+                _context16.t0 = _context16["catch"](1);
 
-/***/ }),
-/* 257 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+                /* if REGISTRATION_ABORT is emited, we have to unregister the client. */
+                if (_context16.t0.message === _const.REGISTRATION_ABORT) {
+                  _stackClient = this.getStackClient();
 
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isUndefined", function() { return isUndefined; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNumber", function() { return isNumber; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isInteger", function() { return isInteger; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isString", function() { return isString; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isDate", function() { return isDate; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasRelative", function() { return hasRelative; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "maybeArray", function() { return maybeArray; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bestBy", function() { return bestBy; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pick", function() { return pick; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasOwnProperty", function() { return hasOwnProperty; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "integerBetween", function() { return integerBetween; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "floorMod", function() { return floorMod; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "padStart", function() { return padStart; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseInteger", function() { return parseInteger; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseFloating", function() { return parseFloating; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseMillis", function() { return parseMillis; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "roundTo", function() { return roundTo; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isLeapYear", function() { return isLeapYear; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "daysInYear", function() { return daysInYear; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "daysInMonth", function() { return daysInMonth; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "objToLocalTS", function() { return objToLocalTS; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "weeksInWeekYear", function() { return weeksInWeekYear; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "untruncateYear", function() { return untruncateYear; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseZoneInfo", function() { return parseZoneInfo; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "signedOffset", function() { return signedOffset; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "asNumber", function() { return asNumber; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "normalizeObject", function() { return normalizeObject; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "formatOffset", function() { return formatOffset; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeObject", function() { return timeObject; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ianaRegex", function() { return ianaRegex; });
-/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(253);
-/*
-  This is just a junk drawer, containing anything used across multiple classes.
-  Because Luxon is small(ish), this should stay small and we won't worry about splitting
-  it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.
-*/
+                  _stackClient.unregister();
+                }
 
+                throw _context16.t0;
 
+              case 21:
+              case "end":
+                return _context16.stop();
+            }
+          }
+        }, _callee16, this, [[1, 17]]);
+      }));
 
-/**
- * @private
- */
+      function authorize() {
+        return _authorize.apply(this, arguments);
+      }
 
-// TYPES
-
-function isUndefined(o) {
-  return typeof o === "undefined";
-}
-
-function isNumber(o) {
-  return typeof o === "number";
-}
+      return authorize;
+    }()
+    /**
+     * Renews the token if, for instance, new permissions are required or token
+     * has expired.
+     *
+     * @returns {object}   Contains the fetched token and the client information.
+     */
 
-function isInteger(o) {
-  return typeof o === "number" && o % 1 === 0;
-}
+  }, {
+    key: "renewAuthorization",
+    value: function renewAuthorization() {
+      return this.authorize({
+        openURLCallback: _mobile.authFunction
+      });
+    }
+    /**
+     * Sets the internal store of the client. Use this when you want to have cozy-client's
+     * internal store colocated with your existing Redux store.
+     *
+     * Typically, you would need to do this only once in your application, this is why
+     * setStore throws if you do it twice. If you really need to set the store again,
+     * use options.force = true.
+     *
+     * @example
+     * ```
+     * const client = new CozyClient()
+     * const store = createStore(combineReducers({
+     *   todos: todoReducer,
+     *   cozy: client.reducer()
+     * })
+     * client.setStore(store)
+     * ```
+     *
+     * @param {import("./types").ReduxStore} store - A redux store
+     * @param {object} [options] - Options
+     * @param {boolean} [options.force] - Will deactivate throwing when client's store already exists
+     */
 
-function isString(o) {
-  return typeof o === "string";
-}
+  }, {
+    key: "setStore",
+    value: function setStore(store) {
+      var _ref8 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+          _ref8$force = _ref8.force,
+          force = _ref8$force === void 0 ? false : _ref8$force;
 
-function isDate(o) {
-  return Object.prototype.toString.call(o) === "[object Date]";
-}
+      if (store === undefined) {
+        throw new Error('Store is undefined');
+      } else if (this.store && !force) {
+        throw new Error("Client already has a store, it is forbidden to change store.\nsetStore must be called before any query is executed. Try to\ncall setStore earlier in your code, preferably just after the\ninstantiation of the client.");
+      }
 
-// CAPABILITIES
+      this.store = store;
+    }
+  }, {
+    key: "ensureStore",
+    value: function ensureStore() {
+      if (!this.store) {
+        this.setStore((0, _store.createStore)());
+      }
+    }
+    /**
+     * Returns whether the client has been revoked on the server
+     */
 
-function hasRelative() {
-  try {
-    return typeof Intl !== "undefined" && !!Intl.RelativeTimeFormat;
-  } catch (e) {
-    return false;
-  }
-}
+  }, {
+    key: "checkForRevocation",
+    value: function () {
+      var _checkForRevocation = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17() {
+        return _regenerator.default.wrap(function _callee17$(_context17) {
+          while (1) {
+            switch (_context17.prev = _context17.next) {
+              case 0:
+                if (!(this.stackClient instanceof _cozyStackClient.OAuthClient)) {
+                  _context17.next = 4;
+                  break;
+                }
 
-// OBJECTS AND ARRAYS
+                return _context17.abrupt("return", this.stackClient.checkForRevocation());
 
-function maybeArray(thing) {
-  return Array.isArray(thing) ? thing : [thing];
-}
+              case 4:
+                throw 'checkForRevocation is only implemented for OAutClient';
 
-function bestBy(arr, by, compare) {
-  if (arr.length === 0) {
-    return undefined;
-  }
-  return arr.reduce((best, next) => {
-    const pair = [by(next), next];
-    if (!best) {
-      return pair;
-    } else if (compare(best[0], pair[0]) === best[0]) {
-      return best;
-    } else {
-      return pair;
-    }
-  }, null)[1];
-}
+              case 5:
+              case "end":
+                return _context17.stop();
+            }
+          }
+        }, _callee17, this);
+      }));
 
-function pick(obj, keys) {
-  return keys.reduce((a, k) => {
-    a[k] = obj[k];
-    return a;
-  }, {});
-}
+      function checkForRevocation() {
+        return _checkForRevocation.apply(this, arguments);
+      }
 
-function hasOwnProperty(obj, prop) {
-  return Object.prototype.hasOwnProperty.call(obj, prop);
-}
+      return checkForRevocation;
+    }()
+    /** Sets public attribute and emits event related to revocation */
 
-// NUMBERS AND STRINGS
+  }, {
+    key: "handleRevocationChange",
+    value: function handleRevocationChange(state) {
+      if (state) {
+        this.isRevoked = true;
+        this.emit('revoked');
+      } else {
+        this.isRevoked = false;
+        this.emit('unrevoked');
+      }
+    }
+    /** Emits event when token is refreshed */
 
-function integerBetween(thing, bottom, top) {
-  return isInteger(thing) && thing >= bottom && thing <= top;
-}
+  }, {
+    key: "handleTokenRefresh",
+    value: function handleTokenRefresh(token) {
+      this.emit('tokenRefreshed');
 
-// x % n but takes the sign of n instead of x
-function floorMod(x, n) {
-  return x - n * Math.floor(x / n);
-}
+      if (this.options.onTokenRefresh) {
+        deprecatedHandler("Using onTokenRefresh is deprecated, please use events like this: cozyClient.on('tokenRefreshed', token => console.log('Token has been refreshed', token)). https://git.io/fj3M3");
+        this.options.onTokenRefresh(token);
+      }
+    }
+    /**
+     * If no stack client has been passed in options, creates a default stack
+     * client and attaches handlers for revocation and token refresh.
+     * If a stackClient has been passed in options, ensure it has handlers for
+     * revocation and token refresh.
+     *
+     * If `oauth` options are passed, stackClient is an OAuthStackClient.
+     */
 
-function padStart(input, n = 2) {
-  const isNeg = input < 0;
-  let padded;
-  if (isNeg) {
-    padded = "-" + ("" + -input).padStart(n, "0");
-  } else {
-    padded = ("" + input).padStart(n, "0");
-  }
-  return padded;
-}
+  }, {
+    key: "createClient",
+    value: function createClient() {
+      if (this.options.client) {
+        _logger.default.warn('CozyClient: Using options.client is deprecated, please use options.stackClient.');
+      }
 
-function parseInteger(string) {
-  if (isUndefined(string) || string === null || string === "") {
-    return undefined;
-  } else {
-    return parseInt(string, 10);
-  }
-}
+      var warningForCustomHandlers = this.options.warningForCustomHandlers !== undefined ? this.options.warningForCustomHandlers : true;
+      var stackClient = this.options.client || this.options.stackClient;
+      var handlers = {
+        onRevocationChange: this.handleRevocationChange,
+        onTokenRefresh: this.handleTokenRefresh
+      };
 
-function parseFloating(string) {
-  if (isUndefined(string) || string === null || string === "") {
-    return undefined;
-  } else {
-    return parseFloat(string);
-  }
-}
+      if (stackClient) {
+        this.stackClient = stackClient;
 
-function parseMillis(fraction) {
-  // Return undefined (instead of 0) in these cases, where fraction is not set
-  if (isUndefined(fraction) || fraction === null || fraction === "") {
-    return undefined;
-  } else {
-    const f = parseFloat("0." + fraction) * 1000;
-    return Math.floor(f);
-  }
-}
+        if (!stackClient.options) {
+          stackClient.options = {};
+        }
 
-function roundTo(number, digits, towardZero = false) {
-  const factor = 10 ** digits,
-    rounder = towardZero ? Math.trunc : Math.round;
-  return rounder(number * factor) / factor;
-}
+        for (var _i2 = 0, _Object$keys2 = Object.keys(handlers); _i2 < _Object$keys2.length; _i2++) {
+          var handlerName = _Object$keys2[_i2];
 
-// DATE BASICS
+          if (!stackClient.options[handlerName]) {
+            stackClient.options[handlerName] = handlers[handlerName];
+          } else {
+            if (warningForCustomHandlers) {
+              _logger.default.warn("You passed a stackClient with its own ".concat(handlerName, ". It is not supported, unexpected things might happen."));
+            }
+          }
+        }
+      } else {
+        var options = _objectSpread(_objectSpread({}, this.options), handlers);
 
-function isLeapYear(year) {
-  return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
-}
+        this.stackClient = this.options.oauth ? new _cozyStackClient.OAuthClient(options) : new _cozyStackClient.default(options);
+      }
 
-function daysInYear(year) {
-  return isLeapYear(year) ? 366 : 365;
-}
+      this.client = new Proxy(this.stackClient, deprecatedHandler('Using cozyClient.client is deprecated, please use cozyClient.stackClient.'));
+    }
+  }, {
+    key: "getClient",
+    value: function getClient() {
+      _logger.default.warn('CozyClient: getClient() is deprecated, please use getStackClient().');
 
-function daysInMonth(year, month) {
-  const modMonth = floorMod(month - 1, 12) + 1,
-    modYear = year + (month - modMonth) / 12;
+      return this.getStackClient();
+    }
+  }, {
+    key: "getStackClient",
+    value: function getStackClient() {
+      if (!this.stackClient) {
+        this.createClient();
+      }
 
-  if (modMonth === 2) {
-    return isLeapYear(modYear) ? 29 : 28;
-  } else {
-    return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];
-  }
-}
+      return this.stackClient;
+    }
+  }, {
+    key: "reducer",
+    value: function reducer() {
+      return _store.default;
+    }
+  }, {
+    key: "dispatch",
+    value: function dispatch(action) {
+      return this.store.dispatch(action);
+    }
+    /**
+     * getInstanceOptions - Returns current instance options, such as domain or app slug
+     *
+     * @returns {object}
+     */
 
-// covert a calendar object to a local timestamp (epoch, but with the offset baked in)
-function objToLocalTS(obj) {
-  let d = Date.UTC(
-    obj.year,
-    obj.month - 1,
-    obj.day,
-    obj.hour,
-    obj.minute,
-    obj.second,
-    obj.millisecond
-  );
+  }, {
+    key: "getInstanceOptions",
+    value: function getInstanceOptions() {
+      return this.instanceOptions;
+    }
+    /**
+     * loadInstanceOptionsFromDOM - Loads the dataset injected by the Stack in web pages and exposes it through getInstanceOptions
+     *
+     * @param {string} [selector=[role=application]] A selector for the node that holds the dataset to load
+     *
+     * @returns {void}
+     */
 
-  // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that
-  if (obj.year < 100 && obj.year >= 0) {
-    d = new Date(d);
-    d.setUTCFullYear(d.getUTCFullYear() - 1900);
-  }
-  return +d;
-}
+  }, {
+    key: "loadInstanceOptionsFromDOM",
+    value: function loadInstanceOptionsFromDOM() {
+      var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '[role=application]';
+      var root = document.querySelector(selector);
 
-function weeksInWeekYear(weekYear) {
-  const p1 =
-      (weekYear +
-        Math.floor(weekYear / 4) -
-        Math.floor(weekYear / 100) +
-        Math.floor(weekYear / 400)) %
-      7,
-    last = weekYear - 1,
-    p2 = (last + Math.floor(last / 4) - Math.floor(last / 100) + Math.floor(last / 400)) % 7;
-  return p1 === 4 || p2 === 3 ? 53 : 52;
-}
+      if (!(root instanceof HTMLElement)) {
+        throw new Error('The selector that is passed does not return an HTMLElement');
+      }
 
-function untruncateYear(year) {
-  if (year > 99) {
-    return year;
-  } else return year > 60 ? 1900 + year : 2000 + year;
-}
+      var _root$dataset = root.dataset,
+          _root$dataset$cozy = _root$dataset.cozy,
+          cozy = _root$dataset$cozy === void 0 ? '{}' : _root$dataset$cozy,
+          dataset = (0, _objectWithoutProperties2.default)(_root$dataset, ["cozy"]);
+      this.instanceOptions = _objectSpread(_objectSpread({}, JSON.parse(cozy)), dataset);
+      this.capabilities = this.instanceOptions.capabilities || null;
+    }
+    /**
+     * loadInstanceOptionsFromStack - Loads the instance options from cozy-stack and exposes it through getInstanceOptions
+     *
+     * This method is not iso with loadInstanceOptionsFromDOM for now.
+     *
+     * @returns {Promise<void>}
+     */
 
-// PARSING
+  }, {
+    key: "loadInstanceOptionsFromStack",
+    value: function () {
+      var _loadInstanceOptionsFromStack = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {
+        var _instanceData$attribu, _instanceData$attribu2;
 
-function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {
-  const date = new Date(ts),
-    intlOpts = {
-      hourCycle: "h23",
-      year: "numeric",
-      month: "2-digit",
-      day: "2-digit",
-      hour: "2-digit",
-      minute: "2-digit",
-    };
+        var _yield$this$query, data, _yield$this$query2, instanceData;
 
-  if (timeZone) {
-    intlOpts.timeZone = timeZone;
-  }
+        return _regenerator.default.wrap(function _callee18$(_context18) {
+          while (1) {
+            switch (_context18.prev = _context18.next) {
+              case 0:
+                _context18.next = 2;
+                return this.query((0, _dsl.Q)('io.cozy.settings').getById('io.cozy.settings.capabilities'));
 
-  const modified = { timeZoneName: offsetFormat, ...intlOpts };
+              case 2:
+                _yield$this$query = _context18.sent;
+                data = _yield$this$query.data;
+                _context18.next = 6;
+                return this.query((0, _dsl.Q)('io.cozy.settings').getById('io.cozy.settings.instance'));
 
-  const parsed = new Intl.DateTimeFormat(locale, modified)
-    .formatToParts(date)
-    .find((m) => m.type.toLowerCase() === "timezonename");
-  return parsed ? parsed.value : null;
-}
+              case 6:
+                _yield$this$query2 = _context18.sent;
+                instanceData = _yield$this$query2.data;
+                this.instanceOptions = {
+                  capabilities: data.attributes,
+                  locale: (_instanceData$attribu = instanceData.attributes) === null || _instanceData$attribu === void 0 ? void 0 : _instanceData$attribu.locale,
+                  tracking: (_instanceData$attribu2 = instanceData.attributes) === null || _instanceData$attribu2 === void 0 ? void 0 : _instanceData$attribu2.tracking
+                };
+                this.capabilities = this.instanceOptions.capabilities || null;
 
-// signedOffset('-5', '30') -> -330
-function signedOffset(offHourStr, offMinuteStr) {
-  let offHour = parseInt(offHourStr, 10);
+              case 10:
+              case "end":
+                return _context18.stop();
+            }
+          }
+        }, _callee18, this);
+      }));
 
-  // don't || this because we want to preserve -0
-  if (Number.isNaN(offHour)) {
-    offHour = 0;
-  }
+      function loadInstanceOptionsFromStack() {
+        return _loadInstanceOptionsFromStack.apply(this, arguments);
+      }
 
-  const offMin = parseInt(offMinuteStr, 10) || 0,
-    offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;
-  return offHour * 60 + offMinSigned;
-}
+      return loadInstanceOptionsFromStack;
+    }()
+    /**
+     * Directly set the data in the store, without using a query
+     * This is useful for cases like Pouch replication, which wants to
+     * set some data in the store.
+     *
+     * @param {object} data - Data that is inserted in the store. Shape: { doctype: [data] }
+     */
 
-// COERCION
+  }, {
+    key: "setData",
+    value: function setData(data) {
+      var _this10 = this;
 
-function asNumber(value) {
-  const numericValue = Number(value);
-  if (typeof value === "boolean" || value === "" || Number.isNaN(numericValue))
-    throw new _errors_js__WEBPACK_IMPORTED_MODULE_0__["InvalidArgumentError"](`Invalid unit value ${value}`);
-  return numericValue;
-}
+      this.ensureStore();
+      Object.entries(data).forEach(function (_ref9) {
+        var _ref10 = (0, _slicedToArray2.default)(_ref9, 2),
+            doctype = _ref10[0],
+            data = _ref10[1];
 
-function normalizeObject(obj, normalizer) {
-  const normalized = {};
-  for (const u in obj) {
-    if (hasOwnProperty(obj, u)) {
-      const v = obj[u];
-      if (v === undefined || v === null) continue;
-      normalized[normalizer(u)] = asNumber(v);
+        _this10.dispatch((0, _store.receiveQueryResult)(null, {
+          data: data
+        }));
+      });
     }
-  }
-  return normalized;
-}
-
-function formatOffset(offset, format) {
-  const hours = Math.trunc(Math.abs(offset / 60)),
-    minutes = Math.trunc(Math.abs(offset % 60)),
-    sign = offset >= 0 ? "+" : "-";
+    /**
+     * At any time put an error function
+     *
+     * @param {Function} [onError] - Set a callback for queries which are errored
+     * @throws {Error} onError should not have been defined yet
+     */
 
-  switch (format) {
-    case "short":
-      return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`;
-    case "narrow":
-      return `${sign}${hours}${minutes > 0 ? `:${minutes}` : ""}`;
-    case "techie":
-      return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`;
-    default:
-      throw new RangeError(`Value format ${format} is out of range for property format`);
-  }
-}
+  }, {
+    key: "setOnError",
+    value: function setOnError(onError) {
+      if (this.options && this.options.onError) {
+        throw new Error('On Error is already defined');
+      }
 
-function timeObject(obj) {
-  return pick(obj, ["hour", "minute", "second", "millisecond"]);
-}
+      this.options.onError = onError;
+    }
+  }, {
+    key: "toJSON",
+    value: function toJSON() {
+      return new _snapshots.CozyClient({
+        uri: this.options.uri
+      });
+    }
+    /**
+     *
+     * @param {import("./types").AppMetadata} newAppMetadata AppMetadata to update
+     */
 
-const ianaRegex =
-  /[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;
+  }, {
+    key: "setAppMetadata",
+    value: function setAppMetadata(newAppMetadata) {
+      this.appMetadata = _objectSpread(_objectSpread({}, this.appMetadata), newAppMetadata);
+    }
+  }], [{
+    key: "fromOldClient",
+    value: function fromOldClient(oldClient, options) {
+      return new CozyClient(_objectSpread({
+        uri: oldClient._url,
+        token: oldClient._token.token
+      }, options));
+    }
+    /**
+     * To help with the transition from cozy-client-js to cozy-client, it is possible to instantiate
+     * a client with an OAuth-based instance of cozy-client-js.
+     *
+     * Warning: unlike other instantiators, this one needs to be awaited.
+     *
+     * @param {import("./types").OldCozyClient} oldClient - An OAuth instance of the deprecated cozy-client
+     * @param {object} options - CozyStackClient options
+     * @returns {Promise<CozyClient>} An instance of a client, configured from the old client
+     */
 
+  }, {
+    key: "fromOldOAuthClient",
+    value: function () {
+      var _fromOldOAuthClient = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19(oldClient, options) {
+        var credentials, oauthOptions, client;
+        return _regenerator.default.wrap(function _callee19$(_context19) {
+          while (1) {
+            switch (_context19.prev = _context19.next) {
+              case 0:
+                if (!oldClient._oauth) {
+                  _context19.next = 12;
+                  break;
+                }
 
-/***/ }),
-/* 258 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+                _context19.next = 3;
+                return oldClient.authorize();
 
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Invalid; });
-class Invalid {
-  constructor(reason, explanation) {
-    this.reason = reason;
-    this.explanation = explanation;
-  }
+              case 3:
+                credentials = _context19.sent;
+                oauthOptions = {
+                  oauth: credentials.client,
+                  token: credentials.token,
+                  scope: credentials.token.scope
+                };
+                client = new CozyClient(_objectSpread(_objectSpread({
+                  uri: oldClient._url
+                }, oauthOptions), options));
 
-  toMessage() {
-    if (this.explanation) {
-      return `${this.reason}: ${this.explanation}`;
-    } else {
-      return this.reason;
-    }
-  }
-}
+                if (!client.loginPromise) {
+                  _context19.next = 9;
+                  break;
+                }
 
+                _context19.next = 9;
+                return client.loginPromise;
 
-/***/ }),
-/* 259 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+              case 9:
+                return _context19.abrupt("return", client);
 
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Locale; });
-/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(257);
-/* harmony import */ var _english_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(255);
-/* harmony import */ var _settings_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(260);
-/* harmony import */ var _datetime_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(251);
-/* harmony import */ var _zones_IANAZone_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(263);
+              case 12:
+                throw new Error('Cannot instantiate a new client: old client is not an OAuth client. CozyClient.fromOldClient might be more suitable.');
 
+              case 13:
+              case "end":
+                return _context19.stop();
+            }
+          }
+        }, _callee19);
+      }));
 
+      function fromOldOAuthClient(_x17, _x18) {
+        return _fromOldOAuthClient.apply(this, arguments);
+      }
 
+      return fromOldOAuthClient;
+    }()
+    /**
+     * In konnector/service context, CozyClient can be instantiated from
+     * environment variables
+     *
+     * @param  {import("./types").NodeEnvironment} [envArg]  - The environment
+     * @param  {object} options - Options
+     * @returns {CozyClient}
+     */
 
+  }, {
+    key: "fromEnv",
+    value: function fromEnv(envArg) {
+      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+      var env = envArg || (typeof process !== 'undefined' ? process.env : {});
+      var COZY_URL = env.COZY_URL,
+          COZY_CREDENTIALS = env.COZY_CREDENTIALS;
 
+      if (!COZY_URL || !COZY_CREDENTIALS) {
+        throw new Error('Env used to instantiate CozyClient must have COZY_URL and COZY_CREDENTIALS');
+      }
 
-// todo - remap caching
+      try {
+        options.oauth = JSON.parse(COZY_CREDENTIALS);
+      } catch (err) {
+        options.token = COZY_CREDENTIALS.trim();
+      }
 
-let intlLFCache = {};
-function getCachedLF(locString, opts = {}) {
-  const key = JSON.stringify([locString, opts]);
-  let dtf = intlLFCache[key];
-  if (!dtf) {
-    dtf = new Intl.ListFormat(locString, opts);
-    intlLFCache[key] = dtf;
-  }
-  return dtf;
-}
+      options.uri = COZY_URL.trim();
+      return new CozyClient(_objectSpread({}, options));
+    }
+    /**
+     * When used from an app, CozyClient can be instantiated from the data injected by the stack in
+     * the DOM.
+     *
+     * @param  {object}   options  - CozyClient constructor options
+     * @param  {string}   selector - Options
+     * @returns {CozyClient} - CozyClient instance
+     */
 
-let intlDTCache = {};
-function getCachedDTF(locString, opts = {}) {
-  const key = JSON.stringify([locString, opts]);
-  let dtf = intlDTCache[key];
-  if (!dtf) {
-    dtf = new Intl.DateTimeFormat(locString, opts);
-    intlDTCache[key] = dtf;
-  }
-  return dtf;
-}
+  }, {
+    key: "fromDOM",
+    value: function fromDOM() {
+      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+      var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '[role=application]';
+      var root = document.querySelector(selector);
 
-let intlNumCache = {};
-function getCachedINF(locString, opts = {}) {
-  const key = JSON.stringify([locString, opts]);
-  let inf = intlNumCache[key];
-  if (!inf) {
-    inf = new Intl.NumberFormat(locString, opts);
-    intlNumCache[key] = inf;
-  }
-  return inf;
-}
+      if (!(root instanceof HTMLElement)) {
+        throw new Error("Cannot find an HTMLElement corresponding to ".concat(selector));
+      }
 
-let intlRelCache = {};
-function getCachedRTF(locString, opts = {}) {
-  const { base, ...cacheKeyOpts } = opts; // exclude `base` from the options
-  const key = JSON.stringify([locString, cacheKeyOpts]);
-  let inf = intlRelCache[key];
-  if (!inf) {
-    inf = new Intl.RelativeTimeFormat(locString, opts);
-    intlRelCache[key] = inf;
-  }
-  return inf;
-}
+      if (!root || !root.dataset) {
+        throw new Error("Found no data in ".concat(selector, " to instantiate cozyClient"));
+      }
 
-let sysLocaleCache = null;
-function systemLocale() {
-  if (sysLocaleCache) {
-    return sysLocaleCache;
-  } else {
-    sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale;
-    return sysLocaleCache;
-  }
-}
+      var data = root.dataset.cozy ? JSON.parse(root.dataset.cozy) : _objectSpread({}, root.dataset);
+      var domain = data.domain,
+          token = data.token;
 
-function parseLocaleString(localeStr) {
-  // I really want to avoid writing a BCP 47 parser
-  // see, e.g. https://github.com/wooorm/bcp-47
-  // Instead, we'll do this:
+      if (!domain || !token) {
+        domain = domain || data.cozyDomain;
+        token = token || data.cozyToken;
+      }
 
-  // a) if the string has no -u extensions, just leave it alone
-  // b) if it does, use Intl to resolve everything
-  // c) if Intl fails, try again without the -u
+      if (!domain || !token) {
+        throw new Error("Found no data in ".concat(root.dataset, " to instantiate cozyClient"));
+      }
 
-  const uIndex = localeStr.indexOf("-u-");
-  if (uIndex === -1) {
-    return [localeStr];
-  } else {
-    let options;
-    const smaller = localeStr.substring(0, uIndex);
-    try {
-      options = getCachedDTF(localeStr).resolvedOptions();
-    } catch (e) {
-      options = getCachedDTF(smaller).resolvedOptions();
+      return new CozyClient(_objectSpread({
+        uri: "".concat(window.location.protocol, "//").concat(domain),
+        token: token,
+        capabilities: data.capabilities
+      }, options));
+    }
+  }, {
+    key: "registerHook",
+    value: function registerHook(doctype, name, fn) {
+      var hooks = CozyClient.hooks[doctype] = CozyClient.hooks[doctype] || {};
+      hooks[name] = hooks[name] || [];
+      hooks[name].push(fn);
     }
+  }]);
+  return CozyClient;
+}();
 
-    const { numberingSystem, calendar } = options;
-    // return the smaller one so that we can append the calendar and numbering overrides to it
-    return [smaller, numberingSystem, calendar];
-  }
-}
+CozyClient.hooks = CozyClient.hooks || {};
+CozyClient.fetchPolicies = _policies.default; //COZY_CLIENT_VERSION_PACKAGE in replaced by babel. See babel config
 
-function intlConfigString(localeStr, numberingSystem, outputCalendar) {
-  if (outputCalendar || numberingSystem) {
-    localeStr += "-u";
+CozyClient.version = "40.6.0";
 
-    if (outputCalendar) {
-      localeStr += `-ca-${outputCalendar}`;
-    }
+_microee.default.mixin(CozyClient);
 
-    if (numberingSystem) {
-      localeStr += `-nu-${numberingSystem}`;
-    }
-    return localeStr;
-  } else {
-    return localeStr;
-  }
-}
+var _default = CozyClient;
+exports.default = _default;
 
-function mapMonths(f) {
-  const ms = [];
-  for (let i = 1; i <= 12; i++) {
-    const dt = _datetime_js__WEBPACK_IMPORTED_MODULE_3__["default"].utc(2016, i, 1);
-    ms.push(f(dt));
-  }
-  return ms;
-}
+/***/ }),
+/* 280 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function mapWeekdays(f) {
-  const ms = [];
-  for (let i = 1; i <= 7; i++) {
-    const dt = _datetime_js__WEBPACK_IMPORTED_MODULE_3__["default"].utc(2016, 11, 13 + i);
-    ms.push(f(dt));
-  }
-  return ms;
-}
+var arrayWithHoles = __webpack_require__(281);
 
-function listStuff(loc, length, defaultOK, englishFn, intlFn) {
-  const mode = loc.listingMode(defaultOK);
+var iterableToArray = __webpack_require__(282);
 
-  if (mode === "error") {
-    return null;
-  } else if (mode === "en") {
-    return englishFn(length);
-  } else {
-    return intlFn(length);
-  }
-}
+var unsupportedIterableToArray = __webpack_require__(283);
 
-function supportsFastNumbers(loc) {
-  if (loc.numberingSystem && loc.numberingSystem !== "latn") {
-    return false;
-  } else {
-    return (
-      loc.numberingSystem === "latn" ||
-      !loc.locale ||
-      loc.locale.startsWith("en") ||
-      new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === "latn"
-    );
-  }
+var nonIterableRest = __webpack_require__(285);
+
+function _toArray(arr) {
+  return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();
 }
 
-/**
- * @private
- */
+module.exports = _toArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-class PolyNumberFormatter {
-  constructor(intl, forceSimple, opts) {
-    this.padTo = opts.padTo || 0;
-    this.floor = opts.floor || false;
+/***/ }),
+/* 281 */
+/***/ (function(module, exports) {
 
-    const { padTo, floor, ...otherOpts } = opts;
+function _arrayWithHoles(arr) {
+  if (Array.isArray(arr)) return arr;
+}
 
-    if (!forceSimple || Object.keys(otherOpts).length > 0) {
-      const intlOpts = { useGrouping: false, ...opts };
-      if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;
-      this.inf = getCachedINF(intl, intlOpts);
-    }
-  }
+module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-  format(i) {
-    if (this.inf) {
-      const fixed = this.floor ? Math.floor(i) : i;
-      return this.inf.format(fixed);
-    } else {
-      // to match the browser's numberformatter defaults
-      const fixed = this.floor ? Math.floor(i) : Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["roundTo"])(i, 3);
-      return Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["padStart"])(fixed, this.padTo);
-    }
-  }
+/***/ }),
+/* 282 */
+/***/ (function(module, exports) {
+
+function _iterableToArray(iter) {
+  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
 }
 
-/**
- * @private
- */
+module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-class PolyDateFormatter {
-  constructor(dt, intl, opts) {
-    this.opts = opts;
-
-    let z;
-    if (dt.zone.isUniversal) {
-      // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.
-      // That is why fixed-offset TZ is set to that unless it is:
-      // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.
-      // 2. Unsupported by the browser:
-      //    - some do not support Etc/
-      //    - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata
-      const gmtOffset = -1 * (dt.offset / 60);
-      const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`;
-      if (dt.offset !== 0 && _zones_IANAZone_js__WEBPACK_IMPORTED_MODULE_4__["default"].create(offsetZ).valid) {
-        z = offsetZ;
-        this.dt = dt;
-      } else {
-        // Not all fixed-offset zones like Etc/+4:30 are present in tzdata.
-        // So we have to make do. Two cases:
-        // 1. The format options tell us to show the zone. We can't do that, so the best
-        // we can do is format the date in UTC.
-        // 2. The format options don't tell us to show the zone. Then we can adjust them
-        // the time and tell the formatter to show it to us in UTC, so that the time is right
-        // and the bad zone doesn't show up.
-        z = "UTC";
-        if (opts.timeZoneName) {
-          this.dt = dt;
-        } else {
-          this.dt = dt.offset === 0 ? dt : _datetime_js__WEBPACK_IMPORTED_MODULE_3__["default"].fromMillis(dt.ts + dt.offset * 60 * 1000);
-        }
-      }
-    } else if (dt.zone.type === "system") {
-      this.dt = dt;
-    } else {
-      this.dt = dt;
-      z = dt.zone.name;
-    }
+/***/ }),
+/* 283 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    const intlOpts = { ...this.opts };
-    if (z) {
-      intlOpts.timeZone = z;
-    }
-    this.dtf = getCachedDTF(intl, intlOpts);
-  }
+var arrayLikeToArray = __webpack_require__(284);
 
-  format() {
-    return this.dtf.format(this.dt.toJSDate());
-  }
+function _unsupportedIterableToArray(o, minLen) {
+  if (!o) return;
+  if (typeof o === "string") return arrayLikeToArray(o, minLen);
+  var n = Object.prototype.toString.call(o).slice(8, -1);
+  if (n === "Object" && o.constructor) n = o.constructor.name;
+  if (n === "Map" || n === "Set") return Array.from(o);
+  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
+}
 
-  formatToParts() {
-    return this.dtf.formatToParts(this.dt.toJSDate());
-  }
+module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-  resolvedOptions() {
-    return this.dtf.resolvedOptions();
-  }
-}
+/***/ }),
+/* 284 */
+/***/ (function(module, exports) {
 
-/**
- * @private
- */
-class PolyRelFormatter {
-  constructor(intl, isEnglish, opts) {
-    this.opts = { style: "long", ...opts };
-    if (!isEnglish && Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["hasRelative"])()) {
-      this.rtf = getCachedRTF(intl, opts);
-    }
-  }
+function _arrayLikeToArray(arr, len) {
+  if (len == null || len > arr.length) len = arr.length;
 
-  format(count, unit) {
-    if (this.rtf) {
-      return this.rtf.format(count, unit);
-    } else {
-      return _english_js__WEBPACK_IMPORTED_MODULE_1__["formatRelativeTime"](unit, count, this.opts.numeric, this.opts.style !== "long");
-    }
+  for (var i = 0, arr2 = new Array(len); i < len; i++) {
+    arr2[i] = arr[i];
   }
 
-  formatToParts(count, unit) {
-    if (this.rtf) {
-      return this.rtf.formatToParts(count, unit);
-    } else {
-      return [];
-    }
-  }
+  return arr2;
 }
 
-/**
- * @private
- */
+module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-class Locale {
-  static fromOpts(opts) {
-    return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.defaultToEN);
-  }
+/***/ }),
+/* 285 */
+/***/ (function(module, exports) {
 
-  static create(locale, numberingSystem, outputCalendar, defaultToEN = false) {
-    const specifiedLocale = locale || _settings_js__WEBPACK_IMPORTED_MODULE_2__["default"].defaultLocale;
-    // the system locale is useful for human readable strings but annoying for parsing/formatting known formats
-    const localeR = specifiedLocale || (defaultToEN ? "en-US" : systemLocale());
-    const numberingSystemR = numberingSystem || _settings_js__WEBPACK_IMPORTED_MODULE_2__["default"].defaultNumberingSystem;
-    const outputCalendarR = outputCalendar || _settings_js__WEBPACK_IMPORTED_MODULE_2__["default"].defaultOutputCalendar;
-    return new Locale(localeR, numberingSystemR, outputCalendarR, specifiedLocale);
-  }
+function _nonIterableRest() {
+  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
 
-  static resetCache() {
-    sysLocaleCache = null;
-    intlDTCache = {};
-    intlNumCache = {};
-    intlRelCache = {};
-  }
+module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-  static fromObject({ locale, numberingSystem, outputCalendar } = {}) {
-    return Locale.create(locale, numberingSystem, outputCalendar);
-  }
+/***/ }),
+/* 286 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  constructor(locale, numbering, outputCalendar, specifiedLocale) {
-    const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale);
+var arrayWithHoles = __webpack_require__(281);
 
-    this.locale = parsedLocale;
-    this.numberingSystem = numbering || parsedNumberingSystem || null;
-    this.outputCalendar = outputCalendar || parsedOutputCalendar || null;
-    this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);
+var iterableToArrayLimit = __webpack_require__(287);
 
-    this.weekdaysCache = { format: {}, standalone: {} };
-    this.monthsCache = { format: {}, standalone: {} };
-    this.meridiemCache = null;
-    this.eraCache = {};
+var unsupportedIterableToArray = __webpack_require__(283);
 
-    this.specifiedLocale = specifiedLocale;
-    this.fastNumbersCached = null;
-  }
+var nonIterableRest = __webpack_require__(285);
 
-  get fastNumbers() {
-    if (this.fastNumbersCached == null) {
-      this.fastNumbersCached = supportsFastNumbers(this);
-    }
+function _slicedToArray(arr, i) {
+  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
+}
 
-    return this.fastNumbersCached;
-  }
+module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-  listingMode() {
-    const isActuallyEn = this.isEnglish();
-    const hasNoWeirdness =
-      (this.numberingSystem === null || this.numberingSystem === "latn") &&
-      (this.outputCalendar === null || this.outputCalendar === "gregory");
-    return isActuallyEn && hasNoWeirdness ? "en" : "intl";
-  }
+/***/ }),
+/* 287 */
+/***/ (function(module, exports) {
 
-  clone(alts) {
-    if (!alts || Object.getOwnPropertyNames(alts).length === 0) {
-      return this;
-    } else {
-      return Locale.create(
-        alts.locale || this.specifiedLocale,
-        alts.numberingSystem || this.numberingSystem,
-        alts.outputCalendar || this.outputCalendar,
-        alts.defaultToEN || false
-      );
-    }
-  }
+function _iterableToArrayLimit(arr, i) {
+  var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
 
-  redefaultToEN(alts = {}) {
-    return this.clone({ ...alts, defaultToEN: true });
-  }
+  if (_i == null) return;
+  var _arr = [];
+  var _n = true;
+  var _d = false;
 
-  redefaultToSystem(alts = {}) {
-    return this.clone({ ...alts, defaultToEN: false });
-  }
+  var _s, _e;
 
-  months(length, format = false, defaultOK = true) {
-    return listStuff(this, length, defaultOK, _english_js__WEBPACK_IMPORTED_MODULE_1__["months"], () => {
-      const intl = format ? { month: length, day: "numeric" } : { month: length },
-        formatStr = format ? "format" : "standalone";
-      if (!this.monthsCache[formatStr][length]) {
-        this.monthsCache[formatStr][length] = mapMonths((dt) => this.extract(dt, intl, "month"));
-      }
-      return this.monthsCache[formatStr][length];
-    });
-  }
+  try {
+    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
+      _arr.push(_s.value);
 
-  weekdays(length, format = false, defaultOK = true) {
-    return listStuff(this, length, defaultOK, _english_js__WEBPACK_IMPORTED_MODULE_1__["weekdays"], () => {
-      const intl = format
-          ? { weekday: length, year: "numeric", month: "long", day: "numeric" }
-          : { weekday: length },
-        formatStr = format ? "format" : "standalone";
-      if (!this.weekdaysCache[formatStr][length]) {
-        this.weekdaysCache[formatStr][length] = mapWeekdays((dt) =>
-          this.extract(dt, intl, "weekday")
-        );
-      }
-      return this.weekdaysCache[formatStr][length];
-    });
+      if (i && _arr.length === i) break;
+    }
+  } catch (err) {
+    _d = true;
+    _e = err;
+  } finally {
+    try {
+      if (!_n && _i["return"] != null) _i["return"]();
+    } finally {
+      if (_d) throw _e;
+    }
   }
 
-  meridiems(defaultOK = true) {
-    return listStuff(
-      this,
-      undefined,
-      defaultOK,
-      () => _english_js__WEBPACK_IMPORTED_MODULE_1__["meridiems"],
-      () => {
-        // In theory there could be aribitrary day periods. We're gonna assume there are exactly two
-        // for AM and PM. This is probably wrong, but it's makes parsing way easier.
-        if (!this.meridiemCache) {
-          const intl = { hour: "numeric", hourCycle: "h12" };
-          this.meridiemCache = [_datetime_js__WEBPACK_IMPORTED_MODULE_3__["default"].utc(2016, 11, 13, 9), _datetime_js__WEBPACK_IMPORTED_MODULE_3__["default"].utc(2016, 11, 13, 19)].map(
-            (dt) => this.extract(dt, intl, "dayperiod")
-          );
-        }
+  return _arr;
+}
 
-        return this.meridiemCache;
-      }
-    );
-  }
+module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-  eras(length, defaultOK = true) {
-    return listStuff(this, length, defaultOK, _english_js__WEBPACK_IMPORTED_MODULE_1__["eras"], () => {
-      const intl = { era: length };
+/***/ }),
+/* 288 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates
-      // to definitely enumerate them.
-      if (!this.eraCache[length]) {
-        this.eraCache[length] = [_datetime_js__WEBPACK_IMPORTED_MODULE_3__["default"].utc(-40, 1, 1), _datetime_js__WEBPACK_IMPORTED_MODULE_3__["default"].utc(2017, 1, 1)].map((dt) =>
-          this.extract(dt, intl, "era")
-        );
-      }
+var arrayWithoutHoles = __webpack_require__(289);
 
-      return this.eraCache[length];
-    });
-  }
+var iterableToArray = __webpack_require__(282);
 
-  extract(dt, intlOpts, field) {
-    const df = this.dtFormatter(dt, intlOpts),
-      results = df.formatToParts(),
-      matching = results.find((m) => m.type.toLowerCase() === field);
-    return matching ? matching.value : null;
-  }
+var unsupportedIterableToArray = __webpack_require__(283);
 
-  numberFormatter(opts = {}) {
-    // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)
-    // (in contrast, the rest of the condition is used heavily)
-    return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);
-  }
+var nonIterableSpread = __webpack_require__(290);
 
-  dtFormatter(dt, intlOpts = {}) {
-    return new PolyDateFormatter(dt, this.intl, intlOpts);
-  }
+function _toConsumableArray(arr) {
+  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
+}
 
-  relFormatter(opts = {}) {
-    return new PolyRelFormatter(this.intl, this.isEnglish(), opts);
-  }
+module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-  listFormatter(opts = {}) {
-    return getCachedLF(this.intl, opts);
-  }
+/***/ }),
+/* 289 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  isEnglish() {
-    return (
-      this.locale === "en" ||
-      this.locale.toLowerCase() === "en-us" ||
-      new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")
-    );
-  }
+var arrayLikeToArray = __webpack_require__(284);
 
-  equals(other) {
-    return (
-      this.locale === other.locale &&
-      this.numberingSystem === other.numberingSystem &&
-      this.outputCalendar === other.outputCalendar
-    );
-  }
+function _arrayWithoutHoles(arr) {
+  if (Array.isArray(arr)) return arrayLikeToArray(arr);
 }
 
+module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
 /***/ }),
-/* 260 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Settings; });
-/* harmony import */ var _zones_systemZone_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(261);
-/* harmony import */ var _zones_IANAZone_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(263);
-/* harmony import */ var _impl_locale_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(259);
-/* harmony import */ var _impl_zoneUtil_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(264);
-
+/* 290 */
+/***/ (function(module, exports) {
 
+function _nonIterableSpread() {
+  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
 
+module.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
+/***/ }),
+/* 291 */
+/***/ (function(module, exports, __webpack_require__) {
 
+var objectWithoutPropertiesLoose = __webpack_require__(292);
 
-let now = () => Date.now(),
-  defaultZone = "system",
-  defaultLocale = null,
-  defaultNumberingSystem = null,
-  defaultOutputCalendar = null,
-  throwOnInvalid;
+function _objectWithoutProperties(source, excluded) {
+  if (source == null) return {};
+  var target = objectWithoutPropertiesLoose(source, excluded);
+  var key, i;
 
-/**
- * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.
- */
-class Settings {
-  /**
-   * Get the callback for returning the current timestamp.
-   * @type {function}
-   */
-  static get now() {
-    return now;
-  }
+  if (Object.getOwnPropertySymbols) {
+    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
 
-  /**
-   * Set the callback for returning the current timestamp.
-   * The function should return a number, which will be interpreted as an Epoch millisecond count
-   * @type {function}
-   * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future
-   * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time
-   */
-  static set now(n) {
-    now = n;
+    for (i = 0; i < sourceSymbolKeys.length; i++) {
+      key = sourceSymbolKeys[i];
+      if (excluded.indexOf(key) >= 0) continue;
+      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
+      target[key] = source[key];
+    }
   }
 
-  /**
-   * Set the default time zone to create DateTimes in. Does not affect existing instances.
-   * Use the value "system" to reset this value to the system's time zone.
-   * @type {string}
-   */
-  static set defaultZone(zone) {
-    defaultZone = zone;
-  }
+  return target;
+}
 
-  /**
-   * Get the default time zone object currently used to create DateTimes. Does not affect existing instances.
-   * The default value is the system's time zone (the one set on the machine that runs this code).
-   * @type {Zone}
-   */
-  static get defaultZone() {
-    return Object(_impl_zoneUtil_js__WEBPACK_IMPORTED_MODULE_3__["normalizeZone"])(defaultZone, _zones_systemZone_js__WEBPACK_IMPORTED_MODULE_0__["default"].instance);
-  }
+module.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-  /**
-   * Get the default locale to create DateTimes with. Does not affect existing instances.
-   * @type {string}
-   */
-  static get defaultLocale() {
-    return defaultLocale;
-  }
+/***/ }),
+/* 292 */
+/***/ (function(module, exports) {
 
-  /**
-   * Set the default locale to create DateTimes with. Does not affect existing instances.
-   * @type {string}
-   */
-  static set defaultLocale(locale) {
-    defaultLocale = locale;
-  }
+function _objectWithoutPropertiesLoose(source, excluded) {
+  if (source == null) return {};
+  var target = {};
+  var sourceKeys = Object.keys(source);
+  var key, i;
 
-  /**
-   * Get the default numbering system to create DateTimes with. Does not affect existing instances.
-   * @type {string}
-   */
-  static get defaultNumberingSystem() {
-    return defaultNumberingSystem;
+  for (i = 0; i < sourceKeys.length; i++) {
+    key = sourceKeys[i];
+    if (excluded.indexOf(key) >= 0) continue;
+    target[key] = source[key];
   }
 
-  /**
-   * Set the default numbering system to create DateTimes with. Does not affect existing instances.
-   * @type {string}
-   */
-  static set defaultNumberingSystem(numberingSystem) {
-    defaultNumberingSystem = numberingSystem;
-  }
+  return target;
+}
 
-  /**
-   * Get the default output calendar to create DateTimes with. Does not affect existing instances.
-   * @type {string}
-   */
-  static get defaultOutputCalendar() {
-    return defaultOutputCalendar;
-  }
+module.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-  /**
-   * Set the default output calendar to create DateTimes with. Does not affect existing instances.
-   * @type {string}
-   */
-  static set defaultOutputCalendar(outputCalendar) {
-    defaultOutputCalendar = outputCalendar;
-  }
+/***/ }),
+/* 293 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  /**
-   * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals
-   * @type {boolean}
-   */
-  static get throwOnInvalid() {
-    return throwOnInvalid;
-  }
+// TODO(Babel 8): Remove this file.
 
-  /**
-   * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals
-   * @type {boolean}
-   */
-  static set throwOnInvalid(t) {
-    throwOnInvalid = t;
-  }
+var runtime = __webpack_require__(294)();
+module.exports = runtime;
 
-  /**
-   * Reset Luxon's global caches. Should only be necessary in testing scenarios.
-   * @return {void}
-   */
-  static resetCaches() {
-    _impl_locale_js__WEBPACK_IMPORTED_MODULE_2__["default"].resetCache();
-    _zones_IANAZone_js__WEBPACK_IMPORTED_MODULE_1__["default"].resetCache();
+// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=
+try {
+  regeneratorRuntime = runtime;
+} catch (accidentalStrictMode) {
+  if (typeof globalThis === "object") {
+    globalThis.regeneratorRuntime = runtime;
+  } else {
+    Function("r", "regeneratorRuntime = r")(runtime);
   }
 }
 
 
 /***/ }),
-/* 261 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return SystemZone; });
-/* harmony import */ var _impl_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(257);
-/* harmony import */ var _zone_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(262);
+/* 294 */
+/***/ (function(module, exports, __webpack_require__) {
 
+var _typeof = __webpack_require__(278)["default"];
 
+function _regeneratorRuntime() {
+  "use strict";
+  /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
 
-let singleton = null;
+  module.exports = _regeneratorRuntime = function _regeneratorRuntime() {
+    return exports;
+  }, module.exports.__esModule = true, module.exports["default"] = module.exports;
+  var exports = {},
+      Op = Object.prototype,
+      hasOwn = Op.hasOwnProperty,
+      $Symbol = "function" == typeof Symbol ? Symbol : {},
+      iteratorSymbol = $Symbol.iterator || "@@iterator",
+      asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator",
+      toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
 
-/**
- * Represents the local zone for this JavaScript environment.
- * @implements {Zone}
- */
-class SystemZone extends _zone_js__WEBPACK_IMPORTED_MODULE_1__["default"] {
-  /**
-   * Get a singleton instance of the local zone
-   * @return {SystemZone}
-   */
-  static get instance() {
-    if (singleton === null) {
-      singleton = new SystemZone();
-    }
-    return singleton;
+  function define(obj, key, value) {
+    return Object.defineProperty(obj, key, {
+      value: value,
+      enumerable: !0,
+      configurable: !0,
+      writable: !0
+    }), obj[key];
   }
 
-  /** @override **/
-  get type() {
-    return "system";
+  try {
+    define({}, "");
+  } catch (err) {
+    define = function define(obj, key, value) {
+      return obj[key] = value;
+    };
   }
 
-  /** @override **/
-  get name() {
-    return new Intl.DateTimeFormat().resolvedOptions().timeZone;
-  }
+  function wrap(innerFn, outerFn, self, tryLocsList) {
+    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,
+        generator = Object.create(protoGenerator.prototype),
+        context = new Context(tryLocsList || []);
+    return generator._invoke = function (innerFn, self, context) {
+      var state = "suspendedStart";
+      return function (method, arg) {
+        if ("executing" === state) throw new Error("Generator is already running");
 
-  /** @override **/
-  get isUniversal() {
-    return false;
-  }
+        if ("completed" === state) {
+          if ("throw" === method) throw arg;
+          return doneResult();
+        }
 
-  /** @override **/
-  offsetName(ts, { format, locale }) {
-    return Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_0__["parseZoneInfo"])(ts, format, locale);
-  }
+        for (context.method = method, context.arg = arg;;) {
+          var delegate = context.delegate;
 
-  /** @override **/
-  formatOffset(ts, format) {
-    return Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_0__["formatOffset"])(this.offset(ts), format);
-  }
+          if (delegate) {
+            var delegateResult = maybeInvokeDelegate(delegate, context);
 
-  /** @override **/
-  offset(ts) {
-    return -new Date(ts).getTimezoneOffset();
-  }
+            if (delegateResult) {
+              if (delegateResult === ContinueSentinel) continue;
+              return delegateResult;
+            }
+          }
+
+          if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) {
+            if ("suspendedStart" === state) throw state = "completed", context.arg;
+            context.dispatchException(context.arg);
+          } else "return" === context.method && context.abrupt("return", context.arg);
+          state = "executing";
+          var record = tryCatch(innerFn, self, context);
 
-  /** @override **/
-  equals(otherZone) {
-    return otherZone.type === "system";
+          if ("normal" === record.type) {
+            if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue;
+            return {
+              value: record.arg,
+              done: context.done
+            };
+          }
+
+          "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg);
+        }
+      };
+    }(innerFn, self, context), generator;
   }
 
-  /** @override **/
-  get isValid() {
-    return true;
+  function tryCatch(fn, obj, arg) {
+    try {
+      return {
+        type: "normal",
+        arg: fn.call(obj, arg)
+      };
+    } catch (err) {
+      return {
+        type: "throw",
+        arg: err
+      };
+    }
   }
-}
 
+  exports.wrap = wrap;
+  var ContinueSentinel = {};
 
-/***/ }),
-/* 262 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+  function Generator() {}
 
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Zone; });
-/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(253);
+  function GeneratorFunction() {}
 
+  function GeneratorFunctionPrototype() {}
 
-/**
- * @interface
- */
-class Zone {
-  /**
-   * The type of zone
-   * @abstract
-   * @type {string}
-   */
-  get type() {
-    throw new _errors_js__WEBPACK_IMPORTED_MODULE_0__["ZoneIsAbstractError"]();
-  }
+  var IteratorPrototype = {};
+  define(IteratorPrototype, iteratorSymbol, function () {
+    return this;
+  });
+  var getProto = Object.getPrototypeOf,
+      NativeIteratorPrototype = getProto && getProto(getProto(values([])));
+  NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);
+  var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
 
-  /**
-   * The name of this zone.
-   * @abstract
-   * @type {string}
-   */
-  get name() {
-    throw new _errors_js__WEBPACK_IMPORTED_MODULE_0__["ZoneIsAbstractError"]();
+  function defineIteratorMethods(prototype) {
+    ["next", "throw", "return"].forEach(function (method) {
+      define(prototype, method, function (arg) {
+        return this._invoke(method, arg);
+      });
+    });
   }
 
-  get ianaName() {
-    return this.name;
-  }
+  function AsyncIterator(generator, PromiseImpl) {
+    function invoke(method, arg, resolve, reject) {
+      var record = tryCatch(generator[method], generator, arg);
 
-  /**
-   * Returns whether the offset is known to be fixed for the whole year.
-   * @abstract
-   * @type {boolean}
-   */
-  get isUniversal() {
-    throw new _errors_js__WEBPACK_IMPORTED_MODULE_0__["ZoneIsAbstractError"]();
-  }
+      if ("throw" !== record.type) {
+        var result = record.arg,
+            value = result.value;
+        return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) {
+          invoke("next", value, resolve, reject);
+        }, function (err) {
+          invoke("throw", err, resolve, reject);
+        }) : PromiseImpl.resolve(value).then(function (unwrapped) {
+          result.value = unwrapped, resolve(result);
+        }, function (error) {
+          return invoke("throw", error, resolve, reject);
+        });
+      }
 
-  /**
-   * Returns the offset's common name (such as EST) at the specified timestamp
-   * @abstract
-   * @param {number} ts - Epoch milliseconds for which to get the name
-   * @param {Object} opts - Options to affect the format
-   * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.
-   * @param {string} opts.locale - What locale to return the offset name in.
-   * @return {string}
-   */
-  offsetName(ts, opts) {
-    throw new _errors_js__WEBPACK_IMPORTED_MODULE_0__["ZoneIsAbstractError"]();
-  }
+      reject(record.arg);
+    }
 
-  /**
-   * Returns the offset's value as a string
-   * @abstract
-   * @param {number} ts - Epoch milliseconds for which to get the offset
-   * @param {string} format - What style of offset to return.
-   *                          Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively
-   * @return {string}
-   */
-  formatOffset(ts, format) {
-    throw new _errors_js__WEBPACK_IMPORTED_MODULE_0__["ZoneIsAbstractError"]();
-  }
+    var previousPromise;
 
-  /**
-   * Return the offset in minutes for this zone at the specified timestamp.
-   * @abstract
-   * @param {number} ts - Epoch milliseconds for which to compute the offset
-   * @return {number}
-   */
-  offset(ts) {
-    throw new _errors_js__WEBPACK_IMPORTED_MODULE_0__["ZoneIsAbstractError"]();
-  }
+    this._invoke = function (method, arg) {
+      function callInvokeWithMethodAndArg() {
+        return new PromiseImpl(function (resolve, reject) {
+          invoke(method, arg, resolve, reject);
+        });
+      }
 
-  /**
-   * Return whether this Zone is equal to another zone
-   * @abstract
-   * @param {Zone} otherZone - the zone to compare
-   * @return {boolean}
-   */
-  equals(otherZone) {
-    throw new _errors_js__WEBPACK_IMPORTED_MODULE_0__["ZoneIsAbstractError"]();
+      return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
+    };
   }
 
-  /**
-   * Return whether this Zone is valid.
-   * @abstract
-   * @type {boolean}
-   */
-  get isValid() {
-    throw new _errors_js__WEBPACK_IMPORTED_MODULE_0__["ZoneIsAbstractError"]();
-  }
-}
+  function maybeInvokeDelegate(delegate, context) {
+    var method = delegate.iterator[context.method];
 
+    if (undefined === method) {
+      if (context.delegate = null, "throw" === context.method) {
+        if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel;
+        context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method");
+      }
 
-/***/ }),
-/* 263 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return IANAZone; });
-/* harmony import */ var _impl_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(257);
-/* harmony import */ var _zone_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(262);
-
-
-
-let dtfCache = {};
-function makeDTF(zone) {
-  if (!dtfCache[zone]) {
-    dtfCache[zone] = new Intl.DateTimeFormat("en-US", {
-      hour12: false,
-      timeZone: zone,
-      year: "numeric",
-      month: "2-digit",
-      day: "2-digit",
-      hour: "2-digit",
-      minute: "2-digit",
-      second: "2-digit",
-      era: "short",
-    });
-  }
-  return dtfCache[zone];
-}
-
-const typeToPos = {
-  year: 0,
-  month: 1,
-  day: 2,
-  era: 3,
-  hour: 4,
-  minute: 5,
-  second: 6,
-};
-
-function hackyOffset(dtf, date) {
-  const formatted = dtf.format(date).replace(/\u200E/g, ""),
-    parsed = /(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(formatted),
-    [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed;
-  return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond];
-}
-
-function partsOffset(dtf, date) {
-  const formatted = dtf.formatToParts(date);
-  const filled = [];
-  for (let i = 0; i < formatted.length; i++) {
-    const { type, value } = formatted[i];
-    const pos = typeToPos[type];
-
-    if (type === "era") {
-      filled[pos] = value;
-    } else if (!Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_0__["isUndefined"])(pos)) {
-      filled[pos] = parseInt(value, 10);
+      return ContinueSentinel;
     }
-  }
-  return filled;
-}
 
-let ianaZoneCache = {};
-/**
- * A zone identified by an IANA identifier, like America/New_York
- * @implements {Zone}
- */
-class IANAZone extends _zone_js__WEBPACK_IMPORTED_MODULE_1__["default"] {
-  /**
-   * @param {string} name - Zone name
-   * @return {IANAZone}
-   */
-  static create(name) {
-    if (!ianaZoneCache[name]) {
-      ianaZoneCache[name] = new IANAZone(name);
-    }
-    return ianaZoneCache[name];
+    var record = tryCatch(method, delegate.iterator, context.arg);
+    if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel;
+    var info = record.arg;
+    return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel);
   }
 
-  /**
-   * Reset local caches. Should only be necessary in testing scenarios.
-   * @return {void}
-   */
-  static resetCache() {
-    ianaZoneCache = {};
-    dtfCache = {};
+  function pushTryEntry(locs) {
+    var entry = {
+      tryLoc: locs[0]
+    };
+    1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);
   }
 
-  /**
-   * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.
-   * @param {string} s - The string to check validity on
-   * @example IANAZone.isValidSpecifier("America/New_York") //=> true
-   * @example IANAZone.isValidSpecifier("Sport~~blorp") //=> false
-   * @deprecated This method returns false for some valid IANA names. Use isValidZone instead.
-   * @return {boolean}
-   */
-  static isValidSpecifier(s) {
-    return this.isValidZone(s);
+  function resetTryEntry(entry) {
+    var record = entry.completion || {};
+    record.type = "normal", delete record.arg, entry.completion = record;
   }
 
-  /**
-   * Returns whether the provided string identifies a real zone
-   * @param {string} zone - The string to check
-   * @example IANAZone.isValidZone("America/New_York") //=> true
-   * @example IANAZone.isValidZone("Fantasia/Castle") //=> false
-   * @example IANAZone.isValidZone("Sport~~blorp") //=> false
-   * @return {boolean}
-   */
-  static isValidZone(zone) {
-    if (!zone) {
-      return false;
-    }
-    try {
-      new Intl.DateTimeFormat("en-US", { timeZone: zone }).format();
-      return true;
-    } catch (e) {
-      return false;
-    }
+  function Context(tryLocsList) {
+    this.tryEntries = [{
+      tryLoc: "root"
+    }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);
   }
 
-  constructor(name) {
-    super();
-    /** @private **/
-    this.zoneName = name;
-    /** @private **/
-    this.valid = IANAZone.isValidZone(name);
-  }
+  function values(iterable) {
+    if (iterable) {
+      var iteratorMethod = iterable[iteratorSymbol];
+      if (iteratorMethod) return iteratorMethod.call(iterable);
+      if ("function" == typeof iterable.next) return iterable;
 
-  /** @override **/
-  get type() {
-    return "iana";
-  }
+      if (!isNaN(iterable.length)) {
+        var i = -1,
+            next = function next() {
+          for (; ++i < iterable.length;) {
+            if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;
+          }
 
-  /** @override **/
-  get name() {
-    return this.zoneName;
-  }
+          return next.value = undefined, next.done = !0, next;
+        };
 
-  /** @override **/
-  get isUniversal() {
-    return false;
-  }
+        return next.next = next;
+      }
+    }
 
-  /** @override **/
-  offsetName(ts, { format, locale }) {
-    return Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_0__["parseZoneInfo"])(ts, format, locale, this.name);
+    return {
+      next: doneResult
+    };
   }
 
-  /** @override **/
-  formatOffset(ts, format) {
-    return Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_0__["formatOffset"])(this.offset(ts), format);
+  function doneResult() {
+    return {
+      value: undefined,
+      done: !0
+    };
   }
 
-  /** @override **/
-  offset(ts) {
-    const date = new Date(ts);
-
-    if (isNaN(date)) return NaN;
-
-    const dtf = makeDTF(this.name);
-    let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts
-      ? partsOffset(dtf, date)
-      : hackyOffset(dtf, date);
-
-    if (adOrBc === "BC") {
-      year = -Math.abs(year) + 1;
-    }
-
-    // because we're using hour12 and https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat
-    const adjustedHour = hour === 24 ? 0 : hour;
-
-    const asUTC = Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_0__["objToLocalTS"])({
-      year,
-      month,
-      day,
-      hour: adjustedHour,
-      minute,
-      second,
-      millisecond: 0,
+  return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) {
+    var ctor = "function" == typeof genFun && genFun.constructor;
+    return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name));
+  }, exports.mark = function (genFun) {
+    return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun;
+  }, exports.awrap = function (arg) {
+    return {
+      __await: arg
+    };
+  }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
+    return this;
+  }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {
+    void 0 === PromiseImpl && (PromiseImpl = Promise);
+    var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);
+    return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
+      return result.done ? result.value : iter.next();
     });
+  }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () {
+    return this;
+  }), define(Gp, "toString", function () {
+    return "[object Generator]";
+  }), exports.keys = function (object) {
+    var keys = [];
 
-    let asTS = +date;
-    const over = asTS % 1000;
-    asTS -= over >= 0 ? over : 1000 + over;
-    return (asUTC - asTS) / (60 * 1000);
-  }
-
-  /** @override **/
-  equals(otherZone) {
-    return otherZone.type === "iana" && otherZone.name === this.name;
-  }
-
-  /** @override **/
-  get isValid() {
-    return this.valid;
-  }
-}
+    for (var key in object) {
+      keys.push(key);
+    }
 
+    return keys.reverse(), function next() {
+      for (; keys.length;) {
+        var key = keys.pop();
+        if (key in object) return next.value = key, next.done = !1, next;
+      }
 
-/***/ }),
-/* 264 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+      return next.done = !0, next;
+    };
+  }, exports.values = values, Context.prototype = {
+    constructor: Context,
+    reset: function reset(skipTempReset) {
+      if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {
+        "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);
+      }
+    },
+    stop: function stop() {
+      this.done = !0;
+      var rootRecord = this.tryEntries[0].completion;
+      if ("throw" === rootRecord.type) throw rootRecord.arg;
+      return this.rval;
+    },
+    dispatchException: function dispatchException(exception) {
+      if (this.done) throw exception;
+      var context = this;
 
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "normalizeZone", function() { return normalizeZone; });
-/* harmony import */ var _zone_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(262);
-/* harmony import */ var _zones_IANAZone_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(263);
-/* harmony import */ var _zones_fixedOffsetZone_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(265);
-/* harmony import */ var _zones_invalidZone_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(266);
-/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(257);
-/* harmony import */ var _zones_systemZone_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(261);
-/**
- * @private
- */
+      function handle(loc, caught) {
+        return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught;
+      }
 
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i],
+            record = entry.completion;
+        if ("root" === entry.tryLoc) return handle("end");
 
+        if (entry.tryLoc <= this.prev) {
+          var hasCatch = hasOwn.call(entry, "catchLoc"),
+              hasFinally = hasOwn.call(entry, "finallyLoc");
 
+          if (hasCatch && hasFinally) {
+            if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
+            if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
+          } else if (hasCatch) {
+            if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
+          } else {
+            if (!hasFinally) throw new Error("try statement without catch or finally");
+            if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
+          }
+        }
+      }
+    },
+    abrupt: function abrupt(type, arg) {
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
 
+        if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
+          var finallyEntry = entry;
+          break;
+        }
+      }
 
+      finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);
+      var record = finallyEntry ? finallyEntry.completion : {};
+      return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);
+    },
+    complete: function complete(record, afterLoc) {
+      if ("throw" === record.type) throw record.arg;
+      return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;
+    },
+    finish: function finish(finallyLoc) {
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;
+      }
+    },
+    "catch": function _catch(tryLoc) {
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
 
+        if (entry.tryLoc === tryLoc) {
+          var record = entry.completion;
 
+          if ("throw" === record.type) {
+            var thrown = record.arg;
+            resetTryEntry(entry);
+          }
 
+          return thrown;
+        }
+      }
 
-function normalizeZone(input, defaultZone) {
-  let offset;
-  if (Object(_util_js__WEBPACK_IMPORTED_MODULE_4__["isUndefined"])(input) || input === null) {
-    return defaultZone;
-  } else if (input instanceof _zone_js__WEBPACK_IMPORTED_MODULE_0__["default"]) {
-    return input;
-  } else if (Object(_util_js__WEBPACK_IMPORTED_MODULE_4__["isString"])(input)) {
-    const lowered = input.toLowerCase();
-    if (lowered === "default") return defaultZone;
-    else if (lowered === "local" || lowered === "system") return _zones_systemZone_js__WEBPACK_IMPORTED_MODULE_5__["default"].instance;
-    else if (lowered === "utc" || lowered === "gmt") return _zones_fixedOffsetZone_js__WEBPACK_IMPORTED_MODULE_2__["default"].utcInstance;
-    else return _zones_fixedOffsetZone_js__WEBPACK_IMPORTED_MODULE_2__["default"].parseSpecifier(lowered) || _zones_IANAZone_js__WEBPACK_IMPORTED_MODULE_1__["default"].create(input);
-  } else if (Object(_util_js__WEBPACK_IMPORTED_MODULE_4__["isNumber"])(input)) {
-    return _zones_fixedOffsetZone_js__WEBPACK_IMPORTED_MODULE_2__["default"].instance(input);
-  } else if (typeof input === "object" && input.offset && typeof input.offset === "number") {
-    // This is dumb, but the instanceof check above doesn't seem to really work
-    // so we're duck checking it
-    return input;
-  } else {
-    return new _zones_invalidZone_js__WEBPACK_IMPORTED_MODULE_3__["default"](input);
-  }
+      throw new Error("illegal catch attempt");
+    },
+    delegateYield: function delegateYield(iterable, resultName, nextLoc) {
+      return this.delegate = {
+        iterator: values(iterable),
+        resultName: resultName,
+        nextLoc: nextLoc
+      }, "next" === this.method && (this.arg = undefined), ContinueSentinel;
+    }
+  }, exports;
 }
 
+module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
 /***/ }),
-/* 265 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return FixedOffsetZone; });
-/* harmony import */ var _impl_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(257);
-/* harmony import */ var _zone_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(262);
-
-
-
-let singleton = null;
+/* 295 */
+/***/ (function(module, exports) {
 
-/**
- * A zone with a fixed offset (meaning no DST)
- * @implements {Zone}
- */
-class FixedOffsetZone extends _zone_js__WEBPACK_IMPORTED_MODULE_1__["default"] {
-  /**
-   * Get a singleton instance of UTC
-   * @return {FixedOffsetZone}
-   */
-  static get utcInstance() {
-    if (singleton === null) {
-      singleton = new FixedOffsetZone(0);
-    }
-    return singleton;
+function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
+  try {
+    var info = gen[key](arg);
+    var value = info.value;
+  } catch (error) {
+    reject(error);
+    return;
   }
 
-  /**
-   * Get an instance with a specified offset
-   * @param {number} offset - The offset in minutes
-   * @return {FixedOffsetZone}
-   */
-  static instance(offset) {
-    return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);
+  if (info.done) {
+    resolve(value);
+  } else {
+    Promise.resolve(value).then(_next, _throw);
   }
+}
 
-  /**
-   * Get an instance of FixedOffsetZone from a UTC offset string, like "UTC+6"
-   * @param {string} s - The offset string to parse
-   * @example FixedOffsetZone.parseSpecifier("UTC+6")
-   * @example FixedOffsetZone.parseSpecifier("UTC+06")
-   * @example FixedOffsetZone.parseSpecifier("UTC-6:00")
-   * @return {FixedOffsetZone}
-   */
-  static parseSpecifier(s) {
-    if (s) {
-      const r = s.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);
-      if (r) {
-        return new FixedOffsetZone(Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_0__["signedOffset"])(r[1], r[2]));
-      }
-    }
-    return null;
-  }
+function _asyncToGenerator(fn) {
+  return function () {
+    var self = this,
+        args = arguments;
+    return new Promise(function (resolve, reject) {
+      var gen = fn.apply(self, args);
 
-  constructor(offset) {
-    super();
-    /** @private **/
-    this.fixed = offset;
-  }
+      function _next(value) {
+        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
+      }
 
-  /** @override **/
-  get type() {
-    return "fixed";
-  }
+      function _throw(err) {
+        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
+      }
 
-  /** @override **/
-  get name() {
-    return this.fixed === 0 ? "UTC" : `UTC${Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_0__["formatOffset"])(this.fixed, "narrow")}`;
-  }
+      _next(undefined);
+    });
+  };
+}
 
-  get ianaName() {
-    if (this.fixed === 0) {
-      return "Etc/UTC";
-    } else {
-      return `Etc/GMT${Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_0__["formatOffset"])(-this.fixed, "narrow")}`;
-    }
-  }
+module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-  /** @override **/
-  offsetName() {
-    return this.name;
-  }
+/***/ }),
+/* 296 */
+/***/ (function(module, exports) {
 
-  /** @override **/
-  formatOffset(ts, format) {
-    return Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_0__["formatOffset"])(this.fixed, format);
+function _classCallCheck(instance, Constructor) {
+  if (!(instance instanceof Constructor)) {
+    throw new TypeError("Cannot call a class as a function");
   }
+}
 
-  /** @override **/
-  get isUniversal() {
-    return true;
-  }
+module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-  /** @override **/
-  offset() {
-    return this.fixed;
-  }
+/***/ }),
+/* 297 */
+/***/ (function(module, exports) {
 
-  /** @override **/
-  equals(otherZone) {
-    return otherZone.type === "fixed" && otherZone.fixed === this.fixed;
+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);
   }
+}
 
-  /** @override **/
-  get isValid() {
-    return true;
-  }
+function _createClass(Constructor, protoProps, staticProps) {
+  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+  if (staticProps) _defineProperties(Constructor, staticProps);
+  Object.defineProperty(Constructor, "prototype", {
+    writable: false
+  });
+  return Constructor;
 }
 
+module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
 /***/ }),
-/* 266 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return InvalidZone; });
-/* harmony import */ var _zone_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(262);
+/* 298 */
+/***/ (function(module, exports, __webpack_require__) {
 
+var baseAssignValue = __webpack_require__(299),
+    baseForOwn = __webpack_require__(315),
+    baseIteratee = __webpack_require__(338);
 
 /**
- * A zone that failed to parse. You should never need to instantiate this.
- * @implements {Zone}
+ * Creates an object with the same keys as `object` and values generated
+ * by running each own enumerable string keyed property of `object` thru
+ * `iteratee`. The iteratee is invoked with three arguments:
+ * (value, key, object).
+ *
+ * @static
+ * @memberOf _
+ * @since 2.4.0
+ * @category Object
+ * @param {Object} object The object to iterate over.
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+ * @returns {Object} Returns the new mapped object.
+ * @see _.mapKeys
+ * @example
+ *
+ * var users = {
+ *   'fred':    { 'user': 'fred',    'age': 40 },
+ *   'pebbles': { 'user': 'pebbles', 'age': 1 }
+ * };
+ *
+ * _.mapValues(users, function(o) { return o.age; });
+ * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
+ *
+ * // The `_.property` iteratee shorthand.
+ * _.mapValues(users, 'age');
+ * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
  */
-class InvalidZone extends _zone_js__WEBPACK_IMPORTED_MODULE_0__["default"] {
-  constructor(zoneName) {
-    super();
-    /**  @private */
-    this.zoneName = zoneName;
-  }
-
-  /** @override **/
-  get type() {
-    return "invalid";
-  }
-
-  /** @override **/
-  get name() {
-    return this.zoneName;
-  }
-
-  /** @override **/
-  get isUniversal() {
-    return false;
-  }
-
-  /** @override **/
-  offsetName() {
-    return null;
-  }
-
-  /** @override **/
-  formatOffset() {
-    return "";
-  }
-
-  /** @override **/
-  offset() {
-    return NaN;
-  }
-
-  /** @override **/
-  equals() {
-    return false;
-  }
+function mapValues(object, iteratee) {
+  var result = {};
+  iteratee = baseIteratee(iteratee, 3);
 
-  /** @override **/
-  get isValid() {
-    return false;
-  }
+  baseForOwn(object, function(value, key, object) {
+    baseAssignValue(result, key, iteratee(value, key, object));
+  });
+  return result;
 }
 
-
-/***/ }),
-/* 267 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseISODate", function() { return parseISODate; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseRFC2822Date", function() { return parseRFC2822Date; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseHTTPDate", function() { return parseHTTPDate; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseISODuration", function() { return parseISODuration; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseISOTimeOnly", function() { return parseISOTimeOnly; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseSQL", function() { return parseSQL; });
-/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(257);
-/* harmony import */ var _english_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(255);
-/* harmony import */ var _zones_fixedOffsetZone_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(265);
-/* harmony import */ var _zones_IANAZone_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(263);
-
-
-
+module.exports = mapValues;
 
 
-/*
- * This file handles parsing for well-specified formats. Here's how it works:
- * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.
- * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object
- * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.
- * Extractors can take a "cursor" representing the offset in the match to look at. This makes it easy to combine extractors.
- * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.
- * Some extractions are super dumb and simpleParse and fromStrings help DRY them.
- */
-
-function combineRegexes(...regexes) {
-  const full = regexes.reduce((f, r) => f + r.source, "");
-  return RegExp(`^${full}$`);
-}
-
-function combineExtractors(...extractors) {
-  return (m) =>
-    extractors
-      .reduce(
-        ([mergedVals, mergedZone, cursor], ex) => {
-          const [val, zone, next] = ex(m, cursor);
-          return [{ ...mergedVals, ...val }, zone || mergedZone, next];
-        },
-        [{}, null, 1]
-      )
-      .slice(0, 2);
-}
+/***/ }),
+/* 299 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function parse(s, ...patterns) {
-  if (s == null) {
-    return [null, null];
-  }
+var defineProperty = __webpack_require__(300);
 
-  for (const [regex, extractor] of patterns) {
-    const m = regex.exec(s);
-    if (m) {
-      return extractor(m);
-    }
+/**
+ * The base implementation of `assignValue` and `assignMergeValue` without
+ * value checks.
+ *
+ * @private
+ * @param {Object} object The object to modify.
+ * @param {string} key The key of the property to assign.
+ * @param {*} value The value to assign.
+ */
+function baseAssignValue(object, key, value) {
+  if (key == '__proto__' && defineProperty) {
+    defineProperty(object, key, {
+      'configurable': true,
+      'enumerable': true,
+      'value': value,
+      'writable': true
+    });
+  } else {
+    object[key] = value;
   }
-  return [null, null];
 }
 
-function simpleParse(...keys) {
-  return (match, cursor) => {
-    const ret = {};
-    let i;
+module.exports = baseAssignValue;
 
-    for (i = 0; i < keys.length; i++) {
-      ret[keys[i]] = Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["parseInteger"])(match[cursor + i]);
-    }
-    return [ret, null, cursor + i];
-  };
-}
 
-// ISO and SQL parsing
-const offsetRegex = /(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/;
-const isoExtendedZone = `(?:${offsetRegex.source}?(?:\\[(${_util_js__WEBPACK_IMPORTED_MODULE_0__["ianaRegex"].source})\\])?)?`;
-const isoTimeBaseRegex = /(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/;
-const isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${isoExtendedZone}`);
-const isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`);
-const isoYmdRegex = /([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/;
-const isoWeekRegex = /(\d{4})-?W(\d\d)(?:-?(\d))?/;
-const isoOrdinalRegex = /(\d{4})-?(\d{3})/;
-const extractISOWeekData = simpleParse("weekYear", "weekNumber", "weekDay");
-const extractISOOrdinalData = simpleParse("year", "ordinal");
-const sqlYmdRegex = /(\d{4})-(\d\d)-(\d\d)/; // dumbed-down version of the ISO one
-const sqlTimeRegex = RegExp(
-  `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${_util_js__WEBPACK_IMPORTED_MODULE_0__["ianaRegex"].source}))?`
-);
-const sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);
+/***/ }),
+/* 300 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function int(match, pos, fallback) {
-  const m = match[pos];
-  return Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["isUndefined"])(m) ? fallback : Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["parseInteger"])(m);
-}
+var getNative = __webpack_require__(301);
 
-function extractISOYmd(match, cursor) {
-  const item = {
-    year: int(match, cursor),
-    month: int(match, cursor + 1, 1),
-    day: int(match, cursor + 2, 1),
-  };
+var defineProperty = (function() {
+  try {
+    var func = getNative(Object, 'defineProperty');
+    func({}, '', {});
+    return func;
+  } catch (e) {}
+}());
 
-  return [item, null, cursor + 3];
-}
+module.exports = defineProperty;
 
-function extractISOTime(match, cursor) {
-  const item = {
-    hours: int(match, cursor, 0),
-    minutes: int(match, cursor + 1, 0),
-    seconds: int(match, cursor + 2, 0),
-    milliseconds: Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["parseMillis"])(match[cursor + 3]),
-  };
 
-  return [item, null, cursor + 4];
-}
+/***/ }),
+/* 301 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function extractISOOffset(match, cursor) {
-  const local = !match[cursor] && !match[cursor + 1],
-    fullOffset = Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["signedOffset"])(match[cursor + 1], match[cursor + 2]),
-    zone = local ? null : _zones_fixedOffsetZone_js__WEBPACK_IMPORTED_MODULE_2__["default"].instance(fullOffset);
-  return [{}, zone, cursor + 3];
-}
+var baseIsNative = __webpack_require__(302),
+    getValue = __webpack_require__(314);
 
-function extractIANAZone(match, cursor) {
-  const zone = match[cursor] ? _zones_IANAZone_js__WEBPACK_IMPORTED_MODULE_3__["default"].create(match[cursor]) : null;
-  return [{}, zone, cursor + 1];
+/**
+ * Gets the native function at `key` of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {string} key The key of the method to get.
+ * @returns {*} Returns the function if it's native, else `undefined`.
+ */
+function getNative(object, key) {
+  var value = getValue(object, key);
+  return baseIsNative(value) ? value : undefined;
 }
 
-// ISO time parsing
+module.exports = getNative;
 
-const isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`);
 
-// ISO duration parsing
+/***/ }),
+/* 302 */
+/***/ (function(module, exports, __webpack_require__) {
 
-const isoDuration =
-  /^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;
+var isFunction = __webpack_require__(303),
+    isMasked = __webpack_require__(311),
+    isObject = __webpack_require__(310),
+    toSource = __webpack_require__(313);
 
-function extractISODuration(match) {
-  const [s, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] =
-    match;
+/**
+ * Used to match `RegExp`
+ * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
+ */
+var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
 
-  const hasNegativePrefix = s[0] === "-";
-  const negativeSeconds = secondStr && secondStr[0] === "-";
+/** Used to detect host constructors (Safari). */
+var reIsHostCtor = /^\[object .+?Constructor\]$/;
 
-  const maybeNegate = (num, force = false) =>
-    num !== undefined && (force || (num && hasNegativePrefix)) ? -num : num;
+/** Used for built-in method references. */
+var funcProto = Function.prototype,
+    objectProto = Object.prototype;
 
-  return [
-    {
-      years: maybeNegate(Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["parseFloating"])(yearStr)),
-      months: maybeNegate(Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["parseFloating"])(monthStr)),
-      weeks: maybeNegate(Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["parseFloating"])(weekStr)),
-      days: maybeNegate(Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["parseFloating"])(dayStr)),
-      hours: maybeNegate(Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["parseFloating"])(hourStr)),
-      minutes: maybeNegate(Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["parseFloating"])(minuteStr)),
-      seconds: maybeNegate(Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["parseFloating"])(secondStr), secondStr === "-0"),
-      milliseconds: maybeNegate(Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["parseMillis"])(millisecondsStr), negativeSeconds),
-    },
-  ];
-}
+/** Used to resolve the decompiled source of functions. */
+var funcToString = funcProto.toString;
 
-// These are a little braindead. EDT *should* tell us that we're in, say, America/New_York
-// and not just that we're in -240 *right now*. But since I don't think these are used that often
-// I'm just going to ignore that
-const obsOffsets = {
-  GMT: 0,
-  EDT: -4 * 60,
-  EST: -5 * 60,
-  CDT: -5 * 60,
-  CST: -6 * 60,
-  MDT: -6 * 60,
-  MST: -7 * 60,
-  PDT: -7 * 60,
-  PST: -8 * 60,
-};
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
 
-function fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {
-  const result = {
-    year: yearStr.length === 2 ? Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["untruncateYear"])(Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["parseInteger"])(yearStr)) : Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["parseInteger"])(yearStr),
-    month: _english_js__WEBPACK_IMPORTED_MODULE_1__["monthsShort"].indexOf(monthStr) + 1,
-    day: Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["parseInteger"])(dayStr),
-    hour: Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["parseInteger"])(hourStr),
-    minute: Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["parseInteger"])(minuteStr),
-  };
+/** Used to detect if a method is native. */
+var reIsNative = RegExp('^' +
+  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
+  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
+);
 
-  if (secondStr) result.second = Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["parseInteger"])(secondStr);
-  if (weekdayStr) {
-    result.weekday =
-      weekdayStr.length > 3
-        ? _english_js__WEBPACK_IMPORTED_MODULE_1__["weekdaysLong"].indexOf(weekdayStr) + 1
-        : _english_js__WEBPACK_IMPORTED_MODULE_1__["weekdaysShort"].indexOf(weekdayStr) + 1;
+/**
+ * The base implementation of `_.isNative` without bad shim checks.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a native function,
+ *  else `false`.
+ */
+function baseIsNative(value) {
+  if (!isObject(value) || isMasked(value)) {
+    return false;
   }
-
-  return result;
+  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
+  return pattern.test(toSource(value));
 }
 
-// RFC 2822/5322
-const rfc2822 =
-  /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;
-
-function extractRFC2822(match) {
-  const [
-      ,
-      weekdayStr,
-      dayStr,
-      monthStr,
-      yearStr,
-      hourStr,
-      minuteStr,
-      secondStr,
-      obsOffset,
-      milOffset,
-      offHourStr,
-      offMinuteStr,
-    ] = match,
-    result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);
-
-  let offset;
-  if (obsOffset) {
-    offset = obsOffsets[obsOffset];
-  } else if (milOffset) {
-    offset = 0;
-  } else {
-    offset = Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["signedOffset"])(offHourStr, offMinuteStr);
-  }
-
-  return [result, new _zones_fixedOffsetZone_js__WEBPACK_IMPORTED_MODULE_2__["default"](offset)];
-}
+module.exports = baseIsNative;
 
-function preprocessRFC2822(s) {
-  // Remove comments and folding whitespace and replace multiple-spaces with a single space
-  return s
-    .replace(/\([^)]*\)|[\n\t]/g, " ")
-    .replace(/(\s\s+)/g, " ")
-    .trim();
-}
 
-// http date
+/***/ }),
+/* 303 */
+/***/ (function(module, exports, __webpack_require__) {
 
-const rfc1123 =
-    /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,
-  rfc850 =
-    /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,
-  ascii =
-    /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;
+var baseGetTag = __webpack_require__(304),
+    isObject = __webpack_require__(310);
 
-function extractRFC1123Or850(match) {
-  const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,
-    result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);
-  return [result, _zones_fixedOffsetZone_js__WEBPACK_IMPORTED_MODULE_2__["default"].utcInstance];
-}
+/** `Object#toString` result references. */
+var asyncTag = '[object AsyncFunction]',
+    funcTag = '[object Function]',
+    genTag = '[object GeneratorFunction]',
+    proxyTag = '[object Proxy]';
 
-function extractASCII(match) {
-  const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,
-    result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);
-  return [result, _zones_fixedOffsetZone_js__WEBPACK_IMPORTED_MODULE_2__["default"].utcInstance];
-}
-
-const isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);
-const isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);
-const isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);
-const isoTimeCombinedRegex = combineRegexes(isoTimeRegex);
-
-const extractISOYmdTimeAndOffset = combineExtractors(
-  extractISOYmd,
-  extractISOTime,
-  extractISOOffset,
-  extractIANAZone
-);
-const extractISOWeekTimeAndOffset = combineExtractors(
-  extractISOWeekData,
-  extractISOTime,
-  extractISOOffset,
-  extractIANAZone
-);
-const extractISOOrdinalDateAndTime = combineExtractors(
-  extractISOOrdinalData,
-  extractISOTime,
-  extractISOOffset,
-  extractIANAZone
-);
-const extractISOTimeAndOffset = combineExtractors(
-  extractISOTime,
-  extractISOOffset,
-  extractIANAZone
-);
-
-/*
- * @private
+/**
+ * Checks if `value` is classified as a `Function` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a function, else `false`.
+ * @example
+ *
+ * _.isFunction(_);
+ * // => true
+ *
+ * _.isFunction(/abc/);
+ * // => false
  */
-
-function parseISODate(s) {
-  return parse(
-    s,
-    [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],
-    [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],
-    [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime],
-    [isoTimeCombinedRegex, extractISOTimeAndOffset]
-  );
-}
-
-function parseRFC2822Date(s) {
-  return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);
-}
-
-function parseHTTPDate(s) {
-  return parse(
-    s,
-    [rfc1123, extractRFC1123Or850],
-    [rfc850, extractRFC1123Or850],
-    [ascii, extractASCII]
-  );
-}
-
-function parseISODuration(s) {
-  return parse(s, [isoDuration, extractISODuration]);
-}
-
-const extractISOTimeOnly = combineExtractors(extractISOTime);
-
-function parseISOTimeOnly(s) {
-  return parse(s, [isoTimeOnly, extractISOTimeOnly]);
+function isFunction(value) {
+  if (!isObject(value)) {
+    return false;
+  }
+  // The use of `Object#toString` avoids issues with the `typeof` operator
+  // in Safari 9 which returns 'object' for typed arrays and other constructors.
+  var tag = baseGetTag(value);
+  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
 }
 
-const sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);
-const sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);
-
-const extractISOTimeOffsetAndIANAZone = combineExtractors(
-  extractISOTime,
-  extractISOOffset,
-  extractIANAZone
-);
-
-function parseSQL(s) {
-  return parse(
-    s,
-    [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],
-    [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]
-  );
-}
+module.exports = isFunction;
 
 
 /***/ }),
-/* 268 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Interval; });
-/* harmony import */ var _datetime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(251);
-/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(252);
-/* harmony import */ var _settings_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(260);
-/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(253);
-/* harmony import */ var _impl_invalid_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(258);
-
-
-
-
+/* 304 */
+/***/ (function(module, exports, __webpack_require__) {
 
+var Symbol = __webpack_require__(305),
+    getRawTag = __webpack_require__(308),
+    objectToString = __webpack_require__(309);
 
-const INVALID = "Invalid Interval";
+/** `Object#toString` result references. */
+var nullTag = '[object Null]',
+    undefinedTag = '[object Undefined]';
 
-// checks if the start is equal to or before the end
-function validateStartEnd(start, end) {
-  if (!start || !start.isValid) {
-    return Interval.invalid("missing or invalid start");
-  } else if (!end || !end.isValid) {
-    return Interval.invalid("missing or invalid end");
-  } else if (end < start) {
-    return Interval.invalid(
-      "end before start",
-      `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`
-    );
-  } else {
-    return null;
-  }
-}
+/** Built-in value references. */
+var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
 
 /**
- * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.
- *
- * Here is a brief overview of the most commonly used methods and getters in Interval:
+ * The base implementation of `getTag` without fallbacks for buggy environments.
  *
- * * **Creation** To create an Interval, use {@link Interval.fromDateTimes}, {@link Interval.after}, {@link Interval.before}, or {@link Interval.fromISO}.
- * * **Accessors** Use {@link Interval#start} and {@link Interval#end} to get the start and end.
- * * **Interrogation** To analyze the Interval, use {@link Interval#count}, {@link Interval#length}, {@link Interval#hasSame}, {@link Interval#contains}, {@link Interval#isAfter}, or {@link Interval#isBefore}.
- * * **Transformation** To create other Intervals out of this one, use {@link Interval#set}, {@link Interval#splitAt}, {@link Interval#splitBy}, {@link Interval#divideEqually}, {@link Interval.merge}, {@link Interval.xor}, {@link Interval#union}, {@link Interval#intersection}, or {@link Interval#difference}.
- * * **Comparison** To compare this Interval to another one, use {@link Interval#equals}, {@link Interval#overlaps}, {@link Interval#abutsStart}, {@link Interval#abutsEnd}, {@link Interval#engulfs}
- * * **Output** To convert the Interval into other representations, see {@link Interval#toString}, {@link Interval#toISO}, {@link Interval#toISODate}, {@link Interval#toISOTime}, {@link Interval#toFormat}, and {@link Interval#toDuration}.
+ * @private
+ * @param {*} value The value to query.
+ * @returns {string} Returns the `toStringTag`.
  */
-class Interval {
-  /**
-   * @private
-   */
-  constructor(config) {
-    /**
-     * @access private
-     */
-    this.s = config.start;
-    /**
-     * @access private
-     */
-    this.e = config.end;
-    /**
-     * @access private
-     */
-    this.invalid = config.invalid || null;
-    /**
-     * @access private
-     */
-    this.isLuxonInterval = true;
+function baseGetTag(value) {
+  if (value == null) {
+    return value === undefined ? undefinedTag : nullTag;
   }
+  return (symToStringTag && symToStringTag in Object(value))
+    ? getRawTag(value)
+    : objectToString(value);
+}
 
-  /**
-   * Create an invalid Interval.
-   * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent
-   * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information
-   * @return {Interval}
-   */
-  static invalid(reason, explanation = null) {
-    if (!reason) {
-      throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__["InvalidArgumentError"]("need to specify a reason the Interval is invalid");
-    }
+module.exports = baseGetTag;
 
-    const invalid = reason instanceof _impl_invalid_js__WEBPACK_IMPORTED_MODULE_4__["default"] ? reason : new _impl_invalid_js__WEBPACK_IMPORTED_MODULE_4__["default"](reason, explanation);
 
-    if (_settings_js__WEBPACK_IMPORTED_MODULE_2__["default"].throwOnInvalid) {
-      throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__["InvalidIntervalError"](invalid);
-    } else {
-      return new Interval({ invalid });
-    }
-  }
+/***/ }),
+/* 305 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  /**
-   * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.
-   * @param {DateTime|Date|Object} start
-   * @param {DateTime|Date|Object} end
-   * @return {Interval}
-   */
-  static fromDateTimes(start, end) {
-    const builtStart = Object(_datetime_js__WEBPACK_IMPORTED_MODULE_0__["friendlyDateTime"])(start),
-      builtEnd = Object(_datetime_js__WEBPACK_IMPORTED_MODULE_0__["friendlyDateTime"])(end);
+var root = __webpack_require__(306);
 
-    const validateError = validateStartEnd(builtStart, builtEnd);
+/** Built-in value references. */
+var Symbol = root.Symbol;
 
-    if (validateError == null) {
-      return new Interval({
-        start: builtStart,
-        end: builtEnd,
-      });
-    } else {
-      return validateError;
-    }
-  }
+module.exports = Symbol;
 
-  /**
-   * Create an Interval from a start DateTime and a Duration to extend to.
-   * @param {DateTime|Date|Object} start
-   * @param {Duration|Object|number} duration - the length of the Interval.
-   * @return {Interval}
-   */
-  static after(start, duration) {
-    const dur = _duration_js__WEBPACK_IMPORTED_MODULE_1__["default"].fromDurationLike(duration),
-      dt = Object(_datetime_js__WEBPACK_IMPORTED_MODULE_0__["friendlyDateTime"])(start);
-    return Interval.fromDateTimes(dt, dt.plus(dur));
-  }
 
-  /**
-   * Create an Interval from an end DateTime and a Duration to extend backwards to.
-   * @param {DateTime|Date|Object} end
-   * @param {Duration|Object|number} duration - the length of the Interval.
-   * @return {Interval}
-   */
-  static before(end, duration) {
-    const dur = _duration_js__WEBPACK_IMPORTED_MODULE_1__["default"].fromDurationLike(duration),
-      dt = Object(_datetime_js__WEBPACK_IMPORTED_MODULE_0__["friendlyDateTime"])(end);
-    return Interval.fromDateTimes(dt.minus(dur), dt);
-  }
+/***/ }),
+/* 306 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  /**
-   * Create an Interval from an ISO 8601 string.
-   * Accepts `<start>/<end>`, `<start>/<duration>`, and `<duration>/<end>` formats.
-   * @param {string} text - the ISO string to parse
-   * @param {Object} [opts] - options to pass {@link DateTime#fromISO} and optionally {@link Duration#fromISO}
-   * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals
-   * @return {Interval}
-   */
-  static fromISO(text, opts) {
-    const [s, e] = (text || "").split("/", 2);
-    if (s && e) {
-      let start, startIsValid;
-      try {
-        start = _datetime_js__WEBPACK_IMPORTED_MODULE_0__["default"].fromISO(s, opts);
-        startIsValid = start.isValid;
-      } catch (e) {
-        startIsValid = false;
-      }
+var freeGlobal = __webpack_require__(307);
 
-      let end, endIsValid;
-      try {
-        end = _datetime_js__WEBPACK_IMPORTED_MODULE_0__["default"].fromISO(e, opts);
-        endIsValid = end.isValid;
-      } catch (e) {
-        endIsValid = false;
-      }
+/** Detect free variable `self`. */
+var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
 
-      if (startIsValid && endIsValid) {
-        return Interval.fromDateTimes(start, end);
-      }
+/** Used as a reference to the global object. */
+var root = freeGlobal || freeSelf || Function('return this')();
 
-      if (startIsValid) {
-        const dur = _duration_js__WEBPACK_IMPORTED_MODULE_1__["default"].fromISO(e, opts);
-        if (dur.isValid) {
-          return Interval.after(start, dur);
-        }
-      } else if (endIsValid) {
-        const dur = _duration_js__WEBPACK_IMPORTED_MODULE_1__["default"].fromISO(s, opts);
-        if (dur.isValid) {
-          return Interval.before(end, dur);
-        }
-      }
-    }
-    return Interval.invalid("unparsable", `the input "${text}" can't be parsed as ISO 8601`);
-  }
+module.exports = root;
 
-  /**
-   * Check if an object is an Interval. Works across context boundaries
-   * @param {object} o
-   * @return {boolean}
-   */
-  static isInterval(o) {
-    return (o && o.isLuxonInterval) || false;
-  }
 
-  /**
-   * Returns the start of the Interval
-   * @type {DateTime}
-   */
-  get start() {
-    return this.isValid ? this.s : null;
-  }
+/***/ }),
+/* 307 */
+/***/ (function(module, exports) {
 
-  /**
-   * Returns the end of the Interval
-   * @type {DateTime}
-   */
-  get end() {
-    return this.isValid ? this.e : null;
-  }
+/** Detect free variable `global` from Node.js. */
+var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
 
-  /**
-   * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.
-   * @type {boolean}
-   */
-  get isValid() {
-    return this.invalidReason === null;
-  }
+module.exports = freeGlobal;
 
-  /**
-   * Returns an error code if this Interval is invalid, or null if the Interval is valid
-   * @type {string}
-   */
-  get invalidReason() {
-    return this.invalid ? this.invalid.reason : null;
-  }
 
-  /**
-   * Returns an explanation of why this Interval became invalid, or null if the Interval is valid
-   * @type {string}
-   */
-  get invalidExplanation() {
-    return this.invalid ? this.invalid.explanation : null;
-  }
+/***/ }),
+/* 308 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  /**
-   * Returns the length of the Interval in the specified unit.
-   * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.
-   * @return {number}
-   */
-  length(unit = "milliseconds") {
-    return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;
-  }
+var Symbol = __webpack_require__(305);
 
-  /**
-   * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.
-   * Unlike {@link Interval#length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'
-   * asks 'what dates are included in this interval?', not 'how many days long is this interval?'
-   * @param {string} [unit='milliseconds'] - the unit of time to count.
-   * @return {number}
-   */
-  count(unit = "milliseconds") {
-    if (!this.isValid) return NaN;
-    const start = this.start.startOf(unit),
-      end = this.end.startOf(unit);
-    return Math.floor(end.diff(start, unit).get(unit)) + 1;
-  }
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
 
-  /**
-   * Returns whether this Interval's start and end are both in the same unit of time
-   * @param {string} unit - the unit of time to check sameness on
-   * @return {boolean}
-   */
-  hasSame(unit) {
-    return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;
-  }
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
 
-  /**
-   * Return whether this Interval has the same start and end DateTimes.
-   * @return {boolean}
-   */
-  isEmpty() {
-    return this.s.valueOf() === this.e.valueOf();
-  }
+/**
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var nativeObjectToString = objectProto.toString;
 
-  /**
-   * Return whether this Interval's start is after the specified DateTime.
-   * @param {DateTime} dateTime
-   * @return {boolean}
-   */
-  isAfter(dateTime) {
-    if (!this.isValid) return false;
-    return this.s > dateTime;
-  }
+/** Built-in value references. */
+var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
 
-  /**
-   * Return whether this Interval's end is before the specified DateTime.
-   * @param {DateTime} dateTime
-   * @return {boolean}
-   */
-  isBefore(dateTime) {
-    if (!this.isValid) return false;
-    return this.e <= dateTime;
-  }
+/**
+ * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @returns {string} Returns the raw `toStringTag`.
+ */
+function getRawTag(value) {
+  var isOwn = hasOwnProperty.call(value, symToStringTag),
+      tag = value[symToStringTag];
 
-  /**
-   * Return whether this Interval contains the specified DateTime.
-   * @param {DateTime} dateTime
-   * @return {boolean}
-   */
-  contains(dateTime) {
-    if (!this.isValid) return false;
-    return this.s <= dateTime && this.e > dateTime;
-  }
+  try {
+    value[symToStringTag] = undefined;
+    var unmasked = true;
+  } catch (e) {}
 
-  /**
-   * "Sets" the start and/or end dates. Returns a newly-constructed Interval.
-   * @param {Object} values - the values to set
-   * @param {DateTime} values.start - the starting DateTime
-   * @param {DateTime} values.end - the ending DateTime
-   * @return {Interval}
-   */
-  set({ start, end } = {}) {
-    if (!this.isValid) return this;
-    return Interval.fromDateTimes(start || this.s, end || this.e);
+  var result = nativeObjectToString.call(value);
+  if (unmasked) {
+    if (isOwn) {
+      value[symToStringTag] = tag;
+    } else {
+      delete value[symToStringTag];
+    }
   }
+  return result;
+}
 
-  /**
-   * Split this Interval at each of the specified DateTimes
-   * @param {...DateTime} dateTimes - the unit of time to count.
-   * @return {Array}
-   */
-  splitAt(...dateTimes) {
-    if (!this.isValid) return [];
-    const sorted = dateTimes
-        .map(_datetime_js__WEBPACK_IMPORTED_MODULE_0__["friendlyDateTime"])
-        .filter((d) => this.contains(d))
-        .sort(),
-      results = [];
-    let { s } = this,
-      i = 0;
-
-    while (s < this.e) {
-      const added = sorted[i] || this.e,
-        next = +added > +this.e ? this.e : added;
-      results.push(Interval.fromDateTimes(s, next));
-      s = next;
-      i += 1;
-    }
+module.exports = getRawTag;
 
-    return results;
-  }
 
-  /**
-   * Split this Interval into smaller Intervals, each of the specified length.
-   * Left over time is grouped into a smaller interval
-   * @param {Duration|Object|number} duration - The length of each resulting interval.
-   * @return {Array}
-   */
-  splitBy(duration) {
-    const dur = _duration_js__WEBPACK_IMPORTED_MODULE_1__["default"].fromDurationLike(duration);
+/***/ }),
+/* 309 */
+/***/ (function(module, exports) {
 
-    if (!this.isValid || !dur.isValid || dur.as("milliseconds") === 0) {
-      return [];
-    }
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
 
-    let { s } = this,
-      idx = 1,
-      next;
+/**
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var nativeObjectToString = objectProto.toString;
 
-    const results = [];
-    while (s < this.e) {
-      const added = this.start.plus(dur.mapUnits((x) => x * idx));
-      next = +added > +this.e ? this.e : added;
-      results.push(Interval.fromDateTimes(s, next));
-      s = next;
-      idx += 1;
-    }
+/**
+ * Converts `value` to a string using `Object.prototype.toString`.
+ *
+ * @private
+ * @param {*} value The value to convert.
+ * @returns {string} Returns the converted string.
+ */
+function objectToString(value) {
+  return nativeObjectToString.call(value);
+}
 
-    return results;
-  }
+module.exports = objectToString;
 
-  /**
-   * Split this Interval into the specified number of smaller intervals.
-   * @param {number} numberOfParts - The number of Intervals to divide the Interval into.
-   * @return {Array}
-   */
-  divideEqually(numberOfParts) {
-    if (!this.isValid) return [];
-    return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);
-  }
 
-  /**
-   * Return whether this Interval overlaps with the specified Interval
-   * @param {Interval} other
-   * @return {boolean}
-   */
-  overlaps(other) {
-    return this.e > other.s && this.s < other.e;
-  }
+/***/ }),
+/* 310 */
+/***/ (function(module, exports) {
 
-  /**
-   * Return whether this Interval's end is adjacent to the specified Interval's start.
-   * @param {Interval} other
-   * @return {boolean}
-   */
-  abutsStart(other) {
-    if (!this.isValid) return false;
-    return +this.e === +other.s;
-  }
+/**
+ * Checks if `value` is the
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+ * @example
+ *
+ * _.isObject({});
+ * // => true
+ *
+ * _.isObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isObject(_.noop);
+ * // => true
+ *
+ * _.isObject(null);
+ * // => false
+ */
+function isObject(value) {
+  var type = typeof value;
+  return value != null && (type == 'object' || type == 'function');
+}
 
-  /**
-   * Return whether this Interval's start is adjacent to the specified Interval's end.
-   * @param {Interval} other
-   * @return {boolean}
-   */
-  abutsEnd(other) {
-    if (!this.isValid) return false;
-    return +other.e === +this.s;
-  }
+module.exports = isObject;
 
-  /**
-   * Return whether this Interval engulfs the start and end of the specified Interval.
-   * @param {Interval} other
-   * @return {boolean}
-   */
-  engulfs(other) {
-    if (!this.isValid) return false;
-    return this.s <= other.s && this.e >= other.e;
-  }
 
-  /**
-   * Return whether this Interval has the same start and end as the specified Interval.
-   * @param {Interval} other
-   * @return {boolean}
-   */
-  equals(other) {
-    if (!this.isValid || !other.isValid) {
-      return false;
-    }
+/***/ }),
+/* 311 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    return this.s.equals(other.s) && this.e.equals(other.e);
-  }
+var coreJsData = __webpack_require__(312);
 
-  /**
-   * Return an Interval representing the intersection of this Interval and the specified Interval.
-   * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.
-   * Returns null if the intersection is empty, meaning, the intervals don't intersect.
-   * @param {Interval} other
-   * @return {Interval}
-   */
-  intersection(other) {
-    if (!this.isValid) return this;
-    const s = this.s > other.s ? this.s : other.s,
-      e = this.e < other.e ? this.e : other.e;
+/** Used to detect methods masquerading as native. */
+var maskSrcKey = (function() {
+  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
+  return uid ? ('Symbol(src)_1.' + uid) : '';
+}());
 
-    if (s >= e) {
-      return null;
-    } else {
-      return Interval.fromDateTimes(s, e);
-    }
-  }
+/**
+ * Checks if `func` has its source masked.
+ *
+ * @private
+ * @param {Function} func The function to check.
+ * @returns {boolean} Returns `true` if `func` is masked, else `false`.
+ */
+function isMasked(func) {
+  return !!maskSrcKey && (maskSrcKey in func);
+}
 
-  /**
-   * Return an Interval representing the union of this Interval and the specified Interval.
-   * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.
-   * @param {Interval} other
-   * @return {Interval}
-   */
-  union(other) {
-    if (!this.isValid) return this;
-    const s = this.s < other.s ? this.s : other.s,
-      e = this.e > other.e ? this.e : other.e;
-    return Interval.fromDateTimes(s, e);
-  }
+module.exports = isMasked;
 
-  /**
-   * Merge an array of Intervals into a equivalent minimal set of Intervals.
-   * Combines overlapping and adjacent Intervals.
-   * @param {Array} intervals
-   * @return {Array}
-   */
-  static merge(intervals) {
-    const [found, final] = intervals
-      .sort((a, b) => a.s - b.s)
-      .reduce(
-        ([sofar, current], item) => {
-          if (!current) {
-            return [sofar, item];
-          } else if (current.overlaps(item) || current.abutsStart(item)) {
-            return [sofar, current.union(item)];
-          } else {
-            return [sofar.concat([current]), item];
-          }
-        },
-        [[], null]
-      );
-    if (final) {
-      found.push(final);
-    }
-    return found;
-  }
 
-  /**
-   * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.
-   * @param {Array} intervals
-   * @return {Array}
-   */
-  static xor(intervals) {
-    let start = null,
-      currentCount = 0;
-    const results = [],
-      ends = intervals.map((i) => [
-        { time: i.s, type: "s" },
-        { time: i.e, type: "e" },
-      ]),
-      flattened = Array.prototype.concat(...ends),
-      arr = flattened.sort((a, b) => a.time - b.time);
+/***/ }),
+/* 312 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    for (const i of arr) {
-      currentCount += i.type === "s" ? 1 : -1;
+var root = __webpack_require__(306);
 
-      if (currentCount === 1) {
-        start = i.time;
-      } else {
-        if (start && +start !== +i.time) {
-          results.push(Interval.fromDateTimes(start, i.time));
-        }
+/** Used to detect overreaching core-js shims. */
+var coreJsData = root['__core-js_shared__'];
 
-        start = null;
-      }
-    }
+module.exports = coreJsData;
 
-    return Interval.merge(results);
-  }
 
-  /**
-   * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.
-   * @param {...Interval} intervals
-   * @return {Array}
-   */
-  difference(...intervals) {
-    return Interval.xor([this].concat(intervals))
-      .map((i) => this.intersection(i))
-      .filter((i) => i && !i.isEmpty());
-  }
+/***/ }),
+/* 313 */
+/***/ (function(module, exports) {
 
-  /**
-   * Returns a string representation of this Interval appropriate for debugging.
-   * @return {string}
-   */
-  toString() {
-    if (!this.isValid) return INVALID;
-    return `[${this.s.toISO()} – ${this.e.toISO()})`;
-  }
+/** Used for built-in method references. */
+var funcProto = Function.prototype;
 
-  /**
-   * Returns an ISO 8601-compliant string representation of this Interval.
-   * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals
-   * @param {Object} opts - The same options as {@link DateTime#toISO}
-   * @return {string}
-   */
-  toISO(opts) {
-    if (!this.isValid) return INVALID;
-    return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;
-  }
+/** Used to resolve the decompiled source of functions. */
+var funcToString = funcProto.toString;
 
-  /**
-   * Returns an ISO 8601-compliant string representation of date of this Interval.
-   * The time components are ignored.
-   * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals
-   * @return {string}
-   */
-  toISODate() {
-    if (!this.isValid) return INVALID;
-    return `${this.s.toISODate()}/${this.e.toISODate()}`;
+/**
+ * Converts `func` to its source code.
+ *
+ * @private
+ * @param {Function} func The function to convert.
+ * @returns {string} Returns the source code.
+ */
+function toSource(func) {
+  if (func != null) {
+    try {
+      return funcToString.call(func);
+    } catch (e) {}
+    try {
+      return (func + '');
+    } catch (e) {}
   }
+  return '';
+}
 
-  /**
-   * Returns an ISO 8601-compliant string representation of time of this Interval.
-   * The date components are ignored.
-   * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals
-   * @param {Object} opts - The same options as {@link DateTime#toISO}
-   * @return {string}
-   */
-  toISOTime(opts) {
-    if (!this.isValid) return INVALID;
-    return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`;
-  }
+module.exports = toSource;
 
-  /**
-   * Returns a string representation of this Interval formatted according to the specified format string.
-   * @param {string} dateFormat - the format string. This string formats the start and end time. See {@link DateTime#toFormat} for details.
-   * @param {Object} opts - options
-   * @param {string} [opts.separator =  ' – '] - a separator to place between the start and end representations
-   * @return {string}
-   */
-  toFormat(dateFormat, { separator = " – " } = {}) {
-    if (!this.isValid) return INVALID;
-    return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;
-  }
 
-  /**
-   * Return a Duration representing the time spanned by this interval.
-   * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.
-   * @param {Object} opts - options that affect the creation of the Duration
-   * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use
-   * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }
-   * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }
-   * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }
-   * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }
-   * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }
-   * @return {Duration}
-   */
-  toDuration(unit, opts) {
-    if (!this.isValid) {
-      return _duration_js__WEBPACK_IMPORTED_MODULE_1__["default"].invalid(this.invalidReason);
-    }
-    return this.e.diff(this.s, unit, opts);
-  }
+/***/ }),
+/* 314 */
+/***/ (function(module, exports) {
 
-  /**
-   * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes
-   * @param {function} mapFn
-   * @return {Interval}
-   * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())
-   * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))
-   */
-  mapEndpoints(mapFn) {
-    return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));
-  }
+/**
+ * Gets the value at `key` of `object`.
+ *
+ * @private
+ * @param {Object} [object] The object to query.
+ * @param {string} key The key of the property to get.
+ * @returns {*} Returns the property value.
+ */
+function getValue(object, key) {
+  return object == null ? undefined : object[key];
 }
 
+module.exports = getValue;
+
 
 /***/ }),
-/* 269 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 315 */
+/***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Info; });
-/* harmony import */ var _datetime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(251);
-/* harmony import */ var _settings_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(260);
-/* harmony import */ var _impl_locale_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(259);
-/* harmony import */ var _zones_IANAZone_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(263);
-/* harmony import */ var _impl_zoneUtil_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(264);
-/* harmony import */ var _impl_util_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(257);
+var baseFor = __webpack_require__(316),
+    keys = __webpack_require__(318);
+
+/**
+ * The base implementation of `_.forOwn` without support for iteratee shorthands.
+ *
+ * @private
+ * @param {Object} object The object to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Object} Returns `object`.
+ */
+function baseForOwn(object, iteratee) {
+  return object && baseFor(object, iteratee, keys);
+}
+
+module.exports = baseForOwn;
 
 
+/***/ }),
+/* 316 */
+/***/ (function(module, exports, __webpack_require__) {
 
+var createBaseFor = __webpack_require__(317);
 
+/**
+ * The base implementation of `baseForOwn` which iterates over `object`
+ * properties returned by `keysFunc` and invokes `iteratee` for each property.
+ * Iteratee functions may exit iteration early by explicitly returning `false`.
+ *
+ * @private
+ * @param {Object} object The object to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @param {Function} keysFunc The function to get the keys of `object`.
+ * @returns {Object} Returns `object`.
+ */
+var baseFor = createBaseFor();
 
+module.exports = baseFor;
 
 
+/***/ }),
+/* 317 */
+/***/ (function(module, exports) {
 
 /**
- * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.
+ * Creates a base function for methods like `_.forIn` and `_.forOwn`.
+ *
+ * @private
+ * @param {boolean} [fromRight] Specify iterating from right to left.
+ * @returns {Function} Returns the new base function.
  */
-class Info {
-  /**
-   * Return whether the specified zone contains a DST.
-   * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.
-   * @return {boolean}
-   */
-  static hasDST(zone = _settings_js__WEBPACK_IMPORTED_MODULE_1__["default"].defaultZone) {
-    const proto = _datetime_js__WEBPACK_IMPORTED_MODULE_0__["default"].now().setZone(zone).set({ month: 12 });
+function createBaseFor(fromRight) {
+  return function(object, iteratee, keysFunc) {
+    var index = -1,
+        iterable = Object(object),
+        props = keysFunc(object),
+        length = props.length;
 
-    return !zone.isUniversal && proto.offset !== proto.set({ month: 6 }).offset;
-  }
+    while (length--) {
+      var key = props[fromRight ? length : ++index];
+      if (iteratee(iterable[key], key, iterable) === false) {
+        break;
+      }
+    }
+    return object;
+  };
+}
 
-  /**
-   * Return whether the specified zone is a valid IANA specifier.
-   * @param {string} zone - Zone to check
-   * @return {boolean}
-   */
-  static isValidIANAZone(zone) {
-    return _zones_IANAZone_js__WEBPACK_IMPORTED_MODULE_3__["default"].isValidZone(zone);
-  }
+module.exports = createBaseFor;
 
-  /**
-   * Converts the input into a {@link Zone} instance.
-   *
-   * * If `input` is already a Zone instance, it is returned unchanged.
-   * * If `input` is a string containing a valid time zone name, a Zone instance
-   *   with that name is returned.
-   * * If `input` is a string that doesn't refer to a known time zone, a Zone
-   *   instance with {@link Zone#isValid} == false is returned.
-   * * If `input is a number, a Zone instance with the specified fixed offset
-   *   in minutes is returned.
-   * * If `input` is `null` or `undefined`, the default zone is returned.
-   * @param {string|Zone|number} [input] - the value to be converted
-   * @return {Zone}
-   */
-  static normalizeZone(input) {
-    return Object(_impl_zoneUtil_js__WEBPACK_IMPORTED_MODULE_4__["normalizeZone"])(input, _settings_js__WEBPACK_IMPORTED_MODULE_1__["default"].defaultZone);
-  }
 
-  /**
-   * Return an array of standalone month names.
-   * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat
-   * @param {string} [length='long'] - the length of the month representation, such as "numeric", "2-digit", "narrow", "short", "long"
-   * @param {Object} opts - options
-   * @param {string} [opts.locale] - the locale code
-   * @param {string} [opts.numberingSystem=null] - the numbering system
-   * @param {string} [opts.locObj=null] - an existing locale object to use
-   * @param {string} [opts.outputCalendar='gregory'] - the calendar
-   * @example Info.months()[0] //=> 'January'
-   * @example Info.months('short')[0] //=> 'Jan'
-   * @example Info.months('numeric')[0] //=> '1'
-   * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'
-   * @example Info.months('numeric', { locale: 'ar' })[0] //=> 'Ù¡'
-   * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'RabiÊ» I'
-   * @return {Array}
-   */
-  static months(
-    length = "long",
-    { locale = null, numberingSystem = null, locObj = null, outputCalendar = "gregory" } = {}
-  ) {
-    return (locObj || _impl_locale_js__WEBPACK_IMPORTED_MODULE_2__["default"].create(locale, numberingSystem, outputCalendar)).months(length);
-  }
-
-  /**
-   * Return an array of format month names.
-   * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that
-   * changes the string.
-   * See {@link Info#months}
-   * @param {string} [length='long'] - the length of the month representation, such as "numeric", "2-digit", "narrow", "short", "long"
-   * @param {Object} opts - options
-   * @param {string} [opts.locale] - the locale code
-   * @param {string} [opts.numberingSystem=null] - the numbering system
-   * @param {string} [opts.locObj=null] - an existing locale object to use
-   * @param {string} [opts.outputCalendar='gregory'] - the calendar
-   * @return {Array}
-   */
-  static monthsFormat(
-    length = "long",
-    { locale = null, numberingSystem = null, locObj = null, outputCalendar = "gregory" } = {}
-  ) {
-    return (locObj || _impl_locale_js__WEBPACK_IMPORTED_MODULE_2__["default"].create(locale, numberingSystem, outputCalendar)).months(length, true);
-  }
-
-  /**
-   * Return an array of standalone week names.
-   * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat
-   * @param {string} [length='long'] - the length of the weekday representation, such as "narrow", "short", "long".
-   * @param {Object} opts - options
-   * @param {string} [opts.locale] - the locale code
-   * @param {string} [opts.numberingSystem=null] - the numbering system
-   * @param {string} [opts.locObj=null] - an existing locale object to use
-   * @example Info.weekdays()[0] //=> 'Monday'
-   * @example Info.weekdays('short')[0] //=> 'Mon'
-   * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'
-   * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين'
-   * @return {Array}
-   */
-  static weekdays(length = "long", { locale = null, numberingSystem = null, locObj = null } = {}) {
-    return (locObj || _impl_locale_js__WEBPACK_IMPORTED_MODULE_2__["default"].create(locale, numberingSystem, null)).weekdays(length);
-  }
-
-  /**
-   * Return an array of format week names.
-   * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that
-   * changes the string.
-   * See {@link Info#weekdays}
-   * @param {string} [length='long'] - the length of the month representation, such as "narrow", "short", "long".
-   * @param {Object} opts - options
-   * @param {string} [opts.locale=null] - the locale code
-   * @param {string} [opts.numberingSystem=null] - the numbering system
-   * @param {string} [opts.locObj=null] - an existing locale object to use
-   * @return {Array}
-   */
-  static weekdaysFormat(
-    length = "long",
-    { locale = null, numberingSystem = null, locObj = null } = {}
-  ) {
-    return (locObj || _impl_locale_js__WEBPACK_IMPORTED_MODULE_2__["default"].create(locale, numberingSystem, null)).weekdays(length, true);
-  }
-
-  /**
-   * Return an array of meridiems.
-   * @param {Object} opts - options
-   * @param {string} [opts.locale] - the locale code
-   * @example Info.meridiems() //=> [ 'AM', 'PM' ]
-   * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ]
-   * @return {Array}
-   */
-  static meridiems({ locale = null } = {}) {
-    return _impl_locale_js__WEBPACK_IMPORTED_MODULE_2__["default"].create(locale).meridiems();
-  }
+/***/ }),
+/* 318 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  /**
-   * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.
-   * @param {string} [length='short'] - the length of the era representation, such as "short" or "long".
-   * @param {Object} opts - options
-   * @param {string} [opts.locale] - the locale code
-   * @example Info.eras() //=> [ 'BC', 'AD' ]
-   * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]
-   * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]
-   * @return {Array}
-   */
-  static eras(length = "short", { locale = null } = {}) {
-    return _impl_locale_js__WEBPACK_IMPORTED_MODULE_2__["default"].create(locale, null, "gregory").eras(length);
-  }
+var arrayLikeKeys = __webpack_require__(319),
+    baseKeys = __webpack_require__(333),
+    isArrayLike = __webpack_require__(337);
 
-  /**
-   * Return the set of available features in this environment.
-   * Some features of Luxon are not available in all environments. For example, on older browsers, relative time formatting support is not available. Use this function to figure out if that's the case.
-   * Keys:
-   * * `relative`: whether this environment supports relative time formatting
-   * @example Info.features() //=> { relative: false }
-   * @return {Object}
-   */
-  static features() {
-    return { relative: Object(_impl_util_js__WEBPACK_IMPORTED_MODULE_5__["hasRelative"])() };
-  }
+/**
+ * Creates an array of the own enumerable property names of `object`.
+ *
+ * **Note:** Non-object values are coerced to objects. See the
+ * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
+ * for more details.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Object
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ * @example
+ *
+ * function Foo() {
+ *   this.a = 1;
+ *   this.b = 2;
+ * }
+ *
+ * Foo.prototype.c = 3;
+ *
+ * _.keys(new Foo);
+ * // => ['a', 'b'] (iteration order is not guaranteed)
+ *
+ * _.keys('hi');
+ * // => ['0', '1']
+ */
+function keys(object) {
+  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
 }
 
+module.exports = keys;
 
-/***/ }),
-/* 270 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(252);
-
-
-function dayDiff(earlier, later) {
-  const utcDayStart = (dt) => dt.toUTC(0, { keepLocalTime: true }).startOf("day").valueOf(),
-    ms = utcDayStart(later) - utcDayStart(earlier);
-  return Math.floor(_duration_js__WEBPACK_IMPORTED_MODULE_0__["default"].fromMillis(ms).as("days"));
-}
 
-function highOrderDiffs(cursor, later, units) {
-  const differs = [
-    ["years", (a, b) => b.year - a.year],
-    ["quarters", (a, b) => b.quarter - a.quarter + (b.year - a.year) * 4],
-    ["months", (a, b) => b.month - a.month + (b.year - a.year) * 12],
-    [
-      "weeks",
-      (a, b) => {
-        const days = dayDiff(a, b);
-        return (days - (days % 7)) / 7;
-      },
-    ],
-    ["days", dayDiff],
-  ];
+/***/ }),
+/* 319 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  const results = {};
-  let lowestOrder, highWater;
+var baseTimes = __webpack_require__(320),
+    isArguments = __webpack_require__(321),
+    isArray = __webpack_require__(324),
+    isBuffer = __webpack_require__(325),
+    isIndex = __webpack_require__(327),
+    isTypedArray = __webpack_require__(328);
 
-  for (const [unit, differ] of differs) {
-    if (units.indexOf(unit) >= 0) {
-      lowestOrder = unit;
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
 
-      let delta = differ(cursor, later);
-      highWater = cursor.plus({ [unit]: delta });
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
 
-      if (highWater > later) {
-        cursor = cursor.plus({ [unit]: delta - 1 });
-        delta -= 1;
-      } else {
-        cursor = highWater;
-      }
+/**
+ * Creates an array of the enumerable property names of the array-like `value`.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @param {boolean} inherited Specify returning inherited property names.
+ * @returns {Array} Returns the array of property names.
+ */
+function arrayLikeKeys(value, inherited) {
+  var isArr = isArray(value),
+      isArg = !isArr && isArguments(value),
+      isBuff = !isArr && !isArg && isBuffer(value),
+      isType = !isArr && !isArg && !isBuff && isTypedArray(value),
+      skipIndexes = isArr || isArg || isBuff || isType,
+      result = skipIndexes ? baseTimes(value.length, String) : [],
+      length = result.length;
 
-      results[unit] = delta;
+  for (var key in value) {
+    if ((inherited || hasOwnProperty.call(value, key)) &&
+        !(skipIndexes && (
+           // Safari 9 has enumerable `arguments.length` in strict mode.
+           key == 'length' ||
+           // Node.js 0.10 has enumerable non-index properties on buffers.
+           (isBuff && (key == 'offset' || key == 'parent')) ||
+           // PhantomJS 2 has enumerable non-index properties on typed arrays.
+           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
+           // Skip index properties.
+           isIndex(key, length)
+        ))) {
+      result.push(key);
     }
   }
-
-  return [cursor, results, highWater, lowestOrder];
+  return result;
 }
 
-/* harmony default export */ __webpack_exports__["default"] = (function (earlier, later, units, opts) {
-  let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units);
+module.exports = arrayLikeKeys;
 
-  const remainingMillis = later - cursor;
 
-  const lowerOrderUnits = units.filter(
-    (u) => ["hours", "minutes", "seconds", "milliseconds"].indexOf(u) >= 0
-  );
+/***/ }),
+/* 320 */
+/***/ (function(module, exports) {
 
-  if (lowerOrderUnits.length === 0) {
-    if (highWater < later) {
-      highWater = cursor.plus({ [lowestOrder]: 1 });
-    }
+/**
+ * The base implementation of `_.times` without support for iteratee shorthands
+ * or max array length checks.
+ *
+ * @private
+ * @param {number} n The number of times to invoke `iteratee`.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array} Returns the array of results.
+ */
+function baseTimes(n, iteratee) {
+  var index = -1,
+      result = Array(n);
 
-    if (highWater !== cursor) {
-      results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);
-    }
+  while (++index < n) {
+    result[index] = iteratee(index);
   }
+  return result;
+}
 
-  const duration = _duration_js__WEBPACK_IMPORTED_MODULE_0__["default"].fromObject(results, opts);
-
-  if (lowerOrderUnits.length > 0) {
-    return _duration_js__WEBPACK_IMPORTED_MODULE_0__["default"].fromMillis(remainingMillis, opts)
-      .shiftTo(...lowerOrderUnits)
-      .plus(duration);
-  } else {
-    return duration;
-  }
-});
+module.exports = baseTimes;
 
 
 /***/ }),
-/* 271 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "expandMacroTokens", function() { return expandMacroTokens; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "explainFromTokens", function() { return explainFromTokens; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseFromTokens", function() { return parseFromTokens; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "formatOptsToTokens", function() { return formatOptsToTokens; });
-/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(257);
-/* harmony import */ var _formatter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(254);
-/* harmony import */ var _zones_fixedOffsetZone_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(265);
-/* harmony import */ var _zones_IANAZone_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(263);
-/* harmony import */ var _datetime_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(251);
-/* harmony import */ var _digits_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(272);
-/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(253);
-
-
+/* 321 */
+/***/ (function(module, exports, __webpack_require__) {
 
+var baseIsArguments = __webpack_require__(322),
+    isObjectLike = __webpack_require__(323);
 
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
 
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
 
+/** Built-in value references. */
+var propertyIsEnumerable = objectProto.propertyIsEnumerable;
 
+/**
+ * Checks if `value` is likely an `arguments` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an `arguments` object,
+ *  else `false`.
+ * @example
+ *
+ * _.isArguments(function() { return arguments; }());
+ * // => true
+ *
+ * _.isArguments([1, 2, 3]);
+ * // => false
+ */
+var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
+  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
+    !propertyIsEnumerable.call(value, 'callee');
+};
 
-const MISSING_FTP = "missing Intl.DateTimeFormat.formatToParts support";
+module.exports = isArguments;
 
-function intUnit(regex, post = (i) => i) {
-  return { regex, deser: ([s]) => post(Object(_digits_js__WEBPACK_IMPORTED_MODULE_5__["parseDigits"])(s)) };
-}
 
-const NBSP = String.fromCharCode(160);
-const spaceOrNBSP = `[ ${NBSP}]`;
-const spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, "g");
+/***/ }),
+/* 322 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function fixListRegex(s) {
-  // make dots optional and also make them literal
-  // make space and non breakable space characters interchangeable
-  return s.replace(/\./g, "\\.?").replace(spaceOrNBSPRegExp, spaceOrNBSP);
-}
+var baseGetTag = __webpack_require__(304),
+    isObjectLike = __webpack_require__(323);
 
-function stripInsensitivities(s) {
-  return s
-    .replace(/\./g, "") // ignore dots that were made optional
-    .replace(spaceOrNBSPRegExp, " ") // interchange space and nbsp
-    .toLowerCase();
-}
+/** `Object#toString` result references. */
+var argsTag = '[object Arguments]';
 
-function oneOf(strings, startIndex) {
-  if (strings === null) {
-    return null;
-  } else {
-    return {
-      regex: RegExp(strings.map(fixListRegex).join("|")),
-      deser: ([s]) =>
-        strings.findIndex((i) => stripInsensitivities(s) === stripInsensitivities(i)) + startIndex,
-    };
-  }
+/**
+ * The base implementation of `_.isArguments`.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an `arguments` object,
+ */
+function baseIsArguments(value) {
+  return isObjectLike(value) && baseGetTag(value) == argsTag;
 }
 
-function offset(regex, groups) {
-  return { regex, deser: ([, h, m]) => Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["signedOffset"])(h, m), groups };
-}
-
-function simple(regex) {
-  return { regex, deser: ([s]) => s };
-}
-
-function escapeToken(value) {
-  return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
-}
-
-function unitForToken(token, loc) {
-  const one = Object(_digits_js__WEBPACK_IMPORTED_MODULE_5__["digitRegex"])(loc),
-    two = Object(_digits_js__WEBPACK_IMPORTED_MODULE_5__["digitRegex"])(loc, "{2}"),
-    three = Object(_digits_js__WEBPACK_IMPORTED_MODULE_5__["digitRegex"])(loc, "{3}"),
-    four = Object(_digits_js__WEBPACK_IMPORTED_MODULE_5__["digitRegex"])(loc, "{4}"),
-    six = Object(_digits_js__WEBPACK_IMPORTED_MODULE_5__["digitRegex"])(loc, "{6}"),
-    oneOrTwo = Object(_digits_js__WEBPACK_IMPORTED_MODULE_5__["digitRegex"])(loc, "{1,2}"),
-    oneToThree = Object(_digits_js__WEBPACK_IMPORTED_MODULE_5__["digitRegex"])(loc, "{1,3}"),
-    oneToSix = Object(_digits_js__WEBPACK_IMPORTED_MODULE_5__["digitRegex"])(loc, "{1,6}"),
-    oneToNine = Object(_digits_js__WEBPACK_IMPORTED_MODULE_5__["digitRegex"])(loc, "{1,9}"),
-    twoToFour = Object(_digits_js__WEBPACK_IMPORTED_MODULE_5__["digitRegex"])(loc, "{2,4}"),
-    fourToSix = Object(_digits_js__WEBPACK_IMPORTED_MODULE_5__["digitRegex"])(loc, "{4,6}"),
-    literal = (t) => ({ regex: RegExp(escapeToken(t.val)), deser: ([s]) => s, literal: true }),
-    unitate = (t) => {
-      if (token.literal) {
-        return literal(t);
-      }
-      switch (t.val) {
-        // era
-        case "G":
-          return oneOf(loc.eras("short", false), 0);
-        case "GG":
-          return oneOf(loc.eras("long", false), 0);
-        // years
-        case "y":
-          return intUnit(oneToSix);
-        case "yy":
-          return intUnit(twoToFour, _util_js__WEBPACK_IMPORTED_MODULE_0__["untruncateYear"]);
-        case "yyyy":
-          return intUnit(four);
-        case "yyyyy":
-          return intUnit(fourToSix);
-        case "yyyyyy":
-          return intUnit(six);
-        // months
-        case "M":
-          return intUnit(oneOrTwo);
-        case "MM":
-          return intUnit(two);
-        case "MMM":
-          return oneOf(loc.months("short", true, false), 1);
-        case "MMMM":
-          return oneOf(loc.months("long", true, false), 1);
-        case "L":
-          return intUnit(oneOrTwo);
-        case "LL":
-          return intUnit(two);
-        case "LLL":
-          return oneOf(loc.months("short", false, false), 1);
-        case "LLLL":
-          return oneOf(loc.months("long", false, false), 1);
-        // dates
-        case "d":
-          return intUnit(oneOrTwo);
-        case "dd":
-          return intUnit(two);
-        // ordinals
-        case "o":
-          return intUnit(oneToThree);
-        case "ooo":
-          return intUnit(three);
-        // time
-        case "HH":
-          return intUnit(two);
-        case "H":
-          return intUnit(oneOrTwo);
-        case "hh":
-          return intUnit(two);
-        case "h":
-          return intUnit(oneOrTwo);
-        case "mm":
-          return intUnit(two);
-        case "m":
-          return intUnit(oneOrTwo);
-        case "q":
-          return intUnit(oneOrTwo);
-        case "qq":
-          return intUnit(two);
-        case "s":
-          return intUnit(oneOrTwo);
-        case "ss":
-          return intUnit(two);
-        case "S":
-          return intUnit(oneToThree);
-        case "SSS":
-          return intUnit(three);
-        case "u":
-          return simple(oneToNine);
-        case "uu":
-          return simple(oneOrTwo);
-        case "uuu":
-          return intUnit(one);
-        // meridiem
-        case "a":
-          return oneOf(loc.meridiems(), 0);
-        // weekYear (k)
-        case "kkkk":
-          return intUnit(four);
-        case "kk":
-          return intUnit(twoToFour, _util_js__WEBPACK_IMPORTED_MODULE_0__["untruncateYear"]);
-        // weekNumber (W)
-        case "W":
-          return intUnit(oneOrTwo);
-        case "WW":
-          return intUnit(two);
-        // weekdays
-        case "E":
-        case "c":
-          return intUnit(one);
-        case "EEE":
-          return oneOf(loc.weekdays("short", false, false), 1);
-        case "EEEE":
-          return oneOf(loc.weekdays("long", false, false), 1);
-        case "ccc":
-          return oneOf(loc.weekdays("short", true, false), 1);
-        case "cccc":
-          return oneOf(loc.weekdays("long", true, false), 1);
-        // offset/zone
-        case "Z":
-        case "ZZ":
-          return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2);
-        case "ZZZ":
-          return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2);
-        // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing
-        // because we don't have any way to figure out what they are
-        case "z":
-          return simple(/[a-z_+-/]{1,256}?/i);
-        default:
-          return literal(t);
-      }
-    };
+module.exports = baseIsArguments;
 
-  const unit = unitate(token) || {
-    invalidReason: MISSING_FTP,
-  };
 
-  unit.token = token;
+/***/ }),
+/* 323 */
+/***/ (function(module, exports) {
 
-  return unit;
+/**
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
+ * and has a `typeof` result of "object".
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ * @example
+ *
+ * _.isObjectLike({});
+ * // => true
+ *
+ * _.isObjectLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isObjectLike(_.noop);
+ * // => false
+ *
+ * _.isObjectLike(null);
+ * // => false
+ */
+function isObjectLike(value) {
+  return value != null && typeof value == 'object';
 }
 
-const partTypeStyleToTokenVal = {
-  year: {
-    "2-digit": "yy",
-    numeric: "yyyyy",
-  },
-  month: {
-    numeric: "M",
-    "2-digit": "MM",
-    short: "MMM",
-    long: "MMMM",
-  },
-  day: {
-    numeric: "d",
-    "2-digit": "dd",
-  },
-  weekday: {
-    short: "EEE",
-    long: "EEEE",
-  },
-  dayperiod: "a",
-  dayPeriod: "a",
-  hour: {
-    numeric: "h",
-    "2-digit": "hh",
-  },
-  minute: {
-    numeric: "m",
-    "2-digit": "mm",
-  },
-  second: {
-    numeric: "s",
-    "2-digit": "ss",
-  },
-  timeZoneName: {
-    long: "ZZZZZ",
-    short: "ZZZ",
-  },
-};
-
-function tokenForPart(part, locale, formatOpts) {
-  const { type, value } = part;
-
-  if (type === "literal") {
-    return {
-      literal: true,
-      val: value,
-    };
-  }
-
-  const style = formatOpts[type];
-
-  let val = partTypeStyleToTokenVal[type];
-  if (typeof val === "object") {
-    val = val[style];
-  }
+module.exports = isObjectLike;
 
-  if (val) {
-    return {
-      literal: false,
-      val,
-    };
-  }
 
-  return undefined;
-}
+/***/ }),
+/* 324 */
+/***/ (function(module, exports) {
 
-function buildRegex(units) {
-  const re = units.map((u) => u.regex).reduce((f, r) => `${f}(${r.source})`, "");
-  return [`^${re}$`, units];
-}
+/**
+ * Checks if `value` is classified as an `Array` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an array, else `false`.
+ * @example
+ *
+ * _.isArray([1, 2, 3]);
+ * // => true
+ *
+ * _.isArray(document.body.children);
+ * // => false
+ *
+ * _.isArray('abc');
+ * // => false
+ *
+ * _.isArray(_.noop);
+ * // => false
+ */
+var isArray = Array.isArray;
 
-function match(input, regex, handlers) {
-  const matches = input.match(regex);
+module.exports = isArray;
 
-  if (matches) {
-    const all = {};
-    let matchIndex = 1;
-    for (const i in handlers) {
-      if (Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["hasOwnProperty"])(handlers, i)) {
-        const h = handlers[i],
-          groups = h.groups ? h.groups + 1 : 1;
-        if (!h.literal && h.token) {
-          all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));
-        }
-        matchIndex += groups;
-      }
-    }
-    return [matches, all];
-  } else {
-    return [matches, {}];
-  }
-}
-
-function dateTimeFromMatches(matches) {
-  const toField = (token) => {
-    switch (token) {
-      case "S":
-        return "millisecond";
-      case "s":
-        return "second";
-      case "m":
-        return "minute";
-      case "h":
-      case "H":
-        return "hour";
-      case "d":
-        return "day";
-      case "o":
-        return "ordinal";
-      case "L":
-      case "M":
-        return "month";
-      case "y":
-        return "year";
-      case "E":
-      case "c":
-        return "weekday";
-      case "W":
-        return "weekNumber";
-      case "k":
-        return "weekYear";
-      case "q":
-        return "quarter";
-      default:
-        return null;
-    }
-  };
 
-  let zone = null;
-  let specificOffset;
-  if (!Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["isUndefined"])(matches.z)) {
-    zone = _zones_IANAZone_js__WEBPACK_IMPORTED_MODULE_3__["default"].create(matches.z);
-  }
+/***/ }),
+/* 325 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  if (!Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["isUndefined"])(matches.Z)) {
-    if (!zone) {
-      zone = new _zones_fixedOffsetZone_js__WEBPACK_IMPORTED_MODULE_2__["default"](matches.Z);
-    }
-    specificOffset = matches.Z;
-  }
+/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(306),
+    stubFalse = __webpack_require__(326);
 
-  if (!Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["isUndefined"])(matches.q)) {
-    matches.M = (matches.q - 1) * 3 + 1;
-  }
+/** Detect free variable `exports`. */
+var freeExports =  true && exports && !exports.nodeType && exports;
 
-  if (!Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["isUndefined"])(matches.h)) {
-    if (matches.h < 12 && matches.a === 1) {
-      matches.h += 12;
-    } else if (matches.h === 12 && matches.a === 0) {
-      matches.h = 0;
-    }
-  }
+/** Detect free variable `module`. */
+var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
 
-  if (matches.G === 0 && matches.y) {
-    matches.y = -matches.y;
-  }
+/** Detect the popular CommonJS extension `module.exports`. */
+var moduleExports = freeModule && freeModule.exports === freeExports;
 
-  if (!Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["isUndefined"])(matches.u)) {
-    matches.S = Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["parseMillis"])(matches.u);
-  }
+/** Built-in value references. */
+var Buffer = moduleExports ? root.Buffer : undefined;
 
-  const vals = Object.keys(matches).reduce((r, k) => {
-    const f = toField(k);
-    if (f) {
-      r[f] = matches[k];
-    }
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
 
-    return r;
-  }, {});
+/**
+ * Checks if `value` is a buffer.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.3.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
+ * @example
+ *
+ * _.isBuffer(new Buffer(2));
+ * // => true
+ *
+ * _.isBuffer(new Uint8Array(2));
+ * // => false
+ */
+var isBuffer = nativeIsBuffer || stubFalse;
 
-  return [vals, zone, specificOffset];
-}
+module.exports = isBuffer;
 
-let dummyDateTimeCache = null;
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(197)(module)))
 
-function getDummyDateTime() {
-  if (!dummyDateTimeCache) {
-    dummyDateTimeCache = _datetime_js__WEBPACK_IMPORTED_MODULE_4__["default"].fromMillis(1555555555555);
-  }
+/***/ }),
+/* 326 */
+/***/ (function(module, exports) {
 
-  return dummyDateTimeCache;
+/**
+ * This method returns `false`.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.13.0
+ * @category Util
+ * @returns {boolean} Returns `false`.
+ * @example
+ *
+ * _.times(2, _.stubFalse);
+ * // => [false, false]
+ */
+function stubFalse() {
+  return false;
 }
 
-function maybeExpandMacroToken(token, locale) {
-  if (token.literal) {
-    return token;
-  }
+module.exports = stubFalse;
 
-  const formatOpts = _formatter_js__WEBPACK_IMPORTED_MODULE_1__["default"].macroTokenToFormatOpts(token.val);
-  const tokens = formatOptsToTokens(formatOpts, locale);
 
-  if (tokens == null || tokens.includes(undefined)) {
-    return token;
-  }
+/***/ }),
+/* 327 */
+/***/ (function(module, exports) {
 
-  return tokens;
-}
+/** Used as references for various `Number` constants. */
+var MAX_SAFE_INTEGER = 9007199254740991;
 
-function expandMacroTokens(tokens, locale) {
-  return Array.prototype.concat(...tokens.map((t) => maybeExpandMacroToken(t, locale)));
-}
+/** Used to detect unsigned integer values. */
+var reIsUint = /^(?:0|[1-9]\d*)$/;
 
 /**
+ * Checks if `value` is a valid array-like index.
+ *
  * @private
+ * @param {*} value The value to check.
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
  */
+function isIndex(value, length) {
+  var type = typeof value;
+  length = length == null ? MAX_SAFE_INTEGER : length;
 
-function explainFromTokens(locale, input, format) {
-  const tokens = expandMacroTokens(_formatter_js__WEBPACK_IMPORTED_MODULE_1__["default"].parseFormat(format), locale),
-    units = tokens.map((t) => unitForToken(t, locale)),
-    disqualifyingUnit = units.find((t) => t.invalidReason);
-
-  if (disqualifyingUnit) {
-    return { input, tokens, invalidReason: disqualifyingUnit.invalidReason };
-  } else {
-    const [regexString, handlers] = buildRegex(units),
-      regex = RegExp(regexString, "i"),
-      [rawMatches, matches] = match(input, regex, handlers),
-      [result, zone, specificOffset] = matches
-        ? dateTimeFromMatches(matches)
-        : [null, null, undefined];
-    if (Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["hasOwnProperty"])(matches, "a") && Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["hasOwnProperty"])(matches, "H")) {
-      throw new _errors_js__WEBPACK_IMPORTED_MODULE_6__["ConflictingSpecificationError"](
-        "Can't include meridiem when specifying 24-hour format"
-      );
-    }
-    return { input, tokens, regex, rawMatches, matches, result, zone, specificOffset };
-  }
-}
-
-function parseFromTokens(locale, input, format) {
-  const { result, zone, specificOffset, invalidReason } = explainFromTokens(locale, input, format);
-  return [result, zone, specificOffset, invalidReason];
+  return !!length &&
+    (type == 'number' ||
+      (type != 'symbol' && reIsUint.test(value))) &&
+        (value > -1 && value % 1 == 0 && value < length);
 }
 
-function formatOptsToTokens(formatOpts, locale) {
-  if (!formatOpts) {
-    return null;
-  }
-
-  const formatter = _formatter_js__WEBPACK_IMPORTED_MODULE_1__["default"].create(locale, formatOpts);
-  const parts = formatter.formatDateTimeParts(getDummyDateTime());
-  return parts.map((p) => tokenForPart(p, locale, formatOpts));
-}
+module.exports = isIndex;
 
 
 /***/ }),
-/* 272 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseDigits", function() { return parseDigits; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "digitRegex", function() { return digitRegex; });
-const numberingSystems = {
-  arab: "[\u0660-\u0669]",
-  arabext: "[\u06F0-\u06F9]",
-  bali: "[\u1B50-\u1B59]",
-  beng: "[\u09E6-\u09EF]",
-  deva: "[\u0966-\u096F]",
-  fullwide: "[\uFF10-\uFF19]",
-  gujr: "[\u0AE6-\u0AEF]",
-  hanidec: "[〇|一|二|三|四|五|六|七|八|九]",
-  khmr: "[\u17E0-\u17E9]",
-  knda: "[\u0CE6-\u0CEF]",
-  laoo: "[\u0ED0-\u0ED9]",
-  limb: "[\u1946-\u194F]",
-  mlym: "[\u0D66-\u0D6F]",
-  mong: "[\u1810-\u1819]",
-  mymr: "[\u1040-\u1049]",
-  orya: "[\u0B66-\u0B6F]",
-  tamldec: "[\u0BE6-\u0BEF]",
-  telu: "[\u0C66-\u0C6F]",
-  thai: "[\u0E50-\u0E59]",
-  tibt: "[\u0F20-\u0F29]",
-  latn: "\\d",
-};
-
-const numberingSystemsUTF16 = {
-  arab: [1632, 1641],
-  arabext: [1776, 1785],
-  bali: [6992, 7001],
-  beng: [2534, 2543],
-  deva: [2406, 2415],
-  fullwide: [65296, 65303],
-  gujr: [2790, 2799],
-  khmr: [6112, 6121],
-  knda: [3302, 3311],
-  laoo: [3792, 3801],
-  limb: [6470, 6479],
-  mlym: [3430, 3439],
-  mong: [6160, 6169],
-  mymr: [4160, 4169],
-  orya: [2918, 2927],
-  tamldec: [3046, 3055],
-  telu: [3174, 3183],
-  thai: [3664, 3673],
-  tibt: [3872, 3881],
-};
-
-const hanidecChars = numberingSystems.hanidec.replace(/[\[|\]]/g, "").split("");
-
-function parseDigits(str) {
-  let value = parseInt(str, 10);
-  if (isNaN(value)) {
-    value = "";
-    for (let i = 0; i < str.length; i++) {
-      const code = str.charCodeAt(i);
-
-      if (str[i].search(numberingSystems.hanidec) !== -1) {
-        value += hanidecChars.indexOf(str[i]);
-      } else {
-        for (const key in numberingSystemsUTF16) {
-          const [min, max] = numberingSystemsUTF16[key];
-          if (code >= min && code <= max) {
-            value += code - min;
-          }
-        }
-      }
-    }
-    return parseInt(value, 10);
-  } else {
-    return value;
-  }
-}
+/* 328 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function digitRegex({ numberingSystem }, append = "") {
-  return new RegExp(`${numberingSystems[numberingSystem || "latn"]}${append}`);
-}
+var baseIsTypedArray = __webpack_require__(329),
+    baseUnary = __webpack_require__(331),
+    nodeUtil = __webpack_require__(332);
 
+/* Node.js helper references. */
+var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
 
-/***/ }),
-/* 273 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/**
+ * Checks if `value` is classified as a typed array.
+ *
+ * @static
+ * @memberOf _
+ * @since 3.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
+ * @example
+ *
+ * _.isTypedArray(new Uint8Array);
+ * // => true
+ *
+ * _.isTypedArray([]);
+ * // => false
+ */
+var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
 
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gregorianToWeek", function() { return gregorianToWeek; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "weekToGregorian", function() { return weekToGregorian; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gregorianToOrdinal", function() { return gregorianToOrdinal; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ordinalToGregorian", function() { return ordinalToGregorian; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasInvalidWeekData", function() { return hasInvalidWeekData; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasInvalidOrdinalData", function() { return hasInvalidOrdinalData; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasInvalidGregorianData", function() { return hasInvalidGregorianData; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasInvalidTimeData", function() { return hasInvalidTimeData; });
-/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(257);
-/* harmony import */ var _invalid_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(258);
-
-
-
-const nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],
-  leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];
-
-function unitOutOfRange(unit, value) {
-  return new _invalid_js__WEBPACK_IMPORTED_MODULE_1__["default"](
-    "unit out of range",
-    `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`
-  );
-}
+module.exports = isTypedArray;
 
-function dayOfWeek(year, month, day) {
-  const d = new Date(Date.UTC(year, month - 1, day));
 
-  if (year < 100 && year >= 0) {
-    d.setUTCFullYear(d.getUTCFullYear() - 1900);
-  }
+/***/ }),
+/* 329 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  const js = d.getUTCDay();
+var baseGetTag = __webpack_require__(304),
+    isLength = __webpack_require__(330),
+    isObjectLike = __webpack_require__(323);
 
-  return js === 0 ? 7 : js;
-}
+/** `Object#toString` result references. */
+var argsTag = '[object Arguments]',
+    arrayTag = '[object Array]',
+    boolTag = '[object Boolean]',
+    dateTag = '[object Date]',
+    errorTag = '[object Error]',
+    funcTag = '[object Function]',
+    mapTag = '[object Map]',
+    numberTag = '[object Number]',
+    objectTag = '[object Object]',
+    regexpTag = '[object RegExp]',
+    setTag = '[object Set]',
+    stringTag = '[object String]',
+    weakMapTag = '[object WeakMap]';
 
-function computeOrdinal(year, month, day) {
-  return day + (Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["isLeapYear"])(year) ? leapLadder : nonLeapLadder)[month - 1];
-}
+var arrayBufferTag = '[object ArrayBuffer]',
+    dataViewTag = '[object DataView]',
+    float32Tag = '[object Float32Array]',
+    float64Tag = '[object Float64Array]',
+    int8Tag = '[object Int8Array]',
+    int16Tag = '[object Int16Array]',
+    int32Tag = '[object Int32Array]',
+    uint8Tag = '[object Uint8Array]',
+    uint8ClampedTag = '[object Uint8ClampedArray]',
+    uint16Tag = '[object Uint16Array]',
+    uint32Tag = '[object Uint32Array]';
 
-function uncomputeOrdinal(year, ordinal) {
-  const table = Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["isLeapYear"])(year) ? leapLadder : nonLeapLadder,
-    month0 = table.findIndex((i) => i < ordinal),
-    day = ordinal - table[month0];
-  return { month: month0 + 1, day };
-}
+/** Used to identify `toStringTag` values of typed arrays. */
+var typedArrayTags = {};
+typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
+typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
+typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
+typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
+typedArrayTags[uint32Tag] = true;
+typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
+typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
+typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
+typedArrayTags[errorTag] = typedArrayTags[funcTag] =
+typedArrayTags[mapTag] = typedArrayTags[numberTag] =
+typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
+typedArrayTags[setTag] = typedArrayTags[stringTag] =
+typedArrayTags[weakMapTag] = false;
 
 /**
+ * The base implementation of `_.isTypedArray` without Node.js optimizations.
+ *
  * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
  */
+function baseIsTypedArray(value) {
+  return isObjectLike(value) &&
+    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
+}
 
-function gregorianToWeek(gregObj) {
-  const { year, month, day } = gregObj,
-    ordinal = computeOrdinal(year, month, day),
-    weekday = dayOfWeek(year, month, day);
+module.exports = baseIsTypedArray;
 
-  let weekNumber = Math.floor((ordinal - weekday + 10) / 7),
-    weekYear;
 
-  if (weekNumber < 1) {
-    weekYear = year - 1;
-    weekNumber = Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["weeksInWeekYear"])(weekYear);
-  } else if (weekNumber > Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["weeksInWeekYear"])(year)) {
-    weekYear = year + 1;
-    weekNumber = 1;
-  } else {
-    weekYear = year;
-  }
+/***/ }),
+/* 330 */
+/***/ (function(module, exports) {
+
+/** Used as references for various `Number` constants. */
+var MAX_SAFE_INTEGER = 9007199254740991;
 
-  return { weekYear, weekNumber, weekday, ...Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["timeObject"])(gregObj) };
+/**
+ * Checks if `value` is a valid array-like length.
+ *
+ * **Note:** This method is loosely based on
+ * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
+ * @example
+ *
+ * _.isLength(3);
+ * // => true
+ *
+ * _.isLength(Number.MIN_VALUE);
+ * // => false
+ *
+ * _.isLength(Infinity);
+ * // => false
+ *
+ * _.isLength('3');
+ * // => false
+ */
+function isLength(value) {
+  return typeof value == 'number' &&
+    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
 }
 
-function weekToGregorian(weekData) {
-  const { weekYear, weekNumber, weekday } = weekData,
-    weekdayOfJan4 = dayOfWeek(weekYear, 1, 4),
-    yearInDays = Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["daysInYear"])(weekYear);
+module.exports = isLength;
 
-  let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 3,
-    year;
 
-  if (ordinal < 1) {
-    year = weekYear - 1;
-    ordinal += Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["daysInYear"])(year);
-  } else if (ordinal > yearInDays) {
-    year = weekYear + 1;
-    ordinal -= Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["daysInYear"])(weekYear);
-  } else {
-    year = weekYear;
-  }
+/***/ }),
+/* 331 */
+/***/ (function(module, exports) {
 
-  const { month, day } = uncomputeOrdinal(year, ordinal);
-  return { year, month, day, ...Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["timeObject"])(weekData) };
+/**
+ * The base implementation of `_.unary` without support for storing metadata.
+ *
+ * @private
+ * @param {Function} func The function to cap arguments for.
+ * @returns {Function} Returns the new capped function.
+ */
+function baseUnary(func) {
+  return function(value) {
+    return func(value);
+  };
 }
 
-function gregorianToOrdinal(gregData) {
-  const { year, month, day } = gregData;
-  const ordinal = computeOrdinal(year, month, day);
-  return { year, ordinal, ...Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["timeObject"])(gregData) };
-}
+module.exports = baseUnary;
 
-function ordinalToGregorian(ordinalData) {
-  const { year, ordinal } = ordinalData;
-  const { month, day } = uncomputeOrdinal(year, ordinal);
-  return { year, month, day, ...Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["timeObject"])(ordinalData) };
-}
 
-function hasInvalidWeekData(obj) {
-  const validYear = Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["isInteger"])(obj.weekYear),
-    validWeek = Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["integerBetween"])(obj.weekNumber, 1, Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["weeksInWeekYear"])(obj.weekYear)),
-    validWeekday = Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["integerBetween"])(obj.weekday, 1, 7);
+/***/ }),
+/* 332 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  if (!validYear) {
-    return unitOutOfRange("weekYear", obj.weekYear);
-  } else if (!validWeek) {
-    return unitOutOfRange("week", obj.week);
-  } else if (!validWeekday) {
-    return unitOutOfRange("weekday", obj.weekday);
-  } else return false;
-}
+/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(307);
 
-function hasInvalidOrdinalData(obj) {
-  const validYear = Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["isInteger"])(obj.year),
-    validOrdinal = Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["integerBetween"])(obj.ordinal, 1, Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["daysInYear"])(obj.year));
+/** Detect free variable `exports`. */
+var freeExports =  true && exports && !exports.nodeType && exports;
 
-  if (!validYear) {
-    return unitOutOfRange("year", obj.year);
-  } else if (!validOrdinal) {
-    return unitOutOfRange("ordinal", obj.ordinal);
-  } else return false;
-}
+/** Detect free variable `module`. */
+var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
 
-function hasInvalidGregorianData(obj) {
-  const validYear = Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["isInteger"])(obj.year),
-    validMonth = Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["integerBetween"])(obj.month, 1, 12),
-    validDay = Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["integerBetween"])(obj.day, 1, Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["daysInMonth"])(obj.year, obj.month));
+/** Detect the popular CommonJS extension `module.exports`. */
+var moduleExports = freeModule && freeModule.exports === freeExports;
 
-  if (!validYear) {
-    return unitOutOfRange("year", obj.year);
-  } else if (!validMonth) {
-    return unitOutOfRange("month", obj.month);
-  } else if (!validDay) {
-    return unitOutOfRange("day", obj.day);
-  } else return false;
-}
+/** Detect free variable `process` from Node.js. */
+var freeProcess = moduleExports && freeGlobal.process;
+
+/** Used to access faster Node.js helpers. */
+var nodeUtil = (function() {
+  try {
+    // Use `util.types` for Node.js 10+.
+    var types = freeModule && freeModule.require && freeModule.require('util').types;
 
-function hasInvalidTimeData(obj) {
-  const { hour, minute, second, millisecond } = obj;
-  const validHour =
-      Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["integerBetween"])(hour, 0, 23) ||
-      (hour === 24 && minute === 0 && second === 0 && millisecond === 0),
-    validMinute = Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["integerBetween"])(minute, 0, 59),
-    validSecond = Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["integerBetween"])(second, 0, 59),
-    validMillisecond = Object(_util_js__WEBPACK_IMPORTED_MODULE_0__["integerBetween"])(millisecond, 0, 999);
+    if (types) {
+      return types;
+    }
 
-  if (!validHour) {
-    return unitOutOfRange("hour", hour);
-  } else if (!validMinute) {
-    return unitOutOfRange("minute", minute);
-  } else if (!validSecond) {
-    return unitOutOfRange("second", second);
-  } else if (!validMillisecond) {
-    return unitOutOfRange("millisecond", millisecond);
-  } else return false;
-}
+    // Legacy `process.binding('util')` for Node.js < 10.
+    return freeProcess && freeProcess.binding && freeProcess.binding('util');
+  } catch (e) {}
+}());
 
+module.exports = nodeUtil;
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(197)(module)))
 
 /***/ }),
-/* 274 */
+/* 333 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
+var isPrototype = __webpack_require__(334),
+    nativeKeys = __webpack_require__(335);
 
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
 
-var _interopRequireDefault = __webpack_require__(1);
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
-var Sentry = _interopRequireWildcard(__webpack_require__(2));
-var _cozyClient = __webpack_require__(276);
-var _cozyLogger = _interopRequireDefault(__webpack_require__(211));
-var _doctypes = __webpack_require__(837);
-var _orgEcolyo = __webpack_require__(872);
-var _enums = __webpack_require__(230);
-var _luxon = __webpack_require__(250);
-var _consumptionFormatter = _interopRequireDefault(__webpack_require__(873));
-var _consumptionValidator = _interopRequireDefault(__webpack_require__(1056));
-var _converter = _interopRequireDefault(__webpack_require__(1057));
-var _queryRunner = _interopRequireDefault(__webpack_require__(1058));
-var _logger = _interopRequireDefault(__webpack_require__(1059));
-var _utils = __webpack_require__(878);
-function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
-function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
-const logStack = _cozyLogger.default.namespace('consumptionService');
-class ConsumptionDataManager {
-  constructor(_client) {
-    (0, _defineProperty2.default)(this, "_client", void 0);
-    (0, _defineProperty2.default)(this, "_consumptionFormatterService", void 0);
-    (0, _defineProperty2.default)(this, "_queryRunnerService", void 0);
-    (0, _defineProperty2.default)(this, "_consumptionValidatorService", void 0);
-    (0, _defineProperty2.default)(this, "fetchAvgTemperature", async (year, month) => {
-      const BronStationId = '69123002';
-      const avgTemperatureDate = `${year}-${(0, _utils.formatTwoDigits)(month)}`;
-      try {
-        const result = await this._client.getStackClient().fetchJSON('GET', `${_orgEcolyo.REMOTE_ORG_ECOLYO_AVG_TEMPERATURE}?identifiant=${BronStationId}&month=${avgTemperatureDate}`);
-        if (result && result.nb_results !== 0) {
-          return result.values[0].average_measurement;
-        }
-        throw new Error(`No average temperature found for ${avgTemperatureDate}`);
-      } catch (error) {
-        const errorMessage = `fetchAvgTemperature error : ${error}`;
-        logStack('error', errorMessage);
-        _logger.default.error(errorMessage);
-        Sentry.captureException(error);
-        return null;
-      }
-    });
-    this._client = _client;
-    this._consumptionFormatterService = new _consumptionFormatter.default();
-    this._queryRunnerService = new _queryRunner.default(this._client);
-    this._consumptionValidatorService = new _consumptionValidator.default();
-  }
-
-  /** Get graph data according on timeStep and fluidType */
-  async getGraphData({
-    timePeriod,
-    timeStep,
-    fluidTypes,
-    fluidStatus,
-    compareTimePeriod,
-    isHome,
-    isExport
-  }) {
-    const isInputValid = this._consumptionValidatorService.ValidateGetGraphData(timePeriod, timeStep, fluidTypes, compareTimePeriod, isExport);
-    if (!isInputValid) return null;
-    if (fluidTypes.length === 1 && !isHome) {
-      const fluidType = fluidTypes[0];
-      const fetchedData = await this.fetchSingleFluidGraphData(timePeriod, timeStep, fluidType, compareTimePeriod);
-      const formattedData = this.formatGraphDataManager(fetchedData, timeStep, timePeriod, compareTimePeriod || null, fluidType, fluidStatus ? fluidStatus[fluidType] : undefined);
-      return formattedData;
-    } else if (fluidTypes.length > 1 || isHome) {
-      const toBeAggregatedData = [];
-      for (const fluidType of fluidTypes) {
-        const fetchedData = await this.fetchSingleFluidGraphData(timePeriod, timeStep, fluidType, compareTimePeriod);
-        const formattedData = this.formatGraphDataManager(fetchedData, timeStep, timePeriod, compareTimePeriod || null, fluidType, fluidStatus ? fluidStatus[fluidType] : undefined);
-        // validating output data
-        toBeAggregatedData.push({
-          chartData: formattedData,
-          chartFluid: fluidType
-        });
-      }
-      const aggregatedData = this.aggregateGraphData(toBeAggregatedData);
-      return aggregatedData;
-    }
-    return null;
-  }
-  async getMaxLoad({
-    maxTimePeriod,
-    timeStep,
-    fluidTypes,
-    compareMaxTimePeriod,
-    isHome,
-    withDate
-  }) {
-    if (isHome) {
-      const allData = await this.getGraphData({
-        timePeriod: maxTimePeriod,
-        timeStep,
-        fluidTypes,
-        compareTimePeriod: compareMaxTimePeriod,
-        isHome
-      });
-      return allData !== null && allData !== void 0 && allData.actualData ? Math.max(...allData.actualData.map(d => d.value)) : 0;
-    } else {
-      const max = await this._queryRunnerService.fetchFluidMaxData(maxTimePeriod, timeStep, fluidTypes[0], withDate);
-      return max;
-    }
-  }
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
 
-  /** get last dataload available for a given fluid - return the daily data  */
-  async getLastDataload(fluidType) {
-    const timePeriod = {
-      startDate: _luxon.DateTime.now().plus({
-        days: -3
-      }).startOf('day'),
-      endDate: _luxon.DateTime.now()
-    };
-    const data = await this._queryRunnerService.fetchFluidData(timePeriod, _enums.TimeStep.DAY, fluidType);
-    return data;
+/**
+ * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ */
+function baseKeys(object) {
+  if (!isPrototype(object)) {
+    return nativeKeys(object);
   }
-  async getPerformanceIndicators(timePeriod, timeStep, fluidTypes, compareTimePeriod) {
-    const performanceIndicators = [];
-    for (const fluidType of fluidTypes) {
-      const graphData = await this.getGraphData({
-        timePeriod,
-        timeStep,
-        fluidTypes: [fluidType],
-        compareTimePeriod
-      });
-      if (graphData) {
-        const performanceIndicator = {
-          value: null,
-          compareValue: null,
-          percentageVariation: null,
-          price: null
-        };
-        const actualDataIsValid = this.PerformanceIndicatorsDataIsValid(graphData.actualData);
-        if (actualDataIsValid) {
-          performanceIndicator.value = this.calculatePerformanceIndicatorValue(graphData.actualData);
-          if (graphData.actualData[0].price) performanceIndicator.price = this.calculatePerformanceIndicatorPrice(graphData.actualData);
-        }
-        if (actualDataIsValid && graphData.comparisonData && this.PerformanceIndicatorsDataIsValid(graphData.comparisonData)) {
-          const comparisonSumValue = this.calculatePerformanceIndicatorValue(graphData.comparisonData);
-          performanceIndicator.compareValue = comparisonSumValue;
-          performanceIndicator.percentageVariation = this.calculatePerformanceIndicatorVariationPercentage(performanceIndicator.value || 0, comparisonSumValue);
-        }
-        performanceIndicators[fluidType] = performanceIndicator;
-      }
+  var result = [];
+  for (var key in Object(object)) {
+    if (hasOwnProperty.call(object, key) && key != 'constructor') {
+      result.push(key);
     }
-    return performanceIndicators;
   }
-  PerformanceIndicatorsDataIsValid(data) {
-    if (!data) return false;
-    const missingValue = data.find(element => element.value === -1);
-    if (missingValue) return false;
-    return true;
-  }
-  calculatePerformanceIndicatorValue(data) {
-    return data.reduce((a, b) => b.value !== -1 ? a + b.value : a, 0);
-  }
-  calculatePerformanceIndicatorPrice(data) {
-    return data.reduce((a, b) => b.price ? a + b.price : a, 0);
+  return result;
+}
+
+module.exports = baseKeys;
+
+
+/***/ }),
+/* 334 */
+/***/ (function(module, exports) {
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/**
+ * Checks if `value` is likely a prototype object.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
+ */
+function isPrototype(value) {
+  var Ctor = value && value.constructor,
+      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
+
+  return value === proto;
+}
+
+module.exports = isPrototype;
+
+
+/***/ }),
+/* 335 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var overArg = __webpack_require__(336);
+
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeKeys = overArg(Object.keys, Object);
+
+module.exports = nativeKeys;
+
+
+/***/ }),
+/* 336 */
+/***/ (function(module, exports) {
+
+/**
+ * Creates a unary function that invokes `func` with its argument transformed.
+ *
+ * @private
+ * @param {Function} func The function to wrap.
+ * @param {Function} transform The argument transform.
+ * @returns {Function} Returns the new function.
+ */
+function overArg(func, transform) {
+  return function(arg) {
+    return func(transform(arg));
+  };
+}
+
+module.exports = overArg;
+
+
+/***/ }),
+/* 337 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isFunction = __webpack_require__(303),
+    isLength = __webpack_require__(330);
+
+/**
+ * Checks if `value` is array-like. A value is considered array-like if it's
+ * not a function and has a `value.length` that's an integer greater than or
+ * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
+ * @example
+ *
+ * _.isArrayLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isArrayLike(document.body.children);
+ * // => true
+ *
+ * _.isArrayLike('abc');
+ * // => true
+ *
+ * _.isArrayLike(_.noop);
+ * // => false
+ */
+function isArrayLike(value) {
+  return value != null && isLength(value.length) && !isFunction(value);
+}
+
+module.exports = isArrayLike;
+
+
+/***/ }),
+/* 338 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseMatches = __webpack_require__(339),
+    baseMatchesProperty = __webpack_require__(398),
+    identity = __webpack_require__(414),
+    isArray = __webpack_require__(324),
+    property = __webpack_require__(415);
+
+/**
+ * The base implementation of `_.iteratee`.
+ *
+ * @private
+ * @param {*} [value=_.identity] The value to convert to an iteratee.
+ * @returns {Function} Returns the iteratee.
+ */
+function baseIteratee(value) {
+  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
+  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
+  if (typeof value == 'function') {
+    return value;
   }
-  calculatePerformanceIndicatorVariationPercentage(dataSum, comparisonDataSum) {
-    return comparisonDataSum !== 0 ? dataSum / comparisonDataSum - 1 : null;
+  if (value == null) {
+    return identity;
   }
-  async fetchSingleFluidGraphData(timePeriod, timeStep, fluidType, compareTimePeriod) {
-    let actualData = [];
-    let comparisonData = [];
-    let singleFluidGraphData = null;
-    if (compareTimePeriod) {
-      const result = await Promise.all([this._queryRunnerService.fetchFluidData(timePeriod, timeStep, fluidType), this._queryRunnerService.fetchFluidData(compareTimePeriod, timeStep, fluidType)]);
-      actualData = result[0];
-      comparisonData = result[1];
-    } else {
-      actualData = await this._queryRunnerService.fetchFluidData(timePeriod, timeStep, fluidType);
-    }
-    if (actualData) {
-      singleFluidGraphData = {
-        actualData: actualData,
-        comparisonData: comparisonData
-      };
-    }
-    return singleFluidGraphData;
+  if (typeof value == 'object') {
+    return isArray(value)
+      ? baseMatchesProperty(value[0], value[1])
+      : baseMatches(value);
   }
-  formatGraphDataManager(data, timeStep, timePeriod, compareTimePeriod, fluidType, fluidStatus) {
-    if (!data) return null;
-    const formattedActualData = this._consumptionFormatterService.formatGraphData(data.actualData, timePeriod, timeStep, fluidType, fluidStatus);
-    let formattedComparisonData = null;
-    if (compareTimePeriod) formattedComparisonData = this._consumptionFormatterService.formatGraphData(data.comparisonData ? data.comparisonData : [], compareTimePeriod, timeStep, fluidType, fluidStatus);
-    const result = {
-      actualData: formattedActualData,
-      comparisonData: formattedComparisonData
-    };
-    return result;
+  return property(value);
+}
+
+module.exports = baseIteratee;
+
+
+/***/ }),
+/* 339 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsMatch = __webpack_require__(340),
+    getMatchData = __webpack_require__(395),
+    matchesStrictComparable = __webpack_require__(397);
+
+/**
+ * The base implementation of `_.matches` which doesn't clone `source`.
+ *
+ * @private
+ * @param {Object} source The object of property values to match.
+ * @returns {Function} Returns the new spec function.
+ */
+function baseMatches(source) {
+  var matchData = getMatchData(source);
+  if (matchData.length == 1 && matchData[0][2]) {
+    return matchesStrictComparable(matchData[0][0], matchData[0][1]);
   }
+  return function(object) {
+    return object === source || baseIsMatch(object, source, matchData);
+  };
+}
 
-  /**
-   * Check that fluidTypes contains data over a timestep.
-   * @returns an array of FluidType that contains data
-   */
-  async getFluidsWithData(fluidTypes, timeStep) {
-    const fluidsWithData = [];
-    for (const fluidType of fluidTypes) {
-      if (await this.checkDoctypeEntries(fluidType, timeStep)) {
-        fluidsWithData.push(fluidType);
-      }
-    }
-    return fluidsWithData;
+module.exports = baseMatches;
+
+
+/***/ }),
+/* 340 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Stack = __webpack_require__(341),
+    baseIsEqual = __webpack_require__(371);
+
+/** Used to compose bitmasks for value comparisons. */
+var COMPARE_PARTIAL_FLAG = 1,
+    COMPARE_UNORDERED_FLAG = 2;
+
+/**
+ * The base implementation of `_.isMatch` without support for iteratee shorthands.
+ *
+ * @private
+ * @param {Object} object The object to inspect.
+ * @param {Object} source The object of property values to match.
+ * @param {Array} matchData The property names, values, and compare flags to match.
+ * @param {Function} [customizer] The function to customize comparisons.
+ * @returns {boolean} Returns `true` if `object` is a match, else `false`.
+ */
+function baseIsMatch(object, source, matchData, customizer) {
+  var index = matchData.length,
+      length = index,
+      noCustomizer = !customizer;
+
+  if (object == null) {
+    return !length;
   }
-  async getFluidsWithDataForTimePeriod(fluidTypes, timePeriod, timeStep = _enums.TimeStep.MONTH) {
-    const fluidsWithData = [];
-    for (const fluidType of fluidTypes) {
-      const data = await this._queryRunnerService.fetchFluidData(timePeriod, timeStep, fluidType);
-      if (data !== null && data !== void 0 && data.length) {
-        fluidsWithData.push(fluidType);
-      }
+  object = Object(object);
+  while (index--) {
+    var data = matchData[index];
+    if ((noCustomizer && data[2])
+          ? data[1] !== object[data[0]]
+          : !(data[0] in object)
+        ) {
+      return false;
     }
-    return fluidsWithData;
   }
+  while (++index < length) {
+    data = matchData[index];
+    var key = data[0],
+        objValue = object[key],
+        srcValue = data[1];
 
-  /**
-   * Retrieves an array of fluid types that have incomplete data for a given month.
-   *
-   * Data is incomplete if at least one daily data is missing for the month.
-   * @param {DateTime} month - The month for which to check the data completeness.
-   */
-  async getFluidsWithIncompleteData(fluidTypes, month) {
-    const fluidsWithIncompleteData = [];
-    const timePeriod = {
-      startDate: month.startOf('month'),
-      endDate: month.endOf('month')
-    };
-    for (const fluidType of fluidTypes) {
-      const data = await this._queryRunnerService.fetchFluidData(timePeriod, _enums.TimeStep.DAY, fluidType);
-      if (data !== null && data !== void 0 && data.length && (data === null || data === void 0 ? void 0 : data.length) < month.daysInMonth) {
-        fluidsWithIncompleteData.push(fluidType);
+    if (noCustomizer && data[2]) {
+      if (objValue === undefined && !(key in object)) {
+        return false;
       }
-    }
-    return fluidsWithIncompleteData;
-  }
-  async fetchAllFirstDateData(fluidTypes, timeStep) {
-    let firstDay = null;
-    const firstDays = [];
-    for (const fluidType of fluidTypes) {
-      firstDay = await this._queryRunnerService.getFirstDateData(fluidType, timeStep);
-      firstDays.push(firstDay);
-    }
-    return firstDays;
-  }
-  async fetchAllLastDateData(fluidTypes, timeStep) {
-    let lastDay = null;
-    const lastDays = [];
-    if (fluidTypes.length === 1) {
-      lastDay = await this._queryRunnerService.getLastDateData(fluidTypes[0], timeStep);
-      lastDays.push(lastDay);
-    } else if (fluidTypes.length > 1) {
-      for (const fluidType of fluidTypes) {
-        lastDay = await this._queryRunnerService.getLastDateData(fluidType, timeStep);
-        lastDays.push(lastDay);
+    } else {
+      var stack = new Stack;
+      if (customizer) {
+        var result = customizer(objValue, srcValue, key, object, source, stack);
       }
-    }
-    return lastDays;
-  }
-  async checkDoctypeEntries(fluideType, timeStep) {
-    const queryResult = await this._queryRunnerService.getEntries(fluideType, timeStep);
-    if ((queryResult === null || queryResult === void 0 ? void 0 : queryResult.data.length) > 0) {
-      return true;
-    }
-    return false;
-  }
-  aggregateGraphData(singleFluidCharts) {
-    var _singleFluidCharts$;
-    if ((_singleFluidCharts$ = singleFluidCharts[0]) !== null && _singleFluidCharts$ !== void 0 && _singleFluidCharts$.chartData) {
-      const converterService = new _converter.default();
-      const resultChartData = {
-        actualData: [],
-        comparisonData: []
-      };
-      let length = 0;
-      if (singleFluidCharts[0].chartData.comparisonData) {
-        length = Math.max(singleFluidCharts[0].chartData.comparisonData.length, singleFluidCharts[0].chartData.actualData.length);
-      } else length = singleFluidCharts[0].chartData.actualData.length;
-      for (let i = 0; i < length; i++) {
-        let aggregatedConvertedValue = 0;
-        let comparisonAggregatedConvertedValue = 0;
-        const tempAggregatedState = [];
-        const tempComparisonAggregatedState = [];
-        let noDataCount = 0;
-        let comparisonNoDataCount = 0;
-        const convertedValueDetail = [];
-        const comparisonConvertedValueDetail = [];
-        for (const singleFluidChart of singleFluidCharts) {
-          var _singleFluidChart$cha;
-          if (!singleFluidChart.chartData) break;
-          if (!singleFluidChart.chartData.actualData[i]) break;
-          const value = singleFluidChart.chartData.actualData[i].value;
-          tempAggregatedState.push(singleFluidChart.chartData.actualData[i].state);
-          let convertedValue = -1;
-          if (value === -1) noDataCount++;else {
-            convertedValue = converterService.LoadToEuro(value, singleFluidChart.chartFluid, singleFluidChart.chartData.actualData[i].price);
-            aggregatedConvertedValue += convertedValue;
-          }
-          convertedValueDetail[singleFluidChart.chartFluid] = {
-            value: convertedValue,
-            state: singleFluidChart.chartData.actualData[i].state
-          };
-          if ((_singleFluidChart$cha = singleFluidChart.chartData.comparisonData) !== null && _singleFluidChart$cha !== void 0 && _singleFluidChart$cha[i]) {
-            const comparisonValue = singleFluidChart.chartData.comparisonData[i].value;
-            tempComparisonAggregatedState.push(singleFluidChart.chartData.comparisonData[i].state);
-            let convertedComparisonValue = -1;
-            if (comparisonValue === -1) comparisonNoDataCount++;else {
-              convertedComparisonValue = converterService.LoadToEuro(comparisonValue, singleFluidChart.chartFluid, singleFluidChart.chartData.comparisonData[i].price);
-              comparisonAggregatedConvertedValue += convertedComparisonValue;
-            }
-            comparisonConvertedValueDetail[singleFluidChart.chartFluid] = {
-              value: convertedComparisonValue,
-              state: singleFluidChart.chartData.comparisonData[i].state
-            };
-          }
-        }
-        if (singleFluidCharts.length === noDataCount) aggregatedConvertedValue = -1;
-        if (singleFluidCharts.length === comparisonNoDataCount) comparisonAggregatedConvertedValue = -1;
-        if (singleFluidCharts[0].chartData.actualData[i]) {
-          // Define the aggregated state
-          const aggregatedDataloadState = this._consumptionFormatterService.defineAggregatedDataloadState(tempAggregatedState);
-          const actualDataLoad = {
-            date: singleFluidCharts[0].chartData.actualData[i].date,
-            value: aggregatedConvertedValue,
-            state: aggregatedDataloadState,
-            valueDetail: aggregatedConvertedValue === -1 ? null : convertedValueDetail
-          };
-          resultChartData.actualData.push(actualDataLoad);
-        }
-        if (singleFluidCharts[0].chartData.comparisonData && resultChartData.comparisonData && singleFluidCharts[0].chartData.comparisonData[i]) {
-          // Define the aggregated state
-          const aggregatedComparisonDataloadState = this._consumptionFormatterService.defineAggregatedDataloadState(tempComparisonAggregatedState);
-          const comparisonDataLoad = {
-            date: singleFluidCharts[0].chartData.comparisonData[i].date,
-            value: comparisonAggregatedConvertedValue,
-            state: aggregatedComparisonDataloadState,
-            valueDetail: comparisonAggregatedConvertedValue === -1 ? null : comparisonConvertedValueDetail
-          };
-          resultChartData.comparisonData.push(comparisonDataLoad);
-        }
+      if (!(result === undefined
+            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
+            : result
+          )) {
+        return false;
       }
-      return resultChartData;
     }
-    return null;
-  }
-  async getLastHourData(client, month) {
-    const query = (0, _cozyClient.Q)(_doctypes.ENEDIS_MINUTE_DOCTYPE).where({
-      month: {
-        $eq: month
-      }
-    }).indexFields(['year', 'month', 'day']).sortBy([{
-      year: 'desc'
-    }, {
-      month: 'desc'
-    }, {
-      day: 'desc'
-    }]).limitBy(1);
-    const data = await client.query(query);
-    return data.data;
-  }
-
-  /**
-   * Get the first entry of a given data doctype (enedis, grdf, egl)
-   */
-  async getFirstDataDateFromDoctype(doctype) {
-    const query = (0, _cozyClient.Q)(doctype).where({}).indexFields(['year', 'month']).sortBy([{
-      year: 'asc'
-    }, {
-      month: 'asc'
-    }]).limitBy(1);
-    const data = await this._client.query(query);
-    return data.data;
-  }
-  async getFirstDataDateFromDoctypeWithPrice(doctype) {
-    const query = (0, _cozyClient.Q)(doctype).where({
-      year: {
-        $gt: null
-      },
-      month: {
-        $gt: null
-      }
-    }).partialIndex({
-      price: {
-        $exists: false
-      }
-    }).indexFields(['year', 'month']).sortBy([{
-      year: 'asc'
-    }, {
-      month: 'asc'
-    }]).limitBy(1);
-    const data = await this._client.query(query);
-    return data.data[0];
   }
+  return true;
+}
 
-  /**
-   * Try to fetch average temperature from remote doctype
-   * @returns {Promise<number | null>} avg-temperature
-   */
-
-  /**
-   * Save one doc
-   * @param {DataloadEntity} consumptionDoc - Doc to save
-   * @returns {DataloadEntity} Saved doc
-   */
-  async saveDoc(consumptionDoc) {
-    const {
-      data: savedDoc
-    } = await this._client.save(consumptionDoc);
-    return savedDoc;
-  }
+module.exports = baseIsMatch;
 
-  /**
-   * Save an array of docs
-   * @param {DataloadEntity[]} consumptionDocs - Array of doc to save
-   * @returns {DataloadEntity[]} Array of saved docs
-   */
-  async saveDocs(consumptionDocs) {
-    const {
-      data: savedDocs
-    } = await this._client.saveAll(consumptionDocs);
-    return savedDocs;
-  }
-}
-exports.default = ConsumptionDataManager;
 
 /***/ }),
-/* 275 */
-/***/ (function(module, exports) {
+/* 341 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function _defineProperty(obj, key, value) {
-  if (key in obj) {
-    Object.defineProperty(obj, key, {
-      value: value,
-      enumerable: true,
-      configurable: true,
-      writable: true
-    });
-  } else {
-    obj[key] = value;
-  }
+var ListCache = __webpack_require__(342),
+    stackClear = __webpack_require__(350),
+    stackDelete = __webpack_require__(351),
+    stackGet = __webpack_require__(352),
+    stackHas = __webpack_require__(353),
+    stackSet = __webpack_require__(354);
 
-  return obj;
+/**
+ * Creates a stack cache object to store key-value pairs.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function Stack(entries) {
+  var data = this.__data__ = new ListCache(entries);
+  this.size = data.size;
 }
 
-module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
+// Add methods to `Stack`.
+Stack.prototype.clear = stackClear;
+Stack.prototype['delete'] = stackDelete;
+Stack.prototype.get = stackGet;
+Stack.prototype.has = stackHas;
+Stack.prototype.set = stackSet;
+
+module.exports = Stack;
+
 
 /***/ }),
-/* 276 */
+/* 342 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
+var listCacheClear = __webpack_require__(343),
+    listCacheDelete = __webpack_require__(344),
+    listCacheGet = __webpack_require__(347),
+    listCacheHas = __webpack_require__(348),
+    listCacheSet = __webpack_require__(349);
 
+/**
+ * Creates an list cache object.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function ListCache(entries) {
+  var index = -1,
+      length = entries == null ? 0 : entries.length;
 
-var _interopRequireWildcard = __webpack_require__(277);
+  this.clear();
+  while (++index < length) {
+    var entry = entries[index];
+    this.set(entry[0], entry[1]);
+  }
+}
 
-var _interopRequireDefault = __webpack_require__(1);
+// Add methods to `ListCache`.
+ListCache.prototype.clear = listCacheClear;
+ListCache.prototype['delete'] = listCacheDelete;
+ListCache.prototype.get = listCacheGet;
+ListCache.prototype.has = listCacheHas;
+ListCache.prototype.set = listCacheSet;
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-var _exportNames = {
-  CozyLink: true,
-  StackLink: true,
-  compose: true,
-  QueryDefinition: true,
-  Mutations: true,
-  MutationTypes: true,
-  getDoctypeFromOperation: true,
-  Q: true,
-  Association: true,
-  HasMany: true,
-  HasOne: true,
-  HasOneInPlace: true,
-  HasManyInPlace: true,
-  HasManyTriggers: true,
-  deconstructCozyWebLinkWithSlug: true,
-  deconstructRedirectLink: true,
-  dehydrate: true,
-  generateWebLink: true,
-  ensureFirstSlash: true,
-  rootCozyUrl: true,
-  InvalidCozyUrlError: true,
-  InvalidProtocolError: true,
-  BlockedCozyError: true,
-  cancelable: true,
-  getQueryFromState: true,
-  Registry: true,
-  manifest: true,
-  BulkEditError: true,
-  models: true,
-  fetchPolicies: true
-};
-Object.defineProperty(exports, "default", {
-  enumerable: true,
-  get: function get() {
-    return _CozyClient.default;
-  }
-});
-Object.defineProperty(exports, "CozyLink", {
-  enumerable: true,
-  get: function get() {
-    return _CozyLink.default;
-  }
-});
-Object.defineProperty(exports, "StackLink", {
-  enumerable: true,
-  get: function get() {
-    return _StackLink.default;
-  }
-});
-Object.defineProperty(exports, "compose", {
-  enumerable: true,
-  get: function get() {
-    return _flow.default;
-  }
-});
-Object.defineProperty(exports, "QueryDefinition", {
-  enumerable: true,
-  get: function get() {
-    return _dsl.QueryDefinition;
-  }
-});
-Object.defineProperty(exports, "Mutations", {
-  enumerable: true,
-  get: function get() {
-    return _dsl.Mutations;
-  }
-});
-Object.defineProperty(exports, "MutationTypes", {
-  enumerable: true,
-  get: function get() {
-    return _dsl.MutationTypes;
-  }
-});
-Object.defineProperty(exports, "getDoctypeFromOperation", {
-  enumerable: true,
-  get: function get() {
-    return _dsl.getDoctypeFromOperation;
-  }
-});
-Object.defineProperty(exports, "Q", {
-  enumerable: true,
-  get: function get() {
-    return _dsl.Q;
-  }
-});
-Object.defineProperty(exports, "Association", {
-  enumerable: true,
-  get: function get() {
-    return _associations.Association;
-  }
-});
-Object.defineProperty(exports, "HasMany", {
-  enumerable: true,
-  get: function get() {
-    return _associations.HasMany;
-  }
-});
-Object.defineProperty(exports, "HasOne", {
-  enumerable: true,
-  get: function get() {
-    return _associations.HasOne;
-  }
-});
-Object.defineProperty(exports, "HasOneInPlace", {
-  enumerable: true,
-  get: function get() {
-    return _associations.HasOneInPlace;
-  }
-});
-Object.defineProperty(exports, "HasManyInPlace", {
-  enumerable: true,
-  get: function get() {
-    return _associations.HasManyInPlace;
-  }
-});
-Object.defineProperty(exports, "HasManyTriggers", {
-  enumerable: true,
-  get: function get() {
-    return _associations.HasManyTriggers;
-  }
-});
-Object.defineProperty(exports, "deconstructCozyWebLinkWithSlug", {
-  enumerable: true,
-  get: function get() {
-    return _helpers.deconstructCozyWebLinkWithSlug;
-  }
-});
-Object.defineProperty(exports, "deconstructRedirectLink", {
-  enumerable: true,
-  get: function get() {
-    return _helpers.deconstructRedirectLink;
-  }
-});
-Object.defineProperty(exports, "dehydrate", {
-  enumerable: true,
-  get: function get() {
-    return _helpers.dehydrate;
-  }
-});
-Object.defineProperty(exports, "generateWebLink", {
-  enumerable: true,
-  get: function get() {
-    return _helpers.generateWebLink;
-  }
-});
-Object.defineProperty(exports, "ensureFirstSlash", {
-  enumerable: true,
-  get: function get() {
-    return _helpers.ensureFirstSlash;
-  }
-});
-Object.defineProperty(exports, "rootCozyUrl", {
-  enumerable: true,
-  get: function get() {
-    return _helpers.rootCozyUrl;
-  }
-});
-Object.defineProperty(exports, "InvalidCozyUrlError", {
-  enumerable: true,
-  get: function get() {
-    return _helpers.InvalidCozyUrlError;
-  }
-});
-Object.defineProperty(exports, "InvalidProtocolError", {
-  enumerable: true,
-  get: function get() {
-    return _helpers.InvalidProtocolError;
-  }
-});
-Object.defineProperty(exports, "BlockedCozyError", {
-  enumerable: true,
-  get: function get() {
-    return _helpers.BlockedCozyError;
-  }
-});
-Object.defineProperty(exports, "cancelable", {
-  enumerable: true,
-  get: function get() {
-    return _utils.cancelable;
-  }
-});
-Object.defineProperty(exports, "getQueryFromState", {
-  enumerable: true,
-  get: function get() {
-    return _store.getQueryFromState;
-  }
-});
-Object.defineProperty(exports, "Registry", {
-  enumerable: true,
-  get: function get() {
-    return _registry.default;
-  }
-});
-Object.defineProperty(exports, "BulkEditError", {
-  enumerable: true,
-  get: function get() {
-    return _errors.BulkEditError;
-  }
-});
-Object.defineProperty(exports, "fetchPolicies", {
-  enumerable: true,
-  get: function get() {
-    return _policies.default;
-  }
-});
-exports.models = exports.manifest = void 0;
-
-var _CozyClient = _interopRequireDefault(__webpack_require__(279));
+module.exports = ListCache;
 
-var _CozyLink = _interopRequireDefault(__webpack_require__(623));
 
-var _StackLink = _interopRequireDefault(__webpack_require__(620));
+/***/ }),
+/* 343 */
+/***/ (function(module, exports) {
 
-var _flow = _interopRequireDefault(__webpack_require__(702));
+/**
+ * Removes all key-value entries from the list cache.
+ *
+ * @private
+ * @name clear
+ * @memberOf ListCache
+ */
+function listCacheClear() {
+  this.__data__ = [];
+  this.size = 0;
+}
 
-var _dsl = __webpack_require__(495);
+module.exports = listCacheClear;
 
-var _associations = __webpack_require__(625);
 
-var _helpers = __webpack_require__(663);
+/***/ }),
+/* 344 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _utils = __webpack_require__(714);
+var assocIndexOf = __webpack_require__(345);
 
-var _store = __webpack_require__(627);
+/** Used for built-in method references. */
+var arrayProto = Array.prototype;
 
-var _registry = _interopRequireDefault(__webpack_require__(485));
+/** Built-in value references. */
+var splice = arrayProto.splice;
 
-var manifest = _interopRequireWildcard(__webpack_require__(715));
+/**
+ * Removes `key` and its value from the list cache.
+ *
+ * @private
+ * @name delete
+ * @memberOf ListCache
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function listCacheDelete(key) {
+  var data = this.__data__,
+      index = assocIndexOf(data, key);
 
-exports.manifest = manifest;
+  if (index < 0) {
+    return false;
+  }
+  var lastIndex = data.length - 1;
+  if (index == lastIndex) {
+    data.pop();
+  } else {
+    splice.call(data, index, 1);
+  }
+  --this.size;
+  return true;
+}
 
-var _mock = __webpack_require__(716);
+module.exports = listCacheDelete;
 
-Object.keys(_mock).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _mock[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function get() {
-      return _mock[key];
-    }
-  });
-});
 
-var _errors = __webpack_require__(624);
+/***/ }),
+/* 345 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _cli = __webpack_require__(717);
+var eq = __webpack_require__(346);
 
-Object.keys(_cli).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _cli[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function get() {
-      return _cli[key];
+/**
+ * Gets the index at which the `key` is found in `array` of key-value pairs.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {*} key The key to search for.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+function assocIndexOf(array, key) {
+  var length = array.length;
+  while (length--) {
+    if (eq(array[length][0], key)) {
+      return length;
     }
-  });
-});
-
-var models = _interopRequireWildcard(__webpack_require__(740));
+  }
+  return -1;
+}
 
-exports.models = models;
+module.exports = assocIndexOf;
 
-var _policies = _interopRequireDefault(__webpack_require__(686));
 
 /***/ }),
-/* 277 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var _typeof = __webpack_require__(278)["default"];
+/* 346 */
+/***/ (function(module, exports) {
 
-function _getRequireWildcardCache(nodeInterop) {
-  if (typeof WeakMap !== "function") return null;
-  var cacheBabelInterop = new WeakMap();
-  var cacheNodeInterop = new WeakMap();
-  return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
-    return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
-  })(nodeInterop);
+/**
+ * Performs a
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+ * comparison between two values to determine if they are equivalent.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to compare.
+ * @param {*} other The other value to compare.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+ * @example
+ *
+ * var object = { 'a': 1 };
+ * var other = { 'a': 1 };
+ *
+ * _.eq(object, object);
+ * // => true
+ *
+ * _.eq(object, other);
+ * // => false
+ *
+ * _.eq('a', 'a');
+ * // => true
+ *
+ * _.eq('a', Object('a'));
+ * // => false
+ *
+ * _.eq(NaN, NaN);
+ * // => true
+ */
+function eq(value, other) {
+  return value === other || (value !== value && other !== other);
 }
 
-function _interopRequireWildcard(obj, nodeInterop) {
-  if (!nodeInterop && obj && obj.__esModule) {
-    return obj;
-  }
+module.exports = eq;
 
-  if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") {
-    return {
-      "default": obj
-    };
-  }
 
-  var cache = _getRequireWildcardCache(nodeInterop);
+/***/ }),
+/* 347 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  if (cache && cache.has(obj)) {
-    return cache.get(obj);
-  }
+var assocIndexOf = __webpack_require__(345);
 
-  var newObj = {};
-  var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
+/**
+ * Gets the list cache value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf ListCache
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function listCacheGet(key) {
+  var data = this.__data__,
+      index = assocIndexOf(data, key);
 
-  for (var key in obj) {
-    if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
-      var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
+  return index < 0 ? undefined : data[index][1];
+}
 
-      if (desc && (desc.get || desc.set)) {
-        Object.defineProperty(newObj, key, desc);
-      } else {
-        newObj[key] = obj[key];
-      }
-    }
-  }
+module.exports = listCacheGet;
 
-  newObj["default"] = obj;
 
-  if (cache) {
-    cache.set(obj, newObj);
-  }
+/***/ }),
+/* 348 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  return newObj;
+var assocIndexOf = __webpack_require__(345);
+
+/**
+ * Checks if a list cache value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf ListCache
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function listCacheHas(key) {
+  return assocIndexOf(this.__data__, key) > -1;
 }
 
-module.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports["default"] = module.exports;
+module.exports = listCacheHas;
+
 
 /***/ }),
-/* 278 */
-/***/ (function(module, exports) {
+/* 349 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function _typeof(obj) {
-  "@babel/helpers - typeof";
+var assocIndexOf = __webpack_require__(345);
 
-  return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
-    return typeof obj;
-  } : function (obj) {
-    return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
-  }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(obj);
+/**
+ * Sets the list cache `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf ListCache
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the list cache instance.
+ */
+function listCacheSet(key, value) {
+  var data = this.__data__,
+      index = assocIndexOf(data, key);
+
+  if (index < 0) {
+    ++this.size;
+    data.push([key, value]);
+  } else {
+    data[index][1] = value;
+  }
+  return this;
 }
 
-module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
+module.exports = listCacheSet;
+
 
 /***/ }),
-/* 279 */
+/* 350 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
-
+var ListCache = __webpack_require__(342);
 
-var _interopRequireWildcard = __webpack_require__(277);
+/**
+ * Removes all key-value entries from the stack.
+ *
+ * @private
+ * @name clear
+ * @memberOf Stack
+ */
+function stackClear() {
+  this.__data__ = new ListCache;
+  this.size = 0;
+}
 
-var _interopRequireDefault = __webpack_require__(1);
+module.exports = stackClear;
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
 
-var _toArray2 = _interopRequireDefault(__webpack_require__(280));
+/***/ }),
+/* 351 */
+/***/ (function(module, exports) {
 
-var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
+/**
+ * Removes `key` and its value from the stack.
+ *
+ * @private
+ * @name delete
+ * @memberOf Stack
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function stackDelete(key) {
+  var data = this.__data__,
+      result = data['delete'](key);
 
-var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
+  this.size = data.size;
+  return result;
+}
 
-var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(291));
+module.exports = stackDelete;
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+/***/ }),
+/* 352 */
+/***/ (function(module, exports) {
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+/**
+ * Gets the stack value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf Stack
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function stackGet(key) {
+  return this.__data__.get(key);
+}
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+module.exports = stackGet;
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-var _mapValues = _interopRequireDefault(__webpack_require__(298));
+/***/ }),
+/* 353 */
+/***/ (function(module, exports) {
 
-var _fromPairs = _interopRequireDefault(__webpack_require__(418));
+/**
+ * Checks if a stack value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf Stack
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function stackHas(key) {
+  return this.__data__.has(key);
+}
 
-var _flatten = _interopRequireDefault(__webpack_require__(419));
+module.exports = stackHas;
 
-var _uniqBy = _interopRequireDefault(__webpack_require__(422));
 
-var _zip = _interopRequireDefault(__webpack_require__(432));
+/***/ }),
+/* 354 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _forEach = _interopRequireDefault(__webpack_require__(442));
+var ListCache = __webpack_require__(342),
+    Map = __webpack_require__(355),
+    MapCache = __webpack_require__(356);
 
-var _get = _interopRequireDefault(__webpack_require__(399));
+/** Used as the size to enable large array optimizations. */
+var LARGE_ARRAY_SIZE = 200;
 
-var _microee = _interopRequireDefault(__webpack_require__(447));
+/**
+ * Sets the stack `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf Stack
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the stack cache instance.
+ */
+function stackSet(key, value) {
+  var data = this.__data__;
+  if (data instanceof ListCache) {
+    var pairs = data.__data__;
+    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
+      pairs.push([key, value]);
+      this.size = ++data.size;
+      return this;
+    }
+    data = this.__data__ = new MapCache(pairs);
+  }
+  data.set(key, value);
+  this.size = data.size;
+  return this;
+}
 
-var _cozyStackClient = _interopRequireWildcard(__webpack_require__(448));
+module.exports = stackSet;
 
-var _const = __webpack_require__(619);
 
-var _StackLink = _interopRequireDefault(__webpack_require__(620));
+/***/ }),
+/* 355 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _associations = __webpack_require__(625);
+var getNative = __webpack_require__(301),
+    root = __webpack_require__(306);
 
-var _helpers = __webpack_require__(662);
+/* Built-in method references that are verified to be native. */
+var Map = getNative(root, 'Map');
 
-var _helpers2 = __webpack_require__(663);
+module.exports = Map;
 
-var _dsl = __webpack_require__(495);
 
-var _mobile = __webpack_require__(666);
+/***/ }),
+/* 356 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _optimize = _interopRequireDefault(__webpack_require__(684));
+var mapCacheClear = __webpack_require__(357),
+    mapCacheDelete = __webpack_require__(365),
+    mapCacheGet = __webpack_require__(368),
+    mapCacheHas = __webpack_require__(369),
+    mapCacheSet = __webpack_require__(370);
 
-var _store = _interopRequireWildcard(__webpack_require__(627));
+/**
+ * Creates a map cache object to store key-value pairs.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function MapCache(entries) {
+  var index = -1,
+      length = entries == null ? 0 : entries.length;
 
-var _policies = _interopRequireDefault(__webpack_require__(686));
+  this.clear();
+  while (++index < length) {
+    var entry = entries[index];
+    this.set(entry[0], entry[1]);
+  }
+}
 
-var _Schema = _interopRequireDefault(__webpack_require__(687));
+// Add methods to `MapCache`.
+MapCache.prototype.clear = mapCacheClear;
+MapCache.prototype['delete'] = mapCacheDelete;
+MapCache.prototype.get = mapCacheGet;
+MapCache.prototype.has = mapCacheHas;
+MapCache.prototype.set = mapCacheSet;
 
-var _CozyLink = __webpack_require__(623);
+module.exports = MapCache;
 
-var _ObservableQuery = _interopRequireDefault(__webpack_require__(693));
 
-var _snapshots = __webpack_require__(694);
+/***/ }),
+/* 357 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _logger = _interopRequireDefault(__webpack_require__(498));
+var Hash = __webpack_require__(358),
+    ListCache = __webpack_require__(342),
+    Map = __webpack_require__(355);
 
-var _queries = __webpack_require__(637);
+/**
+ * Removes all key-value entries from the map.
+ *
+ * @private
+ * @name clear
+ * @memberOf MapCache
+ */
+function mapCacheClear() {
+  this.size = 0;
+  this.__data__ = {
+    'hash': new Hash,
+    'map': new (Map || ListCache),
+    'string': new Hash
+  };
+}
 
-var _jsonStableStringify = _interopRequireDefault(__webpack_require__(695));
+module.exports = mapCacheClear;
 
-var _promiseCache = _interopRequireDefault(__webpack_require__(699));
 
-var _flagshipCertification = __webpack_require__(700);
+/***/ }),
+/* 358 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+var hashClear = __webpack_require__(359),
+    hashDelete = __webpack_require__(361),
+    hashGet = __webpack_require__(362),
+    hashHas = __webpack_require__(363),
+    hashSet = __webpack_require__(364);
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+/**
+ * Creates a hash object.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function Hash(entries) {
+  var index = -1,
+      length = entries == null ? 0 : entries.length;
 
-function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
+  this.clear();
+  while (++index < length) {
+    var entry = entries[index];
+    this.set(entry[0], entry[1]);
+  }
+}
 
-function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+// Add methods to `Hash`.
+Hash.prototype.clear = hashClear;
+Hash.prototype['delete'] = hashDelete;
+Hash.prototype.get = hashGet;
+Hash.prototype.has = hashHas;
+Hash.prototype.set = hashSet;
 
-function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+module.exports = Hash;
 
-var ensureArray = function ensureArray(arr) {
-  return Array.isArray(arr) ? arr : [arr];
-};
 
-var deprecatedHandler = function deprecatedHandler(msg) {
-  return {
-    get: function get(target, prop) {
-      _logger.default.warn(msg);
+/***/ }),
+/* 359 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      return target[prop];
-    }
-  };
-};
+var nativeCreate = __webpack_require__(360);
 
-var supportsReferences = function supportsReferences(relationshipClass) {
-  return relationshipClass.prototype.addReferences && relationshipClass.prototype.removeReferences;
-};
+/**
+ * Removes all key-value entries from the hash.
+ *
+ * @private
+ * @name clear
+ * @memberOf Hash
+ */
+function hashClear() {
+  this.__data__ = nativeCreate ? nativeCreate(null) : {};
+  this.size = 0;
+}
 
-var referencesUnsupportedError = function referencesUnsupportedError(relationshipClassName) {
-  return new Error("The \"".concat(relationshipClassName, "\" relationship does not support references. If you need to add references to a document, its relationship class must have the methods {add,remove}References"));
-};
+module.exports = hashClear;
 
-var securiseUri = function securiseUri(uri) {
-  var _window$cozy;
 
-  if (uri && typeof window !== 'undefined' && (_window$cozy = window['cozy']) !== null && _window$cozy !== void 0 && _window$cozy.isSecureProtocol) {
-    var secureUrl = new URL(uri);
-    secureUrl.protocol = 'https:';
-    return secureUrl.toString();
-  }
+/***/ }),
+/* 360 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  return uri;
-};
+var getNative = __webpack_require__(301);
+
+/* Built-in method references that are verified to be native. */
+var nativeCreate = getNative(Object, 'create');
+
+module.exports = nativeCreate;
+
+
+/***/ }),
+/* 361 */
+/***/ (function(module, exports) {
 
-var DOC_CREATION = 'creation';
-var DOC_UPDATE = 'update';
 /**
- * @typedef {object} ClientOptions
- * @property {object} [client]
- * @property {object} [link]
- * @property {object} [links]
- * @property {import("./types").Token} [token]
- * @property {string} [uri]
- * @property {object} [stackClient]
- * @property {boolean} [warningForCustomHandlers]
- * @property {boolean} [autoHydrate]
- * @property {boolean} [backgroundFetching] - If set to true, backgroundFetching will be enabled by default on every query. Meaning that, when the fetchStatus has already been loaded, it won't be updated during future fetches. Instead, a `isFetching` attribute will be used to indicate when background fetching is started.
- * @property {object} [oauth]
- * @property {Function} [onTokenRefresh]
- * @property {Function} [onError] - Default callback if a query is errored
- * @property  {import("./types").Link}         [link]   - Backward compatibility
- * @property  {Array<import("./types").Link>}  [links]  - List of links
- * @property  {object}       [schema] - Schema description for each doctypes
- * @property  {import("./types").AppMetadata}  [appMetadata] - Metadata about the application that will be used in ensureCozyMetadata
- * @property  {import("./types").ClientCapabilities} [capabilities] - Capabilities sent by the stack
- * @property  {boolean} [store] - If set to false, the client will not instantiate a Redux store automatically. Use this if you want to merge cozy-client's store with your own redux store. See [here](https://docs.cozy.io/en/cozy-client/react-integration/#1b-use-your-own-redux-store) for more information.
+ * Removes `key` and its value from the hash.
+ *
+ * @private
+ * @name delete
+ * @memberOf Hash
+ * @param {Object} hash The hash to modify.
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  */
+function hashDelete(key) {
+  var result = this.has(key) && delete this.__data__[key];
+  this.size -= result ? 1 : 0;
+  return result;
+}
+
+module.exports = hashDelete;
+
+
+/***/ }),
+/* 362 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var nativeCreate = __webpack_require__(360);
+
+/** Used to stand-in for `undefined` hash values. */
+var HASH_UNDEFINED = '__lodash_hash_undefined__';
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
 
 /**
- * Responsible for
+ * Gets the hash value for `key`.
  *
- * - Creating observable queries
- * - Hydration
- * - Creating plan for saving documents
- * - Associations
+ * @private
+ * @name get
+ * @memberOf Hash
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
  */
+function hashGet(key) {
+  var data = this.__data__;
+  if (nativeCreate) {
+    var result = data[key];
+    return result === HASH_UNDEFINED ? undefined : result;
+  }
+  return hasOwnProperty.call(data, key) ? data[key] : undefined;
+}
 
-var CozyClient = /*#__PURE__*/function () {
-  /**
-   * @param  {ClientOptions} rawOptions - Options
-   *
-   * @example
-   * ```js
-   * const client = new CozyClient({
-   *   schema: {
-   *     todos: {
-   *       doctype: 'io.cozy.todos',
-   *       relationships: {
-   *         authors: {
-   *           type: 'has-many',
-   *           doctype: 'io.cozy.persons'
-   *         }
-   *       }
-   *     }
-   *   }
-   * })
-   * ```
-   *
-   * Cozy-Client will automatically call `this.login()` if provided with a token and an uri
-   */
-  function CozyClient() {
-    var _this = this;
+module.exports = hashGet;
 
-    var rawOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-    (0, _classCallCheck2.default)(this, CozyClient);
-    (0, _defineProperty2.default)(this, "fetchQueryAndGetFromState", /*#__PURE__*/function () {
-      var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
-        var definition, options;
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                definition = _ref.definition, options = _ref.options;
-                _context.prev = 1;
-                _context.next = 4;
-                return _this.query(definition, options);
 
-              case 4:
-                return _context.abrupt("return", _this.getQueryFromState(options.as, options));
+/***/ }),
+/* 363 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 7:
-                _context.prev = 7;
-                _context.t0 = _context["catch"](1);
-                throw _context.t0;
+var nativeCreate = __webpack_require__(360);
 
-              case 10:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee, null, [[1, 7]]);
-      }));
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
 
-      return function (_x) {
-        return _ref2.apply(this, arguments);
-      };
-    }());
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
 
-    var link = rawOptions.link,
-        links = rawOptions.links,
-        _rawOptions$schema = rawOptions.schema,
-        schema = _rawOptions$schema === void 0 ? {} : _rawOptions$schema,
-        _rawOptions$appMetada = rawOptions.appMetadata,
-        appMetadata = _rawOptions$appMetada === void 0 ? {} : _rawOptions$appMetada,
-        capabilities = rawOptions.capabilities,
-        _options = (0, _objectWithoutProperties2.default)(rawOptions, ["link", "links", "schema", "appMetadata", "capabilities"]);
+/**
+ * Checks if a hash value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf Hash
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function hashHas(key) {
+  var data = this.__data__;
+  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
+}
 
-    if (link) {
-      _logger.default.warn('`link` is deprecated, use `links`');
-    }
+module.exports = hashHas;
 
-    this.appMetadata = appMetadata;
-    this.loginPromise = null;
-    _options.uri = securiseUri(_options.uri);
-    this.options = _options;
-    this.queryIdGenerator = new _queries.QueryIDGenerator();
-    this.isLogged = false;
-    this.instanceOptions = {}; // Bind handlers
 
-    this.handleRevocationChange = this.handleRevocationChange.bind(this);
-    this.handleTokenRefresh = this.handleTokenRefresh.bind(this);
-    this.createClient();
-    var stackClient = this.getStackClient();
-    stackClient.on('error', function () {
-      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
-        args[_key] = arguments[_key];
-      }
+/***/ }),
+/* 364 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      return _this.emit.apply(_this, ['error'].concat(args));
-    });
-    this.links = ensureArray(link || links || new _StackLink.default());
-    this.registerClientOnLinks();
-    this.chain = (0, _CozyLink.chain)(this.links);
-    this.schema = new _Schema.default(schema, stackClient);
-    /**
-     * @type {import("./types").ClientCapabilities}
-     */
+var nativeCreate = __webpack_require__(360);
 
-    this.capabilities = capabilities || null; // Instances of plugins registered with registerPlugin
+/** Used to stand-in for `undefined` hash values. */
+var HASH_UNDEFINED = '__lodash_hash_undefined__';
 
-    this.plugins = {};
+/**
+ * Sets the hash `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf Hash
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the hash instance.
+ */
+function hashSet(key, value) {
+  var data = this.__data__;
+  this.size += this.has(key) ? 0 : 1;
+  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
+  return this;
+}
 
-    if (!(this.stackClient instanceof _cozyStackClient.OAuthClient)) {
-      try {
-        this.loadInstanceOptionsFromDOM();
-      } catch (err) {// not a critical error, we may be in node or the instance options are not on the default HTML element
-      }
-    }
-    /**
-     * Holds in-flight promises for deduplication purpose
-     *
-     * @private
-     * @type {PromiseCache}
-     */
+module.exports = hashSet;
 
 
-    this._promiseCache = new _promiseCache.default();
+/***/ }),
+/* 365 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    if (_options.uri && _options.token) {
-      this.login();
-    }
-    /**
-     * @type {object}
-     */
+var getMapData = __webpack_require__(366);
 
+/**
+ * Removes `key` and its value from the map.
+ *
+ * @private
+ * @name delete
+ * @memberOf MapCache
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function mapCacheDelete(key) {
+  var result = getMapData(this, key)['delete'](key);
+  this.size -= result ? 1 : 0;
+  return result;
+}
 
-    this.storeAccesors = null;
+module.exports = mapCacheDelete;
 
-    if (_options.store !== false) {
-      this.ensureStore();
-    }
-  }
-  /**
-   * Gets overrided by MicroEE.mixin
-   * This is here just so typescript does not scream
-   *
-   * TODO Find a better way to make TS understand that emit is
-   * a method from cozy-client
-   */
 
+/***/ }),
+/* 366 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  (0, _createClass2.default)(CozyClient, [{
-    key: "emit",
-    value: function emit() {}
-  }, {
-    key: "on",
-    value: function on() {}
-  }, {
-    key: "removeListener",
-    value: function removeListener() {}
-    /**
-     * A plugin is a class whose constructor receives the client as first argument.
-     * The main mean of interaction with the client should be with events
-     * like "login"/"logout".
-     *
-     * The plugin system is meant to encourage separation of concerns, modularity
-     * and testability : instead of registering events at module level, please
-     * create a plugin that subscribes to events.
-     *
-     * Plugin instances are stored internally in the `plugins` attribute of the client
-     * and can be accessed via this mean. A plugin class must have the attribute
-     * `pluginName` that will be use as the key in the `plugins` object.
-     *
-     * Two plugins with the same `pluginName` cannot co-exist.
-     *
-     * @example
-     * ```js
-     * class AlertPlugin {
-     *   constructor(client, options) {
-     *     this.client = client
-     *     this.options = options
-     *     this.handleLogin = this.handleLogin.bind(this)
-     *     this.handleLogout = this.handleLogout.bind(this)
-     *     this.client.on("login", this.handleLogin)
-     *     this.client.on("logout", this.handleLogout)
-     *   }
-     *
-     *   handleLogin() {
-     *     alert(this.options.onLoginAlert)
-     *   }
-     *
-     *   handleLogout() {
-     *     alert(this.options.onLogoutAlert)
-     *   }
-     * }
-     *
-     * AlertPlugin.pluginName = 'alerts'
-     *
-     * client.registerPlugin(AlertPlugin, {
-     *   onLoginAlert: 'client has logged in !',
-     *   onLogoutAlert: 'client has logged out !'
-     * })
-     *
-     * // the instance of the plugin is accessible via
-     * client.plugins.alerts
-     * ```
-     */
-
-  }, {
-    key: "registerPlugin",
-    value: function registerPlugin(Plugin, options) {
-      if (!Plugin.pluginName) {
-        throw new Error('Cannot register a plugin whose class does not have `pluginName` attribute.');
-      }
-
-      if (this.plugins[Plugin.pluginName]) {
-        throw new Error("Cannot register plugin ".concat(Plugin.pluginName, ". A plugin with the same name has already been registered."));
-      }
+var isKeyable = __webpack_require__(367);
 
-      var instance = new Plugin(this, options);
-      this.plugins[Plugin.pluginName] = instance;
-      return instance;
-    }
-    /**
-     * To help with the transition from cozy-client-js to cozy-client, it is possible to instantiate
-     * a client with a cookie-based instance of cozy-client-js.
-     *
-     * @param {import("./types").OldCozyClient} oldClient - An instance of the deprecated cozy-client
-     * @param {object} options - CozyStackClient options
-     * @returns {CozyClient}
-     */
+/**
+ * Gets the data for `map`.
+ *
+ * @private
+ * @param {Object} map The map to query.
+ * @param {string} key The reference key.
+ * @returns {*} Returns the map data.
+ */
+function getMapData(map, key) {
+  var data = map.__data__;
+  return isKeyable(key)
+    ? data[typeof key == 'string' ? 'string' : 'hash']
+    : data.map;
+}
 
-  }, {
-    key: "addSchema",
-    value: function addSchema(schemaDefinition) {
-      this.schema.add(schemaDefinition);
-    }
-  }, {
-    key: "registerClientOnLinks",
-    value: function registerClientOnLinks() {
-      var _iterator = _createForOfIteratorHelper(this.links),
-          _step;
+module.exports = getMapData;
 
-      try {
-        for (_iterator.s(); !(_step = _iterator.n()).done;) {
-          var link = _step.value;
 
-          if (link.registerClient) {
-            try {
-              link.registerClient(this);
-            } catch (e) {
-              _logger.default.warn(e);
-            }
-          }
-        }
-      } catch (err) {
-        _iterator.e(err);
-      } finally {
-        _iterator.f();
-      }
-    }
-    /**
-     * Notify the links that they can start and set isLogged to true.
-     *
-     * On mobile, where url/token are set after instantiation, use this method
-     * to set the token and uri via options.
-     *
-     * Emits
-     *
-     * - "beforeLogin" at the beginning, before links have been set up
-     * - "login" when the client is fully logged in and links have been set up
-     *
-     * @param  {object}   [options] - Options
-     * @param  {string}   options.token  - If passed, the token is set on the client
-     * @param  {string}   options.uri  - If passed, the uri is set on the client
-     * @returns {Promise} - Resolves when all links have been setup and client is fully logged in
-     *
-     */
+/***/ }),
+/* 367 */
+/***/ (function(module, exports) {
 
-  }, {
-    key: "login",
-    value: function login(options) {
-      // Keep the promise to be able to return it in future calls.
-      // This allows us to autoLogin in constructor without breaking any compatibility
-      // with codes that uses an explicit login.
-      if (this.isLogged && !this.isRevoked) {
-        _logger.default.warn("CozyClient is already logged.");
+/**
+ * Checks if `value` is suitable for use as unique object key.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
+ */
+function isKeyable(value) {
+  var type = typeof value;
+  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
+    ? (value !== '__proto__')
+    : (value === null);
+}
 
-        return this.loginPromise;
-      }
+module.exports = isKeyable;
 
-      return this.loginPromise = this._login(options);
-    }
-  }, {
-    key: "_login",
-    value: function () {
-      var _login2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(options) {
-        var _iterator2, _step2, link;
 
-        return _regenerator.default.wrap(function _callee2$(_context2) {
-          while (1) {
-            switch (_context2.prev = _context2.next) {
-              case 0:
-                this.emit('beforeLogin');
-                this.registerClientOnLinks();
+/***/ }),
+/* 368 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                if (options) {
-                  if (options.uri) {
-                    this.stackClient.setUri(options.uri);
-                  }
+var getMapData = __webpack_require__(366);
 
-                  if (options.token) {
-                    this.stackClient.setToken(options.token);
-                  }
-                }
+/**
+ * Gets the map value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf MapCache
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function mapCacheGet(key) {
+  return getMapData(this, key).get(key);
+}
 
-                _iterator2 = _createForOfIteratorHelper(this.links);
-                _context2.prev = 4;
+module.exports = mapCacheGet;
 
-                _iterator2.s();
 
-              case 6:
-                if ((_step2 = _iterator2.n()).done) {
-                  _context2.next = 13;
-                  break;
-                }
+/***/ }),
+/* 369 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                link = _step2.value;
+var getMapData = __webpack_require__(366);
 
-                if (!link.onLogin) {
-                  _context2.next = 11;
-                  break;
-                }
+/**
+ * Checks if a map value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf MapCache
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function mapCacheHas(key) {
+  return getMapData(this, key).has(key);
+}
 
-                _context2.next = 11;
-                return link.onLogin();
+module.exports = mapCacheHas;
 
-              case 11:
-                _context2.next = 6;
-                break;
 
-              case 13:
-                _context2.next = 18;
-                break;
+/***/ }),
+/* 370 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 15:
-                _context2.prev = 15;
-                _context2.t0 = _context2["catch"](4);
+var getMapData = __webpack_require__(366);
 
-                _iterator2.e(_context2.t0);
+/**
+ * Sets the map `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf MapCache
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the map cache instance.
+ */
+function mapCacheSet(key, value) {
+  var data = getMapData(this, key),
+      size = data.size;
 
-              case 18:
-                _context2.prev = 18;
+  data.set(key, value);
+  this.size += data.size == size ? 0 : 1;
+  return this;
+}
 
-                _iterator2.f();
+module.exports = mapCacheSet;
 
-                return _context2.finish(18);
 
-              case 21:
-                this.isLogged = true;
-                this.isRevoked = false;
+/***/ }),
+/* 371 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                if (!(this.stackClient instanceof _cozyStackClient.OAuthClient)) {
-                  _context2.next = 26;
-                  break;
-                }
+var baseIsEqualDeep = __webpack_require__(372),
+    isObjectLike = __webpack_require__(323);
 
-                _context2.next = 26;
-                return this.loadInstanceOptionsFromStack();
+/**
+ * The base implementation of `_.isEqual` which supports partial comparisons
+ * and tracks traversed objects.
+ *
+ * @private
+ * @param {*} value The value to compare.
+ * @param {*} other The other value to compare.
+ * @param {boolean} bitmask The bitmask flags.
+ *  1 - Unordered comparison
+ *  2 - Partial comparison
+ * @param {Function} [customizer] The function to customize comparisons.
+ * @param {Object} [stack] Tracks traversed `value` and `other` objects.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+ */
+function baseIsEqual(value, other, bitmask, customizer, stack) {
+  if (value === other) {
+    return true;
+  }
+  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
+    return value !== value && other !== other;
+  }
+  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
+}
 
-              case 26:
-                this.emit('login');
+module.exports = baseIsEqual;
 
-              case 27:
-              case "end":
-                return _context2.stop();
-            }
-          }
-        }, _callee2, this, [[4, 15, 18, 21]]);
-      }));
 
-      function _login(_x2) {
-        return _login2.apply(this, arguments);
-      }
+/***/ }),
+/* 372 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      return _login;
-    }()
-    /**
-     * Logs out the client and reset all the links
-     *
-     * Emits
-     *
-     * - "beforeLogout" at the beginning, before links have been reset
-     * - "logout" when the client is fully logged out and links have been reset
-     *
-     * @returns {Promise} - Resolves when all links have been reset and client is fully logged out
-     */
+var Stack = __webpack_require__(341),
+    equalArrays = __webpack_require__(373),
+    equalByTag = __webpack_require__(379),
+    equalObjects = __webpack_require__(383),
+    getTag = __webpack_require__(390),
+    isArray = __webpack_require__(324),
+    isBuffer = __webpack_require__(325),
+    isTypedArray = __webpack_require__(328);
 
-  }, {
-    key: "logout",
-    value: function () {
-      var _logout = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
-        var _iterator3, _step3, link;
+/** Used to compose bitmasks for value comparisons. */
+var COMPARE_PARTIAL_FLAG = 1;
 
-        return _regenerator.default.wrap(function _callee3$(_context3) {
-          while (1) {
-            switch (_context3.prev = _context3.next) {
-              case 0:
-                if (this.isLogged) {
-                  _context3.next = 3;
-                  break;
-                }
+/** `Object#toString` result references. */
+var argsTag = '[object Arguments]',
+    arrayTag = '[object Array]',
+    objectTag = '[object Object]';
 
-                _logger.default.warn("CozyClient isn't logged.");
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
 
-                return _context3.abrupt("return");
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
 
-              case 3:
-                this.emit('beforeLogout');
-                this.isLogged = false;
+/**
+ * A specialized version of `baseIsEqual` for arrays and objects which performs
+ * deep comparisons and tracks traversed objects enabling objects with circular
+ * references to be compared.
+ *
+ * @private
+ * @param {Object} object The object to compare.
+ * @param {Object} other The other object to compare.
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
+ * @param {Function} customizer The function to customize comparisons.
+ * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {Object} [stack] Tracks traversed `object` and `other` objects.
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+ */
+function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
+  var objIsArr = isArray(object),
+      othIsArr = isArray(other),
+      objTag = objIsArr ? arrayTag : getTag(object),
+      othTag = othIsArr ? arrayTag : getTag(other);
 
-                if (!(this.stackClient instanceof _cozyStackClient.OAuthClient)) {
-                  _context3.next = 17;
-                  break;
-                }
+  objTag = objTag == argsTag ? objectTag : objTag;
+  othTag = othTag == argsTag ? objectTag : othTag;
 
-                _context3.prev = 6;
+  var objIsObj = objTag == objectTag,
+      othIsObj = othTag == objectTag,
+      isSameTag = objTag == othTag;
 
-                if (!(this.stackClient.unregister && (!this.stackClient.isRegistered || this.stackClient.isRegistered()))) {
-                  _context3.next = 10;
-                  break;
-                }
+  if (isSameTag && isBuffer(object)) {
+    if (!isBuffer(other)) {
+      return false;
+    }
+    objIsArr = true;
+    objIsObj = false;
+  }
+  if (isSameTag && !objIsObj) {
+    stack || (stack = new Stack);
+    return (objIsArr || isTypedArray(object))
+      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
+      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
+  }
+  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
+    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
+        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
 
-                _context3.next = 10;
-                return this.stackClient.unregister();
+    if (objIsWrapped || othIsWrapped) {
+      var objUnwrapped = objIsWrapped ? object.value() : object,
+          othUnwrapped = othIsWrapped ? other.value() : other;
 
-              case 10:
-                _context3.next = 15;
-                break;
+      stack || (stack = new Stack);
+      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
+    }
+  }
+  if (!isSameTag) {
+    return false;
+  }
+  stack || (stack = new Stack);
+  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
+}
 
-              case 12:
-                _context3.prev = 12;
-                _context3.t0 = _context3["catch"](6);
+module.exports = baseIsEqualDeep;
 
-                _logger.default.warn("Impossible to unregister client on stack: ".concat(_context3.t0));
 
-              case 15:
-                _context3.next = 25;
-                break;
+/***/ }),
+/* 373 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 17:
-                _context3.prev = 17;
-                _context3.next = 20;
-                return this.stackClient.fetch('DELETE', '/auth/login');
+var SetCache = __webpack_require__(374),
+    arraySome = __webpack_require__(377),
+    cacheHas = __webpack_require__(378);
 
-              case 20:
-                _context3.next = 25;
-                break;
+/** Used to compose bitmasks for value comparisons. */
+var COMPARE_PARTIAL_FLAG = 1,
+    COMPARE_UNORDERED_FLAG = 2;
 
-              case 22:
-                _context3.prev = 22;
-                _context3.t1 = _context3["catch"](17);
+/**
+ * A specialized version of `baseIsEqualDeep` for arrays with support for
+ * partial deep comparisons.
+ *
+ * @private
+ * @param {Array} array The array to compare.
+ * @param {Array} other The other array to compare.
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
+ * @param {Function} customizer The function to customize comparisons.
+ * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {Object} stack Tracks traversed `array` and `other` objects.
+ * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
+ */
+function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
+  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
+      arrLength = array.length,
+      othLength = other.length;
 
-                _logger.default.warn("Impossible to log out: ".concat(_context3.t1));
+  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
+    return false;
+  }
+  // Check that cyclic values are equal.
+  var arrStacked = stack.get(array);
+  var othStacked = stack.get(other);
+  if (arrStacked && othStacked) {
+    return arrStacked == other && othStacked == array;
+  }
+  var index = -1,
+      result = true,
+      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
 
-              case 25:
-                // clean information on links
-                _iterator3 = _createForOfIteratorHelper(this.links);
-                _context3.prev = 26;
+  stack.set(array, other);
+  stack.set(other, array);
 
-                _iterator3.s();
+  // Ignore non-index properties.
+  while (++index < arrLength) {
+    var arrValue = array[index],
+        othValue = other[index];
 
-              case 28:
-                if ((_step3 = _iterator3.n()).done) {
-                  _context3.next = 41;
-                  break;
-                }
-
-                link = _step3.value;
-
-                if (!link.reset) {
-                  _context3.next = 39;
-                  break;
-                }
+    if (customizer) {
+      var compared = isPartial
+        ? customizer(othValue, arrValue, index, other, array, stack)
+        : customizer(arrValue, othValue, index, array, other, stack);
+    }
+    if (compared !== undefined) {
+      if (compared) {
+        continue;
+      }
+      result = false;
+      break;
+    }
+    // Recursively compare arrays (susceptible to call stack limits).
+    if (seen) {
+      if (!arraySome(other, function(othValue, othIndex) {
+            if (!cacheHas(seen, othIndex) &&
+                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
+              return seen.push(othIndex);
+            }
+          })) {
+        result = false;
+        break;
+      }
+    } else if (!(
+          arrValue === othValue ||
+            equalFunc(arrValue, othValue, bitmask, customizer, stack)
+        )) {
+      result = false;
+      break;
+    }
+  }
+  stack['delete'](array);
+  stack['delete'](other);
+  return result;
+}
 
-                _context3.prev = 31;
-                _context3.next = 34;
-                return link.reset();
+module.exports = equalArrays;
 
-              case 34:
-                _context3.next = 39;
-                break;
 
-              case 36:
-                _context3.prev = 36;
-                _context3.t2 = _context3["catch"](31);
+/***/ }),
+/* 374 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                _logger.default.warn(_context3.t2);
+var MapCache = __webpack_require__(356),
+    setCacheAdd = __webpack_require__(375),
+    setCacheHas = __webpack_require__(376);
 
-              case 39:
-                _context3.next = 28;
-                break;
+/**
+ *
+ * Creates an array cache object to store unique values.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [values] The values to cache.
+ */
+function SetCache(values) {
+  var index = -1,
+      length = values == null ? 0 : values.length;
 
-              case 41:
-                _context3.next = 46;
-                break;
+  this.__data__ = new MapCache;
+  while (++index < length) {
+    this.add(values[index]);
+  }
+}
 
-              case 43:
-                _context3.prev = 43;
-                _context3.t3 = _context3["catch"](26);
+// Add methods to `SetCache`.
+SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
+SetCache.prototype.has = setCacheHas;
 
-                _iterator3.e(_context3.t3);
+module.exports = SetCache;
 
-              case 46:
-                _context3.prev = 46;
 
-                _iterator3.f();
+/***/ }),
+/* 375 */
+/***/ (function(module, exports) {
 
-                return _context3.finish(46);
+/** Used to stand-in for `undefined` hash values. */
+var HASH_UNDEFINED = '__lodash_hash_undefined__';
 
-              case 49:
-                if (this.store) {
-                  this.dispatch((0, _store.resetState)());
-                }
+/**
+ * Adds `value` to the array cache.
+ *
+ * @private
+ * @name add
+ * @memberOf SetCache
+ * @alias push
+ * @param {*} value The value to cache.
+ * @returns {Object} Returns the cache instance.
+ */
+function setCacheAdd(value) {
+  this.__data__.set(value, HASH_UNDEFINED);
+  return this;
+}
 
-                this.emit('logout');
+module.exports = setCacheAdd;
 
-              case 51:
-              case "end":
-                return _context3.stop();
-            }
-          }
-        }, _callee3, this, [[6, 12], [17, 22], [26, 43, 46, 49], [31, 36]]);
-      }));
 
-      function logout() {
-        return _logout.apply(this, arguments);
-      }
+/***/ }),
+/* 376 */
+/***/ (function(module, exports) {
 
-      return logout;
-    }()
-    /**
-     * Forwards to a stack client instance and returns
-     * a [DocumentCollection]{@link https://docs.cozy.io/en/cozy-client/api/cozy-stack-client/#DocumentCollection} instance.
-     *
-     * @param  {string} doctype The collection doctype.
-     * @returns {import("./types").DocumentCollection} Collection corresponding to the doctype
-     */
+/**
+ * Checks if `value` is in the array cache.
+ *
+ * @private
+ * @name has
+ * @memberOf SetCache
+ * @param {*} value The value to search for.
+ * @returns {number} Returns `true` if `value` is found, else `false`.
+ */
+function setCacheHas(value) {
+  return this.__data__.has(value);
+}
 
-  }, {
-    key: "collection",
-    value: function collection(doctype) {
-      return this.getStackClient().collection(doctype);
-    }
-  }, {
-    key: "fetch",
-    value: function fetch(method, path, body) {
-      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
-      return this.getStackClient().fetch(method, path, body, options);
-    }
-  }, {
-    key: "all",
-    value: function all(doctype) {
-      _logger.default.warn("\nclient.all is deprecated, prefer to use the Q helper to build a new QueryDefinition.\n\nimport { Q } from 'cozy-client'\nclient.query(Q('io.cozy.bills'))");
+module.exports = setCacheHas;
 
-      return (0, _dsl.Q)(doctype);
-    }
-  }, {
-    key: "find",
-    value: function find(doctype) {
-      var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
 
-      _logger.default.warn('client.find(doctype, selector) is deprecated, please use Q(doctype).where(selector) to build the same query.');
+/***/ }),
+/* 377 */
+/***/ (function(module, exports) {
 
-      return new _dsl.QueryDefinition({
-        doctype: doctype,
-        selector: selector
-      });
-    }
-  }, {
-    key: "get",
-    value: function get(doctype, id) {
-      _logger.default.warn("client.get(".concat(doctype, ", id) is deprecated, please use Q(").concat(doctype, ").getById(id) to build the same query."));
+/**
+ * A specialized version of `_.some` for arrays without support for iteratee
+ * shorthands.
+ *
+ * @private
+ * @param {Array} [array] The array to iterate over.
+ * @param {Function} predicate The function invoked per iteration.
+ * @returns {boolean} Returns `true` if any element passes the predicate check,
+ *  else `false`.
+ */
+function arraySome(array, predicate) {
+  var index = -1,
+      length = array == null ? 0 : array.length;
 
-      return new _dsl.QueryDefinition({
-        doctype: doctype,
-        id: id
-      });
+  while (++index < length) {
+    if (predicate(array[index], index, array)) {
+      return true;
     }
-    /**
-     * Creates a document and saves it on the server
-     *
-     * @param  {string} type - Doctype of the document
-     * @param  {object} doc - Document to save
-     * @param  {import("./types").ReferenceMap} [references] - References are a special kind of relationship
-     * that is not stored inside the referencer document, they are used for example between a photo
-     * and its album. You should not need to use it normally.
-     * @param  {object} options - Mutation options
-     *
-     * @example
-     * ```js
-     * await client.create('io.cozy.todos', {
-     *   label: 'My todo',
-     *   relationships: {
-     *     authors: {
-     *       data: [{_id: 1, _type: 'io.cozy.persons'}]
-     *     }
-     *   }
-     * })
-     * ```
-     *
-     * @returns {Promise}
-     */
+  }
+  return false;
+}
 
-  }, {
-    key: "create",
-    value: function () {
-      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(type, doc, references) {
-        var options,
-            _type,
-            attributes,
-            normalizedDoc,
-            ret,
-            _args4 = arguments;
+module.exports = arraySome;
 
-        return _regenerator.default.wrap(function _callee4$(_context4) {
-          while (1) {
-            switch (_context4.prev = _context4.next) {
-              case 0:
-                options = _args4.length > 3 && _args4[3] !== undefined ? _args4[3] : {};
-                _type = doc._type, attributes = (0, _objectWithoutProperties2.default)(doc, ["_type"]);
-                normalizedDoc = _objectSpread({
-                  _type: type
-                }, attributes);
-                _context4.next = 5;
-                return this.schema.validate(normalizedDoc);
 
-              case 5:
-                ret = _context4.sent;
+/***/ }),
+/* 378 */
+/***/ (function(module, exports) {
 
-                if (!(ret !== true)) {
-                  _context4.next = 8;
-                  break;
-                }
+/**
+ * Checks if a `cache` value for `key` exists.
+ *
+ * @private
+ * @param {Object} cache The cache to query.
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function cacheHas(cache, key) {
+  return cache.has(key);
+}
 
-                throw new Error('Validation failed');
+module.exports = cacheHas;
 
-              case 8:
-                return _context4.abrupt("return", this.mutate(this.getDocumentSavePlan(normalizedDoc, references), options));
 
-              case 9:
-              case "end":
-                return _context4.stop();
-            }
-          }
-        }, _callee4, this);
-      }));
+/***/ }),
+/* 379 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      function create(_x3, _x4, _x5) {
-        return _create.apply(this, arguments);
-      }
+var Symbol = __webpack_require__(305),
+    Uint8Array = __webpack_require__(380),
+    eq = __webpack_require__(346),
+    equalArrays = __webpack_require__(373),
+    mapToArray = __webpack_require__(381),
+    setToArray = __webpack_require__(382);
 
-      return create;
-    }()
-  }, {
-    key: "validate",
-    value: function validate(document) {
-      return this.schema.validate(document);
-    }
-    /**
-     * Create or update a document on the server
-     *
-     * @param  {object} doc - Document to save
-     * @param  {object} mutationOptions - Mutation options
-     * @returns {Promise}
-     */
+/** Used to compose bitmasks for value comparisons. */
+var COMPARE_PARTIAL_FLAG = 1,
+    COMPARE_UNORDERED_FLAG = 2;
 
-  }, {
-    key: "save",
-    value: function () {
-      var _save = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(doc) {
-        var mutationOptions,
-            _type,
-            attributes,
-            normalizedDoc,
-            ret,
-            _args5 = arguments;
+/** `Object#toString` result references. */
+var boolTag = '[object Boolean]',
+    dateTag = '[object Date]',
+    errorTag = '[object Error]',
+    mapTag = '[object Map]',
+    numberTag = '[object Number]',
+    regexpTag = '[object RegExp]',
+    setTag = '[object Set]',
+    stringTag = '[object String]',
+    symbolTag = '[object Symbol]';
 
-        return _regenerator.default.wrap(function _callee5$(_context5) {
-          while (1) {
-            switch (_context5.prev = _context5.next) {
-              case 0:
-                mutationOptions = _args5.length > 1 && _args5[1] !== undefined ? _args5[1] : {};
-                _type = doc._type, attributes = (0, _objectWithoutProperties2.default)(doc, ["_type"]);
+var arrayBufferTag = '[object ArrayBuffer]',
+    dataViewTag = '[object DataView]';
 
-                if (_type) {
-                  _context5.next = 4;
-                  break;
-                }
+/** Used to convert symbols to primitives and strings. */
+var symbolProto = Symbol ? Symbol.prototype : undefined,
+    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
 
-                throw new Error('The document must have a `_type` property');
+/**
+ * A specialized version of `baseIsEqualDeep` for comparing objects of
+ * the same `toStringTag`.
+ *
+ * **Note:** This function only supports comparing values with tags of
+ * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
+ *
+ * @private
+ * @param {Object} object The object to compare.
+ * @param {Object} other The other object to compare.
+ * @param {string} tag The `toStringTag` of the objects to compare.
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
+ * @param {Function} customizer The function to customize comparisons.
+ * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {Object} stack Tracks traversed `object` and `other` objects.
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+ */
+function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
+  switch (tag) {
+    case dataViewTag:
+      if ((object.byteLength != other.byteLength) ||
+          (object.byteOffset != other.byteOffset)) {
+        return false;
+      }
+      object = object.buffer;
+      other = other.buffer;
 
-              case 4:
-                normalizedDoc = _objectSpread({
-                  _type: _type
-                }, attributes);
-                _context5.next = 7;
-                return this.schema.validate(normalizedDoc);
+    case arrayBufferTag:
+      if ((object.byteLength != other.byteLength) ||
+          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
+        return false;
+      }
+      return true;
 
-              case 7:
-                ret = _context5.sent;
+    case boolTag:
+    case dateTag:
+    case numberTag:
+      // Coerce booleans to `1` or `0` and dates to milliseconds.
+      // Invalid dates are coerced to `NaN`.
+      return eq(+object, +other);
 
-                if (!(ret !== true)) {
-                  _context5.next = 10;
-                  break;
-                }
+    case errorTag:
+      return object.name == other.name && object.message == other.message;
 
-                throw new Error('Validation failed');
+    case regexpTag:
+    case stringTag:
+      // Coerce regexes to strings and treat strings, primitives and objects,
+      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
+      // for more details.
+      return object == (other + '');
 
-              case 10:
-                return _context5.abrupt("return", this.mutate(this.getDocumentSavePlan(normalizedDoc), mutationOptions));
+    case mapTag:
+      var convert = mapToArray;
 
-              case 11:
-              case "end":
-                return _context5.stop();
-            }
-          }
-        }, _callee5, this);
-      }));
+    case setTag:
+      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
+      convert || (convert = setToArray);
 
-      function save(_x6) {
-        return _save.apply(this, arguments);
+      if (object.size != other.size && !isPartial) {
+        return false;
       }
+      // Assume cyclic values are equal.
+      var stacked = stack.get(object);
+      if (stacked) {
+        return stacked == other;
+      }
+      bitmask |= COMPARE_UNORDERED_FLAG;
 
-      return save;
-    }()
-    /**
-     * Saves multiple documents in one batch
-     * - Can only be called with documents from the same doctype
-     * - Does not support automatic creation of references
-     *
-     * @param  {import("./types").CozyClientDocument[]} docs - Documents from the same doctype
-     * @param  {Object} mutationOptions - Mutation Options
-     * @param  {string}    [mutationOptions.as] - Mutation id
-     * @param  {Function}    [mutationOptions.update] - Function to update the document
-     * @param  {Function}    [mutationOptions.updateQueries] - Function to update queries
-     * @returns {Promise<void>}
-     */
-
-  }, {
-    key: "saveAll",
-    value: function () {
-      var _saveAll = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(docs) {
-        var _this2 = this;
+      // Recursively compare objects (susceptible to call stack limits).
+      stack.set(object, other);
+      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
+      stack['delete'](object);
+      return result;
 
-        var mutationOptions,
-            doctypes,
-            validations,
-            errors,
-            toSaveDocs,
-            mutation,
-            _args6 = arguments;
-        return _regenerator.default.wrap(function _callee6$(_context6) {
-          while (1) {
-            switch (_context6.prev = _context6.next) {
-              case 0:
-                mutationOptions = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : {};
-                doctypes = Array.from(new Set(docs.map(function (x) {
-                  return x._type;
-                })));
+    case symbolTag:
+      if (symbolValueOf) {
+        return symbolValueOf.call(object) == symbolValueOf.call(other);
+      }
+  }
+  return false;
+}
 
-                if (!(doctypes.length !== 1)) {
-                  _context6.next = 4;
-                  break;
-                }
+module.exports = equalByTag;
 
-                throw new Error('saveAll can only save documents with the same doctype');
 
-              case 4:
-                _context6.next = 6;
-                return Promise.all(docs.map(function (d) {
-                  return _this2.schema.validate(d);
-                }));
+/***/ }),
+/* 380 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 6:
-                validations = _context6.sent;
-                errors = validations.filter(function (validation) {
-                  return validation !== true;
-                });
+var root = __webpack_require__(306);
 
-                if (!(errors.length > 0)) {
-                  _context6.next = 11;
-                  break;
-                }
+/** Built-in value references. */
+var Uint8Array = root.Uint8Array;
 
-                _logger.default.warn('There has been some validation errors while bulk saving', errors);
+module.exports = Uint8Array;
 
-                throw new Error('Validation failed for at least one doc');
 
-              case 11:
-                toSaveDocs = docs.map(function (d) {
-                  return _this2.prepareDocumentForSave(d);
-                });
-                mutation = _dsl.Mutations.updateDocuments(toSaveDocs);
-                return _context6.abrupt("return", this.mutate(mutation, mutationOptions));
-
-              case 14:
-              case "end":
-                return _context6.stop();
-            }
-          }
-        }, _callee6, this);
-      }));
+/***/ }),
+/* 381 */
+/***/ (function(module, exports) {
 
-      function saveAll(_x7) {
-        return _saveAll.apply(this, arguments);
-      }
+/**
+ * Converts `map` to its key-value pairs.
+ *
+ * @private
+ * @param {Object} map The map to convert.
+ * @returns {Array} Returns the key-value pairs.
+ */
+function mapToArray(map) {
+  var index = -1,
+      result = Array(map.size);
 
-      return saveAll;
-    }()
-    /**
-     * @param  {import("./types").CozyClientDocument} document - Document that will be saved
-     * @param {object} [options={event: DOC_CREATION}] - Event
-     * @param {string} [options.event] - Mutation type
-     * @returns {import("./types").CozyClientDocument}
-     */
+  map.forEach(function(value, key) {
+    result[++index] = [key, value];
+  });
+  return result;
+}
 
-  }, {
-    key: "ensureCozyMetadata",
-    value: function ensureCozyMetadata(document) {
-      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
-        event: DOC_CREATION
-      };
-      var METADATA_VERSION = 1;
-      if (this.appMetadata === undefined) return document;
-      var doctypeVersion;
+module.exports = mapToArray;
 
-      if (document._type) {
-        var schema = this.schema.getDoctypeSchema(document._type);
-        doctypeVersion = (0, _get.default)(schema, 'doctypeVersion');
-      }
 
-      var _this$appMetadata = this.appMetadata,
-          slug = _this$appMetadata.slug,
-          sourceAccount = _this$appMetadata.sourceAccount,
-          version = _this$appMetadata.version;
-      var now = new Date().toISOString();
-      var cozyMetadata = (0, _get.default)(document, 'cozyMetadata', {});
+/***/ }),
+/* 382 */
+/***/ (function(module, exports) {
 
-      if (options.event === DOC_CREATION) {
-        cozyMetadata = _objectSpread({
-          metadataVersion: METADATA_VERSION,
-          doctypeVersion: doctypeVersion,
-          createdByApp: slug,
-          sourceAccount: sourceAccount,
-          createdAt: now,
-          createdByAppVersion: version,
-          updatedAt: now,
-          updatedByApps: slug ? [{
-            date: now,
-            slug: slug,
-            version: version
-          }] : []
-        }, cozyMetadata);
-      } else if (options.event === DOC_UPDATE) {
-        cozyMetadata = _objectSpread(_objectSpread({}, cozyMetadata), {}, {
-          updatedAt: now,
-          updatedByApps: [{
-            date: now,
-            slug: slug,
-            version: version
-          }].concat((0, _toConsumableArray2.default)((0, _get.default)(document, 'cozyMetadata.updatedByApps', []).filter(function (info) {
-            return info.slug !== slug;
-          })))
-        });
-      }
+/**
+ * Converts `set` to an array of its values.
+ *
+ * @private
+ * @param {Object} set The set to convert.
+ * @returns {Array} Returns the values.
+ */
+function setToArray(set) {
+  var index = -1,
+      result = Array(set.size);
 
-      return _objectSpread(_objectSpread({}, document), {}, {
-        cozyMetadata: cozyMetadata
-      });
-    }
-    /**
-     * Dehydrates and adds metadata before saving a document
-     *
-     * @param  {import("./types").CozyClientDocument} doc - Document that will be saved
-     * @returns {import("./types").CozyClientDocument}
-     */
+  set.forEach(function(value) {
+    result[++index] = value;
+  });
+  return result;
+}
 
-  }, {
-    key: "prepareDocumentForSave",
-    value: function prepareDocumentForSave(doc) {
-      var isNewDoc = !doc._rev;
-      var dehydratedDoc = this.ensureCozyMetadata((0, _helpers2.dehydrate)(doc), {
-        event: isNewDoc ? DOC_CREATION : DOC_UPDATE
-      });
-      return dehydratedDoc;
-    }
-    /**
-     * Creates a list of mutations to execute to create a document and its relationships.
-     *
-     * ```js
-     * const baseDoc = { _type: 'io.cozy.todo', label: 'Go hiking' }
-     * // relations can be arrays or single objects
-     * const relationships = {
-     *   attachments: [{ _id: 12345, _type: 'io.cozy.files' }, { _id: 6789, _type: 'io.cozy.files' }],
-     *   bills: { _id: 9999, _type: 'io.cozy.bills' }
-     * }
-     * client.getDocumentSavePlan(baseDoc, relationships)
-     * ```
-     *
-     *
-     * @param  {import("./types").CozyClientDocument} document - Document to create
-     * @param  {import("./types").ReferenceMap} [referencesByName] - References to the created document. The
-     * relationship class associated to each reference list should support references, otherwise this
-     * method will throw.
-     *
-     * @returns {import("./types").Mutation[]|import("./types").Mutation}  One or more mutation to execute
-     */
+module.exports = setToArray;
 
-  }, {
-    key: "getDocumentSavePlan",
-    value: function getDocumentSavePlan(document, referencesByName) {
-      var _this3 = this;
 
-      var isNewDoc = !document._rev;
-      var docToSave = this.prepareDocumentForSave(document);
-      var saveMutation = isNewDoc ? _dsl.Mutations.createDocument(docToSave) : _dsl.Mutations.updateDocument(docToSave);
-      var hasReferences = referencesByName && Object.values(referencesByName).filter(function (references) {
-        return Array.isArray(references) ? references.length > 0 : references;
-      }).length > 0;
+/***/ }),
+/* 383 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      if (!hasReferences) {
-        return saveMutation;
-      } else {
-        for (var _i = 0, _Object$keys = Object.keys(referencesByName); _i < _Object$keys.length; _i++) {
-          var relName = _Object$keys[_i];
-          var doctype = document._type;
-          var doctypeRelationship = this.schema.getRelationship(doctype, relName);
-          var relationshipClass = doctypeRelationship.type;
+var getAllKeys = __webpack_require__(384);
 
-          if (!supportsReferences(relationshipClass)) {
-            throw referencesUnsupportedError(doctypeRelationship.name);
-          }
-        }
-      }
+/** Used to compose bitmasks for value comparisons. */
+var COMPARE_PARTIAL_FLAG = 1;
 
-      if (referencesByName && !isNewDoc) {
-        throw new Error('Unable to save external relationships on a not-new document');
-      }
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
 
-      return [saveMutation, function (response) {
-        var doc = _this3.hydrateDocument(response.data);
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
 
-        return Object.entries(referencesByName).map(function (_ref3) {
-          var _ref4 = (0, _slicedToArray2.default)(_ref3, 2),
-              relName = _ref4[0],
-              references = _ref4[1];
+/**
+ * A specialized version of `baseIsEqualDeep` for objects with support for
+ * partial deep comparisons.
+ *
+ * @private
+ * @param {Object} object The object to compare.
+ * @param {Object} other The other object to compare.
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
+ * @param {Function} customizer The function to customize comparisons.
+ * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {Object} stack Tracks traversed `object` and `other` objects.
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+ */
+function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
+  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
+      objProps = getAllKeys(object),
+      objLength = objProps.length,
+      othProps = getAllKeys(other),
+      othLength = othProps.length;
 
-          var relationship = doc[relName];
-          return relationship.addReferences(references);
-        });
-      }];
+  if (objLength != othLength && !isPartial) {
+    return false;
+  }
+  var index = objLength;
+  while (index--) {
+    var key = objProps[index];
+    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
+      return false;
     }
-    /**
-     * Hooks are an observable system for events on documents.
-     * There are at the moment only 2 hooks available.
-     *
-     * - before:destroy, called just before a document is destroyed via CozyClient::destroy
-     * - after:destroy, called after a document is destroyed via CozyClient::destroy
-     *
-     * @example
-     * ```
-     * CozyClient.registerHook('io.cozy.bank.accounts', 'before:destroy', () => {
-     *   console.log('A io.cozy.bank.accounts is being destroyed')
-     * })
-     * ```
-     *
-     * @param  {string}   doctype - Doctype on which the hook will be registered
-     * @param  {string}   name    - Name of the hook
-     * @param  {Function} fn      - Callback to be executed
-     */
-
-  }, {
-    key: "triggerHook",
-    value: function triggerHook(name, document) {
-      if (!CozyClient.hooks) return;
-      var allHooks = CozyClient.hooks[document._type] || {};
-      var hooks = allHooks[name] || [];
+  }
+  // Check that cyclic values are equal.
+  var objStacked = stack.get(object);
+  var othStacked = stack.get(other);
+  if (objStacked && othStacked) {
+    return objStacked == other && othStacked == object;
+  }
+  var result = true;
+  stack.set(object, other);
+  stack.set(other, object);
 
-      var _iterator4 = _createForOfIteratorHelper(hooks),
-          _step4;
+  var skipCtor = isPartial;
+  while (++index < objLength) {
+    key = objProps[index];
+    var objValue = object[key],
+        othValue = other[key];
 
-      try {
-        for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
-          var h = _step4.value;
-          h(this, document);
-        }
-      } catch (err) {
-        _iterator4.e(err);
-      } finally {
-        _iterator4.f();
-      }
+    if (customizer) {
+      var compared = isPartial
+        ? customizer(othValue, objValue, key, other, object, stack)
+        : customizer(objValue, othValue, key, object, other, stack);
     }
-    /**
-     * Destroys a document. {before,after}:destroy hooks will be fired.
-     *
-     * @param  {import("./types").CozyClientDocument} document - Document to be deleted
-     * @returns {Promise<import("./types").CozyClientDocument>} The document that has been deleted
-     */
-
-  }, {
-    key: "destroy",
-    value: function () {
-      var _destroy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(document) {
-        var mutationOptions,
-            res,
-            _args7 = arguments;
-        return _regenerator.default.wrap(function _callee7$(_context7) {
-          while (1) {
-            switch (_context7.prev = _context7.next) {
-              case 0:
-                mutationOptions = _args7.length > 1 && _args7[1] !== undefined ? _args7[1] : {};
-                _context7.next = 3;
-                return this.triggerHook('before:destroy', document);
+    // Recursively compare objects (susceptible to call stack limits).
+    if (!(compared === undefined
+          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
+          : compared
+        )) {
+      result = false;
+      break;
+    }
+    skipCtor || (skipCtor = key == 'constructor');
+  }
+  if (result && !skipCtor) {
+    var objCtor = object.constructor,
+        othCtor = other.constructor;
 
-              case 3:
-                _context7.next = 5;
-                return this.mutate(_dsl.Mutations.deleteDocument(document), mutationOptions);
+    // Non `Object` object instances with different constructors are not equal.
+    if (objCtor != othCtor &&
+        ('constructor' in object && 'constructor' in other) &&
+        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
+          typeof othCtor == 'function' && othCtor instanceof othCtor)) {
+      result = false;
+    }
+  }
+  stack['delete'](object);
+  stack['delete'](other);
+  return result;
+}
 
-              case 5:
-                res = _context7.sent;
-                _context7.next = 8;
-                return this.triggerHook('after:destroy', document);
+module.exports = equalObjects;
 
-              case 8:
-                return _context7.abrupt("return", res);
 
-              case 9:
-              case "end":
-                return _context7.stop();
-            }
-          }
-        }, _callee7, this);
-      }));
+/***/ }),
+/* 384 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      function destroy(_x8) {
-        return _destroy.apply(this, arguments);
-      }
+var baseGetAllKeys = __webpack_require__(385),
+    getSymbols = __webpack_require__(387),
+    keys = __webpack_require__(318);
 
-      return destroy;
-    }()
-  }, {
-    key: "upload",
-    value: function upload(file, dirPath) {
-      var mutationOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-      return this.mutate(_dsl.Mutations.uploadFile(file, dirPath), mutationOptions);
-    }
-    /**
-     * Makes sure that the query exists in the store
-     *
-     * @param  {string} queryId - Id of the query
-     * @param  {QueryDefinition} queryDefinition - Definition of the query
-     * @param  {import("./types").QueryOptions} [options] - Additional options
-     */
+/**
+ * Creates an array of own enumerable property names and symbols of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names and symbols.
+ */
+function getAllKeys(object) {
+  return baseGetAllKeys(object, keys, getSymbols);
+}
 
-  }, {
-    key: "ensureQueryExists",
-    value: function ensureQueryExists(queryId, queryDefinition, options) {
-      this.ensureStore();
-      var existingQuery = (0, _store.getQueryFromState)(this.store.getState(), queryId); // Don't trigger the INIT_QUERY for fetchMore() calls
+module.exports = getAllKeys;
 
-      if (existingQuery.fetchStatus !== 'loaded' || !queryDefinition.skip && !queryDefinition.bookmark) {
-        this.dispatch((0, _store.initQuery)(queryId, queryDefinition, options));
-      }
-    }
-    /**
-     * Executes a query and returns its results.
-     *
-     * Results from the query will be saved internally and can be retrieved via
-     * `getQueryFromState` or directly using `<Query />`. `<Query />` automatically
-     * executes its query when mounted if no fetch policy has been indicated.
-     *
-     * @param  {QueryDefinition} queryDefinition - Definition that will be executed
-     * @param  {import("./types").QueryOptions} [options] - Options
-     * @returns {Promise<import("./types").QueryResult>}
-     */
 
-  }, {
-    key: "query",
-    value: function () {
-      var _query = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(queryDefinition) {
-        var _this4 = this;
+/***/ }),
+/* 385 */
+/***/ (function(module, exports, __webpack_require__) {
 
-        var _ref5,
-            update,
-            options,
-            queryId,
-            existingQuery,
-            shouldFetch,
-            backgroundFetching,
-            response,
-            _args8 = arguments;
+var arrayPush = __webpack_require__(386),
+    isArray = __webpack_require__(324);
 
-        return _regenerator.default.wrap(function _callee8$(_context8) {
-          while (1) {
-            switch (_context8.prev = _context8.next) {
-              case 0:
-                _ref5 = _args8.length > 1 && _args8[1] !== undefined ? _args8[1] : {};
-                update = _ref5.update, options = (0, _objectWithoutProperties2.default)(_ref5, ["update"]);
-                this.ensureStore();
-                queryId = options.as || this.queryIdGenerator.generateId(queryDefinition);
-                existingQuery = this.getQueryFromState(queryId, options);
+/**
+ * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
+ * `keysFunc` and `symbolsFunc` to get the enumerable property names and
+ * symbols of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {Function} keysFunc The function to get the keys of `object`.
+ * @param {Function} symbolsFunc The function to get the symbols of `object`.
+ * @returns {Array} Returns the array of property names and symbols.
+ */
+function baseGetAllKeys(object, keysFunc, symbolsFunc) {
+  var result = keysFunc(object);
+  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
+}
 
-                if (!(options.enabled !== undefined)) {
-                  _context8.next = 8;
-                  break;
-                }
+module.exports = baseGetAllKeys;
 
-                if (!('boolean' !== typeof options.enabled)) {
-                  _context8.next = 8;
-                  break;
-                }
 
-                throw new Error("option.enabled should be a boolean for this query: ".concat(JSON.stringify(queryDefinition)));
+/***/ }),
+/* 386 */
+/***/ (function(module, exports) {
 
-              case 8:
-                if (!options.fetchPolicy) {
-                  _context8.next = 14;
-                  break;
-                }
+/**
+ * Appends the elements of `values` to `array`.
+ *
+ * @private
+ * @param {Array} array The array to modify.
+ * @param {Array} values The values to append.
+ * @returns {Array} Returns `array`.
+ */
+function arrayPush(array, values) {
+  var index = -1,
+      length = values.length,
+      offset = array.length;
 
-                if (options.as) {
-                  _context8.next = 11;
-                  break;
-                }
+  while (++index < length) {
+    array[offset + index] = values[index];
+  }
+  return array;
+}
 
-                throw new Error('Cannot use `fetchPolicy` without naming the query, please use `as` to name the query');
+module.exports = arrayPush;
 
-              case 11:
-                shouldFetch = options.fetchPolicy(existingQuery);
 
-                if (shouldFetch) {
-                  _context8.next = 14;
-                  break;
-                }
+/***/ }),
+/* 387 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                return _context8.abrupt("return");
+var arrayFilter = __webpack_require__(388),
+    stubArray = __webpack_require__(389);
 
-              case 14:
-                if (!(existingQuery && Object.keys(existingQuery).length > 0)) {
-                  _context8.next = 17;
-                  break;
-                }
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
 
-                if (!(existingQuery.fetchStatus === 'loading')) {
-                  _context8.next = 17;
-                  break;
-                }
+/** Built-in value references. */
+var propertyIsEnumerable = objectProto.propertyIsEnumerable;
 
-                return _context8.abrupt("return", this._promiseCache.get(function () {
-                  return (0, _jsonStableStringify.default)(queryDefinition);
-                }));
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeGetSymbols = Object.getOwnPropertySymbols;
 
-              case 17:
-                this.ensureQueryExists(queryId, queryDefinition, options);
-                _context8.prev = 18;
-                backgroundFetching = options.backgroundFetching !== undefined ? options.backgroundFetching : this.options.backgroundFetching;
-                this.dispatch((0, _store.loadQuery)(queryId, {
-                  backgroundFetching: backgroundFetching
-                }));
-                _context8.next = 23;
-                return this._promiseCache.exec(function () {
-                  return _this4.requestQuery(queryDefinition);
-                }, function () {
-                  return (0, _jsonStableStringify.default)(queryDefinition);
-                });
-
-              case 23:
-                response = _context8.sent;
-                this.dispatch((0, _store.receiveQueryResult)(queryId, response, {
-                  update: update,
-                  backgroundFetching: backgroundFetching
-                }));
-                return _context8.abrupt("return", response);
+/**
+ * Creates an array of the own enumerable symbols of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of symbols.
+ */
+var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
+  if (object == null) {
+    return [];
+  }
+  object = Object(object);
+  return arrayFilter(nativeGetSymbols(object), function(symbol) {
+    return propertyIsEnumerable.call(object, symbol);
+  });
+};
 
-              case 28:
-                _context8.prev = 28;
-                _context8.t0 = _context8["catch"](18);
-                this.dispatch((0, _store.receiveQueryError)(queryId, _context8.t0)); // specific onError
+module.exports = getSymbols;
 
-                if (!options.onError) {
-                  _context8.next = 35;
-                  break;
-                }
 
-                options.onError(_context8.t0); // defaulted onError
+/***/ }),
+/* 388 */
+/***/ (function(module, exports) {
 
-                _context8.next = 40;
-                break;
+/**
+ * A specialized version of `_.filter` for arrays without support for
+ * iteratee shorthands.
+ *
+ * @private
+ * @param {Array} [array] The array to iterate over.
+ * @param {Function} predicate The function invoked per iteration.
+ * @returns {Array} Returns the new filtered array.
+ */
+function arrayFilter(array, predicate) {
+  var index = -1,
+      length = array == null ? 0 : array.length,
+      resIndex = 0,
+      result = [];
 
-              case 35:
-                if (!this.options.onError) {
-                  _context8.next = 39;
-                  break;
-                }
+  while (++index < length) {
+    var value = array[index];
+    if (predicate(value, index, array)) {
+      result[resIndex++] = value;
+    }
+  }
+  return result;
+}
 
-                this.options.onError(_context8.t0);
-                _context8.next = 40;
-                break;
+module.exports = arrayFilter;
 
-              case 39:
-                throw _context8.t0;
 
-              case 40:
-              case "end":
-                return _context8.stop();
-            }
-          }
-        }, _callee8, this, [[18, 28]]);
-      }));
+/***/ }),
+/* 389 */
+/***/ (function(module, exports) {
 
-      function query(_x9) {
-        return _query.apply(this, arguments);
-      }
+/**
+ * This method returns a new empty array.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.13.0
+ * @category Util
+ * @returns {Array} Returns the new empty array.
+ * @example
+ *
+ * var arrays = _.times(2, _.stubArray);
+ *
+ * console.log(arrays);
+ * // => [[], []]
+ *
+ * console.log(arrays[0] === arrays[1]);
+ * // => false
+ */
+function stubArray() {
+  return [];
+}
 
-      return query;
-    }()
-    /**
-     * Will fetch all documents for a `queryDefinition`, automatically fetching more
-     * documents if the total of documents is superior to the pagination limit. Can
-     * result in a lot of network requests.
-     *
-     * @param  {QueryDefinition} queryDefinition - Definition to be executed
-     * @param {import("./types").QueryOptions} [options] - Options
-     * @returns {Promise<import("./types").QueryResult>} All documents matching the query
-     */
+module.exports = stubArray;
 
-  }, {
-    key: "queryAll",
-    value: function () {
-      var _queryAll = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(queryDefinition) {
-        var options,
-            queryId,
-            mergedOptions,
-            resp,
-            documents,
-            currentResult,
-            _args9 = arguments;
-        return _regenerator.default.wrap(function _callee9$(_context9) {
-          while (1) {
-            switch (_context9.prev = _context9.next) {
-              case 0:
-                options = _args9.length > 1 && _args9[1] !== undefined ? _args9[1] : {};
-                queryId = options.as || this.queryIdGenerator.generateId(queryDefinition);
-                mergedOptions = _objectSpread(_objectSpread({}, options), {}, {
-                  as: queryId
-                });
-                _context9.prev = 3;
-                _context9.next = 6;
-                return this.query(queryDefinition, mergedOptions);
 
-              case 6:
-                resp = _context9.sent;
-                documents = resp.data;
+/***/ }),
+/* 390 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 8:
-                if (!(resp && resp.next)) {
-                  _context9.next = 22;
-                  break;
-                }
+var DataView = __webpack_require__(391),
+    Map = __webpack_require__(355),
+    Promise = __webpack_require__(392),
+    Set = __webpack_require__(393),
+    WeakMap = __webpack_require__(394),
+    baseGetTag = __webpack_require__(304),
+    toSource = __webpack_require__(313);
 
-                if (!resp.bookmark) {
-                  _context9.next = 15;
-                  break;
-                }
+/** `Object#toString` result references. */
+var mapTag = '[object Map]',
+    objectTag = '[object Object]',
+    promiseTag = '[object Promise]',
+    setTag = '[object Set]',
+    weakMapTag = '[object WeakMap]';
 
-                _context9.next = 12;
-                return this.query(queryDefinition.offsetBookmark(resp.bookmark), mergedOptions);
+var dataViewTag = '[object DataView]';
 
-              case 12:
-                resp = _context9.sent;
-                _context9.next = 19;
-                break;
+/** Used to detect maps, sets, and weakmaps. */
+var dataViewCtorString = toSource(DataView),
+    mapCtorString = toSource(Map),
+    promiseCtorString = toSource(Promise),
+    setCtorString = toSource(Set),
+    weakMapCtorString = toSource(WeakMap);
 
-              case 15:
-                currentResult = (0, _store.getRawQueryFromState)(this.store.getState(), queryId);
-                _context9.next = 18;
-                return this.query(queryDefinition.offset(currentResult.data.length), mergedOptions);
+/**
+ * Gets the `toStringTag` of `value`.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @returns {string} Returns the `toStringTag`.
+ */
+var getTag = baseGetTag;
 
-              case 18:
-                resp = _context9.sent;
+// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
+if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
+    (Map && getTag(new Map) != mapTag) ||
+    (Promise && getTag(Promise.resolve()) != promiseTag) ||
+    (Set && getTag(new Set) != setTag) ||
+    (WeakMap && getTag(new WeakMap) != weakMapTag)) {
+  getTag = function(value) {
+    var result = baseGetTag(value),
+        Ctor = result == objectTag ? value.constructor : undefined,
+        ctorString = Ctor ? toSource(Ctor) : '';
 
-              case 19:
-                documents.push.apply(documents, (0, _toConsumableArray2.default)(resp.data));
-                _context9.next = 8;
-                break;
+    if (ctorString) {
+      switch (ctorString) {
+        case dataViewCtorString: return dataViewTag;
+        case mapCtorString: return mapTag;
+        case promiseCtorString: return promiseTag;
+        case setCtorString: return setTag;
+        case weakMapCtorString: return weakMapTag;
+      }
+    }
+    return result;
+  };
+}
 
-              case 22:
-                return _context9.abrupt("return", documents);
+module.exports = getTag;
 
-              case 25:
-                _context9.prev = 25;
-                _context9.t0 = _context9["catch"](3);
 
-                _logger.default.log("queryAll error for ".concat(_context9.t0.toString()));
+/***/ }),
+/* 391 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                return _context9.abrupt("return", []);
+var getNative = __webpack_require__(301),
+    root = __webpack_require__(306);
 
-              case 29:
-              case "end":
-                return _context9.stop();
-            }
-          }
-        }, _callee9, this, [[3, 25]]);
-      }));
+/* Built-in method references that are verified to be native. */
+var DataView = getNative(root, 'DataView');
 
-      function queryAll(_x10) {
-        return _queryAll.apply(this, arguments);
-      }
+module.exports = DataView;
 
-      return queryAll;
-    }()
-  }, {
-    key: "watchQuery",
-    value: function watchQuery() {
-      _logger.default.warn('client.watchQuery is deprecated, please use client.makeObservableQuery.');
 
-      return this.makeObservableQuery.apply(this, arguments);
-    }
-  }, {
-    key: "makeObservableQuery",
-    value: function makeObservableQuery(queryDefinition) {
-      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-      this.ensureStore();
-      var queryId = options.as || this.queryIdGenerator.generateId(queryDefinition);
-      this.ensureQueryExists(queryId, queryDefinition);
-      return new _ObservableQuery.default(queryId, queryDefinition, this, options);
-    }
-    /**
-     * Mutate a document
-     *
-     * @param  {object}    mutationDefinition - Describe the mutation
-     * @param {object} [options] - Options
-     * @param  {string}    [options.as] - Mutation id
-     * @param  {Function}    [options.update] - Function to update the document
-     * @param  {Function}    [options.updateQueries] - Function to update queries
-     * @returns {Promise}
-     */
+/***/ }),
+/* 392 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  }, {
-    key: "mutate",
-    value: function () {
-      var _mutate = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(mutationDefinition) {
-        var _ref6,
-            update,
-            updateQueries,
-            options,
-            mutationId,
-            response,
-            _args10 = arguments;
+var getNative = __webpack_require__(301),
+    root = __webpack_require__(306);
 
-        return _regenerator.default.wrap(function _callee10$(_context10) {
-          while (1) {
-            switch (_context10.prev = _context10.next) {
-              case 0:
-                _ref6 = _args10.length > 1 && _args10[1] !== undefined ? _args10[1] : {};
-                update = _ref6.update, updateQueries = _ref6.updateQueries, options = (0, _objectWithoutProperties2.default)(_ref6, ["update", "updateQueries"]);
-                this.ensureStore();
-                mutationId = options.as || this.queryIdGenerator.generateId(mutationDefinition);
-                this.dispatch((0, _store.initMutation)(mutationId, mutationDefinition));
-                _context10.prev = 5;
-                _context10.next = 8;
-                return this.requestMutation(mutationDefinition);
+/* Built-in method references that are verified to be native. */
+var Promise = getNative(root, 'Promise');
 
-              case 8:
-                response = _context10.sent;
-                this.dispatch((0, _store.receiveMutationResult)(mutationId, response, {
-                  update: update,
-                  updateQueries: updateQueries
-                }, mutationDefinition));
-                return _context10.abrupt("return", response);
+module.exports = Promise;
 
-              case 13:
-                _context10.prev = 13;
-                _context10.t0 = _context10["catch"](5);
-                this.dispatch((0, _store.receiveMutationError)(mutationId, _context10.t0, mutationDefinition));
-                throw _context10.t0;
 
-              case 17:
-              case "end":
-                return _context10.stop();
-            }
-          }
-        }, _callee10, this, [[5, 13]]);
-      }));
+/***/ }),
+/* 393 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      function mutate(_x11) {
-        return _mutate.apply(this, arguments);
-      }
+var getNative = __webpack_require__(301),
+    root = __webpack_require__(306);
 
-      return mutate;
-    }()
-    /**
-     * Executes a query through links and fetches relationships
-     *
-     * @private
-     * @param  {QueryDefinition} definition QueryDefinition to be executed
-     * @returns {Promise<import("./types").ClientResponse>}
-     */
+/* Built-in method references that are verified to be native. */
+var Set = getNative(root, 'Set');
 
-  }, {
-    key: "requestQuery",
-    value: function () {
-      var _requestQuery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(definition) {
-        var mainResponse, withIncluded;
-        return _regenerator.default.wrap(function _callee11$(_context11) {
-          while (1) {
-            switch (_context11.prev = _context11.next) {
-              case 0:
-                _context11.next = 2;
-                return this.chain.request(definition);
+module.exports = Set;
 
-              case 2:
-                mainResponse = _context11.sent;
 
-                if (definition.includes) {
-                  _context11.next = 5;
-                  break;
-                }
+/***/ }),
+/* 394 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                return _context11.abrupt("return", mainResponse);
+var getNative = __webpack_require__(301),
+    root = __webpack_require__(306);
 
-              case 5:
-                _context11.next = 7;
-                return this.fetchRelationships(mainResponse, this.getIncludesRelationships(definition));
+/* Built-in method references that are verified to be native. */
+var WeakMap = getNative(root, 'WeakMap');
 
-              case 7:
-                withIncluded = _context11.sent;
-                return _context11.abrupt("return", withIncluded);
+module.exports = WeakMap;
 
-              case 9:
-              case "end":
-                return _context11.stop();
-            }
-          }
-        }, _callee11, this);
-      }));
 
-      function requestQuery(_x12) {
-        return _requestQuery.apply(this, arguments);
-      }
+/***/ }),
+/* 395 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      return requestQuery;
-    }()
-    /**
-     * Fetch relationships for a response (can be several docs).
-     * Fills the `relationships` attribute of each documents.
-     *
-     * Can potentially result in several fetch requests.
-     * Queries are optimized before being sent (multiple single documents queries can be packed into
-     * one multiple document query) for example.
-     *
-     * @private
-     */
+var isStrictComparable = __webpack_require__(396),
+    keys = __webpack_require__(318);
 
-  }, {
-    key: "fetchRelationships",
-    value: function () {
-      var _fetchRelationships = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(response, relationshipsByName) {
-        var _this5 = this;
+/**
+ * Gets the property names, values, and compare flags of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the match data of `object`.
+ */
+function getMatchData(object) {
+  var result = keys(object),
+      length = result.length;
 
-        var isSingleDoc, responseDocs, queryDefToDocIdAndRel, documents, definitions, optimizedDefinitions, responses, uniqueDocuments, included, relationshipsByDocId, _iterator5, _step5, _step5$value, def, resp, docIdAndRel, _docIdAndRel, docId, relName;
+  while (length--) {
+    var key = result[length],
+        value = object[key];
 
-        return _regenerator.default.wrap(function _callee12$(_context12) {
-          while (1) {
-            switch (_context12.prev = _context12.next) {
-              case 0:
-                isSingleDoc = !Array.isArray(response.data);
+    result[length] = [key, value, isStrictComparable(value)];
+  }
+  return result;
+}
 
-                if (!(!isSingleDoc && response.data.length === 0)) {
-                  _context12.next = 3;
-                  break;
-                }
+module.exports = getMatchData;
 
-                return _context12.abrupt("return", response);
 
-              case 3:
-                responseDocs = isSingleDoc ? [response.data] : response.data;
-                queryDefToDocIdAndRel = new Map();
-                documents = [];
-                definitions = [];
-                responseDocs.forEach(function (doc) {
-                  return (0, _forEach.default)(relationshipsByName, function (relationship, relName) {
-                    try {
-                      var queryDef = relationship.type.query(doc, _this5, relationship);
-                      var docId = doc._id; // Used to reattach responses into the relationships attribute of
-                      // each document
+/***/ }),
+/* 396 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                      queryDefToDocIdAndRel.set(queryDef, [docId, relName]); // Relationships can yield "queries" that are already resolved documents.
-                      // These do not need to go through the usual link request mechanism.
+var isObject = __webpack_require__(310);
 
-                      if (queryDef instanceof _dsl.QueryDefinition) {
-                        definitions.push(queryDef);
-                      } else {
-                        documents.push(queryDef);
-                      }
-                    } catch (_unused) {// eslint-disable-next-line
-                      // We do not crash completely if one the relationship behaves badly and
-                      // throws
-                    }
-                  });
-                }); // Definitions can be in optimized/regrouped in case of HasMany relationships.
+/**
+ * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` if suitable for strict
+ *  equality comparisons, else `false`.
+ */
+function isStrictComparable(value) {
+  return value === value && !isObject(value);
+}
 
-                optimizedDefinitions = (0, _optimize.default)(definitions);
-                _context12.next = 11;
-                return Promise.all(optimizedDefinitions.map(function (req) {
-                  return _this5.chain.request(req);
-                }));
+module.exports = isStrictComparable;
 
-              case 11:
-                responses = _context12.sent;
-                // "Included" documents will be stored in the `documents` store
-                uniqueDocuments = (0, _uniqBy.default)((0, _flatten.default)(documents), '_id');
-                included = (0, _flatten.default)(responses.map(function (r) {
-                  return r.included || r.data;
-                })).concat(uniqueDocuments).filter(Boolean); // Some relationships have the relationship data on the other side of the
-                // relationship (ex: io.cozy.photos.albums do not have photo inclusion information,
-                // it is on the io.cozy.files side).
-                // Here we take the data received from the relationship queries, and group
-                // it so that we can fill the `relationships` attribute of each doc before
-                // storing the document. This makes the data easier to manipulate for the front-end.
 
-                relationshipsByDocId = {};
-                _iterator5 = _createForOfIteratorHelper((0, _zip.default)(optimizedDefinitions, responses));
+/***/ }),
+/* 397 */
+/***/ (function(module, exports) {
 
-                try {
-                  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
-                    _step5$value = (0, _slicedToArray2.default)(_step5.value, 2), def = _step5$value[0], resp = _step5$value[1];
-                    docIdAndRel = queryDefToDocIdAndRel.get(def);
+/**
+ * A specialized version of `matchesProperty` for source values suitable
+ * for strict equality comparisons, i.e. `===`.
+ *
+ * @private
+ * @param {string} key The key of the property to get.
+ * @param {*} srcValue The value to match.
+ * @returns {Function} Returns the new spec function.
+ */
+function matchesStrictComparable(key, srcValue) {
+  return function(object) {
+    if (object == null) {
+      return false;
+    }
+    return object[key] === srcValue &&
+      (srcValue !== undefined || (key in Object(object)));
+  };
+}
 
-                    if (docIdAndRel) {
-                      _docIdAndRel = (0, _slicedToArray2.default)(docIdAndRel, 2), docId = _docIdAndRel[0], relName = _docIdAndRel[1];
-                      relationshipsByDocId[docId] = relationshipsByDocId[docId] || {};
-                      relationshipsByDocId[docId][relName] = (0, _helpers.responseToRelationship)(resp);
-                    }
-                  }
-                } catch (err) {
-                  _iterator5.e(err);
-                } finally {
-                  _iterator5.f();
-                }
+module.exports = matchesStrictComparable;
 
-                return _context12.abrupt("return", _objectSpread(_objectSpread({}, (0, _helpers.attachRelationships)(response, relationshipsByDocId)), {}, {
-                  included: included
-                }));
 
-              case 18:
-              case "end":
-                return _context12.stop();
-            }
-          }
-        }, _callee12);
-      }));
+/***/ }),
+/* 398 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      function fetchRelationships(_x13, _x14) {
-        return _fetchRelationships.apply(this, arguments);
-      }
+var baseIsEqual = __webpack_require__(371),
+    get = __webpack_require__(399),
+    hasIn = __webpack_require__(411),
+    isKey = __webpack_require__(402),
+    isStrictComparable = __webpack_require__(396),
+    matchesStrictComparable = __webpack_require__(397),
+    toKey = __webpack_require__(410);
 
-      return fetchRelationships;
-    }()
-  }, {
-    key: "requestMutation",
-    value: function () {
-      var _requestMutation = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13(definition) {
-        var _this6 = this;
+/** Used to compose bitmasks for value comparisons. */
+var COMPARE_PARTIAL_FLAG = 1,
+    COMPARE_UNORDERED_FLAG = 2;
 
-        var _definition, first, rest, firstResponse;
+/**
+ * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
+ *
+ * @private
+ * @param {string} path The path of the property to get.
+ * @param {*} srcValue The value to match.
+ * @returns {Function} Returns the new spec function.
+ */
+function baseMatchesProperty(path, srcValue) {
+  if (isKey(path) && isStrictComparable(srcValue)) {
+    return matchesStrictComparable(toKey(path), srcValue);
+  }
+  return function(object) {
+    var objValue = get(object, path);
+    return (objValue === undefined && objValue === srcValue)
+      ? hasIn(object, path)
+      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
+  };
+}
 
-        return _regenerator.default.wrap(function _callee13$(_context13) {
-          while (1) {
-            switch (_context13.prev = _context13.next) {
-              case 0:
-                if (!Array.isArray(definition)) {
-                  _context13.next = 8;
-                  break;
-                }
+module.exports = baseMatchesProperty;
 
-                _definition = (0, _toArray2.default)(definition), first = _definition[0], rest = _definition.slice(1);
-                _context13.next = 4;
-                return this.requestMutation(first);
 
-              case 4:
-                firstResponse = _context13.sent;
-                _context13.next = 7;
-                return Promise.all(rest.map(function (def) {
-                  var mutationDef = typeof def === 'function' ? def(firstResponse) : def;
-                  return _this6.requestMutation(mutationDef);
-                }));
+/***/ }),
+/* 399 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 7:
-                return _context13.abrupt("return", firstResponse);
+var baseGet = __webpack_require__(400);
 
-              case 8:
-                return _context13.abrupt("return", this.chain.request(definition));
+/**
+ * Gets the value at `path` of `object`. If the resolved value is
+ * `undefined`, the `defaultValue` is returned in its place.
+ *
+ * @static
+ * @memberOf _
+ * @since 3.7.0
+ * @category Object
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path of the property to get.
+ * @param {*} [defaultValue] The value returned for `undefined` resolved values.
+ * @returns {*} Returns the resolved value.
+ * @example
+ *
+ * var object = { 'a': [{ 'b': { 'c': 3 } }] };
+ *
+ * _.get(object, 'a[0].b.c');
+ * // => 3
+ *
+ * _.get(object, ['a', '0', 'b', 'c']);
+ * // => 3
+ *
+ * _.get(object, 'a.b.c', 'default');
+ * // => 'default'
+ */
+function get(object, path, defaultValue) {
+  var result = object == null ? undefined : baseGet(object, path);
+  return result === undefined ? defaultValue : result;
+}
 
-              case 9:
-              case "end":
-                return _context13.stop();
-            }
-          }
-        }, _callee13, this);
-      }));
+module.exports = get;
 
-      function requestMutation(_x15) {
-        return _requestMutation.apply(this, arguments);
-      }
 
-      return requestMutation;
-    }()
-  }, {
-    key: "getIncludesRelationships",
-    value: function getIncludesRelationships(queryDefinition) {
-      var _this7 = this;
+/***/ }),
+/* 400 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      var includes = queryDefinition.includes,
-          doctype = queryDefinition.doctype;
-      if (!includes) return {};
-      return (0, _fromPairs.default)(includes.map(function (relName) {
-        return [relName, _this7.schema.getRelationship(doctype, relName)];
-      }));
-    }
-    /**
-     * Returns documents with their relationships resolved according to their schema.
-     * If related documents are not in the store, they will not be fetched automatically.
-     * Instead, the relationships will have null documents.
-     *
-     * @param  {string} doctype - Doctype of the documents being hydrated
-     * @param  {Array<import("./types").CozyClientDocument>} documents - Documents to be hydrated
-     * @returns {Array<import("./types").HydratedDocument>}
-     */
+var castPath = __webpack_require__(401),
+    toKey = __webpack_require__(410);
 
-  }, {
-    key: "hydrateDocuments",
-    value: function hydrateDocuments(doctype, documents) {
-      var _this8 = this;
+/**
+ * The base implementation of `_.get` without support for default values.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path of the property to get.
+ * @returns {*} Returns the resolved value.
+ */
+function baseGet(object, path) {
+  path = castPath(path, object);
 
-      if (this.options.autoHydrate === false) {
-        return documents;
-      }
+  var index = 0,
+      length = path.length;
 
-      var schema = this.schema.getDoctypeSchema(doctype);
-      var relationships = schema.relationships;
+  while (object != null && index < length) {
+    object = object[toKey(path[index++])];
+  }
+  return (index && index == length) ? object : undefined;
+}
 
-      if (relationships) {
-        return documents.map(function (doc) {
-          return _this8.hydrateDocument(doc, schema);
-        });
-      } else {
-        return documents;
-      }
-    }
-    /**
-     * Resolves relationships on a document.
-     *
-     * The original document is kept in the target attribute of
-     * the relationship
-     *
-     * @param  {import("./types").CozyClientDocument} document - for which relationships must be resolved
-     * @param  {Schema} [schemaArg] - Optional
-     * @returns {import("./types").HydratedDocument}
-     */
+module.exports = baseGet;
 
-  }, {
-    key: "hydrateDocument",
-    value: function hydrateDocument(document, schemaArg) {
-      if (!document) {
-        return document;
-      }
 
-      var schema = schemaArg || this.schema.getDoctypeSchema(document._type);
-      return _objectSpread(_objectSpread({}, document), this.hydrateRelationships(document, schema.relationships));
-    }
-  }, {
-    key: "hydrateRelationships",
-    value: function hydrateRelationships(document, schemaRelationships) {
-      var methods = this.getRelationshipStoreAccessors();
-      return (0, _mapValues.default)(schemaRelationships, function (assoc, name) {
-        return (0, _associations.create)(document, assoc, methods);
-      });
-    }
-    /**
-     * Creates (locally) a new document for the given doctype.
-     * This document is hydrated : its relationships are there
-     * and working.
-     */
+/***/ }),
+/* 401 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  }, {
-    key: "makeNewDocument",
-    value: function makeNewDocument(doctype) {
-      var obj = {
-        _type: doctype
-      };
-      return this.hydrateDocument(obj);
-    }
-  }, {
-    key: "generateRandomId",
-    value: function generateRandomId() {
-      return this.queryIdGenerator.generateRandomId();
-    }
-    /**
-     * Creates an association that is linked to the store.
-     */
+var isArray = __webpack_require__(324),
+    isKey = __webpack_require__(402),
+    stringToPath = __webpack_require__(404),
+    toString = __webpack_require__(407);
 
-  }, {
-    key: "getAssociation",
-    value: function getAssociation(document, associationName) {
-      return (0, _associations.create)(document, this.schema.getRelationship(document._type, associationName), this.getRelationshipStoreAccessors());
-    }
-    /**
-     * Returns the accessors that are given to the relationships for them
-     * to deal with the stores.
-     *
-     * Relationships need to have access to the store to ping it when
-     * a modification (addById/removeById etc...) has been done. This wakes
-     * the store up, which in turn will update the `<Query>`s and re-render the data.
-     */
+/**
+ * Casts `value` to a path array if it's not one.
+ *
+ * @private
+ * @param {*} value The value to inspect.
+ * @param {Object} [object] The object to query keys on.
+ * @returns {Array} Returns the cast property path array.
+ */
+function castPath(value, object) {
+  if (isArray(value)) {
+    return value;
+  }
+  return isKey(value, object) ? [value] : stringToPath(toString(value));
+}
 
-  }, {
-    key: "getRelationshipStoreAccessors",
-    value: function getRelationshipStoreAccessors() {
-      var _this9 = this;
+module.exports = castPath;
 
-      if (!this.storeAccesors) {
-        this.storeAccessors = {
-          get: this.getDocumentFromState.bind(this),
-          save: function save(document, opts) {
-            return _this9.save.call(_this9, document, opts);
-          },
-          dispatch: this.dispatch.bind(this),
-          query: function query(def, opts) {
-            return _this9.query.call(_this9, def, opts);
-          },
-          mutate: function mutate(def, opts) {
-            return _this9.mutate.call(_this9, def, opts);
-          }
-        };
-      }
 
-      return this.storeAccessors;
-    }
-    /**
-     * Get a collection of documents from the internal store.
-     *
-     * @param {string} type - Doctype of the collection
-     *
-     * @returns {import("./types").CozyClientDocument[]} Array of documents or null if the collection does not exist.
-     */
+/***/ }),
+/* 402 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  }, {
-    key: "getCollectionFromState",
-    value: function getCollectionFromState(type) {
-      try {
-        return (0, _store.getCollectionFromState)(this.store.getState(), type);
-      } catch (e) {
-        _logger.default.warn('Could not getCollectionFromState', type, e.message);
+var isArray = __webpack_require__(324),
+    isSymbol = __webpack_require__(403);
 
-        return null;
-      }
-    }
-    /**
-     * Get a document from the internal store.
-     *
-     * @param {string} type - Doctype of the document
-     * @param {string} id   - Id of the document
-     *
-     * @returns {import("./types").CozyClientDocument} Document or null if the object does not exist.
-     */
+/** Used to match property names within property paths. */
+var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
+    reIsPlainProp = /^\w*$/;
 
-  }, {
-    key: "getDocumentFromState",
-    value: function getDocumentFromState(type, id) {
-      try {
-        return (0, _store.getDocumentFromState)(this.store.getState(), type, id);
-      } catch (e) {
-        _logger.default.warn('Could not getDocumentFromState', type, id, e.message);
+/**
+ * Checks if `value` is a property name and not a property path.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @param {Object} [object] The object to query keys on.
+ * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
+ */
+function isKey(value, object) {
+  if (isArray(value)) {
+    return false;
+  }
+  var type = typeof value;
+  if (type == 'number' || type == 'symbol' || type == 'boolean' ||
+      value == null || isSymbol(value)) {
+    return true;
+  }
+  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
+    (object != null && value in Object(object));
+}
 
-        return null;
-      }
-    }
-    /**
-     * Get a query from the internal store.
-     *
-     * @param {string} id - Id of the query (set via Query.props.as)
-     * @param {object} options - Options
-     * @param {boolean} [options.hydrated] - Whether documents should be returned already hydrated (default: false)
-     * @param  {object} [options.singleDocData] - If true, the "data" returned will be
-     * a single doc instead of an array for single doc queries. Defaults to false for backward
-     * compatibility but will be set to true in the future.
-     *
-     * @returns {import("./types").QueryState} - Query state or null if it does not exist.
-     */
+module.exports = isKey;
 
-  }, {
-    key: "getQueryFromState",
-    value: function getQueryFromState(id) {
-      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-      var hydrated = options.hydrated || false;
-      var singleDocData = options.singleDocData || false;
 
-      try {
-        var queryResults = (0, _store.getQueryFromState)(this.store.getState(), id);
-        var doctype = queryResults.definition && queryResults.definition.doctype;
-        var isSingleDocQuery = queryResults.definition && queryResults.definition.id;
+/***/ }),
+/* 403 */
+/***/ (function(module, exports, __webpack_require__) {
 
-        if (!hydrated && !singleDocData) {
-          // Early return let's us preserve reference equality in the simple case
-          return queryResults;
-        }
+var baseGetTag = __webpack_require__(304),
+    isObjectLike = __webpack_require__(323);
 
-        var data = hydrated && doctype ? this.hydrateDocuments(doctype, queryResults.data) : queryResults.data;
-        return _objectSpread(_objectSpread({}, queryResults), {}, {
-          data: isSingleDocQuery && singleDocData ? data[0] : data
-        });
-      } catch (e) {
-        _logger.default.warn("Could not get query from state. queryId: ".concat(id, ", error: ").concat(e.message));
+/** `Object#toString` result references. */
+var symbolTag = '[object Symbol]';
 
-        return null;
-      }
-    }
-    /**
-     * Executes a query and returns the results from internal store.
-     *
-     * Can be useful in pure JS context (without React)
-     * Has a behavior close to <Query /> or useQuery
-     *
-     * @param {object} query - Query with definition and options
-     * @param {QueryDefinition} query.definition - Query Definition
-     * @param {import("./types").QueryOptions} query.options - Query Options
-     * @returns {Promise<import("./types").QueryState>} Query state
-     */
+/**
+ * Checks if `value` is classified as a `Symbol` primitive or object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
+ * @example
+ *
+ * _.isSymbol(Symbol.iterator);
+ * // => true
+ *
+ * _.isSymbol('abc');
+ * // => false
+ */
+function isSymbol(value) {
+  return typeof value == 'symbol' ||
+    (isObjectLike(value) && baseGetTag(value) == symbolTag);
+}
 
-  }, {
-    key: "register",
+module.exports = isSymbol;
 
-    /**
-     * Performs a complete OAuth flow using a Cordova webview
-     * or React Native WebView for auth.
-     * The `register` method's name has been chosen for compat reasons with the Authentication compo.
-     *
-     * @param   {string} cozyURL Receives the URL of the cozy instance.
-     * @returns {object}   Contains the fetched token and the client information.
-     */
-    value: function register(cozyURL) {
-      var stackClient = this.getStackClient();
-      stackClient.setUri(cozyURL);
-      return this.startOAuthFlow(_mobile.authFunction);
-    }
-  }, {
-    key: "isReactNative",
-    value: function isReactNative() {
-      return typeof navigator != 'undefined' && navigator.product == 'ReactNative';
-    }
-    /**
-     * Performs a complete OAuth flow, including updating the internal token at the end.
-     *
-     * @param   {import("./types").OpenURLCallback} openURLCallback Receives the URL to present to the user as a parameter, and should return a promise that resolves with the URL the user was redirected to after accepting the permissions.
-     * @returns {Promise<object>} Contains the fetched token and the client information. These should be stored and used to restore the client.
-     */
 
-  }, {
-    key: "startOAuthFlow",
-    value: function () {
-      var _startOAuthFlow = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14(openURLCallback) {
-        var stackClient;
-        return _regenerator.default.wrap(function _callee14$(_context14) {
-          while (1) {
-            switch (_context14.prev = _context14.next) {
-              case 0:
-                stackClient = this.getStackClient();
-                _context14.next = 3;
-                return stackClient.register();
+/***/ }),
+/* 404 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 3:
-                _context14.next = 5;
-                return this.certifyFlagship();
+var memoizeCapped = __webpack_require__(405);
 
-              case 5:
-                return _context14.abrupt("return", this.authorize({
-                  openURLCallback: openURLCallback
-                }));
+/** Used to match property names within property paths. */
+var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
 
-              case 6:
-              case "end":
-                return _context14.stop();
-            }
-          }
-        }, _callee14, this);
-      }));
+/** Used to match backslashes in property paths. */
+var reEscapeChar = /\\(\\)?/g;
 
-      function startOAuthFlow(_x16) {
-        return _startOAuthFlow.apply(this, arguments);
-      }
+/**
+ * Converts `string` to a property path array.
+ *
+ * @private
+ * @param {string} string The string to convert.
+ * @returns {Array} Returns the property path array.
+ */
+var stringToPath = memoizeCapped(function(string) {
+  var result = [];
+  if (string.charCodeAt(0) === 46 /* . */) {
+    result.push('');
+  }
+  string.replace(rePropName, function(match, number, quote, subString) {
+    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
+  });
+  return result;
+});
 
-      return startOAuthFlow;
-    }()
-    /**
-     * Perform the Flagship certification process for verifying that the current running app is a genuine Cozy application
-     *
-     * This mechanism is described in https://github.com/cozy/cozy-client/blob/master/packages/cozy-client/src/flagship-certification/README.md
-     */
+module.exports = stringToPath;
 
-  }, {
-    key: "certifyFlagship",
-    value: function () {
-      var _certifyFlagship2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {
-        var stackClient;
-        return _regenerator.default.wrap(function _callee15$(_context15) {
-          while (1) {
-            switch (_context15.prev = _context15.next) {
-              case 0:
-                stackClient = this.getStackClient();
 
-                if (!stackClient.oauthOptions.shouldRequireFlagshipPermissions) {
-                  _context15.next = 4;
-                  break;
-                }
+/***/ }),
+/* 405 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                _context15.next = 4;
-                return (0, _flagshipCertification.certifyFlagship)(stackClient.oauthOptions.certificationConfig, this);
+var memoize = __webpack_require__(406);
 
-              case 4:
-              case "end":
-                return _context15.stop();
-            }
-          }
-        }, _callee15, this);
-      }));
+/** Used as the maximum memoize cache size. */
+var MAX_MEMOIZE_SIZE = 500;
 
-      function certifyFlagship() {
-        return _certifyFlagship2.apply(this, arguments);
-      }
+/**
+ * A specialized version of `_.memoize` which clears the memoized function's
+ * cache when it exceeds `MAX_MEMOIZE_SIZE`.
+ *
+ * @private
+ * @param {Function} func The function to have its output memoized.
+ * @returns {Function} Returns the new memoized function.
+ */
+function memoizeCapped(func) {
+  var result = memoize(func, function(key) {
+    if (cache.size === MAX_MEMOIZE_SIZE) {
+      cache.clear();
+    }
+    return key;
+  });
 
-      return certifyFlagship;
-    }()
-    /**
-     * Creates an OAuth token with needed permissions for the current client.
-     * The authorization page URL generation can be overriding by passing a function pointer as `openURLCallback` parameter
-     * It is possible to skip the session creation process (when using an in-app browser) by passing a sessionCode (see https://docs.cozy.io/en/cozy-stack/auth/#post-authsession_code)
-     *
-     * @param {object} [options] - Authorization options
-     * @param {import("./types").OpenURLCallback} [options.openURLCallback] - Receives the URL to present to the user as a parameter, and should return a promise that resolves with the URL the user was redirected to after accepting the permissions.
-     * @param {import("./types").SessionCode} [options.sessionCode] - session code than can be added to the authorization URL to automatically create the session.
-     * @param {import("./types").PKCECodes} [options.pkceCodes] - code verifier and a code challenge that should be used in the PKCE verification process.
-     * @returns {Promise<object>} Contains the fetched token and the client information. These should be stored and used to restore the client.
-     */
+  var cache = result.cache;
+  return result;
+}
 
-  }, {
-    key: "authorize",
-    value: function () {
-      var _authorize = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {
-        var _ref7,
-            _ref7$openURLCallback,
-            openURLCallback,
-            _ref7$sessionCode,
-            sessionCode,
-            _ref7$pkceCodes,
-            pkceCodes,
-            codeVerifier,
-            codeChallenge,
-            stackClient,
-            stateCode,
-            url,
-            redirectedURL,
-            code,
-            token,
-            _stackClient,
-            _args16 = arguments;
+module.exports = memoizeCapped;
 
-        return _regenerator.default.wrap(function _callee16$(_context16) {
-          while (1) {
-            switch (_context16.prev = _context16.next) {
-              case 0:
-                _ref7 = _args16.length > 0 && _args16[0] !== undefined ? _args16[0] : {}, _ref7$openURLCallback = _ref7.openURLCallback, openURLCallback = _ref7$openURLCallback === void 0 ? _mobile.authFunction : _ref7$openURLCallback, _ref7$sessionCode = _ref7.sessionCode, sessionCode = _ref7$sessionCode === void 0 ? undefined : _ref7$sessionCode, _ref7$pkceCodes = _ref7.pkceCodes, pkceCodes = _ref7$pkceCodes === void 0 ? {} : _ref7$pkceCodes;
-                _context16.prev = 1;
-                codeVerifier = pkceCodes.codeVerifier, codeChallenge = pkceCodes.codeChallenge;
-                stackClient = this.getStackClient();
-                stateCode = stackClient.generateStateCode();
-                url = stackClient.getAuthCodeURL({
-                  stateCode: stateCode,
-                  scopes: undefined,
-                  sessionCode: sessionCode,
-                  codeChallenge: codeChallenge
-                });
-                _context16.next = 8;
-                return openURLCallback(url);
 
-              case 8:
-                redirectedURL = _context16.sent;
-                code = stackClient.getAccessCodeFromURL(redirectedURL, stateCode);
-                _context16.next = 12;
-                return stackClient.fetchAccessToken(code, undefined, undefined, codeVerifier);
+/***/ }),
+/* 406 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 12:
-                token = _context16.sent;
-                stackClient.setToken(token);
-                return _context16.abrupt("return", {
-                  token: token,
-                  infos: stackClient.oauthOptions,
-                  client: stackClient.oauthOptions // for compat with Authentication comp reasons
+var MapCache = __webpack_require__(356);
 
-                });
+/** Error message constants. */
+var FUNC_ERROR_TEXT = 'Expected a function';
 
-              case 17:
-                _context16.prev = 17;
-                _context16.t0 = _context16["catch"](1);
+/**
+ * Creates a function that memoizes the result of `func`. If `resolver` is
+ * provided, it determines the cache key for storing the result based on the
+ * arguments provided to the memoized function. By default, the first argument
+ * provided to the memoized function is used as the map cache key. The `func`
+ * is invoked with the `this` binding of the memoized function.
+ *
+ * **Note:** The cache is exposed as the `cache` property on the memoized
+ * function. Its creation may be customized by replacing the `_.memoize.Cache`
+ * constructor with one whose instances implement the
+ * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
+ * method interface of `clear`, `delete`, `get`, `has`, and `set`.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Function
+ * @param {Function} func The function to have its output memoized.
+ * @param {Function} [resolver] The function to resolve the cache key.
+ * @returns {Function} Returns the new memoized function.
+ * @example
+ *
+ * var object = { 'a': 1, 'b': 2 };
+ * var other = { 'c': 3, 'd': 4 };
+ *
+ * var values = _.memoize(_.values);
+ * values(object);
+ * // => [1, 2]
+ *
+ * values(other);
+ * // => [3, 4]
+ *
+ * object.a = 2;
+ * values(object);
+ * // => [1, 2]
+ *
+ * // Modify the result cache.
+ * values.cache.set(object, ['a', 'b']);
+ * values(object);
+ * // => ['a', 'b']
+ *
+ * // Replace `_.memoize.Cache`.
+ * _.memoize.Cache = WeakMap;
+ */
+function memoize(func, resolver) {
+  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
+    throw new TypeError(FUNC_ERROR_TEXT);
+  }
+  var memoized = function() {
+    var args = arguments,
+        key = resolver ? resolver.apply(this, args) : args[0],
+        cache = memoized.cache;
 
-                /* if REGISTRATION_ABORT is emited, we have to unregister the client. */
-                if (_context16.t0.message === _const.REGISTRATION_ABORT) {
-                  _stackClient = this.getStackClient();
+    if (cache.has(key)) {
+      return cache.get(key);
+    }
+    var result = func.apply(this, args);
+    memoized.cache = cache.set(key, result) || cache;
+    return result;
+  };
+  memoized.cache = new (memoize.Cache || MapCache);
+  return memoized;
+}
 
-                  _stackClient.unregister();
-                }
+// Expose `MapCache`.
+memoize.Cache = MapCache;
 
-                throw _context16.t0;
+module.exports = memoize;
 
-              case 21:
-              case "end":
-                return _context16.stop();
-            }
-          }
-        }, _callee16, this, [[1, 17]]);
-      }));
 
-      function authorize() {
-        return _authorize.apply(this, arguments);
-      }
+/***/ }),
+/* 407 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      return authorize;
-    }()
-    /**
-     * Renews the token if, for instance, new permissions are required or token
-     * has expired.
-     *
-     * @returns {object}   Contains the fetched token and the client information.
-     */
+var baseToString = __webpack_require__(408);
 
-  }, {
-    key: "renewAuthorization",
-    value: function renewAuthorization() {
-      return this.authorize({
-        openURLCallback: _mobile.authFunction
-      });
-    }
-    /**
-     * Sets the internal store of the client. Use this when you want to have cozy-client's
-     * internal store colocated with your existing Redux store.
-     *
-     * Typically, you would need to do this only once in your application, this is why
-     * setStore throws if you do it twice. If you really need to set the store again,
-     * use options.force = true.
-     *
-     * @example
-     * ```
-     * const client = new CozyClient()
-     * const store = createStore(combineReducers({
-     *   todos: todoReducer,
-     *   cozy: client.reducer()
-     * })
-     * client.setStore(store)
-     * ```
-     *
-     * @param {import("./types").ReduxStore} store - A redux store
-     * @param {object} [options] - Options
-     * @param {boolean} [options.force] - Will deactivate throwing when client's store already exists
-     */
+/**
+ * Converts `value` to a string. An empty string is returned for `null`
+ * and `undefined` values. The sign of `-0` is preserved.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to convert.
+ * @returns {string} Returns the converted string.
+ * @example
+ *
+ * _.toString(null);
+ * // => ''
+ *
+ * _.toString(-0);
+ * // => '-0'
+ *
+ * _.toString([1, 2, 3]);
+ * // => '1,2,3'
+ */
+function toString(value) {
+  return value == null ? '' : baseToString(value);
+}
 
-  }, {
-    key: "setStore",
-    value: function setStore(store) {
-      var _ref8 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
-          _ref8$force = _ref8.force,
-          force = _ref8$force === void 0 ? false : _ref8$force;
+module.exports = toString;
 
-      if (store === undefined) {
-        throw new Error('Store is undefined');
-      } else if (this.store && !force) {
-        throw new Error("Client already has a store, it is forbidden to change store.\nsetStore must be called before any query is executed. Try to\ncall setStore earlier in your code, preferably just after the\ninstantiation of the client.");
-      }
 
-      this.store = store;
-    }
-  }, {
-    key: "ensureStore",
-    value: function ensureStore() {
-      if (!this.store) {
-        this.setStore((0, _store.createStore)());
-      }
-    }
-    /**
-     * Returns whether the client has been revoked on the server
-     */
+/***/ }),
+/* 408 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  }, {
-    key: "checkForRevocation",
-    value: function () {
-      var _checkForRevocation = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17() {
-        return _regenerator.default.wrap(function _callee17$(_context17) {
-          while (1) {
-            switch (_context17.prev = _context17.next) {
-              case 0:
-                if (!(this.stackClient instanceof _cozyStackClient.OAuthClient)) {
-                  _context17.next = 4;
-                  break;
-                }
+var Symbol = __webpack_require__(305),
+    arrayMap = __webpack_require__(409),
+    isArray = __webpack_require__(324),
+    isSymbol = __webpack_require__(403);
 
-                return _context17.abrupt("return", this.stackClient.checkForRevocation());
+/** Used as references for various `Number` constants. */
+var INFINITY = 1 / 0;
 
-              case 4:
-                throw 'checkForRevocation is only implemented for OAutClient';
+/** Used to convert symbols to primitives and strings. */
+var symbolProto = Symbol ? Symbol.prototype : undefined,
+    symbolToString = symbolProto ? symbolProto.toString : undefined;
 
-              case 5:
-              case "end":
-                return _context17.stop();
-            }
-          }
-        }, _callee17, this);
-      }));
+/**
+ * The base implementation of `_.toString` which doesn't convert nullish
+ * values to empty strings.
+ *
+ * @private
+ * @param {*} value The value to process.
+ * @returns {string} Returns the string.
+ */
+function baseToString(value) {
+  // Exit early for strings to avoid a performance hit in some environments.
+  if (typeof value == 'string') {
+    return value;
+  }
+  if (isArray(value)) {
+    // Recursively convert values (susceptible to call stack limits).
+    return arrayMap(value, baseToString) + '';
+  }
+  if (isSymbol(value)) {
+    return symbolToString ? symbolToString.call(value) : '';
+  }
+  var result = (value + '');
+  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
+}
 
-      function checkForRevocation() {
-        return _checkForRevocation.apply(this, arguments);
-      }
+module.exports = baseToString;
 
-      return checkForRevocation;
-    }()
-    /** Sets public attribute and emits event related to revocation */
 
-  }, {
-    key: "handleRevocationChange",
-    value: function handleRevocationChange(state) {
-      if (state) {
-        this.isRevoked = true;
-        this.emit('revoked');
-      } else {
-        this.isRevoked = false;
-        this.emit('unrevoked');
-      }
-    }
-    /** Emits event when token is refreshed */
+/***/ }),
+/* 409 */
+/***/ (function(module, exports) {
 
-  }, {
-    key: "handleTokenRefresh",
-    value: function handleTokenRefresh(token) {
-      this.emit('tokenRefreshed');
+/**
+ * A specialized version of `_.map` for arrays without support for iteratee
+ * shorthands.
+ *
+ * @private
+ * @param {Array} [array] The array to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array} Returns the new mapped array.
+ */
+function arrayMap(array, iteratee) {
+  var index = -1,
+      length = array == null ? 0 : array.length,
+      result = Array(length);
 
-      if (this.options.onTokenRefresh) {
-        deprecatedHandler("Using onTokenRefresh is deprecated, please use events like this: cozyClient.on('tokenRefreshed', token => console.log('Token has been refreshed', token)). https://git.io/fj3M3");
-        this.options.onTokenRefresh(token);
-      }
-    }
-    /**
-     * If no stack client has been passed in options, creates a default stack
-     * client and attaches handlers for revocation and token refresh.
-     * If a stackClient has been passed in options, ensure it has handlers for
-     * revocation and token refresh.
-     *
-     * If `oauth` options are passed, stackClient is an OAuthStackClient.
-     */
+  while (++index < length) {
+    result[index] = iteratee(array[index], index, array);
+  }
+  return result;
+}
 
-  }, {
-    key: "createClient",
-    value: function createClient() {
-      if (this.options.client) {
-        _logger.default.warn('CozyClient: Using options.client is deprecated, please use options.stackClient.');
-      }
+module.exports = arrayMap;
 
-      var warningForCustomHandlers = this.options.warningForCustomHandlers !== undefined ? this.options.warningForCustomHandlers : true;
-      var stackClient = this.options.client || this.options.stackClient;
-      var handlers = {
-        onRevocationChange: this.handleRevocationChange,
-        onTokenRefresh: this.handleTokenRefresh
-      };
 
-      if (stackClient) {
-        this.stackClient = stackClient;
+/***/ }),
+/* 410 */
+/***/ (function(module, exports, __webpack_require__) {
 
-        if (!stackClient.options) {
-          stackClient.options = {};
-        }
+var isSymbol = __webpack_require__(403);
 
-        for (var _i2 = 0, _Object$keys2 = Object.keys(handlers); _i2 < _Object$keys2.length; _i2++) {
-          var handlerName = _Object$keys2[_i2];
+/** Used as references for various `Number` constants. */
+var INFINITY = 1 / 0;
 
-          if (!stackClient.options[handlerName]) {
-            stackClient.options[handlerName] = handlers[handlerName];
-          } else {
-            if (warningForCustomHandlers) {
-              _logger.default.warn("You passed a stackClient with its own ".concat(handlerName, ". It is not supported, unexpected things might happen."));
-            }
-          }
-        }
-      } else {
-        var options = _objectSpread(_objectSpread({}, this.options), handlers);
+/**
+ * Converts `value` to a string key if it's not a string or symbol.
+ *
+ * @private
+ * @param {*} value The value to inspect.
+ * @returns {string|symbol} Returns the key.
+ */
+function toKey(value) {
+  if (typeof value == 'string' || isSymbol(value)) {
+    return value;
+  }
+  var result = (value + '');
+  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
+}
 
-        this.stackClient = this.options.oauth ? new _cozyStackClient.OAuthClient(options) : new _cozyStackClient.default(options);
-      }
+module.exports = toKey;
 
-      this.client = new Proxy(this.stackClient, deprecatedHandler('Using cozyClient.client is deprecated, please use cozyClient.stackClient.'));
-    }
-  }, {
-    key: "getClient",
-    value: function getClient() {
-      _logger.default.warn('CozyClient: getClient() is deprecated, please use getStackClient().');
 
-      return this.getStackClient();
-    }
-  }, {
-    key: "getStackClient",
-    value: function getStackClient() {
-      if (!this.stackClient) {
-        this.createClient();
-      }
+/***/ }),
+/* 411 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      return this.stackClient;
-    }
-  }, {
-    key: "reducer",
-    value: function reducer() {
-      return _store.default;
-    }
-  }, {
-    key: "dispatch",
-    value: function dispatch(action) {
-      return this.store.dispatch(action);
-    }
-    /**
-     * getInstanceOptions - Returns current instance options, such as domain or app slug
-     *
-     * @returns {object}
-     */
-
-  }, {
-    key: "getInstanceOptions",
-    value: function getInstanceOptions() {
-      return this.instanceOptions;
-    }
-    /**
-     * loadInstanceOptionsFromDOM - Loads the dataset injected by the Stack in web pages and exposes it through getInstanceOptions
-     *
-     * @param {string} [selector=[role=application]] A selector for the node that holds the dataset to load
-     *
-     * @returns {void}
-     */
+var baseHasIn = __webpack_require__(412),
+    hasPath = __webpack_require__(413);
 
-  }, {
-    key: "loadInstanceOptionsFromDOM",
-    value: function loadInstanceOptionsFromDOM() {
-      var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '[role=application]';
-      var root = document.querySelector(selector);
+/**
+ * Checks if `path` is a direct or inherited property of `object`.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Object
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path to check.
+ * @returns {boolean} Returns `true` if `path` exists, else `false`.
+ * @example
+ *
+ * var object = _.create({ 'a': _.create({ 'b': 2 }) });
+ *
+ * _.hasIn(object, 'a');
+ * // => true
+ *
+ * _.hasIn(object, 'a.b');
+ * // => true
+ *
+ * _.hasIn(object, ['a', 'b']);
+ * // => true
+ *
+ * _.hasIn(object, 'b');
+ * // => false
+ */
+function hasIn(object, path) {
+  return object != null && hasPath(object, path, baseHasIn);
+}
 
-      if (!(root instanceof HTMLElement)) {
-        throw new Error('The selector that is passed does not return an HTMLElement');
-      }
+module.exports = hasIn;
 
-      var _root$dataset = root.dataset,
-          _root$dataset$cozy = _root$dataset.cozy,
-          cozy = _root$dataset$cozy === void 0 ? '{}' : _root$dataset$cozy,
-          dataset = (0, _objectWithoutProperties2.default)(_root$dataset, ["cozy"]);
-      this.instanceOptions = _objectSpread(_objectSpread({}, JSON.parse(cozy)), dataset);
-      this.capabilities = this.instanceOptions.capabilities || null;
-    }
-    /**
-     * loadInstanceOptionsFromStack - Loads the instance options from cozy-stack and exposes it through getInstanceOptions
-     *
-     * This method is not iso with loadInstanceOptionsFromDOM for now.
-     *
-     * @returns {Promise<void>}
-     */
 
-  }, {
-    key: "loadInstanceOptionsFromStack",
-    value: function () {
-      var _loadInstanceOptionsFromStack = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {
-        var _instanceData$attribu, _instanceData$attribu2;
+/***/ }),
+/* 412 */
+/***/ (function(module, exports) {
 
-        var _yield$this$query, data, _yield$this$query2, instanceData;
+/**
+ * The base implementation of `_.hasIn` without support for deep paths.
+ *
+ * @private
+ * @param {Object} [object] The object to query.
+ * @param {Array|string} key The key to check.
+ * @returns {boolean} Returns `true` if `key` exists, else `false`.
+ */
+function baseHasIn(object, key) {
+  return object != null && key in Object(object);
+}
 
-        return _regenerator.default.wrap(function _callee18$(_context18) {
-          while (1) {
-            switch (_context18.prev = _context18.next) {
-              case 0:
-                _context18.next = 2;
-                return this.query((0, _dsl.Q)('io.cozy.settings').getById('io.cozy.settings.capabilities'));
+module.exports = baseHasIn;
 
-              case 2:
-                _yield$this$query = _context18.sent;
-                data = _yield$this$query.data;
-                _context18.next = 6;
-                return this.query((0, _dsl.Q)('io.cozy.settings').getById('io.cozy.settings.instance'));
 
-              case 6:
-                _yield$this$query2 = _context18.sent;
-                instanceData = _yield$this$query2.data;
-                this.instanceOptions = {
-                  capabilities: data.attributes,
-                  locale: (_instanceData$attribu = instanceData.attributes) === null || _instanceData$attribu === void 0 ? void 0 : _instanceData$attribu.locale,
-                  tracking: (_instanceData$attribu2 = instanceData.attributes) === null || _instanceData$attribu2 === void 0 ? void 0 : _instanceData$attribu2.tracking
-                };
-                this.capabilities = this.instanceOptions.capabilities || null;
+/***/ }),
+/* 413 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 10:
-              case "end":
-                return _context18.stop();
-            }
-          }
-        }, _callee18, this);
-      }));
+var castPath = __webpack_require__(401),
+    isArguments = __webpack_require__(321),
+    isArray = __webpack_require__(324),
+    isIndex = __webpack_require__(327),
+    isLength = __webpack_require__(330),
+    toKey = __webpack_require__(410);
 
-      function loadInstanceOptionsFromStack() {
-        return _loadInstanceOptionsFromStack.apply(this, arguments);
-      }
+/**
+ * Checks if `path` exists on `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path to check.
+ * @param {Function} hasFunc The function to check properties.
+ * @returns {boolean} Returns `true` if `path` exists, else `false`.
+ */
+function hasPath(object, path, hasFunc) {
+  path = castPath(path, object);
 
-      return loadInstanceOptionsFromStack;
-    }()
-    /**
-     * Directly set the data in the store, without using a query
-     * This is useful for cases like Pouch replication, which wants to
-     * set some data in the store.
-     *
-     * @param {object} data - Data that is inserted in the store. Shape: { doctype: [data] }
-     */
+  var index = -1,
+      length = path.length,
+      result = false;
 
-  }, {
-    key: "setData",
-    value: function setData(data) {
-      var _this10 = this;
+  while (++index < length) {
+    var key = toKey(path[index]);
+    if (!(result = object != null && hasFunc(object, key))) {
+      break;
+    }
+    object = object[key];
+  }
+  if (result || ++index != length) {
+    return result;
+  }
+  length = object == null ? 0 : object.length;
+  return !!length && isLength(length) && isIndex(key, length) &&
+    (isArray(object) || isArguments(object));
+}
 
-      this.ensureStore();
-      Object.entries(data).forEach(function (_ref9) {
-        var _ref10 = (0, _slicedToArray2.default)(_ref9, 2),
-            doctype = _ref10[0],
-            data = _ref10[1];
+module.exports = hasPath;
 
-        _this10.dispatch((0, _store.receiveQueryResult)(null, {
-          data: data
-        }));
-      });
-    }
-    /**
-     * At any time put an error function
-     *
-     * @param {Function} [onError] - Set a callback for queries which are errored
-     * @throws {Error} onError should not have been defined yet
-     */
 
-  }, {
-    key: "setOnError",
-    value: function setOnError(onError) {
-      if (this.options && this.options.onError) {
-        throw new Error('On Error is already defined');
-      }
+/***/ }),
+/* 414 */
+/***/ (function(module, exports) {
 
-      this.options.onError = onError;
-    }
-  }, {
-    key: "toJSON",
-    value: function toJSON() {
-      return new _snapshots.CozyClient({
-        uri: this.options.uri
-      });
-    }
-    /**
-     *
-     * @param {import("./types").AppMetadata} newAppMetadata AppMetadata to update
-     */
+/**
+ * This method returns the first argument it receives.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Util
+ * @param {*} value Any value.
+ * @returns {*} Returns `value`.
+ * @example
+ *
+ * var object = { 'a': 1 };
+ *
+ * console.log(_.identity(object) === object);
+ * // => true
+ */
+function identity(value) {
+  return value;
+}
 
-  }, {
-    key: "setAppMetadata",
-    value: function setAppMetadata(newAppMetadata) {
-      this.appMetadata = _objectSpread(_objectSpread({}, this.appMetadata), newAppMetadata);
-    }
-  }], [{
-    key: "fromOldClient",
-    value: function fromOldClient(oldClient, options) {
-      return new CozyClient(_objectSpread({
-        uri: oldClient._url,
-        token: oldClient._token.token
-      }, options));
-    }
-    /**
-     * To help with the transition from cozy-client-js to cozy-client, it is possible to instantiate
-     * a client with an OAuth-based instance of cozy-client-js.
-     *
-     * Warning: unlike other instantiators, this one needs to be awaited.
-     *
-     * @param {import("./types").OldCozyClient} oldClient - An OAuth instance of the deprecated cozy-client
-     * @param {object} options - CozyStackClient options
-     * @returns {Promise<CozyClient>} An instance of a client, configured from the old client
-     */
+module.exports = identity;
 
-  }, {
-    key: "fromOldOAuthClient",
-    value: function () {
-      var _fromOldOAuthClient = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19(oldClient, options) {
-        var credentials, oauthOptions, client;
-        return _regenerator.default.wrap(function _callee19$(_context19) {
-          while (1) {
-            switch (_context19.prev = _context19.next) {
-              case 0:
-                if (!oldClient._oauth) {
-                  _context19.next = 12;
-                  break;
-                }
 
-                _context19.next = 3;
-                return oldClient.authorize();
+/***/ }),
+/* 415 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 3:
-                credentials = _context19.sent;
-                oauthOptions = {
-                  oauth: credentials.client,
-                  token: credentials.token,
-                  scope: credentials.token.scope
-                };
-                client = new CozyClient(_objectSpread(_objectSpread({
-                  uri: oldClient._url
-                }, oauthOptions), options));
+var baseProperty = __webpack_require__(416),
+    basePropertyDeep = __webpack_require__(417),
+    isKey = __webpack_require__(402),
+    toKey = __webpack_require__(410);
 
-                if (!client.loginPromise) {
-                  _context19.next = 9;
-                  break;
-                }
+/**
+ * Creates a function that returns the value at `path` of a given object.
+ *
+ * @static
+ * @memberOf _
+ * @since 2.4.0
+ * @category Util
+ * @param {Array|string} path The path of the property to get.
+ * @returns {Function} Returns the new accessor function.
+ * @example
+ *
+ * var objects = [
+ *   { 'a': { 'b': 2 } },
+ *   { 'a': { 'b': 1 } }
+ * ];
+ *
+ * _.map(objects, _.property('a.b'));
+ * // => [2, 1]
+ *
+ * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
+ * // => [1, 2]
+ */
+function property(path) {
+  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
+}
 
-                _context19.next = 9;
-                return client.loginPromise;
+module.exports = property;
 
-              case 9:
-                return _context19.abrupt("return", client);
 
-              case 12:
-                throw new Error('Cannot instantiate a new client: old client is not an OAuth client. CozyClient.fromOldClient might be more suitable.');
+/***/ }),
+/* 416 */
+/***/ (function(module, exports) {
 
-              case 13:
-              case "end":
-                return _context19.stop();
-            }
-          }
-        }, _callee19);
-      }));
+/**
+ * The base implementation of `_.property` without support for deep paths.
+ *
+ * @private
+ * @param {string} key The key of the property to get.
+ * @returns {Function} Returns the new accessor function.
+ */
+function baseProperty(key) {
+  return function(object) {
+    return object == null ? undefined : object[key];
+  };
+}
 
-      function fromOldOAuthClient(_x17, _x18) {
-        return _fromOldOAuthClient.apply(this, arguments);
-      }
+module.exports = baseProperty;
 
-      return fromOldOAuthClient;
-    }()
-    /**
-     * In konnector/service context, CozyClient can be instantiated from
-     * environment variables
-     *
-     * @param  {import("./types").NodeEnvironment} [envArg]  - The environment
-     * @param  {object} options - Options
-     * @returns {CozyClient}
-     */
 
-  }, {
-    key: "fromEnv",
-    value: function fromEnv(envArg) {
-      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-      var env = envArg || (typeof process !== 'undefined' ? process.env : {});
-      var COZY_URL = env.COZY_URL,
-          COZY_CREDENTIALS = env.COZY_CREDENTIALS;
+/***/ }),
+/* 417 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      if (!COZY_URL || !COZY_CREDENTIALS) {
-        throw new Error('Env used to instantiate CozyClient must have COZY_URL and COZY_CREDENTIALS');
-      }
+var baseGet = __webpack_require__(400);
 
-      try {
-        options.oauth = JSON.parse(COZY_CREDENTIALS);
-      } catch (err) {
-        options.token = COZY_CREDENTIALS.trim();
-      }
+/**
+ * A specialized version of `baseProperty` which supports deep paths.
+ *
+ * @private
+ * @param {Array|string} path The path of the property to get.
+ * @returns {Function} Returns the new accessor function.
+ */
+function basePropertyDeep(path) {
+  return function(object) {
+    return baseGet(object, path);
+  };
+}
 
-      options.uri = COZY_URL.trim();
-      return new CozyClient(_objectSpread({}, options));
-    }
-    /**
-     * When used from an app, CozyClient can be instantiated from the data injected by the stack in
-     * the DOM.
-     *
-     * @param  {object}   options  - CozyClient constructor options
-     * @param  {string}   selector - Options
-     * @returns {CozyClient} - CozyClient instance
-     */
+module.exports = basePropertyDeep;
 
-  }, {
-    key: "fromDOM",
-    value: function fromDOM() {
-      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-      var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '[role=application]';
-      var root = document.querySelector(selector);
 
-      if (!(root instanceof HTMLElement)) {
-        throw new Error("Cannot find an HTMLElement corresponding to ".concat(selector));
-      }
+/***/ }),
+/* 418 */
+/***/ (function(module, exports) {
 
-      if (!root || !root.dataset) {
-        throw new Error("Found no data in ".concat(selector, " to instantiate cozyClient"));
-      }
+/**
+ * The inverse of `_.toPairs`; this method returns an object composed
+ * from key-value `pairs`.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Array
+ * @param {Array} pairs The key-value pairs.
+ * @returns {Object} Returns the new object.
+ * @example
+ *
+ * _.fromPairs([['a', 1], ['b', 2]]);
+ * // => { 'a': 1, 'b': 2 }
+ */
+function fromPairs(pairs) {
+  var index = -1,
+      length = pairs == null ? 0 : pairs.length,
+      result = {};
 
-      var data = root.dataset.cozy ? JSON.parse(root.dataset.cozy) : _objectSpread({}, root.dataset);
-      var domain = data.domain,
-          token = data.token;
+  while (++index < length) {
+    var pair = pairs[index];
+    result[pair[0]] = pair[1];
+  }
+  return result;
+}
 
-      if (!domain || !token) {
-        domain = domain || data.cozyDomain;
-        token = token || data.cozyToken;
-      }
+module.exports = fromPairs;
 
-      if (!domain || !token) {
-        throw new Error("Found no data in ".concat(root.dataset, " to instantiate cozyClient"));
-      }
 
-      return new CozyClient(_objectSpread({
-        uri: "".concat(window.location.protocol, "//").concat(domain),
-        token: token,
-        capabilities: data.capabilities
-      }, options));
-    }
-  }, {
-    key: "registerHook",
-    value: function registerHook(doctype, name, fn) {
-      var hooks = CozyClient.hooks[doctype] = CozyClient.hooks[doctype] || {};
-      hooks[name] = hooks[name] || [];
-      hooks[name].push(fn);
-    }
-  }]);
-  return CozyClient;
-}();
+/***/ }),
+/* 419 */
+/***/ (function(module, exports, __webpack_require__) {
 
-CozyClient.hooks = CozyClient.hooks || {};
-CozyClient.fetchPolicies = _policies.default; //COZY_CLIENT_VERSION_PACKAGE in replaced by babel. See babel config
+var baseFlatten = __webpack_require__(420);
 
-CozyClient.version = "40.6.0";
+/**
+ * Flattens `array` a single level deep.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Array
+ * @param {Array} array The array to flatten.
+ * @returns {Array} Returns the new flattened array.
+ * @example
+ *
+ * _.flatten([1, [2, [3, [4]], 5]]);
+ * // => [1, 2, [3, [4]], 5]
+ */
+function flatten(array) {
+  var length = array == null ? 0 : array.length;
+  return length ? baseFlatten(array, 1) : [];
+}
 
-_microee.default.mixin(CozyClient);
+module.exports = flatten;
 
-var _default = CozyClient;
-exports.default = _default;
 
 /***/ }),
-/* 280 */
+/* 420 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var arrayWithHoles = __webpack_require__(281);
-
-var iterableToArray = __webpack_require__(282);
+var arrayPush = __webpack_require__(386),
+    isFlattenable = __webpack_require__(421);
 
-var unsupportedIterableToArray = __webpack_require__(283);
+/**
+ * The base implementation of `_.flatten` with support for restricting flattening.
+ *
+ * @private
+ * @param {Array} array The array to flatten.
+ * @param {number} depth The maximum recursion depth.
+ * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
+ * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
+ * @param {Array} [result=[]] The initial result value.
+ * @returns {Array} Returns the new flattened array.
+ */
+function baseFlatten(array, depth, predicate, isStrict, result) {
+  var index = -1,
+      length = array.length;
 
-var nonIterableRest = __webpack_require__(285);
+  predicate || (predicate = isFlattenable);
+  result || (result = []);
 
-function _toArray(arr) {
-  return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();
+  while (++index < length) {
+    var value = array[index];
+    if (depth > 0 && predicate(value)) {
+      if (depth > 1) {
+        // Recursively flatten arrays (susceptible to call stack limits).
+        baseFlatten(value, depth - 1, predicate, isStrict, result);
+      } else {
+        arrayPush(result, value);
+      }
+    } else if (!isStrict) {
+      result[result.length] = value;
+    }
+  }
+  return result;
 }
 
-module.exports = _toArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
+module.exports = baseFlatten;
 
-/***/ }),
-/* 281 */
-/***/ (function(module, exports) {
 
-function _arrayWithHoles(arr) {
-  if (Array.isArray(arr)) return arr;
-}
+/***/ }),
+/* 421 */
+/***/ (function(module, exports, __webpack_require__) {
 
-module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
+var Symbol = __webpack_require__(305),
+    isArguments = __webpack_require__(321),
+    isArray = __webpack_require__(324);
 
-/***/ }),
-/* 282 */
-/***/ (function(module, exports) {
+/** Built-in value references. */
+var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;
 
-function _iterableToArray(iter) {
-  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
+/**
+ * Checks if `value` is a flattenable `arguments` object or array.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
+ */
+function isFlattenable(value) {
+  return isArray(value) || isArguments(value) ||
+    !!(spreadableSymbol && value && value[spreadableSymbol]);
 }
 
-module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
+module.exports = isFlattenable;
+
 
 /***/ }),
-/* 283 */
+/* 422 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var arrayLikeToArray = __webpack_require__(284);
+var baseIteratee = __webpack_require__(338),
+    baseUniq = __webpack_require__(423);
 
-function _unsupportedIterableToArray(o, minLen) {
-  if (!o) return;
-  if (typeof o === "string") return arrayLikeToArray(o, minLen);
-  var n = Object.prototype.toString.call(o).slice(8, -1);
-  if (n === "Object" && o.constructor) n = o.constructor.name;
-  if (n === "Map" || n === "Set") return Array.from(o);
-  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
+/**
+ * This method is like `_.uniq` except that it accepts `iteratee` which is
+ * invoked for each element in `array` to generate the criterion by which
+ * uniqueness is computed. The order of result values is determined by the
+ * order they occur in the array. The iteratee is invoked with one argument:
+ * (value).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Array
+ * @param {Array} array The array to inspect.
+ * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
+ * @returns {Array} Returns the new duplicate free array.
+ * @example
+ *
+ * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
+ * // => [2.1, 1.2]
+ *
+ * // The `_.property` iteratee shorthand.
+ * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
+ * // => [{ 'x': 1 }, { 'x': 2 }]
+ */
+function uniqBy(array, iteratee) {
+  return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];
 }
 
-module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
+module.exports = uniqBy;
+
 
 /***/ }),
-/* 284 */
-/***/ (function(module, exports) {
+/* 423 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function _arrayLikeToArray(arr, len) {
-  if (len == null || len > arr.length) len = arr.length;
+var SetCache = __webpack_require__(374),
+    arrayIncludes = __webpack_require__(424),
+    arrayIncludesWith = __webpack_require__(429),
+    cacheHas = __webpack_require__(378),
+    createSet = __webpack_require__(430),
+    setToArray = __webpack_require__(382);
 
-  for (var i = 0, arr2 = new Array(len); i < len; i++) {
-    arr2[i] = arr[i];
+/** Used as the size to enable large array optimizations. */
+var LARGE_ARRAY_SIZE = 200;
+
+/**
+ * The base implementation of `_.uniqBy` without support for iteratee shorthands.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {Function} [iteratee] The iteratee invoked per element.
+ * @param {Function} [comparator] The comparator invoked per element.
+ * @returns {Array} Returns the new duplicate free array.
+ */
+function baseUniq(array, iteratee, comparator) {
+  var index = -1,
+      includes = arrayIncludes,
+      length = array.length,
+      isCommon = true,
+      result = [],
+      seen = result;
+
+  if (comparator) {
+    isCommon = false;
+    includes = arrayIncludesWith;
+  }
+  else if (length >= LARGE_ARRAY_SIZE) {
+    var set = iteratee ? null : createSet(array);
+    if (set) {
+      return setToArray(set);
+    }
+    isCommon = false;
+    includes = cacheHas;
+    seen = new SetCache;
   }
+  else {
+    seen = iteratee ? [] : result;
+  }
+  outer:
+  while (++index < length) {
+    var value = array[index],
+        computed = iteratee ? iteratee(value) : value;
 
-  return arr2;
+    value = (comparator || value !== 0) ? value : 0;
+    if (isCommon && computed === computed) {
+      var seenIndex = seen.length;
+      while (seenIndex--) {
+        if (seen[seenIndex] === computed) {
+          continue outer;
+        }
+      }
+      if (iteratee) {
+        seen.push(computed);
+      }
+      result.push(value);
+    }
+    else if (!includes(seen, computed, comparator)) {
+      if (seen !== result) {
+        seen.push(computed);
+      }
+      result.push(value);
+    }
+  }
+  return result;
 }
 
-module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
+module.exports = baseUniq;
+
 
 /***/ }),
-/* 285 */
-/***/ (function(module, exports) {
+/* 424 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function _nonIterableRest() {
-  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+var baseIndexOf = __webpack_require__(425);
+
+/**
+ * A specialized version of `_.includes` for arrays without support for
+ * specifying an index to search from.
+ *
+ * @private
+ * @param {Array} [array] The array to inspect.
+ * @param {*} target The value to search for.
+ * @returns {boolean} Returns `true` if `target` is found, else `false`.
+ */
+function arrayIncludes(array, value) {
+  var length = array == null ? 0 : array.length;
+  return !!length && baseIndexOf(array, value, 0) > -1;
 }
 
-module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports;
+module.exports = arrayIncludes;
+
 
 /***/ }),
-/* 286 */
+/* 425 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var arrayWithHoles = __webpack_require__(281);
-
-var iterableToArrayLimit = __webpack_require__(287);
-
-var unsupportedIterableToArray = __webpack_require__(283);
-
-var nonIterableRest = __webpack_require__(285);
+var baseFindIndex = __webpack_require__(426),
+    baseIsNaN = __webpack_require__(427),
+    strictIndexOf = __webpack_require__(428);
 
-function _slicedToArray(arr, i) {
-  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
+/**
+ * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {*} value The value to search for.
+ * @param {number} fromIndex The index to search from.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+function baseIndexOf(array, value, fromIndex) {
+  return value === value
+    ? strictIndexOf(array, value, fromIndex)
+    : baseFindIndex(array, baseIsNaN, fromIndex);
 }
 
-module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
+module.exports = baseIndexOf;
+
 
 /***/ }),
-/* 287 */
+/* 426 */
 /***/ (function(module, exports) {
 
-function _iterableToArrayLimit(arr, i) {
-  var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
-
-  if (_i == null) return;
-  var _arr = [];
-  var _n = true;
-  var _d = false;
-
-  var _s, _e;
-
-  try {
-    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
-      _arr.push(_s.value);
+/**
+ * The base implementation of `_.findIndex` and `_.findLastIndex` without
+ * support for iteratee shorthands.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {Function} predicate The function invoked per iteration.
+ * @param {number} fromIndex The index to search from.
+ * @param {boolean} [fromRight] Specify iterating from right to left.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+function baseFindIndex(array, predicate, fromIndex, fromRight) {
+  var length = array.length,
+      index = fromIndex + (fromRight ? 1 : -1);
 
-      if (i && _arr.length === i) break;
-    }
-  } catch (err) {
-    _d = true;
-    _e = err;
-  } finally {
-    try {
-      if (!_n && _i["return"] != null) _i["return"]();
-    } finally {
-      if (_d) throw _e;
+  while ((fromRight ? index-- : ++index < length)) {
+    if (predicate(array[index], index, array)) {
+      return index;
     }
   }
-
-  return _arr;
+  return -1;
 }
 
-module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports;
-
-/***/ }),
-/* 288 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var arrayWithoutHoles = __webpack_require__(289);
-
-var iterableToArray = __webpack_require__(282);
+module.exports = baseFindIndex;
 
-var unsupportedIterableToArray = __webpack_require__(283);
 
-var nonIterableSpread = __webpack_require__(290);
+/***/ }),
+/* 427 */
+/***/ (function(module, exports) {
 
-function _toConsumableArray(arr) {
-  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
+/**
+ * The base implementation of `_.isNaN` without support for number objects.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
+ */
+function baseIsNaN(value) {
+  return value !== value;
 }
 
-module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
+module.exports = baseIsNaN;
+
 
 /***/ }),
-/* 289 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 428 */
+/***/ (function(module, exports) {
 
-var arrayLikeToArray = __webpack_require__(284);
+/**
+ * A specialized version of `_.indexOf` which performs strict equality
+ * comparisons of values, i.e. `===`.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {*} value The value to search for.
+ * @param {number} fromIndex The index to search from.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+function strictIndexOf(array, value, fromIndex) {
+  var index = fromIndex - 1,
+      length = array.length;
 
-function _arrayWithoutHoles(arr) {
-  if (Array.isArray(arr)) return arrayLikeToArray(arr);
+  while (++index < length) {
+    if (array[index] === value) {
+      return index;
+    }
+  }
+  return -1;
 }
 
-module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
+module.exports = strictIndexOf;
+
 
 /***/ }),
-/* 290 */
+/* 429 */
 /***/ (function(module, exports) {
 
-function _nonIterableSpread() {
-  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+/**
+ * This function is like `arrayIncludes` except that it accepts a comparator.
+ *
+ * @private
+ * @param {Array} [array] The array to inspect.
+ * @param {*} target The value to search for.
+ * @param {Function} comparator The comparator invoked per element.
+ * @returns {boolean} Returns `true` if `target` is found, else `false`.
+ */
+function arrayIncludesWith(array, value, comparator) {
+  var index = -1,
+      length = array == null ? 0 : array.length;
+
+  while (++index < length) {
+    if (comparator(value, array[index])) {
+      return true;
+    }
+  }
+  return false;
 }
 
-module.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports["default"] = module.exports;
+module.exports = arrayIncludesWith;
+
 
 /***/ }),
-/* 291 */
+/* 430 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var objectWithoutPropertiesLoose = __webpack_require__(292);
+var Set = __webpack_require__(393),
+    noop = __webpack_require__(431),
+    setToArray = __webpack_require__(382);
 
-function _objectWithoutProperties(source, excluded) {
-  if (source == null) return {};
-  var target = objectWithoutPropertiesLoose(source, excluded);
-  var key, i;
+/** Used as references for various `Number` constants. */
+var INFINITY = 1 / 0;
 
-  if (Object.getOwnPropertySymbols) {
-    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
+/**
+ * Creates a set object of `values`.
+ *
+ * @private
+ * @param {Array} values The values to add to the set.
+ * @returns {Object} Returns the new set.
+ */
+var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
+  return new Set(values);
+};
 
-    for (i = 0; i < sourceSymbolKeys.length; i++) {
-      key = sourceSymbolKeys[i];
-      if (excluded.indexOf(key) >= 0) continue;
-      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
-      target[key] = source[key];
-    }
-  }
+module.exports = createSet;
 
-  return target;
+
+/***/ }),
+/* 431 */
+/***/ (function(module, exports) {
+
+/**
+ * This method returns `undefined`.
+ *
+ * @static
+ * @memberOf _
+ * @since 2.3.0
+ * @category Util
+ * @example
+ *
+ * _.times(2, _.noop);
+ * // => [undefined, undefined]
+ */
+function noop() {
+  // No operation performed.
 }
 
-module.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports["default"] = module.exports;
+module.exports = noop;
+
 
 /***/ }),
-/* 292 */
-/***/ (function(module, exports) {
+/* 432 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function _objectWithoutPropertiesLoose(source, excluded) {
-  if (source == null) return {};
-  var target = {};
-  var sourceKeys = Object.keys(source);
-  var key, i;
+var baseRest = __webpack_require__(433),
+    unzip = __webpack_require__(440);
 
-  for (i = 0; i < sourceKeys.length; i++) {
-    key = sourceKeys[i];
-    if (excluded.indexOf(key) >= 0) continue;
-    target[key] = source[key];
-  }
+/**
+ * Creates an array of grouped elements, the first of which contains the
+ * first elements of the given arrays, the second of which contains the
+ * second elements of the given arrays, and so on.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Array
+ * @param {...Array} [arrays] The arrays to process.
+ * @returns {Array} Returns the new array of grouped elements.
+ * @example
+ *
+ * _.zip(['a', 'b'], [1, 2], [true, false]);
+ * // => [['a', 1, true], ['b', 2, false]]
+ */
+var zip = baseRest(unzip);
 
-  return target;
-}
+module.exports = zip;
 
-module.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
 /***/ }),
-/* 293 */
+/* 433 */
 /***/ (function(module, exports, __webpack_require__) {
 
-// TODO(Babel 8): Remove this file.
-
-var runtime = __webpack_require__(294)();
-module.exports = runtime;
+var identity = __webpack_require__(414),
+    overRest = __webpack_require__(434),
+    setToString = __webpack_require__(436);
 
-// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=
-try {
-  regeneratorRuntime = runtime;
-} catch (accidentalStrictMode) {
-  if (typeof globalThis === "object") {
-    globalThis.regeneratorRuntime = runtime;
-  } else {
-    Function("r", "regeneratorRuntime = r")(runtime);
-  }
+/**
+ * The base implementation of `_.rest` which doesn't validate or coerce arguments.
+ *
+ * @private
+ * @param {Function} func The function to apply a rest parameter to.
+ * @param {number} [start=func.length-1] The start position of the rest parameter.
+ * @returns {Function} Returns the new function.
+ */
+function baseRest(func, start) {
+  return setToString(overRest(func, start, identity), func + '');
 }
 
+module.exports = baseRest;
+
 
 /***/ }),
-/* 294 */
+/* 434 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var _typeof = __webpack_require__(278)["default"];
+var apply = __webpack_require__(435);
 
-function _regeneratorRuntime() {
-  "use strict";
-  /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeMax = Math.max;
 
-  module.exports = _regeneratorRuntime = function _regeneratorRuntime() {
-    return exports;
-  }, module.exports.__esModule = true, module.exports["default"] = module.exports;
-  var exports = {},
-      Op = Object.prototype,
-      hasOwn = Op.hasOwnProperty,
-      $Symbol = "function" == typeof Symbol ? Symbol : {},
-      iteratorSymbol = $Symbol.iterator || "@@iterator",
-      asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator",
-      toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
-
-  function define(obj, key, value) {
-    return Object.defineProperty(obj, key, {
-      value: value,
-      enumerable: !0,
-      configurable: !0,
-      writable: !0
-    }), obj[key];
-  }
+/**
+ * A specialized version of `baseRest` which transforms the rest array.
+ *
+ * @private
+ * @param {Function} func The function to apply a rest parameter to.
+ * @param {number} [start=func.length-1] The start position of the rest parameter.
+ * @param {Function} transform The rest array transform.
+ * @returns {Function} Returns the new function.
+ */
+function overRest(func, start, transform) {
+  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
+  return function() {
+    var args = arguments,
+        index = -1,
+        length = nativeMax(args.length - start, 0),
+        array = Array(length);
 
-  try {
-    define({}, "");
-  } catch (err) {
-    define = function define(obj, key, value) {
-      return obj[key] = value;
-    };
-  }
+    while (++index < length) {
+      array[index] = args[start + index];
+    }
+    index = -1;
+    var otherArgs = Array(start + 1);
+    while (++index < start) {
+      otherArgs[index] = args[index];
+    }
+    otherArgs[start] = transform(array);
+    return apply(func, this, otherArgs);
+  };
+}
 
-  function wrap(innerFn, outerFn, self, tryLocsList) {
-    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,
-        generator = Object.create(protoGenerator.prototype),
-        context = new Context(tryLocsList || []);
-    return generator._invoke = function (innerFn, self, context) {
-      var state = "suspendedStart";
-      return function (method, arg) {
-        if ("executing" === state) throw new Error("Generator is already running");
+module.exports = overRest;
 
-        if ("completed" === state) {
-          if ("throw" === method) throw arg;
-          return doneResult();
-        }
 
-        for (context.method = method, context.arg = arg;;) {
-          var delegate = context.delegate;
+/***/ }),
+/* 435 */
+/***/ (function(module, exports) {
 
-          if (delegate) {
-            var delegateResult = maybeInvokeDelegate(delegate, context);
+/**
+ * A faster alternative to `Function#apply`, this function invokes `func`
+ * with the `this` binding of `thisArg` and the arguments of `args`.
+ *
+ * @private
+ * @param {Function} func The function to invoke.
+ * @param {*} thisArg The `this` binding of `func`.
+ * @param {Array} args The arguments to invoke `func` with.
+ * @returns {*} Returns the result of `func`.
+ */
+function apply(func, thisArg, args) {
+  switch (args.length) {
+    case 0: return func.call(thisArg);
+    case 1: return func.call(thisArg, args[0]);
+    case 2: return func.call(thisArg, args[0], args[1]);
+    case 3: return func.call(thisArg, args[0], args[1], args[2]);
+  }
+  return func.apply(thisArg, args);
+}
 
-            if (delegateResult) {
-              if (delegateResult === ContinueSentinel) continue;
-              return delegateResult;
-            }
-          }
+module.exports = apply;
 
-          if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) {
-            if ("suspendedStart" === state) throw state = "completed", context.arg;
-            context.dispatchException(context.arg);
-          } else "return" === context.method && context.abrupt("return", context.arg);
-          state = "executing";
-          var record = tryCatch(innerFn, self, context);
 
-          if ("normal" === record.type) {
-            if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue;
-            return {
-              value: record.arg,
-              done: context.done
-            };
-          }
+/***/ }),
+/* 436 */
+/***/ (function(module, exports, __webpack_require__) {
 
-          "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg);
-        }
-      };
-    }(innerFn, self, context), generator;
-  }
+var baseSetToString = __webpack_require__(437),
+    shortOut = __webpack_require__(439);
 
-  function tryCatch(fn, obj, arg) {
-    try {
-      return {
-        type: "normal",
-        arg: fn.call(obj, arg)
-      };
-    } catch (err) {
-      return {
-        type: "throw",
-        arg: err
-      };
-    }
-  }
+/**
+ * Sets the `toString` method of `func` to return `string`.
+ *
+ * @private
+ * @param {Function} func The function to modify.
+ * @param {Function} string The `toString` result.
+ * @returns {Function} Returns `func`.
+ */
+var setToString = shortOut(baseSetToString);
 
-  exports.wrap = wrap;
-  var ContinueSentinel = {};
+module.exports = setToString;
 
-  function Generator() {}
 
-  function GeneratorFunction() {}
+/***/ }),
+/* 437 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  function GeneratorFunctionPrototype() {}
+var constant = __webpack_require__(438),
+    defineProperty = __webpack_require__(300),
+    identity = __webpack_require__(414);
 
-  var IteratorPrototype = {};
-  define(IteratorPrototype, iteratorSymbol, function () {
-    return this;
+/**
+ * The base implementation of `setToString` without support for hot loop shorting.
+ *
+ * @private
+ * @param {Function} func The function to modify.
+ * @param {Function} string The `toString` result.
+ * @returns {Function} Returns `func`.
+ */
+var baseSetToString = !defineProperty ? identity : function(func, string) {
+  return defineProperty(func, 'toString', {
+    'configurable': true,
+    'enumerable': false,
+    'value': constant(string),
+    'writable': true
   });
-  var getProto = Object.getPrototypeOf,
-      NativeIteratorPrototype = getProto && getProto(getProto(values([])));
-  NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);
-  var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
-
-  function defineIteratorMethods(prototype) {
-    ["next", "throw", "return"].forEach(function (method) {
-      define(prototype, method, function (arg) {
-        return this._invoke(method, arg);
-      });
-    });
-  }
-
-  function AsyncIterator(generator, PromiseImpl) {
-    function invoke(method, arg, resolve, reject) {
-      var record = tryCatch(generator[method], generator, arg);
+};
 
-      if ("throw" !== record.type) {
-        var result = record.arg,
-            value = result.value;
-        return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) {
-          invoke("next", value, resolve, reject);
-        }, function (err) {
-          invoke("throw", err, resolve, reject);
-        }) : PromiseImpl.resolve(value).then(function (unwrapped) {
-          result.value = unwrapped, resolve(result);
-        }, function (error) {
-          return invoke("throw", error, resolve, reject);
-        });
-      }
+module.exports = baseSetToString;
 
-      reject(record.arg);
-    }
 
-    var previousPromise;
+/***/ }),
+/* 438 */
+/***/ (function(module, exports) {
 
-    this._invoke = function (method, arg) {
-      function callInvokeWithMethodAndArg() {
-        return new PromiseImpl(function (resolve, reject) {
-          invoke(method, arg, resolve, reject);
-        });
-      }
+/**
+ * Creates a function that returns `value`.
+ *
+ * @static
+ * @memberOf _
+ * @since 2.4.0
+ * @category Util
+ * @param {*} value The value to return from the new function.
+ * @returns {Function} Returns the new constant function.
+ * @example
+ *
+ * var objects = _.times(2, _.constant({ 'a': 1 }));
+ *
+ * console.log(objects);
+ * // => [{ 'a': 1 }, { 'a': 1 }]
+ *
+ * console.log(objects[0] === objects[1]);
+ * // => true
+ */
+function constant(value) {
+  return function() {
+    return value;
+  };
+}
 
-      return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
-    };
-  }
+module.exports = constant;
 
-  function maybeInvokeDelegate(delegate, context) {
-    var method = delegate.iterator[context.method];
 
-    if (undefined === method) {
-      if (context.delegate = null, "throw" === context.method) {
-        if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel;
-        context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method");
-      }
+/***/ }),
+/* 439 */
+/***/ (function(module, exports) {
 
-      return ContinueSentinel;
-    }
+/** Used to detect hot functions by number of calls within a span of milliseconds. */
+var HOT_COUNT = 800,
+    HOT_SPAN = 16;
 
-    var record = tryCatch(method, delegate.iterator, context.arg);
-    if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel;
-    var info = record.arg;
-    return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel);
-  }
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeNow = Date.now;
 
-  function pushTryEntry(locs) {
-    var entry = {
-      tryLoc: locs[0]
-    };
-    1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);
-  }
+/**
+ * Creates a function that'll short out and invoke `identity` instead
+ * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
+ * milliseconds.
+ *
+ * @private
+ * @param {Function} func The function to restrict.
+ * @returns {Function} Returns the new shortable function.
+ */
+function shortOut(func) {
+  var count = 0,
+      lastCalled = 0;
 
-  function resetTryEntry(entry) {
-    var record = entry.completion || {};
-    record.type = "normal", delete record.arg, entry.completion = record;
-  }
+  return function() {
+    var stamp = nativeNow(),
+        remaining = HOT_SPAN - (stamp - lastCalled);
 
-  function Context(tryLocsList) {
-    this.tryEntries = [{
-      tryLoc: "root"
-    }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);
-  }
+    lastCalled = stamp;
+    if (remaining > 0) {
+      if (++count >= HOT_COUNT) {
+        return arguments[0];
+      }
+    } else {
+      count = 0;
+    }
+    return func.apply(undefined, arguments);
+  };
+}
 
-  function values(iterable) {
-    if (iterable) {
-      var iteratorMethod = iterable[iteratorSymbol];
-      if (iteratorMethod) return iteratorMethod.call(iterable);
-      if ("function" == typeof iterable.next) return iterable;
+module.exports = shortOut;
 
-      if (!isNaN(iterable.length)) {
-        var i = -1,
-            next = function next() {
-          for (; ++i < iterable.length;) {
-            if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;
-          }
 
-          return next.value = undefined, next.done = !0, next;
-        };
+/***/ }),
+/* 440 */
+/***/ (function(module, exports, __webpack_require__) {
 
-        return next.next = next;
-      }
-    }
+var arrayFilter = __webpack_require__(388),
+    arrayMap = __webpack_require__(409),
+    baseProperty = __webpack_require__(416),
+    baseTimes = __webpack_require__(320),
+    isArrayLikeObject = __webpack_require__(441);
 
-    return {
-      next: doneResult
-    };
-  }
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeMax = Math.max;
 
-  function doneResult() {
-    return {
-      value: undefined,
-      done: !0
-    };
+/**
+ * This method is like `_.zip` except that it accepts an array of grouped
+ * elements and creates an array regrouping the elements to their pre-zip
+ * configuration.
+ *
+ * @static
+ * @memberOf _
+ * @since 1.2.0
+ * @category Array
+ * @param {Array} array The array of grouped elements to process.
+ * @returns {Array} Returns the new array of regrouped elements.
+ * @example
+ *
+ * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);
+ * // => [['a', 1, true], ['b', 2, false]]
+ *
+ * _.unzip(zipped);
+ * // => [['a', 'b'], [1, 2], [true, false]]
+ */
+function unzip(array) {
+  if (!(array && array.length)) {
+    return [];
   }
-
-  return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) {
-    var ctor = "function" == typeof genFun && genFun.constructor;
-    return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name));
-  }, exports.mark = function (genFun) {
-    return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun;
-  }, exports.awrap = function (arg) {
-    return {
-      __await: arg
-    };
-  }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
-    return this;
-  }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {
-    void 0 === PromiseImpl && (PromiseImpl = Promise);
-    var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);
-    return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
-      return result.done ? result.value : iter.next();
-    });
-  }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () {
-    return this;
-  }), define(Gp, "toString", function () {
-    return "[object Generator]";
-  }), exports.keys = function (object) {
-    var keys = [];
-
-    for (var key in object) {
-      keys.push(key);
+  var length = 0;
+  array = arrayFilter(array, function(group) {
+    if (isArrayLikeObject(group)) {
+      length = nativeMax(group.length, length);
+      return true;
     }
+  });
+  return baseTimes(length, function(index) {
+    return arrayMap(array, baseProperty(index));
+  });
+}
 
-    return keys.reverse(), function next() {
-      for (; keys.length;) {
-        var key = keys.pop();
-        if (key in object) return next.value = key, next.done = !1, next;
-      }
+module.exports = unzip;
 
-      return next.done = !0, next;
-    };
-  }, exports.values = values, Context.prototype = {
-    constructor: Context,
-    reset: function reset(skipTempReset) {
-      if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {
-        "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);
-      }
-    },
-    stop: function stop() {
-      this.done = !0;
-      var rootRecord = this.tryEntries[0].completion;
-      if ("throw" === rootRecord.type) throw rootRecord.arg;
-      return this.rval;
-    },
-    dispatchException: function dispatchException(exception) {
-      if (this.done) throw exception;
-      var context = this;
 
-      function handle(loc, caught) {
-        return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught;
-      }
+/***/ }),
+/* 441 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
-        var entry = this.tryEntries[i],
-            record = entry.completion;
-        if ("root" === entry.tryLoc) return handle("end");
+var isArrayLike = __webpack_require__(337),
+    isObjectLike = __webpack_require__(323);
 
-        if (entry.tryLoc <= this.prev) {
-          var hasCatch = hasOwn.call(entry, "catchLoc"),
-              hasFinally = hasOwn.call(entry, "finallyLoc");
+/**
+ * This method is like `_.isArrayLike` except that it also checks if `value`
+ * is an object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an array-like object,
+ *  else `false`.
+ * @example
+ *
+ * _.isArrayLikeObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isArrayLikeObject(document.body.children);
+ * // => true
+ *
+ * _.isArrayLikeObject('abc');
+ * // => false
+ *
+ * _.isArrayLikeObject(_.noop);
+ * // => false
+ */
+function isArrayLikeObject(value) {
+  return isObjectLike(value) && isArrayLike(value);
+}
 
-          if (hasCatch && hasFinally) {
-            if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
-            if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
-          } else if (hasCatch) {
-            if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
-          } else {
-            if (!hasFinally) throw new Error("try statement without catch or finally");
-            if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
-          }
-        }
-      }
-    },
-    abrupt: function abrupt(type, arg) {
-      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
-        var entry = this.tryEntries[i];
+module.exports = isArrayLikeObject;
 
-        if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
-          var finallyEntry = entry;
-          break;
-        }
-      }
 
-      finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);
-      var record = finallyEntry ? finallyEntry.completion : {};
-      return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);
-    },
-    complete: function complete(record, afterLoc) {
-      if ("throw" === record.type) throw record.arg;
-      return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;
-    },
-    finish: function finish(finallyLoc) {
-      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
-        var entry = this.tryEntries[i];
-        if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;
-      }
-    },
-    "catch": function _catch(tryLoc) {
-      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
-        var entry = this.tryEntries[i];
+/***/ }),
+/* 442 */
+/***/ (function(module, exports, __webpack_require__) {
 
-        if (entry.tryLoc === tryLoc) {
-          var record = entry.completion;
-
-          if ("throw" === record.type) {
-            var thrown = record.arg;
-            resetTryEntry(entry);
-          }
-
-          return thrown;
-        }
-      }
-
-      throw new Error("illegal catch attempt");
-    },
-    delegateYield: function delegateYield(iterable, resultName, nextLoc) {
-      return this.delegate = {
-        iterator: values(iterable),
-        resultName: resultName,
-        nextLoc: nextLoc
-      }, "next" === this.method && (this.arg = undefined), ContinueSentinel;
-    }
-  }, exports;
-}
-
-module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports;
-
-/***/ }),
-/* 295 */
-/***/ (function(module, exports) {
-
-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, module.exports.__esModule = true, module.exports["default"] = module.exports;
-
-/***/ }),
-/* 296 */
-/***/ (function(module, exports) {
-
-function _classCallCheck(instance, Constructor) {
-  if (!(instance instanceof Constructor)) {
-    throw new TypeError("Cannot call a class as a function");
-  }
-}
-
-module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports;
-
-/***/ }),
-/* 297 */
-/***/ (function(module, exports) {
-
-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);
-  }
-}
-
-function _createClass(Constructor, protoProps, staticProps) {
-  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
-  if (staticProps) _defineProperties(Constructor, staticProps);
-  Object.defineProperty(Constructor, "prototype", {
-    writable: false
-  });
-  return Constructor;
-}
-
-module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports;
-
-/***/ }),
-/* 298 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseAssignValue = __webpack_require__(299),
-    baseForOwn = __webpack_require__(315),
-    baseIteratee = __webpack_require__(338);
+var arrayEach = __webpack_require__(443),
+    baseEach = __webpack_require__(444),
+    castFunction = __webpack_require__(446),
+    isArray = __webpack_require__(324);
 
 /**
- * Creates an object with the same keys as `object` and values generated
- * by running each own enumerable string keyed property of `object` thru
- * `iteratee`. The iteratee is invoked with three arguments:
- * (value, key, object).
+ * Iterates over elements of `collection` and invokes `iteratee` for each element.
+ * The iteratee is invoked with three arguments: (value, index|key, collection).
+ * Iteratee functions may exit iteration early by explicitly returning `false`.
+ *
+ * **Note:** As with other "Collections" methods, objects with a "length"
+ * property are iterated like arrays. To avoid this behavior use `_.forIn`
+ * or `_.forOwn` for object iteration.
  *
  * @static
  * @memberOf _
- * @since 2.4.0
- * @category Object
- * @param {Object} object The object to iterate over.
+ * @since 0.1.0
+ * @alias each
+ * @category Collection
+ * @param {Array|Object} collection The collection to iterate over.
  * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns the new mapped object.
- * @see _.mapKeys
+ * @returns {Array|Object} Returns `collection`.
+ * @see _.forEachRight
  * @example
  *
- * var users = {
- *   'fred':    { 'user': 'fred',    'age': 40 },
- *   'pebbles': { 'user': 'pebbles', 'age': 1 }
- * };
- *
- * _.mapValues(users, function(o) { return o.age; });
- * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
+ * _.forEach([1, 2], function(value) {
+ *   console.log(value);
+ * });
+ * // => Logs `1` then `2`.
  *
- * // The `_.property` iteratee shorthand.
- * _.mapValues(users, 'age');
- * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
+ * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
+ *   console.log(key);
+ * });
+ * // => Logs 'a' then 'b' (iteration order is not guaranteed).
  */
-function mapValues(object, iteratee) {
-  var result = {};
-  iteratee = baseIteratee(iteratee, 3);
-
-  baseForOwn(object, function(value, key, object) {
-    baseAssignValue(result, key, iteratee(value, key, object));
-  });
-  return result;
+function forEach(collection, iteratee) {
+  var func = isArray(collection) ? arrayEach : baseEach;
+  return func(collection, castFunction(iteratee));
 }
 
-module.exports = mapValues;
+module.exports = forEach;
 
 
 /***/ }),
-/* 299 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var defineProperty = __webpack_require__(300);
+/* 443 */
+/***/ (function(module, exports) {
 
 /**
- * The base implementation of `assignValue` and `assignMergeValue` without
- * value checks.
+ * A specialized version of `_.forEach` for arrays without support for
+ * iteratee shorthands.
  *
  * @private
- * @param {Object} object The object to modify.
- * @param {string} key The key of the property to assign.
- * @param {*} value The value to assign.
+ * @param {Array} [array] The array to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array} Returns `array`.
  */
-function baseAssignValue(object, key, value) {
-  if (key == '__proto__' && defineProperty) {
-    defineProperty(object, key, {
-      'configurable': true,
-      'enumerable': true,
-      'value': value,
-      'writable': true
-    });
-  } else {
-    object[key] = value;
+function arrayEach(array, iteratee) {
+  var index = -1,
+      length = array == null ? 0 : array.length;
+
+  while (++index < length) {
+    if (iteratee(array[index], index, array) === false) {
+      break;
+    }
   }
+  return array;
 }
 
-module.exports = baseAssignValue;
-
-
-/***/ }),
-/* 300 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getNative = __webpack_require__(301);
-
-var defineProperty = (function() {
-  try {
-    var func = getNative(Object, 'defineProperty');
-    func({}, '', {});
-    return func;
-  } catch (e) {}
-}());
-
-module.exports = defineProperty;
+module.exports = arrayEach;
 
 
 /***/ }),
-/* 301 */
+/* 444 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseIsNative = __webpack_require__(302),
-    getValue = __webpack_require__(314);
+var baseForOwn = __webpack_require__(315),
+    createBaseEach = __webpack_require__(445);
 
 /**
- * Gets the native function at `key` of `object`.
+ * The base implementation of `_.forEach` without support for iteratee shorthands.
  *
  * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the method to get.
- * @returns {*} Returns the function if it's native, else `undefined`.
+ * @param {Array|Object} collection The collection to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array|Object} Returns `collection`.
  */
-function getNative(object, key) {
-  var value = getValue(object, key);
-  return baseIsNative(value) ? value : undefined;
-}
+var baseEach = createBaseEach(baseForOwn);
 
-module.exports = getNative;
+module.exports = baseEach;
 
 
 /***/ }),
-/* 302 */
+/* 445 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var isFunction = __webpack_require__(303),
-    isMasked = __webpack_require__(311),
-    isObject = __webpack_require__(310),
-    toSource = __webpack_require__(313);
+var isArrayLike = __webpack_require__(337);
 
 /**
- * Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
+ * Creates a `baseEach` or `baseEachRight` function.
+ *
+ * @private
+ * @param {Function} eachFunc The function to iterate over a collection.
+ * @param {boolean} [fromRight] Specify iterating from right to left.
+ * @returns {Function} Returns the new base function.
  */
-var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
+function createBaseEach(eachFunc, fromRight) {
+  return function(collection, iteratee) {
+    if (collection == null) {
+      return collection;
+    }
+    if (!isArrayLike(collection)) {
+      return eachFunc(collection, iteratee);
+    }
+    var length = collection.length,
+        index = fromRight ? length : -1,
+        iterable = Object(collection);
 
-/** Used to detect host constructors (Safari). */
-var reIsHostCtor = /^\[object .+?Constructor\]$/;
+    while ((fromRight ? index-- : ++index < length)) {
+      if (iteratee(iterable[index], index, iterable) === false) {
+        break;
+      }
+    }
+    return collection;
+  };
+}
 
-/** Used for built-in method references. */
-var funcProto = Function.prototype,
-    objectProto = Object.prototype;
+module.exports = createBaseEach;
 
-/** Used to resolve the decompiled source of functions. */
-var funcToString = funcProto.toString;
 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
+/***/ }),
+/* 446 */
+/***/ (function(module, exports, __webpack_require__) {
 
-/** Used to detect if a method is native. */
-var reIsNative = RegExp('^' +
-  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
-  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
-);
+var identity = __webpack_require__(414);
 
 /**
- * The base implementation of `_.isNative` without bad shim checks.
+ * Casts `value` to `identity` if it's not a function.
  *
  * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- *  else `false`.
+ * @param {*} value The value to inspect.
+ * @returns {Function} Returns cast function.
  */
-function baseIsNative(value) {
-  if (!isObject(value) || isMasked(value)) {
-    return false;
-  }
-  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
-  return pattern.test(toSource(value));
+function castFunction(value) {
+  return typeof value == 'function' ? value : identity;
 }
 
-module.exports = baseIsNative;
+module.exports = castFunction;
 
 
 /***/ }),
-/* 303 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseGetTag = __webpack_require__(304),
-    isObject = __webpack_require__(310);
-
-/** `Object#toString` result references. */
-var asyncTag = '[object AsyncFunction]',
-    funcTag = '[object Function]',
-    genTag = '[object GeneratorFunction]',
-    proxyTag = '[object Proxy]';
+/* 447 */
+/***/ (function(module, exports) {
 
-/**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
-function isFunction(value) {
-  if (!isObject(value)) {
-    return false;
+function M() { this._events = {}; }
+M.prototype = {
+  on: function(ev, cb) {
+    this._events || (this._events = {});
+    var e = this._events;
+    (e[ev] || (e[ev] = [])).push(cb);
+    return this;
+  },
+  removeListener: function(ev, cb) {
+    var e = this._events[ev] || [], i;
+    for(i = e.length-1; i >= 0 && e[i]; i--){
+      if(e[i] === cb || e[i].cb === cb) { e.splice(i, 1); }
+    }
+  },
+  removeAllListeners: function(ev) {
+    if(!ev) { this._events = {}; }
+    else { this._events[ev] && (this._events[ev] = []); }
+  },
+  listeners: function(ev) {
+    return (this._events ? this._events[ev] || [] : []);
+  },
+  emit: function(ev) {
+    this._events || (this._events = {});
+    var args = Array.prototype.slice.call(arguments, 1), i, e = this._events[ev] || [];
+    for(i = e.length-1; i >= 0 && e[i]; i--){
+      e[i].apply(this, args);
+    }
+    return this;
+  },
+  when: function(ev, cb) {
+    return this.once(ev, cb, true);
+  },
+  once: function(ev, cb, when) {
+    if(!cb) return this;
+    function c() {
+      if(!when) this.removeListener(ev, c);
+      if(cb.apply(this, arguments) && when) this.removeListener(ev, c);
+    }
+    c.cb = cb;
+    this.on(ev, c);
+    return this;
   }
-  // The use of `Object#toString` avoids issues with the `typeof` operator
-  // in Safari 9 which returns 'object' for typed arrays and other constructors.
-  var tag = baseGetTag(value);
-  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
-}
-
-module.exports = isFunction;
+};
+M.mixin = function(dest) {
+  var o = M.prototype, k;
+  for (k in o) {
+    o.hasOwnProperty(k) && (dest.prototype[k] = o[k]);
+  }
+};
+module.exports = M;
 
 
 /***/ }),
-/* 304 */
+/* 448 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Symbol = __webpack_require__(305),
-    getRawTag = __webpack_require__(308),
-    objectToString = __webpack_require__(309);
+"use strict";
 
-/** `Object#toString` result references. */
-var nullTag = '[object Null]',
-    undefinedTag = '[object Undefined]';
 
-/** Built-in value references. */
-var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
+var _interopRequireWildcard = __webpack_require__(277);
 
-/**
- * The base implementation of `getTag` without fallbacks for buggy environments.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the `toStringTag`.
- */
-function baseGetTag(value) {
-  if (value == null) {
-    return value === undefined ? undefinedTag : nullTag;
+var _interopRequireDefault = __webpack_require__(1);
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+Object.defineProperty(exports, "default", {
+  enumerable: true,
+  get: function get() {
+    return _CozyStackClient.default;
   }
-  return (symToStringTag && symToStringTag in Object(value))
-    ? getRawTag(value)
-    : objectToString(value);
-}
+});
+Object.defineProperty(exports, "OAuthClient", {
+  enumerable: true,
+  get: function get() {
+    return _OAuthClient.default;
+  }
+});
+Object.defineProperty(exports, "errors", {
+  enumerable: true,
+  get: function get() {
+    return _errors.default;
+  }
+});
+Object.defineProperty(exports, "FetchError", {
+  enumerable: true,
+  get: function get() {
+    return _errors.FetchError;
+  }
+});
+Object.defineProperty(exports, "normalizeDoc", {
+  enumerable: true,
+  get: function get() {
+    return _DocumentCollection.normalizeDoc;
+  }
+});
 
-module.exports = baseGetTag;
+var _CozyStackClient = _interopRequireDefault(__webpack_require__(449));
+
+var _OAuthClient = _interopRequireDefault(__webpack_require__(618));
+
+var _errors = _interopRequireWildcard(__webpack_require__(582));
 
+var _DocumentCollection = __webpack_require__(491);
 
 /***/ }),
-/* 305 */
+/* 449 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var root = __webpack_require__(306);
+"use strict";
 
-/** Built-in value references. */
-var Symbol = root.Symbol;
 
-module.exports = Symbol;
+var _interopRequireWildcard = __webpack_require__(277);
 
+var _interopRequireDefault = __webpack_require__(1);
 
-/***/ }),
-/* 306 */
-/***/ (function(module, exports, __webpack_require__) {
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
 
-var freeGlobal = __webpack_require__(307);
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-/** Detect free variable `self`. */
-var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-/** Used as a reference to the global object. */
-var root = freeGlobal || freeSelf || Function('return this')();
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-module.exports = root;
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-/***/ }),
-/* 307 */
-/***/ (function(module, exports) {
+var _cloneDeep = _interopRequireDefault(__webpack_require__(450));
 
-/** Detect free variable `global` from Node.js. */
-var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
+var _AppCollection = _interopRequireWildcard(__webpack_require__(479));
 
-module.exports = freeGlobal;
+var _AppToken = _interopRequireDefault(__webpack_require__(588));
 
+var _AccessToken = _interopRequireDefault(__webpack_require__(589));
 
-/***/ }),
-/* 308 */
-/***/ (function(module, exports, __webpack_require__) {
+var _DocumentCollection = _interopRequireDefault(__webpack_require__(491));
 
-var Symbol = __webpack_require__(305);
+var _FileCollection = _interopRequireDefault(__webpack_require__(590));
 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+var _JobCollection = _interopRequireWildcard(__webpack_require__(599));
 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
+var _KonnectorCollection = _interopRequireWildcard(__webpack_require__(600));
 
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var nativeObjectToString = objectProto.toString;
+var _SharingCollection = _interopRequireDefault(__webpack_require__(604));
 
-/** Built-in value references. */
-var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
+var _PermissionCollection = _interopRequireDefault(__webpack_require__(605));
 
-/**
- * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the raw `toStringTag`.
- */
-function getRawTag(value) {
-  var isOwn = hasOwnProperty.call(value, symToStringTag),
-      tag = value[symToStringTag];
+var _TriggerCollection = _interopRequireWildcard(__webpack_require__(601));
 
-  try {
-    value[symToStringTag] = undefined;
-    var unmasked = true;
-  } catch (e) {}
+var _SettingsCollection = _interopRequireWildcard(__webpack_require__(606));
 
-  var result = nativeObjectToString.call(value);
-  if (unmasked) {
-    if (isOwn) {
-      value[symToStringTag] = tag;
-    } else {
-      delete value[symToStringTag];
-    }
-  }
-  return result;
-}
+var _NotesCollection = _interopRequireWildcard(__webpack_require__(607));
 
-module.exports = getRawTag;
+var _OAuthClientsCollection = _interopRequireWildcard(__webpack_require__(609));
 
+var _ShortcutsCollection = _interopRequireWildcard(__webpack_require__(610));
 
-/***/ }),
-/* 309 */
-/***/ (function(module, exports) {
+var _ContactsCollection = _interopRequireWildcard(__webpack_require__(611));
 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+var _AppsRegistryCollection = _interopRequireWildcard(__webpack_require__(612));
 
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var nativeObjectToString = objectProto.toString;
+var _getIconURL2 = _interopRequireDefault(__webpack_require__(613));
 
-/**
- * Converts `value` to a string using `Object.prototype.toString`.
- *
- * @private
- * @param {*} value The value to convert.
- * @returns {string} Returns the converted string.
- */
-function objectToString(value) {
-  return nativeObjectToString.call(value);
-}
+var _logDeprecate = _interopRequireDefault(__webpack_require__(615));
 
-module.exports = objectToString;
+var _xhrFetch = __webpack_require__(616);
 
+var _microee = _interopRequireDefault(__webpack_require__(447));
 
-/***/ }),
-/* 310 */
-/***/ (function(module, exports) {
+var _errors = _interopRequireWildcard(__webpack_require__(582));
 
-/**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
-function isObject(value) {
-  var type = typeof value;
-  return value != null && (type == 'object' || type == 'function');
-}
+var _logger = _interopRequireDefault(__webpack_require__(587));
 
-module.exports = isObject;
+var _promiseCache = _interopRequireDefault(__webpack_require__(617));
 
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-/***/ }),
-/* 311 */
-/***/ (function(module, exports, __webpack_require__) {
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-var coreJsData = __webpack_require__(312);
+var normalizeUri = function normalizeUri(uriArg) {
+  var uri = uriArg;
+  if (uri === null) return null;
 
-/** Used to detect methods masquerading as native. */
-var maskSrcKey = (function() {
-  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
-  return uid ? ('Symbol(src)_1.' + uid) : '';
-}());
+  while (uri[uri.length - 1] === '/') {
+    uri = uri.slice(0, -1);
+  }
 
+  return uri;
+};
 /**
- * Checks if `func` has its source masked.
- *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
+ * Main API against the `cozy-stack` server.
  */
-function isMasked(func) {
-  return !!maskSrcKey && (maskSrcKey in func);
-}
 
-module.exports = isMasked;
 
+var CozyStackClient = /*#__PURE__*/function () {
+  function CozyStackClient(options) {
+    (0, _classCallCheck2.default)(this, CozyStackClient);
 
-/***/ }),
-/* 312 */
-/***/ (function(module, exports, __webpack_require__) {
+    var opts = _objectSpread({}, options);
 
-var root = __webpack_require__(306);
+    var token = opts.token,
+        _opts$uri = opts.uri,
+        uri = _opts$uri === void 0 ? '' : _opts$uri;
+    this.options = opts;
+    this.setUri(uri);
+    this.setToken(token);
+    this.konnectors = new _KonnectorCollection.default(this);
+    this.jobs = new _JobCollection.default(this);
+    this._promiseCache = new _promiseCache.default();
+  }
 
-/** Used to detect overreaching core-js shims. */
-var coreJsData = root['__core-js_shared__'];
+  (0, _createClass2.default)(CozyStackClient, [{
+    key: "isRevocationError",
+    value: function isRevocationError(err) {
+      var message = err === null || err === void 0 ? void 0 : err.message;
+      if (!message) return false;
+      if (_errors.default.CLIENT_NOT_FOUND.test(err.message) || _errors.default.UNREGISTERED_CLIENT.test(err.message)) return true;
+    }
+    /**
+     * Creates a {@link DocumentCollection} instance.
+     *
+     * @param  {string} doctype The collection doctype.
+     * @returns {DocumentCollection}
+     */
 
-module.exports = coreJsData;
+  }, {
+    key: "collection",
+    value: function collection(doctype) {
+      if (!doctype) {
+        throw new Error('CozyStackClient.collection() called without a doctype');
+      }
 
+      switch (doctype) {
+        case _AppCollection.APPS_DOCTYPE:
+          return new _AppCollection.default(this);
 
-/***/ }),
-/* 313 */
-/***/ (function(module, exports) {
+        case _KonnectorCollection.KONNECTORS_DOCTYPE:
+          return new _KonnectorCollection.default(this);
 
-/** Used for built-in method references. */
-var funcProto = Function.prototype;
+        case 'io.cozy.files':
+          return new _FileCollection.default(doctype, this);
 
-/** Used to resolve the decompiled source of functions. */
-var funcToString = funcProto.toString;
+        case 'io.cozy.sharings':
+          return new _SharingCollection.default(doctype, this);
 
-/**
- * Converts `func` to its source code.
- *
- * @private
- * @param {Function} func The function to convert.
- * @returns {string} Returns the source code.
- */
-function toSource(func) {
-  if (func != null) {
-    try {
-      return funcToString.call(func);
-    } catch (e) {}
-    try {
-      return (func + '');
-    } catch (e) {}
-  }
-  return '';
-}
+        case 'io.cozy.permissions':
+          return new _PermissionCollection.default(doctype, this);
 
-module.exports = toSource;
+        case _ContactsCollection.CONTACTS_DOCTYPE:
+          return new _ContactsCollection.default(doctype, this);
 
+        case _TriggerCollection.TRIGGERS_DOCTYPE:
+          return new _TriggerCollection.default(this);
 
-/***/ }),
-/* 314 */
-/***/ (function(module, exports) {
+        case _JobCollection.JOBS_DOCTYPE:
+          return new _JobCollection.default(this);
 
-/**
- * Gets the value at `key` of `object`.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
- */
-function getValue(object, key) {
-  return object == null ? undefined : object[key];
-}
+        case _SettingsCollection.SETTINGS_DOCTYPE:
+          return new _SettingsCollection.default(this);
 
-module.exports = getValue;
+        case _NotesCollection.NOTES_DOCTYPE:
+          return new _NotesCollection.default(this);
 
+        case _OAuthClientsCollection.OAUTH_CLIENTS_DOCTYPE:
+          return new _OAuthClientsCollection.default(this);
 
-/***/ }),
-/* 315 */
-/***/ (function(module, exports, __webpack_require__) {
+        case _ShortcutsCollection.SHORTCUTS_DOCTYPE:
+          return new _ShortcutsCollection.default(this);
 
-var baseFor = __webpack_require__(316),
-    keys = __webpack_require__(318);
+        case _AppsRegistryCollection.APPS_REGISTRY_DOCTYPE:
+          return new _AppsRegistryCollection.default(this);
 
-/**
- * The base implementation of `_.forOwn` without support for iteratee shorthands.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Object} Returns `object`.
- */
-function baseForOwn(object, iteratee) {
-  return object && baseFor(object, iteratee, keys);
-}
+        default:
+          return new _DocumentCollection.default(doctype, this);
+      }
+    }
+    /**
+     * Fetches an endpoint in an authorized way.
+     *
+     * @param  {string} method The HTTP method.
+     * @param  {string} path The URI.
+     * @param  {object} [body] The payload.
+     * @param  {object} [opts={}] Options for fetch
+     * @returns {object}
+     * @throws {FetchError}
+     */
 
-module.exports = baseForOwn;
+  }, {
+    key: "fetch",
+    value: function (_fetch) {
+      function fetch(_x, _x2, _x3) {
+        return _fetch.apply(this, arguments);
+      }
 
+      fetch.toString = function () {
+        return _fetch.toString();
+      };
 
-/***/ }),
-/* 316 */
-/***/ (function(module, exports, __webpack_require__) {
+      return fetch;
+    }( /*#__PURE__*/function () {
+      var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(method, path, body) {
+        var opts,
+            options,
+            headers,
+            fullPath,
+            fetcher,
+            response,
+            _args = arguments;
+        return _regenerator.default.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                opts = _args.length > 3 && _args[3] !== undefined ? _args[3] : {};
+                options = _objectSpread({}, opts);
+                options.method = method;
+                headers = options.headers = _objectSpread({}, opts.headers);
 
-var createBaseFor = __webpack_require__(317);
+                if (method !== 'GET' && method !== 'HEAD' && body !== undefined) {
+                  if (headers['Content-Type']) {
+                    options.body = body;
+                  }
+                }
 
-/**
- * The base implementation of `baseForOwn` which iterates over `object`
- * properties returned by `keysFunc` and invokes `iteratee` for each property.
- * Iteratee functions may exit iteration early by explicitly returning `false`.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {Function} keysFunc The function to get the keys of `object`.
- * @returns {Object} Returns `object`.
- */
-var baseFor = createBaseFor();
+                if (!headers.Authorization) {
+                  headers.Authorization = this.getAuthorizationHeader();
+                } // the option credentials:include tells fetch to include the cookies in the
+                // request even for cross-origin requests
+                // it is still prossible to enforce `credentials` value by providing one in the `opts` prop
 
-module.exports = baseFor;
 
+                options.credentials = options.credentials || 'include';
+                fullPath = this.fullpath(path);
+                fetcher = (0, _xhrFetch.shouldXMLHTTPRequestBeUsed)(method, path, options) ? _xhrFetch.fetchWithXMLHttpRequest : fetch;
+                _context.prev = 9;
+                _context.next = 12;
+                return fetcher(fullPath, options);
 
-/***/ }),
-/* 317 */
-/***/ (function(module, exports) {
+              case 12:
+                response = _context.sent;
 
-/**
- * Creates a base function for methods like `_.forIn` and `_.forOwn`.
- *
- * @private
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new base function.
- */
-function createBaseFor(fromRight) {
-  return function(object, iteratee, keysFunc) {
-    var index = -1,
-        iterable = Object(object),
-        props = keysFunc(object),
-        length = props.length;
+                if (!response.ok) {
+                  this.emit('error', new _errors.FetchError(response, "".concat(response.status, " ").concat(response.statusText)));
+                }
 
-    while (length--) {
-      var key = props[fromRight ? length : ++index];
-      if (iteratee(iterable[key], key, iterable) === false) {
-        break;
+                return _context.abrupt("return", response);
+
+              case 17:
+                _context.prev = 17;
+                _context.t0 = _context["catch"](9);
+
+                if (this.isRevocationError(_context.t0)) {
+                  this.onRevocationChange(true);
+                }
+
+                throw _context.t0;
+
+              case 21:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this, [[9, 17]]);
+      }));
+
+      return function (_x4, _x5, _x6) {
+        return _ref.apply(this, arguments);
+      };
+    }())
+  }, {
+    key: "onTokenRefresh",
+    value: function onTokenRefresh(token) {
+      if (this.options && this.options.onTokenRefresh) {
+        this.options.onTokenRefresh(token);
       }
     }
-    return object;
-  };
-}
-
-module.exports = createBaseFor;
+  }, {
+    key: "onRevocationChange",
+    value: function onRevocationChange(state) {
+      if (this.options && this.options.onRevocationChange) {
+        this.options.onRevocationChange(state);
+      }
+    }
+    /**
+     * Retrieves a new app token by refreshing the currently used token.
+     *
+     * @throws {Error} The client should already have an access token to use this function
+     * @throws {Error} The client couldn't fetch a new token
+     * @returns {Promise} A promise that resolves with a new AccessToken object
+     */
 
+  }, {
+    key: "refreshToken",
+    value: function () {
+      var _refreshToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
+        var options, response, html, parser, doc, appNode, data, token, newToken;
+        return _regenerator.default.wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                if (this.token) {
+                  _context2.next = 2;
+                  break;
+                }
 
-/***/ }),
-/* 318 */
-/***/ (function(module, exports, __webpack_require__) {
+                throw new Error('Cannot refresh an empty token');
 
-var arrayLikeKeys = __webpack_require__(319),
-    baseKeys = __webpack_require__(333),
-    isArrayLike = __webpack_require__(337);
+              case 2:
+                options = {
+                  method: 'GET',
+                  credentials: 'include'
+                };
 
-/**
- * Creates an array of the own enumerable property names of `object`.
- *
- * **Note:** Non-object values are coerced to objects. See the
- * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
- * for more details.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- *   this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.keys(new Foo);
- * // => ['a', 'b'] (iteration order is not guaranteed)
- *
- * _.keys('hi');
- * // => ['0', '1']
- */
-function keys(object) {
-  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
-}
+                if (global.document) {
+                  _context2.next = 5;
+                  break;
+                }
 
-module.exports = keys;
+                throw new Error('Not in a web context, cannot refresh token');
 
+              case 5:
+                _context2.next = 7;
+                return fetch('/?refreshToken', options);
 
-/***/ }),
-/* 319 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 7:
+                response = _context2.sent;
 
-var baseTimes = __webpack_require__(320),
-    isArguments = __webpack_require__(321),
-    isArray = __webpack_require__(324),
-    isBuffer = __webpack_require__(325),
-    isIndex = __webpack_require__(327),
-    isTypedArray = __webpack_require__(328);
+                if (response.ok) {
+                  _context2.next = 10;
+                  break;
+                }
 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+                throw new Error("couldn't fetch a new token - response " + response.statusCode);
 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
+              case 10:
+                _context2.next = 12;
+                return response.text();
 
-/**
- * Creates an array of the enumerable property names of the array-like `value`.
- *
- * @private
- * @param {*} value The value to query.
- * @param {boolean} inherited Specify returning inherited property names.
- * @returns {Array} Returns the array of property names.
- */
-function arrayLikeKeys(value, inherited) {
-  var isArr = isArray(value),
-      isArg = !isArr && isArguments(value),
-      isBuff = !isArr && !isArg && isBuffer(value),
-      isType = !isArr && !isArg && !isBuff && isTypedArray(value),
-      skipIndexes = isArr || isArg || isBuff || isType,
-      result = skipIndexes ? baseTimes(value.length, String) : [],
-      length = result.length;
+              case 12:
+                html = _context2.sent;
+                parser = new DOMParser();
+                doc = parser.parseFromString(html, 'text/html');
 
-  for (var key in value) {
-    if ((inherited || hasOwnProperty.call(value, key)) &&
-        !(skipIndexes && (
-           // Safari 9 has enumerable `arguments.length` in strict mode.
-           key == 'length' ||
-           // Node.js 0.10 has enumerable non-index properties on buffers.
-           (isBuff && (key == 'offset' || key == 'parent')) ||
-           // PhantomJS 2 has enumerable non-index properties on typed arrays.
-           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
-           // Skip index properties.
-           isIndex(key, length)
-        ))) {
-      result.push(key);
-    }
-  }
-  return result;
-}
-
-module.exports = arrayLikeKeys;
-
-
-/***/ }),
-/* 320 */
-/***/ (function(module, exports) {
-
-/**
- * The base implementation of `_.times` without support for iteratee shorthands
- * or max array length checks.
- *
- * @private
- * @param {number} n The number of times to invoke `iteratee`.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the array of results.
- */
-function baseTimes(n, iteratee) {
-  var index = -1,
-      result = Array(n);
-
-  while (++index < n) {
-    result[index] = iteratee(index);
-  }
-  return result;
-}
-
-module.exports = baseTimes;
-
-
-/***/ }),
-/* 321 */
-/***/ (function(module, exports, __webpack_require__) {
+                if (doc) {
+                  _context2.next = 17;
+                  break;
+                }
 
-var baseIsArguments = __webpack_require__(322),
-    isObjectLike = __webpack_require__(323);
+                throw Error("couldn't fetch a new token - doc is not html");
 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+              case 17:
+                appNode = doc.querySelector('div[role="application"]');
 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
+                if (appNode) {
+                  _context2.next = 20;
+                  break;
+                }
 
-/** Built-in value references. */
-var propertyIsEnumerable = objectProto.propertyIsEnumerable;
+                throw Error("couldn't fetch a new token - no div[role=application]");
 
-/**
- * Checks if `value` is likely an `arguments` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- *  else `false`.
- * @example
- *
- * _.isArguments(function() { return arguments; }());
- * // => true
- *
- * _.isArguments([1, 2, 3]);
- * // => false
- */
-var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
-  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
-    !propertyIsEnumerable.call(value, 'callee');
-};
+              case 20:
+                data = appNode.dataset.cozy ? JSON.parse(appNode.dataset.cozy) : _objectSpread({}, appNode.dataset);
+                token = data.token;
 
-module.exports = isArguments;
+                if (token) {
+                  token = token || data.cozyToken;
+                }
 
+                if (token) {
+                  _context2.next = 25;
+                  break;
+                }
 
-/***/ }),
-/* 322 */
-/***/ (function(module, exports, __webpack_require__) {
+                throw Error("couldn't fetch a new token -- missing data-cozy or data-cozy-token attribute");
 
-var baseGetTag = __webpack_require__(304),
-    isObjectLike = __webpack_require__(323);
+              case 25:
+                newToken = new _AppToken.default(token);
+                this.setToken(newToken);
+                this.onTokenRefresh(newToken);
+                return _context2.abrupt("return", newToken);
 
-/** `Object#toString` result references. */
-var argsTag = '[object Arguments]';
+              case 29:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2, this);
+      }));
 
-/**
- * The base implementation of `_.isArguments`.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- */
-function baseIsArguments(value) {
-  return isObjectLike(value) && baseGetTag(value) == argsTag;
-}
+      function refreshToken() {
+        return _refreshToken.apply(this, arguments);
+      }
 
-module.exports = baseIsArguments;
+      return refreshToken;
+    }()
+    /**
+     * Fetches JSON in an authorized way.
+     *
+     * @param  {string} method The HTTP method.
+     * @param  {string} path The URI.
+     * @param  {object} body The payload.
+     * @param  {object} options Options
+     * @returns {object}
+     * @throws {FetchError}
+     */
 
+  }, {
+    key: "fetchJSON",
+    value: function () {
+      var _fetchJSON = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(method, path, body) {
+        var _this = this;
 
-/***/ }),
-/* 323 */
-/***/ (function(module, exports) {
+        var options,
+            _args3 = arguments;
+        return _regenerator.default.wrap(function _callee3$(_context3) {
+          while (1) {
+            switch (_context3.prev = _context3.next) {
+              case 0:
+                options = _args3.length > 3 && _args3[3] !== undefined ? _args3[3] : {};
+                _context3.prev = 1;
+                _context3.next = 4;
+                return this.fetchJSONWithCurrentToken(method, path, body, options);
 
-/**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
-function isObjectLike(value) {
-  return value != null && typeof value == 'object';
-}
+              case 4:
+                return _context3.abrupt("return", _context3.sent);
 
-module.exports = isObjectLike;
+              case 7:
+                _context3.prev = 7;
+                _context3.t0 = _context3["catch"](1);
 
+                if (!(_errors.default.EXPIRED_TOKEN.test(_context3.t0.message) || _errors.default.INVALID_TOKEN.test(_context3.t0.message) || _errors.default.INVALID_TOKEN_ALT.test(_context3.t0.message))) {
+                  _context3.next = 23;
+                  break;
+                }
 
-/***/ }),
-/* 324 */
-/***/ (function(module, exports) {
+                _context3.prev = 10;
+                _context3.next = 13;
+                return this._promiseCache.exec(function () {
+                  return _this.refreshToken();
+                }, function () {
+                  return 'refreshToken';
+                });
 
-/**
- * Checks if `value` is classified as an `Array` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
- * @example
- *
- * _.isArray([1, 2, 3]);
- * // => true
- *
- * _.isArray(document.body.children);
- * // => false
- *
- * _.isArray('abc');
- * // => false
- *
- * _.isArray(_.noop);
- * // => false
- */
-var isArray = Array.isArray;
+              case 13:
+                _context3.next = 18;
+                break;
 
-module.exports = isArray;
+              case 15:
+                _context3.prev = 15;
+                _context3.t1 = _context3["catch"](10);
+                throw _context3.t0;
 
+              case 18:
+                _context3.next = 20;
+                return this.fetchJSONWithCurrentToken(method, path, body, options);
 
-/***/ }),
-/* 325 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 20:
+                return _context3.abrupt("return", _context3.sent);
 
-/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(306),
-    stubFalse = __webpack_require__(326);
+              case 23:
+                throw _context3.t0;
 
-/** Detect free variable `exports`. */
-var freeExports =  true && exports && !exports.nodeType && exports;
+              case 24:
+              case "end":
+                return _context3.stop();
+            }
+          }
+        }, _callee3, this, [[1, 7], [10, 15]]);
+      }));
 
-/** Detect free variable `module`. */
-var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
+      function fetchJSON(_x7, _x8, _x9) {
+        return _fetchJSON.apply(this, arguments);
+      }
 
-/** Detect the popular CommonJS extension `module.exports`. */
-var moduleExports = freeModule && freeModule.exports === freeExports;
+      return fetchJSON;
+    }()
+  }, {
+    key: "fetchJSONWithCurrentToken",
+    value: function () {
+      var _fetchJSONWithCurrentToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(method, path, bodyArg) {
+        var options,
+            clonedOptions,
+            headers,
+            body,
+            resp,
+            contentType,
+            isJson,
+            data,
+            _args4 = arguments;
+        return _regenerator.default.wrap(function _callee4$(_context4) {
+          while (1) {
+            switch (_context4.prev = _context4.next) {
+              case 0:
+                options = _args4.length > 3 && _args4[3] !== undefined ? _args4[3] : {};
+                //Since we modify the object later by adding in some case a
+                //content-type, let's clone this object to scope the modification
+                clonedOptions = (0, _cloneDeep.default)(options);
+                headers = clonedOptions.headers = clonedOptions.headers || {};
+                headers['Accept'] = 'application/json';
+                body = bodyArg;
 
-/** Built-in value references. */
-var Buffer = moduleExports ? root.Buffer : undefined;
+                if (method !== 'GET' && method !== 'HEAD' && body !== undefined) {
+                  if (!headers['Content-Type']) {
+                    headers['Content-Type'] = 'application/json';
+                    body = JSON.stringify(body);
+                  }
+                }
 
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
+                _context4.next = 8;
+                return this.fetch(method, path, body, clonedOptions);
 
-/**
- * Checks if `value` is a buffer.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
- * @example
- *
- * _.isBuffer(new Buffer(2));
- * // => true
- *
- * _.isBuffer(new Uint8Array(2));
- * // => false
- */
-var isBuffer = nativeIsBuffer || stubFalse;
+              case 8:
+                resp = _context4.sent;
+                contentType = resp.headers.get('content-type');
+                isJson = contentType && contentType.indexOf('json') >= 0;
+                _context4.next = 13;
+                return isJson ? resp.json() : resp.text();
 
-module.exports = isBuffer;
+              case 13:
+                data = _context4.sent;
 
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(197)(module)))
+                if (!resp.ok) {
+                  _context4.next = 16;
+                  break;
+                }
 
-/***/ }),
-/* 326 */
-/***/ (function(module, exports) {
+                return _context4.abrupt("return", data);
 
-/**
- * This method returns `false`.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {boolean} Returns `false`.
- * @example
- *
- * _.times(2, _.stubFalse);
- * // => [false, false]
- */
-function stubFalse() {
-  return false;
-}
+              case 16:
+                throw new _errors.FetchError(resp, data);
 
-module.exports = stubFalse;
+              case 17:
+              case "end":
+                return _context4.stop();
+            }
+          }
+        }, _callee4, this);
+      }));
 
+      function fetchJSONWithCurrentToken(_x10, _x11, _x12) {
+        return _fetchJSONWithCurrentToken.apply(this, arguments);
+      }
 
-/***/ }),
-/* 327 */
-/***/ (function(module, exports) {
+      return fetchJSONWithCurrentToken;
+    }()
+  }, {
+    key: "fullpath",
+    value: function fullpath(path) {
+      if (path.startsWith('http')) {
+        return path;
+      } else {
+        return this.uri + path;
+      }
+    }
+  }, {
+    key: "getAuthorizationHeader",
+    value: function getAuthorizationHeader() {
+      return this.token ? this.token.toAuthHeader() : null;
+    }
+  }, {
+    key: "setCredentials",
+    value: function setCredentials(token) {
+      (0, _logDeprecate.default)('CozyStackClient::setCredentials is deprecated, use CozyStackClient::setToken');
+      return this.setToken(token);
+    }
+  }, {
+    key: "getCredentials",
+    value: function getCredentials() {
+      (0, _logDeprecate.default)('CozyStackClient::getCredentials is deprecated, use CozyStackClient::getAuthorizationHeader');
+      return this.getAuthorizationHeader();
+    }
+    /**
+     * Change or set the API token
+     *
+     * @param {string|AppToken|AccessToken} token - Stack API token
+     */
 
-/** Used as references for various `Number` constants. */
-var MAX_SAFE_INTEGER = 9007199254740991;
+  }, {
+    key: "setToken",
+    value: function setToken(token) {
+      if (!token) {
+        this.token = null;
+      } else {
+        if (token.toAuthHeader) {
+          // AppToken or AccessToken
+          this.token = token;
+        } else if (typeof token === 'string') {
+          // jwt string
+          this.token = new _AppToken.default(token);
+        } else {
+          _logger.default.warn('Cozy-Client: Unknown token format', token);
 
-/** Used to detect unsigned integer values. */
-var reIsUint = /^(?:0|[1-9]\d*)$/;
+          throw new Error('Cozy-Client: Unknown token format');
+        }
 
-/**
- * Checks if `value` is a valid array-like index.
- *
- * @private
- * @param {*} value The value to check.
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
- */
-function isIndex(value, length) {
-  var type = typeof value;
-  length = length == null ? MAX_SAFE_INTEGER : length;
+        this.onRevocationChange(false);
+      }
+    }
+    /**
+     * Get the access token string, being an oauth token or an app token
+     *
+     * @returns {string} token
+     */
 
-  return !!length &&
-    (type == 'number' ||
-      (type != 'symbol' && reIsUint.test(value))) &&
-        (value > -1 && value % 1 == 0 && value < length);
-}
+  }, {
+    key: "getAccessToken",
+    value: function getAccessToken() {
+      return this.token && this.token.getAccessToken();
+    }
+  }, {
+    key: "setUri",
+    value: function setUri(uri) {
+      this.uri = normalizeUri(uri);
+    }
+  }, {
+    key: "getIconURL",
+    value: function getIconURL(opts) {
+      return (0, _getIconURL2.default)(this, opts);
+    }
+  }]);
+  return CozyStackClient;
+}();
 
-module.exports = isIndex;
+_microee.default.mixin(CozyStackClient);
 
+var _default = CozyStackClient;
+exports.default = _default;
 
 /***/ }),
-/* 328 */
+/* 450 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseIsTypedArray = __webpack_require__(329),
-    baseUnary = __webpack_require__(331),
-    nodeUtil = __webpack_require__(332);
+var baseClone = __webpack_require__(451);
 
-/* Node.js helper references. */
-var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
+/** Used to compose bitmasks for cloning. */
+var CLONE_DEEP_FLAG = 1,
+    CLONE_SYMBOLS_FLAG = 4;
 
 /**
- * Checks if `value` is classified as a typed array.
+ * This method is like `_.clone` except that it recursively clones `value`.
  *
  * @static
  * @memberOf _
- * @since 3.0.0
+ * @since 1.0.0
  * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
+ * @param {*} value The value to recursively clone.
+ * @returns {*} Returns the deep cloned value.
+ * @see _.clone
  * @example
  *
- * _.isTypedArray(new Uint8Array);
- * // => true
+ * var objects = [{ 'a': 1 }, { 'b': 2 }];
  *
- * _.isTypedArray([]);
+ * var deep = _.cloneDeep(objects);
+ * console.log(deep[0] === objects[0]);
  * // => false
  */
-var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
+function cloneDeep(value) {
+  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
+}
 
-module.exports = isTypedArray;
+module.exports = cloneDeep;
 
 
 /***/ }),
-/* 329 */
+/* 451 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseGetTag = __webpack_require__(304),
-    isLength = __webpack_require__(330),
-    isObjectLike = __webpack_require__(323);
+var Stack = __webpack_require__(341),
+    arrayEach = __webpack_require__(443),
+    assignValue = __webpack_require__(452),
+    baseAssign = __webpack_require__(453),
+    baseAssignIn = __webpack_require__(455),
+    cloneBuffer = __webpack_require__(459),
+    copyArray = __webpack_require__(460),
+    copySymbols = __webpack_require__(461),
+    copySymbolsIn = __webpack_require__(462),
+    getAllKeys = __webpack_require__(384),
+    getAllKeysIn = __webpack_require__(465),
+    getTag = __webpack_require__(390),
+    initCloneArray = __webpack_require__(466),
+    initCloneByTag = __webpack_require__(467),
+    initCloneObject = __webpack_require__(473),
+    isArray = __webpack_require__(324),
+    isBuffer = __webpack_require__(325),
+    isMap = __webpack_require__(475),
+    isObject = __webpack_require__(310),
+    isSet = __webpack_require__(477),
+    keys = __webpack_require__(318),
+    keysIn = __webpack_require__(456);
+
+/** Used to compose bitmasks for cloning. */
+var CLONE_DEEP_FLAG = 1,
+    CLONE_FLAT_FLAG = 2,
+    CLONE_SYMBOLS_FLAG = 4;
 
 /** `Object#toString` result references. */
 var argsTag = '[object Arguments]',
@@ -76427,12 +72998,14 @@ var argsTag = '[object Arguments]',
     dateTag = '[object Date]',
     errorTag = '[object Error]',
     funcTag = '[object Function]',
+    genTag = '[object GeneratorFunction]',
     mapTag = '[object Map]',
     numberTag = '[object Number]',
     objectTag = '[object Object]',
     regexpTag = '[object RegExp]',
     setTag = '[object Set]',
     stringTag = '[object String]',
+    symbolTag = '[object Symbol]',
     weakMapTag = '[object WeakMap]';
 
 var arrayBufferTag = '[object ArrayBuffer]',
@@ -76447,141 +73020,288 @@ var arrayBufferTag = '[object ArrayBuffer]',
     uint16Tag = '[object Uint16Array]',
     uint32Tag = '[object Uint32Array]';
 
-/** Used to identify `toStringTag` values of typed arrays. */
-var typedArrayTags = {};
-typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
-typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
-typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
-typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
-typedArrayTags[uint32Tag] = true;
-typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
-typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
-typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
-typedArrayTags[errorTag] = typedArrayTags[funcTag] =
-typedArrayTags[mapTag] = typedArrayTags[numberTag] =
-typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
-typedArrayTags[setTag] = typedArrayTags[stringTag] =
-typedArrayTags[weakMapTag] = false;
+/** Used to identify `toStringTag` values supported by `_.clone`. */
+var cloneableTags = {};
+cloneableTags[argsTag] = cloneableTags[arrayTag] =
+cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
+cloneableTags[boolTag] = cloneableTags[dateTag] =
+cloneableTags[float32Tag] = cloneableTags[float64Tag] =
+cloneableTags[int8Tag] = cloneableTags[int16Tag] =
+cloneableTags[int32Tag] = cloneableTags[mapTag] =
+cloneableTags[numberTag] = cloneableTags[objectTag] =
+cloneableTags[regexpTag] = cloneableTags[setTag] =
+cloneableTags[stringTag] = cloneableTags[symbolTag] =
+cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
+cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
+cloneableTags[errorTag] = cloneableTags[funcTag] =
+cloneableTags[weakMapTag] = false;
 
 /**
- * The base implementation of `_.isTypedArray` without Node.js optimizations.
+ * The base implementation of `_.clone` and `_.cloneDeep` which tracks
+ * traversed objects.
  *
  * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
+ * @param {*} value The value to clone.
+ * @param {boolean} bitmask The bitmask flags.
+ *  1 - Deep clone
+ *  2 - Flatten inherited properties
+ *  4 - Clone symbols
+ * @param {Function} [customizer] The function to customize cloning.
+ * @param {string} [key] The key of `value`.
+ * @param {Object} [object] The parent object of `value`.
+ * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
+ * @returns {*} Returns the cloned value.
  */
-function baseIsTypedArray(value) {
-  return isObjectLike(value) &&
-    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
+function baseClone(value, bitmask, customizer, key, object, stack) {
+  var result,
+      isDeep = bitmask & CLONE_DEEP_FLAG,
+      isFlat = bitmask & CLONE_FLAT_FLAG,
+      isFull = bitmask & CLONE_SYMBOLS_FLAG;
+
+  if (customizer) {
+    result = object ? customizer(value, key, object, stack) : customizer(value);
+  }
+  if (result !== undefined) {
+    return result;
+  }
+  if (!isObject(value)) {
+    return value;
+  }
+  var isArr = isArray(value);
+  if (isArr) {
+    result = initCloneArray(value);
+    if (!isDeep) {
+      return copyArray(value, result);
+    }
+  } else {
+    var tag = getTag(value),
+        isFunc = tag == funcTag || tag == genTag;
+
+    if (isBuffer(value)) {
+      return cloneBuffer(value, isDeep);
+    }
+    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
+      result = (isFlat || isFunc) ? {} : initCloneObject(value);
+      if (!isDeep) {
+        return isFlat
+          ? copySymbolsIn(value, baseAssignIn(result, value))
+          : copySymbols(value, baseAssign(result, value));
+      }
+    } else {
+      if (!cloneableTags[tag]) {
+        return object ? value : {};
+      }
+      result = initCloneByTag(value, tag, isDeep);
+    }
+  }
+  // Check for circular references and return its corresponding clone.
+  stack || (stack = new Stack);
+  var stacked = stack.get(value);
+  if (stacked) {
+    return stacked;
+  }
+  stack.set(value, result);
+
+  if (isSet(value)) {
+    value.forEach(function(subValue) {
+      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
+    });
+  } else if (isMap(value)) {
+    value.forEach(function(subValue, key) {
+      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
+    });
+  }
+
+  var keysFunc = isFull
+    ? (isFlat ? getAllKeysIn : getAllKeys)
+    : (isFlat ? keysIn : keys);
+
+  var props = isArr ? undefined : keysFunc(value);
+  arrayEach(props || value, function(subValue, key) {
+    if (props) {
+      key = subValue;
+      subValue = value[key];
+    }
+    // Recursively populate clone (susceptible to call stack limits).
+    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
+  });
+  return result;
 }
 
-module.exports = baseIsTypedArray;
+module.exports = baseClone;
 
 
 /***/ }),
-/* 330 */
-/***/ (function(module, exports) {
+/* 452 */
+/***/ (function(module, exports, __webpack_require__) {
 
-/** Used as references for various `Number` constants. */
-var MAX_SAFE_INTEGER = 9007199254740991;
+var baseAssignValue = __webpack_require__(299),
+    eq = __webpack_require__(346);
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
 
 /**
- * Checks if `value` is a valid array-like length.
- *
- * **Note:** This method is loosely based on
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
- * @example
- *
- * _.isLength(3);
- * // => true
- *
- * _.isLength(Number.MIN_VALUE);
- * // => false
- *
- * _.isLength(Infinity);
- * // => false
+ * Assigns `value` to `key` of `object` if the existing value is not equivalent
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+ * for equality comparisons.
  *
- * _.isLength('3');
- * // => false
+ * @private
+ * @param {Object} object The object to modify.
+ * @param {string} key The key of the property to assign.
+ * @param {*} value The value to assign.
  */
-function isLength(value) {
-  return typeof value == 'number' &&
-    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
+function assignValue(object, key, value) {
+  var objValue = object[key];
+  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
+      (value === undefined && !(key in object))) {
+    baseAssignValue(object, key, value);
+  }
 }
 
-module.exports = isLength;
+module.exports = assignValue;
 
 
 /***/ }),
-/* 331 */
-/***/ (function(module, exports) {
+/* 453 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var copyObject = __webpack_require__(454),
+    keys = __webpack_require__(318);
 
 /**
- * The base implementation of `_.unary` without support for storing metadata.
+ * The base implementation of `_.assign` without support for multiple sources
+ * or `customizer` functions.
  *
  * @private
- * @param {Function} func The function to cap arguments for.
- * @returns {Function} Returns the new capped function.
+ * @param {Object} object The destination object.
+ * @param {Object} source The source object.
+ * @returns {Object} Returns `object`.
  */
-function baseUnary(func) {
-  return function(value) {
-    return func(value);
-  };
+function baseAssign(object, source) {
+  return object && copyObject(source, keys(source), object);
 }
 
-module.exports = baseUnary;
+module.exports = baseAssign;
 
 
 /***/ }),
-/* 332 */
+/* 454 */
 /***/ (function(module, exports, __webpack_require__) {
 
-/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(307);
-
-/** Detect free variable `exports`. */
-var freeExports =  true && exports && !exports.nodeType && exports;
+var assignValue = __webpack_require__(452),
+    baseAssignValue = __webpack_require__(299);
 
-/** Detect free variable `module`. */
-var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
+/**
+ * Copies properties of `source` to `object`.
+ *
+ * @private
+ * @param {Object} source The object to copy properties from.
+ * @param {Array} props The property identifiers to copy.
+ * @param {Object} [object={}] The object to copy properties to.
+ * @param {Function} [customizer] The function to customize copied values.
+ * @returns {Object} Returns `object`.
+ */
+function copyObject(source, props, object, customizer) {
+  var isNew = !object;
+  object || (object = {});
 
-/** Detect the popular CommonJS extension `module.exports`. */
-var moduleExports = freeModule && freeModule.exports === freeExports;
+  var index = -1,
+      length = props.length;
 
-/** Detect free variable `process` from Node.js. */
-var freeProcess = moduleExports && freeGlobal.process;
+  while (++index < length) {
+    var key = props[index];
 
-/** Used to access faster Node.js helpers. */
-var nodeUtil = (function() {
-  try {
-    // Use `util.types` for Node.js 10+.
-    var types = freeModule && freeModule.require && freeModule.require('util').types;
+    var newValue = customizer
+      ? customizer(object[key], source[key], key, object, source)
+      : undefined;
 
-    if (types) {
-      return types;
+    if (newValue === undefined) {
+      newValue = source[key];
+    }
+    if (isNew) {
+      baseAssignValue(object, key, newValue);
+    } else {
+      assignValue(object, key, newValue);
     }
+  }
+  return object;
+}
 
-    // Legacy `process.binding('util')` for Node.js < 10.
-    return freeProcess && freeProcess.binding && freeProcess.binding('util');
-  } catch (e) {}
-}());
+module.exports = copyObject;
 
-module.exports = nodeUtil;
 
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(197)(module)))
+/***/ }),
+/* 455 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var copyObject = __webpack_require__(454),
+    keysIn = __webpack_require__(456);
+
+/**
+ * The base implementation of `_.assignIn` without support for multiple sources
+ * or `customizer` functions.
+ *
+ * @private
+ * @param {Object} object The destination object.
+ * @param {Object} source The source object.
+ * @returns {Object} Returns `object`.
+ */
+function baseAssignIn(object, source) {
+  return object && copyObject(source, keysIn(source), object);
+}
+
+module.exports = baseAssignIn;
+
 
 /***/ }),
-/* 333 */
+/* 456 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var isPrototype = __webpack_require__(334),
-    nativeKeys = __webpack_require__(335);
+var arrayLikeKeys = __webpack_require__(319),
+    baseKeysIn = __webpack_require__(457),
+    isArrayLike = __webpack_require__(337);
+
+/**
+ * Creates an array of the own and inherited enumerable property names of `object`.
+ *
+ * **Note:** Non-object values are coerced to objects.
+ *
+ * @static
+ * @memberOf _
+ * @since 3.0.0
+ * @category Object
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ * @example
+ *
+ * function Foo() {
+ *   this.a = 1;
+ *   this.b = 2;
+ * }
+ *
+ * Foo.prototype.c = 3;
+ *
+ * _.keysIn(new Foo);
+ * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
+ */
+function keysIn(object) {
+  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
+}
+
+module.exports = keysIn;
+
+
+/***/ }),
+/* 457 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__(310),
+    isPrototype = __webpack_require__(334),
+    nativeKeysIn = __webpack_require__(458);
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
@@ -76590,10524 +73310,10224 @@ var objectProto = Object.prototype;
 var hasOwnProperty = objectProto.hasOwnProperty;
 
 /**
- * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
+ * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
  *
  * @private
  * @param {Object} object The object to query.
  * @returns {Array} Returns the array of property names.
  */
-function baseKeys(object) {
-  if (!isPrototype(object)) {
-    return nativeKeys(object);
+function baseKeysIn(object) {
+  if (!isObject(object)) {
+    return nativeKeysIn(object);
   }
-  var result = [];
-  for (var key in Object(object)) {
-    if (hasOwnProperty.call(object, key) && key != 'constructor') {
+  var isProto = isPrototype(object),
+      result = [];
+
+  for (var key in object) {
+    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
       result.push(key);
     }
   }
   return result;
 }
 
-module.exports = baseKeys;
+module.exports = baseKeysIn;
 
 
 /***/ }),
-/* 334 */
+/* 458 */
 /***/ (function(module, exports) {
 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
 /**
- * Checks if `value` is likely a prototype object.
+ * This function is like
+ * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
+ * except that it includes inherited enumerable properties.
  *
  * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
  */
-function isPrototype(value) {
-  var Ctor = value && value.constructor,
-      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
-
-  return value === proto;
+function nativeKeysIn(object) {
+  var result = [];
+  if (object != null) {
+    for (var key in Object(object)) {
+      result.push(key);
+    }
+  }
+  return result;
 }
 
-module.exports = isPrototype;
+module.exports = nativeKeysIn;
 
 
 /***/ }),
-/* 335 */
+/* 459 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var overArg = __webpack_require__(336);
+/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(306);
 
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeKeys = overArg(Object.keys, Object);
+/** Detect free variable `exports`. */
+var freeExports =  true && exports && !exports.nodeType && exports;
 
-module.exports = nativeKeys;
+/** Detect free variable `module`. */
+var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
 
+/** Detect the popular CommonJS extension `module.exports`. */
+var moduleExports = freeModule && freeModule.exports === freeExports;
 
-/***/ }),
-/* 336 */
-/***/ (function(module, exports) {
+/** Built-in value references. */
+var Buffer = moduleExports ? root.Buffer : undefined,
+    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;
 
 /**
- * Creates a unary function that invokes `func` with its argument transformed.
+ * Creates a clone of  `buffer`.
  *
  * @private
- * @param {Function} func The function to wrap.
- * @param {Function} transform The argument transform.
- * @returns {Function} Returns the new function.
+ * @param {Buffer} buffer The buffer to clone.
+ * @param {boolean} [isDeep] Specify a deep clone.
+ * @returns {Buffer} Returns the cloned buffer.
  */
-function overArg(func, transform) {
-  return function(arg) {
-    return func(transform(arg));
-  };
+function cloneBuffer(buffer, isDeep) {
+  if (isDeep) {
+    return buffer.slice();
+  }
+  var length = buffer.length,
+      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
+
+  buffer.copy(result);
+  return result;
 }
 
-module.exports = overArg;
+module.exports = cloneBuffer;
 
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(197)(module)))
 
 /***/ }),
-/* 337 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var isFunction = __webpack_require__(303),
-    isLength = __webpack_require__(330);
+/* 460 */
+/***/ (function(module, exports) {
 
 /**
- * Checks if `value` is array-like. A value is considered array-like if it's
- * not a function and has a `value.length` that's an integer greater than or
- * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
- * @example
- *
- * _.isArrayLike([1, 2, 3]);
- * // => true
- *
- * _.isArrayLike(document.body.children);
- * // => true
- *
- * _.isArrayLike('abc');
- * // => true
+ * Copies the values of `source` to `array`.
  *
- * _.isArrayLike(_.noop);
- * // => false
+ * @private
+ * @param {Array} source The array to copy values from.
+ * @param {Array} [array=[]] The array to copy values to.
+ * @returns {Array} Returns `array`.
  */
-function isArrayLike(value) {
-  return value != null && isLength(value.length) && !isFunction(value);
+function copyArray(source, array) {
+  var index = -1,
+      length = source.length;
+
+  array || (array = Array(length));
+  while (++index < length) {
+    array[index] = source[index];
+  }
+  return array;
 }
 
-module.exports = isArrayLike;
+module.exports = copyArray;
 
 
 /***/ }),
-/* 338 */
+/* 461 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseMatches = __webpack_require__(339),
-    baseMatchesProperty = __webpack_require__(398),
-    identity = __webpack_require__(414),
-    isArray = __webpack_require__(324),
-    property = __webpack_require__(415);
+var copyObject = __webpack_require__(454),
+    getSymbols = __webpack_require__(387);
 
 /**
- * The base implementation of `_.iteratee`.
+ * Copies own symbols of `source` to `object`.
  *
  * @private
- * @param {*} [value=_.identity] The value to convert to an iteratee.
- * @returns {Function} Returns the iteratee.
+ * @param {Object} source The object to copy symbols from.
+ * @param {Object} [object={}] The object to copy symbols to.
+ * @returns {Object} Returns `object`.
  */
-function baseIteratee(value) {
-  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
-  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
-  if (typeof value == 'function') {
-    return value;
-  }
-  if (value == null) {
-    return identity;
-  }
-  if (typeof value == 'object') {
-    return isArray(value)
-      ? baseMatchesProperty(value[0], value[1])
-      : baseMatches(value);
-  }
-  return property(value);
+function copySymbols(source, object) {
+  return copyObject(source, getSymbols(source), object);
 }
 
-module.exports = baseIteratee;
+module.exports = copySymbols;
 
 
 /***/ }),
-/* 339 */
+/* 462 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseIsMatch = __webpack_require__(340),
-    getMatchData = __webpack_require__(395),
-    matchesStrictComparable = __webpack_require__(397);
+var copyObject = __webpack_require__(454),
+    getSymbolsIn = __webpack_require__(463);
 
 /**
- * The base implementation of `_.matches` which doesn't clone `source`.
+ * Copies own and inherited symbols of `source` to `object`.
  *
  * @private
- * @param {Object} source The object of property values to match.
- * @returns {Function} Returns the new spec function.
+ * @param {Object} source The object to copy symbols from.
+ * @param {Object} [object={}] The object to copy symbols to.
+ * @returns {Object} Returns `object`.
  */
-function baseMatches(source) {
-  var matchData = getMatchData(source);
-  if (matchData.length == 1 && matchData[0][2]) {
-    return matchesStrictComparable(matchData[0][0], matchData[0][1]);
-  }
-  return function(object) {
-    return object === source || baseIsMatch(object, source, matchData);
-  };
+function copySymbolsIn(source, object) {
+  return copyObject(source, getSymbolsIn(source), object);
 }
 
-module.exports = baseMatches;
+module.exports = copySymbolsIn;
 
 
 /***/ }),
-/* 340 */
+/* 463 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Stack = __webpack_require__(341),
-    baseIsEqual = __webpack_require__(371);
+var arrayPush = __webpack_require__(386),
+    getPrototype = __webpack_require__(464),
+    getSymbols = __webpack_require__(387),
+    stubArray = __webpack_require__(389);
 
-/** Used to compose bitmasks for value comparisons. */
-var COMPARE_PARTIAL_FLAG = 1,
-    COMPARE_UNORDERED_FLAG = 2;
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeGetSymbols = Object.getOwnPropertySymbols;
 
 /**
- * The base implementation of `_.isMatch` without support for iteratee shorthands.
+ * Creates an array of the own and inherited enumerable symbols of `object`.
  *
  * @private
- * @param {Object} object The object to inspect.
- * @param {Object} source The object of property values to match.
- * @param {Array} matchData The property names, values, and compare flags to match.
- * @param {Function} [customizer] The function to customize comparisons.
- * @returns {boolean} Returns `true` if `object` is a match, else `false`.
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of symbols.
  */
-function baseIsMatch(object, source, matchData, customizer) {
-  var index = matchData.length,
-      length = index,
-      noCustomizer = !customizer;
-
-  if (object == null) {
-    return !length;
-  }
-  object = Object(object);
-  while (index--) {
-    var data = matchData[index];
-    if ((noCustomizer && data[2])
-          ? data[1] !== object[data[0]]
-          : !(data[0] in object)
-        ) {
-      return false;
-    }
-  }
-  while (++index < length) {
-    data = matchData[index];
-    var key = data[0],
-        objValue = object[key],
-        srcValue = data[1];
-
-    if (noCustomizer && data[2]) {
-      if (objValue === undefined && !(key in object)) {
-        return false;
-      }
-    } else {
-      var stack = new Stack;
-      if (customizer) {
-        var result = customizer(objValue, srcValue, key, object, source, stack);
-      }
-      if (!(result === undefined
-            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
-            : result
-          )) {
-        return false;
-      }
-    }
+var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
+  var result = [];
+  while (object) {
+    arrayPush(result, getSymbols(object));
+    object = getPrototype(object);
   }
-  return true;
-}
+  return result;
+};
 
-module.exports = baseIsMatch;
+module.exports = getSymbolsIn;
 
 
 /***/ }),
-/* 341 */
+/* 464 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var ListCache = __webpack_require__(342),
-    stackClear = __webpack_require__(350),
-    stackDelete = __webpack_require__(351),
-    stackGet = __webpack_require__(352),
-    stackHas = __webpack_require__(353),
-    stackSet = __webpack_require__(354);
-
-/**
- * Creates a stack cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function Stack(entries) {
-  var data = this.__data__ = new ListCache(entries);
-  this.size = data.size;
-}
+var overArg = __webpack_require__(336);
 
-// Add methods to `Stack`.
-Stack.prototype.clear = stackClear;
-Stack.prototype['delete'] = stackDelete;
-Stack.prototype.get = stackGet;
-Stack.prototype.has = stackHas;
-Stack.prototype.set = stackSet;
+/** Built-in value references. */
+var getPrototype = overArg(Object.getPrototypeOf, Object);
 
-module.exports = Stack;
+module.exports = getPrototype;
 
 
 /***/ }),
-/* 342 */
+/* 465 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var listCacheClear = __webpack_require__(343),
-    listCacheDelete = __webpack_require__(344),
-    listCacheGet = __webpack_require__(347),
-    listCacheHas = __webpack_require__(348),
-    listCacheSet = __webpack_require__(349);
+var baseGetAllKeys = __webpack_require__(385),
+    getSymbolsIn = __webpack_require__(463),
+    keysIn = __webpack_require__(456);
 
 /**
- * Creates an list cache object.
+ * Creates an array of own and inherited enumerable property names and
+ * symbols of `object`.
  *
  * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names and symbols.
  */
-function ListCache(entries) {
-  var index = -1,
-      length = entries == null ? 0 : entries.length;
-
-  this.clear();
-  while (++index < length) {
-    var entry = entries[index];
-    this.set(entry[0], entry[1]);
-  }
+function getAllKeysIn(object) {
+  return baseGetAllKeys(object, keysIn, getSymbolsIn);
 }
 
-// Add methods to `ListCache`.
-ListCache.prototype.clear = listCacheClear;
-ListCache.prototype['delete'] = listCacheDelete;
-ListCache.prototype.get = listCacheGet;
-ListCache.prototype.has = listCacheHas;
-ListCache.prototype.set = listCacheSet;
-
-module.exports = ListCache;
+module.exports = getAllKeysIn;
 
 
 /***/ }),
-/* 343 */
+/* 466 */
 /***/ (function(module, exports) {
 
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
 /**
- * Removes all key-value entries from the list cache.
+ * Initializes an array clone.
  *
  * @private
- * @name clear
- * @memberOf ListCache
+ * @param {Array} array The array to clone.
+ * @returns {Array} Returns the initialized clone.
  */
-function listCacheClear() {
-  this.__data__ = [];
-  this.size = 0;
+function initCloneArray(array) {
+  var length = array.length,
+      result = new array.constructor(length);
+
+  // Add properties assigned by `RegExp#exec`.
+  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
+    result.index = array.index;
+    result.input = array.input;
+  }
+  return result;
 }
 
-module.exports = listCacheClear;
+module.exports = initCloneArray;
 
 
 /***/ }),
-/* 344 */
+/* 467 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var assocIndexOf = __webpack_require__(345);
+var cloneArrayBuffer = __webpack_require__(468),
+    cloneDataView = __webpack_require__(469),
+    cloneRegExp = __webpack_require__(470),
+    cloneSymbol = __webpack_require__(471),
+    cloneTypedArray = __webpack_require__(472);
 
-/** Used for built-in method references. */
-var arrayProto = Array.prototype;
+/** `Object#toString` result references. */
+var boolTag = '[object Boolean]',
+    dateTag = '[object Date]',
+    mapTag = '[object Map]',
+    numberTag = '[object Number]',
+    regexpTag = '[object RegExp]',
+    setTag = '[object Set]',
+    stringTag = '[object String]',
+    symbolTag = '[object Symbol]';
 
-/** Built-in value references. */
-var splice = arrayProto.splice;
+var arrayBufferTag = '[object ArrayBuffer]',
+    dataViewTag = '[object DataView]',
+    float32Tag = '[object Float32Array]',
+    float64Tag = '[object Float64Array]',
+    int8Tag = '[object Int8Array]',
+    int16Tag = '[object Int16Array]',
+    int32Tag = '[object Int32Array]',
+    uint8Tag = '[object Uint8Array]',
+    uint8ClampedTag = '[object Uint8ClampedArray]',
+    uint16Tag = '[object Uint16Array]',
+    uint32Tag = '[object Uint32Array]';
 
 /**
- * Removes `key` and its value from the list cache.
+ * Initializes an object clone based on its `toStringTag`.
+ *
+ * **Note:** This function only supports cloning values with tags of
+ * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
  *
  * @private
- * @name delete
- * @memberOf ListCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ * @param {Object} object The object to clone.
+ * @param {string} tag The `toStringTag` of the object to clone.
+ * @param {boolean} [isDeep] Specify a deep clone.
+ * @returns {Object} Returns the initialized clone.
  */
-function listCacheDelete(key) {
-  var data = this.__data__,
-      index = assocIndexOf(data, key);
+function initCloneByTag(object, tag, isDeep) {
+  var Ctor = object.constructor;
+  switch (tag) {
+    case arrayBufferTag:
+      return cloneArrayBuffer(object);
 
-  if (index < 0) {
-    return false;
-  }
-  var lastIndex = data.length - 1;
-  if (index == lastIndex) {
-    data.pop();
-  } else {
-    splice.call(data, index, 1);
-  }
-  --this.size;
-  return true;
-}
+    case boolTag:
+    case dateTag:
+      return new Ctor(+object);
 
-module.exports = listCacheDelete;
+    case dataViewTag:
+      return cloneDataView(object, isDeep);
+
+    case float32Tag: case float64Tag:
+    case int8Tag: case int16Tag: case int32Tag:
+    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
+      return cloneTypedArray(object, isDeep);
 
+    case mapTag:
+      return new Ctor;
 
-/***/ }),
-/* 345 */
-/***/ (function(module, exports, __webpack_require__) {
+    case numberTag:
+    case stringTag:
+      return new Ctor(object);
 
-var eq = __webpack_require__(346);
+    case regexpTag:
+      return cloneRegExp(object);
 
-/**
- * Gets the index at which the `key` is found in `array` of key-value pairs.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} key The key to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function assocIndexOf(array, key) {
-  var length = array.length;
-  while (length--) {
-    if (eq(array[length][0], key)) {
-      return length;
-    }
+    case setTag:
+      return new Ctor;
+
+    case symbolTag:
+      return cloneSymbol(object);
   }
-  return -1;
 }
 
-module.exports = assocIndexOf;
+module.exports = initCloneByTag;
 
 
 /***/ }),
-/* 346 */
-/***/ (function(module, exports) {
+/* 468 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Uint8Array = __webpack_require__(380);
 
 /**
- * Performs a
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * comparison between two values to determine if they are equivalent.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.eq(object, object);
- * // => true
- *
- * _.eq(object, other);
- * // => false
- *
- * _.eq('a', 'a');
- * // => true
- *
- * _.eq('a', Object('a'));
- * // => false
+ * Creates a clone of `arrayBuffer`.
  *
- * _.eq(NaN, NaN);
- * // => true
+ * @private
+ * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
+ * @returns {ArrayBuffer} Returns the cloned array buffer.
  */
-function eq(value, other) {
-  return value === other || (value !== value && other !== other);
+function cloneArrayBuffer(arrayBuffer) {
+  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
+  new Uint8Array(result).set(new Uint8Array(arrayBuffer));
+  return result;
 }
 
-module.exports = eq;
+module.exports = cloneArrayBuffer;
 
 
 /***/ }),
-/* 347 */
+/* 469 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var assocIndexOf = __webpack_require__(345);
+var cloneArrayBuffer = __webpack_require__(468);
 
 /**
- * Gets the list cache value for `key`.
+ * Creates a clone of `dataView`.
  *
  * @private
- * @name get
- * @memberOf ListCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
+ * @param {Object} dataView The data view to clone.
+ * @param {boolean} [isDeep] Specify a deep clone.
+ * @returns {Object} Returns the cloned data view.
  */
-function listCacheGet(key) {
-  var data = this.__data__,
-      index = assocIndexOf(data, key);
-
-  return index < 0 ? undefined : data[index][1];
+function cloneDataView(dataView, isDeep) {
+  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
+  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
 }
 
-module.exports = listCacheGet;
+module.exports = cloneDataView;
 
 
 /***/ }),
-/* 348 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 470 */
+/***/ (function(module, exports) {
 
-var assocIndexOf = __webpack_require__(345);
+/** Used to match `RegExp` flags from their coerced string values. */
+var reFlags = /\w*$/;
 
 /**
- * Checks if a list cache value for `key` exists.
+ * Creates a clone of `regexp`.
  *
  * @private
- * @name has
- * @memberOf ListCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ * @param {Object} regexp The regexp to clone.
+ * @returns {Object} Returns the cloned regexp.
  */
-function listCacheHas(key) {
-  return assocIndexOf(this.__data__, key) > -1;
+function cloneRegExp(regexp) {
+  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
+  result.lastIndex = regexp.lastIndex;
+  return result;
 }
 
-module.exports = listCacheHas;
+module.exports = cloneRegExp;
 
 
 /***/ }),
-/* 349 */
+/* 471 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var assocIndexOf = __webpack_require__(345);
+var Symbol = __webpack_require__(305);
+
+/** Used to convert symbols to primitives and strings. */
+var symbolProto = Symbol ? Symbol.prototype : undefined,
+    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
 
 /**
- * Sets the list cache `key` to `value`.
+ * Creates a clone of the `symbol` object.
  *
  * @private
- * @name set
- * @memberOf ListCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the list cache instance.
+ * @param {Object} symbol The symbol object to clone.
+ * @returns {Object} Returns the cloned symbol object.
  */
-function listCacheSet(key, value) {
-  var data = this.__data__,
-      index = assocIndexOf(data, key);
-
-  if (index < 0) {
-    ++this.size;
-    data.push([key, value]);
-  } else {
-    data[index][1] = value;
-  }
-  return this;
+function cloneSymbol(symbol) {
+  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
 }
 
-module.exports = listCacheSet;
+module.exports = cloneSymbol;
 
 
 /***/ }),
-/* 350 */
+/* 472 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var ListCache = __webpack_require__(342);
+var cloneArrayBuffer = __webpack_require__(468);
 
 /**
- * Removes all key-value entries from the stack.
+ * Creates a clone of `typedArray`.
  *
  * @private
- * @name clear
- * @memberOf Stack
+ * @param {Object} typedArray The typed array to clone.
+ * @param {boolean} [isDeep] Specify a deep clone.
+ * @returns {Object} Returns the cloned typed array.
  */
-function stackClear() {
-  this.__data__ = new ListCache;
-  this.size = 0;
+function cloneTypedArray(typedArray, isDeep) {
+  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
+  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
 }
 
-module.exports = stackClear;
+module.exports = cloneTypedArray;
 
 
 /***/ }),
-/* 351 */
-/***/ (function(module, exports) {
+/* 473 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseCreate = __webpack_require__(474),
+    getPrototype = __webpack_require__(464),
+    isPrototype = __webpack_require__(334);
 
 /**
- * Removes `key` and its value from the stack.
+ * Initializes an object clone.
  *
  * @private
- * @name delete
- * @memberOf Stack
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ * @param {Object} object The object to clone.
+ * @returns {Object} Returns the initialized clone.
  */
-function stackDelete(key) {
-  var data = this.__data__,
-      result = data['delete'](key);
-
-  this.size = data.size;
-  return result;
+function initCloneObject(object) {
+  return (typeof object.constructor == 'function' && !isPrototype(object))
+    ? baseCreate(getPrototype(object))
+    : {};
 }
 
-module.exports = stackDelete;
+module.exports = initCloneObject;
 
 
 /***/ }),
-/* 352 */
-/***/ (function(module, exports) {
+/* 474 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__(310);
+
+/** Built-in value references. */
+var objectCreate = Object.create;
 
 /**
- * Gets the stack value for `key`.
+ * The base implementation of `_.create` without support for assigning
+ * properties to the created object.
  *
  * @private
- * @name get
- * @memberOf Stack
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
+ * @param {Object} proto The object to inherit from.
+ * @returns {Object} Returns the new object.
  */
-function stackGet(key) {
-  return this.__data__.get(key);
-}
+var baseCreate = (function() {
+  function object() {}
+  return function(proto) {
+    if (!isObject(proto)) {
+      return {};
+    }
+    if (objectCreate) {
+      return objectCreate(proto);
+    }
+    object.prototype = proto;
+    var result = new object;
+    object.prototype = undefined;
+    return result;
+  };
+}());
 
-module.exports = stackGet;
+module.exports = baseCreate;
 
 
 /***/ }),
-/* 353 */
-/***/ (function(module, exports) {
+/* 475 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsMap = __webpack_require__(476),
+    baseUnary = __webpack_require__(331),
+    nodeUtil = __webpack_require__(332);
+
+/* Node.js helper references. */
+var nodeIsMap = nodeUtil && nodeUtil.isMap;
 
 /**
- * Checks if a stack value for `key` exists.
+ * Checks if `value` is classified as a `Map` object.
  *
- * @private
- * @name has
- * @memberOf Stack
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ * @static
+ * @memberOf _
+ * @since 4.3.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a map, else `false`.
+ * @example
+ *
+ * _.isMap(new Map);
+ * // => true
+ *
+ * _.isMap(new WeakMap);
+ * // => false
  */
-function stackHas(key) {
-  return this.__data__.has(key);
-}
+var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
 
-module.exports = stackHas;
+module.exports = isMap;
 
 
 /***/ }),
-/* 354 */
+/* 476 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var ListCache = __webpack_require__(342),
-    Map = __webpack_require__(355),
-    MapCache = __webpack_require__(356);
+var getTag = __webpack_require__(390),
+    isObjectLike = __webpack_require__(323);
 
-/** Used as the size to enable large array optimizations. */
-var LARGE_ARRAY_SIZE = 200;
+/** `Object#toString` result references. */
+var mapTag = '[object Map]';
 
 /**
- * Sets the stack `key` to `value`.
+ * The base implementation of `_.isMap` without Node.js optimizations.
  *
  * @private
- * @name set
- * @memberOf Stack
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the stack cache instance.
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a map, else `false`.
  */
-function stackSet(key, value) {
-  var data = this.__data__;
-  if (data instanceof ListCache) {
-    var pairs = data.__data__;
-    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
-      pairs.push([key, value]);
-      this.size = ++data.size;
-      return this;
-    }
-    data = this.__data__ = new MapCache(pairs);
-  }
-  data.set(key, value);
-  this.size = data.size;
-  return this;
+function baseIsMap(value) {
+  return isObjectLike(value) && getTag(value) == mapTag;
 }
 
-module.exports = stackSet;
+module.exports = baseIsMap;
 
 
 /***/ }),
-/* 355 */
+/* 477 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var getNative = __webpack_require__(301),
-    root = __webpack_require__(306);
-
-/* Built-in method references that are verified to be native. */
-var Map = getNative(root, 'Map');
-
-module.exports = Map;
-
-
-/***/ }),
-/* 356 */
-/***/ (function(module, exports, __webpack_require__) {
+var baseIsSet = __webpack_require__(478),
+    baseUnary = __webpack_require__(331),
+    nodeUtil = __webpack_require__(332);
 
-var mapCacheClear = __webpack_require__(357),
-    mapCacheDelete = __webpack_require__(365),
-    mapCacheGet = __webpack_require__(368),
-    mapCacheHas = __webpack_require__(369),
-    mapCacheSet = __webpack_require__(370);
+/* Node.js helper references. */
+var nodeIsSet = nodeUtil && nodeUtil.isSet;
 
 /**
- * Creates a map cache object to store key-value pairs.
+ * Checks if `value` is classified as a `Set` object.
  *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
+ * @static
+ * @memberOf _
+ * @since 4.3.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a set, else `false`.
+ * @example
+ *
+ * _.isSet(new Set);
+ * // => true
+ *
+ * _.isSet(new WeakSet);
+ * // => false
  */
-function MapCache(entries) {
-  var index = -1,
-      length = entries == null ? 0 : entries.length;
-
-  this.clear();
-  while (++index < length) {
-    var entry = entries[index];
-    this.set(entry[0], entry[1]);
-  }
-}
-
-// Add methods to `MapCache`.
-MapCache.prototype.clear = mapCacheClear;
-MapCache.prototype['delete'] = mapCacheDelete;
-MapCache.prototype.get = mapCacheGet;
-MapCache.prototype.has = mapCacheHas;
-MapCache.prototype.set = mapCacheSet;
+var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
 
-module.exports = MapCache;
+module.exports = isSet;
 
 
 /***/ }),
-/* 357 */
+/* 478 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Hash = __webpack_require__(358),
-    ListCache = __webpack_require__(342),
-    Map = __webpack_require__(355);
+var getTag = __webpack_require__(390),
+    isObjectLike = __webpack_require__(323);
+
+/** `Object#toString` result references. */
+var setTag = '[object Set]';
 
 /**
- * Removes all key-value entries from the map.
+ * The base implementation of `_.isSet` without Node.js optimizations.
  *
  * @private
- * @name clear
- * @memberOf MapCache
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a set, else `false`.
  */
-function mapCacheClear() {
-  this.size = 0;
-  this.__data__ = {
-    'hash': new Hash,
-    'map': new (Map || ListCache),
-    'string': new Hash
-  };
+function baseIsSet(value) {
+  return isObjectLike(value) && getTag(value) == setTag;
 }
 
-module.exports = mapCacheClear;
+module.exports = baseIsSet;
 
 
 /***/ }),
-/* 358 */
+/* 479 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var hashClear = __webpack_require__(359),
-    hashDelete = __webpack_require__(361),
-    hashGet = __webpack_require__(362),
-    hashHas = __webpack_require__(363),
-    hashSet = __webpack_require__(364);
+"use strict";
 
-/**
- * Creates a hash object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function Hash(entries) {
-  var index = -1,
-      length = entries == null ? 0 : entries.length;
 
-  this.clear();
-  while (++index < length) {
-    var entry = entries[index];
-    this.set(entry[0], entry[1]);
-  }
-}
+var _interopRequireWildcard = __webpack_require__(277);
 
-// Add methods to `Hash`.
-Hash.prototype.clear = hashClear;
-Hash.prototype['delete'] = hashDelete;
-Hash.prototype.get = hashGet;
-Hash.prototype.has = hashHas;
-Hash.prototype.set = hashSet;
+var _interopRequireDefault = __webpack_require__(1);
 
-module.exports = Hash;
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.normalizeApp = exports.APPS_DOCTYPE = void 0;
 
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-/***/ }),
-/* 359 */
-/***/ (function(module, exports, __webpack_require__) {
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-var nativeCreate = __webpack_require__(360);
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-/**
- * Removes all key-value entries from the hash.
- *
- * @private
- * @name clear
- * @memberOf Hash
- */
-function hashClear() {
-  this.__data__ = nativeCreate ? nativeCreate(null) : {};
-  this.size = 0;
-}
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-module.exports = hashClear;
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
-/***/ }),
-/* 360 */
-/***/ (function(module, exports, __webpack_require__) {
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
-var getNative = __webpack_require__(301);
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-/* Built-in method references that are verified to be native. */
-var nativeCreate = getNative(Object, 'create');
+var _get3 = _interopRequireDefault(__webpack_require__(399));
 
-module.exports = nativeCreate;
+var _registry = __webpack_require__(485);
 
+var _Collection = _interopRequireDefault(__webpack_require__(489));
 
-/***/ }),
-/* 361 */
-/***/ (function(module, exports) {
+var _DocumentCollection2 = _interopRequireWildcard(__webpack_require__(491));
 
-/**
- * Removes `key` and its value from the hash.
- *
- * @private
- * @name delete
- * @memberOf Hash
- * @param {Object} hash The hash to modify.
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function hashDelete(key) {
-  var result = this.has(key) && delete this.__data__[key];
-  this.size -= result ? 1 : 0;
-  return result;
-}
+var _errors = __webpack_require__(582);
 
-module.exports = hashDelete;
+var _logger = _interopRequireDefault(__webpack_require__(587));
 
+function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
 
-/***/ }),
-/* 362 */
-/***/ (function(module, exports, __webpack_require__) {
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
 
-var nativeCreate = __webpack_require__(360);
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
 
-/** Used to stand-in for `undefined` hash values. */
-var HASH_UNDEFINED = '__lodash_hash_undefined__';
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+var APPS_DOCTYPE = 'io.cozy.apps';
+exports.APPS_DOCTYPE = APPS_DOCTYPE;
+
+var normalizeApp = function normalizeApp(app, doctype) {
+  return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, app.attributes), app), (0, _DocumentCollection2.normalizeDoc)(app, doctype)), {}, {
+    id: app.id // ignores any 'id' attribute in the manifest
 
+  });
+};
 /**
- * Gets the hash value for `key`.
- *
- * @private
- * @name get
- * @memberOf Hash
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
+ * Extends `DocumentCollection` API along with specific methods for `io.cozy.apps`.
  */
-function hashGet(key) {
-  var data = this.__data__;
-  if (nativeCreate) {
-    var result = data[key];
-    return result === HASH_UNDEFINED ? undefined : result;
-  }
-  return hasOwnProperty.call(data, key) ? data[key] : undefined;
-}
 
-module.exports = hashGet;
 
+exports.normalizeApp = normalizeApp;
 
-/***/ }),
-/* 363 */
-/***/ (function(module, exports, __webpack_require__) {
+var AppCollection = /*#__PURE__*/function (_DocumentCollection) {
+  (0, _inherits2.default)(AppCollection, _DocumentCollection);
 
-var nativeCreate = __webpack_require__(360);
+  var _super = _createSuper(AppCollection);
 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+  function AppCollection(stackClient) {
+    var _this;
 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
+    (0, _classCallCheck2.default)(this, AppCollection);
+    _this = _super.call(this, APPS_DOCTYPE, stackClient);
+    _this.endpoint = '/apps/';
+    return _this;
+  }
 
-/**
- * Checks if a hash value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Hash
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function hashHas(key) {
-  var data = this.__data__;
-  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
-}
+  (0, _createClass2.default)(AppCollection, [{
+    key: "get",
+    value: function () {
+      var _get2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(idArg, query) {
+        var _this2 = this;
 
-module.exports = hashHas;
+        var id, sources, dataFetchers, _iterator, _step, source, res, data;
 
+        return _regenerator.default.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                if (idArg.indexOf('/') > -1) {
+                  id = idArg.split('/')[1];
+                } else {
+                  _logger.default.warn("Deprecated: in next versions of cozy-client, it will not be possible to query apps/konnectors only with id, please use the form ".concat(this.doctype, "/").concat(idArg, "\n\n- Q('io.cozy.apps').getById('banks')\n+ Q('io.cozy.apps').getById('io.cozy.apps/banks')"));
 
-/***/ }),
-/* 364 */
-/***/ (function(module, exports, __webpack_require__) {
+                  id = idArg;
+                }
 
-var nativeCreate = __webpack_require__(360);
+                if (!(query && query.sources && (!Array.isArray(query.sources) || query.sources.length === 0))) {
+                  _context.next = 3;
+                  break;
+                }
 
-/** Used to stand-in for `undefined` hash values. */
-var HASH_UNDEFINED = '__lodash_hash_undefined__';
+                throw new Error('Invalid "sources" attribute passed in query, please use an array with at least one element.');
 
-/**
- * Sets the hash `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Hash
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the hash instance.
- */
-function hashSet(key, value) {
-  var data = this.__data__;
-  this.size += this.has(key) ? 0 : 1;
-  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
-  return this;
-}
+              case 3:
+                sources = (0, _get3.default)(query, 'sources', ['stack']);
+                dataFetchers = {
+                  stack: function stack() {
+                    return _Collection.default.get(_this2.stackClient, "".concat(_this2.endpoint).concat(encodeURIComponent(id)), {
+                      normalize: function normalize(data) {
+                        return normalizeApp(data, _this2.doctype);
+                      }
+                    });
+                  },
+                  registry: function registry() {
+                    return _this2.stackClient.fetchJSON('GET', _registry.registryEndpoint + id);
+                  }
+                };
+                _iterator = _createForOfIteratorHelper(sources);
+                _context.prev = 6;
 
-module.exports = hashSet;
+                _iterator.s();
 
+              case 8:
+                if ((_step = _iterator.n()).done) {
+                  _context.next = 27;
+                  break;
+                }
 
-/***/ }),
-/* 365 */
-/***/ (function(module, exports, __webpack_require__) {
+                source = _step.value;
+                _context.prev = 10;
+                _context.next = 13;
+                return dataFetchers[source]();
 
-var getMapData = __webpack_require__(366);
+              case 13:
+                res = _context.sent;
 
-/**
- * Removes `key` and its value from the map.
- *
- * @private
- * @name delete
- * @memberOf MapCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function mapCacheDelete(key) {
-  var result = getMapData(this, key)['delete'](key);
-  this.size -= result ? 1 : 0;
-  return result;
-}
+                if (!(source !== 'registry')) {
+                  _context.next = 16;
+                  break;
+                }
 
-module.exports = mapCacheDelete;
+                return _context.abrupt("return", res);
 
+              case 16:
+                _logger.default.warn("The use of source registry is deprecated since it can polute the io.cozy.apps slice. For exemple, if we request data from the registry, than the app will be present in the io.cozy.apps slice and then the isInstalled() will return true.\n\n            Use Q('io.cozy.apps_registry) instead");
 
-/***/ }),
-/* 366 */
-/***/ (function(module, exports, __webpack_require__) {
+                data = (0, _registry.transformRegistryFormatToStackFormat)(res);
+                return _context.abrupt("return", {
+                  data: normalizeApp(data, this.doctype)
+                });
 
-var isKeyable = __webpack_require__(367);
+              case 21:
+                _context.prev = 21;
+                _context.t0 = _context["catch"](10);
 
-/**
- * Gets the data for `map`.
- *
- * @private
- * @param {Object} map The map to query.
- * @param {string} key The reference key.
- * @returns {*} Returns the map data.
- */
-function getMapData(map, key) {
-  var data = map.__data__;
-  return isKeyable(key)
-    ? data[typeof key == 'string' ? 'string' : 'hash']
-    : data.map;
-}
+                if (!(source === sources[sources.length - 1])) {
+                  _context.next = 25;
+                  break;
+                }
 
-module.exports = getMapData;
+                throw _context.t0;
 
+              case 25:
+                _context.next = 8;
+                break;
 
-/***/ }),
-/* 367 */
-/***/ (function(module, exports) {
+              case 27:
+                _context.next = 32;
+                break;
 
-/**
- * Checks if `value` is suitable for use as unique object key.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
- */
-function isKeyable(value) {
-  var type = typeof value;
-  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
-    ? (value !== '__proto__')
-    : (value === null);
-}
+              case 29:
+                _context.prev = 29;
+                _context.t1 = _context["catch"](6);
 
-module.exports = isKeyable;
+                _iterator.e(_context.t1);
 
+              case 32:
+                _context.prev = 32;
 
-/***/ }),
-/* 368 */
-/***/ (function(module, exports, __webpack_require__) {
+                _iterator.f();
 
-var getMapData = __webpack_require__(366);
+                return _context.finish(32);
 
-/**
- * Gets the map value for `key`.
- *
- * @private
- * @name get
- * @memberOf MapCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function mapCacheGet(key) {
-  return getMapData(this, key).get(key);
-}
+              case 35:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this, [[6, 29, 32, 35], [10, 21]]);
+      }));
 
-module.exports = mapCacheGet;
+      function get(_x, _x2) {
+        return _get2.apply(this, arguments);
+      }
 
+      return get;
+    }()
+    /**
+     * Lists all apps, without filters.
+     *
+     * The returned documents are not paginated by the stack.
+     *
+     * @returns {{data, meta, skip, next}} The JSON API conformant response.
+     * @throws {FetchError}
+     */
 
-/***/ }),
-/* 369 */
-/***/ (function(module, exports, __webpack_require__) {
+  }, {
+    key: "all",
+    value: function () {
+      var _all = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
+        var _this3 = this;
 
-var getMapData = __webpack_require__(366);
+        var resp;
+        return _regenerator.default.wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                _context2.next = 2;
+                return this.stackClient.fetchJSON('GET', this.endpoint);
 
-/**
- * Checks if a map value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf MapCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function mapCacheHas(key) {
-  return getMapData(this, key).has(key);
-}
+              case 2:
+                resp = _context2.sent;
+                return _context2.abrupt("return", {
+                  data: resp.data.map(function (app) {
+                    return normalizeApp(app, _this3.doctype);
+                  }),
+                  meta: {
+                    count: resp.meta.count
+                  },
+                  skip: 0,
+                  next: false
+                });
 
-module.exports = mapCacheHas;
+              case 4:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2, this);
+      }));
 
+      function all() {
+        return _all.apply(this, arguments);
+      }
 
-/***/ }),
-/* 370 */
-/***/ (function(module, exports, __webpack_require__) {
+      return all;
+    }()
+  }, {
+    key: "create",
+    value: function () {
+      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
+        return _regenerator.default.wrap(function _callee3$(_context3) {
+          while (1) {
+            switch (_context3.prev = _context3.next) {
+              case 0:
+                throw new Error('create() method is not available for applications');
 
-var getMapData = __webpack_require__(366);
+              case 1:
+              case "end":
+                return _context3.stop();
+            }
+          }
+        }, _callee3);
+      }));
 
-/**
- * Sets the map `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf MapCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the map cache instance.
- */
-function mapCacheSet(key, value) {
-  var data = getMapData(this, key),
-      size = data.size;
+      function create() {
+        return _create.apply(this, arguments);
+      }
 
-  data.set(key, value);
-  this.size += data.size == size ? 0 : 1;
-  return this;
-}
+      return create;
+    }()
+  }, {
+    key: "update",
+    value: function () {
+      var _update = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
+        return _regenerator.default.wrap(function _callee4$(_context4) {
+          while (1) {
+            switch (_context4.prev = _context4.next) {
+              case 0:
+                throw new Error('update() method is not available for applications');
 
-module.exports = mapCacheSet;
+              case 1:
+              case "end":
+                return _context4.stop();
+            }
+          }
+        }, _callee4);
+      }));
 
+      function update() {
+        return _update.apply(this, arguments);
+      }
 
-/***/ }),
-/* 371 */
-/***/ (function(module, exports, __webpack_require__) {
+      return update;
+    }()
+  }, {
+    key: "destroy",
+    value: function () {
+      var _destroy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
+        return _regenerator.default.wrap(function _callee5$(_context5) {
+          while (1) {
+            switch (_context5.prev = _context5.next) {
+              case 0:
+                throw new Error('destroy() method is not available for applications');
 
-var baseIsEqualDeep = __webpack_require__(372),
-    isObjectLike = __webpack_require__(323);
+              case 1:
+              case "end":
+                return _context5.stop();
+            }
+          }
+        }, _callee5);
+      }));
 
-/**
- * The base implementation of `_.isEqual` which supports partial comparisons
- * and tracks traversed objects.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @param {boolean} bitmask The bitmask flags.
- *  1 - Unordered comparison
- *  2 - Partial comparison
- * @param {Function} [customizer] The function to customize comparisons.
- * @param {Object} [stack] Tracks traversed `value` and `other` objects.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- */
-function baseIsEqual(value, other, bitmask, customizer, stack) {
-  if (value === other) {
-    return true;
-  }
-  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
-    return value !== value && other !== other;
-  }
-  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
-}
+      function destroy() {
+        return _destroy.apply(this, arguments);
+      }
 
-module.exports = baseIsEqual;
+      return destroy;
+    }()
+  }]);
+  return AppCollection;
+}(_DocumentCollection2.default);
 
+AppCollection.normalizeDoctype = _DocumentCollection2.default.normalizeDoctypeJsonApi;
+var _default = AppCollection;
+exports.default = _default;
 
 /***/ }),
-/* 372 */
+/* 480 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Stack = __webpack_require__(341),
-    equalArrays = __webpack_require__(373),
-    equalByTag = __webpack_require__(379),
-    equalObjects = __webpack_require__(383),
-    getTag = __webpack_require__(390),
-    isArray = __webpack_require__(324),
-    isBuffer = __webpack_require__(325),
-    isTypedArray = __webpack_require__(328);
+var setPrototypeOf = __webpack_require__(481);
 
-/** Used to compose bitmasks for value comparisons. */
-var COMPARE_PARTIAL_FLAG = 1;
+function _inherits(subClass, superClass) {
+  if (typeof superClass !== "function" && superClass !== null) {
+    throw new TypeError("Super expression must either be null or a function");
+  }
 
-/** `Object#toString` result references. */
-var argsTag = '[object Arguments]',
-    arrayTag = '[object Array]',
-    objectTag = '[object Object]';
+  subClass.prototype = Object.create(superClass && superClass.prototype, {
+    constructor: {
+      value: subClass,
+      writable: true,
+      configurable: true
+    }
+  });
+  Object.defineProperty(subClass, "prototype", {
+    writable: false
+  });
+  if (superClass) setPrototypeOf(subClass, superClass);
+}
 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
+/***/ }),
+/* 481 */
+/***/ (function(module, exports) {
 
-/**
- * A specialized version of `baseIsEqual` for arrays and objects which performs
- * deep comparisons and tracks traversed objects enabling objects with circular
- * references to be compared.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} [stack] Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
-function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
-  var objIsArr = isArray(object),
-      othIsArr = isArray(other),
-      objTag = objIsArr ? arrayTag : getTag(object),
-      othTag = othIsArr ? arrayTag : getTag(other);
+function _setPrototypeOf(o, p) {
+  module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
+    o.__proto__ = p;
+    return o;
+  }, module.exports.__esModule = true, module.exports["default"] = module.exports;
+  return _setPrototypeOf(o, p);
+}
 
-  objTag = objTag == argsTag ? objectTag : objTag;
-  othTag = othTag == argsTag ? objectTag : othTag;
+module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-  var objIsObj = objTag == objectTag,
-      othIsObj = othTag == objectTag,
-      isSameTag = objTag == othTag;
+/***/ }),
+/* 482 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  if (isSameTag && isBuffer(object)) {
-    if (!isBuffer(other)) {
-      return false;
-    }
-    objIsArr = true;
-    objIsObj = false;
-  }
-  if (isSameTag && !objIsObj) {
-    stack || (stack = new Stack);
-    return (objIsArr || isTypedArray(object))
-      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
-      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
-  }
-  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
-    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
-        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
+var _typeof = __webpack_require__(278)["default"];
 
-    if (objIsWrapped || othIsWrapped) {
-      var objUnwrapped = objIsWrapped ? object.value() : object,
-          othUnwrapped = othIsWrapped ? other.value() : other;
+var assertThisInitialized = __webpack_require__(483);
 
-      stack || (stack = new Stack);
-      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
-    }
-  }
-  if (!isSameTag) {
-    return false;
+function _possibleConstructorReturn(self, call) {
+  if (call && (_typeof(call) === "object" || typeof call === "function")) {
+    return call;
+  } else if (call !== void 0) {
+    throw new TypeError("Derived constructors may only return object or undefined");
   }
-  stack || (stack = new Stack);
-  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
-}
 
-module.exports = baseIsEqualDeep;
+  return assertThisInitialized(self);
+}
 
+module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
 /***/ }),
-/* 373 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var SetCache = __webpack_require__(374),
-    arraySome = __webpack_require__(377),
-    cacheHas = __webpack_require__(378);
-
-/** Used to compose bitmasks for value comparisons. */
-var COMPARE_PARTIAL_FLAG = 1,
-    COMPARE_UNORDERED_FLAG = 2;
-
-/**
- * A specialized version of `baseIsEqualDeep` for arrays with support for
- * partial deep comparisons.
- *
- * @private
- * @param {Array} array The array to compare.
- * @param {Array} other The other array to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `array` and `other` objects.
- * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
- */
-function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
-  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
-      arrLength = array.length,
-      othLength = other.length;
+/* 483 */
+/***/ (function(module, exports) {
 
-  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
-    return false;
-  }
-  // Check that cyclic values are equal.
-  var arrStacked = stack.get(array);
-  var othStacked = stack.get(other);
-  if (arrStacked && othStacked) {
-    return arrStacked == other && othStacked == array;
+function _assertThisInitialized(self) {
+  if (self === void 0) {
+    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
   }
-  var index = -1,
-      result = true,
-      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
 
-  stack.set(array, other);
-  stack.set(other, array);
+  return self;
+}
 
-  // Ignore non-index properties.
-  while (++index < arrLength) {
-    var arrValue = array[index],
-        othValue = other[index];
+module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-    if (customizer) {
-      var compared = isPartial
-        ? customizer(othValue, arrValue, index, other, array, stack)
-        : customizer(arrValue, othValue, index, array, other, stack);
-    }
-    if (compared !== undefined) {
-      if (compared) {
-        continue;
-      }
-      result = false;
-      break;
-    }
-    // Recursively compare arrays (susceptible to call stack limits).
-    if (seen) {
-      if (!arraySome(other, function(othValue, othIndex) {
-            if (!cacheHas(seen, othIndex) &&
-                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
-              return seen.push(othIndex);
-            }
-          })) {
-        result = false;
-        break;
-      }
-    } else if (!(
-          arrValue === othValue ||
-            equalFunc(arrValue, othValue, bitmask, customizer, stack)
-        )) {
-      result = false;
-      break;
-    }
-  }
-  stack['delete'](array);
-  stack['delete'](other);
-  return result;
-}
+/***/ }),
+/* 484 */
+/***/ (function(module, exports) {
 
-module.exports = equalArrays;
+function _getPrototypeOf(o) {
+  module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {
+    return o.__proto__ || Object.getPrototypeOf(o);
+  }, module.exports.__esModule = true, module.exports["default"] = module.exports;
+  return _getPrototypeOf(o);
+}
 
+module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
 /***/ }),
-/* 374 */
+/* 485 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var MapCache = __webpack_require__(356),
-    setCacheAdd = __webpack_require__(375),
-    setCacheHas = __webpack_require__(376);
-
-/**
- *
- * Creates an array cache object to store unique values.
- *
- * @private
- * @constructor
- * @param {Array} [values] The values to cache.
- */
-function SetCache(values) {
-  var index = -1,
-      length = values == null ? 0 : values.length;
+"use strict";
 
-  this.__data__ = new MapCache;
-  while (++index < length) {
-    this.add(values[index]);
-  }
-}
 
-// Add methods to `SetCache`.
-SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
-SetCache.prototype.has = setCacheHas;
+var _interopRequireDefault = __webpack_require__(1);
 
-module.exports = SetCache;
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.registryEndpoint = exports.transformRegistryFormatToStackFormat = void 0;
 
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-/***/ }),
-/* 375 */
-/***/ (function(module, exports) {
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-/** Used to stand-in for `undefined` hash values. */
-var HASH_UNDEFINED = '__lodash_hash_undefined__';
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-/**
- * Adds `value` to the array cache.
- *
- * @private
- * @name add
- * @memberOf SetCache
- * @alias push
- * @param {*} value The value to cache.
- * @returns {Object} Returns the cache instance.
- */
-function setCacheAdd(value) {
-  this.__data__.set(value, HASH_UNDEFINED);
-  return this;
-}
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-module.exports = setCacheAdd;
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
+var _get = _interopRequireDefault(__webpack_require__(399));
 
-/***/ }),
-/* 376 */
-/***/ (function(module, exports) {
+__webpack_require__(486);
 
-/**
- * Checks if `value` is in the array cache.
- *
- * @private
- * @name has
- * @memberOf SetCache
- * @param {*} value The value to search for.
- * @returns {number} Returns `true` if `value` is found, else `false`.
- */
-function setCacheHas(value) {
-  return this.__data__.has(value);
-}
+var _terms = _interopRequireDefault(__webpack_require__(487));
 
-module.exports = setCacheHas;
+var _constants = __webpack_require__(488);
 
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-/***/ }),
-/* 377 */
-/***/ (function(module, exports) {
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-/**
- * A specialized version of `_.some` for arrays without support for iteratee
- * shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {boolean} Returns `true` if any element passes the predicate check,
- *  else `false`.
- */
-function arraySome(array, predicate) {
-  var index = -1,
-      length = array == null ? 0 : array.length;
+var transformRegistryFormatToStackFormat = function transformRegistryFormatToStackFormat(doc) {
+  return _objectSpread({
+    id: (0, _get.default)(doc, 'latest_version.manifest.source'),
+    attributes: (0, _get.default)(doc, 'latest_version.manifest')
+  }, doc);
+};
 
-  while (++index < length) {
-    if (predicate(array[index], index, array)) {
-      return true;
-    }
-  }
-  return false;
-}
+exports.transformRegistryFormatToStackFormat = transformRegistryFormatToStackFormat;
+var registryEndpoint = '/registry/';
+exports.registryEndpoint = registryEndpoint;
 
-module.exports = arraySome;
+var queryPartFromOptions = function queryPartFromOptions(options) {
+  var query = new URLSearchParams(options).toString();
+  return query ? "?".concat(query) : '';
+};
 
+var getBaseRoute = function getBaseRoute(app) {
+  var type = app.type; // TODO node is an historic type, it should be `konnector`, check with the back
 
-/***/ }),
-/* 378 */
-/***/ (function(module, exports) {
+  var route = type === _constants.APP_TYPE.KONNECTOR || type === 'node' ? 'konnectors' : 'apps';
+  return "/".concat(route);
+};
+/**
+ * @typedef {object} RegistryApp
+ * @property {string} slug
+ * @property {object} terms
+ * @property {boolean} installed
+ * @property {string} type
+ */
 
 /**
- * Checks if a `cache` value for `key` exists.
- *
- * @private
- * @param {Object} cache The cache to query.
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ * @typedef {"dev"|"beta"|"stable"} RegistryAppChannel
  */
-function cacheHas(cache, key) {
-  return cache.has(key);
-}
 
-module.exports = cacheHas;
 
+var Registry = /*#__PURE__*/function () {
+  function Registry(options) {
+    (0, _classCallCheck2.default)(this, Registry);
 
-/***/ }),
-/* 379 */
-/***/ (function(module, exports, __webpack_require__) {
+    if (!options.client) {
+      throw new Error('Need to pass a client to instantiate a Registry API.');
+    }
 
-var Symbol = __webpack_require__(305),
-    Uint8Array = __webpack_require__(380),
-    eq = __webpack_require__(346),
-    equalArrays = __webpack_require__(373),
-    mapToArray = __webpack_require__(381),
-    setToArray = __webpack_require__(382);
+    this.client = options.client;
+  }
+  /**
+   * Installs or updates an app from a source.
+   *
+   * Accepts the terms if the app has them.
+   *
+   * @param  {RegistryApp} app - App to be installed
+   * @param  {string} source - String (ex: registry://drive/stable)
+   * @returns {Promise}
+   */
 
-/** Used to compose bitmasks for value comparisons. */
-var COMPARE_PARTIAL_FLAG = 1,
-    COMPARE_UNORDERED_FLAG = 2;
 
-/** `Object#toString` result references. */
-var boolTag = '[object Boolean]',
-    dateTag = '[object Date]',
-    errorTag = '[object Error]',
-    mapTag = '[object Map]',
-    numberTag = '[object Number]',
-    regexpTag = '[object RegExp]',
-    setTag = '[object Set]',
-    stringTag = '[object String]',
-    symbolTag = '[object Symbol]';
+  (0, _createClass2.default)(Registry, [{
+    key: "installApp",
+    value: function () {
+      var _installApp = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(app, source) {
+        var slug, terms, searchParams, isUpdate, querypart, verb, baseRoute;
+        return _regenerator.default.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                slug = app.slug, terms = app.terms;
+                searchParams = {};
+                isUpdate = app.installed;
+                if (isUpdate) searchParams.PermissionsAcked = isUpdate;
+                if (source) searchParams.Source = source;
+                querypart = queryPartFromOptions(searchParams);
 
-var arrayBufferTag = '[object ArrayBuffer]',
-    dataViewTag = '[object DataView]';
+                if (!terms) {
+                  _context.next = 9;
+                  break;
+                }
 
-/** Used to convert symbols to primitives and strings. */
-var symbolProto = Symbol ? Symbol.prototype : undefined,
-    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
+                _context.next = 9;
+                return _terms.default.save(this.client, terms);
 
-/**
- * A specialized version of `baseIsEqualDeep` for comparing objects of
- * the same `toStringTag`.
- *
- * **Note:** This function only supports comparing values with tags of
- * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {string} tag The `toStringTag` of the objects to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
-function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
-  switch (tag) {
-    case dataViewTag:
-      if ((object.byteLength != other.byteLength) ||
-          (object.byteOffset != other.byteOffset)) {
-        return false;
-      }
-      object = object.buffer;
-      other = other.buffer;
+              case 9:
+                verb = app.installed ? 'PUT' : 'POST';
+                baseRoute = getBaseRoute(app);
+                return _context.abrupt("return", this.client.stackClient.fetchJSON(verb, "".concat(baseRoute, "/").concat(slug).concat(querypart)));
 
-    case arrayBufferTag:
-      if ((object.byteLength != other.byteLength) ||
-          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
-        return false;
+              case 12:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this);
+      }));
+
+      function installApp(_x, _x2) {
+        return _installApp.apply(this, arguments);
       }
-      return true;
 
-    case boolTag:
-    case dateTag:
-    case numberTag:
-      // Coerce booleans to `1` or `0` and dates to milliseconds.
-      // Invalid dates are coerced to `NaN`.
-      return eq(+object, +other);
+      return installApp;
+    }()
+    /**
+     * Uninstalls an app.
+     *
+     * @param  {RegistryApp} app - App to be installed
+     * @returns {Promise}
+     */
 
-    case errorTag:
-      return object.name == other.name && object.message == other.message;
+  }, {
+    key: "uninstallApp",
+    value: function () {
+      var _uninstallApp = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(app) {
+        var slug, baseRoute;
+        return _regenerator.default.wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                slug = app.slug;
+                baseRoute = getBaseRoute(app);
+                return _context2.abrupt("return", this.client.stackClient.fetchJSON('DELETE', "".concat(baseRoute, "/").concat(slug)));
 
-    case regexpTag:
-    case stringTag:
-      // Coerce regexes to strings and treat strings, primitives and objects,
-      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
-      // for more details.
-      return object == (other + '');
+              case 3:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2, this);
+      }));
 
-    case mapTag:
-      var convert = mapToArray;
+      function uninstallApp(_x3) {
+        return _uninstallApp.apply(this, arguments);
+      }
 
-    case setTag:
-      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
-      convert || (convert = setToArray);
+      return uninstallApp;
+    }()
+    /**
+     * Fetch at most 200 apps from the channel
+     *
+     * @param  {object} params - Fetching parameters
+     * @param  {string} params.type - "webapp" or "konnector"
+     * @param  {RegistryAppChannel} params.channel - The channel of the apps to fetch
+     * @param  {string} params.limit - maximum number of fetched apps - defaults to 200
+     *
+     * @returns {Promise<Array<RegistryApp>>}
+     */
 
-      if (object.size != other.size && !isPartial) {
-        return false;
-      }
-      // Assume cyclic values are equal.
-      var stacked = stack.get(object);
-      if (stacked) {
-        return stacked == other;
-      }
-      bitmask |= COMPARE_UNORDERED_FLAG;
+  }, {
+    key: "fetchApps",
+    value: function () {
+      var _fetchApps = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(params) {
+        var channel, type, _params$limit, limit, searchParams, querypart, _yield$this$client$st, apps;
 
-      // Recursively compare objects (susceptible to call stack limits).
-      stack.set(object, other);
-      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
-      stack['delete'](object);
-      return result;
+        return _regenerator.default.wrap(function _callee3$(_context3) {
+          while (1) {
+            switch (_context3.prev = _context3.next) {
+              case 0:
+                channel = params.channel, type = params.type, _params$limit = params.limit, limit = _params$limit === void 0 ? '200' : _params$limit;
+                searchParams = {
+                  limit: limit,
+                  versionsChannel: channel,
+                  latestChannelVersion: channel
+                };
+                querypart = new URLSearchParams(searchParams).toString();
 
-    case symbolTag:
-      if (symbolValueOf) {
-        return symbolValueOf.call(object) == symbolValueOf.call(other);
-      }
-  }
-  return false;
-}
+                if (type) {
+                  // Unfortunately, URLSearchParams encodes brackets so we have to do
+                  // the querypart handling manually
+                  querypart = querypart + "&filter[type]=".concat(type);
+                }
 
-module.exports = equalByTag;
+                _context3.next = 6;
+                return this.client.stackClient.fetchJSON('GET', "/registry?".concat(querypart));
 
+              case 6:
+                _yield$this$client$st = _context3.sent;
+                apps = _yield$this$client$st.data;
+                return _context3.abrupt("return", apps);
 
-/***/ }),
-/* 380 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 9:
+              case "end":
+                return _context3.stop();
+            }
+          }
+        }, _callee3, this);
+      }));
 
-var root = __webpack_require__(306);
+      function fetchApps(_x4) {
+        return _fetchApps.apply(this, arguments);
+      }
 
-/** Built-in value references. */
-var Uint8Array = root.Uint8Array;
+      return fetchApps;
+    }()
+    /**
+     * Fetch the list of apps that are in maintenance mode
+     *
+     * @returns {Promise<Array<RegistryApp>>}
+     */
 
-module.exports = Uint8Array;
+  }, {
+    key: "fetchAppsInMaintenance",
+    value: function fetchAppsInMaintenance() {
+      return this.client.stackClient.fetchJSON('GET', '/registry/maintenance');
+    }
+    /**
+     * Fetch the status of a single app on the registry
+     *
+     * @param  {string} slug - The slug of the app to fetch
+     *
+     * @returns {Promise<RegistryApp>}
+     */
 
+  }, {
+    key: "fetchApp",
+    value: function fetchApp(slug) {
+      return this.client.stackClient.fetchJSON('GET', "/registry/".concat(slug));
+    }
+    /**
+     * Fetch the latest version of an app for the given channel and slug
+     *
+     * @param  {object} params - Fetching parameters
+     * @param  {string} params.slug - The slug of the app to fetch
+     * @param  {RegistryAppChannel} params.channel - The channel of the app to fetch
+     * @param  {string} params.version - The version of the app to fetch. Can also be "latest"
+     *
+     * @returns {Promise<RegistryApp>}
+     */
 
-/***/ }),
-/* 381 */
-/***/ (function(module, exports) {
+  }, {
+    key: "fetchAppVersion",
+    value: function fetchAppVersion(params) {
+      if (!params.slug) {
+        throw new Error('Need to pass a slug to use fetchAppVersion');
+      }
 
-/**
- * Converts `map` to its key-value pairs.
- *
- * @private
- * @param {Object} map The map to convert.
- * @returns {Array} Returns the key-value pairs.
- */
-function mapToArray(map) {
-  var index = -1,
-      result = Array(map.size);
+      var slug = params.slug,
+          channel = params.channel,
+          version = params.version;
+      var finalChannel = !channel && (!version || version === 'latest') ? 'stable' : channel;
+      var url = "/registry/".concat(slug, "/");
 
-  map.forEach(function(value, key) {
-    result[++index] = [key, value];
-  });
-  return result;
-}
+      if (finalChannel) {
+        url += "".concat(finalChannel, "/").concat(version || 'latest');
+      } else {
+        url += "".concat(version);
+      }
 
-module.exports = mapToArray;
+      return this.client.stackClient.fetchJSON('GET', url);
+    }
+  }]);
+  return Registry;
+}();
 
+var _default = Registry;
+exports.default = _default;
 
 /***/ }),
-/* 382 */
+/* 486 */
 /***/ (function(module, exports) {
 
 /**
- * Converts `set` to an array of its values.
  *
- * @private
- * @param {Object} set The set to convert.
- * @returns {Array} Returns the values.
+ *
+ * @author Jerry Bendy <jerry@icewingcc.com>
+ * @licence MIT
+ *
  */
-function setToArray(set) {
-  var index = -1,
-      result = Array(set.size);
 
-  set.forEach(function(value) {
-    result[++index] = value;
-  });
-  return result;
-}
-
-module.exports = setToArray;
+(function(self) {
+    'use strict';
 
+    var nativeURLSearchParams = (function() {
+            // #41 Fix issue in RN
+            try {
+                if (self.URLSearchParams && (new self.URLSearchParams('foo=bar')).get('foo') === 'bar') {
+                    return self.URLSearchParams;
+                }
+            } catch (e) {}
+            return null;
+        })(),
+        isSupportObjectConstructor = nativeURLSearchParams && (new nativeURLSearchParams({a: 1})).toString() === 'a=1',
+        // There is a bug in safari 10.1 (and earlier) that incorrectly decodes `%2B` as an empty space and not a plus.
+        decodesPlusesCorrectly = nativeURLSearchParams && (new nativeURLSearchParams('s=%2B').get('s') === '+'),
+        __URLSearchParams__ = "__URLSearchParams__",
+        // Fix bug in Edge which cannot encode ' &' correctly
+        encodesAmpersandsCorrectly = nativeURLSearchParams ? (function() {
+            var ampersandTest = new nativeURLSearchParams();
+            ampersandTest.append('s', ' &');
+            return ampersandTest.toString() === 's=+%26';
+        })() : true,
+        prototype = URLSearchParamsPolyfill.prototype,
+        iterable = !!(self.Symbol && self.Symbol.iterator);
 
-/***/ }),
-/* 383 */
-/***/ (function(module, exports, __webpack_require__) {
+    if (nativeURLSearchParams && isSupportObjectConstructor && decodesPlusesCorrectly && encodesAmpersandsCorrectly) {
+        return;
+    }
 
-var getAllKeys = __webpack_require__(384);
 
-/** Used to compose bitmasks for value comparisons. */
-var COMPARE_PARTIAL_FLAG = 1;
+    /**
+     * Make a URLSearchParams instance
+     *
+     * @param {object|string|URLSearchParams} search
+     * @constructor
+     */
+    function URLSearchParamsPolyfill(search) {
+        search = search || "";
 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+        // support construct object with another URLSearchParams instance
+        if (search instanceof URLSearchParams || search instanceof URLSearchParamsPolyfill) {
+            search = search.toString();
+        }
+        this [__URLSearchParams__] = parseToDict(search);
+    }
 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
 
-/**
- * A specialized version of `baseIsEqualDeep` for objects with support for
- * partial deep comparisons.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
-function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
-  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
-      objProps = getAllKeys(object),
-      objLength = objProps.length,
-      othProps = getAllKeys(other),
-      othLength = othProps.length;
+    /**
+     * Appends a specified key/value pair as a new search parameter.
+     *
+     * @param {string} name
+     * @param {string} value
+     */
+    prototype.append = function(name, value) {
+        appendTo(this [__URLSearchParams__], name, value);
+    };
 
-  if (objLength != othLength && !isPartial) {
-    return false;
-  }
-  var index = objLength;
-  while (index--) {
-    var key = objProps[index];
-    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
-      return false;
-    }
-  }
-  // Check that cyclic values are equal.
-  var objStacked = stack.get(object);
-  var othStacked = stack.get(other);
-  if (objStacked && othStacked) {
-    return objStacked == other && othStacked == object;
-  }
-  var result = true;
-  stack.set(object, other);
-  stack.set(other, object);
+    /**
+     * Deletes the given search parameter, and its associated value,
+     * from the list of all search parameters.
+     *
+     * @param {string} name
+     */
+    prototype['delete'] = function(name) {
+        delete this [__URLSearchParams__] [name];
+    };
 
-  var skipCtor = isPartial;
-  while (++index < objLength) {
-    key = objProps[index];
-    var objValue = object[key],
-        othValue = other[key];
+    /**
+     * Returns the first value associated to the given search parameter.
+     *
+     * @param {string} name
+     * @returns {string|null}
+     */
+    prototype.get = function(name) {
+        var dict = this [__URLSearchParams__];
+        return this.has(name) ? dict[name][0] : null;
+    };
 
-    if (customizer) {
-      var compared = isPartial
-        ? customizer(othValue, objValue, key, other, object, stack)
-        : customizer(objValue, othValue, key, object, other, stack);
-    }
-    // Recursively compare objects (susceptible to call stack limits).
-    if (!(compared === undefined
-          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
-          : compared
-        )) {
-      result = false;
-      break;
-    }
-    skipCtor || (skipCtor = key == 'constructor');
-  }
-  if (result && !skipCtor) {
-    var objCtor = object.constructor,
-        othCtor = other.constructor;
-
-    // Non `Object` object instances with different constructors are not equal.
-    if (objCtor != othCtor &&
-        ('constructor' in object && 'constructor' in other) &&
-        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
-          typeof othCtor == 'function' && othCtor instanceof othCtor)) {
-      result = false;
-    }
-  }
-  stack['delete'](object);
-  stack['delete'](other);
-  return result;
-}
+    /**
+     * Returns all the values association with a given search parameter.
+     *
+     * @param {string} name
+     * @returns {Array}
+     */
+    prototype.getAll = function(name) {
+        var dict = this [__URLSearchParams__];
+        return this.has(name) ? dict [name].slice(0) : [];
+    };
 
-module.exports = equalObjects;
+    /**
+     * Returns a Boolean indicating if such a search parameter exists.
+     *
+     * @param {string} name
+     * @returns {boolean}
+     */
+    prototype.has = function(name) {
+        return hasOwnProperty(this [__URLSearchParams__], name);
+    };
 
+    /**
+     * Sets the value associated to a given search parameter to
+     * the given value. If there were several values, delete the
+     * others.
+     *
+     * @param {string} name
+     * @param {string} value
+     */
+    prototype.set = function set(name, value) {
+        this [__URLSearchParams__][name] = ['' + value];
+    };
 
-/***/ }),
-/* 384 */
-/***/ (function(module, exports, __webpack_require__) {
+    /**
+     * Returns a string containg a query string suitable for use in a URL.
+     *
+     * @returns {string}
+     */
+    prototype.toString = function() {
+        var dict = this[__URLSearchParams__], query = [], i, key, name, value;
+        for (key in dict) {
+            name = encode(key);
+            for (i = 0, value = dict[key]; i < value.length; i++) {
+                query.push(name + '=' + encode(value[i]));
+            }
+        }
+        return query.join('&');
+    };
 
-var baseGetAllKeys = __webpack_require__(385),
-    getSymbols = __webpack_require__(387),
-    keys = __webpack_require__(318);
+    // There is a bug in Safari 10.1 and `Proxy`ing it is not enough.
+    var forSureUsePolyfill = !decodesPlusesCorrectly;
+    var useProxy = (!forSureUsePolyfill && nativeURLSearchParams && !isSupportObjectConstructor && self.Proxy);
+    var propValue; 
+    if (useProxy) {
+        // Safari 10.0 doesn't support Proxy, so it won't extend URLSearchParams on safari 10.0
+        propValue = new Proxy(nativeURLSearchParams, {
+            construct: function (target, args) {
+                return new target((new URLSearchParamsPolyfill(args[0]).toString()));
+            }
+        })
+        // Chrome <=60 .toString() on a function proxy got error "Function.prototype.toString is not generic"
+        propValue.toString = Function.prototype.toString.bind(URLSearchParamsPolyfill);
+    } else {
+        propValue = URLSearchParamsPolyfill;
+    }
+    /*
+     * Apply polifill to global object and append other prototype into it
+     */
+    Object.defineProperty(self, 'URLSearchParams', {
+        value: propValue
+    });
 
-/**
- * Creates an array of own enumerable property names and symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names and symbols.
- */
-function getAllKeys(object) {
-  return baseGetAllKeys(object, keys, getSymbols);
-}
+    var USPProto = self.URLSearchParams.prototype;
 
-module.exports = getAllKeys;
+    USPProto.polyfill = true;
 
+    /**
+     *
+     * @param {function} callback
+     * @param {object} thisArg
+     */
+    USPProto.forEach = USPProto.forEach || function(callback, thisArg) {
+        var dict = parseToDict(this.toString());
+        Object.getOwnPropertyNames(dict).forEach(function(name) {
+            dict[name].forEach(function(value) {
+                callback.call(thisArg, value, name, this);
+            }, this);
+        }, this);
+    };
 
-/***/ }),
-/* 385 */
-/***/ (function(module, exports, __webpack_require__) {
+    /**
+     * Sort all name-value pairs
+     */
+    USPProto.sort = USPProto.sort || function() {
+        var dict = parseToDict(this.toString()), keys = [], k, i, j;
+        for (k in dict) {
+            keys.push(k);
+        }
+        keys.sort();
 
-var arrayPush = __webpack_require__(386),
-    isArray = __webpack_require__(324);
+        for (i = 0; i < keys.length; i++) {
+            this['delete'](keys[i]);
+        }
+        for (i = 0; i < keys.length; i++) {
+            var key = keys[i], values = dict[key];
+            for (j = 0; j < values.length; j++) {
+                this.append(key, values[j]);
+            }
+        }
+    };
 
-/**
- * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
- * `keysFunc` and `symbolsFunc` to get the enumerable property names and
- * symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Function} keysFunc The function to get the keys of `object`.
- * @param {Function} symbolsFunc The function to get the symbols of `object`.
- * @returns {Array} Returns the array of property names and symbols.
- */
-function baseGetAllKeys(object, keysFunc, symbolsFunc) {
-  var result = keysFunc(object);
-  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
-}
+    /**
+     * Returns an iterator allowing to go through all keys of
+     * the key/value pairs contained in this object.
+     *
+     * @returns {function}
+     */
+    USPProto.keys = USPProto.keys || function() {
+        var items = [];
+        this.forEach(function(item, name) {
+            items.push(name);
+        });
+        return makeIterator(items);
+    };
 
-module.exports = baseGetAllKeys;
+    /**
+     * Returns an iterator allowing to go through all values of
+     * the key/value pairs contained in this object.
+     *
+     * @returns {function}
+     */
+    USPProto.values = USPProto.values || function() {
+        var items = [];
+        this.forEach(function(item) {
+            items.push(item);
+        });
+        return makeIterator(items);
+    };
 
+    /**
+     * Returns an iterator allowing to go through all key/value
+     * pairs contained in this object.
+     *
+     * @returns {function}
+     */
+    USPProto.entries = USPProto.entries || function() {
+        var items = [];
+        this.forEach(function(item, name) {
+            items.push([name, item]);
+        });
+        return makeIterator(items);
+    };
 
-/***/ }),
-/* 386 */
-/***/ (function(module, exports) {
 
-/**
- * Appends the elements of `values` to `array`.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {Array} values The values to append.
- * @returns {Array} Returns `array`.
- */
-function arrayPush(array, values) {
-  var index = -1,
-      length = values.length,
-      offset = array.length;
+    if (iterable) {
+        USPProto[self.Symbol.iterator] = USPProto[self.Symbol.iterator] || USPProto.entries;
+    }
 
-  while (++index < length) {
-    array[offset + index] = values[index];
-  }
-  return array;
-}
 
-module.exports = arrayPush;
+    function encode(str) {
+        var replace = {
+            '!': '%21',
+            "'": '%27',
+            '(': '%28',
+            ')': '%29',
+            '~': '%7E',
+            '%20': '+',
+            '%00': '\x00'
+        };
+        return encodeURIComponent(str).replace(/[!'\(\)~]|%20|%00/g, function(match) {
+            return replace[match];
+        });
+    }
 
+    function decode(str) {
+        return str
+            .replace(/[ +]/g, '%20')
+            .replace(/(%[a-f0-9]{2})+/ig, function(match) {
+                return decodeURIComponent(match);
+            });
+    }
 
-/***/ }),
-/* 387 */
-/***/ (function(module, exports, __webpack_require__) {
+    function makeIterator(arr) {
+        var iterator = {
+            next: function() {
+                var value = arr.shift();
+                return {done: value === undefined, value: value};
+            }
+        };
 
-var arrayFilter = __webpack_require__(388),
-    stubArray = __webpack_require__(389);
+        if (iterable) {
+            iterator[self.Symbol.iterator] = function() {
+                return iterator;
+            };
+        }
 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+        return iterator;
+    }
 
-/** Built-in value references. */
-var propertyIsEnumerable = objectProto.propertyIsEnumerable;
+    function parseToDict(search) {
+        var dict = {};
 
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeGetSymbols = Object.getOwnPropertySymbols;
+        if (typeof search === "object") {
+            // if `search` is an array, treat it as a sequence
+            if (isArray(search)) {
+                for (var i = 0; i < search.length; i++) {
+                    var item = search[i];
+                    if (isArray(item) && item.length === 2) {
+                        appendTo(dict, item[0], item[1]);
+                    } else {
+                        throw new TypeError("Failed to construct 'URLSearchParams': Sequence initializer must only contain pair elements");
+                    }
+                }
 
-/**
- * Creates an array of the own enumerable symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of symbols.
- */
-var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
-  if (object == null) {
-    return [];
-  }
-  object = Object(object);
-  return arrayFilter(nativeGetSymbols(object), function(symbol) {
-    return propertyIsEnumerable.call(object, symbol);
-  });
-};
+            } else {
+                for (var key in search) {
+                    if (search.hasOwnProperty(key)) {
+                        appendTo(dict, key, search[key]);
+                    }
+                }
+            }
 
-module.exports = getSymbols;
+        } else {
+            // remove first '?'
+            if (search.indexOf("?") === 0) {
+                search = search.slice(1);
+            }
 
+            var pairs = search.split("&");
+            for (var j = 0; j < pairs.length; j++) {
+                var value = pairs [j],
+                    index = value.indexOf('=');
 
-/***/ }),
-/* 388 */
-/***/ (function(module, exports) {
+                if (-1 < index) {
+                    appendTo(dict, decode(value.slice(0, index)), decode(value.slice(index + 1)));
 
-/**
- * A specialized version of `_.filter` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {Array} Returns the new filtered array.
- */
-function arrayFilter(array, predicate) {
-  var index = -1,
-      length = array == null ? 0 : array.length,
-      resIndex = 0,
-      result = [];
+                } else {
+                    if (value) {
+                        appendTo(dict, decode(value), '');
+                    }
+                }
+            }
+        }
 
-  while (++index < length) {
-    var value = array[index];
-    if (predicate(value, index, array)) {
-      result[resIndex++] = value;
+        return dict;
     }
-  }
-  return result;
-}
 
-module.exports = arrayFilter;
+    function appendTo(dict, name, value) {
+        var val = typeof value === 'string' ? value : (
+            value !== null && value !== undefined && typeof value.toString === 'function' ? value.toString() : JSON.stringify(value)
+        );
 
+        // #47 Prevent using `hasOwnProperty` as a property name
+        if (hasOwnProperty(dict, name)) {
+            dict[name].push(val);
+        } else {
+            dict[name] = [val];
+        }
+    }
 
-/***/ }),
-/* 389 */
-/***/ (function(module, exports) {
+    function isArray(val) {
+        return !!val && '[object Array]' === Object.prototype.toString.call(val);
+    }
 
-/**
- * This method returns a new empty array.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {Array} Returns the new empty array.
- * @example
- *
- * var arrays = _.times(2, _.stubArray);
- *
- * console.log(arrays);
- * // => [[], []]
- *
- * console.log(arrays[0] === arrays[1]);
- * // => false
- */
-function stubArray() {
-  return [];
-}
+    function hasOwnProperty(obj, prop) {
+        return Object.prototype.hasOwnProperty.call(obj, prop);
+    }
 
-module.exports = stubArray;
+})(typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : this));
 
 
 /***/ }),
-/* 390 */
+/* 487 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var DataView = __webpack_require__(391),
-    Map = __webpack_require__(355),
-    Promise = __webpack_require__(392),
-    Set = __webpack_require__(393),
-    WeakMap = __webpack_require__(394),
-    baseGetTag = __webpack_require__(304),
-    toSource = __webpack_require__(313);
+"use strict";
 
-/** `Object#toString` result references. */
-var mapTag = '[object Map]',
-    objectTag = '[object Object]',
-    promiseTag = '[object Promise]',
-    setTag = '[object Set]',
-    weakMapTag = '[object WeakMap]';
 
-var dataViewTag = '[object DataView]';
+var _interopRequireDefault = __webpack_require__(1);
 
-/** Used to detect maps, sets, and weakmaps. */
-var dataViewCtorString = toSource(DataView),
-    mapCtorString = toSource(Map),
-    promiseCtorString = toSource(Promise),
-    setCtorString = toSource(Set),
-    weakMapCtorString = toSource(WeakMap);
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
 
-/**
- * Gets the `toStringTag` of `value`.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the `toStringTag`.
- */
-var getTag = baseGetTag;
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
-if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
-    (Map && getTag(new Map) != mapTag) ||
-    (Promise && getTag(Promise.resolve()) != promiseTag) ||
-    (Set && getTag(new Set) != setTag) ||
-    (WeakMap && getTag(new WeakMap) != weakMapTag)) {
-  getTag = function(value) {
-    var result = baseGetTag(value),
-        Ctor = result == objectTag ? value.constructor : undefined,
-        ctorString = Ctor ? toSource(Ctor) : '';
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-    if (ctorString) {
-      switch (ctorString) {
-        case dataViewCtorString: return dataViewTag;
-        case mapCtorString: return mapTag;
-        case promiseCtorString: return promiseTag;
-        case setCtorString: return setTag;
-        case weakMapCtorString: return weakMapTag;
-      }
-    }
-    return result;
-  };
-}
+var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(291));
 
-module.exports = getTag;
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-/***/ }),
-/* 391 */
-/***/ (function(module, exports, __webpack_require__) {
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-var getNative = __webpack_require__(301),
-    root = __webpack_require__(306);
+var TERMS_DOCTYPE = 'io.cozy.terms';
+/* TODO Use collection terms */
 
-/* Built-in method references that are verified to be native. */
-var DataView = getNative(root, 'DataView');
+function save(_x, _x2) {
+  return _save.apply(this, arguments);
+}
 
-module.exports = DataView;
+function _save() {
+  _save = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client, terms) {
+    var id, termsAttributes, _yield$client$query, savedTermsDocs, savedTerms, termsToSave, _termsToSave;
 
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            id = terms.id, termsAttributes = (0, _objectWithoutProperties2.default)(terms, ["id"]);
+            _context.next = 3;
+            return client.query({
+              doctype: TERMS_DOCTYPE,
+              selector: {
+                termsId: id,
+                version: termsAttributes.version
+              },
+              limit: 1
+            });
 
-/***/ }),
-/* 392 */
-/***/ (function(module, exports, __webpack_require__) {
+          case 3:
+            _yield$client$query = _context.sent;
+            savedTermsDocs = _yield$client$query.data;
 
-var getNative = __webpack_require__(301),
-    root = __webpack_require__(306);
+            if (!(savedTermsDocs && savedTermsDocs.length)) {
+              _context.next = 13;
+              break;
+            }
 
-/* Built-in method references that are verified to be native. */
-var Promise = getNative(root, 'Promise');
-
-module.exports = Promise;
+            // we just update the url if this is the same id and same version
+            // but the url changed
+            savedTerms = savedTermsDocs[0];
 
+            if (!(savedTerms.termsId == id && savedTerms.version == termsAttributes.version && savedTerms.url != termsAttributes.url)) {
+              _context.next = 11;
+              break;
+            }
 
-/***/ }),
-/* 393 */
-/***/ (function(module, exports, __webpack_require__) {
+            termsToSave = _objectSpread(_objectSpread({
+              _type: TERMS_DOCTYPE
+            }, savedTerms), {}, {
+              url: termsAttributes.url
+            });
+            _context.next = 11;
+            return client.save(termsToSave);
 
-var getNative = __webpack_require__(301),
-    root = __webpack_require__(306);
+          case 11:
+            _context.next = 16;
+            break;
 
-/* Built-in method references that are verified to be native. */
-var Set = getNative(root, 'Set');
+          case 13:
+            _termsToSave = _objectSpread(_objectSpread({
+              _type: TERMS_DOCTYPE
+            }, termsAttributes), {}, {
+              termsId: id,
+              accepted: true,
+              acceptedAt: new Date()
+            });
+            _context.next = 16;
+            return client.save(_termsToSave);
 
-module.exports = Set;
+          case 16:
+          case "end":
+            return _context.stop();
+        }
+      }
+    }, _callee);
+  }));
+  return _save.apply(this, arguments);
+}
 
+var _default = {
+  save: save
+};
+exports.default = _default;
 
 /***/ }),
-/* 394 */
+/* 488 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var getNative = __webpack_require__(301),
-    root = __webpack_require__(306);
-
-/* Built-in method references that are verified to be native. */
-var WeakMap = getNative(root, 'WeakMap');
+"use strict";
 
-module.exports = WeakMap;
 
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.APP_TYPE = void 0;
+var APP_TYPE = {
+  KONNECTOR: 'konnector',
+  WEBAPP: 'webapp'
+};
+exports.APP_TYPE = APP_TYPE;
 
 /***/ }),
-/* 395 */
+/* 489 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var isStrictComparable = __webpack_require__(396),
-    keys = __webpack_require__(318);
+"use strict";
 
-/**
- * Gets the property names, values, and compare flags of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the match data of `object`.
- */
-function getMatchData(object) {
-  var result = keys(object),
-      length = result.length;
 
-  while (length--) {
-    var key = result[length],
-        value = object[key];
+var _interopRequireDefault = __webpack_require__(1);
 
-    result[length] = [key, value, isStrictComparable(value)];
-  }
-  return result;
-}
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.Collection = exports.isDocumentUpdateConflict = exports.isNoUsableIndexError = exports.isIndexNotUsedWarning = exports.isIndexConflictError = exports.isIndexNotFoundError = exports.dontThrowNotFoundError = void 0;
 
-module.exports = getMatchData;
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-/***/ }),
-/* 396 */
-/***/ (function(module, exports, __webpack_require__) {
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-var isObject = __webpack_require__(310);
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+
+var _types = __webpack_require__(490);
 
 /**
- * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
+ * Handler for error response which return a empty value for "not found" error
  *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` if suitable for strict
- *  equality comparisons, else `false`.
+ * @param  {Error}         error - An error
+ * @param  {Array|object|null}  data Data to return in case of "not found" error
+ * @returns {object}        JsonAPI response with empty data in case of "not
+ * found" error.
  */
-function isStrictComparable(value) {
-  return value === value && !isObject(value);
-}
-
-module.exports = isStrictComparable;
+var dontThrowNotFoundError = function dontThrowNotFoundError(error) {
+  var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
 
+  if (error.message.match(/not_found/)) {
+    var expectsCollection = Array.isArray(data); // Return expected JsonAPI attributes : collections are expecting
+    // meta, skip and next attribute
 
-/***/ }),
-/* 397 */
-/***/ (function(module, exports) {
+    return expectsCollection ? {
+      data: data,
+      meta: {
+        count: 0
+      },
+      skip: 0,
+      next: false
+    } : {
+      data: data
+    };
+  }
 
+  throw error;
+};
 /**
- * A specialized version of `matchesProperty` for source values suitable
- * for strict equality comparisons, i.e. `===`.
+ * Helper to identify an index not found error
  *
- * @private
- * @param {string} key The key of the property to get.
- * @param {*} srcValue The value to match.
- * @returns {Function} Returns the new spec function.
+ * @param {Error} error - An error
+ * @returns {Array|null} - Whether or not the error is an index not found error
  */
-function matchesStrictComparable(key, srcValue) {
-  return function(object) {
-    if (object == null) {
-      return false;
-    }
-    return object[key] === srcValue &&
-      (srcValue !== undefined || (key in Object(object)));
-  };
-}
 
-module.exports = matchesStrictComparable;
 
+exports.dontThrowNotFoundError = dontThrowNotFoundError;
 
-/***/ }),
-/* 398 */
-/***/ (function(module, exports, __webpack_require__) {
+var isIndexNotFoundError = function isIndexNotFoundError(error) {
+  return error.message.match(/no_index/);
+};
+/**
+ * Helper to identify an index conflict
+ *
+ * @param {Error} error - An error
+ * @returns {Array|null} - Whether or not the error is an index conflict error
+ */
 
-var baseIsEqual = __webpack_require__(371),
-    get = __webpack_require__(399),
-    hasIn = __webpack_require__(411),
-    isKey = __webpack_require__(402),
-    isStrictComparable = __webpack_require__(396),
-    matchesStrictComparable = __webpack_require__(397),
-    toKey = __webpack_require__(410);
 
-/** Used to compose bitmasks for value comparisons. */
-var COMPARE_PARTIAL_FLAG = 1,
-    COMPARE_UNORDERED_FLAG = 2;
+exports.isIndexNotFoundError = isIndexNotFoundError;
 
+var isIndexConflictError = function isIndexConflictError(error) {
+  return error.message.match(/error_saving_ddoc/);
+};
 /**
- * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
+ * Helper to identify a not used index
  *
- * @private
- * @param {string} path The path of the property to get.
- * @param {*} srcValue The value to match.
- * @returns {Function} Returns the new spec function.
+ * @param {string} warning - The warning returned by CouchDB
+ * @returns {Array|null} Whether or not this is a not used index warning
  */
-function baseMatchesProperty(path, srcValue) {
-  if (isKey(path) && isStrictComparable(srcValue)) {
-    return matchesStrictComparable(toKey(path), srcValue);
-  }
-  return function(object) {
-    var objValue = get(object, path);
-    return (objValue === undefined && objValue === srcValue)
-      ? hasIn(object, path)
-      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
-  };
-}
 
-module.exports = baseMatchesProperty;
-
-
-/***/ }),
-/* 399 */
-/***/ (function(module, exports, __webpack_require__) {
 
-var baseGet = __webpack_require__(400);
+exports.isIndexConflictError = isIndexConflictError;
 
+var isIndexNotUsedWarning = function isIndexNotUsedWarning(warning) {
+  return warning.match(/was not used because it does not contain a valid index for this query/);
+};
 /**
- * Gets the value at `path` of `object`. If the resolved value is
- * `undefined`, the `defaultValue` is returned in its place.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to get.
- * @param {*} [defaultValue] The value returned for `undefined` resolved values.
- * @returns {*} Returns the resolved value.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }] };
- *
- * _.get(object, 'a[0].b.c');
- * // => 3
- *
- * _.get(object, ['a', '0', 'b', 'c']);
- * // => 3
+ * Helper to identify a no usable index error
  *
- * _.get(object, 'a.b.c', 'default');
- * // => 'default'
+ * @param {Error} error - An error
+ * @returns {Array|null} - Whether or not the error is a no usable index error
  */
-function get(object, path, defaultValue) {
-  var result = object == null ? undefined : baseGet(object, path);
-  return result === undefined ? defaultValue : result;
-}
 
-module.exports = get;
-
-
-/***/ }),
-/* 400 */
-/***/ (function(module, exports, __webpack_require__) {
 
-var castPath = __webpack_require__(401),
-    toKey = __webpack_require__(410);
+exports.isIndexNotUsedWarning = isIndexNotUsedWarning;
 
+var isNoUsableIndexError = function isNoUsableIndexError(error) {
+  return error.message.match(/no_usable_index/);
+};
 /**
- * The base implementation of `_.get` without support for default values.
+ * Helper to identify a document conflict
  *
- * @private
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to get.
- * @returns {*} Returns the resolved value.
+ * @param {Error} error - An error
+ * @returns {Array|null} - Whether or not the error is a document conflict error
  */
-function baseGet(object, path) {
-  path = castPath(path, object);
-
-  var index = 0,
-      length = path.length;
 
-  while (object != null && index < length) {
-    object = object[toKey(path[index++])];
-  }
-  return (index && index == length) ? object : undefined;
-}
 
-module.exports = baseGet;
+exports.isNoUsableIndexError = isNoUsableIndexError;
 
+var isDocumentUpdateConflict = function isDocumentUpdateConflict(error) {
+  return error.message.match(/Document update conflict/);
+};
+/**
+ * Utility class to abstract an regroup identical methods and logics for
+ * specific collections.
+ */
 
-/***/ }),
-/* 401 */
-/***/ (function(module, exports, __webpack_require__) {
 
-var isArray = __webpack_require__(324),
-    isKey = __webpack_require__(402),
-    stringToPath = __webpack_require__(404),
-    toString = __webpack_require__(407);
+exports.isDocumentUpdateConflict = isDocumentUpdateConflict;
 
-/**
- * Casts `value` to a path array if it's not one.
- *
- * @private
- * @param {*} value The value to inspect.
- * @param {Object} [object] The object to query keys on.
- * @returns {Array} Returns the cast property path array.
- */
-function castPath(value, object) {
-  if (isArray(value)) {
-    return value;
+var Collection = /*#__PURE__*/function () {
+  function Collection() {
+    (0, _classCallCheck2.default)(this, Collection);
   }
-  return isKey(value, object) ? [value] : stringToPath(toString(value));
-}
 
-module.exports = castPath;
+  (0, _createClass2.default)(Collection, null, [{
+    key: "get",
 
+    /**
+     * Utility method aimed to return only one document.
+     *
+     * @param  {CozyStackClient}  stackClient - CozyStackClient
+     * @param  {string}  endpoint - Stack endpoint
+     * @param  {object}  options - Options of the collection
+     * @param  {Function}    options.normalize Callback to normalize response data
+     * (default `data => data`)
+     * @param  {string}  [options.method=GET]  -  HTTP method
+     * @returns {Promise<object>}  JsonAPI response containing normalized
+     * document as data attribute
+     */
+    value: function () {
+      var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(stackClient, endpoint, _ref) {
+        var _ref$normalize, normalize, _ref$method, method, resp;
 
-/***/ }),
-/* 402 */
-/***/ (function(module, exports, __webpack_require__) {
+        return _regenerator.default.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                _ref$normalize = _ref.normalize, normalize = _ref$normalize === void 0 ? function (data, response) {
+                  return data;
+                } : _ref$normalize, _ref$method = _ref.method, method = _ref$method === void 0 ? 'GET' : _ref$method;
+                _context.prev = 1;
+                _context.next = 4;
+                return stackClient.fetchJSON(method, endpoint);
 
-var isArray = __webpack_require__(324),
-    isSymbol = __webpack_require__(403);
+              case 4:
+                resp = _context.sent;
+                return _context.abrupt("return", {
+                  data: normalize(resp.data, resp)
+                });
 
-/** Used to match property names within property paths. */
-var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
-    reIsPlainProp = /^\w*$/;
+              case 8:
+                _context.prev = 8;
+                _context.t0 = _context["catch"](1);
+                return _context.abrupt("return", dontThrowNotFoundError(_context.t0, null));
 
-/**
- * Checks if `value` is a property name and not a property path.
- *
- * @private
- * @param {*} value The value to check.
- * @param {Object} [object] The object to query keys on.
- * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
- */
-function isKey(value, object) {
-  if (isArray(value)) {
-    return false;
-  }
-  var type = typeof value;
-  if (type == 'number' || type == 'symbol' || type == 'boolean' ||
-      value == null || isSymbol(value)) {
-    return true;
-  }
-  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
-    (object != null && value in Object(object));
-}
+              case 11:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, null, [[1, 8]]);
+      }));
 
-module.exports = isKey;
+      function get(_x, _x2, _x3) {
+        return _get.apply(this, arguments);
+      }
+
+      return get;
+    }()
+  }]);
+  return Collection;
+}();
 
+exports.Collection = Collection;
+var _default = Collection;
+exports.default = _default;
 
 /***/ }),
-/* 403 */
+/* 490 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseGetTag = __webpack_require__(304),
-    isObjectLike = __webpack_require__(323);
+"use strict";
 
-/** `Object#toString` result references. */
-var symbolTag = '[object Symbol]';
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
 
 /**
- * Checks if `value` is classified as a `Symbol` primitive or object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
- * @example
- *
- * _.isSymbol(Symbol.iterator);
- * // => true
- *
- * _.isSymbol('abc');
- * // => false
+ * @typedef {object} CozyStackClient
+ * @property {object} oauthOptions oauthOptions
+ * @property {string} uri CozyUri
+ * @property {Function} fetch fetchMethod
+ * @property {Function} fetchJSON fetchJSON
  */
-function isSymbol(value) {
-  return typeof value == 'symbol' ||
-    (isObjectLike(value) && baseGetTag(value) == symbolTag);
-}
-
-module.exports = isSymbol;
-
+var _default = {};
+exports.default = _default;
 
 /***/ }),
-/* 404 */
+/* 491 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var memoizeCapped = __webpack_require__(405);
+"use strict";
 
-/** Used to match property names within property paths. */
-var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
 
-/** Used to match backslashes in property paths. */
-var reEscapeChar = /\\(\\)?/g;
+var _interopRequireWildcard = __webpack_require__(277);
 
-/**
- * Converts `string` to a property path array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the property path array.
- */
-var stringToPath = memoizeCapped(function(string) {
-  var result = [];
-  if (string.charCodeAt(0) === 46 /* . */) {
-    result.push('');
-  }
-  string.replace(rePropName, function(match, number, quote, subString) {
-    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
-  });
-  return result;
+var _interopRequireDefault = __webpack_require__(1);
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
 });
+exports.normalizeDoc = normalizeDoc;
+exports.normalizeDoctype = exports.default = void 0;
 
-module.exports = stringToPath;
+var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(291));
 
+var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
 
-/***/ }),
-/* 405 */
-/***/ (function(module, exports, __webpack_require__) {
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-var memoize = __webpack_require__(406);
+var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
 
-/** Used as the maximum memoize cache size. */
-var MAX_MEMOIZE_SIZE = 500;
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-/**
- * A specialized version of `_.memoize` which clears the memoized function's
- * cache when it exceeds `MAX_MEMOIZE_SIZE`.
- *
- * @private
- * @param {Function} func The function to have its output memoized.
- * @returns {Function} Returns the new memoized function.
- */
-function memoizeCapped(func) {
-  var result = memoize(func, function(key) {
-    if (cache.size === MAX_MEMOIZE_SIZE) {
-      cache.clear();
-    }
-    return key;
-  });
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-  var cache = result.cache;
-  return result;
-}
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-module.exports = memoizeCapped;
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
+var _cozyFlags = _interopRequireDefault(__webpack_require__(493));
 
-/***/ }),
-/* 406 */
-/***/ (function(module, exports, __webpack_require__) {
+var _utils = __webpack_require__(521);
 
-var MapCache = __webpack_require__(356);
+var _uniq = _interopRequireDefault(__webpack_require__(522));
 
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
+var _omit = _interopRequireDefault(__webpack_require__(523));
 
-/**
- * Creates a function that memoizes the result of `func`. If `resolver` is
- * provided, it determines the cache key for storing the result based on the
- * arguments provided to the memoized function. By default, the first argument
- * provided to the memoized function is used as the map cache key. The `func`
- * is invoked with the `this` binding of the memoized function.
- *
- * **Note:** The cache is exposed as the `cache` property on the memoized
- * function. Its creation may be customized by replacing the `_.memoize.Cache`
- * constructor with one whose instances implement the
- * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
- * method interface of `clear`, `delete`, `get`, `has`, and `set`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to have its output memoized.
- * @param {Function} [resolver] The function to resolve the cache key.
- * @returns {Function} Returns the new memoized function.
- * @example
- *
- * var object = { 'a': 1, 'b': 2 };
- * var other = { 'c': 3, 'd': 4 };
- *
- * var values = _.memoize(_.values);
- * values(object);
- * // => [1, 2]
- *
- * values(other);
- * // => [3, 4]
- *
- * object.a = 2;
- * values(object);
- * // => [1, 2]
- *
- * // Modify the result cache.
- * values.cache.set(object, ['a', 'b']);
- * values(object);
- * // => ['a', 'b']
- *
- * // Replace `_.memoize.Cache`.
- * _.memoize.Cache = WeakMap;
- */
-function memoize(func, resolver) {
-  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  var memoized = function() {
-    var args = arguments,
-        key = resolver ? resolver.apply(this, args) : args[0],
-        cache = memoized.cache;
-
-    if (cache.has(key)) {
-      return cache.get(key);
-    }
-    var result = func.apply(this, args);
-    memoized.cache = cache.set(key, result) || cache;
-    return result;
-  };
-  memoized.cache = new (memoize.Cache || MapCache);
-  return memoized;
-}
-
-// Expose `MapCache`.
-memoize.Cache = MapCache;
-
-module.exports = memoize;
+var _head = _interopRequireDefault(__webpack_require__(531));
 
+var _merge = _interopRequireDefault(__webpack_require__(532));
 
-/***/ }),
-/* 407 */
-/***/ (function(module, exports, __webpack_require__) {
+var _startsWith = _interopRequireDefault(__webpack_require__(540));
 
-var baseToString = __webpack_require__(408);
+var _qs = _interopRequireDefault(__webpack_require__(547));
 
-/**
- * Converts `value` to a string. An empty string is returned for `null`
- * and `undefined` values. The sign of `-0` is preserved.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {string} Returns the converted string.
- * @example
- *
- * _.toString(null);
- * // => ''
- *
- * _.toString(-0);
- * // => '-0'
- *
- * _.toString([1, 2, 3]);
- * // => '1,2,3'
- */
-function toString(value) {
-  return value == null ? '' : baseToString(value);
-}
+var _mangoIndex = __webpack_require__(576);
 
-module.exports = toString;
+var _Collection = _interopRequireWildcard(__webpack_require__(489));
 
+var querystring = _interopRequireWildcard(__webpack_require__(578));
 
-/***/ }),
-/* 408 */
-/***/ (function(module, exports, __webpack_require__) {
+var _errors = __webpack_require__(582);
 
-var Symbol = __webpack_require__(305),
-    arrayMap = __webpack_require__(409),
-    isArray = __webpack_require__(324),
-    isSymbol = __webpack_require__(403);
+var _logger = _interopRequireDefault(__webpack_require__(587));
 
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
+function _templateObject10() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/_design/", "/copy?rev=", ""]);
 
-/** Used to convert symbols to primitives and strings. */
-var symbolProto = Symbol ? Symbol.prototype : undefined,
-    symbolToString = symbolProto ? symbolProto.toString : undefined;
+  _templateObject10 = function _templateObject10() {
+    return data;
+  };
 
-/**
- * The base implementation of `_.toString` which doesn't convert nullish
- * values to empty strings.
- *
- * @private
- * @param {*} value The value to process.
- * @returns {string} Returns the string.
- */
-function baseToString(value) {
-  // Exit early for strings to avoid a performance hit in some environments.
-  if (typeof value == 'string') {
-    return value;
-  }
-  if (isArray(value)) {
-    // Recursively convert values (susceptible to call stack limits).
-    return arrayMap(value, baseToString) + '';
-  }
-  if (isSymbol(value)) {
-    return symbolToString ? symbolToString.call(value) : '';
-  }
-  var result = (value + '');
-  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
+  return data;
 }
 
-module.exports = baseToString;
-
-
-/***/ }),
-/* 409 */
-/***/ (function(module, exports) {
+function _templateObject9() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/_design/", "?rev=", ""]);
 
-/**
- * A specialized version of `_.map` for arrays without support for iteratee
- * shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the new mapped array.
- */
-function arrayMap(array, iteratee) {
-  var index = -1,
-      length = array == null ? 0 : array.length,
-      result = Array(length);
+  _templateObject9 = function _templateObject9() {
+    return data;
+  };
 
-  while (++index < length) {
-    result[index] = iteratee(array[index], index, array);
-  }
-  return result;
+  return data;
 }
 
-module.exports = arrayMap;
-
-
-/***/ }),
-/* 410 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var isSymbol = __webpack_require__(403);
+function _templateObject8() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/_design_docs?include_docs=true"]);
 
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
+  _templateObject8 = function _templateObject8() {
+    return data;
+  };
 
-/**
- * Converts `value` to a string key if it's not a string or symbol.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {string|symbol} Returns the key.
- */
-function toKey(value) {
-  if (typeof value == 'string' || isSymbol(value)) {
-    return value;
-  }
-  var result = (value + '');
-  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
+  return data;
 }
 
-module.exports = toKey;
+function _templateObject7() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/_index"]);
 
+  _templateObject7 = function _templateObject7() {
+    return data;
+  };
 
-/***/ }),
-/* 411 */
-/***/ (function(module, exports, __webpack_require__) {
+  return data;
+}
 
-var baseHasIn = __webpack_require__(412),
-    hasPath = __webpack_require__(413);
+function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
 
-/**
- * Checks if `path` is a direct or inherited property of `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path to check.
- * @returns {boolean} Returns `true` if `path` exists, else `false`.
- * @example
- *
- * var object = _.create({ 'a': _.create({ 'b': 2 }) });
- *
- * _.hasIn(object, 'a');
- * // => true
- *
- * _.hasIn(object, 'a.b');
- * // => true
- *
- * _.hasIn(object, ['a', 'b']);
- * // => true
- *
- * _.hasIn(object, 'b');
- * // => false
- */
-function hasIn(object, path) {
-  return object != null && hasPath(object, path, baseHasIn);
-}
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
 
-module.exports = hasIn;
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
 
+function _templateObject6() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", "?rev=", ""]);
 
-/***/ }),
-/* 412 */
-/***/ (function(module, exports) {
+  _templateObject6 = function _templateObject6() {
+    return data;
+  };
 
-/**
- * The base implementation of `_.hasIn` without support for deep paths.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {Array|string} key The key to check.
- * @returns {boolean} Returns `true` if `key` exists, else `false`.
- */
-function baseHasIn(object, key) {
-  return object != null && key in Object(object);
+  return data;
 }
 
-module.exports = baseHasIn;
-
+function _templateObject5() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", ""]);
 
-/***/ }),
-/* 413 */
-/***/ (function(module, exports, __webpack_require__) {
+  _templateObject5 = function _templateObject5() {
+    return data;
+  };
 
-var castPath = __webpack_require__(401),
-    isArguments = __webpack_require__(321),
-    isArray = __webpack_require__(324),
-    isIndex = __webpack_require__(327),
-    isLength = __webpack_require__(330),
-    toKey = __webpack_require__(410);
+  return data;
+}
 
-/**
- * Checks if `path` exists on `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array|string} path The path to check.
- * @param {Function} hasFunc The function to check properties.
- * @returns {boolean} Returns `true` if `path` exists, else `false`.
- */
-function hasPath(object, path, hasFunc) {
-  path = castPath(path, object);
+function _templateObject4() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", ""]);
 
-  var index = -1,
-      length = path.length,
-      result = false;
+  _templateObject4 = function _templateObject4() {
+    return data;
+  };
 
-  while (++index < length) {
-    var key = toKey(path[index]);
-    if (!(result = object != null && hasFunc(object, key))) {
-      break;
-    }
-    object = object[key];
-  }
-  if (result || ++index != length) {
-    return result;
-  }
-  length = object == null ? 0 : object.length;
-  return !!length && isLength(length) && isIndex(key, length) &&
-    (isArray(object) || isArguments(object));
+  return data;
 }
 
-module.exports = hasPath;
-
+function _templateObject3() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/_all_docs?include_docs=true"]);
 
-/***/ }),
-/* 414 */
-/***/ (function(module, exports) {
+  _templateObject3 = function _templateObject3() {
+    return data;
+  };
 
-/**
- * This method returns the first argument it receives.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {*} value Any value.
- * @returns {*} Returns `value`.
- * @example
- *
- * var object = { 'a': 1 };
- *
- * console.log(_.identity(object) === object);
- * // => true
- */
-function identity(value) {
-  return value;
+  return data;
 }
 
-module.exports = identity;
-
-
-/***/ }),
-/* 415 */
-/***/ (function(module, exports, __webpack_require__) {
+function _templateObject2() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/_find"]);
 
-var baseProperty = __webpack_require__(416),
-    basePropertyDeep = __webpack_require__(417),
-    isKey = __webpack_require__(402),
-    toKey = __webpack_require__(410);
+  _templateObject2 = function _templateObject2() {
+    return data;
+  };
 
-/**
- * Creates a function that returns the value at `path` of a given object.
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Util
- * @param {Array|string} path The path of the property to get.
- * @returns {Function} Returns the new accessor function.
- * @example
- *
- * var objects = [
- *   { 'a': { 'b': 2 } },
- *   { 'a': { 'b': 1 } }
- * ];
- *
- * _.map(objects, _.property('a.b'));
- * // => [2, 1]
- *
- * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
- * // => [1, 2]
- */
-function property(path) {
-  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
+  return data;
 }
 
-module.exports = property;
-
-
-/***/ }),
-/* 416 */
-/***/ (function(module, exports) {
+function _templateObject() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", ""]);
 
-/**
- * The base implementation of `_.property` without support for deep paths.
- *
- * @private
- * @param {string} key The key of the property to get.
- * @returns {Function} Returns the new accessor function.
- */
-function baseProperty(key) {
-  return function(object) {
-    return object == null ? undefined : object[key];
+  _templateObject = function _templateObject() {
+    return data;
   };
-}
-
-module.exports = baseProperty;
 
+  return data;
+}
 
-/***/ }),
-/* 417 */
-/***/ (function(module, exports, __webpack_require__) {
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-var baseGet = __webpack_require__(400);
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
+var DATABASE_DOES_NOT_EXIST = 'Database does not exist.';
 /**
- * A specialized version of `baseProperty` which supports deep paths.
+ * Normalize a document, adding its doctype if needed
  *
+ * @param {object} doc - Document to normalize
+ * @param {string} doctype - Document doctype
+ * @returns {object} normalized document
  * @private
- * @param {Array|string} path The path of the property to get.
- * @returns {Function} Returns the new accessor function.
  */
-function basePropertyDeep(path) {
-  return function(object) {
-    return baseGet(object, path);
-  };
-}
-
-module.exports = basePropertyDeep;
-
 
-/***/ }),
-/* 418 */
-/***/ (function(module, exports) {
+function normalizeDoc() {
+  var doc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+  var doctype = arguments.length > 1 ? arguments[1] : undefined;
+  var id = doc._id || doc.id;
+  return _objectSpread({
+    id: id,
+    _id: id,
+    _type: doctype
+  }, doc);
+}
 
+var prepareForDeletion = function prepareForDeletion(x) {
+  return Object.assign({}, (0, _omit.default)(x, '_type'), {
+    _deleted: true
+  });
+};
 /**
- * The inverse of `_.toPairs`; this method returns an object composed
- * from key-value `pairs`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} pairs The key-value pairs.
- * @returns {Object} Returns the new object.
- * @example
- *
- * _.fromPairs([['a', 1], ['b', 2]]);
- * // => { 'a': 1, 'b': 2 }
+ * Abstracts a collection of documents of the same doctype, providing CRUD methods and other helpers.
  */
-function fromPairs(pairs) {
-  var index = -1,
-      length = pairs == null ? 0 : pairs.length,
-      result = {};
 
-  while (++index < length) {
-    var pair = pairs[index];
-    result[pair[0]] = pair[1];
-  }
-  return result;
-}
-
-module.exports = fromPairs;
 
+var DocumentCollection = /*#__PURE__*/function () {
+  function DocumentCollection(doctype, stackClient) {
+    (0, _classCallCheck2.default)(this, DocumentCollection);
+    this.doctype = doctype;
+    this.stackClient = stackClient;
+    this.indexes = {};
+    this.endpoint = "/data/".concat(this.doctype, "/");
+  }
+  /**
+   * Provides a callback for `Collection.get`
+   *
+   * @param {string} doctype - Document doctype
+   * @returns {Function} (data, response) => normalizedDocument
+   *                                        using `normalizeDoc`
+   */
 
-/***/ }),
-/* 419 */
-/***/ (function(module, exports, __webpack_require__) {
 
-var baseFlatten = __webpack_require__(420);
+  (0, _createClass2.default)(DocumentCollection, [{
+    key: "all",
 
-/**
- * Flattens `array` a single level deep.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to flatten.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * _.flatten([1, [2, [3, [4]], 5]]);
- * // => [1, 2, [3, [4]], 5]
- */
-function flatten(array) {
-  var length = array == null ? 0 : array.length;
-  return length ? baseFlatten(array, 1) : [];
-}
-
-module.exports = flatten;
+    /**
+     * Lists all documents of the collection, without filters.
+     *
+     * The returned documents are paginated by the stack.
+     *
+     * @param {object} options The fetch options: pagination & fetch of specific docs.
+     * @param {number} [options.limit=100] - Pagination limit
+     * @param {number} [options.skip=0] - Pagination Skip
+     * @param {string} [options.bookmark] - Pagination bookmark
+     * @param {Array<string>} [options.keys] - Keys to query
+     * @returns {Promise<{data, meta, skip, bookmark, next}>} The JSON API conformant response.
+     * @throws {FetchError}
+     */
+    value: function () {
+      var _all = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
+        var _this = this;
 
+        var _ref,
+            _ref$limit,
+            limit,
+            _ref$skip,
+            skip,
+            bookmark,
+            keys,
+            isUsingAllDocsRoute,
+            route,
+            url,
+            params,
+            path,
+            resp,
+            data,
+            next,
+            _args = arguments;
 
-/***/ }),
-/* 420 */
-/***/ (function(module, exports, __webpack_require__) {
+        return _regenerator.default.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                _ref = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}, _ref$limit = _ref.limit, limit = _ref$limit === void 0 ? 100 : _ref$limit, _ref$skip = _ref.skip, skip = _ref$skip === void 0 ? 0 : _ref$skip, bookmark = _ref.bookmark, keys = _ref.keys;
+                // If the limit is intentionnally null, we need to use _all_docs, since
+                // _normal_docs uses _find and has a hard limit of 1000
+                isUsingAllDocsRoute = !!keys || limit === null;
+                route = isUsingAllDocsRoute ? '_all_docs' : '_normal_docs';
+                url = (0, _utils.uri)(_templateObject(), this.doctype, route);
+                params = {
+                  include_docs: true,
+                  limit: limit,
+                  skip: skip,
+                  keys: keys,
+                  bookmark: bookmark
+                };
+                path = querystring.buildURL(url, params); // If no document of this doctype exist, this route will return a 404,
+                // so we need to try/catch and return an empty response object in case of a 404
 
-var arrayPush = __webpack_require__(386),
-    isFlattenable = __webpack_require__(421);
+                _context.prev = 6;
+                _context.next = 9;
+                return this.stackClient.fetchJSON('GET', path);
 
-/**
- * The base implementation of `_.flatten` with support for restricting flattening.
- *
- * @private
- * @param {Array} array The array to flatten.
- * @param {number} depth The maximum recursion depth.
- * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
- * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
- * @param {Array} [result=[]] The initial result value.
- * @returns {Array} Returns the new flattened array.
- */
-function baseFlatten(array, depth, predicate, isStrict, result) {
-  var index = -1,
-      length = array.length;
+              case 9:
+                resp = _context.sent;
+                _context.next = 15;
+                break;
 
-  predicate || (predicate = isFlattenable);
-  result || (result = []);
+              case 12:
+                _context.prev = 12;
+                _context.t0 = _context["catch"](6);
+                return _context.abrupt("return", (0, _Collection.dontThrowNotFoundError)(_context.t0));
 
-  while (++index < length) {
-    var value = array[index];
-    if (depth > 0 && predicate(value)) {
-      if (depth > 1) {
-        // Recursively flatten arrays (susceptible to call stack limits).
-        baseFlatten(value, depth - 1, predicate, isStrict, result);
-      } else {
-        arrayPush(result, value);
-      }
-    } else if (!isStrict) {
-      result[result.length] = value;
-    }
-  }
-  return result;
-}
+              case 15:
+                /* If using `all_docs` we need to filter our design documents and check if
+                the document is not null. If we use `normal_doc` we can't have any design doc
+                 */
+                if (isUsingAllDocsRoute) {
+                  data = resp.rows.filter(function (doc) {
+                    return doc && doc.doc !== null && !doc.error && !(0, _startsWith.default)(doc.id, '_design');
+                  }).map(function (row) {
+                    return normalizeDoc(row.doc, _this.doctype);
+                  });
+                } else {
+                  data = resp.rows.map(function (row) {
+                    return normalizeDoc(row, _this.doctype);
+                  });
+                } // The presence of a bookmark doesn’t guarantee that there are more results.
+                // See https://docs.couchdb.org/en/2.2.0/api/database/find.html#pagination
 
-module.exports = baseFlatten;
 
+                next = bookmark ? resp.rows.length >= limit : skip + resp.rows.length < resp.total_rows;
+                return _context.abrupt("return", {
+                  data: data,
+                  meta: {
+                    count: isUsingAllDocsRoute ? data.length : resp.total_rows
+                  },
+                  skip: skip,
+                  bookmark: resp.bookmark,
+                  next: next
+                });
 
-/***/ }),
-/* 421 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 18:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this, [[6, 12]]);
+      }));
 
-var Symbol = __webpack_require__(305),
-    isArguments = __webpack_require__(321),
-    isArray = __webpack_require__(324);
+      function all() {
+        return _all.apply(this, arguments);
+      }
 
-/** Built-in value references. */
-var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;
+      return all;
+    }()
+    /**
+     * Fetch Documents with Mango
+     *
+     * @param {string} path - path to fetch
+     * @param {MangoSelector} selector - selector
+     * @param {MangoQueryOptions} options - request options
+     */
 
-/**
- * Checks if `value` is a flattenable `arguments` object or array.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
- */
-function isFlattenable(value) {
-  return isArray(value) || isArguments(value) ||
-    !!(spreadableSymbol && value && value[spreadableSymbol]);
-}
+  }, {
+    key: "fetchDocumentsWithMango",
+    value: function () {
+      var _fetchDocumentsWithMango = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(path, selector) {
+        var options,
+            _args2 = arguments;
+        return _regenerator.default.wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                options = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : {};
+                return _context2.abrupt("return", this.stackClient.fetchJSON('POST', path, this.toMangoOptions(selector, options)));
 
-module.exports = isFlattenable;
+              case 2:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2, this);
+      }));
 
+      function fetchDocumentsWithMango(_x, _x2) {
+        return _fetchDocumentsWithMango.apply(this, arguments);
+      }
 
-/***/ }),
-/* 422 */
-/***/ (function(module, exports, __webpack_require__) {
+      return fetchDocumentsWithMango;
+    }()
+    /**
+     * Migrate an existing unamed index to a named one.
+     *
+     * Index migration became necessary for optimistic index, because
+     * we started to use named index while we used to have unamed index,
+     * i.e. indexes with CouchDB-generated ID.
+     *
+     * @param {object} sourceIndex - The index to migrate
+     * @param {string} targetIndexName - The new index name
+     * @private
+     */
 
-var baseIteratee = __webpack_require__(338),
-    baseUniq = __webpack_require__(423);
+  }, {
+    key: "migrateUnamedIndex",
+    value: function () {
+      var _migrateUnamedIndex = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(sourceIndex, targetIndexName) {
+        return _regenerator.default.wrap(function _callee3$(_context3) {
+          while (1) {
+            switch (_context3.prev = _context3.next) {
+              case 0:
+                _context3.prev = 0;
+                _context3.next = 3;
+                return this.copyIndex(sourceIndex, targetIndexName);
 
-/**
- * This method is like `_.uniq` except that it accepts `iteratee` which is
- * invoked for each element in `array` to generate the criterion by which
- * uniqueness is computed. The order of result values is determined by the
- * order they occur in the array. The iteratee is invoked with one argument:
- * (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
- * // => [2.1, 1.2]
- *
- * // The `_.property` iteratee shorthand.
- * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
- * // => [{ 'x': 1 }, { 'x': 2 }]
- */
-function uniqBy(array, iteratee) {
-  return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];
-}
+              case 3:
+                _context3.next = 5;
+                return this.destroyIndex(sourceIndex);
 
-module.exports = uniqBy;
+              case 5:
+                _context3.next = 16;
+                break;
 
+              case 7:
+                _context3.prev = 7;
+                _context3.t0 = _context3["catch"](0);
 
-/***/ }),
-/* 423 */
-/***/ (function(module, exports, __webpack_require__) {
+                if ((0, _Collection.isDocumentUpdateConflict)(_context3.t0)) {
+                  _context3.next = 11;
+                  break;
+                }
 
-var SetCache = __webpack_require__(374),
-    arrayIncludes = __webpack_require__(424),
-    arrayIncludesWith = __webpack_require__(429),
-    cacheHas = __webpack_require__(378),
-    createSet = __webpack_require__(430),
-    setToArray = __webpack_require__(382);
+                throw _context3.t0;
 
-/** Used as the size to enable large array optimizations. */
-var LARGE_ARRAY_SIZE = 200;
+              case 11:
+                (0, _utils.sleep)(1000);
+                _context3.next = 14;
+                return this.copyIndex(sourceIndex, targetIndexName);
 
-/**
- * The base implementation of `_.uniqBy` without support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- */
-function baseUniq(array, iteratee, comparator) {
-  var index = -1,
-      includes = arrayIncludes,
-      length = array.length,
-      isCommon = true,
-      result = [],
-      seen = result;
+              case 14:
+                _context3.next = 16;
+                return this.destroyIndex(sourceIndex);
 
-  if (comparator) {
-    isCommon = false;
-    includes = arrayIncludesWith;
-  }
-  else if (length >= LARGE_ARRAY_SIZE) {
-    var set = iteratee ? null : createSet(array);
-    if (set) {
-      return setToArray(set);
-    }
-    isCommon = false;
-    includes = cacheHas;
-    seen = new SetCache;
-  }
-  else {
-    seen = iteratee ? [] : result;
-  }
-  outer:
-  while (++index < length) {
-    var value = array[index],
-        computed = iteratee ? iteratee(value) : value;
+              case 16:
+              case "end":
+                return _context3.stop();
+            }
+          }
+        }, _callee3, this, [[0, 7]]);
+      }));
 
-    value = (comparator || value !== 0) ? value : 0;
-    if (isCommon && computed === computed) {
-      var seenIndex = seen.length;
-      while (seenIndex--) {
-        if (seen[seenIndex] === computed) {
-          continue outer;
-        }
-      }
-      if (iteratee) {
-        seen.push(computed);
-      }
-      result.push(value);
-    }
-    else if (!includes(seen, computed, comparator)) {
-      if (seen !== result) {
-        seen.push(computed);
+      function migrateUnamedIndex(_x3, _x4) {
+        return _migrateUnamedIndex.apply(this, arguments);
       }
-      result.push(value);
-    }
-  }
-  return result;
-}
-
-module.exports = baseUniq;
-
 
-/***/ }),
-/* 424 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseIndexOf = __webpack_require__(425);
+      return migrateUnamedIndex;
+    }()
+    /**
+     * Handle index creation if it is missing.
+     *
+     * When an index is missing, we first check if there is one with a different
+     * name but the same definition. If yes, it means we found an old unamed
+     * index, so we migrate it. If there is none, we create the new index.
+     *
+     * @param {object} selector The mango selector
+     * @param {MangoQueryOptions} options The find options
+     * @private
+     */
 
-/**
- * A specialized version of `_.includes` for arrays without support for
- * specifying an index to search from.
- *
- * @private
- * @param {Array} [array] The array to inspect.
- * @param {*} target The value to search for.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
-function arrayIncludes(array, value) {
-  var length = array == null ? 0 : array.length;
-  return !!length && baseIndexOf(array, value, 0) > -1;
-}
+  }, {
+    key: "handleMissingIndex",
+    value: function () {
+      var _handleMissingIndex = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(selector, options) {
+        var indexedFields, partialFilter, partialFilterFields, existingIndex, indexName;
+        return _regenerator.default.wrap(function _callee4$(_context4) {
+          while (1) {
+            switch (_context4.prev = _context4.next) {
+              case 0:
+                indexedFields = options.indexedFields, partialFilter = options.partialFilter;
 
-module.exports = arrayIncludes;
+                if (!indexedFields) {
+                  indexedFields = (0, _mangoIndex.getIndexFields)({
+                    sort: options.sort,
+                    selector: selector
+                  });
+                }
 
+                partialFilterFields = partialFilter ? (0, _mangoIndex.getIndexFields)({
+                  partialFilter: partialFilter
+                }) : null;
+                _context4.next = 5;
+                return this.findExistingIndex(selector, options);
 
-/***/ }),
-/* 425 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 5:
+                existingIndex = _context4.sent;
+                indexName = (0, _mangoIndex.getIndexNameFromFields)(indexedFields, {
+                  partialFilterFields: partialFilterFields
+                });
 
-var baseFindIndex = __webpack_require__(426),
-    baseIsNaN = __webpack_require__(427),
-    strictIndexOf = __webpack_require__(428);
+                if (existingIndex) {
+                  _context4.next = 12;
+                  break;
+                }
 
-/**
- * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseIndexOf(array, value, fromIndex) {
-  return value === value
-    ? strictIndexOf(array, value, fromIndex)
-    : baseFindIndex(array, baseIsNaN, fromIndex);
-}
+                _context4.next = 10;
+                return this.createIndex(indexedFields, {
+                  partialFilter: partialFilter,
+                  indexName: indexName
+                });
 
-module.exports = baseIndexOf;
+              case 10:
+                _context4.next = 18;
+                break;
 
+              case 12:
+                if (!(existingIndex._id !== "_design/".concat(indexName))) {
+                  _context4.next = 17;
+                  break;
+                }
 
-/***/ }),
-/* 426 */
-/***/ (function(module, exports) {
+                _context4.next = 15;
+                return this.migrateUnamedIndex(existingIndex, indexName);
 
-/**
- * The base implementation of `_.findIndex` and `_.findLastIndex` without
- * support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} predicate The function invoked per iteration.
- * @param {number} fromIndex The index to search from.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseFindIndex(array, predicate, fromIndex, fromRight) {
-  var length = array.length,
-      index = fromIndex + (fromRight ? 1 : -1);
+              case 15:
+                _context4.next = 18;
+                break;
 
-  while ((fromRight ? index-- : ++index < length)) {
-    if (predicate(array[index], index, array)) {
-      return index;
-    }
-  }
-  return -1;
-}
+              case 17:
+                throw new Error("Index unusable for query, index used: ".concat(indexName));
 
-module.exports = baseFindIndex;
+              case 18:
+              case "end":
+                return _context4.stop();
+            }
+          }
+        }, _callee4, this);
+      }));
 
+      function handleMissingIndex(_x5, _x6) {
+        return _handleMissingIndex.apply(this, arguments);
+      }
 
-/***/ }),
-/* 427 */
-/***/ (function(module, exports) {
+      return handleMissingIndex;
+    }()
+    /**
+     * Find documents with the mango selector and create index
+     * if missing.
+     *
+     * We adopt an optimistic approach for index creation:
+     * we run the query first, and only if an index missing
+     * error is returned, the index is created and
+     * the query run again.
+     *
+     * @param {string} path The route path
+     * @param {MangoSelector} selector The mango selector
+     * @param {MangoQueryOptions} options The find options
+     *
+     * @returns {Promise<object>} - The find response
+     * @protected
+     */
 
-/**
- * The base implementation of `_.isNaN` without support for number objects.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
- */
-function baseIsNaN(value) {
-  return value !== value;
-}
-
-module.exports = baseIsNaN;
+  }, {
+    key: "findWithMango",
+    value: function () {
+      var _findWithMango = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(path, selector) {
+        var options,
+            resp,
+            _resp$meta,
+            warning,
+            _args5 = arguments;
 
+        return _regenerator.default.wrap(function _callee5$(_context5) {
+          while (1) {
+            switch (_context5.prev = _context5.next) {
+              case 0:
+                options = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : {};
+                _context5.prev = 1;
+                _context5.next = 4;
+                return this.fetchDocumentsWithMango(path, selector, options);
 
-/***/ }),
-/* 428 */
-/***/ (function(module, exports) {
+              case 4:
+                resp = _context5.sent;
+                warning = resp.warning || ((_resp$meta = resp.meta) === null || _resp$meta === void 0 ? void 0 : _resp$meta.warning);
 
-/**
- * A specialized version of `_.indexOf` which performs strict equality
- * comparisons of values, i.e. `===`.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function strictIndexOf(array, value, fromIndex) {
-  var index = fromIndex - 1,
-      length = array.length;
+                if (!(warning && options.partialFilter && (0, _Collection.isIndexNotUsedWarning)(warning))) {
+                  _context5.next = 8;
+                  break;
+                }
 
-  while (++index < length) {
-    if (array[index] === value) {
-      return index;
-    }
-  }
-  return -1;
-}
+                throw new Error('no_index');
 
-module.exports = strictIndexOf;
+              case 8:
+                _context5.next = 21;
+                break;
 
+              case 10:
+                _context5.prev = 10;
+                _context5.t0 = _context5["catch"](1);
 
-/***/ }),
-/* 429 */
-/***/ (function(module, exports) {
+                if (!(!(0, _Collection.isIndexNotFoundError)(_context5.t0) && !(0, _Collection.isNoUsableIndexError)(_context5.t0))) {
+                  _context5.next = 16;
+                  break;
+                }
 
-/**
- * This function is like `arrayIncludes` except that it accepts a comparator.
- *
- * @private
- * @param {Array} [array] The array to inspect.
- * @param {*} target The value to search for.
- * @param {Function} comparator The comparator invoked per element.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
-function arrayIncludesWith(array, value, comparator) {
-  var index = -1,
-      length = array == null ? 0 : array.length;
+                throw _context5.t0;
 
-  while (++index < length) {
-    if (comparator(value, array[index])) {
-      return true;
-    }
-  }
-  return false;
-}
+              case 16:
+                _context5.next = 18;
+                return this.handleMissingIndex(selector, options);
 
-module.exports = arrayIncludesWith;
+              case 18:
+                _context5.next = 20;
+                return this.fetchDocumentsWithMango(path, selector, options);
 
+              case 20:
+                resp = _context5.sent;
 
-/***/ }),
-/* 430 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 21:
+                return _context5.abrupt("return", resp);
 
-var Set = __webpack_require__(393),
-    noop = __webpack_require__(431),
-    setToArray = __webpack_require__(382);
+              case 22:
+              case "end":
+                return _context5.stop();
+            }
+          }
+        }, _callee5, this, [[1, 10]]);
+      }));
 
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
+      function findWithMango(_x7, _x8) {
+        return _findWithMango.apply(this, arguments);
+      }
 
-/**
- * Creates a set object of `values`.
- *
- * @private
- * @param {Array} values The values to add to the set.
- * @returns {Object} Returns the new set.
- */
-var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
-  return new Set(values);
-};
+      return findWithMango;
+    }()
+    /**
+     * Returns a filtered list of documents using a Mango selector.
+     
+    The returned documents are paginated by the stack.
+     *
+     * @param {MangoSelector} selector The Mango selector.
+     * @param {MangoQueryOptions} options MangoQueryOptions
+     * @returns {Promise<{data, skip, bookmark, next, execution_stats}>} The JSON API conformant response.
+     * @throws {FetchError}
+     */
 
-module.exports = createSet;
+  }, {
+    key: "find",
+    value: function () {
+      var _find = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(selector) {
+        var _this2 = this;
 
+        var options,
+            _options$skip,
+            skip,
+            resp,
+            path,
+            _args6 = arguments;
 
-/***/ }),
-/* 431 */
-/***/ (function(module, exports) {
+        return _regenerator.default.wrap(function _callee6$(_context6) {
+          while (1) {
+            switch (_context6.prev = _context6.next) {
+              case 0:
+                options = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : {};
+                _options$skip = options.skip, skip = _options$skip === void 0 ? 0 : _options$skip;
+                _context6.prev = 2;
+                path = (0, _utils.uri)(_templateObject2(), this.doctype);
+                _context6.next = 6;
+                return this.findWithMango(path, selector, options);
 
-/**
- * This method returns `undefined`.
- *
- * @static
- * @memberOf _
- * @since 2.3.0
- * @category Util
- * @example
- *
- * _.times(2, _.noop);
- * // => [undefined, undefined]
- */
-function noop() {
-  // No operation performed.
-}
+              case 6:
+                resp = _context6.sent;
+                _context6.next = 12;
+                break;
 
-module.exports = noop;
+              case 9:
+                _context6.prev = 9;
+                _context6.t0 = _context6["catch"](2);
+                return _context6.abrupt("return", (0, _Collection.dontThrowNotFoundError)(_context6.t0));
 
+              case 12:
+                return _context6.abrupt("return", {
+                  data: resp.docs.map(function (doc) {
+                    return normalizeDoc(doc, _this2.doctype);
+                  }),
+                  next: resp.next,
+                  skip: skip,
+                  bookmark: resp.bookmark,
+                  execution_stats: resp.execution_stats
+                });
 
-/***/ }),
-/* 432 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 13:
+              case "end":
+                return _context6.stop();
+            }
+          }
+        }, _callee6, this, [[2, 9]]);
+      }));
 
-var baseRest = __webpack_require__(433),
-    unzip = __webpack_require__(440);
+      function find(_x9) {
+        return _find.apply(this, arguments);
+      }
 
-/**
- * Creates an array of grouped elements, the first of which contains the
- * first elements of the given arrays, the second of which contains the
- * second elements of the given arrays, and so on.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {...Array} [arrays] The arrays to process.
- * @returns {Array} Returns the new array of grouped elements.
- * @example
- *
- * _.zip(['a', 'b'], [1, 2], [true, false]);
- * // => [['a', 1, true], ['b', 2, false]]
- */
-var zip = baseRest(unzip);
+      return find;
+    }()
+    /**
+     * Returns a filtered list with all documents using a Mango selector,
+     * automatically fetching more documents if the total of documents is
+     * superior to the pagination limit.
+     * Can result in a lot of network requests.
+     *
+     The returned documents are paginated by the stack.
+     *
+     * @param {MangoSelector} selector The Mango selector.
+     * @param {MangoQueryOptions} options MangoQueryOptions
+     * @returns {Promise<Array<{data}>>} Documents fetched
+     * @throws {FetchError}
+     */
 
-module.exports = zip;
+  }, {
+    key: "findAll",
+    value: function () {
+      var _findAll = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(selector) {
+        var options,
+            next,
+            documents,
+            bookmark,
+            resp,
+            _args7 = arguments;
+        return _regenerator.default.wrap(function _callee7$(_context7) {
+          while (1) {
+            switch (_context7.prev = _context7.next) {
+              case 0:
+                options = _args7.length > 1 && _args7[1] !== undefined ? _args7[1] : {};
+                next = true;
+                documents = [];
+                bookmark = options.bookmark || undefined;
 
+              case 4:
+                if (!next) {
+                  _context7.next = 13;
+                  break;
+                }
 
-/***/ }),
-/* 433 */
-/***/ (function(module, exports, __webpack_require__) {
+                _context7.next = 7;
+                return this.find(selector, _objectSpread(_objectSpread({}, options), {}, {
+                  bookmark: bookmark
+                }));
 
-var identity = __webpack_require__(414),
-    overRest = __webpack_require__(434),
-    setToString = __webpack_require__(436);
+              case 7:
+                resp = _context7.sent;
+                documents.push.apply(documents, (0, _toConsumableArray2.default)(resp.data));
+                bookmark = resp.bookmark;
+                next = resp.next;
+                _context7.next = 4;
+                break;
 
-/**
- * The base implementation of `_.rest` which doesn't validate or coerce arguments.
- *
- * @private
- * @param {Function} func The function to apply a rest parameter to.
- * @param {number} [start=func.length-1] The start position of the rest parameter.
- * @returns {Function} Returns the new function.
- */
-function baseRest(func, start) {
-  return setToString(overRest(func, start, identity), func + '');
-}
+              case 13:
+                return _context7.abrupt("return", documents);
 
-module.exports = baseRest;
+              case 14:
+              case "end":
+                return _context7.stop();
+            }
+          }
+        }, _callee7, this);
+      }));
 
+      function findAll(_x10) {
+        return _findAll.apply(this, arguments);
+      }
 
-/***/ }),
-/* 434 */
-/***/ (function(module, exports, __webpack_require__) {
+      return findAll;
+    }()
+    /**
+     * Get a document by id
+     *
+     * @param  {string} id The document id.
+     * @returns {Promise<object>}  JsonAPI response containing normalized document as data attribute
+     */
 
-var apply = __webpack_require__(435);
+  }, {
+    key: "get",
+    value: function () {
+      var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(id) {
+        return _regenerator.default.wrap(function _callee8$(_context8) {
+          while (1) {
+            switch (_context8.prev = _context8.next) {
+              case 0:
+                return _context8.abrupt("return", _Collection.default.get(this.stackClient, "".concat(this.endpoint).concat(encodeURIComponent(id)), {
+                  normalize: this.constructor.normalizeDoctype(this.doctype)
+                }));
 
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
+              case 1:
+              case "end":
+                return _context8.stop();
+            }
+          }
+        }, _callee8, this);
+      }));
 
-/**
- * A specialized version of `baseRest` which transforms the rest array.
- *
- * @private
- * @param {Function} func The function to apply a rest parameter to.
- * @param {number} [start=func.length-1] The start position of the rest parameter.
- * @param {Function} transform The rest array transform.
- * @returns {Function} Returns the new function.
- */
-function overRest(func, start, transform) {
-  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
-  return function() {
-    var args = arguments,
-        index = -1,
-        length = nativeMax(args.length - start, 0),
-        array = Array(length);
+      function get(_x11) {
+        return _get.apply(this, arguments);
+      }
 
-    while (++index < length) {
-      array[index] = args[start + index];
-    }
-    index = -1;
-    var otherArgs = Array(start + 1);
-    while (++index < start) {
-      otherArgs[index] = args[index];
-    }
-    otherArgs[start] = transform(array);
-    return apply(func, this, otherArgs);
-  };
-}
+      return get;
+    }()
+    /**
+     * Get many documents by id
+     */
 
-module.exports = overRest;
+  }, {
+    key: "getAll",
+    value: function () {
+      var _getAll = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(ids) {
+        var _this3 = this;
 
+        var resp, rows;
+        return _regenerator.default.wrap(function _callee9$(_context9) {
+          while (1) {
+            switch (_context9.prev = _context9.next) {
+              case 0:
+                _context9.prev = 0;
+                _context9.next = 3;
+                return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject3(), this.doctype), {
+                  keys: ids
+                });
 
-/***/ }),
-/* 435 */
-/***/ (function(module, exports) {
+              case 3:
+                resp = _context9.sent;
+                _context9.next = 9;
+                break;
 
-/**
- * A faster alternative to `Function#apply`, this function invokes `func`
- * with the `this` binding of `thisArg` and the arguments of `args`.
- *
- * @private
- * @param {Function} func The function to invoke.
- * @param {*} thisArg The `this` binding of `func`.
- * @param {Array} args The arguments to invoke `func` with.
- * @returns {*} Returns the result of `func`.
- */
-function apply(func, thisArg, args) {
-  switch (args.length) {
-    case 0: return func.call(thisArg);
-    case 1: return func.call(thisArg, args[0]);
-    case 2: return func.call(thisArg, args[0], args[1]);
-    case 3: return func.call(thisArg, args[0], args[1], args[2]);
-  }
-  return func.apply(thisArg, args);
-}
+              case 6:
+                _context9.prev = 6;
+                _context9.t0 = _context9["catch"](0);
+                return _context9.abrupt("return", (0, _Collection.dontThrowNotFoundError)(_context9.t0));
 
-module.exports = apply;
+              case 9:
+                rows = resp.rows.filter(function (row) {
+                  return row.doc;
+                });
+                return _context9.abrupt("return", {
+                  data: rows.map(function (row) {
+                    return normalizeDoc(row.doc, _this3.doctype);
+                  }),
+                  meta: {
+                    count: rows.length
+                  }
+                });
 
+              case 11:
+              case "end":
+                return _context9.stop();
+            }
+          }
+        }, _callee9, this, [[0, 6]]);
+      }));
 
-/***/ }),
-/* 436 */
-/***/ (function(module, exports, __webpack_require__) {
+      function getAll(_x12) {
+        return _getAll.apply(this, arguments);
+      }
 
-var baseSetToString = __webpack_require__(437),
-    shortOut = __webpack_require__(439);
+      return getAll;
+    }()
+    /**
+     * Creates a document
+     *
+     * @param {object} doc - Document to create. Optional: you can force the id with the _id attribute
+     */
 
-/**
- * Sets the `toString` method of `func` to return `string`.
- *
- * @private
- * @param {Function} func The function to modify.
- * @param {Function} string The `toString` result.
- * @returns {Function} Returns `func`.
- */
-var setToString = shortOut(baseSetToString);
+  }, {
+    key: "create",
+    value: function () {
+      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(_ref2) {
+        var _id, _type, document, hasFixedId, method, endpoint, resp;
 
-module.exports = setToString;
+        return _regenerator.default.wrap(function _callee10$(_context10) {
+          while (1) {
+            switch (_context10.prev = _context10.next) {
+              case 0:
+                _id = _ref2._id, _type = _ref2._type, document = (0, _objectWithoutProperties2.default)(_ref2, ["_id", "_type"]);
+                // In case of a fixed id, let's use the dedicated creation endpoint
+                // https://github.com/cozy/cozy-stack/blob/master/docs/data-system.md#create-a-document-with-a-fixed-id
+                hasFixedId = !!_id;
+                method = hasFixedId ? 'PUT' : 'POST';
+                endpoint = (0, _utils.uri)(_templateObject4(), this.doctype, hasFixedId ? _id : '');
+                _context10.next = 6;
+                return this.stackClient.fetchJSON(method, endpoint, document);
 
+              case 6:
+                resp = _context10.sent;
+                return _context10.abrupt("return", {
+                  data: normalizeDoc(resp.data, this.doctype)
+                });
 
-/***/ }),
-/* 437 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 8:
+              case "end":
+                return _context10.stop();
+            }
+          }
+        }, _callee10, this);
+      }));
 
-var constant = __webpack_require__(438),
-    defineProperty = __webpack_require__(300),
-    identity = __webpack_require__(414);
-
-/**
- * The base implementation of `setToString` without support for hot loop shorting.
- *
- * @private
- * @param {Function} func The function to modify.
- * @param {Function} string The `toString` result.
- * @returns {Function} Returns `func`.
- */
-var baseSetToString = !defineProperty ? identity : function(func, string) {
-  return defineProperty(func, 'toString', {
-    'configurable': true,
-    'enumerable': false,
-    'value': constant(string),
-    'writable': true
-  });
-};
-
-module.exports = baseSetToString;
+      function create(_x13) {
+        return _create.apply(this, arguments);
+      }
 
+      return create;
+    }()
+    /**
+     * Updates a document
+     *
+     * @param {object} document - Document to update. Do not forget the _id attribute
+     */
 
-/***/ }),
-/* 438 */
-/***/ (function(module, exports) {
+  }, {
+    key: "update",
+    value: function () {
+      var _update = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(document) {
+        var resp;
+        return _regenerator.default.wrap(function _callee11$(_context11) {
+          while (1) {
+            switch (_context11.prev = _context11.next) {
+              case 0:
+                _context11.next = 2;
+                return this.stackClient.fetchJSON('PUT', (0, _utils.uri)(_templateObject5(), this.doctype, document._id), document);
 
-/**
- * Creates a function that returns `value`.
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Util
- * @param {*} value The value to return from the new function.
- * @returns {Function} Returns the new constant function.
- * @example
- *
- * var objects = _.times(2, _.constant({ 'a': 1 }));
- *
- * console.log(objects);
- * // => [{ 'a': 1 }, { 'a': 1 }]
- *
- * console.log(objects[0] === objects[1]);
- * // => true
- */
-function constant(value) {
-  return function() {
-    return value;
-  };
-}
+              case 2:
+                resp = _context11.sent;
+                return _context11.abrupt("return", {
+                  data: normalizeDoc(resp.data, this.doctype)
+                });
 
-module.exports = constant;
+              case 4:
+              case "end":
+                return _context11.stop();
+            }
+          }
+        }, _callee11, this);
+      }));
 
+      function update(_x14) {
+        return _update.apply(this, arguments);
+      }
 
-/***/ }),
-/* 439 */
-/***/ (function(module, exports) {
+      return update;
+    }()
+    /**
+     * Destroys a document
+     *
+     * @param {object} doc - Document to destroy. Do not forget _id and _rev attributes
+     */
 
-/** Used to detect hot functions by number of calls within a span of milliseconds. */
-var HOT_COUNT = 800,
-    HOT_SPAN = 16;
+  }, {
+    key: "destroy",
+    value: function () {
+      var _destroy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(_ref3) {
+        var _id, _rev, document, resp;
 
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeNow = Date.now;
+        return _regenerator.default.wrap(function _callee12$(_context12) {
+          while (1) {
+            switch (_context12.prev = _context12.next) {
+              case 0:
+                _id = _ref3._id, _rev = _ref3._rev, document = (0, _objectWithoutProperties2.default)(_ref3, ["_id", "_rev"]);
+                _context12.next = 3;
+                return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject6(), this.doctype, _id, _rev));
 
-/**
- * Creates a function that'll short out and invoke `identity` instead
- * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
- * milliseconds.
- *
- * @private
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new shortable function.
- */
-function shortOut(func) {
-  var count = 0,
-      lastCalled = 0;
+              case 3:
+                resp = _context12.sent;
+                return _context12.abrupt("return", {
+                  data: normalizeDoc(_objectSpread(_objectSpread({}, document), {}, {
+                    _id: _id,
+                    _rev: resp.rev,
+                    _deleted: true
+                  }), this.doctype)
+                });
 
-  return function() {
-    var stamp = nativeNow(),
-        remaining = HOT_SPAN - (stamp - lastCalled);
+              case 5:
+              case "end":
+                return _context12.stop();
+            }
+          }
+        }, _callee12, this);
+      }));
 
-    lastCalled = stamp;
-    if (remaining > 0) {
-      if (++count >= HOT_COUNT) {
-        return arguments[0];
+      function destroy(_x15) {
+        return _destroy.apply(this, arguments);
       }
-    } else {
-      count = 0;
-    }
-    return func.apply(undefined, arguments);
-  };
-}
 
-module.exports = shortOut;
+      return destroy;
+    }()
+    /**
+     * Updates several documents in one batch
+     *
+     * @param  {Document[]} rawDocs Documents to be updated
+     */
 
+  }, {
+    key: "updateAll",
+    value: function () {
+      var _updateAll = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13(rawDocs) {
+        var stackClient, docs, update, firstDoc, resp;
+        return _regenerator.default.wrap(function _callee13$(_context13) {
+          while (1) {
+            switch (_context13.prev = _context13.next) {
+              case 0:
+                stackClient = this.stackClient;
+                docs = rawDocs ? rawDocs.map(function (d) {
+                  return (0, _omit.default)(d, '_type');
+                }) : rawDocs;
 
-/***/ }),
-/* 440 */
-/***/ (function(module, exports, __webpack_require__) {
+                if (!(!docs || !docs.length)) {
+                  _context13.next = 4;
+                  break;
+                }
 
-var arrayFilter = __webpack_require__(388),
-    arrayMap = __webpack_require__(409),
-    baseProperty = __webpack_require__(416),
-    baseTimes = __webpack_require__(320),
-    isArrayLikeObject = __webpack_require__(441);
+                return _context13.abrupt("return", Promise.resolve([]));
 
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
+              case 4:
+                _context13.prev = 4;
+                _context13.next = 7;
+                return stackClient.fetchJSON('POST', "/data/".concat(this.doctype, "/_bulk_docs"), {
+                  docs: docs
+                });
 
-/**
- * This method is like `_.zip` except that it accepts an array of grouped
- * elements and creates an array regrouping the elements to their pre-zip
- * configuration.
- *
- * @static
- * @memberOf _
- * @since 1.2.0
- * @category Array
- * @param {Array} array The array of grouped elements to process.
- * @returns {Array} Returns the new array of regrouped elements.
- * @example
- *
- * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);
- * // => [['a', 1, true], ['b', 2, false]]
- *
- * _.unzip(zipped);
- * // => [['a', 'b'], [1, 2], [true, false]]
- */
-function unzip(array) {
-  if (!(array && array.length)) {
-    return [];
-  }
-  var length = 0;
-  array = arrayFilter(array, function(group) {
-    if (isArrayLikeObject(group)) {
-      length = nativeMax(group.length, length);
-      return true;
-    }
-  });
-  return baseTimes(length, function(index) {
-    return arrayMap(array, baseProperty(index));
-  });
-}
+              case 7:
+                update = _context13.sent;
+                return _context13.abrupt("return", update);
 
-module.exports = unzip;
+              case 11:
+                _context13.prev = 11;
+                _context13.t0 = _context13["catch"](4);
 
+                if (!(_context13.t0.reason && _context13.t0.reason.reason && _context13.t0.reason.reason === DATABASE_DOES_NOT_EXIST)) {
+                  _context13.next = 24;
+                  break;
+                }
 
-/***/ }),
-/* 441 */
-/***/ (function(module, exports, __webpack_require__) {
+                _context13.next = 16;
+                return this.create(docs[0]);
 
-var isArrayLike = __webpack_require__(337),
-    isObjectLike = __webpack_require__(323);
+              case 16:
+                firstDoc = _context13.sent;
+                _context13.next = 19;
+                return this.updateAll(docs.slice(1));
 
-/**
- * This method is like `_.isArrayLike` except that it also checks if `value`
- * is an object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array-like object,
- *  else `false`.
- * @example
- *
- * _.isArrayLikeObject([1, 2, 3]);
- * // => true
- *
- * _.isArrayLikeObject(document.body.children);
- * // => true
- *
- * _.isArrayLikeObject('abc');
- * // => false
- *
- * _.isArrayLikeObject(_.noop);
- * // => false
- */
-function isArrayLikeObject(value) {
-  return isObjectLike(value) && isArrayLike(value);
-}
+              case 19:
+                resp = _context13.sent;
+                resp.unshift({
+                  ok: true,
+                  id: firstDoc._id,
+                  rev: firstDoc._rev
+                });
+                return _context13.abrupt("return", resp);
 
-module.exports = isArrayLikeObject;
+              case 24:
+                throw _context13.t0;
 
+              case 25:
+              case "end":
+                return _context13.stop();
+            }
+          }
+        }, _callee13, this, [[4, 11]]);
+      }));
 
-/***/ }),
-/* 442 */
-/***/ (function(module, exports, __webpack_require__) {
+      function updateAll(_x16) {
+        return _updateAll.apply(this, arguments);
+      }
 
-var arrayEach = __webpack_require__(443),
-    baseEach = __webpack_require__(444),
-    castFunction = __webpack_require__(446),
-    isArray = __webpack_require__(324);
+      return updateAll;
+    }()
+    /**
+     * Deletes several documents in one batch
+     *
+     * @param  {Document[]} docs - Documents to delete
+     */
 
-/**
- * Iterates over elements of `collection` and invokes `iteratee` for each element.
- * The iteratee is invoked with three arguments: (value, index|key, collection).
- * Iteratee functions may exit iteration early by explicitly returning `false`.
- *
- * **Note:** As with other "Collections" methods, objects with a "length"
- * property are iterated like arrays. To avoid this behavior use `_.forIn`
- * or `_.forOwn` for object iteration.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @alias each
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array|Object} Returns `collection`.
- * @see _.forEachRight
- * @example
- *
- * _.forEach([1, 2], function(value) {
- *   console.log(value);
- * });
- * // => Logs `1` then `2`.
- *
- * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
- *   console.log(key);
- * });
- * // => Logs 'a' then 'b' (iteration order is not guaranteed).
- */
-function forEach(collection, iteratee) {
-  var func = isArray(collection) ? arrayEach : baseEach;
-  return func(collection, castFunction(iteratee));
-}
+  }, {
+    key: "destroyAll",
+    value: function destroyAll(docs) {
+      return this.updateAll(docs.map(prepareForDeletion));
+    }
+    /**
+     * Returns Mango Options from Selector and Options
+     *
+     * @param {MangoSelector} selector - Mango selector
+     * @param {MangoQueryOptions} options - Mango Options
+     * @returns {MangoQueryOptions} Mango options
+     */
 
-module.exports = forEach;
+  }, {
+    key: "toMangoOptions",
+    value: function toMangoOptions(selector) {
+      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+      var sort = options.sort,
+          indexedFields = options.indexedFields,
+          partialFilter = options.partialFilter;
+      var fields = options.fields,
+          _options$skip2 = options.skip,
+          skip = _options$skip2 === void 0 ? 0 : _options$skip2,
+          limit = options.limit,
+          bookmark = options.bookmark;
+      sort = (0, _mangoIndex.transformSort)(sort);
 
+      if (!indexedFields && selector) {
+        _logger.default.warn('Selector fields should be manually indexed to prevent unexpected behaviour');
+      }
 
-/***/ }),
-/* 443 */
-/***/ (function(module, exports) {
+      indexedFields = indexedFields ? indexedFields : (0, _mangoIndex.getIndexFields)({
+        sort: sort,
+        selector: selector
+      });
+      var partialFilterFields = partialFilter ? (0, _mangoIndex.getIndexFields)({
+        partialFilter: partialFilter
+      }) : null;
+      var indexName = options.indexId || "_design/".concat((0, _mangoIndex.getIndexNameFromFields)(indexedFields, {
+        partialFilterFields: partialFilterFields
+      }));
 
-/**
- * A specialized version of `_.forEach` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns `array`.
- */
-function arrayEach(array, iteratee) {
-  var index = -1,
-      length = array == null ? 0 : array.length;
+      if (sort) {
+        var sortOrders = (0, _uniq.default)(sort.map(function (sortOption) {
+          return (0, _head.default)(Object.values(sortOption));
+        }));
+        if (sortOrders.length > 1) throw new Error('Mango sort can only use a single order (asc or desc).');
+        var sortOrder = sortOrders.length > 0 ? (0, _head.default)(sortOrders) : 'asc';
 
-  while (++index < length) {
-    if (iteratee(array[index], index, array) === false) {
-      break;
-    }
-  }
-  return array;
-}
+        var _iterator = _createForOfIteratorHelper(indexedFields),
+            _step;
 
-module.exports = arrayEach;
+        try {
+          var _loop = function _loop() {
+            var field = _step.value;
+            if (!sort.find(function (sortOption) {
+              return (0, _head.default)(Object.keys(sortOption)) === field;
+            })) sort.push((0, _defineProperty2.default)({}, field, sortOrder));
+          };
 
+          for (_iterator.s(); !(_step = _iterator.n()).done;) {
+            _loop();
+          }
+        } catch (err) {
+          _iterator.e(err);
+        } finally {
+          _iterator.f();
+        }
+      } // We need to pass the partialFilter in the selector, otherwise CouchDB might
+      // fallback on another index if it does not exist yet
 
-/***/ }),
-/* 444 */
-/***/ (function(module, exports, __webpack_require__) {
 
-var baseForOwn = __webpack_require__(315),
-    createBaseEach = __webpack_require__(445);
+      var mergedSelector = partialFilter ? (0, _merge.default)(_objectSpread({}, selector), partialFilter) : selector;
+      return {
+        selector: mergedSelector,
+        use_index: indexName,
+        // TODO: type and class should not be necessary, it's just a temp fix for a stack bug
+        fields: fields ? [].concat((0, _toConsumableArray2.default)(fields), ['_id', '_type', 'class']) : undefined,
+        limit: limit,
+        skip: skip,
+        bookmark: options.bookmark || bookmark,
+        sort: sort,
+        execution_stats: (0, _cozyFlags.default)('debug') ? true : undefined
+      };
+    }
+  }, {
+    key: "checkUniquenessOf",
+    value: function () {
+      var _checkUniquenessOf = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14(property, value) {
+        var indexId, existingDocs;
+        return _regenerator.default.wrap(function _callee14$(_context14) {
+          while (1) {
+            switch (_context14.prev = _context14.next) {
+              case 0:
+                _context14.next = 2;
+                return this.getUniqueIndexId(property);
 
-/**
- * The base implementation of `_.forEach` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array|Object} Returns `collection`.
- */
-var baseEach = createBaseEach(baseForOwn);
+              case 2:
+                indexId = _context14.sent;
+                _context14.next = 5;
+                return this.find((0, _defineProperty2.default)({}, property, value), {
+                  indexId: indexId,
+                  fields: ['_id']
+                });
 
-module.exports = baseEach;
+              case 5:
+                existingDocs = _context14.sent;
+                return _context14.abrupt("return", existingDocs.data.length === 0);
 
+              case 7:
+              case "end":
+                return _context14.stop();
+            }
+          }
+        }, _callee14, this);
+      }));
 
-/***/ }),
-/* 445 */
-/***/ (function(module, exports, __webpack_require__) {
+      function checkUniquenessOf(_x17, _x18) {
+        return _checkUniquenessOf.apply(this, arguments);
+      }
 
-var isArrayLike = __webpack_require__(337);
+      return checkUniquenessOf;
+    }()
+  }, {
+    key: "getUniqueIndexId",
+    value: function getUniqueIndexId(property) {
+      return this.getIndexId([property], {
+        indexName: "".concat(this.doctype, "/").concat(property)
+      });
+    }
+  }, {
+    key: "getIndexId",
+    value: function () {
+      var _getIndexId = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15(fields, _ref4) {
+        var _ref4$partialFilter, partialFilter, _ref4$indexName, indexName, index;
 
-/**
- * Creates a `baseEach` or `baseEachRight` function.
- *
- * @private
- * @param {Function} eachFunc The function to iterate over a collection.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new base function.
- */
-function createBaseEach(eachFunc, fromRight) {
-  return function(collection, iteratee) {
-    if (collection == null) {
-      return collection;
-    }
-    if (!isArrayLike(collection)) {
-      return eachFunc(collection, iteratee);
-    }
-    var length = collection.length,
-        index = fromRight ? length : -1,
-        iterable = Object(collection);
-
-    while ((fromRight ? index-- : ++index < length)) {
-      if (iteratee(iterable[index], index, iterable) === false) {
-        break;
-      }
-    }
-    return collection;
-  };
-}
+        return _regenerator.default.wrap(function _callee15$(_context15) {
+          while (1) {
+            switch (_context15.prev = _context15.next) {
+              case 0:
+                _ref4$partialFilter = _ref4.partialFilter, partialFilter = _ref4$partialFilter === void 0 ? '' : _ref4$partialFilter, _ref4$indexName = _ref4.indexName, indexName = _ref4$indexName === void 0 ? (0, _mangoIndex.getIndexNameFromFields)(fields) : _ref4$indexName;
 
-module.exports = createBaseEach;
+                if (this.indexes[indexName]) {
+                  _context15.next = 20;
+                  break;
+                }
 
+                _context15.prev = 2;
+                _context15.next = 5;
+                return this.createIndex(fields, {
+                  partialFilter: partialFilter
+                });
 
-/***/ }),
-/* 446 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 5:
+                index = _context15.sent;
+                _context15.next = 19;
+                break;
 
-var identity = __webpack_require__(414);
+              case 8:
+                _context15.prev = 8;
+                _context15.t0 = _context15["catch"](2);
 
-/**
- * Casts `value` to `identity` if it's not a function.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {Function} Returns cast function.
- */
-function castFunction(value) {
-  return typeof value == 'function' ? value : identity;
-}
+                if ((0, _Collection.isIndexConflictError)(_context15.t0)) {
+                  _context15.next = 14;
+                  break;
+                }
 
-module.exports = castFunction;
+                throw _context15.t0;
 
+              case 14:
+                _context15.next = 16;
+                return (0, _utils.sleep)(1000);
 
-/***/ }),
-/* 447 */
-/***/ (function(module, exports) {
+              case 16:
+                _context15.next = 18;
+                return this.createIndex(fields, {
+                  partialFilter: partialFilter
+                });
 
-function M() { this._events = {}; }
-M.prototype = {
-  on: function(ev, cb) {
-    this._events || (this._events = {});
-    var e = this._events;
-    (e[ev] || (e[ev] = [])).push(cb);
-    return this;
-  },
-  removeListener: function(ev, cb) {
-    var e = this._events[ev] || [], i;
-    for(i = e.length-1; i >= 0 && e[i]; i--){
-      if(e[i] === cb || e[i].cb === cb) { e.splice(i, 1); }
-    }
-  },
-  removeAllListeners: function(ev) {
-    if(!ev) { this._events = {}; }
-    else { this._events[ev] && (this._events[ev] = []); }
-  },
-  listeners: function(ev) {
-    return (this._events ? this._events[ev] || [] : []);
-  },
-  emit: function(ev) {
-    this._events || (this._events = {});
-    var args = Array.prototype.slice.call(arguments, 1), i, e = this._events[ev] || [];
-    for(i = e.length-1; i >= 0 && e[i]; i--){
-      e[i].apply(this, args);
-    }
-    return this;
-  },
-  when: function(ev, cb) {
-    return this.once(ev, cb, true);
-  },
-  once: function(ev, cb, when) {
-    if(!cb) return this;
-    function c() {
-      if(!when) this.removeListener(ev, c);
-      if(cb.apply(this, arguments) && when) this.removeListener(ev, c);
-    }
-    c.cb = cb;
-    this.on(ev, c);
-    return this;
-  }
-};
-M.mixin = function(dest) {
-  var o = M.prototype, k;
-  for (k in o) {
-    o.hasOwnProperty(k) && (dest.prototype[k] = o[k]);
-  }
-};
-module.exports = M;
+              case 18:
+                index = _context15.sent;
 
+              case 19:
+                this.indexes[indexName] = index;
 
-/***/ }),
-/* 448 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 20:
+                return _context15.abrupt("return", this.indexes[indexName].id);
 
-"use strict";
+              case 21:
+              case "end":
+                return _context15.stop();
+            }
+          }
+        }, _callee15, this, [[2, 8]]);
+      }));
 
+      function getIndexId(_x19, _x20) {
+        return _getIndexId.apply(this, arguments);
+      }
 
-var _interopRequireWildcard = __webpack_require__(277);
+      return getIndexId;
+    }()
+    /**
+     *
+     * @param {Array} fields - Fields to index
+     * @param {object} indexOption - Options for the index
+     * @param {MangoPartialFilter} [indexOption.partialFilter] - partialFilter
+     * @param {string} [indexOption.indexName] - indexName
+     * @returns {Promise<{id, fields}>}
+     */
 
-var _interopRequireDefault = __webpack_require__(1);
+  }, {
+    key: "createIndex",
+    value: function () {
+      var _createIndex = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16(fields) {
+        var _ref5,
+            partialFilter,
+            indexName,
+            indexDef,
+            resp,
+            indexResp,
+            selector,
+            options,
+            _args16 = arguments;
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-Object.defineProperty(exports, "default", {
-  enumerable: true,
-  get: function get() {
-    return _CozyStackClient.default;
-  }
-});
-Object.defineProperty(exports, "OAuthClient", {
-  enumerable: true,
-  get: function get() {
-    return _OAuthClient.default;
-  }
-});
-Object.defineProperty(exports, "errors", {
-  enumerable: true,
-  get: function get() {
-    return _errors.default;
-  }
-});
-Object.defineProperty(exports, "FetchError", {
-  enumerable: true,
-  get: function get() {
-    return _errors.FetchError;
-  }
-});
-Object.defineProperty(exports, "normalizeDoc", {
-  enumerable: true,
-  get: function get() {
-    return _DocumentCollection.normalizeDoc;
-  }
-});
+        return _regenerator.default.wrap(function _callee16$(_context16) {
+          while (1) {
+            switch (_context16.prev = _context16.next) {
+              case 0:
+                _ref5 = _args16.length > 1 && _args16[1] !== undefined ? _args16[1] : {}, partialFilter = _ref5.partialFilter, indexName = _ref5.indexName;
+                indexDef = {
+                  index: {
+                    fields: fields
+                  }
+                };
 
-var _CozyStackClient = _interopRequireDefault(__webpack_require__(449));
+                if (indexName) {
+                  indexDef.ddoc = indexName;
+                }
 
-var _OAuthClient = _interopRequireDefault(__webpack_require__(618));
+                if (partialFilter) {
+                  indexDef.index.partial_filter_selector = partialFilter;
+                }
 
-var _errors = _interopRequireWildcard(__webpack_require__(582));
+                _context16.prev = 4;
+                _context16.next = 7;
+                return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject7(), this.doctype), indexDef);
 
-var _DocumentCollection = __webpack_require__(491);
+              case 7:
+                resp = _context16.sent;
+                _context16.next = 17;
+                break;
 
-/***/ }),
-/* 449 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 10:
+                _context16.prev = 10;
+                _context16.t0 = _context16["catch"](4);
 
-"use strict";
+                if ((0, _Collection.isIndexConflictError)(_context16.t0)) {
+                  _context16.next = 16;
+                  break;
+                }
 
+                throw _context16.t0;
 
-var _interopRequireWildcard = __webpack_require__(277);
+              case 16:
+                return _context16.abrupt("return");
 
-var _interopRequireDefault = __webpack_require__(1);
+              case 17:
+                indexResp = {
+                  id: resp.id,
+                  fields: fields
+                };
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
+                if (!(resp.result === 'exists')) {
+                  _context16.next = 20;
+                  break;
+                }
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+                return _context16.abrupt("return", indexResp);
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+              case 20:
+                // indexes might not be usable right after being created; so we delay the resolving until they are
+                selector = {};
+                fields.forEach(function (f) {
+                  return selector[f] = {
+                    $gt: null
+                  };
+                });
+                options = {
+                  indexId: indexResp.id,
+                  limit: 1,
+                  partialFilterFields: partialFilter ? (0, _mangoIndex.getIndexFields)({
+                    partialFilter: partialFilter
+                  }) : null
+                };
+                _context16.next = 25;
+                return (0, _utils.attempt)(this.find(selector, options));
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+              case 25:
+                if (!_context16.sent) {
+                  _context16.next = 27;
+                  break;
+                }
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+                return _context16.abrupt("return", indexResp);
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+              case 27:
+                _context16.next = 29;
+                return (0, _utils.sleep)(1000);
 
-var _cloneDeep = _interopRequireDefault(__webpack_require__(450));
+              case 29:
+                _context16.next = 31;
+                return (0, _utils.attempt)(this.find(selector, options));
 
-var _AppCollection = _interopRequireWildcard(__webpack_require__(479));
+              case 31:
+                if (!_context16.sent) {
+                  _context16.next = 33;
+                  break;
+                }
 
-var _AppToken = _interopRequireDefault(__webpack_require__(588));
+                return _context16.abrupt("return", indexResp);
 
-var _AccessToken = _interopRequireDefault(__webpack_require__(589));
+              case 33:
+                _context16.next = 35;
+                return (0, _utils.sleep)(500);
 
-var _DocumentCollection = _interopRequireDefault(__webpack_require__(491));
+              case 35:
+                return _context16.abrupt("return", indexResp);
 
-var _FileCollection = _interopRequireDefault(__webpack_require__(590));
+              case 36:
+              case "end":
+                return _context16.stop();
+            }
+          }
+        }, _callee16, this, [[4, 10]]);
+      }));
 
-var _JobCollection = _interopRequireWildcard(__webpack_require__(599));
+      function createIndex(_x21) {
+        return _createIndex.apply(this, arguments);
+      }
 
-var _KonnectorCollection = _interopRequireWildcard(__webpack_require__(600));
+      return createIndex;
+    }()
+    /**
+     * Retrieve all design docs of mango indexes
+     *
+     * @returns {Promise<DesignDoc[]>} The design docs
+     */
 
-var _SharingCollection = _interopRequireDefault(__webpack_require__(604));
+  }, {
+    key: "fetchAllMangoIndexes",
+    value: function () {
+      var _fetchAllMangoIndexes = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17() {
+        var path, indexes;
+        return _regenerator.default.wrap(function _callee17$(_context17) {
+          while (1) {
+            switch (_context17.prev = _context17.next) {
+              case 0:
+                path = (0, _utils.uri)(_templateObject8(), this.doctype);
+                _context17.next = 3;
+                return this.stackClient.fetchJSON('GET', path);
 
-var _PermissionCollection = _interopRequireDefault(__webpack_require__(605));
+              case 3:
+                indexes = _context17.sent;
+                return _context17.abrupt("return", indexes.rows.filter(function (index) {
+                  return index.doc.language === 'query';
+                }).map(function (doc) {
+                  return (0, _mangoIndex.normalizeDesignDoc)(doc);
+                }));
 
-var _TriggerCollection = _interopRequireWildcard(__webpack_require__(601));
+              case 5:
+              case "end":
+                return _context17.stop();
+            }
+          }
+        }, _callee17, this);
+      }));
 
-var _SettingsCollection = _interopRequireWildcard(__webpack_require__(606));
+      function fetchAllMangoIndexes() {
+        return _fetchAllMangoIndexes.apply(this, arguments);
+      }
 
-var _NotesCollection = _interopRequireWildcard(__webpack_require__(607));
+      return fetchAllMangoIndexes;
+    }()
+    /**
+     * Delete the specified design doc
+     *
+     * @param {DesignDoc} index - The design doc to remove
+     * @returns {Promise<object>} The delete response
+     */
 
-var _OAuthClientsCollection = _interopRequireWildcard(__webpack_require__(609));
+  }, {
+    key: "destroyIndex",
+    value: function () {
+      var _destroyIndex = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18(index) {
+        var ddoc, rev, path;
+        return _regenerator.default.wrap(function _callee18$(_context18) {
+          while (1) {
+            switch (_context18.prev = _context18.next) {
+              case 0:
+                ddoc = index._id.split('/')[1];
+                rev = index._rev;
+                path = (0, _utils.uri)(_templateObject9(), this.doctype, ddoc, rev);
+                return _context18.abrupt("return", this.stackClient.fetchJSON('DELETE', path));
 
-var _ShortcutsCollection = _interopRequireWildcard(__webpack_require__(610));
+              case 4:
+              case "end":
+                return _context18.stop();
+            }
+          }
+        }, _callee18, this);
+      }));
 
-var _ContactsCollection = _interopRequireWildcard(__webpack_require__(611));
+      function destroyIndex(_x22) {
+        return _destroyIndex.apply(this, arguments);
+      }
 
-var _AppsRegistryCollection = _interopRequireWildcard(__webpack_require__(612));
+      return destroyIndex;
+    }()
+    /**
+     * Copy an existing design doc.
+     *
+     * This is useful to create a new design doc without
+     * having to recompute the existing index.
+     *
+     * @param {DesignDoc} existingIndex - The design doc to copy
+     * @param {string} newIndexName - The name of the copy
+     * @returns {Promise<DesignDoc>} The copy response
+     */
 
-var _getIconURL2 = _interopRequireDefault(__webpack_require__(613));
+  }, {
+    key: "copyIndex",
+    value: function () {
+      var _copyIndex = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19(existingIndex, newIndexName) {
+        var ddoc, rev, path, options;
+        return _regenerator.default.wrap(function _callee19$(_context19) {
+          while (1) {
+            switch (_context19.prev = _context19.next) {
+              case 0:
+                ddoc = existingIndex._id.split('/')[1];
+                rev = existingIndex._rev;
+                path = (0, _utils.uri)(_templateObject10(), this.doctype, ddoc, rev);
+                options = {
+                  headers: {
+                    Destination: "_design/".concat(newIndexName)
+                  }
+                };
+                return _context19.abrupt("return", this.stackClient.fetchJSON('POST', path, null, options));
 
-var _logDeprecate = _interopRequireDefault(__webpack_require__(615));
+              case 5:
+              case "end":
+                return _context19.stop();
+            }
+          }
+        }, _callee19, this);
+      }));
 
-var _xhrFetch = __webpack_require__(616);
+      function copyIndex(_x23, _x24) {
+        return _copyIndex.apply(this, arguments);
+      }
 
-var _microee = _interopRequireDefault(__webpack_require__(447));
+      return copyIndex;
+    }()
+    /**
+     * Find an existing mango index based on the query definition
+     *
+     * This is useful to avoid creating new indexes having the
+     * same definition of an existing one.
+     *
+     * @param {MangoSelector}     selector  The query selector
+     * @param {MangoQueryOptions} options   The find options
+     *
+     * @returns {Promise<DesignDoc>} A matching index if it exists
+     * @private
+     */
 
-var _errors = _interopRequireWildcard(__webpack_require__(582));
+  }, {
+    key: "findExistingIndex",
+    value: function () {
+      var _findExistingIndex = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee20(selector, options) {
+        var sort, indexedFields, partialFilter, indexes, fieldsToIndex, existingIndex;
+        return _regenerator.default.wrap(function _callee20$(_context20) {
+          while (1) {
+            switch (_context20.prev = _context20.next) {
+              case 0:
+                sort = options.sort, indexedFields = options.indexedFields, partialFilter = options.partialFilter;
+                _context20.next = 3;
+                return this.fetchAllMangoIndexes();
 
-var _logger = _interopRequireDefault(__webpack_require__(587));
+              case 3:
+                indexes = _context20.sent;
 
-var _promiseCache = _interopRequireDefault(__webpack_require__(617));
+                if (!(indexes.length < 1)) {
+                  _context20.next = 6;
+                  break;
+                }
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+                return _context20.abrupt("return", null);
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+              case 6:
+                sort = (0, _mangoIndex.transformSort)(sort);
+                fieldsToIndex = indexedFields ? indexedFields : (0, _mangoIndex.getIndexFields)({
+                  sort: sort,
+                  selector: selector
+                });
+                existingIndex = indexes.find(function (index) {
+                  return (0, _mangoIndex.isMatchingIndex)(index, fieldsToIndex, partialFilter);
+                });
+                return _context20.abrupt("return", existingIndex);
 
-var normalizeUri = function normalizeUri(uriArg) {
-  var uri = uriArg;
-  if (uri === null) return null;
+              case 10:
+              case "end":
+                return _context20.stop();
+            }
+          }
+        }, _callee20, this);
+      }));
 
-  while (uri[uri.length - 1] === '/') {
-    uri = uri.slice(0, -1);
-  }
+      function findExistingIndex(_x25, _x26) {
+        return _findExistingIndex.apply(this, arguments);
+      }
 
-  return uri;
-};
-/**
- * Main API against the `cozy-stack` server.
- */
-
-
-var CozyStackClient = /*#__PURE__*/function () {
-  function CozyStackClient(options) {
-    (0, _classCallCheck2.default)(this, CozyStackClient);
-
-    var opts = _objectSpread({}, options);
-
-    var token = opts.token,
-        _opts$uri = opts.uri,
-        uri = _opts$uri === void 0 ? '' : _opts$uri;
-    this.options = opts;
-    this.setUri(uri);
-    this.setToken(token);
-    this.konnectors = new _KonnectorCollection.default(this);
-    this.jobs = new _JobCollection.default(this);
-    this._promiseCache = new _promiseCache.default();
-  }
-
-  (0, _createClass2.default)(CozyStackClient, [{
-    key: "isRevocationError",
-    value: function isRevocationError(err) {
-      var message = err === null || err === void 0 ? void 0 : err.message;
-      if (!message) return false;
-      if (_errors.default.CLIENT_NOT_FOUND.test(err.message) || _errors.default.UNREGISTERED_CLIENT.test(err.message)) return true;
-    }
+      return findExistingIndex;
+    }()
     /**
-     * Creates a {@link DocumentCollection} instance.
+     * Calls _changes route from CouchDB
+     * No further treatment is done contrary to fetchchanges
      *
-     * @param  {string} doctype The collection doctype.
-     * @returns {DocumentCollection}
+     * @param {object} couchOptions - Couch options for changes https://kutt.it/5r7MNQ
+     * @param {string} [couchOptions.since] - Bookmark telling CouchDB from which point in time should changes be returned
+     * @param {Array<string>} [couchOptions.doc_ids] - Only return changes for a subset of documents
+     * @param {boolean} [couchOptions.includeDocs] - Includes full documents as part of results
+     * @param {string} [couchOptions.filter] - Filter
+     * @see https://docs.couchdb.org/en/stable/api/database/changes.html
      */
 
   }, {
-    key: "collection",
-    value: function collection(doctype) {
-      if (!doctype) {
-        throw new Error('CozyStackClient.collection() called without a doctype');
-      }
-
-      switch (doctype) {
-        case _AppCollection.APPS_DOCTYPE:
-          return new _AppCollection.default(this);
-
-        case _KonnectorCollection.KONNECTORS_DOCTYPE:
-          return new _KonnectorCollection.default(this);
-
-        case 'io.cozy.files':
-          return new _FileCollection.default(doctype, this);
-
-        case 'io.cozy.sharings':
-          return new _SharingCollection.default(doctype, this);
-
-        case 'io.cozy.permissions':
-          return new _PermissionCollection.default(doctype, this);
-
-        case _ContactsCollection.CONTACTS_DOCTYPE:
-          return new _ContactsCollection.default(doctype, this);
-
-        case _TriggerCollection.TRIGGERS_DOCTYPE:
-          return new _TriggerCollection.default(this);
-
-        case _JobCollection.JOBS_DOCTYPE:
-          return new _JobCollection.default(this);
-
-        case _SettingsCollection.SETTINGS_DOCTYPE:
-          return new _SettingsCollection.default(this);
-
-        case _NotesCollection.NOTES_DOCTYPE:
-          return new _NotesCollection.default(this);
-
-        case _OAuthClientsCollection.OAUTH_CLIENTS_DOCTYPE:
-          return new _OAuthClientsCollection.default(this);
+    key: "fetchChangesRaw",
+    value: function () {
+      var _fetchChangesRaw = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee21(couchOptions) {
+        var hasDocIds, urlParams, method, endpoint, params, result;
+        return _regenerator.default.wrap(function _callee21$(_context21) {
+          while (1) {
+            switch (_context21.prev = _context21.next) {
+              case 0:
+                hasDocIds = couchOptions.doc_ids && couchOptions.doc_ids.length > 0;
+                urlParams = "?".concat([_qs.default.stringify(_objectSpread(_objectSpread({}, (0, _omit.default)(couchOptions, ['doc_ids', 'includeDocs'])), {}, {
+                  include_docs: couchOptions.includeDocs
+                })), hasDocIds && couchOptions.filter === undefined ? 'filter=_doc_ids' : undefined].filter(Boolean).join('&'));
+                method = hasDocIds ? 'POST' : 'GET';
+                endpoint = "/data/".concat(this.doctype, "/_changes").concat(urlParams);
+                params = hasDocIds ? {
+                  doc_ids: couchOptions.doc_ids
+                } : undefined;
+                _context21.next = 7;
+                return this.stackClient.fetchJSON(method, endpoint, params);
 
-        case _ShortcutsCollection.SHORTCUTS_DOCTYPE:
-          return new _ShortcutsCollection.default(this);
+              case 7:
+                result = _context21.sent;
+                return _context21.abrupt("return", result);
 
-        case _AppsRegistryCollection.APPS_REGISTRY_DOCTYPE:
-          return new _AppsRegistryCollection.default(this);
+              case 9:
+              case "end":
+                return _context21.stop();
+            }
+          }
+        }, _callee21, this);
+      }));
 
-        default:
-          return new _DocumentCollection.default(doctype, this);
+      function fetchChangesRaw(_x27) {
+        return _fetchChangesRaw.apply(this, arguments);
       }
-    }
+
+      return fetchChangesRaw;
+    }()
     /**
-     * Fetches an endpoint in an authorized way.
+     * Use Couch _changes API
+     * Deleted and design docs are filtered by default, thus documents are retrieved in the response
+     * (include_docs is set to true in the parameters of _changes).
      *
-     * @param  {string} method The HTTP method.
-     * @param  {string} path The URI.
-     * @param  {object} [body] The payload.
-     * @param  {object} [opts={}] Options for fetch
-     * @returns {object}
-     * @throws {FetchError}
+     * You should use fetchChangesRaw to have low level control on _changes parameters.
+     *
+     * @param {object} couchOptions - Couch options for changes
+     * @param {string} [couchOptions.since] - Bookmark telling CouchDB from which point in time should changes be returned
+     * @param {Array<string>} [couchOptions.doc_ids] - Only return changes for a subset of documents
+     *
+     * @param {object} options - Further options on the returned documents. By default, it is set to { includeDesign: false, includeDeleted: false }
+     * @param {boolean} [options.includeDesign] - Whether to include changes from design docs (needs include_docs to be true)
+     * @param {boolean} [options.includeDeleted] - Whether to include changes for deleted documents (needs include_docs to be true)
+     *
+     * @typedef {object} FetchChangesReturnValue
+     * @property {string} newLastSeq
+     * @property {Array<object>} documents
+     * @returns {Promise<FetchChangesReturnValue>}
      */
 
   }, {
-    key: "fetch",
-    value: function (_fetch) {
-      function fetch(_x, _x2, _x3) {
-        return _fetch.apply(this, arguments);
-      }
-
-      fetch.toString = function () {
-        return _fetch.toString();
-      };
+    key: "fetchChanges",
+    value: function () {
+      var _fetchChanges = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee22() {
+        var _this4 = this;
 
-      return fetch;
-    }( /*#__PURE__*/function () {
-      var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(method, path, body) {
-        var opts,
+        var couchOptions,
             options,
-            headers,
-            fullPath,
-            fetcher,
-            response,
-            _args = arguments;
-        return _regenerator.default.wrap(function _callee$(_context) {
+            opts,
+            result,
+            newLastSeq,
+            docs,
+            _args22 = arguments;
+        return _regenerator.default.wrap(function _callee22$(_context22) {
           while (1) {
-            switch (_context.prev = _context.next) {
+            switch (_context22.prev = _context22.next) {
               case 0:
-                opts = _args.length > 3 && _args[3] !== undefined ? _args[3] : {};
-                options = _objectSpread({}, opts);
-                options.method = method;
-                headers = options.headers = _objectSpread({}, opts.headers);
-
-                if (method !== 'GET' && method !== 'HEAD' && body !== undefined) {
-                  if (headers['Content-Type']) {
-                    options.body = body;
-                  }
-                }
+                couchOptions = _args22.length > 0 && _args22[0] !== undefined ? _args22[0] : {};
+                options = _args22.length > 1 && _args22[1] !== undefined ? _args22[1] : {};
+                opts = {
+                  // Necessary since we deal with deleted and design docs later
+                  includeDocs: true
+                };
 
-                if (!headers.Authorization) {
-                  headers.Authorization = this.getAuthorizationHeader();
-                } // the option credentials:include tells fetch to include the cookies in the
-                // request even for cross-origin requests
-                // it is still prossible to enforce `credentials` value by providing one in the `opts` prop
+                if (typeof couchOptions !== 'object') {
+                  opts.since = couchOptions;
 
+                  _logger.default.warn("fetchChanges use couchOptions as Object not a string, since is deprecated, please use fetchChanges({since: \"".concat(couchOptions, "\"})."));
+                } else if (Object.keys(couchOptions).length > 0) {
+                  Object.assign(opts, couchOptions);
+                }
 
-                options.credentials = options.credentials || 'include';
-                fullPath = this.fullpath(path);
-                fetcher = (0, _xhrFetch.shouldXMLHTTPRequestBeUsed)(method, path, options) ? _xhrFetch.fetchWithXMLHttpRequest : fetch;
-                _context.prev = 9;
-                _context.next = 12;
-                return fetcher(fullPath, options);
+                _context22.next = 6;
+                return this.fetchChangesRaw(opts);
 
-              case 12:
-                response = _context.sent;
+              case 6:
+                result = _context22.sent;
+                newLastSeq = result.last_seq;
+                docs = result.results.map(function (x) {
+                  return x.doc;
+                }).filter(Boolean);
 
-                if (!response.ok) {
-                  this.emit('error', new _errors.FetchError(response, "".concat(response.status, " ").concat(response.statusText)));
+                if (!options.includeDesign) {
+                  docs = docs.filter(function (doc) {
+                    return doc._id.indexOf('_design') !== 0;
+                  });
                 }
 
-                return _context.abrupt("return", response);
-
-              case 17:
-                _context.prev = 17;
-                _context.t0 = _context["catch"](9);
-
-                if (this.isRevocationError(_context.t0)) {
-                  this.onRevocationChange(true);
+                if (!options.includeDeleted) {
+                  docs = docs.filter(function (doc) {
+                    return !doc._deleted;
+                  });
                 }
 
-                throw _context.t0;
+                return _context22.abrupt("return", {
+                  newLastSeq: newLastSeq,
+                  documents: docs.map(function (doc) {
+                    return normalizeDoc(doc, _this4.doctype);
+                  })
+                });
 
-              case 21:
+              case 12:
               case "end":
-                return _context.stop();
+                return _context22.stop();
             }
           }
-        }, _callee, this, [[9, 17]]);
+        }, _callee22, this);
       }));
 
-      return function (_x4, _x5, _x6) {
-        return _ref.apply(this, arguments);
-      };
-    }())
-  }, {
-    key: "onTokenRefresh",
-    value: function onTokenRefresh(token) {
-      if (this.options && this.options.onTokenRefresh) {
-        this.options.onTokenRefresh(token);
+      function fetchChanges() {
+        return _fetchChanges.apply(this, arguments);
       }
+
+      return fetchChanges;
+    }()
+  }], [{
+    key: "normalizeDoctype",
+    value: function normalizeDoctype(doctype) {
+      return this.normalizeDoctypeRawApi(doctype);
     }
+    /**
+     * `normalizeDoctype` for api end points returning json api responses
+     *
+     * @private
+     * @param {string} doctype - Document doctype
+     * @returns {Function} (data, response) => normalizedDocument
+     *                                        using `normalizeDoc`
+     */
+
   }, {
-    key: "onRevocationChange",
-    value: function onRevocationChange(state) {
-      if (this.options && this.options.onRevocationChange) {
-        this.options.onRevocationChange(state);
-      }
+    key: "normalizeDoctypeJsonApi",
+    value: function normalizeDoctypeJsonApi(doctype) {
+      return function (data, response) {
+        // use the "data" attribute of the response
+        return normalizeDoc(data, doctype);
+      };
     }
     /**
-     * Retrieves a new app token by refreshing the currently used token.
+     * `normalizeDoctype` for api end points returning raw documents
      *
-     * @throws {Error} The client should already have an access token to use this function
-     * @throws {Error} The client couldn't fetch a new token
-     * @returns {Promise} A promise that resolves with a new AccessToken object
+     * @private
+     * @param {string} doctype - Document doctype
+     * @returns {Function} (data, response) => normalizedDocument
+     *                                        using `normalizeDoc`
      */
 
   }, {
-    key: "refreshToken",
-    value: function () {
-      var _refreshToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
-        var options, response, html, parser, doc, appNode, data, token, newToken;
-        return _regenerator.default.wrap(function _callee2$(_context2) {
-          while (1) {
-            switch (_context2.prev = _context2.next) {
-              case 0:
-                if (this.token) {
-                  _context2.next = 2;
-                  break;
-                }
-
-                throw new Error('Cannot refresh an empty token');
+    key: "normalizeDoctypeRawApi",
+    value: function normalizeDoctypeRawApi(doctype) {
+      return function (data, response) {
+        // use the response directly
+        return normalizeDoc(response, doctype);
+      };
+    }
+  }]);
+  return DocumentCollection;
+}();
 
-              case 2:
-                options = {
-                  method: 'GET',
-                  credentials: 'include'
-                };
+var _default = DocumentCollection;
+exports.default = _default;
+var normalizeDoctype = DocumentCollection.normalizeDoctype;
+exports.normalizeDoctype = normalizeDoctype;
 
-                if (global.document) {
-                  _context2.next = 5;
-                  break;
-                }
+/***/ }),
+/* 492 */
+/***/ (function(module, exports) {
 
-                throw new Error('Not in a web context, cannot refresh token');
+function _taggedTemplateLiteral(strings, raw) {
+  if (!raw) {
+    raw = strings.slice(0);
+  }
 
-              case 5:
-                _context2.next = 7;
-                return fetch('/?refreshToken', options);
+  return Object.freeze(Object.defineProperties(strings, {
+    raw: {
+      value: Object.freeze(raw)
+    }
+  }));
+}
 
-              case 7:
-                response = _context2.sent;
+module.exports = _taggedTemplateLiteral, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-                if (response.ok) {
-                  _context2.next = 10;
-                  break;
-                }
+/***/ }),
+/* 493 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                throw new Error("couldn't fetch a new token - response " + response.statusCode);
+"use strict";
 
-              case 10:
-                _context2.next = 12;
-                return response.text();
 
-              case 12:
-                html = _context2.sent;
-                parser = new DOMParser();
-                doc = parser.parseFromString(html, 'text/html');
+var _interopRequireDefault = __webpack_require__(1);
 
-                if (doc) {
-                  _context2.next = 17;
-                  break;
-                }
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
 
-                throw Error("couldn't fetch a new token - doc is not html");
+var _flag = _interopRequireDefault(__webpack_require__(494));
 
-              case 17:
-                appNode = doc.querySelector('div[role="application"]');
+/* global __ENABLED_FLAGS__ */
+if (typeof __ENABLED_FLAGS__ !== 'undefined') {
+  _flag.default.enable(__ENABLED_FLAGS__);
+}
 
-                if (appNode) {
-                  _context2.next = 20;
-                  break;
-                }
+var _default = _flag.default;
+exports.default = _default;
 
-                throw Error("couldn't fetch a new token - no div[role=application]");
+/***/ }),
+/* 494 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 20:
-                data = appNode.dataset.cozy ? JSON.parse(appNode.dataset.cozy) : _objectSpread({}, appNode.dataset);
-                token = data.token;
+"use strict";
 
-                if (token) {
-                  token = token || data.cozyToken;
-                }
 
-                if (token) {
-                  _context2.next = 25;
-                  break;
-                }
+var _interopRequireDefault = __webpack_require__(1);
 
-                throw Error("couldn't fetch a new token -- missing data-cozy or data-cozy-token attribute");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.resetFlags = exports.listFlags = exports.initializeFromRemote = exports.initializeFromDOM = exports.initialize = exports.getTemplateData = exports.enable = exports.default = void 0;
 
-              case 25:
-                newToken = new _AppToken.default(token);
-                this.setToken(newToken);
-                this.onTokenRefresh(newToken);
-                return _context2.abrupt("return", newToken);
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-              case 29:
-              case "end":
-                return _context2.stop();
-            }
-          }
-        }, _callee2, this);
-      }));
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-      function refreshToken() {
-        return _refreshToken.apply(this, arguments);
-      }
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-      return refreshToken;
-    }()
-    /**
-     * Fetches JSON in an authorized way.
-     *
-     * @param  {string} method The HTTP method.
-     * @param  {string} path The URI.
-     * @param  {object} body The payload.
-     * @param  {object} options Options
-     * @returns {object}
-     * @throws {FetchError}
-     */
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-  }, {
-    key: "fetchJSON",
-    value: function () {
-      var _fetchJSON = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(method, path, body) {
-        var _this = this;
+var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
 
-        var options,
-            _args3 = arguments;
-        return _regenerator.default.wrap(function _callee3$(_context3) {
-          while (1) {
-            switch (_context3.prev = _context3.next) {
-              case 0:
-                options = _args3.length > 3 && _args3[3] !== undefined ? _args3[3] : {};
-                _context3.prev = 1;
-                _context3.next = 4;
-                return this.fetchJSONWithCurrentToken(method, path, body, options);
+var _dsl = __webpack_require__(495);
 
-              case 4:
-                return _context3.abrupt("return", _context3.sent);
+var _store = _interopRequireDefault(__webpack_require__(519));
 
-              case 7:
-                _context3.prev = 7;
-                _context3.t0 = _context3["catch"](1);
+function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
 
-                if (!(_errors.default.EXPIRED_TOKEN.test(_context3.t0.message) || _errors.default.INVALID_TOKEN.test(_context3.t0.message) || _errors.default.INVALID_TOKEN_ALT.test(_context3.t0.message))) {
-                  _context3.next = 23;
-                  break;
-                }
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
 
-                _context3.prev = 10;
-                _context3.next = 13;
-                return this._promiseCache.exec(function () {
-                  return _this.refreshToken();
-                }, function () {
-                  return 'refreshToken';
-                });
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
 
-              case 13:
-                _context3.next = 18;
-                break;
+var store = new _store.default();
+/**
+ * Public API to use flags
+ * @template T
+ * @param {string} key - The flag key to get or set.
+ * @param {T} [value] - The value to set for the flag key. If not provided, the function will return the value of the key.
+ * @returns {T} The value of the flag key when getting, or the set value when setting.
+ */
 
-              case 15:
-                _context3.prev = 15;
-                _context3.t1 = _context3["catch"](10);
-                throw _context3.t0;
+var flag = function flag(key, value) {
+  if (arguments.length === 1) {
+    return store.get(key);
+  } else {
+    store.set(key, value);
+    return value;
+  }
+};
+/** List all flags from the store */
 
-              case 18:
-                _context3.next = 20;
-                return this.fetchJSONWithCurrentToken(method, path, body, options);
 
-              case 20:
-                return _context3.abrupt("return", _context3.sent);
-
-              case 23:
-                throw _context3.t0;
+var listFlags = function listFlags() {
+  return store.keys().sort();
+};
+/** Resets all the flags */
 
-              case 24:
-              case "end":
-                return _context3.stop();
-            }
-          }
-        }, _callee3, this, [[1, 7], [10, 15]]);
-      }));
 
-      function fetchJSON(_x7, _x8, _x9) {
-        return _fetchJSON.apply(this, arguments);
-      }
+exports.listFlags = listFlags;
 
-      return fetchJSON;
-    }()
-  }, {
-    key: "fetchJSONWithCurrentToken",
-    value: function () {
-      var _fetchJSONWithCurrentToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(method, path, bodyArg) {
-        var options,
-            clonedOptions,
-            headers,
-            body,
-            resp,
-            contentType,
-            isJson,
-            data,
-            _args4 = arguments;
-        return _regenerator.default.wrap(function _callee4$(_context4) {
-          while (1) {
-            switch (_context4.prev = _context4.next) {
-              case 0:
-                options = _args4.length > 3 && _args4[3] !== undefined ? _args4[3] : {};
-                //Since we modify the object later by adding in some case a
-                //content-type, let's clone this object to scope the modification
-                clonedOptions = (0, _cloneDeep.default)(options);
-                headers = clonedOptions.headers = clonedOptions.headers || {};
-                headers['Accept'] = 'application/json';
-                body = bodyArg;
+var resetFlags = function resetFlags() {
+  listFlags().forEach(function (name) {
+    return store.remove(name);
+  });
+};
+/**
+ * Enables several flags
+ *
+ * Supports passing either  object flagName -> flagValue
+ *
+ * @param {string[]|Object} flagsToEnable
+ */
 
-                if (method !== 'GET' && method !== 'HEAD' && body !== undefined) {
-                  if (!headers['Content-Type']) {
-                    headers['Content-Type'] = 'application/json';
-                    body = JSON.stringify(body);
-                  }
-                }
 
-                _context4.next = 8;
-                return this.fetch(method, path, body, clonedOptions);
+exports.resetFlags = resetFlags;
 
-              case 8:
-                resp = _context4.sent;
-                contentType = resp.headers.get('content-type');
-                isJson = contentType && contentType.indexOf('json') >= 0;
-                _context4.next = 13;
-                return isJson ? resp.json() : resp.text();
+var enable = function enable(flagsToEnable) {
+  var flagNameToValue;
 
-              case 13:
-                data = _context4.sent;
+  if (Array.isArray(flagsToEnable)) {
+    if (flagsToEnable.length === 0) {
+      return;
+    } // eslint-disable-next-line no-console
 
-                if (!resp.ok) {
-                  _context4.next = 16;
-                  break;
-                }
 
-                return _context4.abrupt("return", data);
+    console.log('flags.enable: Deprecation warning: prefer to use an object { flag1: true, flag2: true } instead of an array when using flags.enable');
+    flagNameToValue = flagsToEnable.map(function (flagName) {
+      return [flagName, true];
+    });
+  } else if (typeof flagsToEnable === 'object') {
+    flagNameToValue = Object.entries(flagsToEnable);
+  }
 
-              case 16:
-                throw new _errors.FetchError(resp, data);
+  if (!flagNameToValue) {
+    return;
+  }
 
-              case 17:
-              case "end":
-                return _context4.stop();
-            }
-          }
-        }, _callee4, this);
-      }));
+  var _iterator = _createForOfIteratorHelper(flagNameToValue),
+      _step;
 
-      function fetchJSONWithCurrentToken(_x10, _x11, _x12) {
-        return _fetchJSONWithCurrentToken.apply(this, arguments);
-      }
+  try {
+    for (_iterator.s(); !(_step = _iterator.n()).done;) {
+      var _step$value = (0, _slicedToArray2.default)(_step.value, 2),
+          flagName = _step$value[0],
+          flagValue = _step$value[1];
 
-      return fetchJSONWithCurrentToken;
-    }()
-  }, {
-    key: "fullpath",
-    value: function fullpath(path) {
-      if (path.startsWith('http')) {
-        return path;
-      } else {
-        return this.uri + path;
-      }
-    }
-  }, {
-    key: "getAuthorizationHeader",
-    value: function getAuthorizationHeader() {
-      return this.token ? this.token.toAuthHeader() : null;
-    }
-  }, {
-    key: "setCredentials",
-    value: function setCredentials(token) {
-      (0, _logDeprecate.default)('CozyStackClient::setCredentials is deprecated, use CozyStackClient::setToken');
-      return this.setToken(token);
-    }
-  }, {
-    key: "getCredentials",
-    value: function getCredentials() {
-      (0, _logDeprecate.default)('CozyStackClient::getCredentials is deprecated, use CozyStackClient::getAuthorizationHeader');
-      return this.getAuthorizationHeader();
+      flag(flagName, flagValue);
     }
-    /**
-     * Change or set the API token
-     *
-     * @param {string|AppToken|AccessToken} token - Stack API token
-     */
+  } catch (err) {
+    _iterator.e(err);
+  } finally {
+    _iterator.f();
+  }
+};
+/**
+ * Initializes flags from the remote endpoint serving instance flags
+ *
+ * @private
+ * @see  https://docs.cozy.io/en/cozy-stack/settings/#get-settingsflags
+ * @param  {import('cozy-client/types/CozyClient').default} client
+ */
 
-  }, {
-    key: "setToken",
-    value: function setToken(token) {
-      if (!token) {
-        this.token = null;
-      } else {
-        if (token.toAuthHeader) {
-          // AppToken or AccessToken
-          this.token = token;
-        } else if (typeof token === 'string') {
-          // jwt string
-          this.token = new _AppToken.default(token);
-        } else {
-          _logger.default.warn('Cozy-Client: Unknown token format', token);
 
-          throw new Error('Cozy-Client: Unknown token format');
-        }
+exports.enable = enable;
 
-        this.onRevocationChange(false);
+var initializeFromRemote = /*#__PURE__*/function () {
+  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client) {
+    var _yield$client$query, attributes;
+
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            _context.next = 2;
+            return client.query((0, _dsl.Q)('io.cozy.settings').getById('io.cozy.settings.flags'));
+
+          case 2:
+            _yield$client$query = _context.sent;
+            attributes = _yield$client$query.data.attributes;
+            enable(attributes);
+
+          case 5:
+          case "end":
+            return _context.stop();
+        }
       }
-    }
-    /**
-     * Get the access token string, being an oauth token or an app token
-     *
-     * @returns {string} token
-     */
+    }, _callee);
+  }));
 
-  }, {
-    key: "getAccessToken",
-    value: function getAccessToken() {
-      return this.token && this.token.getAccessToken();
-    }
-  }, {
-    key: "setUri",
-    value: function setUri(uri) {
-      this.uri = normalizeUri(uri);
-    }
-  }, {
-    key: "getIconURL",
-    value: function getIconURL(opts) {
-      return (0, _getIconURL2.default)(this, opts);
-    }
-  }]);
-  return CozyStackClient;
+  return function initializeFromRemote(_x) {
+    return _ref.apply(this, arguments);
+  };
 }();
 
-_microee.default.mixin(CozyStackClient);
-
-var _default = CozyStackClient;
-exports.default = _default;
+exports.initializeFromRemote = initializeFromRemote;
 
-/***/ }),
-/* 450 */
-/***/ (function(module, exports, __webpack_require__) {
+var capitalize = function capitalize(str) {
+  return str[0].toUpperCase() + str.slice(1);
+};
 
-var baseClone = __webpack_require__(451);
+var getTemplateData = function getTemplateData(attr) {
+  if (typeof document === 'undefined') {
+    return null;
+  }
 
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1,
-    CLONE_SYMBOLS_FLAG = 4;
+  var allDataNode = document.querySelector('[data-cozy]');
+  var attrNode = document.querySelector("[data-cozy-".concat(attr, "]"));
 
+  try {
+    if (allDataNode) {
+      return JSON.parse(allDataNode.dataset.cozy)[attr];
+    } else if (attrNode) {
+      // eslint-disable-next-line no-console
+      console.warn('Prefer to use [data-cozy] to store template data. <div data-cozy="{{.CozyData}}></div>. "');
+      return JSON.parse(attrNode.dataset["cozy".concat(capitalize(attr))]);
+    } else {
+      return null;
+    }
+  } catch (e) {
+    return null;
+  }
+};
 /**
- * This method is like `_.clone` except that it recursively clones `value`.
- *
- * @static
- * @memberOf _
- * @since 1.0.0
- * @category Lang
- * @param {*} value The value to recursively clone.
- * @returns {*} Returns the deep cloned value.
- * @see _.clone
- * @example
+ * Initialize from the template data injected by cozy-stack into the DOM
  *
- * var objects = [{ 'a': 1 }, { 'b': 2 }];
+ * @private
+ * @see https://docs.cozy.io/en/cozy-stack/client-app-dev/#good-practices-for-your-application
  *
- * var deep = _.cloneDeep(objects);
- * console.log(deep[0] === objects[0]);
- * // => false
+ * @returns {Boolean} - False is DOM initialization could not be completed, true otherwise
  */
-function cloneDeep(value) {
-  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
-}
-
-module.exports = cloneDeep;
 
 
-/***/ }),
-/* 451 */
-/***/ (function(module, exports, __webpack_require__) {
+exports.getTemplateData = getTemplateData;
 
-var Stack = __webpack_require__(341),
-    arrayEach = __webpack_require__(443),
-    assignValue = __webpack_require__(452),
-    baseAssign = __webpack_require__(453),
-    baseAssignIn = __webpack_require__(455),
-    cloneBuffer = __webpack_require__(459),
-    copyArray = __webpack_require__(460),
-    copySymbols = __webpack_require__(461),
-    copySymbolsIn = __webpack_require__(462),
-    getAllKeys = __webpack_require__(384),
-    getAllKeysIn = __webpack_require__(465),
-    getTag = __webpack_require__(390),
-    initCloneArray = __webpack_require__(466),
-    initCloneByTag = __webpack_require__(467),
-    initCloneObject = __webpack_require__(473),
-    isArray = __webpack_require__(324),
-    isBuffer = __webpack_require__(325),
-    isMap = __webpack_require__(475),
-    isObject = __webpack_require__(310),
-    isSet = __webpack_require__(477),
-    keys = __webpack_require__(318),
-    keysIn = __webpack_require__(456);
+var initializeFromDOM = /*#__PURE__*/function () {
+  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
+    var domData;
+    return _regenerator.default.wrap(function _callee2$(_context2) {
+      while (1) {
+        switch (_context2.prev = _context2.next) {
+          case 0:
+            domData = getTemplateData('flags');
 
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1,
-    CLONE_FLAT_FLAG = 2,
-    CLONE_SYMBOLS_FLAG = 4;
+            if (domData) {
+              _context2.next = 3;
+              break;
+            }
 
-/** `Object#toString` result references. */
-var argsTag = '[object Arguments]',
-    arrayTag = '[object Array]',
-    boolTag = '[object Boolean]',
-    dateTag = '[object Date]',
-    errorTag = '[object Error]',
-    funcTag = '[object Function]',
-    genTag = '[object GeneratorFunction]',
-    mapTag = '[object Map]',
-    numberTag = '[object Number]',
-    objectTag = '[object Object]',
-    regexpTag = '[object RegExp]',
-    setTag = '[object Set]',
-    stringTag = '[object String]',
-    symbolTag = '[object Symbol]',
-    weakMapTag = '[object WeakMap]';
+            return _context2.abrupt("return", false);
 
-var arrayBufferTag = '[object ArrayBuffer]',
-    dataViewTag = '[object DataView]',
-    float32Tag = '[object Float32Array]',
-    float64Tag = '[object Float64Array]',
-    int8Tag = '[object Int8Array]',
-    int16Tag = '[object Int16Array]',
-    int32Tag = '[object Int32Array]',
-    uint8Tag = '[object Uint8Array]',
-    uint8ClampedTag = '[object Uint8ClampedArray]',
-    uint16Tag = '[object Uint16Array]',
-    uint32Tag = '[object Uint32Array]';
+          case 3:
+            enable(domData);
+            return _context2.abrupt("return", true);
 
-/** Used to identify `toStringTag` values supported by `_.clone`. */
-var cloneableTags = {};
-cloneableTags[argsTag] = cloneableTags[arrayTag] =
-cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
-cloneableTags[boolTag] = cloneableTags[dateTag] =
-cloneableTags[float32Tag] = cloneableTags[float64Tag] =
-cloneableTags[int8Tag] = cloneableTags[int16Tag] =
-cloneableTags[int32Tag] = cloneableTags[mapTag] =
-cloneableTags[numberTag] = cloneableTags[objectTag] =
-cloneableTags[regexpTag] = cloneableTags[setTag] =
-cloneableTags[stringTag] = cloneableTags[symbolTag] =
-cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
-cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
-cloneableTags[errorTag] = cloneableTags[funcTag] =
-cloneableTags[weakMapTag] = false;
+          case 5:
+          case "end":
+            return _context2.stop();
+        }
+      }
+    }, _callee2);
+  }));
 
+  return function initializeFromDOM() {
+    return _ref2.apply(this, arguments);
+  };
+}();
 /**
- * The base implementation of `_.clone` and `_.cloneDeep` which tracks
- * traversed objects.
+ * Initialize flags from DOM if possible, otherwise from remote endpoint
  *
- * @private
- * @param {*} value The value to clone.
- * @param {boolean} bitmask The bitmask flags.
- *  1 - Deep clone
- *  2 - Flatten inherited properties
- *  4 - Clone symbols
- * @param {Function} [customizer] The function to customize cloning.
- * @param {string} [key] The key of `value`.
- * @param {Object} [object] The parent object of `value`.
- * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
- * @returns {*} Returns the cloned value.
+ * @example
+ *
+ * Flags can be taken from the flags injected by the stack
+ * ```
+ * <div data-cozy="{{ .CozyData }}"></div>
+ *
+ * // not recommended but possible
+ * <div data-flags="{{ .Flags }}"></div>
+ * ````
+ *
+ * @param  {import('cozy-client/types/CozyClient').default} client - A CozyClient
+ * @return {Promise} Resolves when flags have been initialized
  */
-function baseClone(value, bitmask, customizer, key, object, stack) {
-  var result,
-      isDeep = bitmask & CLONE_DEEP_FLAG,
-      isFlat = bitmask & CLONE_FLAT_FLAG,
-      isFull = bitmask & CLONE_SYMBOLS_FLAG;
 
-  if (customizer) {
-    result = object ? customizer(value, key, object, stack) : customizer(value);
-  }
-  if (result !== undefined) {
-    return result;
-  }
-  if (!isObject(value)) {
-    return value;
-  }
-  var isArr = isArray(value);
-  if (isArr) {
-    result = initCloneArray(value);
-    if (!isDeep) {
-      return copyArray(value, result);
-    }
-  } else {
-    var tag = getTag(value),
-        isFunc = tag == funcTag || tag == genTag;
 
-    if (isBuffer(value)) {
-      return cloneBuffer(value, isDeep);
-    }
-    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
-      result = (isFlat || isFunc) ? {} : initCloneObject(value);
-      if (!isDeep) {
-        return isFlat
-          ? copySymbolsIn(value, baseAssignIn(result, value))
-          : copySymbols(value, baseAssign(result, value));
-      }
-    } else {
-      if (!cloneableTags[tag]) {
-        return object ? value : {};
-      }
-      result = initCloneByTag(value, tag, isDeep);
-    }
-  }
-  // Check for circular references and return its corresponding clone.
-  stack || (stack = new Stack);
-  var stacked = stack.get(value);
-  if (stacked) {
-    return stacked;
-  }
-  stack.set(value, result);
+exports.initializeFromDOM = initializeFromDOM;
 
-  if (isSet(value)) {
-    value.forEach(function(subValue) {
-      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
-    });
-  } else if (isMap(value)) {
-    value.forEach(function(subValue, key) {
-      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
-    });
-  }
+var initialize = /*#__PURE__*/function () {
+  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(client) {
+    var domRes;
+    return _regenerator.default.wrap(function _callee3$(_context3) {
+      while (1) {
+        switch (_context3.prev = _context3.next) {
+          case 0:
+            _context3.next = 2;
+            return initializeFromDOM();
 
-  var keysFunc = isFull
-    ? (isFlat ? getAllKeysIn : getAllKeys)
-    : (isFlat ? keysIn : keys);
+          case 2:
+            domRes = _context3.sent;
 
-  var props = isArr ? undefined : keysFunc(value);
-  arrayEach(props || value, function(subValue, key) {
-    if (props) {
-      key = subValue;
-      subValue = value[key];
-    }
-    // Recursively populate clone (susceptible to call stack limits).
-    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
-  });
-  return result;
-}
+            if (!(domRes == false)) {
+              _context3.next = 6;
+              break;
+            }
 
-module.exports = baseClone;
+            _context3.next = 6;
+            return initializeFromRemote(client);
 
+          case 6:
+          case "end":
+            return _context3.stop();
+        }
+      }
+    }, _callee3);
+  }));
 
-/***/ }),
-/* 452 */
-/***/ (function(module, exports, __webpack_require__) {
+  return function initialize(_x2) {
+    return _ref3.apply(this, arguments);
+  };
+}();
 
-var baseAssignValue = __webpack_require__(299),
-    eq = __webpack_require__(346);
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
+exports.initialize = initialize;
 
-/**
- * Assigns `value` to `key` of `object` if the existing value is not equivalent
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {string} key The key of the property to assign.
- * @param {*} value The value to assign.
- */
-function assignValue(object, key, value) {
-  var objValue = object[key];
-  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
-      (value === undefined && !(key in object))) {
-    baseAssignValue(object, key, value);
+var FlagClientPlugin = /*#__PURE__*/function () {
+  function FlagClientPlugin(client) {
+    (0, _classCallCheck2.default)(this, FlagClientPlugin);
+    this.client = client;
+    this.handleLogin = this.handleLogin.bind(this);
+    this.handleLogout = this.handleLogout.bind(this);
+    this.client.on('login', this.handleLogin);
+    this.client.on('logout', this.handleLogout);
+    this.setupInitializing();
+    if (client.isLogged) this.handleLogin();
   }
-}
-
-module.exports = assignValue;
+  /**
+   * Fetches and sets flags from remote
+   */
 
 
-/***/ }),
-/* 453 */
-/***/ (function(module, exports, __webpack_require__) {
+  (0, _createClass2.default)(FlagClientPlugin, [{
+    key: "refresh",
+    value: function () {
+      var _refresh = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
+        return _regenerator.default.wrap(function _callee4$(_context4) {
+          while (1) {
+            switch (_context4.prev = _context4.next) {
+              case 0:
+                _context4.next = 2;
+                return flag.initializeFromRemote(this.client);
 
-var copyObject = __webpack_require__(454),
-    keys = __webpack_require__(318);
+              case 2:
+              case "end":
+                return _context4.stop();
+            }
+          }
+        }, _callee4, this);
+      }));
 
-/**
- * The base implementation of `_.assign` without support for multiple sources
- * or `customizer` functions.
- *
- * @private
- * @param {Object} object The destination object.
- * @param {Object} source The source object.
- * @returns {Object} Returns `object`.
- */
-function baseAssign(object, source) {
-  return object && copyObject(source, keys(source), object);
-}
+      function refresh() {
+        return _refresh.apply(this, arguments);
+      }
 
-module.exports = baseAssign;
+      return refresh;
+    }()
+    /**
+     * Sets up a promise that can be awaited to wait for flag complete
+     * initialization
+     */
 
+  }, {
+    key: "setupInitializing",
+    value: function setupInitializing() {
+      var _this = this;
 
-/***/ }),
-/* 454 */
-/***/ (function(module, exports, __webpack_require__) {
+      this.initializing = new Promise(function (resolve) {
+        _this.resolveInitializing = resolve;
+      });
+    }
+  }, {
+    key: "handleLogin",
+    value: function () {
+      var _handleLogin = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
+        return _regenerator.default.wrap(function _callee5$(_context5) {
+          while (1) {
+            switch (_context5.prev = _context5.next) {
+              case 0:
+                _context5.next = 2;
+                return flag.initialize(this.client);
 
-var assignValue = __webpack_require__(452),
-    baseAssignValue = __webpack_require__(299);
+              case 2:
+                this.resolveInitializing();
+                this.client.emit('plugin:flag:login');
 
-/**
- * Copies properties of `source` to `object`.
- *
- * @private
- * @param {Object} source The object to copy properties from.
- * @param {Array} props The property identifiers to copy.
- * @param {Object} [object={}] The object to copy properties to.
- * @param {Function} [customizer] The function to customize copied values.
- * @returns {Object} Returns `object`.
- */
-function copyObject(source, props, object, customizer) {
-  var isNew = !object;
-  object || (object = {});
+              case 4:
+              case "end":
+                return _context5.stop();
+            }
+          }
+        }, _callee5, this);
+      }));
 
-  var index = -1,
-      length = props.length;
+      function handleLogin() {
+        return _handleLogin.apply(this, arguments);
+      }
 
-  while (++index < length) {
-    var key = props[index];
+      return handleLogin;
+    }()
+  }, {
+    key: "handleLogout",
+    value: function () {
+      var _handleLogout = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
+        return _regenerator.default.wrap(function _callee6$(_context6) {
+          while (1) {
+            switch (_context6.prev = _context6.next) {
+              case 0:
+                flag.reset();
+                this.setupInitializing();
+                this.client.emit('plugin:flag:logout');
 
-    var newValue = customizer
-      ? customizer(object[key], source[key], key, object, source)
-      : undefined;
+              case 3:
+              case "end":
+                return _context6.stop();
+            }
+          }
+        }, _callee6, this);
+      }));
 
-    if (newValue === undefined) {
-      newValue = source[key];
-    }
-    if (isNew) {
-      baseAssignValue(object, key, newValue);
-    } else {
-      assignValue(object, key, newValue);
-    }
-  }
-  return object;
-}
+      function handleLogout() {
+        return _handleLogout.apply(this, arguments);
+      }
 
-module.exports = copyObject;
+      return handleLogout;
+    }()
+  }]);
+  return FlagClientPlugin;
+}();
 
+FlagClientPlugin.pluginName = 'flags';
+flag.store = store;
+flag.list = listFlags;
+flag.reset = resetFlags;
+flag.enable = enable;
+flag.initializeFromRemote = initializeFromRemote;
+flag.initializeFromDOM = initializeFromDOM;
+flag.initialize = initialize;
+flag.plugin = FlagClientPlugin;
+var _default = flag;
+exports.default = _default;
 
 /***/ }),
-/* 455 */
+/* 495 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var copyObject = __webpack_require__(454),
-    keysIn = __webpack_require__(456);
-
-/**
- * The base implementation of `_.assignIn` without support for multiple sources
- * or `customizer` functions.
- *
- * @private
- * @param {Object} object The destination object.
- * @param {Object} source The source object.
- * @returns {Object} Returns `object`.
- */
-function baseAssignIn(object, source) {
-  return object && copyObject(source, keysIn(source), object);
-}
-
-module.exports = baseAssignIn;
+"use strict";
 
 
-/***/ }),
-/* 456 */
-/***/ (function(module, exports, __webpack_require__) {
+var _interopRequireDefault = __webpack_require__(1);
 
-var arrayLikeKeys = __webpack_require__(319),
-    baseKeysIn = __webpack_require__(457),
-    isArrayLike = __webpack_require__(337);
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.QueryDefinition = exports.MutationTypes = exports.Mutations = exports.getDoctypeFromOperation = exports.uploadFile = exports.removeReferencedBy = exports.addReferencedBy = exports.removeReferencesTo = exports.addReferencesTo = exports.deleteDocument = exports.updateDocuments = exports.updateDocument = exports.createDocument = exports.isAGetByIdQuery = exports.Q = void 0;
 
-/**
- * Creates an array of the own and inherited enumerable property names of `object`.
- *
- * **Note:** Non-object values are coerced to objects.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- *   this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.keysIn(new Foo);
- * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
- */
-function keysIn(object) {
-  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
-}
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-module.exports = keysIn;
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-/***/ }),
-/* 457 */
-/***/ (function(module, exports, __webpack_require__) {
+var _findKey = _interopRequireDefault(__webpack_require__(496));
 
-var isObject = __webpack_require__(310),
-    isPrototype = __webpack_require__(334),
-    nativeKeysIn = __webpack_require__(458);
+var _logger = _interopRequireDefault(__webpack_require__(498));
 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
 /**
- * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
+ * @typedef PartialQueryDefinition
  *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
+ * @property {Array} [indexedFields]
+ * @property {Array} [sort]
+ * @property {object} [selector]
+ * @property {object} [partialFilter]
+ * @property {Array} [fields]
  */
-function baseKeysIn(object) {
-  if (!isObject(object)) {
-    return nativeKeysIn(object);
-  }
-  var isProto = isPrototype(object),
-      result = [];
-
-  for (var key in object) {
-    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
-      result.push(key);
-    }
-  }
-  return result;
-}
-
-module.exports = baseKeysIn;
 
+/**
+ * @typedef {object} MangoSelector
+ */
 
-/***/ }),
-/* 458 */
-/***/ (function(module, exports) {
+/**
+ * @typedef {object} MangoPartialFilter
+ */
 
 /**
- * This function is like
- * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
- * except that it includes inherited enumerable properties.
+ * Chainable API to create query definitions to retrieve documents
+ * from a Cozy. `QueryDefinition`s are sent to links.
  *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
+ * @augments {object}
  */
-function nativeKeysIn(object) {
-  var result = [];
-  if (object != null) {
-    for (var key in Object(object)) {
-      result.push(key);
-    }
+var QueryDefinition = /*#__PURE__*/function () {
+  /**
+   * @class
+   *
+   * @param {object} options Initial options for the query definition
+   * @param  {import('../types').Doctype} [options.doctype] - The doctype of the doc.
+   * @param {import('../types').DocId|null} [options.id] - The id of the doc.
+   * @param {Array<import('../types').DocId>} [options.ids] - The ids of the docs.
+   * @param {MangoSelector} [options.selector] - The selector to query the docs.
+   * @param {Array<string>} [options.fields] - The fields to return.
+   * @param {Array<string>} [options.indexedFields] - The fields to index.
+   * @param {MangoPartialFilter} [options.partialFilter] - The partial index definition to filter docs.
+   * @param {Array<object>} [options.sort] - The sorting params.
+   * @param {Array<string>} [options.includes] - The docs to include.
+   * @param {string|null} [options.referenced] - The referenced document.
+   * @param {number|null} [options.limit] - The document's limit to return.
+   * @param {number|null} [options.skip] - The number of docs to skip.
+   * @param {import('../types').CouchDBViewCursor} [options.cursor] - The cursor to paginate views.
+   * @param {string} [options.bookmark] - The bookmark to paginate mango queries.
+   */
+  function QueryDefinition() {
+    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+    (0, _classCallCheck2.default)(this, QueryDefinition);
+    this.doctype = options.doctype;
+    this.id = options.id;
+    this.ids = options.ids;
+    this.selector = options.selector;
+    this.fields = options.fields;
+    this.indexedFields = options.indexedFields;
+    this.partialFilter = options.partialFilter;
+    this.sort = options.sort;
+    this.includes = options.includes;
+    this.referenced = options.referenced;
+    this.limit = options.limit;
+    this.skip = options.skip;
+    this.cursor = options.cursor;
+    this.bookmark = options.bookmark;
   }
-  return result;
-}
-
-module.exports = nativeKeysIn;
+  /**
+   * Checks if the sort order matches the index' fields order.
+   *
+   * When sorting with CouchDB, it is required to:
+   * - use indexed fields
+   * - keep the same order than the indexed fields.
+   *
+   * See https://docs.cozy.io/en/tutorials/data/queries/#sort-data-with-mango
+   *
+   * @param {PartialQueryDefinition} obj - A partial QueryDefinition to check
+   */
 
 
-/***/ }),
-/* 459 */
-/***/ (function(module, exports, __webpack_require__) {
+  (0, _createClass2.default)(QueryDefinition, [{
+    key: "checkSortOrder",
+    value: function checkSortOrder(_ref) {
+      var sort = _ref.sort,
+          selector = _ref.selector,
+          indexedFields = _ref.indexedFields;
 
-/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(306);
+      var _sort = this.sort || sort;
 
-/** Detect free variable `exports`. */
-var freeExports =  true && exports && !exports.nodeType && exports;
+      var _selector = this.selector || selector || {};
 
-/** Detect free variable `module`. */
-var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
+      var _indexedFields = this.indexedFields || indexedFields;
 
-/** Detect the popular CommonJS extension `module.exports`. */
-var moduleExports = freeModule && freeModule.exports === freeExports;
+      if (!_sort) {
+        return;
+      }
 
-/** Built-in value references. */
-var Buffer = moduleExports ? root.Buffer : undefined,
-    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;
+      var fieldsToIndex = _indexedFields || Object.keys(_selector);
 
-/**
- * Creates a clone of  `buffer`.
- *
- * @private
- * @param {Buffer} buffer The buffer to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Buffer} Returns the cloned buffer.
- */
-function cloneBuffer(buffer, isDeep) {
-  if (isDeep) {
-    return buffer.slice();
-  }
-  var length = buffer.length,
-      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
+      if (!fieldsToIndex || fieldsToIndex.length < 1) {
+        return;
+      }
 
-  buffer.copy(result);
-  return result;
-}
+      if (_sort.length > fieldsToIndex.length) {
+        _logger.default.warn("You should not sort on non-indexed fields.\n\n        Sort: ".concat(JSON.stringify(_sort), "\n\n        Indexed fields: ").concat(fieldsToIndex));
 
-module.exports = cloneBuffer;
+        return;
+      }
 
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(197)(module)))
+      for (var i = 0; i < _sort.length; i++) {
+        if (Object.keys(_sort[i])[0] !== fieldsToIndex[i]) {
+          _logger.default.warn("The sort order should be the same than the indexed fields.\n\n          Sort: ".concat(JSON.stringify(_sort), "\n\n          Indexed fields: ").concat(fieldsToIndex, "\n"));
 
-/***/ }),
-/* 460 */
-/***/ (function(module, exports) {
+          return;
+        }
+      }
+    }
+    /**
+     * Checks the selector predicates.
+     *
+     * It is useful to warn the developer when a partial index might be used.
+     *
+     * @param {MangoSelector} selector - The selector definition
+     * @returns {void}
+     */
 
-/**
- * Copies the values of `source` to `array`.
- *
- * @private
- * @param {Array} source The array to copy values from.
- * @param {Array} [array=[]] The array to copy values to.
- * @returns {Array} Returns `array`.
- */
-function copyArray(source, array) {
-  var index = -1,
-      length = source.length;
+  }, {
+    key: "checkSelector",
+    value: function checkSelector(selector) {
+      var hasExistsFalse = (0, _findKey.default)(selector, ['$exists', false]);
 
-  array || (array = Array(length));
-  while (++index < length) {
-    array[index] = source[index];
-  }
-  return array;
-}
+      if (hasExistsFalse) {
+        _logger.default.warn("The \"$exists: false\" predicate should be defined as a partial index for better performance.\n\n        Selector: ".concat(JSON.stringify(selector)));
+      }
 
-module.exports = copyArray;
+      var hasNe = (0, _findKey.default)(selector, '$ne');
 
+      if (hasNe) {
+        _logger.default.info("The use of the $ne operator is more efficient with a partial index.\n\n        Selector: ".concat(JSON.stringify(selector)));
+      }
+    }
+    /**
+     * Check if the selected fields are all included in the selectors
+     *
+     * @param {PartialQueryDefinition} obj - A partial QueryDefinition to check
+     */
 
-/***/ }),
-/* 461 */
-/***/ (function(module, exports, __webpack_require__) {
+  }, {
+    key: "checkSelectFields",
+    value: function checkSelectFields(_ref2) {
+      var fields = _ref2.fields,
+          selector = _ref2.selector,
+          partialFilter = _ref2.partialFilter;
 
-var copyObject = __webpack_require__(454),
-    getSymbols = __webpack_require__(387);
+      var _fields = this.fields || fields;
 
-/**
- * Copies own symbols of `source` to `object`.
- *
- * @private
- * @param {Object} source The object to copy symbols from.
- * @param {Object} [object={}] The object to copy symbols to.
- * @returns {Object} Returns `object`.
- */
-function copySymbols(source, object) {
-  return copyObject(source, getSymbols(source), object);
-}
+      var _selector = this.selector || selector;
 
-module.exports = copySymbols;
+      var _partialFilter = this.partialFilter || partialFilter;
 
+      if (!_fields || !_selector && !_partialFilter) {
+        return;
+      }
 
-/***/ }),
-/* 462 */
-/***/ (function(module, exports, __webpack_require__) {
+      var mergedSelector = _objectSpread(_objectSpread({}, _selector), _partialFilter);
 
-var copyObject = __webpack_require__(454),
-    getSymbolsIn = __webpack_require__(463);
+      var selectorAttributes = Object.keys(mergedSelector);
+      var hasEveryFieldsInSelector = selectorAttributes.every(function (attribute) {
+        return _fields.includes(attribute);
+      });
 
-/**
- * Copies own and inherited symbols of `source` to `object`.
- *
- * @private
- * @param {Object} source The object to copy symbols from.
- * @param {Object} [object={}] The object to copy symbols to.
- * @returns {Object} Returns `object`.
- */
-function copySymbolsIn(source, object) {
-  return copyObject(source, getSymbolsIn(source), object);
-}
+      if (!hasEveryFieldsInSelector) {
+        throw new Error("The .select should includes all the fields used in where or partialIndex.\n        Please fix this query: fields: ".concat(JSON.stringify(this.toDefinition())));
+      }
 
-module.exports = copySymbolsIn;
+      return;
+    }
+    /**
+     * Query a single document on its id.
+     *
+     * @param {string} id   The document id.
+     * @returns {QueryDefinition}  The QueryDefinition object.
+     */
 
+  }, {
+    key: "getById",
+    value: function getById(id) {
+      if (!id) {
+        throw new Error('getById called with undefined id');
+      }
 
-/***/ }),
-/* 463 */
-/***/ (function(module, exports, __webpack_require__) {
+      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
+        id: id
+      }));
+    }
+    /**
+     * Query several documents on their ids.
+     *
+     * @param {Array} ids   The documents ids.
+     * @returns {QueryDefinition}  The QueryDefinition object.
+     */
 
-var arrayPush = __webpack_require__(386),
-    getPrototype = __webpack_require__(464),
-    getSymbols = __webpack_require__(387),
-    stubArray = __webpack_require__(389);
+  }, {
+    key: "getByIds",
+    value: function getByIds(ids) {
+      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
+        ids: ids
+      }));
+    }
+    /**
+     * Query documents with a [mango selector](http://docs.couchdb.org/en/latest/api/database/find.html#find-selectors).
+     * Each field passed in the selector will be indexed, except if the indexField option is used.
+     *
+     * @param {MangoSelector} selector   The Mango selector.
+     * @returns {QueryDefinition}  The QueryDefinition object.
+     */
 
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeGetSymbols = Object.getOwnPropertySymbols;
+  }, {
+    key: "where",
+    value: function where(selector) {
+      this.checkSortOrder({
+        selector: selector
+      });
+      this.checkSelector(selector);
+      this.checkSelectFields({
+        selector: selector
+      });
+      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
+        selector: selector
+      }));
+    }
+    /**
+     * Specify which fields of each object should be returned. If it is omitted, the entire object is returned.
+     *
+     * @param {Array} fields The fields to return.
+     * @returns {QueryDefinition}  The QueryDefinition object.
+     */
 
-/**
- * Creates an array of the own and inherited enumerable symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of symbols.
- */
-var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
-  var result = [];
-  while (object) {
-    arrayPush(result, getSymbols(object));
-    object = getPrototype(object);
-  }
-  return result;
-};
+  }, {
+    key: "select",
+    value: function select(fields) {
+      this.checkSelectFields({
+        fields: fields
+      });
+      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
+        fields: fields
+      }));
+    }
+    /**
+     * Specify which fields should be indexed. This prevent the automatic indexing of the mango fields.
+     *
+     * @param {Array} indexedFields The fields to index.
+     * @returns {QueryDefinition}  The QueryDefinition object.
+     */
 
-module.exports = getSymbolsIn;
+  }, {
+    key: "indexFields",
+    value: function indexFields(indexedFields) {
+      this.checkSortOrder({
+        indexedFields: indexedFields
+      });
+      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
+        indexedFields: indexedFields
+      }));
+    }
+    /**
+     * Specify a [partial index](https://docs.couchdb.org/en/stable/api/database/find.html#find-partial-indexes).
+     * The filter must follow the same syntax than the selector.
+     *
+     * A partial index includes a filter, used to select documents before the indexing.
+     * You can find more information about partial indexes [here](https://docs.cozy.io/en/tutorials/data/advanced/#partial-indexes)
+     *
+     * @param {object} partialFilter - The filter definition.
+     */
 
+  }, {
+    key: "partialIndex",
+    value: function partialIndex(partialFilter) {
+      this.checkSelectFields({
+        partialFilter: partialFilter
+      });
+      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
+        partialFilter: partialFilter
+      }));
+    }
+    /**
+     * Specify how to sort documents, following the [sort syntax](http://docs.couchdb.org/en/latest/api/database/find.html#find-sort)
+     *
+     * @param {Array} sort The list of field name and direction pairs.
+     * @returns {QueryDefinition}  The QueryDefinition object.
+     */
 
-/***/ }),
-/* 464 */
-/***/ (function(module, exports, __webpack_require__) {
+  }, {
+    key: "sortBy",
+    value: function sortBy(sort) {
+      if (!Array.isArray(sort)) {
+        throw new Error("Invalid sort, should be an array ([{ label: \"desc\"}, { name: \"asc\"}]), you passed ".concat(JSON.stringify(sort), "."));
+      }
 
-var overArg = __webpack_require__(336);
+      this.checkSortOrder({
+        sort: sort
+      });
+      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
+        sort: sort
+      }));
+    }
+    /**
+     * Includes documents having a relationships with the ones queried.
+     * For example, query albums including the photos.
+     *
+     * @param {Array} includes The documents to include.
+     * @returns {QueryDefinition}  The QueryDefinition object.
+     */
 
-/** Built-in value references. */
-var getPrototype = overArg(Object.getPrototypeOf, Object);
+  }, {
+    key: "include",
+    value: function include(includes) {
+      if (!Array.isArray(includes)) {
+        throw new Error('include() takes an array of relationship names');
+      }
 
-module.exports = getPrototype;
+      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
+        includes: includes
+      }));
+    }
+    /**
+     * Maximum number of documents returned, useful for pagination. Default is 100.
+     *
+     * @param {number} limit The document's limit.
+     * @returns {QueryDefinition}  The QueryDefinition object.
+     */
 
+  }, {
+    key: "limitBy",
+    value: function limitBy(limit) {
+      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
+        limit: limit
+      }));
+    }
+  }, {
+    key: "UNSAFE_noLimit",
+    value: function UNSAFE_noLimit() {
+      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
+        limit: null
+      }));
+    }
+    /**
+     * Skip the first ‘n’ documents, where ‘n’ is the value specified.
+     *
+     * Beware, this [performs badly](http://docs.couchdb.org/en/stable/ddocs/views/pagination.html#paging-alternate-method) on view's index.
+     *  Prefer cursor-based pagination in such situation.
+     *
+     * @param {number} skip The number of documents to skip.
+     * @returns {QueryDefinition}  The QueryDefinition object.
+     */
 
-/***/ }),
-/* 465 */
-/***/ (function(module, exports, __webpack_require__) {
+  }, {
+    key: "offset",
+    value: function offset(skip) {
+      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
+        bookmark: undefined,
+        cursor: undefined,
+        skip: skip
+      }));
+    }
+    /**
+     * Use [cursor-based](https://docs.cozy.io/en/cozy-stack/jsonapi/#pagination) pagination.
+     * *Warning*: this is only useful for views.
+     * The cursor is a [startkey, startkey_docid] array, where startkey is the view's key,
+     * e.g. ["io.cozy.photos.albums", "album-id"] and startkey_docid is the id of
+     * the starting document of the query, e.g. "file-id".
+     * Use the last docid of each query as startkey_docid to paginate or leave blank for the first query.
+     *
+     * @param {import('../types').CouchDBViewCursor} cursor The cursor for pagination.
+     * @returns {QueryDefinition}  The QueryDefinition object.
+     */
 
-var baseGetAllKeys = __webpack_require__(385),
-    getSymbolsIn = __webpack_require__(463),
-    keysIn = __webpack_require__(456);
+  }, {
+    key: "offsetCursor",
+    value: function offsetCursor(cursor) {
+      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
+        bookmark: undefined,
+        skip: undefined,
+        cursor: cursor
+      }));
+    }
+    /**
+     * Use [bookmark](https://docs.couchdb.org/en/2.2.0/api/database/find.html#pagination) pagination.
+     * Note this only applies for mango-queries (not views) and is way more efficient than skip pagination.
+     * The bookmark is a string returned by the _find response and can be seen as a pointer in
+     * the index for the next query.
+     *
+     * @param {string} bookmark The bookmark to continue a previous paginated query.
+     * @returns {QueryDefinition}  The QueryDefinition object.
+     */
+
+  }, {
+    key: "offsetBookmark",
+    value: function offsetBookmark(bookmark) {
+      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
+        skip: undefined,
+        cursor: undefined,
+        bookmark: bookmark
+      }));
+    }
+    /**
+     * Use the [file reference system](https://docs.cozy.io/en/cozy-stack/references-docs-in-vfs/)
+     *
+     * @param {object} document The reference document
+     * @returns {QueryDefinition}  The QueryDefinition object.
+     */
 
+  }, {
+    key: "referencedBy",
+    value: function referencedBy(document) {
+      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
+        referenced: document
+      }));
+    }
+  }, {
+    key: "toDefinition",
+    value: function toDefinition() {
+      return {
+        doctype: this.doctype,
+        id: this.id,
+        ids: this.ids,
+        selector: this.selector,
+        fields: this.fields,
+        indexedFields: this.indexedFields,
+        partialFilter: this.partialFilter,
+        sort: this.sort,
+        includes: this.includes,
+        referenced: this.referenced,
+        limit: this.limit,
+        skip: this.skip,
+        cursor: this.cursor,
+        bookmark: this.bookmark
+      };
+    }
+  }]);
+  return QueryDefinition;
+}();
 /**
- * Creates an array of own and inherited enumerable property names and
- * symbols of `object`.
+ * Helper to create a QueryDefinition. Recommended way to create
+ * query definitions.
  *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names and symbols.
+ * @param {import('../types').Doctype} doctype - Doctype of the query definition
+ *
+ * @example
+ * ```
+ * import { Q } from 'cozy-client'
+ *
+ * const qDef = Q('io.cozy.todos').where({ _id: '1234' })
+ * ```
  */
-function getAllKeysIn(object) {
-  return baseGetAllKeys(object, keysIn, getSymbolsIn);
-}
-
-module.exports = getAllKeysIn;
-
-
-/***/ }),
-/* 466 */
-/***/ (function(module, exports) {
 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
+exports.QueryDefinition = QueryDefinition;
 
+var Q = function Q(doctype) {
+  return new QueryDefinition({
+    doctype: doctype
+  });
+};
 /**
- * Initializes an array clone.
+ * Check if the query is a getById() query
  *
- * @private
- * @param {Array} array The array to clone.
- * @returns {Array} Returns the initialized clone.
+ * @param {QueryDefinition} queryDefinition The query definition
+ *
+ * @returns {boolean}
  */
-function initCloneArray(array) {
-  var length = array.length,
-      result = new array.constructor(length);
 
-  // Add properties assigned by `RegExp#exec`.
-  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
-    result.index = array.index;
-    result.input = array.input;
-  }
-  return result;
-}
 
-module.exports = initCloneArray;
+exports.Q = Q;
 
+var isAGetByIdQuery = function isAGetByIdQuery(queryDefinition) {
+  if (!queryDefinition) return false;
+  var attributes = Object.values(queryDefinition);
+  if (attributes.length === 0) return false; // 2 attrs because we check if id and doctype are not undefined
 
-/***/ }),
-/* 467 */
-/***/ (function(module, exports, __webpack_require__) {
+  return attributes.filter(function (attr) {
+    return attr !== undefined;
+  }).length === 2 && queryDefinition.id !== undefined;
+}; // Mutations
 
-var cloneArrayBuffer = __webpack_require__(468),
-    cloneDataView = __webpack_require__(469),
-    cloneRegExp = __webpack_require__(470),
-    cloneSymbol = __webpack_require__(471),
-    cloneTypedArray = __webpack_require__(472);
 
-/** `Object#toString` result references. */
-var boolTag = '[object Boolean]',
-    dateTag = '[object Date]',
-    mapTag = '[object Map]',
-    numberTag = '[object Number]',
-    regexpTag = '[object RegExp]',
-    setTag = '[object Set]',
-    stringTag = '[object String]',
-    symbolTag = '[object Symbol]';
+exports.isAGetByIdQuery = isAGetByIdQuery;
+var CREATE_DOCUMENT = 'CREATE_DOCUMENT';
+var UPDATE_DOCUMENT = 'UPDATE_DOCUMENT';
+var UPDATE_DOCUMENTS = 'UPDATE_DOCUMENTS';
+var DELETE_DOCUMENT = 'DELETE_DOCUMENT';
+var ADD_REFERENCES_TO = 'ADD_REFERENCES_TO';
+var REMOVE_REFERENCES_TO = 'REMOVE_REFERENCES_TO';
+var ADD_REFERENCED_BY = 'ADD_REFERENCED_BY';
+var REMOVE_REFERENCED_BY = 'REMOVE_REFERENCED_BY';
+var UPLOAD_FILE = 'UPLOAD_FILE';
 
-var arrayBufferTag = '[object ArrayBuffer]',
-    dataViewTag = '[object DataView]',
-    float32Tag = '[object Float32Array]',
-    float64Tag = '[object Float64Array]',
-    int8Tag = '[object Int8Array]',
-    int16Tag = '[object Int16Array]',
-    int32Tag = '[object Int32Array]',
-    uint8Tag = '[object Uint8Array]',
-    uint8ClampedTag = '[object Uint8ClampedArray]',
-    uint16Tag = '[object Uint16Array]',
-    uint32Tag = '[object Uint32Array]';
+var createDocument = function createDocument(document) {
+  return {
+    mutationType: MutationTypes.CREATE_DOCUMENT,
+    document: document
+  };
+};
 
-/**
- * Initializes an object clone based on its `toStringTag`.
- *
- * **Note:** This function only supports cloning values with tags of
- * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
- *
- * @private
- * @param {Object} object The object to clone.
- * @param {string} tag The `toStringTag` of the object to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Object} Returns the initialized clone.
- */
-function initCloneByTag(object, tag, isDeep) {
-  var Ctor = object.constructor;
-  switch (tag) {
-    case arrayBufferTag:
-      return cloneArrayBuffer(object);
+exports.createDocument = createDocument;
 
-    case boolTag:
-    case dateTag:
-      return new Ctor(+object);
+var updateDocument = function updateDocument(document) {
+  return {
+    mutationType: MutationTypes.UPDATE_DOCUMENT,
+    document: document
+  };
+};
 
-    case dataViewTag:
-      return cloneDataView(object, isDeep);
+exports.updateDocument = updateDocument;
 
-    case float32Tag: case float64Tag:
-    case int8Tag: case int16Tag: case int32Tag:
-    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
-      return cloneTypedArray(object, isDeep);
+var updateDocuments = function updateDocuments(documents) {
+  return {
+    mutationType: MutationTypes.UPDATE_DOCUMENTS,
+    documents: documents
+  };
+};
 
-    case mapTag:
-      return new Ctor;
+exports.updateDocuments = updateDocuments;
 
-    case numberTag:
-    case stringTag:
-      return new Ctor(object);
+var deleteDocument = function deleteDocument(document) {
+  return {
+    mutationType: MutationTypes.DELETE_DOCUMENT,
+    document: document
+  };
+};
 
-    case regexpTag:
-      return cloneRegExp(object);
+exports.deleteDocument = deleteDocument;
 
-    case setTag:
-      return new Ctor;
+var addReferencesTo = function addReferencesTo(document, referencedDocuments) {
+  return {
+    mutationType: MutationTypes.ADD_REFERENCES_TO,
+    referencedDocuments: referencedDocuments,
+    document: document
+  };
+};
 
-    case symbolTag:
-      return cloneSymbol(object);
-  }
-}
+exports.addReferencesTo = addReferencesTo;
 
-module.exports = initCloneByTag;
+var removeReferencesTo = function removeReferencesTo(document, referencedDocuments) {
+  return {
+    mutationType: MutationTypes.REMOVE_REFERENCES_TO,
+    referencedDocuments: referencedDocuments,
+    document: document
+  };
+};
 
+exports.removeReferencesTo = removeReferencesTo;
 
-/***/ }),
-/* 468 */
-/***/ (function(module, exports, __webpack_require__) {
+var addReferencedBy = function addReferencedBy(document, referencedDocuments) {
+  return {
+    mutationType: MutationTypes.ADD_REFERENCED_BY,
+    referencedDocuments: referencedDocuments,
+    document: document
+  };
+};
 
-var Uint8Array = __webpack_require__(380);
+exports.addReferencedBy = addReferencedBy;
 
-/**
- * Creates a clone of `arrayBuffer`.
- *
- * @private
- * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
- * @returns {ArrayBuffer} Returns the cloned array buffer.
- */
-function cloneArrayBuffer(arrayBuffer) {
-  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
-  new Uint8Array(result).set(new Uint8Array(arrayBuffer));
-  return result;
-}
+var removeReferencedBy = function removeReferencedBy(document, referencedDocuments) {
+  return {
+    mutationType: MutationTypes.REMOVE_REFERENCED_BY,
+    referencedDocuments: referencedDocuments,
+    document: document
+  };
+};
 
-module.exports = cloneArrayBuffer;
+exports.removeReferencedBy = removeReferencedBy;
 
+var uploadFile = function uploadFile(file, dirPath) {
+  return {
+    mutationType: MutationTypes.UPLOAD_FILE,
+    file: file,
+    dirPath: dirPath
+  };
+};
 
-/***/ }),
-/* 469 */
-/***/ (function(module, exports, __webpack_require__) {
+exports.uploadFile = uploadFile;
 
-var cloneArrayBuffer = __webpack_require__(468);
+var getDoctypeFromOperation = function getDoctypeFromOperation(operation) {
+  if (operation.mutationType) {
+    var type = operation.mutationType;
 
-/**
- * Creates a clone of `dataView`.
- *
- * @private
- * @param {Object} dataView The data view to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Object} Returns the cloned data view.
- */
-function cloneDataView(dataView, isDeep) {
-  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
-  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
-}
+    switch (type) {
+      case CREATE_DOCUMENT:
+        return operation.document._type;
 
-module.exports = cloneDataView;
+      case UPDATE_DOCUMENT:
+        return operation.document._type;
 
+      case UPDATE_DOCUMENTS:
+        return operation.documents[0]._type;
 
-/***/ }),
-/* 470 */
-/***/ (function(module, exports) {
+      case DELETE_DOCUMENT:
+        return operation.document._type;
 
-/** Used to match `RegExp` flags from their coerced string values. */
-var reFlags = /\w*$/;
+      case ADD_REFERENCES_TO:
+        throw new Error('Not implemented');
 
-/**
- * Creates a clone of `regexp`.
- *
- * @private
- * @param {Object} regexp The regexp to clone.
- * @returns {Object} Returns the cloned regexp.
- */
-function cloneRegExp(regexp) {
-  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
-  result.lastIndex = regexp.lastIndex;
-  return result;
-}
+      case UPLOAD_FILE:
+        throw new Error('Not implemented');
 
-module.exports = cloneRegExp;
+      default:
+        throw new Error("Unknown mutationType ".concat(type));
+    }
+  } else {
+    return operation.doctype;
+  }
+};
 
+exports.getDoctypeFromOperation = getDoctypeFromOperation;
+var Mutations = {
+  createDocument: createDocument,
+  updateDocument: updateDocument,
+  updateDocuments: updateDocuments,
+  deleteDocument: deleteDocument,
+  addReferencesTo: addReferencesTo,
+  removeReferencesTo: removeReferencesTo,
+  addReferencedBy: addReferencedBy,
+  removeReferencedBy: removeReferencedBy,
+  uploadFile: uploadFile
+};
+exports.Mutations = Mutations;
+var MutationTypes = {
+  CREATE_DOCUMENT: CREATE_DOCUMENT,
+  UPDATE_DOCUMENT: UPDATE_DOCUMENT,
+  UPDATE_DOCUMENTS: UPDATE_DOCUMENTS,
+  DELETE_DOCUMENT: DELETE_DOCUMENT,
+  ADD_REFERENCES_TO: ADD_REFERENCES_TO,
+  REMOVE_REFERENCES_TO: REMOVE_REFERENCES_TO,
+  ADD_REFERENCED_BY: ADD_REFERENCED_BY,
+  REMOVE_REFERENCED_BY: REMOVE_REFERENCED_BY,
+  UPLOAD_FILE: UPLOAD_FILE
+};
+exports.MutationTypes = MutationTypes;
 
 /***/ }),
-/* 471 */
+/* 496 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Symbol = __webpack_require__(305);
-
-/** Used to convert symbols to primitives and strings. */
-var symbolProto = Symbol ? Symbol.prototype : undefined,
-    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
+var baseFindKey = __webpack_require__(497),
+    baseForOwn = __webpack_require__(315),
+    baseIteratee = __webpack_require__(338);
 
 /**
- * Creates a clone of the `symbol` object.
+ * This method is like `_.find` except that it returns the key of the first
+ * element `predicate` returns truthy for instead of the element itself.
  *
- * @private
- * @param {Object} symbol The symbol object to clone.
- * @returns {Object} Returns the cloned symbol object.
+ * @static
+ * @memberOf _
+ * @since 1.1.0
+ * @category Object
+ * @param {Object} object The object to inspect.
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
+ * @returns {string|undefined} Returns the key of the matched element,
+ *  else `undefined`.
+ * @example
+ *
+ * var users = {
+ *   'barney':  { 'age': 36, 'active': true },
+ *   'fred':    { 'age': 40, 'active': false },
+ *   'pebbles': { 'age': 1,  'active': true }
+ * };
+ *
+ * _.findKey(users, function(o) { return o.age < 40; });
+ * // => 'barney' (iteration order is not guaranteed)
+ *
+ * // The `_.matches` iteratee shorthand.
+ * _.findKey(users, { 'age': 1, 'active': true });
+ * // => 'pebbles'
+ *
+ * // The `_.matchesProperty` iteratee shorthand.
+ * _.findKey(users, ['active', false]);
+ * // => 'fred'
+ *
+ * // The `_.property` iteratee shorthand.
+ * _.findKey(users, 'active');
+ * // => 'barney'
  */
-function cloneSymbol(symbol) {
-  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
+function findKey(object, predicate) {
+  return baseFindKey(object, baseIteratee(predicate, 3), baseForOwn);
 }
 
-module.exports = cloneSymbol;
+module.exports = findKey;
 
 
 /***/ }),
-/* 472 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var cloneArrayBuffer = __webpack_require__(468);
+/* 497 */
+/***/ (function(module, exports) {
 
 /**
- * Creates a clone of `typedArray`.
+ * The base implementation of methods like `_.findKey` and `_.findLastKey`,
+ * without support for iteratee shorthands, which iterates over `collection`
+ * using `eachFunc`.
  *
  * @private
- * @param {Object} typedArray The typed array to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Object} Returns the cloned typed array.
+ * @param {Array|Object} collection The collection to inspect.
+ * @param {Function} predicate The function invoked per iteration.
+ * @param {Function} eachFunc The function to iterate over `collection`.
+ * @returns {*} Returns the found element or its key, else `undefined`.
  */
-function cloneTypedArray(typedArray, isDeep) {
-  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
-  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
+function baseFindKey(collection, predicate, eachFunc) {
+  var result;
+  eachFunc(collection, function(value, key, collection) {
+    if (predicate(value, key, collection)) {
+      result = key;
+      return false;
+    }
+  });
+  return result;
 }
 
-module.exports = cloneTypedArray;
+module.exports = baseFindKey;
 
 
 /***/ }),
-/* 473 */
+/* 498 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseCreate = __webpack_require__(474),
-    getPrototype = __webpack_require__(464),
-    isPrototype = __webpack_require__(334);
-
-/**
- * Initializes an object clone.
- *
- * @private
- * @param {Object} object The object to clone.
- * @returns {Object} Returns the initialized clone.
- */
-function initCloneObject(object) {
-  return (typeof object.constructor == 'function' && !isPrototype(object))
-    ? baseCreate(getPrototype(object))
-    : {};
-}
-
-module.exports = initCloneObject;
+"use strict";
 
 
-/***/ }),
-/* 474 */
-/***/ (function(module, exports, __webpack_require__) {
+var _interopRequireDefault = __webpack_require__(1);
 
-var isObject = __webpack_require__(310);
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
 
-/** Built-in value references. */
-var objectCreate = Object.create;
+var _minilog = _interopRequireDefault(__webpack_require__(499));
 
-/**
- * The base implementation of `_.create` without support for assigning
- * properties to the created object.
- *
- * @private
- * @param {Object} proto The object to inherit from.
- * @returns {Object} Returns the new object.
- */
-var baseCreate = (function() {
-  function object() {}
-  return function(proto) {
-    if (!isObject(proto)) {
-      return {};
-    }
-    if (objectCreate) {
-      return objectCreate(proto);
-    }
-    object.prototype = proto;
-    var result = new object;
-    object.prototype = undefined;
-    return result;
-  };
-}());
+var logger = (0, _minilog.default)('cozy-client');
 
-module.exports = baseCreate;
+_minilog.default.suggest.deny('cozy-client', 'info');
 
+var _default = logger;
+exports.default = _default;
 
 /***/ }),
-/* 475 */
+/* 499 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseIsMap = __webpack_require__(476),
-    baseUnary = __webpack_require__(331),
-    nodeUtil = __webpack_require__(332);
-
-/* Node.js helper references. */
-var nodeIsMap = nodeUtil && nodeUtil.isMap;
-
-/**
- * Checks if `value` is classified as a `Map` object.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a map, else `false`.
- * @example
- *
- * _.isMap(new Map);
- * // => true
- *
- * _.isMap(new WeakMap);
- * // => false
- */
-var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
+module.exports = __webpack_require__(500);
 
-module.exports = isMap;
+var consoleLogger = __webpack_require__(503);
 
+// if we are running inside Electron then use the web version of console.js
+var isElectron = (typeof window !== 'undefined' && window.process && window.process.type === 'renderer');
+if (isElectron) {
+  consoleLogger = __webpack_require__(512).minilog;
+}
 
-/***/ }),
-/* 476 */
-/***/ (function(module, exports, __webpack_require__) {
+// intercept the pipe method and transparently wrap the stringifier, if the
+// destination is a Node core stream
 
-var getTag = __webpack_require__(390),
-    isObjectLike = __webpack_require__(323);
+module.exports.Stringifier = __webpack_require__(516);
 
-/** `Object#toString` result references. */
-var mapTag = '[object Map]';
+var oldPipe = module.exports.pipe;
+module.exports.pipe = function(dest) {
+  if(dest instanceof __webpack_require__(517)) {
+    return oldPipe.call(module.exports, new (module.exports.Stringifier)).pipe(dest);
+  } else {
+    return oldPipe.call(module.exports, dest);
+  }
+};
 
-/**
- * The base implementation of `_.isMap` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a map, else `false`.
- */
-function baseIsMap(value) {
-  return isObjectLike(value) && getTag(value) == mapTag;
-}
+module.exports.defaultBackend = consoleLogger;
+module.exports.defaultFormatter = consoleLogger.formatMinilog;
 
-module.exports = baseIsMap;
+module.exports.backends = {
+  redis: __webpack_require__(518),
+  nodeConsole: consoleLogger,
+  console: consoleLogger
+};
 
 
 /***/ }),
-/* 477 */
+/* 500 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseIsSet = __webpack_require__(478),
-    baseUnary = __webpack_require__(331),
-    nodeUtil = __webpack_require__(332);
-
-/* Node.js helper references. */
-var nodeIsSet = nodeUtil && nodeUtil.isSet;
+var Transform = __webpack_require__(501),
+    Filter = __webpack_require__(502);
 
-/**
- * Checks if `value` is classified as a `Set` object.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a set, else `false`.
- * @example
- *
- * _.isSet(new Set);
- * // => true
- *
- * _.isSet(new WeakSet);
- * // => false
- */
-var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
+var log = new Transform(),
+    slice = Array.prototype.slice;
 
-module.exports = isSet;
+exports = module.exports = function create(name) {
+  var o   = function() { log.write(name, undefined, slice.call(arguments)); return o; };
+  o.debug = function() { log.write(name, 'debug', slice.call(arguments)); return o; };
+  o.info  = function() { log.write(name, 'info',  slice.call(arguments)); return o; };
+  o.warn  = function() { log.write(name, 'warn',  slice.call(arguments)); return o; };
+  o.error = function() { log.write(name, 'error', slice.call(arguments)); return o; };
+  o.group = function() { log.write(name, 'group', slice.call(arguments)); return o; };
+  o.groupEnd = function() { log.write(name, 'groupEnd', slice.call(arguments)); return o; };
+  o.log   = o.debug; // for interface compliance with Node and browser consoles
+  o.suggest = exports.suggest;
+  o.format = log.format;
+  return o;
+};
 
+// filled in separately
+exports.defaultBackend = exports.defaultFormatter = null;
 
-/***/ }),
-/* 478 */
-/***/ (function(module, exports, __webpack_require__) {
+exports.pipe = function(dest) {
+  return log.pipe(dest);
+};
 
-var getTag = __webpack_require__(390),
-    isObjectLike = __webpack_require__(323);
+exports.end = exports.unpipe = exports.disable = function(from) {
+  return log.unpipe(from);
+};
 
-/** `Object#toString` result references. */
-var setTag = '[object Set]';
+exports.Transform = Transform;
+exports.Filter = Filter;
+// this is the default filter that's applied when .enable() is called normally
+// you can bypass it completely and set up your own pipes
+exports.suggest = new Filter();
 
-/**
- * The base implementation of `_.isSet` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a set, else `false`.
- */
-function baseIsSet(value) {
-  return isObjectLike(value) && getTag(value) == setTag;
-}
+exports.enable = function() {
+  if(exports.defaultFormatter) {
+    return log.pipe(exports.suggest) // filter
+              .pipe(exports.defaultFormatter) // formatter
+              .pipe(exports.defaultBackend); // backend
+  }
+  return log.pipe(exports.suggest) // filter
+            .pipe(exports.defaultBackend); // formatter
+};
 
-module.exports = baseIsSet;
 
 
 /***/ }),
-/* 479 */
+/* 501 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
-
-
-var _interopRequireWildcard = __webpack_require__(277);
+var microee = __webpack_require__(447);
 
-var _interopRequireDefault = __webpack_require__(1);
+// Implements a subset of Node's stream.Transform - in a cross-platform manner.
+function Transform() {}
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = exports.normalizeApp = exports.APPS_DOCTYPE = void 0;
+microee.mixin(Transform);
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+// The write() signature is different from Node's
+// --> makes it much easier to work with objects in logs.
+// One of the lessons from v1 was that it's better to target
+// a good browser rather than the lowest common denominator
+// internally.
+// If you want to use external streams, pipe() to ./stringify.js first.
+Transform.prototype.write = function(name, level, args) {
+  this.emit('item', name, level, args);
+};
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+Transform.prototype.end = function() {
+  this.emit('end');
+  this.removeAllListeners();
+};
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+Transform.prototype.pipe = function(dest) {
+  var s = this;
+  // prevent double piping
+  s.emit('unpipe', dest);
+  // tell the dest that it's being piped to
+  dest.emit('pipe', s);
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+  function onItem() {
+    dest.write.apply(dest, Array.prototype.slice.call(arguments));
+  }
+  function onEnd() { !dest._isStdio && dest.end(); }
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+  s.on('item', onItem);
+  s.on('end', onEnd);
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+  s.when('unpipe', function(from) {
+    var match = (from === dest) || typeof from == 'undefined';
+    if(match) {
+      s.removeListener('item', onItem);
+      s.removeListener('end', onEnd);
+      dest.emit('unpipe');
+    }
+    return match;
+  });
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+  return dest;
+};
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+Transform.prototype.unpipe = function(from) {
+  this.emit('unpipe', from);
+  return this;
+};
 
-var _get3 = _interopRequireDefault(__webpack_require__(399));
+Transform.prototype.format = function(dest) {
+  throw new Error([
+    'Warning: .format() is deprecated in Minilog v2! Use .pipe() instead. For example:',
+    'var Minilog = require(\'minilog\');',
+    'Minilog',
+    '  .pipe(Minilog.backends.console.formatClean)',
+    '  .pipe(Minilog.backends.console);'].join('\n'));
+};
 
-var _registry = __webpack_require__(485);
+Transform.mixin = function(dest) {
+  var o = Transform.prototype, k;
+  for (k in o) {
+    o.hasOwnProperty(k) && (dest.prototype[k] = o[k]);
+  }
+};
 
-var _Collection = _interopRequireDefault(__webpack_require__(489));
+module.exports = Transform;
 
-var _DocumentCollection2 = _interopRequireWildcard(__webpack_require__(491));
 
-var _errors = __webpack_require__(582);
+/***/ }),
+/* 502 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _logger = _interopRequireDefault(__webpack_require__(587));
+// default filter
+var Transform = __webpack_require__(501);
 
-function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
+var levelMap = { debug: 1, info: 2, warn: 3, error: 4 };
 
-function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+function Filter() {
+  this.enabled = true;
+  this.defaultResult = true;
+  this.clear();
+}
 
-function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+Transform.mixin(Filter);
 
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+// allow all matching, with level >= given level
+Filter.prototype.allow = function(name, level) {
+  this._white.push({ n: name, l: levelMap[level] });
+  return this;
+};
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+// deny all matching, with level <= given level
+Filter.prototype.deny = function(name, level) {
+  this._black.push({ n: name, l: levelMap[level] });
+  return this;
+};
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-var APPS_DOCTYPE = 'io.cozy.apps';
-exports.APPS_DOCTYPE = APPS_DOCTYPE;
-
-var normalizeApp = function normalizeApp(app, doctype) {
-  return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, app.attributes), app), (0, _DocumentCollection2.normalizeDoc)(app, doctype)), {}, {
-    id: app.id // ignores any 'id' attribute in the manifest
-
-  });
+Filter.prototype.clear = function() {
+  this._white = [];
+  this._black = [];
+  return this;
 };
-/**
- * Extends `DocumentCollection` API along with specific methods for `io.cozy.apps`.
- */
 
+function test(rule, name) {
+  // use .test for RegExps
+  return (rule.n.test ? rule.n.test(name) : rule.n == name);
+};
 
-exports.normalizeApp = normalizeApp;
+Filter.prototype.test = function(name, level) {
+  var i, len = Math.max(this._white.length, this._black.length);
+  for(i = 0; i < len; i++) {
+    if(this._white[i] && test(this._white[i], name) && levelMap[level] >= this._white[i].l) {
+      return true;
+    }
+    if(this._black[i] && test(this._black[i], name) && levelMap[level] <= this._black[i].l) {
+      return false;
+    }
+  }
+  return this.defaultResult;
+};
 
-var AppCollection = /*#__PURE__*/function (_DocumentCollection) {
-  (0, _inherits2.default)(AppCollection, _DocumentCollection);
+Filter.prototype.write = function(name, level, args) {
+  if(!this.enabled || this.test(name, level)) {
+    return this.emit('item', name, level, args);
+  }
+};
 
-  var _super = _createSuper(AppCollection);
+module.exports = Filter;
 
-  function AppCollection(stackClient) {
-    var _this;
 
-    (0, _classCallCheck2.default)(this, AppCollection);
-    _this = _super.call(this, APPS_DOCTYPE, stackClient);
-    _this.endpoint = '/apps/';
-    return _this;
-  }
+/***/ }),
+/* 503 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  (0, _createClass2.default)(AppCollection, [{
-    key: "get",
-    value: function () {
-      var _get2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(idArg, query) {
-        var _this2 = this;
+var Transform = __webpack_require__(501);
 
-        var id, sources, dataFetchers, _iterator, _step, source, res, data;
+function ConsoleBackend() { }
 
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                if (idArg.indexOf('/') > -1) {
-                  id = idArg.split('/')[1];
-                } else {
-                  _logger.default.warn("Deprecated: in next versions of cozy-client, it will not be possible to query apps/konnectors only with id, please use the form ".concat(this.doctype, "/").concat(idArg, "\n\n- Q('io.cozy.apps').getById('banks')\n+ Q('io.cozy.apps').getById('io.cozy.apps/banks')"));
+Transform.mixin(ConsoleBackend);
 
-                  id = idArg;
-                }
+ConsoleBackend.prototype.write = function() {
+  console.log.apply(console, arguments);
+};
 
-                if (!(query && query.sources && (!Array.isArray(query.sources) || query.sources.length === 0))) {
-                  _context.next = 3;
-                  break;
-                }
+var e = new ConsoleBackend();
 
-                throw new Error('Invalid "sources" attribute passed in query, please use an array with at least one element.');
+var levelMap = __webpack_require__(504).levelMap;
 
-              case 3:
-                sources = (0, _get3.default)(query, 'sources', ['stack']);
-                dataFetchers = {
-                  stack: function stack() {
-                    return _Collection.default.get(_this2.stackClient, "".concat(_this2.endpoint).concat(encodeURIComponent(id)), {
-                      normalize: function normalize(data) {
-                        return normalizeApp(data, _this2.doctype);
-                      }
-                    });
-                  },
-                  registry: function registry() {
-                    return _this2.stackClient.fetchJSON('GET', _registry.registryEndpoint + id);
-                  }
-                };
-                _iterator = _createForOfIteratorHelper(sources);
-                _context.prev = 6;
+e.filterEnv = function() {
+  console.error('Minilog.backends.console.filterEnv is deprecated in Minilog v2.');
+  // return the instance of Minilog
+  return __webpack_require__(500);
+};
 
-                _iterator.s();
+e.formatters = [
+    'formatClean', 'formatColor', 'formatNpm',
+    'formatLearnboost', 'formatMinilog', 'formatWithStack', 'formatTime'
+];
 
-              case 8:
-                if ((_step = _iterator.n()).done) {
-                  _context.next = 27;
-                  break;
-                }
+e.formatClean = new (__webpack_require__(505));
+e.formatColor = new (__webpack_require__(506));
+e.formatNpm = new (__webpack_require__(507));
+e.formatLearnboost = new (__webpack_require__(508));
+e.formatMinilog = new (__webpack_require__(509));
+e.formatWithStack = new (__webpack_require__(510));
+e.formatTime = new (__webpack_require__(511));
 
-                source = _step.value;
-                _context.prev = 10;
-                _context.next = 13;
-                return dataFetchers[source]();
+module.exports = e;
 
-              case 13:
-                res = _context.sent;
 
-                if (!(source !== 'registry')) {
-                  _context.next = 16;
-                  break;
-                }
+/***/ }),
+/* 504 */
+/***/ (function(module, exports) {
 
-                return _context.abrupt("return", res);
+var styles = {
+  //styles
+  bold: ["\x1B[1m", "\x1B[22m"],
+  italic: ["\x1B[3m", "\x1B[23m"],
+  underline: ["\x1B[4m", "\x1B[24m"],
+  inverse: ["\x1B[7m", "\x1B[27m"],
+  //grayscale
+  white: ["\x1B[37m", "\x1B[39m"],
+  grey: ["\x1B[90m", "\x1B[39m"],
+  black: ["\x1B[30m", "\x1B[39m"],
+  //colors
+  blue: ["\x1B[34m", "\x1B[39m"],
+  cyan: ["\x1B[36m", "\x1B[39m"],
+  green: ["\x1B[32m", "\x1B[39m"],
+  magenta: ["\x1B[35m", "\x1B[39m"],
+  red: ["\x1B[31m", "\x1B[39m"],
+  yellow: ["\x1B[33m", "\x1B[39m"]
+};
 
-              case 16:
-                _logger.default.warn("The use of source registry is deprecated since it can polute the io.cozy.apps slice. For exemple, if we request data from the registry, than the app will be present in the io.cozy.apps slice and then the isInstalled() will return true.\n\n            Use Q('io.cozy.apps_registry) instead");
+exports.levelMap = { debug: 1, info: 2, warn: 3, error: 4 };
 
-                data = (0, _registry.transformRegistryFormatToStackFormat)(res);
-                return _context.abrupt("return", {
-                  data: normalizeApp(data, this.doctype)
-                });
+exports.style = function(str, style) {
+  return styles[style][0] + str + styles[style][1];
+};
 
-              case 21:
-                _context.prev = 21;
-                _context.t0 = _context["catch"](10);
 
-                if (!(source === sources[sources.length - 1])) {
-                  _context.next = 25;
-                  break;
-                }
+/***/ }),
+/* 505 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                throw _context.t0;
+var Transform = __webpack_require__(501);
 
-              case 25:
-                _context.next = 8;
-                break;
+function FormatClean() {}
 
-              case 27:
-                _context.next = 32;
-                break;
+Transform.mixin(FormatClean);
 
-              case 29:
-                _context.prev = 29;
-                _context.t1 = _context["catch"](6);
+FormatClean.prototype.write = function(name, level, args) {
+  function pad(s) { return (s.toString().length == 1? '0'+s : s); }
+  this.emit('item', (name ? name + ' ' : '') + (level ? level + ' ' : '') + args.join(' '));
+};
 
-                _iterator.e(_context.t1);
+module.exports = FormatClean;
 
-              case 32:
-                _context.prev = 32;
 
-                _iterator.f();
+/***/ }),
+/* 506 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                return _context.finish(32);
+var Transform = __webpack_require__(501),
+    style = __webpack_require__(504).style;
 
-              case 35:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee, this, [[6, 29, 32, 35], [10, 21]]);
-      }));
+function FormatColor() {}
 
-      function get(_x, _x2) {
-        return _get2.apply(this, arguments);
-      }
+Transform.mixin(FormatColor);
 
-      return get;
-    }()
-    /**
-     * Lists all apps, without filters.
-     *
-     * The returned documents are not paginated by the stack.
-     *
-     * @returns {{data, meta, skip, next}} The JSON API conformant response.
-     * @throws {FetchError}
-     */
+FormatColor.prototype.write = function(name, level, args) {
+  var colors = { debug: 'magenta', info: 'cyan', warn: 'yellow', error: 'red' };
+  function pad(s) { return (s.toString().length == 4? ' '+s : s); }
+  this.emit('item', (name ? name + ' ' : '')
+          + (level ? style('- ' + pad(level.toUpperCase()) + ' -', colors[level]) + ' ' : '')
+          + args.join(' '));
+};
 
-  }, {
-    key: "all",
-    value: function () {
-      var _all = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
-        var _this3 = this;
+module.exports = FormatColor;
 
-        var resp;
-        return _regenerator.default.wrap(function _callee2$(_context2) {
-          while (1) {
-            switch (_context2.prev = _context2.next) {
-              case 0:
-                _context2.next = 2;
-                return this.stackClient.fetchJSON('GET', this.endpoint);
 
-              case 2:
-                resp = _context2.sent;
-                return _context2.abrupt("return", {
-                  data: resp.data.map(function (app) {
-                    return normalizeApp(app, _this3.doctype);
-                  }),
-                  meta: {
-                    count: resp.meta.count
-                  },
-                  skip: 0,
-                  next: false
-                });
+/***/ }),
+/* 507 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 4:
-              case "end":
-                return _context2.stop();
-            }
-          }
-        }, _callee2, this);
-      }));
+var Transform = __webpack_require__(501);
 
-      function all() {
-        return _all.apply(this, arguments);
-      }
+function FormatNpm() {}
 
-      return all;
-    }()
-  }, {
-    key: "create",
-    value: function () {
-      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
-        return _regenerator.default.wrap(function _callee3$(_context3) {
-          while (1) {
-            switch (_context3.prev = _context3.next) {
-              case 0:
-                throw new Error('create() method is not available for applications');
+Transform.mixin(FormatNpm);
 
-              case 1:
-              case "end":
-                return _context3.stop();
-            }
-          }
-        }, _callee3);
-      }));
+FormatNpm.prototype.write = function(name, level, args) {
+  var out = {
+    debug: "\x1B[34;40m" + "debug" + "\x1B[39m ",
+    info: "\x1B[32m" + "info" + "\x1B[39m  ",
+    warn: "\x1B[30;41m" + "WARN" + "\x1B[0m  ",
+    error: "\x1B[31;40m" + "ERR!" + "\x1B[0m  "
+  };
+  this.emit(
+    "item",
+    (name ? "\x1B[37;40m" + name + "\x1B[0m " : "") +
+      (level && out[level] ? out[level] : "") +
+      args.join(" ")
+  );
+};
 
-      function create() {
-        return _create.apply(this, arguments);
-      }
+module.exports = FormatNpm;
 
-      return create;
-    }()
-  }, {
-    key: "update",
-    value: function () {
-      var _update = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
-        return _regenerator.default.wrap(function _callee4$(_context4) {
-          while (1) {
-            switch (_context4.prev = _context4.next) {
-              case 0:
-                throw new Error('update() method is not available for applications');
 
-              case 1:
-              case "end":
-                return _context4.stop();
-            }
-          }
-        }, _callee4);
-      }));
+/***/ }),
+/* 508 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      function update() {
-        return _update.apply(this, arguments);
-      }
+var Transform = __webpack_require__(501),
+    style = __webpack_require__(504).style;
 
-      return update;
-    }()
-  }, {
-    key: "destroy",
-    value: function () {
-      var _destroy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
-        return _regenerator.default.wrap(function _callee5$(_context5) {
-          while (1) {
-            switch (_context5.prev = _context5.next) {
-              case 0:
-                throw new Error('destroy() method is not available for applications');
+function FormatLearnboost() {}
 
-              case 1:
-              case "end":
-                return _context5.stop();
-            }
-          }
-        }, _callee5);
-      }));
+Transform.mixin(FormatLearnboost);
 
-      function destroy() {
-        return _destroy.apply(this, arguments);
-      }
+FormatLearnboost.prototype.write = function(name, level, args) {
+  var colors = { debug: 'grey', info: 'cyan', warn: 'yellow', error: 'red' };
+  this.emit('item', (name ? style(name +' ', 'grey') : '')
+          + (level ? style(level, colors[level]) + ' ' : '')
+          + args.join(' '));
+};
 
-      return destroy;
-    }()
-  }]);
-  return AppCollection;
-}(_DocumentCollection2.default);
+module.exports = FormatLearnboost;
 
-AppCollection.normalizeDoctype = _DocumentCollection2.default.normalizeDoctypeJsonApi;
-var _default = AppCollection;
-exports.default = _default;
 
 /***/ }),
-/* 480 */
+/* 509 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var setPrototypeOf = __webpack_require__(481);
-
-function _inherits(subClass, superClass) {
-  if (typeof superClass !== "function" && superClass !== null) {
-    throw new TypeError("Super expression must either be null or a function");
-  }
+var Transform = __webpack_require__(501),
+    style = __webpack_require__(504).style,
+    util = __webpack_require__(218);
 
-  subClass.prototype = Object.create(superClass && superClass.prototype, {
-    constructor: {
-      value: subClass,
-      writable: true,
-      configurable: true
-    }
-  });
-  Object.defineProperty(subClass, "prototype", {
-    writable: false
-  });
-  if (superClass) setPrototypeOf(subClass, superClass);
-}
+function FormatMinilog() {}
 
-module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports;
+Transform.mixin(FormatMinilog);
 
-/***/ }),
-/* 481 */
-/***/ (function(module, exports) {
+FormatMinilog.prototype.write = function(name, level, args) {
+  var colors = { debug: 'blue', info: 'cyan', warn: 'yellow', error: 'red' };
+  this.emit('item', (name ? style(name +' ', 'grey') : '')
+            + (level ? style(level, colors[level]) + ' ' : '')
+            + args.map(function(item) {
+              return (typeof item == 'string' ? item : util.inspect(item, null, 3, true));
+            }).join(' '));
+};
 
-function _setPrototypeOf(o, p) {
-  module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
-    o.__proto__ = p;
-    return o;
-  }, module.exports.__esModule = true, module.exports["default"] = module.exports;
-  return _setPrototypeOf(o, p);
-}
+module.exports = FormatMinilog;
 
-module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
 /***/ }),
-/* 482 */
+/* 510 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var _typeof = __webpack_require__(278)["default"];
+var Transform = __webpack_require__(501),
+    style = __webpack_require__(504).style;
 
-var assertThisInitialized = __webpack_require__(483);
+function FormatNpm() {}
 
-function _possibleConstructorReturn(self, call) {
-  if (call && (_typeof(call) === "object" || typeof call === "function")) {
-    return call;
-  } else if (call !== void 0) {
-    throw new TypeError("Derived constructors may only return object or undefined");
-  }
+Transform.mixin(FormatNpm);
 
-  return assertThisInitialized(self);
+function noop(a){
+  return a;
 }
 
-module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports;
+var types = {
+  string: noop,
+  number: noop,
+  default: JSON.stringify.bind(JSON)
+};
 
-/***/ }),
-/* 483 */
-/***/ (function(module, exports) {
+function stringify(args) {
+  return args.map(function(arg) {
+    return (types[typeof arg] || types.default)(arg);
+  });
+}
 
-function _assertThisInitialized(self) {
-  if (self === void 0) {
-    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+FormatNpm.prototype.write = function(name, level, args) {
+  var colors = { debug: 'magenta', info: 'cyan', warn: 'yellow', error: 'red' };
+  function pad(s) { return (s.toString().length == 4? ' '+s : s); }
+  function getStack() {
+    var orig = Error.prepareStackTrace;
+    Error.prepareStackTrace = function (err, stack) {
+      return stack;
+    };
+    var err = new Error;
+    Error.captureStackTrace(err, arguments.callee);
+    var stack = err.stack;
+    Error.prepareStackTrace = orig;
+    return stack;
   }
 
-  return self;
-}
+  var frame = getStack()[5],
+      fileName = FormatNpm.fullPath ? frame.getFileName() : frame.getFileName().replace(/^.*\/(.+)$/, '/$1');
 
-module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports;
+  this.emit('item', (name ? name + ' ' : '')
+          + (level ? style(pad(level), colors[level]) + ' ' : '')
+          + style(fileName + ":" + frame.getLineNumber(), 'grey')
+          + ' '
+          + stringify(args).join(' '));
+};
 
-/***/ }),
-/* 484 */
-/***/ (function(module, exports) {
+FormatNpm.fullPath = true;
+
+module.exports = FormatNpm;
 
-function _getPrototypeOf(o) {
-  module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {
-    return o.__proto__ || Object.getPrototypeOf(o);
-  }, module.exports.__esModule = true, module.exports["default"] = module.exports;
-  return _getPrototypeOf(o);
-}
 
-module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
 /***/ }),
-/* 485 */
+/* 511 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
+var Transform = __webpack_require__(501),
+    style = __webpack_require__(504).style,
+    util = __webpack_require__(218);
 
+function FormatTime() {}
 
-var _interopRequireDefault = __webpack_require__(1);
+function timestamp() {
+  var d = new Date();
+  return ('0' + d.getDate()).slice(-2) + '-' +
+    ('0' + (d.getMonth() + 1)).slice(-2) + '-' +
+    d.getFullYear() + ' ' +
+    ('0' + d.getHours()).slice(-2) + ':' +
+    ('0' + d.getMinutes()).slice(-2) + ':' +
+    ('0' + d.getSeconds()).slice(-2) + '.' +
+    ('00' + d.getMilliseconds()).slice(-3);
+}
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = exports.registryEndpoint = exports.transformRegistryFormatToStackFormat = void 0;
+Transform.mixin(FormatTime);
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+FormatTime.prototype.write = function(name, level, args) {
+  var colors = { debug: 'blue', info: 'cyan', warn: 'yellow', error: 'red' };
+  this.emit('item', style(timestamp() +' ', 'grey')
+            + (name ? style(name +' ', 'grey') : '')
+            + (level ? style(level, colors[level]) + ' ' : '')
+            + args.map(function(item) {
+              return (typeof item == 'string' ? item : util.inspect(item, null, 3, true));
+            }).join(' '));
+};
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+module.exports = FormatTime;
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+/***/ }),
+/* 512 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+var Transform = __webpack_require__(501);
 
-var _get = _interopRequireDefault(__webpack_require__(399));
+var newlines = /\n+$/,
+    logger = new Transform();
 
-__webpack_require__(486);
+logger.write = function(name, level, args) {
+  var i = args.length-1;
+  if (typeof console === 'undefined' || !console.log) {
+    return;
+  }
+  if(console.log.apply) {
+    return console.log.apply(console, [name, level].concat(args));
+  } else if(JSON && JSON.stringify) {
+    // console.log.apply is undefined in IE8 and IE9
+    // for IE8/9: make console.log at least a bit less awful
+    if(args[i] && typeof args[i] == 'string') {
+      args[i] = args[i].replace(newlines, '');
+    }
+    try {
+      for(i = 0; i < args.length; i++) {
+        args[i] = JSON.stringify(args[i]);
+      }
+    } catch(e) {}
+    console.log(args.join(' '));
+  }
+};
 
-var _terms = _interopRequireDefault(__webpack_require__(487));
+logger.formatters = ['color', 'minilog'];
+logger.color = __webpack_require__(513);
+logger.minilog = __webpack_require__(515);
 
-var _constants = __webpack_require__(488);
+module.exports = logger;
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+/***/ }),
+/* 513 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var transformRegistryFormatToStackFormat = function transformRegistryFormatToStackFormat(doc) {
-  return _objectSpread({
-    id: (0, _get.default)(doc, 'latest_version.manifest.source'),
-    attributes: (0, _get.default)(doc, 'latest_version.manifest')
-  }, doc);
-};
+var Transform = __webpack_require__(501),
+    color = __webpack_require__(514);
 
-exports.transformRegistryFormatToStackFormat = transformRegistryFormatToStackFormat;
-var registryEndpoint = '/registry/';
-exports.registryEndpoint = registryEndpoint;
+var colors = { debug: ['cyan'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },
+    logger = new Transform();
 
-var queryPartFromOptions = function queryPartFromOptions(options) {
-  var query = new URLSearchParams(options).toString();
-  return query ? "?".concat(query) : '';
+logger.write = function(name, level, args) {
+  var fn = console.log;
+  if(console[level] && console[level].apply) {
+    fn = console[level];
+    fn.apply(console, [ '%c'+name+' %c'+level, color('gray'), color.apply(color, colors[level])].concat(args));
+  }
 };
 
-var getBaseRoute = function getBaseRoute(app) {
-  var type = app.type; // TODO node is an historic type, it should be `konnector`, check with the back
+// NOP, because piping the formatted logs can only cause trouble.
+logger.pipe = function() { };
 
-  var route = type === _constants.APP_TYPE.KONNECTOR || type === 'node' ? 'konnectors' : 'apps';
-  return "/".concat(route);
+module.exports = logger;
+
+
+/***/ }),
+/* 514 */
+/***/ (function(module, exports) {
+
+var hex = {
+  black: '#000',
+  red: '#c23621',
+  green: '#25bc26',
+  yellow: '#bbbb00',
+  blue:  '#492ee1',
+  magenta: '#d338d3',
+  cyan: '#33bbc8',
+  gray: '#808080',
+  purple: '#708'
 };
-/**
- * @typedef {object} RegistryApp
- * @property {string} slug
- * @property {object} terms
- * @property {boolean} installed
- * @property {string} type
- */
+function color(fg, isInverse) {
+  if(isInverse) {
+    return 'color: #fff; background: '+hex[fg]+';';
+  } else {
+    return 'color: '+hex[fg]+';';
+  }
+}
 
-/**
- * @typedef {"dev"|"beta"|"stable"} RegistryAppChannel
- */
+module.exports = color;
 
 
-var Registry = /*#__PURE__*/function () {
-  function Registry(options) {
-    (0, _classCallCheck2.default)(this, Registry);
+/***/ }),
+/* 515 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    if (!options.client) {
-      throw new Error('Need to pass a client to instantiate a Registry API.');
-    }
+var Transform = __webpack_require__(501),
+    color = __webpack_require__(514),
+    colors = { debug: ['gray'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },
+    logger = new Transform();
 
-    this.client = options.client;
+logger.write = function(name, level, args) {
+  var fn = console.log;
+  if(level != 'debug' && console[level]) {
+    fn = console[level];
   }
-  /**
-   * Installs or updates an app from a source.
-   *
-   * Accepts the terms if the app has them.
-   *
-   * @param  {RegistryApp} app - App to be installed
-   * @param  {string} source - String (ex: registry://drive/stable)
-   * @returns {Promise}
-   */
 
+  var subset = [], i = 0;
+  if(level != 'info') {
+    for(; i < args.length; i++) {
+      if(typeof args[i] != 'string') break;
+    }
+    fn.apply(console, [ '%c'+name +' '+ args.slice(0, i).join(' '), color.apply(color, colors[level]) ].concat(args.slice(i)));
+  } else {
+    fn.apply(console, [ '%c'+name, color.apply(color, colors[level]) ].concat(args));
+  }
+};
 
-  (0, _createClass2.default)(Registry, [{
-    key: "installApp",
-    value: function () {
-      var _installApp = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(app, source) {
-        var slug, terms, searchParams, isUpdate, querypart, verb, baseRoute;
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                slug = app.slug, terms = app.terms;
-                searchParams = {};
-                isUpdate = app.installed;
-                if (isUpdate) searchParams.PermissionsAcked = isUpdate;
-                if (source) searchParams.Source = source;
-                querypart = queryPartFromOptions(searchParams);
+// NOP, because piping the formatted logs can only cause trouble.
+logger.pipe = function() { };
 
-                if (!terms) {
-                  _context.next = 9;
-                  break;
-                }
+module.exports = logger;
 
-                _context.next = 9;
-                return _terms.default.save(this.client, terms);
 
-              case 9:
-                verb = app.installed ? 'PUT' : 'POST';
-                baseRoute = getBaseRoute(app);
-                return _context.abrupt("return", this.client.stackClient.fetchJSON(verb, "".concat(baseRoute, "/").concat(slug).concat(querypart)));
+/***/ }),
+/* 516 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 12:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee, this);
-      }));
+var Transform = __webpack_require__(501);
 
-      function installApp(_x, _x2) {
-        return _installApp.apply(this, arguments);
+function Stringify() {}
+
+Transform.mixin(Stringify);
+
+Stringify.prototype.write = function(name, level, args) {
+  var result = [];
+  if(name) result.push(name);
+  if(level) result.push(level);
+  result = result.concat(args);
+  for(var i = 0; i < result.length; i++) {
+    if(result[i] && typeof result[i] == 'object') {
+      // Buffers in Node.js look bad when stringified
+      if(result[i].constructor && result[i].constructor.isBuffer) {
+        result[i] = result[i].toString();
+      } else {
+        try {
+          result[i] = JSON.stringify(result[i]);
+        } catch(stringifyError) {
+          // happens when an object has a circular structure
+          // do not throw an error, when printing, the toString() method of the object will be used
+        }
       }
+    } else {
+      result[i] = result[i];
+    }
+  }
+  this.emit('item',  result.join(' ') + '\n');
+};
 
-      return installApp;
-    }()
-    /**
-     * Uninstalls an app.
-     *
-     * @param  {RegistryApp} app - App to be installed
-     * @returns {Promise}
-     */
+module.exports = Stringify;
 
-  }, {
-    key: "uninstallApp",
-    value: function () {
-      var _uninstallApp = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(app) {
-        var slug, baseRoute;
-        return _regenerator.default.wrap(function _callee2$(_context2) {
-          while (1) {
-            switch (_context2.prev = _context2.next) {
-              case 0:
-                slug = app.slug;
-                baseRoute = getBaseRoute(app);
-                return _context2.abrupt("return", this.client.stackClient.fetchJSON('DELETE', "".concat(baseRoute, "/").concat(slug)));
 
-              case 3:
-              case "end":
-                return _context2.stop();
-            }
-          }
-        }, _callee2, this);
-      }));
+/***/ }),
+/* 517 */
+/***/ (function(module, exports) {
 
-      function uninstallApp(_x3) {
-        return _uninstallApp.apply(this, arguments);
-      }
+module.exports = require("stream");
 
-      return uninstallApp;
-    }()
-    /**
-     * Fetch at most 200 apps from the channel
-     *
-     * @param  {object} params - Fetching parameters
-     * @param  {string} params.type - "webapp" or "konnector"
-     * @param  {RegistryAppChannel} params.channel - The channel of the apps to fetch
-     * @param  {string} params.limit - maximum number of fetched apps - defaults to 200
-     *
-     * @returns {Promise<Array<RegistryApp>>}
-     */
+/***/ }),
+/* 518 */
+/***/ (function(module, exports) {
 
-  }, {
-    key: "fetchApps",
-    value: function () {
-      var _fetchApps = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(params) {
-        var channel, type, _params$limit, limit, searchParams, querypart, _yield$this$client$st, apps;
+function RedisBackend(options) {
+  this.client = options.client;
+  this.key = options.key;
+}
 
-        return _regenerator.default.wrap(function _callee3$(_context3) {
-          while (1) {
-            switch (_context3.prev = _context3.next) {
-              case 0:
-                channel = params.channel, type = params.type, _params$limit = params.limit, limit = _params$limit === void 0 ? '200' : _params$limit;
-                searchParams = {
-                  limit: limit,
-                  versionsChannel: channel,
-                  latestChannelVersion: channel
-                };
-                querypart = new URLSearchParams(searchParams).toString();
+RedisBackend.prototype.write = function(str) {
+  this.client.rpush(this.key, str);
+};
 
-                if (type) {
-                  // Unfortunately, URLSearchParams encodes brackets so we have to do
-                  // the querypart handling manually
-                  querypart = querypart + "&filter[type]=".concat(type);
-                }
+RedisBackend.prototype.end = function() {};
 
-                _context3.next = 6;
-                return this.client.stackClient.fetchJSON('GET', "/registry?".concat(querypart));
+RedisBackend.prototype.clear = function(cb) {
+  this.client.del(this.key, cb);
+};
 
-              case 6:
-                _yield$this$client$st = _context3.sent;
-                apps = _yield$this$client$st.data;
-                return _context3.abrupt("return", apps);
+module.exports = RedisBackend;
 
-              case 9:
-              case "end":
-                return _context3.stop();
-            }
-          }
-        }, _callee3, this);
-      }));
 
-      function fetchApps(_x4) {
-        return _fetchApps.apply(this, arguments);
-      }
+/***/ }),
+/* 519 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      return fetchApps;
-    }()
-    /**
-     * Fetch the list of apps that are in maintenance mode
-     *
-     * @returns {Promise<Array<RegistryApp>>}
-     */
+"use strict";
 
-  }, {
-    key: "fetchAppsInMaintenance",
-    value: function fetchAppsInMaintenance() {
-      return this.client.stackClient.fetchJSON('GET', '/registry/maintenance');
-    }
-    /**
-     * Fetch the status of a single app on the registry
-     *
-     * @param  {string} slug - The slug of the app to fetch
-     *
-     * @returns {Promise<RegistryApp>}
-     */
 
-  }, {
-    key: "fetchApp",
-    value: function fetchApp(slug) {
-      return this.client.stackClient.fetchJSON('GET', "/registry/".concat(slug));
-    }
-    /**
-     * Fetch the latest version of an app for the given channel and slug
-     *
-     * @param  {object} params - Fetching parameters
-     * @param  {string} params.slug - The slug of the app to fetch
-     * @param  {RegistryAppChannel} params.channel - The channel of the app to fetch
-     * @param  {string} params.version - The version of the app to fetch. Can also be "latest"
-     *
-     * @returns {Promise<RegistryApp>}
-     */
+var _interopRequireDefault = __webpack_require__(1);
 
-  }, {
-    key: "fetchAppVersion",
-    value: function fetchAppVersion(params) {
-      if (!params.slug) {
-        throw new Error('Need to pass a slug to use fetchAppVersion');
-      }
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
 
-      var slug = params.slug,
-          channel = params.channel,
-          version = params.version;
-      var finalChannel = !channel && (!version || version === 'latest') ? 'stable' : channel;
-      var url = "/registry/".concat(slug, "/");
+var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
 
-      if (finalChannel) {
-        url += "".concat(finalChannel, "/").concat(version || 'latest');
-      } else {
-        url += "".concat(version);
-      }
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-      return this.client.stackClient.fetchJSON('GET', url);
-    }
-  }]);
-  return Registry;
-}();
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-var _default = Registry;
-exports.default = _default;
+var _microee = _interopRequireDefault(__webpack_require__(447));
 
-/***/ }),
-/* 486 */
-/***/ (function(module, exports) {
+var _lsAdapter = _interopRequireDefault(__webpack_require__(520));
 
 /**
+ * In memory key value storage.
  *
- *
- * @author Jerry Bendy <jerry@icewingcc.com>
- * @licence MIT
- *
+ * Can potentially be backed by localStorage if present
+
+ * Emits `change` when a key is set (eventEmitter)
  */
+var FlagStore = /*#__PURE__*/function () {
+  function FlagStore() {
+    (0, _classCallCheck2.default)(this, FlagStore);
+    this.store = {};
 
-(function(self) {
-    'use strict';
+    if (typeof localStorage !== 'undefined') {
+      this.longtermStore = _lsAdapter.default;
+    }
 
-    var nativeURLSearchParams = (function() {
-            // #41 Fix issue in RN
-            try {
-                if (self.URLSearchParams && (new self.URLSearchParams('foo=bar')).get('foo') === 'bar') {
-                    return self.URLSearchParams;
-                }
-            } catch (e) {}
-            return null;
-        })(),
-        isSupportObjectConstructor = nativeURLSearchParams && (new nativeURLSearchParams({a: 1})).toString() === 'a=1',
-        // There is a bug in safari 10.1 (and earlier) that incorrectly decodes `%2B` as an empty space and not a plus.
-        decodesPlusesCorrectly = nativeURLSearchParams && (new nativeURLSearchParams('s=%2B').get('s') === '+'),
-        __URLSearchParams__ = "__URLSearchParams__",
-        // Fix bug in Edge which cannot encode ' &' correctly
-        encodesAmpersandsCorrectly = nativeURLSearchParams ? (function() {
-            var ampersandTest = new nativeURLSearchParams();
-            ampersandTest.append('s', ' &');
-            return ampersandTest.toString() === 's=+%26';
-        })() : true,
-        prototype = URLSearchParamsPolyfill.prototype,
-        iterable = !!(self.Symbol && self.Symbol.iterator);
+    this.restore();
+  }
 
-    if (nativeURLSearchParams && isSupportObjectConstructor && decodesPlusesCorrectly && encodesAmpersandsCorrectly) {
+  (0, _createClass2.default)(FlagStore, [{
+    key: "restore",
+    value: function restore() {
+      if (!this.longtermStore) {
         return;
-    }
+      }
 
+      var allValues = this.longtermStore.getAll();
 
-    /**
-     * Make a URLSearchParams instance
-     *
-     * @param {object|string|URLSearchParams} search
-     * @constructor
-     */
-    function URLSearchParamsPolyfill(search) {
-        search = search || "";
+      for (var _i = 0, _Object$entries = Object.entries(allValues); _i < _Object$entries.length; _i++) {
+        var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
+            flag = _Object$entries$_i[0],
+            val = _Object$entries$_i[1];
 
-        // support construct object with another URLSearchParams instance
-        if (search instanceof URLSearchParams || search instanceof URLSearchParamsPolyfill) {
-            search = search.toString();
-        }
-        this [__URLSearchParams__] = parseToDict(search);
+        this.store[flag] = val;
+        this.emit('change', flag);
+      }
+    }
+  }, {
+    key: "keys",
+    value: function keys() {
+      return Object.keys(this.store);
     }
+  }, {
+    key: "get",
+    value: function get(name) {
+      // eslint-disable-next-line no-prototype-builtins
+      if (this.store.hasOwnProperty(name)) {
+        return this.store[name];
+      }
 
+      if (typeof name === 'string') {
+        var nameElements = name.split('.');
+        var size = nameElements.length;
 
-    /**
-     * Appends a specified key/value pair as a new search parameter.
-     *
-     * @param {string} name
-     * @param {string} value
-     */
-    prototype.append = function(name, value) {
-        appendTo(this [__URLSearchParams__], name, value);
-    };
+        for (var idx = size - 1; idx > 0; idx--) {
+          var currentKey = nameElements.slice(0, idx).join('.'); // eslint-disable-next-line no-prototype-builtins
 
-    /**
-     * Deletes the given search parameter, and its associated value,
-     * from the list of all search parameters.
-     *
-     * @param {string} name
-     */
-    prototype['delete'] = function(name) {
-        delete this [__URLSearchParams__] [name];
-    };
+          if (this.store.hasOwnProperty(currentKey)) {
+            return nameElements.slice(idx, size).reduce(function (previousValue, currentValue) {
+              // eslint-disable-next-line no-prototype-builtins
+              return previousValue && previousValue.hasOwnProperty(currentValue) ? previousValue[currentValue] : null;
+            }, this.store[currentKey]);
+          }
+        }
+      }
 
-    /**
-     * Returns the first value associated to the given search parameter.
-     *
-     * @param {string} name
-     * @returns {string|null}
-     */
-    prototype.get = function(name) {
-        var dict = this [__URLSearchParams__];
-        return this.has(name) ? dict[name][0] : null;
-    };
-
-    /**
-     * Returns all the values association with a given search parameter.
-     *
-     * @param {string} name
-     * @returns {Array}
-     */
-    prototype.getAll = function(name) {
-        var dict = this [__URLSearchParams__];
-        return this.has(name) ? dict [name].slice(0) : [];
-    };
-
-    /**
-     * Returns a Boolean indicating if such a search parameter exists.
-     *
-     * @param {string} name
-     * @returns {boolean}
-     */
-    prototype.has = function(name) {
-        return hasOwnProperty(this [__URLSearchParams__], name);
-    };
+      return null;
+    }
+  }, {
+    key: "set",
+    value: function set(name, value) {
+      if (this.longtermStore) {
+        this.longtermStore.setItem(name, value);
+      }
 
-    /**
-     * Sets the value associated to a given search parameter to
-     * the given value. If there were several values, delete the
-     * others.
-     *
-     * @param {string} name
-     * @param {string} value
-     */
-    prototype.set = function set(name, value) {
-        this [__URLSearchParams__][name] = ['' + value];
-    };
+      this.store[name] = value;
+      this.emit('change', name);
+    }
+  }, {
+    key: "remove",
+    value: function remove(name) {
+      delete this.store[name];
 
-    /**
-     * Returns a string containg a query string suitable for use in a URL.
-     *
-     * @returns {string}
-     */
-    prototype.toString = function() {
-        var dict = this[__URLSearchParams__], query = [], i, key, name, value;
-        for (key in dict) {
-            name = encode(key);
-            for (i = 0, value = dict[key]; i < value.length; i++) {
-                query.push(name + '=' + encode(value[i]));
-            }
-        }
-        return query.join('&');
-    };
+      if (this.longtermStore) {
+        this.longtermStore.removeItem(name);
+      }
 
-    // There is a bug in Safari 10.1 and `Proxy`ing it is not enough.
-    var forSureUsePolyfill = !decodesPlusesCorrectly;
-    var useProxy = (!forSureUsePolyfill && nativeURLSearchParams && !isSupportObjectConstructor && self.Proxy);
-    var propValue; 
-    if (useProxy) {
-        // Safari 10.0 doesn't support Proxy, so it won't extend URLSearchParams on safari 10.0
-        propValue = new Proxy(nativeURLSearchParams, {
-            construct: function (target, args) {
-                return new target((new URLSearchParamsPolyfill(args[0]).toString()));
-            }
-        })
-        // Chrome <=60 .toString() on a function proxy got error "Function.prototype.toString is not generic"
-        propValue.toString = Function.prototype.toString.bind(URLSearchParamsPolyfill);
-    } else {
-        propValue = URLSearchParamsPolyfill;
+      this.emit('change', name);
     }
-    /*
-     * Apply polifill to global object and append other prototype into it
-     */
-    Object.defineProperty(self, 'URLSearchParams', {
-        value: propValue
-    });
+  }]);
+  return FlagStore;
+}();
 
-    var USPProto = self.URLSearchParams.prototype;
+_microee.default.mixin(FlagStore);
 
-    USPProto.polyfill = true;
+var _default = FlagStore;
+exports.default = _default;
 
-    /**
-     *
-     * @param {function} callback
-     * @param {object} thisArg
-     */
-    USPProto.forEach = USPProto.forEach || function(callback, thisArg) {
-        var dict = parseToDict(this.toString());
-        Object.getOwnPropertyNames(dict).forEach(function(name) {
-            dict[name].forEach(function(value) {
-                callback.call(thisArg, value, name, this);
-            }, this);
-        }, this);
-    };
+/***/ }),
+/* 520 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    /**
-     * Sort all name-value pairs
-     */
-    USPProto.sort = USPProto.sort || function() {
-        var dict = parseToDict(this.toString()), keys = [], k, i, j;
-        for (k in dict) {
-            keys.push(k);
-        }
-        keys.sort();
+"use strict";
 
-        for (i = 0; i < keys.length; i++) {
-            this['delete'](keys[i]);
-        }
-        for (i = 0; i < keys.length; i++) {
-            var key = keys[i], values = dict[key];
-            for (j = 0; j < values.length; j++) {
-                this.append(key, values[j]);
-            }
-        }
-    };
 
-    /**
-     * Returns an iterator allowing to go through all keys of
-     * the key/value pairs contained in this object.
-     *
-     * @returns {function}
-     */
-    USPProto.keys = USPProto.keys || function() {
-        var items = [];
-        this.forEach(function(item, name) {
-            items.push(name);
-        });
-        return makeIterator(items);
-    };
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.prefix = exports.getKey = exports.default = void 0;
 
-    /**
-     * Returns an iterator allowing to go through all values of
-     * the key/value pairs contained in this object.
-     *
-     * @returns {function}
-     */
-    USPProto.values = USPProto.values || function() {
-        var items = [];
-        this.forEach(function(item) {
-            items.push(item);
-        });
-        return makeIterator(items);
-    };
+function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
 
-    /**
-     * Returns an iterator allowing to go through all key/value
-     * pairs contained in this object.
-     *
-     * @returns {function}
-     */
-    USPProto.entries = USPProto.entries || function() {
-        var items = [];
-        this.forEach(function(item, name) {
-            items.push([name, item]);
-        });
-        return makeIterator(items);
-    };
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
 
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
 
-    if (iterable) {
-        USPProto[self.Symbol.iterator] = USPProto[self.Symbol.iterator] || USPProto.entries;
-    }
+// eslint-disable-next-line no-redeclare
 
+/* global localStorage */
+var prefix = 'flag__';
+exports.prefix = prefix;
 
-    function encode(str) {
-        var replace = {
-            '!': '%21',
-            "'": '%27',
-            '(': '%28',
-            ')': '%29',
-            '~': '%7E',
-            '%20': '+',
-            '%00': '\x00'
-        };
-        return encodeURIComponent(str).replace(/[!'\(\)~]|%20|%00/g, function(match) {
-            return replace[match];
-        });
-    }
+var getKey = function getKey(name) {
+  return prefix + name;
+};
 
-    function decode(str) {
-        return str
-            .replace(/[ +]/g, '%20')
-            .replace(/(%[a-f0-9]{2})+/ig, function(match) {
-                return decodeURIComponent(match);
-            });
-    }
+exports.getKey = getKey;
 
-    function makeIterator(arr) {
-        var iterator = {
-            next: function() {
-                var value = arr.shift();
-                return {done: value === undefined, value: value};
-            }
-        };
+var listFlagLocalStorage = function listFlagLocalStorage() {
+  return Object.keys(localStorage).filter(function (x) {
+    return x.indexOf(prefix) === 0;
+  }).map(function (x) {
+    return x.replace(prefix, '');
+  });
+};
+/**
+ * Gets a flag from localStorage, parses value from JSON
+ *
+ * @param  {String} flag
+ */
 
-        if (iterable) {
-            iterator[self.Symbol.iterator] = function() {
-                return iterator;
-            };
-        }
 
-        return iterator;
-    }
+var getItem = function getItem(flag) {
+  var val = localStorage.getItem(getKey(flag));
+  var parsed = val ? JSON.parse(val) : val;
+  return parsed;
+};
+/**
+ * Stores a flag in localStorage, stringifies the value for storage
+ *
+ * @param  {String} flag
+ * @param  {String} value
+ */
 
-    function parseToDict(search) {
-        var dict = {};
 
-        if (typeof search === "object") {
-            // if `search` is an array, treat it as a sequence
-            if (isArray(search)) {
-                for (var i = 0; i < search.length; i++) {
-                    var item = search[i];
-                    if (isArray(item) && item.length === 2) {
-                        appendTo(dict, item[0], item[1]);
-                    } else {
-                        throw new TypeError("Failed to construct 'URLSearchParams': Sequence initializer must only contain pair elements");
-                    }
-                }
+var setItem = function setItem(flag, value) {
+  var str = JSON.stringify(value);
+  return localStorage.setItem(getKey(flag), str);
+};
+/**
+ * Removes a flag from localStorage
+ *
+ * @param  {String} flag
+ */
 
-            } else {
-                for (var key in search) {
-                    if (search.hasOwnProperty(key)) {
-                        appendTo(dict, key, search[key]);
-                    }
-                }
-            }
 
-        } else {
-            // remove first '?'
-            if (search.indexOf("?") === 0) {
-                search = search.slice(1);
-            }
+var removeItem = function removeItem(flag) {
+  return localStorage.removeItem(getKey(flag));
+};
+/**
+ * Returns all stored flags as an object
+ */
 
-            var pairs = search.split("&");
-            for (var j = 0; j < pairs.length; j++) {
-                var value = pairs [j],
-                    index = value.indexOf('=');
 
-                if (-1 < index) {
-                    appendTo(dict, decode(value.slice(0, index)), decode(value.slice(index + 1)));
+var getAll = function getAll() {
+  var res = {};
 
-                } else {
-                    if (value) {
-                        appendTo(dict, decode(value), '');
-                    }
-                }
-            }
-        }
+  var _iterator = _createForOfIteratorHelper(listFlagLocalStorage()),
+      _step;
 
-        return dict;
+  try {
+    for (_iterator.s(); !(_step = _iterator.n()).done;) {
+      var flag = _step.value;
+      res[flag] = getItem(flag);
     }
+  } catch (err) {
+    _iterator.e(err);
+  } finally {
+    _iterator.f();
+  }
 
-    function appendTo(dict, name, value) {
-        var val = typeof value === 'string' ? value : (
-            value !== null && value !== undefined && typeof value.toString === 'function' ? value.toString() : JSON.stringify(value)
-        );
+  return res;
+};
+/**
+ * Clears all the flags from localstorage
+ */
 
-        // #47 Prevent using `hasOwnProperty` as a property name
-        if (hasOwnProperty(dict, name)) {
-            dict[name].push(val);
-        } else {
-            dict[name] = [val];
-        }
-    }
 
-    function isArray(val) {
-        return !!val && '[object Array]' === Object.prototype.toString.call(val);
-    }
+var clearAll = function clearAll() {
+  var _iterator2 = _createForOfIteratorHelper(listFlagLocalStorage()),
+      _step2;
 
-    function hasOwnProperty(obj, prop) {
-        return Object.prototype.hasOwnProperty.call(obj, prop);
+  try {
+    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
+      var flag = _step2.value;
+      removeItem(flag);
     }
+  } catch (err) {
+    _iterator2.e(err);
+  } finally {
+    _iterator2.f();
+  }
+};
 
-})(typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : this));
-
+var _default = {
+  getAll: getAll,
+  getItem: getItem,
+  setItem: setItem,
+  clearAll: clearAll,
+  removeItem: removeItem
+};
+exports.default = _default;
 
 /***/ }),
-/* 487 */
+/* 521 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _interopRequireDefault = __webpack_require__(1);
-
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.default = void 0;
+exports.formatBytes = exports.slugify = exports.sleep = exports.attempt = exports.uri = void 0;
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+/**
+ * @function
+ * @description Template tag function for URIs encoding
+ *
+ * Will automatically apply `encodeURIComponent` to template literal placeholders
+ *
+ * @example
+ * ```
+ * const safe = uri`/data/${doctype}/_all_docs?limit=${limit}`
+ * ```
+ *
+ * @private
+ */
+var uri = function uri(strings) {
+  var parts = [strings[0]];
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+  for (var i = 0; i < (arguments.length <= 1 ? 0 : arguments.length - 1); i++) {
+    parts.push(encodeURIComponent(i + 1 < 1 || arguments.length <= i + 1 ? undefined : arguments[i + 1]) + strings[i + 1]);
+  }
 
-var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(291));
+  return parts.join('');
+};
+/**
+ * @function
+ * @description Helps to avoid nested try/catch when using async/await
+ *
+ * Inspired by a Go pattern: http://blog.grossman.io/how-to-write-async-await-without-try-catch-blocks-in-javascript/
+ *
+ * @example
+ * ```
+ * if (await attempt(collection.all()) return
+ * await sleep(1000)
+ * if (await attempt(collection.all()) return
+ * await sleep(1000)
+ * return
+ * ```
+ *
+ * @private
+ */
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+exports.uri = uri;
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+var attempt = function attempt(promise) {
+  return promise.then(function () {
+    return true;
+  }).catch(function () {
+    return false;
+  });
+};
+/**
+ * @function
+ * @description Helps to avoid nested try/catch when using async/await — see documentation for attempt
+ * @private
+ */
 
-var TERMS_DOCTYPE = 'io.cozy.terms';
-/* TODO Use collection terms */
 
-function save(_x, _x2) {
-  return _save.apply(this, arguments);
-}
+exports.attempt = attempt;
 
-function _save() {
-  _save = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client, terms) {
-    var id, termsAttributes, _yield$client$query, savedTermsDocs, savedTerms, termsToSave, _termsToSave;
+var sleep = function sleep(time, args) {
+  return new Promise(function (resolve) {
+    setTimeout(resolve, time, args);
+  });
+};
 
-    return _regenerator.default.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            id = terms.id, termsAttributes = (0, _objectWithoutProperties2.default)(terms, ["id"]);
-            _context.next = 3;
-            return client.query({
-              doctype: TERMS_DOCTYPE,
-              selector: {
-                termsId: id,
-                version: termsAttributes.version
-              },
-              limit: 1
-            });
+exports.sleep = sleep;
 
-          case 3:
-            _yield$client$query = _context.sent;
-            savedTermsDocs = _yield$client$query.data;
+var slugify = function slugify(text) {
+  return text.toString().toLowerCase().replace(/\s+/g, '-') // Replace spaces with -
+  .replace(/[^\w-]+/g, '') // Remove all non-word chars
+  .replace(/--+/g, '-') // Replace multiple - with single -
+  .replace(/^-+/, '') // Trim - from start of text
+  .replace(/-+$/, '');
+}; // Trim - from end of text
 
-            if (!(savedTermsDocs && savedTermsDocs.length)) {
-              _context.next = 13;
-              break;
-            }
 
-            // we just update the url if this is the same id and same version
-            // but the url changed
-            savedTerms = savedTermsDocs[0];
+exports.slugify = slugify;
 
-            if (!(savedTerms.termsId == id && savedTerms.version == termsAttributes.version && savedTerms.url != termsAttributes.url)) {
-              _context.next = 11;
-              break;
-            }
+var formatBytes = function formatBytes(bytes) {
+  var decimals = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
+  if (bytes === 0) return '0 Bytes';
+  var k = 1024;
+  var dm = decimals < 0 ? 0 : decimals;
+  var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
+  var i = Math.floor(Math.log(bytes) / Math.log(k));
+  return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
+};
 
-            termsToSave = _objectSpread(_objectSpread({
-              _type: TERMS_DOCTYPE
-            }, savedTerms), {}, {
-              url: termsAttributes.url
-            });
-            _context.next = 11;
-            return client.save(termsToSave);
+exports.formatBytes = formatBytes;
 
-          case 11:
-            _context.next = 16;
-            break;
+/***/ }),
+/* 522 */
+/***/ (function(module, exports, __webpack_require__) {
 
-          case 13:
-            _termsToSave = _objectSpread(_objectSpread({
-              _type: TERMS_DOCTYPE
-            }, termsAttributes), {}, {
-              termsId: id,
-              accepted: true,
-              acceptedAt: new Date()
-            });
-            _context.next = 16;
-            return client.save(_termsToSave);
+var baseUniq = __webpack_require__(423);
 
-          case 16:
-          case "end":
-            return _context.stop();
-        }
-      }
-    }, _callee);
-  }));
-  return _save.apply(this, arguments);
+/**
+ * Creates a duplicate-free version of an array, using
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+ * for equality comparisons, in which only the first occurrence of each element
+ * is kept. The order of result values is determined by the order they occur
+ * in the array.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Array
+ * @param {Array} array The array to inspect.
+ * @returns {Array} Returns the new duplicate free array.
+ * @example
+ *
+ * _.uniq([2, 1, 2]);
+ * // => [2, 1]
+ */
+function uniq(array) {
+  return (array && array.length) ? baseUniq(array) : [];
 }
 
-var _default = {
-  save: save
-};
-exports.default = _default;
-
-/***/ }),
-/* 488 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
+module.exports = uniq;
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.APP_TYPE = void 0;
-var APP_TYPE = {
-  KONNECTOR: 'konnector',
-  WEBAPP: 'webapp'
-};
-exports.APP_TYPE = APP_TYPE;
 
 /***/ }),
-/* 489 */
+/* 523 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
-
+var arrayMap = __webpack_require__(409),
+    baseClone = __webpack_require__(451),
+    baseUnset = __webpack_require__(524),
+    castPath = __webpack_require__(401),
+    copyObject = __webpack_require__(454),
+    customOmitClone = __webpack_require__(528),
+    flatRest = __webpack_require__(530),
+    getAllKeysIn = __webpack_require__(465);
 
-var _interopRequireDefault = __webpack_require__(1);
+/** Used to compose bitmasks for cloning. */
+var CLONE_DEEP_FLAG = 1,
+    CLONE_FLAT_FLAG = 2,
+    CLONE_SYMBOLS_FLAG = 4;
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
+/**
+ * The opposite of `_.pick`; this method creates an object composed of the
+ * own and inherited enumerable property paths of `object` that are not omitted.
+ *
+ * **Note:** This method is considerably slower than `_.pick`.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Object
+ * @param {Object} object The source object.
+ * @param {...(string|string[])} [paths] The property paths to omit.
+ * @returns {Object} Returns the new object.
+ * @example
+ *
+ * var object = { 'a': 1, 'b': '2', 'c': 3 };
+ *
+ * _.omit(object, ['a', 'c']);
+ * // => { 'b': '2' }
+ */
+var omit = flatRest(function(object, paths) {
+  var result = {};
+  if (object == null) {
+    return result;
+  }
+  var isDeep = false;
+  paths = arrayMap(paths, function(path) {
+    path = castPath(path, object);
+    isDeep || (isDeep = path.length > 1);
+    return path;
+  });
+  copyObject(object, getAllKeysIn(object), result);
+  if (isDeep) {
+    result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
+  }
+  var length = paths.length;
+  while (length--) {
+    baseUnset(result, paths[length]);
+  }
+  return result;
 });
-exports.default = exports.Collection = exports.isDocumentUpdateConflict = exports.isNoUsableIndexError = exports.isIndexNotUsedWarning = exports.isIndexConflictError = exports.isIndexNotFoundError = exports.dontThrowNotFoundError = void 0;
-
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+module.exports = omit;
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+/***/ }),
+/* 524 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _types = __webpack_require__(490);
+var castPath = __webpack_require__(401),
+    last = __webpack_require__(525),
+    parent = __webpack_require__(526),
+    toKey = __webpack_require__(410);
 
 /**
- * Handler for error response which return a empty value for "not found" error
+ * The base implementation of `_.unset`.
  *
- * @param  {Error}         error - An error
- * @param  {Array|object|null}  data Data to return in case of "not found" error
- * @returns {object}        JsonAPI response with empty data in case of "not
- * found" error.
+ * @private
+ * @param {Object} object The object to modify.
+ * @param {Array|string} path The property path to unset.
+ * @returns {boolean} Returns `true` if the property is deleted, else `false`.
  */
-var dontThrowNotFoundError = function dontThrowNotFoundError(error) {
-  var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
+function baseUnset(object, path) {
+  path = castPath(path, object);
+  object = parent(object, path);
+  return object == null || delete object[toKey(last(path))];
+}
 
-  if (error.message.match(/not_found/)) {
-    var expectsCollection = Array.isArray(data); // Return expected JsonAPI attributes : collections are expecting
-    // meta, skip and next attribute
+module.exports = baseUnset;
 
-    return expectsCollection ? {
-      data: data,
-      meta: {
-        count: 0
-      },
-      skip: 0,
-      next: false
-    } : {
-      data: data
-    };
-  }
 
-  throw error;
-};
+/***/ }),
+/* 525 */
+/***/ (function(module, exports) {
+
 /**
- * Helper to identify an index not found error
+ * Gets the last element of `array`.
  *
- * @param {Error} error - An error
- * @returns {Array|null} - Whether or not the error is an index not found error
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Array
+ * @param {Array} array The array to query.
+ * @returns {*} Returns the last element of `array`.
+ * @example
+ *
+ * _.last([1, 2, 3]);
+ * // => 3
  */
+function last(array) {
+  var length = array == null ? 0 : array.length;
+  return length ? array[length - 1] : undefined;
+}
 
+module.exports = last;
 
-exports.dontThrowNotFoundError = dontThrowNotFoundError;
-
-var isIndexNotFoundError = function isIndexNotFoundError(error) {
-  return error.message.match(/no_index/);
-};
-/**
- * Helper to identify an index conflict
- *
- * @param {Error} error - An error
- * @returns {Array|null} - Whether or not the error is an index conflict error
- */
 
+/***/ }),
+/* 526 */
+/***/ (function(module, exports, __webpack_require__) {
 
-exports.isIndexNotFoundError = isIndexNotFoundError;
+var baseGet = __webpack_require__(400),
+    baseSlice = __webpack_require__(527);
 
-var isIndexConflictError = function isIndexConflictError(error) {
-  return error.message.match(/error_saving_ddoc/);
-};
 /**
- * Helper to identify a not used index
+ * Gets the parent value at `path` of `object`.
  *
- * @param {string} warning - The warning returned by CouchDB
- * @returns {Array|null} Whether or not this is a not used index warning
+ * @private
+ * @param {Object} object The object to query.
+ * @param {Array} path The path to get the parent value of.
+ * @returns {*} Returns the parent value.
  */
+function parent(object, path) {
+  return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
+}
 
+module.exports = parent;
 
-exports.isIndexConflictError = isIndexConflictError;
 
-var isIndexNotUsedWarning = function isIndexNotUsedWarning(warning) {
-  return warning.match(/was not used because it does not contain a valid index for this query/);
-};
+/***/ }),
+/* 527 */
+/***/ (function(module, exports) {
+
 /**
- * Helper to identify a no usable index error
+ * The base implementation of `_.slice` without an iteratee call guard.
  *
- * @param {Error} error - An error
- * @returns {Array|null} - Whether or not the error is a no usable index error
+ * @private
+ * @param {Array} array The array to slice.
+ * @param {number} [start=0] The start position.
+ * @param {number} [end=array.length] The end position.
+ * @returns {Array} Returns the slice of `array`.
  */
+function baseSlice(array, start, end) {
+  var index = -1,
+      length = array.length;
 
+  if (start < 0) {
+    start = -start > length ? 0 : (length + start);
+  }
+  end = end > length ? length : end;
+  if (end < 0) {
+    end += length;
+  }
+  length = start > end ? 0 : ((end - start) >>> 0);
+  start >>>= 0;
 
-exports.isIndexNotUsedWarning = isIndexNotUsedWarning;
+  var result = Array(length);
+  while (++index < length) {
+    result[index] = array[index + start];
+  }
+  return result;
+}
 
-var isNoUsableIndexError = function isNoUsableIndexError(error) {
-  return error.message.match(/no_usable_index/);
-};
-/**
- * Helper to identify a document conflict
- *
- * @param {Error} error - An error
- * @returns {Array|null} - Whether or not the error is a document conflict error
- */
+module.exports = baseSlice;
 
 
-exports.isNoUsableIndexError = isNoUsableIndexError;
+/***/ }),
+/* 528 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isPlainObject = __webpack_require__(529);
 
-var isDocumentUpdateConflict = function isDocumentUpdateConflict(error) {
-  return error.message.match(/Document update conflict/);
-};
 /**
- * Utility class to abstract an regroup identical methods and logics for
- * specific collections.
+ * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain
+ * objects.
+ *
+ * @private
+ * @param {*} value The value to inspect.
+ * @param {string} key The key of the property to inspect.
+ * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
  */
+function customOmitClone(value) {
+  return isPlainObject(value) ? undefined : value;
+}
 
+module.exports = customOmitClone;
 
-exports.isDocumentUpdateConflict = isDocumentUpdateConflict;
 
-var Collection = /*#__PURE__*/function () {
-  function Collection() {
-    (0, _classCallCheck2.default)(this, Collection);
-  }
+/***/ }),
+/* 529 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  (0, _createClass2.default)(Collection, null, [{
-    key: "get",
+var baseGetTag = __webpack_require__(304),
+    getPrototype = __webpack_require__(464),
+    isObjectLike = __webpack_require__(323);
 
-    /**
-     * Utility method aimed to return only one document.
-     *
-     * @param  {CozyStackClient}  stackClient - CozyStackClient
-     * @param  {string}  endpoint - Stack endpoint
-     * @param  {object}  options - Options of the collection
-     * @param  {Function}    options.normalize Callback to normalize response data
-     * (default `data => data`)
-     * @param  {string}  [options.method=GET]  -  HTTP method
-     * @returns {Promise<object>}  JsonAPI response containing normalized
-     * document as data attribute
-     */
-    value: function () {
-      var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(stackClient, endpoint, _ref) {
-        var _ref$normalize, normalize, _ref$method, method, resp;
+/** `Object#toString` result references. */
+var objectTag = '[object Object]';
 
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                _ref$normalize = _ref.normalize, normalize = _ref$normalize === void 0 ? function (data, response) {
-                  return data;
-                } : _ref$normalize, _ref$method = _ref.method, method = _ref$method === void 0 ? 'GET' : _ref$method;
-                _context.prev = 1;
-                _context.next = 4;
-                return stackClient.fetchJSON(method, endpoint);
+/** Used for built-in method references. */
+var funcProto = Function.prototype,
+    objectProto = Object.prototype;
 
-              case 4:
-                resp = _context.sent;
-                return _context.abrupt("return", {
-                  data: normalize(resp.data, resp)
-                });
+/** Used to resolve the decompiled source of functions. */
+var funcToString = funcProto.toString;
 
-              case 8:
-                _context.prev = 8;
-                _context.t0 = _context["catch"](1);
-                return _context.abrupt("return", dontThrowNotFoundError(_context.t0, null));
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
 
-              case 11:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee, null, [[1, 8]]);
-      }));
+/** Used to infer the `Object` constructor. */
+var objectCtorString = funcToString.call(Object);
 
-      function get(_x, _x2, _x3) {
-        return _get.apply(this, arguments);
-      }
+/**
+ * Checks if `value` is a plain object, that is, an object created by the
+ * `Object` constructor or one with a `[[Prototype]]` of `null`.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.8.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
+ * @example
+ *
+ * function Foo() {
+ *   this.a = 1;
+ * }
+ *
+ * _.isPlainObject(new Foo);
+ * // => false
+ *
+ * _.isPlainObject([1, 2, 3]);
+ * // => false
+ *
+ * _.isPlainObject({ 'x': 0, 'y': 0 });
+ * // => true
+ *
+ * _.isPlainObject(Object.create(null));
+ * // => true
+ */
+function isPlainObject(value) {
+  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
+    return false;
+  }
+  var proto = getPrototype(value);
+  if (proto === null) {
+    return true;
+  }
+  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
+  return typeof Ctor == 'function' && Ctor instanceof Ctor &&
+    funcToString.call(Ctor) == objectCtorString;
+}
 
-      return get;
-    }()
-  }]);
-  return Collection;
-}();
+module.exports = isPlainObject;
 
-exports.Collection = Collection;
-var _default = Collection;
-exports.default = _default;
 
 /***/ }),
-/* 490 */
+/* 530 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
+var flatten = __webpack_require__(419),
+    overRest = __webpack_require__(434),
+    setToString = __webpack_require__(436);
 
 /**
- * @typedef {object} CozyStackClient
- * @property {object} oauthOptions oauthOptions
- * @property {string} uri CozyUri
- * @property {Function} fetch fetchMethod
- * @property {Function} fetchJSON fetchJSON
+ * A specialized version of `baseRest` which flattens the rest array.
+ *
+ * @private
+ * @param {Function} func The function to apply a rest parameter to.
+ * @returns {Function} Returns the new function.
  */
-var _default = {};
-exports.default = _default;
-
-/***/ }),
-/* 491 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
+function flatRest(func) {
+  return setToString(overRest(func, undefined, flatten), func + '');
+}
 
+module.exports = flatRest;
 
-var _interopRequireWildcard = __webpack_require__(277);
 
-var _interopRequireDefault = __webpack_require__(1);
+/***/ }),
+/* 531 */
+/***/ (function(module, exports) {
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.normalizeDoc = normalizeDoc;
-exports.normalizeDoctype = exports.default = void 0;
+/**
+ * Gets the first element of `array`.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @alias first
+ * @category Array
+ * @param {Array} array The array to query.
+ * @returns {*} Returns the first element of `array`.
+ * @example
+ *
+ * _.head([1, 2, 3]);
+ * // => 1
+ *
+ * _.head([]);
+ * // => undefined
+ */
+function head(array) {
+  return (array && array.length) ? array[0] : undefined;
+}
 
-var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(291));
+module.exports = head;
 
-var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+/***/ }),
+/* 532 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
+var baseMerge = __webpack_require__(533),
+    createAssigner = __webpack_require__(538);
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+/**
+ * This method is like `_.assign` except that it recursively merges own and
+ * inherited enumerable string keyed properties of source objects into the
+ * destination object. Source properties that resolve to `undefined` are
+ * skipped if a destination value exists. Array and plain object properties
+ * are merged recursively. Other objects and value types are overridden by
+ * assignment. Source objects are applied from left to right. Subsequent
+ * sources overwrite property assignments of previous sources.
+ *
+ * **Note:** This method mutates `object`.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.5.0
+ * @category Object
+ * @param {Object} object The destination object.
+ * @param {...Object} [sources] The source objects.
+ * @returns {Object} Returns `object`.
+ * @example
+ *
+ * var object = {
+ *   'a': [{ 'b': 2 }, { 'd': 4 }]
+ * };
+ *
+ * var other = {
+ *   'a': [{ 'c': 3 }, { 'e': 5 }]
+ * };
+ *
+ * _.merge(object, other);
+ * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
+ */
+var merge = createAssigner(function(object, source, srcIndex) {
+  baseMerge(object, source, srcIndex);
+});
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+module.exports = merge;
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+/***/ }),
+/* 533 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _cozyFlags = _interopRequireDefault(__webpack_require__(493));
+var Stack = __webpack_require__(341),
+    assignMergeValue = __webpack_require__(534),
+    baseFor = __webpack_require__(316),
+    baseMergeDeep = __webpack_require__(535),
+    isObject = __webpack_require__(310),
+    keysIn = __webpack_require__(456),
+    safeGet = __webpack_require__(536);
 
-var _utils = __webpack_require__(521);
+/**
+ * The base implementation of `_.merge` without support for multiple sources.
+ *
+ * @private
+ * @param {Object} object The destination object.
+ * @param {Object} source The source object.
+ * @param {number} srcIndex The index of `source`.
+ * @param {Function} [customizer] The function to customize merged values.
+ * @param {Object} [stack] Tracks traversed source values and their merged
+ *  counterparts.
+ */
+function baseMerge(object, source, srcIndex, customizer, stack) {
+  if (object === source) {
+    return;
+  }
+  baseFor(source, function(srcValue, key) {
+    stack || (stack = new Stack);
+    if (isObject(srcValue)) {
+      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
+    }
+    else {
+      var newValue = customizer
+        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
+        : undefined;
 
-var _uniq = _interopRequireDefault(__webpack_require__(522));
+      if (newValue === undefined) {
+        newValue = srcValue;
+      }
+      assignMergeValue(object, key, newValue);
+    }
+  }, keysIn);
+}
 
-var _omit = _interopRequireDefault(__webpack_require__(523));
+module.exports = baseMerge;
 
-var _head = _interopRequireDefault(__webpack_require__(531));
 
-var _merge = _interopRequireDefault(__webpack_require__(532));
+/***/ }),
+/* 534 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _startsWith = _interopRequireDefault(__webpack_require__(540));
+var baseAssignValue = __webpack_require__(299),
+    eq = __webpack_require__(346);
 
-var _qs = _interopRequireDefault(__webpack_require__(547));
+/**
+ * This function is like `assignValue` except that it doesn't assign
+ * `undefined` values.
+ *
+ * @private
+ * @param {Object} object The object to modify.
+ * @param {string} key The key of the property to assign.
+ * @param {*} value The value to assign.
+ */
+function assignMergeValue(object, key, value) {
+  if ((value !== undefined && !eq(object[key], value)) ||
+      (value === undefined && !(key in object))) {
+    baseAssignValue(object, key, value);
+  }
+}
 
-var _mangoIndex = __webpack_require__(576);
+module.exports = assignMergeValue;
 
-var _Collection = _interopRequireWildcard(__webpack_require__(489));
 
-var querystring = _interopRequireWildcard(__webpack_require__(578));
+/***/ }),
+/* 535 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _errors = __webpack_require__(582);
+var assignMergeValue = __webpack_require__(534),
+    cloneBuffer = __webpack_require__(459),
+    cloneTypedArray = __webpack_require__(472),
+    copyArray = __webpack_require__(460),
+    initCloneObject = __webpack_require__(473),
+    isArguments = __webpack_require__(321),
+    isArray = __webpack_require__(324),
+    isArrayLikeObject = __webpack_require__(441),
+    isBuffer = __webpack_require__(325),
+    isFunction = __webpack_require__(303),
+    isObject = __webpack_require__(310),
+    isPlainObject = __webpack_require__(529),
+    isTypedArray = __webpack_require__(328),
+    safeGet = __webpack_require__(536),
+    toPlainObject = __webpack_require__(537);
 
-var _logger = _interopRequireDefault(__webpack_require__(587));
+/**
+ * A specialized version of `baseMerge` for arrays and objects which performs
+ * deep merges and tracks traversed objects enabling objects with circular
+ * references to be merged.
+ *
+ * @private
+ * @param {Object} object The destination object.
+ * @param {Object} source The source object.
+ * @param {string} key The key of the value to merge.
+ * @param {number} srcIndex The index of `source`.
+ * @param {Function} mergeFunc The function to merge values.
+ * @param {Function} [customizer] The function to customize assigned values.
+ * @param {Object} [stack] Tracks traversed source values and their merged
+ *  counterparts.
+ */
+function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
+  var objValue = safeGet(object, key),
+      srcValue = safeGet(source, key),
+      stacked = stack.get(srcValue);
 
-function _templateObject10() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/_design/", "/copy?rev=", ""]);
+  if (stacked) {
+    assignMergeValue(object, key, stacked);
+    return;
+  }
+  var newValue = customizer
+    ? customizer(objValue, srcValue, (key + ''), object, source, stack)
+    : undefined;
 
-  _templateObject10 = function _templateObject10() {
-    return data;
-  };
+  var isCommon = newValue === undefined;
 
-  return data;
+  if (isCommon) {
+    var isArr = isArray(srcValue),
+        isBuff = !isArr && isBuffer(srcValue),
+        isTyped = !isArr && !isBuff && isTypedArray(srcValue);
+
+    newValue = srcValue;
+    if (isArr || isBuff || isTyped) {
+      if (isArray(objValue)) {
+        newValue = objValue;
+      }
+      else if (isArrayLikeObject(objValue)) {
+        newValue = copyArray(objValue);
+      }
+      else if (isBuff) {
+        isCommon = false;
+        newValue = cloneBuffer(srcValue, true);
+      }
+      else if (isTyped) {
+        isCommon = false;
+        newValue = cloneTypedArray(srcValue, true);
+      }
+      else {
+        newValue = [];
+      }
+    }
+    else if (isPlainObject(srcValue) || isArguments(srcValue)) {
+      newValue = objValue;
+      if (isArguments(objValue)) {
+        newValue = toPlainObject(objValue);
+      }
+      else if (!isObject(objValue) || isFunction(objValue)) {
+        newValue = initCloneObject(srcValue);
+      }
+    }
+    else {
+      isCommon = false;
+    }
+  }
+  if (isCommon) {
+    // Recursively merge objects and arrays (susceptible to call stack limits).
+    stack.set(srcValue, newValue);
+    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
+    stack['delete'](srcValue);
+  }
+  assignMergeValue(object, key, newValue);
 }
 
-function _templateObject9() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/_design/", "?rev=", ""]);
+module.exports = baseMergeDeep;
 
-  _templateObject9 = function _templateObject9() {
-    return data;
-  };
 
-  return data;
-}
+/***/ }),
+/* 536 */
+/***/ (function(module, exports) {
 
-function _templateObject8() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/_design_docs?include_docs=true"]);
+/**
+ * Gets the value at `key`, unless `key` is "__proto__" or "constructor".
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {string} key The key of the property to get.
+ * @returns {*} Returns the property value.
+ */
+function safeGet(object, key) {
+  if (key === 'constructor' && typeof object[key] === 'function') {
+    return;
+  }
 
-  _templateObject8 = function _templateObject8() {
-    return data;
-  };
+  if (key == '__proto__') {
+    return;
+  }
 
-  return data;
+  return object[key];
 }
 
-function _templateObject7() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/_index"]);
+module.exports = safeGet;
 
-  _templateObject7 = function _templateObject7() {
-    return data;
-  };
 
-  return data;
-}
+/***/ }),
+/* 537 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
+var copyObject = __webpack_require__(454),
+    keysIn = __webpack_require__(456);
 
-function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+/**
+ * Converts `value` to a plain object flattening inherited enumerable string
+ * keyed properties of `value` to own properties of the plain object.
+ *
+ * @static
+ * @memberOf _
+ * @since 3.0.0
+ * @category Lang
+ * @param {*} value The value to convert.
+ * @returns {Object} Returns the converted plain object.
+ * @example
+ *
+ * function Foo() {
+ *   this.b = 2;
+ * }
+ *
+ * Foo.prototype.c = 3;
+ *
+ * _.assign({ 'a': 1 }, new Foo);
+ * // => { 'a': 1, 'b': 2 }
+ *
+ * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
+ * // => { 'a': 1, 'b': 2, 'c': 3 }
+ */
+function toPlainObject(value) {
+  return copyObject(value, keysIn(value));
+}
 
-function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+module.exports = toPlainObject;
 
-function _templateObject6() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", "?rev=", ""]);
 
-  _templateObject6 = function _templateObject6() {
-    return data;
-  };
+/***/ }),
+/* 538 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  return data;
-}
+var baseRest = __webpack_require__(433),
+    isIterateeCall = __webpack_require__(539);
 
-function _templateObject5() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", ""]);
+/**
+ * Creates a function like `_.assign`.
+ *
+ * @private
+ * @param {Function} assigner The function to assign values.
+ * @returns {Function} Returns the new assigner function.
+ */
+function createAssigner(assigner) {
+  return baseRest(function(object, sources) {
+    var index = -1,
+        length = sources.length,
+        customizer = length > 1 ? sources[length - 1] : undefined,
+        guard = length > 2 ? sources[2] : undefined;
 
-  _templateObject5 = function _templateObject5() {
-    return data;
-  };
+    customizer = (assigner.length > 3 && typeof customizer == 'function')
+      ? (length--, customizer)
+      : undefined;
 
-  return data;
+    if (guard && isIterateeCall(sources[0], sources[1], guard)) {
+      customizer = length < 3 ? undefined : customizer;
+      length = 1;
+    }
+    object = Object(object);
+    while (++index < length) {
+      var source = sources[index];
+      if (source) {
+        assigner(object, source, index, customizer);
+      }
+    }
+    return object;
+  });
 }
 
-function _templateObject4() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", ""]);
-
-  _templateObject4 = function _templateObject4() {
-    return data;
-  };
+module.exports = createAssigner;
 
-  return data;
-}
 
-function _templateObject3() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/_all_docs?include_docs=true"]);
+/***/ }),
+/* 539 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  _templateObject3 = function _templateObject3() {
-    return data;
-  };
+var eq = __webpack_require__(346),
+    isArrayLike = __webpack_require__(337),
+    isIndex = __webpack_require__(327),
+    isObject = __webpack_require__(310);
 
-  return data;
+/**
+ * Checks if the given arguments are from an iteratee call.
+ *
+ * @private
+ * @param {*} value The potential iteratee value argument.
+ * @param {*} index The potential iteratee index or key argument.
+ * @param {*} object The potential iteratee object argument.
+ * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
+ *  else `false`.
+ */
+function isIterateeCall(value, index, object) {
+  if (!isObject(object)) {
+    return false;
+  }
+  var type = typeof index;
+  if (type == 'number'
+        ? (isArrayLike(object) && isIndex(index, object.length))
+        : (type == 'string' && index in object)
+      ) {
+    return eq(object[index], value);
+  }
+  return false;
 }
 
-function _templateObject2() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/_find"]);
+module.exports = isIterateeCall;
 
-  _templateObject2 = function _templateObject2() {
-    return data;
-  };
 
-  return data;
-}
+/***/ }),
+/* 540 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function _templateObject() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", ""]);
+var baseClamp = __webpack_require__(541),
+    baseToString = __webpack_require__(408),
+    toInteger = __webpack_require__(542),
+    toString = __webpack_require__(407);
 
-  _templateObject = function _templateObject() {
-    return data;
-  };
+/**
+ * Checks if `string` starts with the given target string.
+ *
+ * @static
+ * @memberOf _
+ * @since 3.0.0
+ * @category String
+ * @param {string} [string=''] The string to inspect.
+ * @param {string} [target] The string to search for.
+ * @param {number} [position=0] The position to search from.
+ * @returns {boolean} Returns `true` if `string` starts with `target`,
+ *  else `false`.
+ * @example
+ *
+ * _.startsWith('abc', 'a');
+ * // => true
+ *
+ * _.startsWith('abc', 'b');
+ * // => false
+ *
+ * _.startsWith('abc', 'b', 1);
+ * // => true
+ */
+function startsWith(string, target, position) {
+  string = toString(string);
+  position = position == null
+    ? 0
+    : baseClamp(toInteger(position), 0, string.length);
 
-  return data;
+  target = baseToString(target);
+  return string.slice(position, position + target.length) == target;
 }
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+module.exports = startsWith;
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-var DATABASE_DOES_NOT_EXIST = 'Database does not exist.';
+/***/ }),
+/* 541 */
+/***/ (function(module, exports) {
+
 /**
- * Normalize a document, adding its doctype if needed
+ * The base implementation of `_.clamp` which doesn't coerce arguments.
  *
- * @param {object} doc - Document to normalize
- * @param {string} doctype - Document doctype
- * @returns {object} normalized document
  * @private
+ * @param {number} number The number to clamp.
+ * @param {number} [lower] The lower bound.
+ * @param {number} upper The upper bound.
+ * @returns {number} Returns the clamped number.
  */
-
-function normalizeDoc() {
-  var doc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-  var doctype = arguments.length > 1 ? arguments[1] : undefined;
-  var id = doc._id || doc.id;
-  return _objectSpread({
-    id: id,
-    _id: id,
-    _type: doctype
-  }, doc);
+function baseClamp(number, lower, upper) {
+  if (number === number) {
+    if (upper !== undefined) {
+      number = number <= upper ? number : upper;
+    }
+    if (lower !== undefined) {
+      number = number >= lower ? number : lower;
+    }
+  }
+  return number;
 }
 
-var prepareForDeletion = function prepareForDeletion(x) {
-  return Object.assign({}, (0, _omit.default)(x, '_type'), {
-    _deleted: true
-  });
-};
+module.exports = baseClamp;
+
+
+/***/ }),
+/* 542 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var toFinite = __webpack_require__(543);
+
 /**
- * Abstracts a collection of documents of the same doctype, providing CRUD methods and other helpers.
+ * Converts `value` to an integer.
+ *
+ * **Note:** This method is loosely based on
+ * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to convert.
+ * @returns {number} Returns the converted integer.
+ * @example
+ *
+ * _.toInteger(3.2);
+ * // => 3
+ *
+ * _.toInteger(Number.MIN_VALUE);
+ * // => 0
+ *
+ * _.toInteger(Infinity);
+ * // => 1.7976931348623157e+308
+ *
+ * _.toInteger('3.2');
+ * // => 3
  */
+function toInteger(value) {
+  var result = toFinite(value),
+      remainder = result % 1;
 
+  return result === result ? (remainder ? result - remainder : result) : 0;
+}
 
-var DocumentCollection = /*#__PURE__*/function () {
-  function DocumentCollection(doctype, stackClient) {
-    (0, _classCallCheck2.default)(this, DocumentCollection);
-    this.doctype = doctype;
-    this.stackClient = stackClient;
-    this.indexes = {};
-    this.endpoint = "/data/".concat(this.doctype, "/");
-  }
-  /**
-   * Provides a callback for `Collection.get`
-   *
-   * @param {string} doctype - Document doctype
-   * @returns {Function} (data, response) => normalizedDocument
-   *                                        using `normalizeDoc`
-   */
+module.exports = toInteger;
 
 
-  (0, _createClass2.default)(DocumentCollection, [{
-    key: "all",
+/***/ }),
+/* 543 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    /**
-     * Lists all documents of the collection, without filters.
-     *
-     * The returned documents are paginated by the stack.
-     *
-     * @param {object} options The fetch options: pagination & fetch of specific docs.
-     * @param {number} [options.limit=100] - Pagination limit
-     * @param {number} [options.skip=0] - Pagination Skip
-     * @param {string} [options.bookmark] - Pagination bookmark
-     * @param {Array<string>} [options.keys] - Keys to query
-     * @returns {Promise<{data, meta, skip, bookmark, next}>} The JSON API conformant response.
-     * @throws {FetchError}
-     */
-    value: function () {
-      var _all = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
-        var _this = this;
+var toNumber = __webpack_require__(544);
 
-        var _ref,
-            _ref$limit,
-            limit,
-            _ref$skip,
-            skip,
-            bookmark,
-            keys,
-            isUsingAllDocsRoute,
-            route,
-            url,
-            params,
-            path,
-            resp,
-            data,
-            next,
-            _args = arguments;
-
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                _ref = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}, _ref$limit = _ref.limit, limit = _ref$limit === void 0 ? 100 : _ref$limit, _ref$skip = _ref.skip, skip = _ref$skip === void 0 ? 0 : _ref$skip, bookmark = _ref.bookmark, keys = _ref.keys;
-                // If the limit is intentionnally null, we need to use _all_docs, since
-                // _normal_docs uses _find and has a hard limit of 1000
-                isUsingAllDocsRoute = !!keys || limit === null;
-                route = isUsingAllDocsRoute ? '_all_docs' : '_normal_docs';
-                url = (0, _utils.uri)(_templateObject(), this.doctype, route);
-                params = {
-                  include_docs: true,
-                  limit: limit,
-                  skip: skip,
-                  keys: keys,
-                  bookmark: bookmark
-                };
-                path = querystring.buildURL(url, params); // If no document of this doctype exist, this route will return a 404,
-                // so we need to try/catch and return an empty response object in case of a 404
-
-                _context.prev = 6;
-                _context.next = 9;
-                return this.stackClient.fetchJSON('GET', path);
-
-              case 9:
-                resp = _context.sent;
-                _context.next = 15;
-                break;
-
-              case 12:
-                _context.prev = 12;
-                _context.t0 = _context["catch"](6);
-                return _context.abrupt("return", (0, _Collection.dontThrowNotFoundError)(_context.t0));
+/** Used as references for various `Number` constants. */
+var INFINITY = 1 / 0,
+    MAX_INTEGER = 1.7976931348623157e+308;
 
-              case 15:
-                /* If using `all_docs` we need to filter our design documents and check if
-                the document is not null. If we use `normal_doc` we can't have any design doc
-                 */
-                if (isUsingAllDocsRoute) {
-                  data = resp.rows.filter(function (doc) {
-                    return doc && doc.doc !== null && !doc.error && !(0, _startsWith.default)(doc.id, '_design');
-                  }).map(function (row) {
-                    return normalizeDoc(row.doc, _this.doctype);
-                  });
-                } else {
-                  data = resp.rows.map(function (row) {
-                    return normalizeDoc(row, _this.doctype);
-                  });
-                } // The presence of a bookmark doesn’t guarantee that there are more results.
-                // See https://docs.couchdb.org/en/2.2.0/api/database/find.html#pagination
+/**
+ * Converts `value` to a finite number.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.12.0
+ * @category Lang
+ * @param {*} value The value to convert.
+ * @returns {number} Returns the converted number.
+ * @example
+ *
+ * _.toFinite(3.2);
+ * // => 3.2
+ *
+ * _.toFinite(Number.MIN_VALUE);
+ * // => 5e-324
+ *
+ * _.toFinite(Infinity);
+ * // => 1.7976931348623157e+308
+ *
+ * _.toFinite('3.2');
+ * // => 3.2
+ */
+function toFinite(value) {
+  if (!value) {
+    return value === 0 ? value : 0;
+  }
+  value = toNumber(value);
+  if (value === INFINITY || value === -INFINITY) {
+    var sign = (value < 0 ? -1 : 1);
+    return sign * MAX_INTEGER;
+  }
+  return value === value ? value : 0;
+}
 
+module.exports = toFinite;
 
-                next = bookmark ? resp.rows.length >= limit : skip + resp.rows.length < resp.total_rows;
-                return _context.abrupt("return", {
-                  data: data,
-                  meta: {
-                    count: isUsingAllDocsRoute ? data.length : resp.total_rows
-                  },
-                  skip: skip,
-                  bookmark: resp.bookmark,
-                  next: next
-                });
 
-              case 18:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee, this, [[6, 12]]);
-      }));
+/***/ }),
+/* 544 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      function all() {
-        return _all.apply(this, arguments);
-      }
+var baseTrim = __webpack_require__(545),
+    isObject = __webpack_require__(310),
+    isSymbol = __webpack_require__(403);
 
-      return all;
-    }()
-    /**
-     * Fetch Documents with Mango
-     *
-     * @param {string} path - path to fetch
-     * @param {MangoSelector} selector - selector
-     * @param {MangoQueryOptions} options - request options
-     */
+/** Used as references for various `Number` constants. */
+var NAN = 0 / 0;
 
-  }, {
-    key: "fetchDocumentsWithMango",
-    value: function () {
-      var _fetchDocumentsWithMango = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(path, selector) {
-        var options,
-            _args2 = arguments;
-        return _regenerator.default.wrap(function _callee2$(_context2) {
-          while (1) {
-            switch (_context2.prev = _context2.next) {
-              case 0:
-                options = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : {};
-                return _context2.abrupt("return", this.stackClient.fetchJSON('POST', path, this.toMangoOptions(selector, options)));
+/** Used to detect bad signed hexadecimal string values. */
+var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
 
-              case 2:
-              case "end":
-                return _context2.stop();
-            }
-          }
-        }, _callee2, this);
-      }));
+/** Used to detect binary string values. */
+var reIsBinary = /^0b[01]+$/i;
 
-      function fetchDocumentsWithMango(_x, _x2) {
-        return _fetchDocumentsWithMango.apply(this, arguments);
-      }
+/** Used to detect octal string values. */
+var reIsOctal = /^0o[0-7]+$/i;
 
-      return fetchDocumentsWithMango;
-    }()
-    /**
-     * Migrate an existing unamed index to a named one.
-     *
-     * Index migration became necessary for optimistic index, because
-     * we started to use named index while we used to have unamed index,
-     * i.e. indexes with CouchDB-generated ID.
-     *
-     * @param {object} sourceIndex - The index to migrate
-     * @param {string} targetIndexName - The new index name
-     * @private
-     */
+/** Built-in method references without a dependency on `root`. */
+var freeParseInt = parseInt;
 
-  }, {
-    key: "migrateUnamedIndex",
-    value: function () {
-      var _migrateUnamedIndex = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(sourceIndex, targetIndexName) {
-        return _regenerator.default.wrap(function _callee3$(_context3) {
-          while (1) {
-            switch (_context3.prev = _context3.next) {
-              case 0:
-                _context3.prev = 0;
-                _context3.next = 3;
-                return this.copyIndex(sourceIndex, targetIndexName);
+/**
+ * Converts `value` to a number.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to process.
+ * @returns {number} Returns the number.
+ * @example
+ *
+ * _.toNumber(3.2);
+ * // => 3.2
+ *
+ * _.toNumber(Number.MIN_VALUE);
+ * // => 5e-324
+ *
+ * _.toNumber(Infinity);
+ * // => Infinity
+ *
+ * _.toNumber('3.2');
+ * // => 3.2
+ */
+function toNumber(value) {
+  if (typeof value == 'number') {
+    return value;
+  }
+  if (isSymbol(value)) {
+    return NAN;
+  }
+  if (isObject(value)) {
+    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
+    value = isObject(other) ? (other + '') : other;
+  }
+  if (typeof value != 'string') {
+    return value === 0 ? value : +value;
+  }
+  value = baseTrim(value);
+  var isBinary = reIsBinary.test(value);
+  return (isBinary || reIsOctal.test(value))
+    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
+    : (reIsBadHex.test(value) ? NAN : +value);
+}
 
-              case 3:
-                _context3.next = 5;
-                return this.destroyIndex(sourceIndex);
+module.exports = toNumber;
 
-              case 5:
-                _context3.next = 16;
-                break;
 
-              case 7:
-                _context3.prev = 7;
-                _context3.t0 = _context3["catch"](0);
+/***/ }),
+/* 545 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                if ((0, _Collection.isDocumentUpdateConflict)(_context3.t0)) {
-                  _context3.next = 11;
-                  break;
-                }
+var trimmedEndIndex = __webpack_require__(546);
 
-                throw _context3.t0;
+/** Used to match leading whitespace. */
+var reTrimStart = /^\s+/;
 
-              case 11:
-                (0, _utils.sleep)(1000);
-                _context3.next = 14;
-                return this.copyIndex(sourceIndex, targetIndexName);
+/**
+ * The base implementation of `_.trim`.
+ *
+ * @private
+ * @param {string} string The string to trim.
+ * @returns {string} Returns the trimmed string.
+ */
+function baseTrim(string) {
+  return string
+    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')
+    : string;
+}
 
-              case 14:
-                _context3.next = 16;
-                return this.destroyIndex(sourceIndex);
+module.exports = baseTrim;
 
-              case 16:
-              case "end":
-                return _context3.stop();
-            }
-          }
-        }, _callee3, this, [[0, 7]]);
-      }));
 
-      function migrateUnamedIndex(_x3, _x4) {
-        return _migrateUnamedIndex.apply(this, arguments);
-      }
+/***/ }),
+/* 546 */
+/***/ (function(module, exports) {
 
-      return migrateUnamedIndex;
-    }()
-    /**
-     * Handle index creation if it is missing.
-     *
-     * When an index is missing, we first check if there is one with a different
-     * name but the same definition. If yes, it means we found an old unamed
-     * index, so we migrate it. If there is none, we create the new index.
-     *
-     * @param {object} selector The mango selector
-     * @param {MangoQueryOptions} options The find options
-     * @private
-     */
+/** Used to match a single whitespace character. */
+var reWhitespace = /\s/;
 
-  }, {
-    key: "handleMissingIndex",
-    value: function () {
-      var _handleMissingIndex = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(selector, options) {
-        var indexedFields, partialFilter, partialFilterFields, existingIndex, indexName;
-        return _regenerator.default.wrap(function _callee4$(_context4) {
-          while (1) {
-            switch (_context4.prev = _context4.next) {
-              case 0:
-                indexedFields = options.indexedFields, partialFilter = options.partialFilter;
+/**
+ * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace
+ * character of `string`.
+ *
+ * @private
+ * @param {string} string The string to inspect.
+ * @returns {number} Returns the index of the last non-whitespace character.
+ */
+function trimmedEndIndex(string) {
+  var index = string.length;
 
-                if (!indexedFields) {
-                  indexedFields = (0, _mangoIndex.getIndexFields)({
-                    sort: options.sort,
-                    selector: selector
-                  });
-                }
+  while (index-- && reWhitespace.test(string.charAt(index))) {}
+  return index;
+}
 
-                partialFilterFields = partialFilter ? (0, _mangoIndex.getIndexFields)({
-                  partialFilter: partialFilter
-                }) : null;
-                _context4.next = 5;
-                return this.findExistingIndex(selector, options);
+module.exports = trimmedEndIndex;
 
-              case 5:
-                existingIndex = _context4.sent;
-                indexName = (0, _mangoIndex.getIndexNameFromFields)(indexedFields, {
-                  partialFilterFields: partialFilterFields
-                });
 
-                if (existingIndex) {
-                  _context4.next = 12;
-                  break;
-                }
+/***/ }),
+/* 547 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                _context4.next = 10;
-                return this.createIndex(indexedFields, {
-                  partialFilter: partialFilter,
-                  indexName: indexName
-                });
+"use strict";
 
-              case 10:
-                _context4.next = 18;
-                break;
 
-              case 12:
-                if (!(existingIndex._id !== "_design/".concat(indexName))) {
-                  _context4.next = 17;
-                  break;
-                }
+var stringify = __webpack_require__(548);
+var parse = __webpack_require__(575);
+var formats = __webpack_require__(574);
 
-                _context4.next = 15;
-                return this.migrateUnamedIndex(existingIndex, indexName);
+module.exports = {
+    formats: formats,
+    parse: parse,
+    stringify: stringify
+};
 
-              case 15:
-                _context4.next = 18;
-                break;
 
-              case 17:
-                throw new Error("Index unusable for query, index used: ".concat(indexName));
+/***/ }),
+/* 548 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 18:
-              case "end":
-                return _context4.stop();
-            }
-          }
-        }, _callee4, this);
-      }));
+"use strict";
 
-      function handleMissingIndex(_x5, _x6) {
-        return _handleMissingIndex.apply(this, arguments);
-      }
 
-      return handleMissingIndex;
-    }()
-    /**
-     * Find documents with the mango selector and create index
-     * if missing.
-     *
-     * We adopt an optimistic approach for index creation:
-     * we run the query first, and only if an index missing
-     * error is returned, the index is created and
-     * the query run again.
-     *
-     * @param {string} path The route path
-     * @param {MangoSelector} selector The mango selector
-     * @param {MangoQueryOptions} options The find options
-     *
-     * @returns {Promise<object>} - The find response
-     * @protected
-     */
+var getSideChannel = __webpack_require__(549);
+var utils = __webpack_require__(573);
+var formats = __webpack_require__(574);
+var has = Object.prototype.hasOwnProperty;
 
-  }, {
-    key: "findWithMango",
-    value: function () {
-      var _findWithMango = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(path, selector) {
-        var options,
-            resp,
-            _resp$meta,
-            warning,
-            _args5 = arguments;
+var arrayPrefixGenerators = {
+    brackets: function brackets(prefix) {
+        return prefix + '[]';
+    },
+    comma: 'comma',
+    indices: function indices(prefix, key) {
+        return prefix + '[' + key + ']';
+    },
+    repeat: function repeat(prefix) {
+        return prefix;
+    }
+};
 
-        return _regenerator.default.wrap(function _callee5$(_context5) {
-          while (1) {
-            switch (_context5.prev = _context5.next) {
-              case 0:
-                options = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : {};
-                _context5.prev = 1;
-                _context5.next = 4;
-                return this.fetchDocumentsWithMango(path, selector, options);
+var isArray = Array.isArray;
+var split = String.prototype.split;
+var push = Array.prototype.push;
+var pushToArray = function (arr, valueOrArray) {
+    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);
+};
 
-              case 4:
-                resp = _context5.sent;
-                warning = resp.warning || ((_resp$meta = resp.meta) === null || _resp$meta === void 0 ? void 0 : _resp$meta.warning);
+var toISO = Date.prototype.toISOString;
 
-                if (!(warning && options.partialFilter && (0, _Collection.isIndexNotUsedWarning)(warning))) {
-                  _context5.next = 8;
-                  break;
-                }
+var defaultFormat = formats['default'];
+var defaults = {
+    addQueryPrefix: false,
+    allowDots: false,
+    charset: 'utf-8',
+    charsetSentinel: false,
+    delimiter: '&',
+    encode: true,
+    encoder: utils.encode,
+    encodeValuesOnly: false,
+    format: defaultFormat,
+    formatter: formats.formatters[defaultFormat],
+    // deprecated
+    indices: false,
+    serializeDate: function serializeDate(date) {
+        return toISO.call(date);
+    },
+    skipNulls: false,
+    strictNullHandling: false
+};
 
-                throw new Error('no_index');
+var isNonNullishPrimitive = function isNonNullishPrimitive(v) {
+    return typeof v === 'string'
+        || typeof v === 'number'
+        || typeof v === 'boolean'
+        || typeof v === 'symbol'
+        || typeof v === 'bigint';
+};
 
-              case 8:
-                _context5.next = 21;
-                break;
+var sentinel = {};
 
-              case 10:
-                _context5.prev = 10;
-                _context5.t0 = _context5["catch"](1);
+var stringify = function stringify(
+    object,
+    prefix,
+    generateArrayPrefix,
+    commaRoundTrip,
+    strictNullHandling,
+    skipNulls,
+    encoder,
+    filter,
+    sort,
+    allowDots,
+    serializeDate,
+    format,
+    formatter,
+    encodeValuesOnly,
+    charset,
+    sideChannel
+) {
+    var obj = object;
 
-                if (!(!(0, _Collection.isIndexNotFoundError)(_context5.t0) && !(0, _Collection.isNoUsableIndexError)(_context5.t0))) {
-                  _context5.next = 16;
-                  break;
-                }
-
-                throw _context5.t0;
-
-              case 16:
-                _context5.next = 18;
-                return this.handleMissingIndex(selector, options);
+    var tmpSc = sideChannel;
+    var step = 0;
+    var findFlag = false;
+    while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {
+        // Where object last appeared in the ref tree
+        var pos = tmpSc.get(object);
+        step += 1;
+        if (typeof pos !== 'undefined') {
+            if (pos === step) {
+                throw new RangeError('Cyclic object value');
+            } else {
+                findFlag = true; // Break while
+            }
+        }
+        if (typeof tmpSc.get(sentinel) === 'undefined') {
+            step = 0;
+        }
+    }
 
-              case 18:
-                _context5.next = 20;
-                return this.fetchDocumentsWithMango(path, selector, options);
+    if (typeof filter === 'function') {
+        obj = filter(prefix, obj);
+    } else if (obj instanceof Date) {
+        obj = serializeDate(obj);
+    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {
+        obj = utils.maybeMap(obj, function (value) {
+            if (value instanceof Date) {
+                return serializeDate(value);
+            }
+            return value;
+        });
+    }
 
-              case 20:
-                resp = _context5.sent;
+    if (obj === null) {
+        if (strictNullHandling) {
+            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;
+        }
 
-              case 21:
-                return _context5.abrupt("return", resp);
+        obj = '';
+    }
 
-              case 22:
-              case "end":
-                return _context5.stop();
+    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {
+        if (encoder) {
+            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);
+            if (generateArrayPrefix === 'comma' && encodeValuesOnly) {
+                var valuesArray = split.call(String(obj), ',');
+                var valuesJoined = '';
+                for (var i = 0; i < valuesArray.length; ++i) {
+                    valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));
+                }
+                return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];
             }
-          }
-        }, _callee5, this, [[1, 10]]);
-      }));
-
-      function findWithMango(_x7, _x8) {
-        return _findWithMango.apply(this, arguments);
-      }
+            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];
+        }
+        return [formatter(prefix) + '=' + formatter(String(obj))];
+    }
 
-      return findWithMango;
-    }()
-    /**
-     * Returns a filtered list of documents using a Mango selector.
-     
-    The returned documents are paginated by the stack.
-     *
-     * @param {MangoSelector} selector The Mango selector.
-     * @param {MangoQueryOptions} options MangoQueryOptions
-     * @returns {Promise<{data, skip, bookmark, next, execution_stats}>} The JSON API conformant response.
-     * @throws {FetchError}
-     */
+    var values = [];
 
-  }, {
-    key: "find",
-    value: function () {
-      var _find = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(selector) {
-        var _this2 = this;
+    if (typeof obj === 'undefined') {
+        return values;
+    }
 
-        var options,
-            _options$skip,
-            skip,
-            resp,
-            path,
-            _args6 = arguments;
+    var objKeys;
+    if (generateArrayPrefix === 'comma' && isArray(obj)) {
+        // we need to join elements in
+        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];
+    } else if (isArray(filter)) {
+        objKeys = filter;
+    } else {
+        var keys = Object.keys(obj);
+        objKeys = sort ? keys.sort(sort) : keys;
+    }
 
-        return _regenerator.default.wrap(function _callee6$(_context6) {
-          while (1) {
-            switch (_context6.prev = _context6.next) {
-              case 0:
-                options = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : {};
-                _options$skip = options.skip, skip = _options$skip === void 0 ? 0 : _options$skip;
-                _context6.prev = 2;
-                path = (0, _utils.uri)(_templateObject2(), this.doctype);
-                _context6.next = 6;
-                return this.findWithMango(path, selector, options);
+    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;
 
-              case 6:
-                resp = _context6.sent;
-                _context6.next = 12;
-                break;
+    for (var j = 0; j < objKeys.length; ++j) {
+        var key = objKeys[j];
+        var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];
 
-              case 9:
-                _context6.prev = 9;
-                _context6.t0 = _context6["catch"](2);
-                return _context6.abrupt("return", (0, _Collection.dontThrowNotFoundError)(_context6.t0));
+        if (skipNulls && value === null) {
+            continue;
+        }
 
-              case 12:
-                return _context6.abrupt("return", {
-                  data: resp.docs.map(function (doc) {
-                    return normalizeDoc(doc, _this2.doctype);
-                  }),
-                  next: resp.next,
-                  skip: skip,
-                  bookmark: resp.bookmark,
-                  execution_stats: resp.execution_stats
-                });
+        var keyPrefix = isArray(obj)
+            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix
+            : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');
 
-              case 13:
-              case "end":
-                return _context6.stop();
-            }
-          }
-        }, _callee6, this, [[2, 9]]);
-      }));
+        sideChannel.set(object, step);
+        var valueSideChannel = getSideChannel();
+        valueSideChannel.set(sentinel, sideChannel);
+        pushToArray(values, stringify(
+            value,
+            keyPrefix,
+            generateArrayPrefix,
+            commaRoundTrip,
+            strictNullHandling,
+            skipNulls,
+            encoder,
+            filter,
+            sort,
+            allowDots,
+            serializeDate,
+            format,
+            formatter,
+            encodeValuesOnly,
+            charset,
+            valueSideChannel
+        ));
+    }
 
-      function find(_x9) {
-        return _find.apply(this, arguments);
-      }
+    return values;
+};
 
-      return find;
-    }()
-    /**
-     * Returns a filtered list with all documents using a Mango selector,
-     * automatically fetching more documents if the total of documents is
-     * superior to the pagination limit.
-     * Can result in a lot of network requests.
-     *
-     The returned documents are paginated by the stack.
-     *
-     * @param {MangoSelector} selector The Mango selector.
-     * @param {MangoQueryOptions} options MangoQueryOptions
-     * @returns {Promise<Array<{data}>>} Documents fetched
-     * @throws {FetchError}
-     */
+var normalizeStringifyOptions = function normalizeStringifyOptions(opts) {
+    if (!opts) {
+        return defaults;
+    }
 
-  }, {
-    key: "findAll",
-    value: function () {
-      var _findAll = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(selector) {
-        var options,
-            next,
-            documents,
-            bookmark,
-            resp,
-            _args7 = arguments;
-        return _regenerator.default.wrap(function _callee7$(_context7) {
-          while (1) {
-            switch (_context7.prev = _context7.next) {
-              case 0:
-                options = _args7.length > 1 && _args7[1] !== undefined ? _args7[1] : {};
-                next = true;
-                documents = [];
-                bookmark = options.bookmark || undefined;
+    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {
+        throw new TypeError('Encoder has to be a function.');
+    }
 
-              case 4:
-                if (!next) {
-                  _context7.next = 13;
-                  break;
-                }
+    var charset = opts.charset || defaults.charset;
+    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {
+        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');
+    }
 
-                _context7.next = 7;
-                return this.find(selector, _objectSpread(_objectSpread({}, options), {}, {
-                  bookmark: bookmark
-                }));
+    var format = formats['default'];
+    if (typeof opts.format !== 'undefined') {
+        if (!has.call(formats.formatters, opts.format)) {
+            throw new TypeError('Unknown format option provided.');
+        }
+        format = opts.format;
+    }
+    var formatter = formats.formatters[format];
 
-              case 7:
-                resp = _context7.sent;
-                documents.push.apply(documents, (0, _toConsumableArray2.default)(resp.data));
-                bookmark = resp.bookmark;
-                next = resp.next;
-                _context7.next = 4;
-                break;
+    var filter = defaults.filter;
+    if (typeof opts.filter === 'function' || isArray(opts.filter)) {
+        filter = opts.filter;
+    }
 
-              case 13:
-                return _context7.abrupt("return", documents);
+    return {
+        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,
+        allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,
+        charset: charset,
+        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,
+        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,
+        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,
+        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,
+        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,
+        filter: filter,
+        format: format,
+        formatter: formatter,
+        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,
+        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,
+        sort: typeof opts.sort === 'function' ? opts.sort : null,
+        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling
+    };
+};
 
-              case 14:
-              case "end":
-                return _context7.stop();
-            }
-          }
-        }, _callee7, this);
-      }));
+module.exports = function (object, opts) {
+    var obj = object;
+    var options = normalizeStringifyOptions(opts);
 
-      function findAll(_x10) {
-        return _findAll.apply(this, arguments);
-      }
+    var objKeys;
+    var filter;
 
-      return findAll;
-    }()
-    /**
-     * Get a document by id
-     *
-     * @param  {string} id The document id.
-     * @returns {Promise<object>}  JsonAPI response containing normalized document as data attribute
-     */
+    if (typeof options.filter === 'function') {
+        filter = options.filter;
+        obj = filter('', obj);
+    } else if (isArray(options.filter)) {
+        filter = options.filter;
+        objKeys = filter;
+    }
 
-  }, {
-    key: "get",
-    value: function () {
-      var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(id) {
-        return _regenerator.default.wrap(function _callee8$(_context8) {
-          while (1) {
-            switch (_context8.prev = _context8.next) {
-              case 0:
-                return _context8.abrupt("return", _Collection.default.get(this.stackClient, "".concat(this.endpoint).concat(encodeURIComponent(id)), {
-                  normalize: this.constructor.normalizeDoctype(this.doctype)
-                }));
+    var keys = [];
 
-              case 1:
-              case "end":
-                return _context8.stop();
-            }
-          }
-        }, _callee8, this);
-      }));
+    if (typeof obj !== 'object' || obj === null) {
+        return '';
+    }
 
-      function get(_x11) {
-        return _get.apply(this, arguments);
-      }
+    var arrayFormat;
+    if (opts && opts.arrayFormat in arrayPrefixGenerators) {
+        arrayFormat = opts.arrayFormat;
+    } else if (opts && 'indices' in opts) {
+        arrayFormat = opts.indices ? 'indices' : 'repeat';
+    } else {
+        arrayFormat = 'indices';
+    }
 
-      return get;
-    }()
-    /**
-     * Get many documents by id
-     */
+    var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];
+    if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {
+        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');
+    }
+    var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;
 
-  }, {
-    key: "getAll",
-    value: function () {
-      var _getAll = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(ids) {
-        var _this3 = this;
+    if (!objKeys) {
+        objKeys = Object.keys(obj);
+    }
 
-        var resp, rows;
-        return _regenerator.default.wrap(function _callee9$(_context9) {
-          while (1) {
-            switch (_context9.prev = _context9.next) {
-              case 0:
-                _context9.prev = 0;
-                _context9.next = 3;
-                return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject3(), this.doctype), {
-                  keys: ids
-                });
+    if (options.sort) {
+        objKeys.sort(options.sort);
+    }
 
-              case 3:
-                resp = _context9.sent;
-                _context9.next = 9;
-                break;
+    var sideChannel = getSideChannel();
+    for (var i = 0; i < objKeys.length; ++i) {
+        var key = objKeys[i];
 
-              case 6:
-                _context9.prev = 6;
-                _context9.t0 = _context9["catch"](0);
-                return _context9.abrupt("return", (0, _Collection.dontThrowNotFoundError)(_context9.t0));
+        if (options.skipNulls && obj[key] === null) {
+            continue;
+        }
+        pushToArray(keys, stringify(
+            obj[key],
+            key,
+            generateArrayPrefix,
+            commaRoundTrip,
+            options.strictNullHandling,
+            options.skipNulls,
+            options.encode ? options.encoder : null,
+            options.filter,
+            options.sort,
+            options.allowDots,
+            options.serializeDate,
+            options.format,
+            options.formatter,
+            options.encodeValuesOnly,
+            options.charset,
+            sideChannel
+        ));
+    }
 
-              case 9:
-                rows = resp.rows.filter(function (row) {
-                  return row.doc;
-                });
-                return _context9.abrupt("return", {
-                  data: rows.map(function (row) {
-                    return normalizeDoc(row.doc, _this3.doctype);
-                  }),
-                  meta: {
-                    count: rows.length
-                  }
-                });
+    var joined = keys.join(options.delimiter);
+    var prefix = options.addQueryPrefix === true ? '?' : '';
 
-              case 11:
-              case "end":
-                return _context9.stop();
-            }
-          }
-        }, _callee9, this, [[0, 6]]);
-      }));
+    if (options.charsetSentinel) {
+        if (options.charset === 'iso-8859-1') {
+            // encodeURIComponent('&#10003;'), the "numeric entity" representation of a checkmark
+            prefix += 'utf8=%26%2310003%3B&';
+        } else {
+            // encodeURIComponent('✓')
+            prefix += 'utf8=%E2%9C%93&';
+        }
+    }
 
-      function getAll(_x12) {
-        return _getAll.apply(this, arguments);
-      }
+    return joined.length > 0 ? prefix + joined : '';
+};
 
-      return getAll;
-    }()
-    /**
-     * Creates a document
-     *
-     * @param {object} doc - Document to create. Optional: you can force the id with the _id attribute
-     */
 
-  }, {
-    key: "create",
-    value: function () {
-      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(_ref2) {
-        var _id, _type, document, hasFixedId, method, endpoint, resp;
+/***/ }),
+/* 549 */
+/***/ (function(module, exports, __webpack_require__) {
 
-        return _regenerator.default.wrap(function _callee10$(_context10) {
-          while (1) {
-            switch (_context10.prev = _context10.next) {
-              case 0:
-                _id = _ref2._id, _type = _ref2._type, document = (0, _objectWithoutProperties2.default)(_ref2, ["_id", "_type"]);
-                // In case of a fixed id, let's use the dedicated creation endpoint
-                // https://github.com/cozy/cozy-stack/blob/master/docs/data-system.md#create-a-document-with-a-fixed-id
-                hasFixedId = !!_id;
-                method = hasFixedId ? 'PUT' : 'POST';
-                endpoint = (0, _utils.uri)(_templateObject4(), this.doctype, hasFixedId ? _id : '');
-                _context10.next = 6;
-                return this.stackClient.fetchJSON(method, endpoint, document);
+"use strict";
 
-              case 6:
-                resp = _context10.sent;
-                return _context10.abrupt("return", {
-                  data: normalizeDoc(resp.data, this.doctype)
-                });
 
-              case 8:
-              case "end":
-                return _context10.stop();
-            }
-          }
-        }, _callee10, this);
-      }));
+var GetIntrinsic = __webpack_require__(550);
+var callBound = __webpack_require__(564);
+var inspect = __webpack_require__(571);
 
-      function create(_x13) {
-        return _create.apply(this, arguments);
-      }
+var $TypeError = __webpack_require__(556);
+var $WeakMap = GetIntrinsic('%WeakMap%', true);
+var $Map = GetIntrinsic('%Map%', true);
 
-      return create;
-    }()
-    /**
-     * Updates a document
-     *
-     * @param {object} document - Document to update. Do not forget the _id attribute
-     */
+var $weakMapGet = callBound('WeakMap.prototype.get', true);
+var $weakMapSet = callBound('WeakMap.prototype.set', true);
+var $weakMapHas = callBound('WeakMap.prototype.has', true);
+var $mapGet = callBound('Map.prototype.get', true);
+var $mapSet = callBound('Map.prototype.set', true);
+var $mapHas = callBound('Map.prototype.has', true);
 
-  }, {
-    key: "update",
-    value: function () {
-      var _update = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(document) {
-        var resp;
-        return _regenerator.default.wrap(function _callee11$(_context11) {
-          while (1) {
-            switch (_context11.prev = _context11.next) {
-              case 0:
-                _context11.next = 2;
-                return this.stackClient.fetchJSON('PUT', (0, _utils.uri)(_templateObject5(), this.doctype, document._id), document);
-
-              case 2:
-                resp = _context11.sent;
-                return _context11.abrupt("return", {
-                  data: normalizeDoc(resp.data, this.doctype)
-                });
+/*
+* This function traverses the list returning the node corresponding to the given key.
+*
+* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. By doing so, all the recently used nodes can be accessed relatively quickly.
+*/
+/** @type {import('.').listGetNode} */
+var listGetNode = function (list, key) { // eslint-disable-line consistent-return
+	/** @type {typeof list | NonNullable<(typeof list)['next']>} */
+	var prev = list;
+	/** @type {(typeof list)['next']} */
+	var curr;
+	for (; (curr = prev.next) !== null; prev = curr) {
+		if (curr.key === key) {
+			prev.next = curr.next;
+			// eslint-disable-next-line no-extra-parens
+			curr.next = /** @type {NonNullable<typeof list.next>} */ (list.next);
+			list.next = curr; // eslint-disable-line no-param-reassign
+			return curr;
+		}
+	}
+};
 
-              case 4:
-              case "end":
-                return _context11.stop();
-            }
-          }
-        }, _callee11, this);
-      }));
+/** @type {import('.').listGet} */
+var listGet = function (objects, key) {
+	var node = listGetNode(objects, key);
+	return node && node.value;
+};
+/** @type {import('.').listSet} */
+var listSet = function (objects, key, value) {
+	var node = listGetNode(objects, key);
+	if (node) {
+		node.value = value;
+	} else {
+		// Prepend the new node to the beginning of the list
+		objects.next = /** @type {import('.').ListNode<typeof value>} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens
+			key: key,
+			next: objects.next,
+			value: value
+		});
+	}
+};
+/** @type {import('.').listHas} */
+var listHas = function (objects, key) {
+	return !!listGetNode(objects, key);
+};
 
-      function update(_x14) {
-        return _update.apply(this, arguments);
-      }
+/** @type {import('.')} */
+module.exports = function getSideChannel() {
+	/** @type {WeakMap<object, unknown>} */ var $wm;
+	/** @type {Map<object, unknown>} */ var $m;
+	/** @type {import('.').RootNode<unknown>} */ var $o;
 
-      return update;
-    }()
-    /**
-     * Destroys a document
-     *
-     * @param {object} doc - Document to destroy. Do not forget _id and _rev attributes
-     */
+	/** @type {import('.').Channel} */
+	var channel = {
+		assert: function (key) {
+			if (!channel.has(key)) {
+				throw new $TypeError('Side channel does not contain ' + inspect(key));
+			}
+		},
+		get: function (key) { // eslint-disable-line consistent-return
+			if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
+				if ($wm) {
+					return $weakMapGet($wm, key);
+				}
+			} else if ($Map) {
+				if ($m) {
+					return $mapGet($m, key);
+				}
+			} else {
+				if ($o) { // eslint-disable-line no-lonely-if
+					return listGet($o, key);
+				}
+			}
+		},
+		has: function (key) {
+			if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
+				if ($wm) {
+					return $weakMapHas($wm, key);
+				}
+			} else if ($Map) {
+				if ($m) {
+					return $mapHas($m, key);
+				}
+			} else {
+				if ($o) { // eslint-disable-line no-lonely-if
+					return listHas($o, key);
+				}
+			}
+			return false;
+		},
+		set: function (key, value) {
+			if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
+				if (!$wm) {
+					$wm = new $WeakMap();
+				}
+				$weakMapSet($wm, key, value);
+			} else if ($Map) {
+				if (!$m) {
+					$m = new $Map();
+				}
+				$mapSet($m, key, value);
+			} else {
+				if (!$o) {
+					// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head
+					$o = { key: {}, next: null };
+				}
+				listSet($o, key, value);
+			}
+		}
+	};
+	return channel;
+};
 
-  }, {
-    key: "destroy",
-    value: function () {
-      var _destroy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(_ref3) {
-        var _id, _rev, document, resp;
 
-        return _regenerator.default.wrap(function _callee12$(_context12) {
-          while (1) {
-            switch (_context12.prev = _context12.next) {
-              case 0:
-                _id = _ref3._id, _rev = _ref3._rev, document = (0, _objectWithoutProperties2.default)(_ref3, ["_id", "_rev"]);
-                _context12.next = 3;
-                return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject6(), this.doctype, _id, _rev));
+/***/ }),
+/* 550 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 3:
-                resp = _context12.sent;
-                return _context12.abrupt("return", {
-                  data: normalizeDoc(_objectSpread(_objectSpread({}, document), {}, {
-                    _id: _id,
-                    _rev: resp.rev,
-                    _deleted: true
-                  }), this.doctype)
-                });
+"use strict";
 
-              case 5:
-              case "end":
-                return _context12.stop();
-            }
-          }
-        }, _callee12, this);
-      }));
 
-      function destroy(_x15) {
-        return _destroy.apply(this, arguments);
-      }
+var undefined;
 
-      return destroy;
-    }()
-    /**
-     * Updates several documents in one batch
-     *
-     * @param  {Document[]} rawDocs Documents to be updated
-     */
+var $Error = __webpack_require__(551);
+var $EvalError = __webpack_require__(552);
+var $RangeError = __webpack_require__(553);
+var $ReferenceError = __webpack_require__(554);
+var $SyntaxError = __webpack_require__(555);
+var $TypeError = __webpack_require__(556);
+var $URIError = __webpack_require__(557);
 
-  }, {
-    key: "updateAll",
-    value: function () {
-      var _updateAll = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13(rawDocs) {
-        var stackClient, docs, update, firstDoc, resp;
-        return _regenerator.default.wrap(function _callee13$(_context13) {
-          while (1) {
-            switch (_context13.prev = _context13.next) {
-              case 0:
-                stackClient = this.stackClient;
-                docs = rawDocs ? rawDocs.map(function (d) {
-                  return (0, _omit.default)(d, '_type');
-                }) : rawDocs;
+var $Function = Function;
 
-                if (!(!docs || !docs.length)) {
-                  _context13.next = 4;
-                  break;
-                }
+// eslint-disable-next-line consistent-return
+var getEvalledConstructor = function (expressionSyntax) {
+	try {
+		return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')();
+	} catch (e) {}
+};
 
-                return _context13.abrupt("return", Promise.resolve([]));
+var $gOPD = Object.getOwnPropertyDescriptor;
+if ($gOPD) {
+	try {
+		$gOPD({}, '');
+	} catch (e) {
+		$gOPD = null; // this is IE 8, which has a broken gOPD
+	}
+}
 
-              case 4:
-                _context13.prev = 4;
-                _context13.next = 7;
-                return stackClient.fetchJSON('POST', "/data/".concat(this.doctype, "/_bulk_docs"), {
-                  docs: docs
-                });
+var throwTypeError = function () {
+	throw new $TypeError();
+};
+var ThrowTypeError = $gOPD
+	? (function () {
+		try {
+			// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties
+			arguments.callee; // IE 8 does not throw here
+			return throwTypeError;
+		} catch (calleeThrows) {
+			try {
+				// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')
+				return $gOPD(arguments, 'callee').get;
+			} catch (gOPDthrows) {
+				return throwTypeError;
+			}
+		}
+	}())
+	: throwTypeError;
 
-              case 7:
-                update = _context13.sent;
-                return _context13.abrupt("return", update);
+var hasSymbols = __webpack_require__(558)();
+var hasProto = __webpack_require__(560)();
 
-              case 11:
-                _context13.prev = 11;
-                _context13.t0 = _context13["catch"](4);
+var getProto = Object.getPrototypeOf || (
+	hasProto
+		? function (x) { return x.__proto__; } // eslint-disable-line no-proto
+		: null
+);
 
-                if (!(_context13.t0.reason && _context13.t0.reason.reason && _context13.t0.reason.reason === DATABASE_DOES_NOT_EXIST)) {
-                  _context13.next = 24;
-                  break;
-                }
+var needsEval = {};
 
-                _context13.next = 16;
-                return this.create(docs[0]);
+var TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);
 
-              case 16:
-                firstDoc = _context13.sent;
-                _context13.next = 19;
-                return this.updateAll(docs.slice(1));
+var INTRINSICS = {
+	__proto__: null,
+	'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,
+	'%Array%': Array,
+	'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,
+	'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,
+	'%AsyncFromSyncIteratorPrototype%': undefined,
+	'%AsyncFunction%': needsEval,
+	'%AsyncGenerator%': needsEval,
+	'%AsyncGeneratorFunction%': needsEval,
+	'%AsyncIteratorPrototype%': needsEval,
+	'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,
+	'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,
+	'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,
+	'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,
+	'%Boolean%': Boolean,
+	'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,
+	'%Date%': Date,
+	'%decodeURI%': decodeURI,
+	'%decodeURIComponent%': decodeURIComponent,
+	'%encodeURI%': encodeURI,
+	'%encodeURIComponent%': encodeURIComponent,
+	'%Error%': $Error,
+	'%eval%': eval, // eslint-disable-line no-eval
+	'%EvalError%': $EvalError,
+	'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,
+	'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,
+	'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,
+	'%Function%': $Function,
+	'%GeneratorFunction%': needsEval,
+	'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,
+	'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,
+	'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,
+	'%isFinite%': isFinite,
+	'%isNaN%': isNaN,
+	'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,
+	'%JSON%': typeof JSON === 'object' ? JSON : undefined,
+	'%Map%': typeof Map === 'undefined' ? undefined : Map,
+	'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),
+	'%Math%': Math,
+	'%Number%': Number,
+	'%Object%': Object,
+	'%parseFloat%': parseFloat,
+	'%parseInt%': parseInt,
+	'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,
+	'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,
+	'%RangeError%': $RangeError,
+	'%ReferenceError%': $ReferenceError,
+	'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,
+	'%RegExp%': RegExp,
+	'%Set%': typeof Set === 'undefined' ? undefined : Set,
+	'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),
+	'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,
+	'%String%': String,
+	'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,
+	'%Symbol%': hasSymbols ? Symbol : undefined,
+	'%SyntaxError%': $SyntaxError,
+	'%ThrowTypeError%': ThrowTypeError,
+	'%TypedArray%': TypedArray,
+	'%TypeError%': $TypeError,
+	'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,
+	'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,
+	'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,
+	'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,
+	'%URIError%': $URIError,
+	'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,
+	'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,
+	'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet
+};
 
-              case 19:
-                resp = _context13.sent;
-                resp.unshift({
-                  ok: true,
-                  id: firstDoc._id,
-                  rev: firstDoc._rev
-                });
-                return _context13.abrupt("return", resp);
+if (getProto) {
+	try {
+		null.error; // eslint-disable-line no-unused-expressions
+	} catch (e) {
+		// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229
+		var errorProto = getProto(getProto(e));
+		INTRINSICS['%Error.prototype%'] = errorProto;
+	}
+}
 
-              case 24:
-                throw _context13.t0;
+var doEval = function doEval(name) {
+	var value;
+	if (name === '%AsyncFunction%') {
+		value = getEvalledConstructor('async function () {}');
+	} else if (name === '%GeneratorFunction%') {
+		value = getEvalledConstructor('function* () {}');
+	} else if (name === '%AsyncGeneratorFunction%') {
+		value = getEvalledConstructor('async function* () {}');
+	} else if (name === '%AsyncGenerator%') {
+		var fn = doEval('%AsyncGeneratorFunction%');
+		if (fn) {
+			value = fn.prototype;
+		}
+	} else if (name === '%AsyncIteratorPrototype%') {
+		var gen = doEval('%AsyncGenerator%');
+		if (gen && getProto) {
+			value = getProto(gen.prototype);
+		}
+	}
 
-              case 25:
-              case "end":
-                return _context13.stop();
-            }
-          }
-        }, _callee13, this, [[4, 11]]);
-      }));
+	INTRINSICS[name] = value;
 
-      function updateAll(_x16) {
-        return _updateAll.apply(this, arguments);
-      }
+	return value;
+};
 
-      return updateAll;
-    }()
-    /**
-     * Deletes several documents in one batch
-     *
-     * @param  {Document[]} docs - Documents to delete
-     */
+var LEGACY_ALIASES = {
+	__proto__: null,
+	'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],
+	'%ArrayPrototype%': ['Array', 'prototype'],
+	'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],
+	'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],
+	'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],
+	'%ArrayProto_values%': ['Array', 'prototype', 'values'],
+	'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],
+	'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],
+	'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],
+	'%BooleanPrototype%': ['Boolean', 'prototype'],
+	'%DataViewPrototype%': ['DataView', 'prototype'],
+	'%DatePrototype%': ['Date', 'prototype'],
+	'%ErrorPrototype%': ['Error', 'prototype'],
+	'%EvalErrorPrototype%': ['EvalError', 'prototype'],
+	'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],
+	'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],
+	'%FunctionPrototype%': ['Function', 'prototype'],
+	'%Generator%': ['GeneratorFunction', 'prototype'],
+	'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],
+	'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],
+	'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],
+	'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],
+	'%JSONParse%': ['JSON', 'parse'],
+	'%JSONStringify%': ['JSON', 'stringify'],
+	'%MapPrototype%': ['Map', 'prototype'],
+	'%NumberPrototype%': ['Number', 'prototype'],
+	'%ObjectPrototype%': ['Object', 'prototype'],
+	'%ObjProto_toString%': ['Object', 'prototype', 'toString'],
+	'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],
+	'%PromisePrototype%': ['Promise', 'prototype'],
+	'%PromiseProto_then%': ['Promise', 'prototype', 'then'],
+	'%Promise_all%': ['Promise', 'all'],
+	'%Promise_reject%': ['Promise', 'reject'],
+	'%Promise_resolve%': ['Promise', 'resolve'],
+	'%RangeErrorPrototype%': ['RangeError', 'prototype'],
+	'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],
+	'%RegExpPrototype%': ['RegExp', 'prototype'],
+	'%SetPrototype%': ['Set', 'prototype'],
+	'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],
+	'%StringPrototype%': ['String', 'prototype'],
+	'%SymbolPrototype%': ['Symbol', 'prototype'],
+	'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],
+	'%TypedArrayPrototype%': ['TypedArray', 'prototype'],
+	'%TypeErrorPrototype%': ['TypeError', 'prototype'],
+	'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],
+	'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],
+	'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],
+	'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],
+	'%URIErrorPrototype%': ['URIError', 'prototype'],
+	'%WeakMapPrototype%': ['WeakMap', 'prototype'],
+	'%WeakSetPrototype%': ['WeakSet', 'prototype']
+};
 
-  }, {
-    key: "destroyAll",
-    value: function destroyAll(docs) {
-      return this.updateAll(docs.map(prepareForDeletion));
-    }
-    /**
-     * Returns Mango Options from Selector and Options
-     *
-     * @param {MangoSelector} selector - Mango selector
-     * @param {MangoQueryOptions} options - Mango Options
-     * @returns {MangoQueryOptions} Mango options
-     */
+var bind = __webpack_require__(561);
+var hasOwn = __webpack_require__(563);
+var $concat = bind.call(Function.call, Array.prototype.concat);
+var $spliceApply = bind.call(Function.apply, Array.prototype.splice);
+var $replace = bind.call(Function.call, String.prototype.replace);
+var $strSlice = bind.call(Function.call, String.prototype.slice);
+var $exec = bind.call(Function.call, RegExp.prototype.exec);
 
-  }, {
-    key: "toMangoOptions",
-    value: function toMangoOptions(selector) {
-      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-      var sort = options.sort,
-          indexedFields = options.indexedFields,
-          partialFilter = options.partialFilter;
-      var fields = options.fields,
-          _options$skip2 = options.skip,
-          skip = _options$skip2 === void 0 ? 0 : _options$skip2,
-          limit = options.limit,
-          bookmark = options.bookmark;
-      sort = (0, _mangoIndex.transformSort)(sort);
+/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */
+var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g;
+var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */
+var stringToPath = function stringToPath(string) {
+	var first = $strSlice(string, 0, 1);
+	var last = $strSlice(string, -1);
+	if (first === '%' && last !== '%') {
+		throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`');
+	} else if (last === '%' && first !== '%') {
+		throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`');
+	}
+	var result = [];
+	$replace(string, rePropName, function (match, number, quote, subString) {
+		result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;
+	});
+	return result;
+};
+/* end adaptation */
 
-      if (!indexedFields && selector) {
-        _logger.default.warn('Selector fields should be manually indexed to prevent unexpected behaviour');
-      }
+var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {
+	var intrinsicName = name;
+	var alias;
+	if (hasOwn(LEGACY_ALIASES, intrinsicName)) {
+		alias = LEGACY_ALIASES[intrinsicName];
+		intrinsicName = '%' + alias[0] + '%';
+	}
 
-      indexedFields = indexedFields ? indexedFields : (0, _mangoIndex.getIndexFields)({
-        sort: sort,
-        selector: selector
-      });
-      var partialFilterFields = partialFilter ? (0, _mangoIndex.getIndexFields)({
-        partialFilter: partialFilter
-      }) : null;
-      var indexName = options.indexId || "_design/".concat((0, _mangoIndex.getIndexNameFromFields)(indexedFields, {
-        partialFilterFields: partialFilterFields
-      }));
-
-      if (sort) {
-        var sortOrders = (0, _uniq.default)(sort.map(function (sortOption) {
-          return (0, _head.default)(Object.values(sortOption));
-        }));
-        if (sortOrders.length > 1) throw new Error('Mango sort can only use a single order (asc or desc).');
-        var sortOrder = sortOrders.length > 0 ? (0, _head.default)(sortOrders) : 'asc';
+	if (hasOwn(INTRINSICS, intrinsicName)) {
+		var value = INTRINSICS[intrinsicName];
+		if (value === needsEval) {
+			value = doEval(intrinsicName);
+		}
+		if (typeof value === 'undefined' && !allowMissing) {
+			throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');
+		}
 
-        var _iterator = _createForOfIteratorHelper(indexedFields),
-            _step;
+		return {
+			alias: alias,
+			name: intrinsicName,
+			value: value
+		};
+	}
 
-        try {
-          var _loop = function _loop() {
-            var field = _step.value;
-            if (!sort.find(function (sortOption) {
-              return (0, _head.default)(Object.keys(sortOption)) === field;
-            })) sort.push((0, _defineProperty2.default)({}, field, sortOrder));
-          };
+	throw new $SyntaxError('intrinsic ' + name + ' does not exist!');
+};
 
-          for (_iterator.s(); !(_step = _iterator.n()).done;) {
-            _loop();
-          }
-        } catch (err) {
-          _iterator.e(err);
-        } finally {
-          _iterator.f();
-        }
-      } // We need to pass the partialFilter in the selector, otherwise CouchDB might
-      // fallback on another index if it does not exist yet
+module.exports = function GetIntrinsic(name, allowMissing) {
+	if (typeof name !== 'string' || name.length === 0) {
+		throw new $TypeError('intrinsic name must be a non-empty string');
+	}
+	if (arguments.length > 1 && typeof allowMissing !== 'boolean') {
+		throw new $TypeError('"allowMissing" argument must be a boolean');
+	}
 
+	if ($exec(/^%?[^%]*%?$/, name) === null) {
+		throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');
+	}
+	var parts = stringToPath(name);
+	var intrinsicBaseName = parts.length > 0 ? parts[0] : '';
 
-      var mergedSelector = partialFilter ? (0, _merge.default)(_objectSpread({}, selector), partialFilter) : selector;
-      return {
-        selector: mergedSelector,
-        use_index: indexName,
-        // TODO: type and class should not be necessary, it's just a temp fix for a stack bug
-        fields: fields ? [].concat((0, _toConsumableArray2.default)(fields), ['_id', '_type', 'class']) : undefined,
-        limit: limit,
-        skip: skip,
-        bookmark: options.bookmark || bookmark,
-        sort: sort,
-        execution_stats: (0, _cozyFlags.default)('debug') ? true : undefined
-      };
-    }
-  }, {
-    key: "checkUniquenessOf",
-    value: function () {
-      var _checkUniquenessOf = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14(property, value) {
-        var indexId, existingDocs;
-        return _regenerator.default.wrap(function _callee14$(_context14) {
-          while (1) {
-            switch (_context14.prev = _context14.next) {
-              case 0:
-                _context14.next = 2;
-                return this.getUniqueIndexId(property);
+	var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);
+	var intrinsicRealName = intrinsic.name;
+	var value = intrinsic.value;
+	var skipFurtherCaching = false;
 
-              case 2:
-                indexId = _context14.sent;
-                _context14.next = 5;
-                return this.find((0, _defineProperty2.default)({}, property, value), {
-                  indexId: indexId,
-                  fields: ['_id']
-                });
+	var alias = intrinsic.alias;
+	if (alias) {
+		intrinsicBaseName = alias[0];
+		$spliceApply(parts, $concat([0, 1], alias));
+	}
 
-              case 5:
-                existingDocs = _context14.sent;
-                return _context14.abrupt("return", existingDocs.data.length === 0);
+	for (var i = 1, isOwn = true; i < parts.length; i += 1) {
+		var part = parts[i];
+		var first = $strSlice(part, 0, 1);
+		var last = $strSlice(part, -1);
+		if (
+			(
+				(first === '"' || first === "'" || first === '`')
+				|| (last === '"' || last === "'" || last === '`')
+			)
+			&& first !== last
+		) {
+			throw new $SyntaxError('property names with quotes must have matching quotes');
+		}
+		if (part === 'constructor' || !isOwn) {
+			skipFurtherCaching = true;
+		}
 
-              case 7:
-              case "end":
-                return _context14.stop();
-            }
-          }
-        }, _callee14, this);
-      }));
+		intrinsicBaseName += '.' + part;
+		intrinsicRealName = '%' + intrinsicBaseName + '%';
 
-      function checkUniquenessOf(_x17, _x18) {
-        return _checkUniquenessOf.apply(this, arguments);
-      }
+		if (hasOwn(INTRINSICS, intrinsicRealName)) {
+			value = INTRINSICS[intrinsicRealName];
+		} else if (value != null) {
+			if (!(part in value)) {
+				if (!allowMissing) {
+					throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');
+				}
+				return void undefined;
+			}
+			if ($gOPD && (i + 1) >= parts.length) {
+				var desc = $gOPD(value, part);
+				isOwn = !!desc;
 
-      return checkUniquenessOf;
-    }()
-  }, {
-    key: "getUniqueIndexId",
-    value: function getUniqueIndexId(property) {
-      return this.getIndexId([property], {
-        indexName: "".concat(this.doctype, "/").concat(property)
-      });
-    }
-  }, {
-    key: "getIndexId",
-    value: function () {
-      var _getIndexId = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15(fields, _ref4) {
-        var _ref4$partialFilter, partialFilter, _ref4$indexName, indexName, index;
+				// By convention, when a data property is converted to an accessor
+				// property to emulate a data property that does not suffer from
+				// the override mistake, that accessor's getter is marked with
+				// an `originalValue` property. Here, when we detect this, we
+				// uphold the illusion by pretending to see that original data
+				// property, i.e., returning the value rather than the getter
+				// itself.
+				if (isOwn && 'get' in desc && !('originalValue' in desc.get)) {
+					value = desc.get;
+				} else {
+					value = value[part];
+				}
+			} else {
+				isOwn = hasOwn(value, part);
+				value = value[part];
+			}
 
-        return _regenerator.default.wrap(function _callee15$(_context15) {
-          while (1) {
-            switch (_context15.prev = _context15.next) {
-              case 0:
-                _ref4$partialFilter = _ref4.partialFilter, partialFilter = _ref4$partialFilter === void 0 ? '' : _ref4$partialFilter, _ref4$indexName = _ref4.indexName, indexName = _ref4$indexName === void 0 ? (0, _mangoIndex.getIndexNameFromFields)(fields) : _ref4$indexName;
+			if (isOwn && !skipFurtherCaching) {
+				INTRINSICS[intrinsicRealName] = value;
+			}
+		}
+	}
+	return value;
+};
 
-                if (this.indexes[indexName]) {
-                  _context15.next = 20;
-                  break;
-                }
 
-                _context15.prev = 2;
-                _context15.next = 5;
-                return this.createIndex(fields, {
-                  partialFilter: partialFilter
-                });
+/***/ }),
+/* 551 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 5:
-                index = _context15.sent;
-                _context15.next = 19;
-                break;
+"use strict";
 
-              case 8:
-                _context15.prev = 8;
-                _context15.t0 = _context15["catch"](2);
 
-                if ((0, _Collection.isIndexConflictError)(_context15.t0)) {
-                  _context15.next = 14;
-                  break;
-                }
+/** @type {import('.')} */
+module.exports = Error;
 
-                throw _context15.t0;
 
-              case 14:
-                _context15.next = 16;
-                return (0, _utils.sleep)(1000);
+/***/ }),
+/* 552 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 16:
-                _context15.next = 18;
-                return this.createIndex(fields, {
-                  partialFilter: partialFilter
-                });
+"use strict";
 
-              case 18:
-                index = _context15.sent;
 
-              case 19:
-                this.indexes[indexName] = index;
+/** @type {import('./eval')} */
+module.exports = EvalError;
 
-              case 20:
-                return _context15.abrupt("return", this.indexes[indexName].id);
 
-              case 21:
-              case "end":
-                return _context15.stop();
-            }
-          }
-        }, _callee15, this, [[2, 8]]);
-      }));
+/***/ }),
+/* 553 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      function getIndexId(_x19, _x20) {
-        return _getIndexId.apply(this, arguments);
-      }
+"use strict";
 
-      return getIndexId;
-    }()
-    /**
-     *
-     * @param {Array} fields - Fields to index
-     * @param {object} indexOption - Options for the index
-     * @param {MangoPartialFilter} [indexOption.partialFilter] - partialFilter
-     * @param {string} [indexOption.indexName] - indexName
-     * @returns {Promise<{id, fields}>}
-     */
 
-  }, {
-    key: "createIndex",
-    value: function () {
-      var _createIndex = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16(fields) {
-        var _ref5,
-            partialFilter,
-            indexName,
-            indexDef,
-            resp,
-            indexResp,
-            selector,
-            options,
-            _args16 = arguments;
+/** @type {import('./range')} */
+module.exports = RangeError;
 
-        return _regenerator.default.wrap(function _callee16$(_context16) {
-          while (1) {
-            switch (_context16.prev = _context16.next) {
-              case 0:
-                _ref5 = _args16.length > 1 && _args16[1] !== undefined ? _args16[1] : {}, partialFilter = _ref5.partialFilter, indexName = _ref5.indexName;
-                indexDef = {
-                  index: {
-                    fields: fields
-                  }
-                };
 
-                if (indexName) {
-                  indexDef.ddoc = indexName;
-                }
+/***/ }),
+/* 554 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                if (partialFilter) {
-                  indexDef.index.partial_filter_selector = partialFilter;
-                }
+"use strict";
 
-                _context16.prev = 4;
-                _context16.next = 7;
-                return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject7(), this.doctype), indexDef);
 
-              case 7:
-                resp = _context16.sent;
-                _context16.next = 17;
-                break;
+/** @type {import('./ref')} */
+module.exports = ReferenceError;
 
-              case 10:
-                _context16.prev = 10;
-                _context16.t0 = _context16["catch"](4);
 
-                if ((0, _Collection.isIndexConflictError)(_context16.t0)) {
-                  _context16.next = 16;
-                  break;
-                }
+/***/ }),
+/* 555 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                throw _context16.t0;
+"use strict";
 
-              case 16:
-                return _context16.abrupt("return");
 
-              case 17:
-                indexResp = {
-                  id: resp.id,
-                  fields: fields
-                };
+/** @type {import('./syntax')} */
+module.exports = SyntaxError;
 
-                if (!(resp.result === 'exists')) {
-                  _context16.next = 20;
-                  break;
-                }
 
-                return _context16.abrupt("return", indexResp);
+/***/ }),
+/* 556 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 20:
-                // indexes might not be usable right after being created; so we delay the resolving until they are
-                selector = {};
-                fields.forEach(function (f) {
-                  return selector[f] = {
-                    $gt: null
-                  };
-                });
-                options = {
-                  indexId: indexResp.id,
-                  limit: 1,
-                  partialFilterFields: partialFilter ? (0, _mangoIndex.getIndexFields)({
-                    partialFilter: partialFilter
-                  }) : null
-                };
-                _context16.next = 25;
-                return (0, _utils.attempt)(this.find(selector, options));
+"use strict";
 
-              case 25:
-                if (!_context16.sent) {
-                  _context16.next = 27;
-                  break;
-                }
 
-                return _context16.abrupt("return", indexResp);
+/** @type {import('./type')} */
+module.exports = TypeError;
 
-              case 27:
-                _context16.next = 29;
-                return (0, _utils.sleep)(1000);
 
-              case 29:
-                _context16.next = 31;
-                return (0, _utils.attempt)(this.find(selector, options));
+/***/ }),
+/* 557 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 31:
-                if (!_context16.sent) {
-                  _context16.next = 33;
-                  break;
-                }
+"use strict";
 
-                return _context16.abrupt("return", indexResp);
 
-              case 33:
-                _context16.next = 35;
-                return (0, _utils.sleep)(500);
+/** @type {import('./uri')} */
+module.exports = URIError;
 
-              case 35:
-                return _context16.abrupt("return", indexResp);
 
-              case 36:
-              case "end":
-                return _context16.stop();
-            }
-          }
-        }, _callee16, this, [[4, 10]]);
-      }));
+/***/ }),
+/* 558 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      function createIndex(_x21) {
-        return _createIndex.apply(this, arguments);
-      }
+"use strict";
 
-      return createIndex;
-    }()
-    /**
-     * Retrieve all design docs of mango indexes
-     *
-     * @returns {Promise<DesignDoc[]>} The design docs
-     */
 
-  }, {
-    key: "fetchAllMangoIndexes",
-    value: function () {
-      var _fetchAllMangoIndexes = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17() {
-        var path, indexes;
-        return _regenerator.default.wrap(function _callee17$(_context17) {
-          while (1) {
-            switch (_context17.prev = _context17.next) {
-              case 0:
-                path = (0, _utils.uri)(_templateObject8(), this.doctype);
-                _context17.next = 3;
-                return this.stackClient.fetchJSON('GET', path);
+var origSymbol = typeof Symbol !== 'undefined' && Symbol;
+var hasSymbolSham = __webpack_require__(559);
 
-              case 3:
-                indexes = _context17.sent;
-                return _context17.abrupt("return", indexes.rows.filter(function (index) {
-                  return index.doc.language === 'query';
-                }).map(function (doc) {
-                  return (0, _mangoIndex.normalizeDesignDoc)(doc);
-                }));
+module.exports = function hasNativeSymbols() {
+	if (typeof origSymbol !== 'function') { return false; }
+	if (typeof Symbol !== 'function') { return false; }
+	if (typeof origSymbol('foo') !== 'symbol') { return false; }
+	if (typeof Symbol('bar') !== 'symbol') { return false; }
 
-              case 5:
-              case "end":
-                return _context17.stop();
-            }
-          }
-        }, _callee17, this);
-      }));
+	return hasSymbolSham();
+};
 
-      function fetchAllMangoIndexes() {
-        return _fetchAllMangoIndexes.apply(this, arguments);
-      }
 
-      return fetchAllMangoIndexes;
-    }()
-    /**
-     * Delete the specified design doc
-     *
-     * @param {DesignDoc} index - The design doc to remove
-     * @returns {Promise<object>} The delete response
-     */
+/***/ }),
+/* 559 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  }, {
-    key: "destroyIndex",
-    value: function () {
-      var _destroyIndex = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18(index) {
-        var ddoc, rev, path;
-        return _regenerator.default.wrap(function _callee18$(_context18) {
-          while (1) {
-            switch (_context18.prev = _context18.next) {
-              case 0:
-                ddoc = index._id.split('/')[1];
-                rev = index._rev;
-                path = (0, _utils.uri)(_templateObject9(), this.doctype, ddoc, rev);
-                return _context18.abrupt("return", this.stackClient.fetchJSON('DELETE', path));
+"use strict";
 
-              case 4:
-              case "end":
-                return _context18.stop();
-            }
-          }
-        }, _callee18, this);
-      }));
 
-      function destroyIndex(_x22) {
-        return _destroyIndex.apply(this, arguments);
-      }
+/* eslint complexity: [2, 18], max-statements: [2, 33] */
+module.exports = function hasSymbols() {
+	if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }
+	if (typeof Symbol.iterator === 'symbol') { return true; }
 
-      return destroyIndex;
-    }()
-    /**
-     * Copy an existing design doc.
-     *
-     * This is useful to create a new design doc without
-     * having to recompute the existing index.
-     *
-     * @param {DesignDoc} existingIndex - The design doc to copy
-     * @param {string} newIndexName - The name of the copy
-     * @returns {Promise<DesignDoc>} The copy response
-     */
+	var obj = {};
+	var sym = Symbol('test');
+	var symObj = Object(sym);
+	if (typeof sym === 'string') { return false; }
 
-  }, {
-    key: "copyIndex",
-    value: function () {
-      var _copyIndex = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19(existingIndex, newIndexName) {
-        var ddoc, rev, path, options;
-        return _regenerator.default.wrap(function _callee19$(_context19) {
-          while (1) {
-            switch (_context19.prev = _context19.next) {
-              case 0:
-                ddoc = existingIndex._id.split('/')[1];
-                rev = existingIndex._rev;
-                path = (0, _utils.uri)(_templateObject10(), this.doctype, ddoc, rev);
-                options = {
-                  headers: {
-                    Destination: "_design/".concat(newIndexName)
-                  }
-                };
-                return _context19.abrupt("return", this.stackClient.fetchJSON('POST', path, null, options));
+	if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }
+	if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }
 
-              case 5:
-              case "end":
-                return _context19.stop();
-            }
-          }
-        }, _callee19, this);
-      }));
+	// temp disabled per https://github.com/ljharb/object.assign/issues/17
+	// if (sym instanceof Symbol) { return false; }
+	// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4
+	// if (!(symObj instanceof Symbol)) { return false; }
 
-      function copyIndex(_x23, _x24) {
-        return _copyIndex.apply(this, arguments);
-      }
+	// if (typeof Symbol.prototype.toString !== 'function') { return false; }
+	// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }
 
-      return copyIndex;
-    }()
-    /**
-     * Find an existing mango index based on the query definition
-     *
-     * This is useful to avoid creating new indexes having the
-     * same definition of an existing one.
-     *
-     * @param {MangoSelector}     selector  The query selector
-     * @param {MangoQueryOptions} options   The find options
-     *
-     * @returns {Promise<DesignDoc>} A matching index if it exists
-     * @private
-     */
+	var symVal = 42;
+	obj[sym] = symVal;
+	for (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop
+	if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }
 
-  }, {
-    key: "findExistingIndex",
-    value: function () {
-      var _findExistingIndex = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee20(selector, options) {
-        var sort, indexedFields, partialFilter, indexes, fieldsToIndex, existingIndex;
-        return _regenerator.default.wrap(function _callee20$(_context20) {
-          while (1) {
-            switch (_context20.prev = _context20.next) {
-              case 0:
-                sort = options.sort, indexedFields = options.indexedFields, partialFilter = options.partialFilter;
-                _context20.next = 3;
-                return this.fetchAllMangoIndexes();
+	if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }
 
-              case 3:
-                indexes = _context20.sent;
+	var syms = Object.getOwnPropertySymbols(obj);
+	if (syms.length !== 1 || syms[0] !== sym) { return false; }
 
-                if (!(indexes.length < 1)) {
-                  _context20.next = 6;
-                  break;
-                }
+	if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }
 
-                return _context20.abrupt("return", null);
+	if (typeof Object.getOwnPropertyDescriptor === 'function') {
+		var descriptor = Object.getOwnPropertyDescriptor(obj, sym);
+		if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }
+	}
 
-              case 6:
-                sort = (0, _mangoIndex.transformSort)(sort);
-                fieldsToIndex = indexedFields ? indexedFields : (0, _mangoIndex.getIndexFields)({
-                  sort: sort,
-                  selector: selector
-                });
-                existingIndex = indexes.find(function (index) {
-                  return (0, _mangoIndex.isMatchingIndex)(index, fieldsToIndex, partialFilter);
-                });
-                return _context20.abrupt("return", existingIndex);
+	return true;
+};
 
-              case 10:
-              case "end":
-                return _context20.stop();
-            }
-          }
-        }, _callee20, this);
-      }));
 
-      function findExistingIndex(_x25, _x26) {
-        return _findExistingIndex.apply(this, arguments);
-      }
+/***/ }),
+/* 560 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      return findExistingIndex;
-    }()
-    /**
-     * Calls _changes route from CouchDB
-     * No further treatment is done contrary to fetchchanges
-     *
-     * @param {object} couchOptions - Couch options for changes https://kutt.it/5r7MNQ
-     * @param {string} [couchOptions.since] - Bookmark telling CouchDB from which point in time should changes be returned
-     * @param {Array<string>} [couchOptions.doc_ids] - Only return changes for a subset of documents
-     * @param {boolean} [couchOptions.includeDocs] - Includes full documents as part of results
-     * @param {string} [couchOptions.filter] - Filter
-     * @see https://docs.couchdb.org/en/stable/api/database/changes.html
-     */
+"use strict";
 
-  }, {
-    key: "fetchChangesRaw",
-    value: function () {
-      var _fetchChangesRaw = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee21(couchOptions) {
-        var hasDocIds, urlParams, method, endpoint, params, result;
-        return _regenerator.default.wrap(function _callee21$(_context21) {
-          while (1) {
-            switch (_context21.prev = _context21.next) {
-              case 0:
-                hasDocIds = couchOptions.doc_ids && couchOptions.doc_ids.length > 0;
-                urlParams = "?".concat([_qs.default.stringify(_objectSpread(_objectSpread({}, (0, _omit.default)(couchOptions, ['doc_ids', 'includeDocs'])), {}, {
-                  include_docs: couchOptions.includeDocs
-                })), hasDocIds && couchOptions.filter === undefined ? 'filter=_doc_ids' : undefined].filter(Boolean).join('&'));
-                method = hasDocIds ? 'POST' : 'GET';
-                endpoint = "/data/".concat(this.doctype, "/_changes").concat(urlParams);
-                params = hasDocIds ? {
-                  doc_ids: couchOptions.doc_ids
-                } : undefined;
-                _context21.next = 7;
-                return this.stackClient.fetchJSON(method, endpoint, params);
 
-              case 7:
-                result = _context21.sent;
-                return _context21.abrupt("return", result);
+var test = {
+	__proto__: null,
+	foo: {}
+};
 
-              case 9:
-              case "end":
-                return _context21.stop();
-            }
-          }
-        }, _callee21, this);
-      }));
+var $Object = Object;
 
-      function fetchChangesRaw(_x27) {
-        return _fetchChangesRaw.apply(this, arguments);
-      }
+/** @type {import('.')} */
+module.exports = function hasProto() {
+	// @ts-expect-error: TS errors on an inherited property for some reason
+	return { __proto__: test }.foo === test.foo
+		&& !(test instanceof $Object);
+};
 
-      return fetchChangesRaw;
-    }()
-    /**
-     * Use Couch _changes API
-     * Deleted and design docs are filtered by default, thus documents are retrieved in the response
-     * (include_docs is set to true in the parameters of _changes).
-     *
-     * You should use fetchChangesRaw to have low level control on _changes parameters.
-     *
-     * @param {object} couchOptions - Couch options for changes
-     * @param {string} [couchOptions.since] - Bookmark telling CouchDB from which point in time should changes be returned
-     * @param {Array<string>} [couchOptions.doc_ids] - Only return changes for a subset of documents
-     *
-     * @param {object} options - Further options on the returned documents. By default, it is set to { includeDesign: false, includeDeleted: false }
-     * @param {boolean} [options.includeDesign] - Whether to include changes from design docs (needs include_docs to be true)
-     * @param {boolean} [options.includeDeleted] - Whether to include changes for deleted documents (needs include_docs to be true)
-     *
-     * @typedef {object} FetchChangesReturnValue
-     * @property {string} newLastSeq
-     * @property {Array<object>} documents
-     * @returns {Promise<FetchChangesReturnValue>}
-     */
 
-  }, {
-    key: "fetchChanges",
-    value: function () {
-      var _fetchChanges = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee22() {
-        var _this4 = this;
+/***/ }),
+/* 561 */
+/***/ (function(module, exports, __webpack_require__) {
 
-        var couchOptions,
-            options,
-            opts,
-            result,
-            newLastSeq,
-            docs,
-            _args22 = arguments;
-        return _regenerator.default.wrap(function _callee22$(_context22) {
-          while (1) {
-            switch (_context22.prev = _context22.next) {
-              case 0:
-                couchOptions = _args22.length > 0 && _args22[0] !== undefined ? _args22[0] : {};
-                options = _args22.length > 1 && _args22[1] !== undefined ? _args22[1] : {};
-                opts = {
-                  // Necessary since we deal with deleted and design docs later
-                  includeDocs: true
-                };
+"use strict";
 
-                if (typeof couchOptions !== 'object') {
-                  opts.since = couchOptions;
 
-                  _logger.default.warn("fetchChanges use couchOptions as Object not a string, since is deprecated, please use fetchChanges({since: \"".concat(couchOptions, "\"})."));
-                } else if (Object.keys(couchOptions).length > 0) {
-                  Object.assign(opts, couchOptions);
-                }
+var implementation = __webpack_require__(562);
 
-                _context22.next = 6;
-                return this.fetchChangesRaw(opts);
+module.exports = Function.prototype.bind || implementation;
 
-              case 6:
-                result = _context22.sent;
-                newLastSeq = result.last_seq;
-                docs = result.results.map(function (x) {
-                  return x.doc;
-                }).filter(Boolean);
 
-                if (!options.includeDesign) {
-                  docs = docs.filter(function (doc) {
-                    return doc._id.indexOf('_design') !== 0;
-                  });
-                }
+/***/ }),
+/* 562 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                if (!options.includeDeleted) {
-                  docs = docs.filter(function (doc) {
-                    return !doc._deleted;
-                  });
-                }
+"use strict";
 
-                return _context22.abrupt("return", {
-                  newLastSeq: newLastSeq,
-                  documents: docs.map(function (doc) {
-                    return normalizeDoc(doc, _this4.doctype);
-                  })
-                });
 
-              case 12:
-              case "end":
-                return _context22.stop();
-            }
-          }
-        }, _callee22, this);
-      }));
+/* eslint no-invalid-this: 1 */
 
-      function fetchChanges() {
-        return _fetchChanges.apply(this, arguments);
-      }
+var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';
+var toStr = Object.prototype.toString;
+var max = Math.max;
+var funcType = '[object Function]';
 
-      return fetchChanges;
-    }()
-  }], [{
-    key: "normalizeDoctype",
-    value: function normalizeDoctype(doctype) {
-      return this.normalizeDoctypeRawApi(doctype);
+var concatty = function concatty(a, b) {
+    var arr = [];
+
+    for (var i = 0; i < a.length; i += 1) {
+        arr[i] = a[i];
+    }
+    for (var j = 0; j < b.length; j += 1) {
+        arr[j + a.length] = b[j];
     }
-    /**
-     * `normalizeDoctype` for api end points returning json api responses
-     *
-     * @private
-     * @param {string} doctype - Document doctype
-     * @returns {Function} (data, response) => normalizedDocument
-     *                                        using `normalizeDoc`
-     */
 
-  }, {
-    key: "normalizeDoctypeJsonApi",
-    value: function normalizeDoctypeJsonApi(doctype) {
-      return function (data, response) {
-        // use the "data" attribute of the response
-        return normalizeDoc(data, doctype);
-      };
+    return arr;
+};
+
+var slicy = function slicy(arrLike, offset) {
+    var arr = [];
+    for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {
+        arr[j] = arrLike[i];
     }
-    /**
-     * `normalizeDoctype` for api end points returning raw documents
-     *
-     * @private
-     * @param {string} doctype - Document doctype
-     * @returns {Function} (data, response) => normalizedDocument
-     *                                        using `normalizeDoc`
-     */
+    return arr;
+};
 
-  }, {
-    key: "normalizeDoctypeRawApi",
-    value: function normalizeDoctypeRawApi(doctype) {
-      return function (data, response) {
-        // use the response directly
-        return normalizeDoc(response, doctype);
-      };
+var joiny = function (arr, joiner) {
+    var str = '';
+    for (var i = 0; i < arr.length; i += 1) {
+        str += arr[i];
+        if (i + 1 < arr.length) {
+            str += joiner;
+        }
     }
-  }]);
-  return DocumentCollection;
-}();
+    return str;
+};
 
-var _default = DocumentCollection;
-exports.default = _default;
-var normalizeDoctype = DocumentCollection.normalizeDoctype;
-exports.normalizeDoctype = normalizeDoctype;
+module.exports = function bind(that) {
+    var target = this;
+    if (typeof target !== 'function' || toStr.apply(target) !== funcType) {
+        throw new TypeError(ERROR_MESSAGE + target);
+    }
+    var args = slicy(arguments, 1);
 
-/***/ }),
-/* 492 */
-/***/ (function(module, exports) {
+    var bound;
+    var binder = function () {
+        if (this instanceof bound) {
+            var result = target.apply(
+                this,
+                concatty(args, arguments)
+            );
+            if (Object(result) === result) {
+                return result;
+            }
+            return this;
+        }
+        return target.apply(
+            that,
+            concatty(args, arguments)
+        );
 
-function _taggedTemplateLiteral(strings, raw) {
-  if (!raw) {
-    raw = strings.slice(0);
-  }
+    };
 
-  return Object.freeze(Object.defineProperties(strings, {
-    raw: {
-      value: Object.freeze(raw)
+    var boundLength = max(0, target.length - args.length);
+    var boundArgs = [];
+    for (var i = 0; i < boundLength; i++) {
+        boundArgs[i] = '$' + i;
     }
-  }));
-}
 
-module.exports = _taggedTemplateLiteral, module.exports.__esModule = true, module.exports["default"] = module.exports;
+    bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);
+
+    if (target.prototype) {
+        var Empty = function Empty() {};
+        Empty.prototype = target.prototype;
+        bound.prototype = new Empty();
+        Empty.prototype = null;
+    }
+
+    return bound;
+};
+
 
 /***/ }),
-/* 493 */
+/* 563 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _flag = _interopRequireDefault(__webpack_require__(494));
+var call = Function.prototype.call;
+var $hasOwn = Object.prototype.hasOwnProperty;
+var bind = __webpack_require__(561);
 
-/* global __ENABLED_FLAGS__ */
-if (typeof __ENABLED_FLAGS__ !== 'undefined') {
-  _flag.default.enable(__ENABLED_FLAGS__);
-}
+/** @type {(o: {}, p: PropertyKey) => p is keyof o} */
+module.exports = bind.call(call, $hasOwn);
 
-var _default = _flag.default;
-exports.default = _default;
 
 /***/ }),
-/* 494 */
+/* 564 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.resetFlags = exports.listFlags = exports.initializeFromRemote = exports.initializeFromDOM = exports.initialize = exports.getTemplateData = exports.enable = exports.default = void 0;
-
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+var GetIntrinsic = __webpack_require__(550);
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+var callBind = __webpack_require__(565);
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+var $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+module.exports = function callBoundIntrinsic(name, allowMissing) {
+	var intrinsic = GetIntrinsic(name, !!allowMissing);
+	if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {
+		return callBind(intrinsic);
+	}
+	return intrinsic;
+};
 
-var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
 
-var _dsl = __webpack_require__(495);
+/***/ }),
+/* 565 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _store = _interopRequireDefault(__webpack_require__(519));
+"use strict";
 
-function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
 
-function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+var bind = __webpack_require__(561);
+var GetIntrinsic = __webpack_require__(550);
+var setFunctionLength = __webpack_require__(566);
 
-function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+var $TypeError = __webpack_require__(556);
+var $apply = GetIntrinsic('%Function.prototype.apply%');
+var $call = GetIntrinsic('%Function.prototype.call%');
+var $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);
 
-var store = new _store.default();
-/**
- * Public API to use flags
- * @template T
- * @param {string} key - The flag key to get or set.
- * @param {T} [value] - The value to set for the flag key. If not provided, the function will return the value of the key.
- * @returns {T} The value of the flag key when getting, or the set value when setting.
- */
+var $defineProperty = __webpack_require__(568);
+var $max = GetIntrinsic('%Math.max%');
 
-var flag = function flag(key, value) {
-  if (arguments.length === 1) {
-    return store.get(key);
-  } else {
-    store.set(key, value);
-    return value;
-  }
+module.exports = function callBind(originalFunction) {
+	if (typeof originalFunction !== 'function') {
+		throw new $TypeError('a function is required');
+	}
+	var func = $reflectApply(bind, $call, arguments);
+	return setFunctionLength(
+		func,
+		1 + $max(0, originalFunction.length - (arguments.length - 1)),
+		true
+	);
 };
-/** List all flags from the store */
-
 
-var listFlags = function listFlags() {
-  return store.keys().sort();
+var applyBind = function applyBind() {
+	return $reflectApply(bind, $apply, arguments);
 };
-/** Resets all the flags */
-
 
-exports.listFlags = listFlags;
+if ($defineProperty) {
+	$defineProperty(module.exports, 'apply', { value: applyBind });
+} else {
+	module.exports.apply = applyBind;
+}
 
-var resetFlags = function resetFlags() {
-  listFlags().forEach(function (name) {
-    return store.remove(name);
-  });
-};
-/**
- * Enables several flags
- *
- * Supports passing either  object flagName -> flagValue
- *
- * @param {string[]|Object} flagsToEnable
- */
 
+/***/ }),
+/* 566 */
+/***/ (function(module, exports, __webpack_require__) {
 
-exports.resetFlags = resetFlags;
+"use strict";
 
-var enable = function enable(flagsToEnable) {
-  var flagNameToValue;
 
-  if (Array.isArray(flagsToEnable)) {
-    if (flagsToEnable.length === 0) {
-      return;
-    } // eslint-disable-next-line no-console
+var GetIntrinsic = __webpack_require__(550);
+var define = __webpack_require__(567);
+var hasDescriptors = __webpack_require__(570)();
+var gOPD = __webpack_require__(569);
 
+var $TypeError = __webpack_require__(556);
+var $floor = GetIntrinsic('%Math.floor%');
 
-    console.log('flags.enable: Deprecation warning: prefer to use an object { flag1: true, flag2: true } instead of an array when using flags.enable');
-    flagNameToValue = flagsToEnable.map(function (flagName) {
-      return [flagName, true];
-    });
-  } else if (typeof flagsToEnable === 'object') {
-    flagNameToValue = Object.entries(flagsToEnable);
-  }
+/** @type {import('.')} */
+module.exports = function setFunctionLength(fn, length) {
+	if (typeof fn !== 'function') {
+		throw new $TypeError('`fn` is not a function');
+	}
+	if (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {
+		throw new $TypeError('`length` must be a positive 32-bit integer');
+	}
 
-  if (!flagNameToValue) {
-    return;
-  }
+	var loose = arguments.length > 2 && !!arguments[2];
 
-  var _iterator = _createForOfIteratorHelper(flagNameToValue),
-      _step;
-
-  try {
-    for (_iterator.s(); !(_step = _iterator.n()).done;) {
-      var _step$value = (0, _slicedToArray2.default)(_step.value, 2),
-          flagName = _step$value[0],
-          flagValue = _step$value[1];
+	var functionLengthIsConfigurable = true;
+	var functionLengthIsWritable = true;
+	if ('length' in fn && gOPD) {
+		var desc = gOPD(fn, 'length');
+		if (desc && !desc.configurable) {
+			functionLengthIsConfigurable = false;
+		}
+		if (desc && !desc.writable) {
+			functionLengthIsWritable = false;
+		}
+	}
 
-      flag(flagName, flagValue);
-    }
-  } catch (err) {
-    _iterator.e(err);
-  } finally {
-    _iterator.f();
-  }
+	if (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {
+		if (hasDescriptors) {
+			define(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);
+		} else {
+			define(/** @type {Parameters<define>[0]} */ (fn), 'length', length);
+		}
+	}
+	return fn;
 };
-/**
- * Initializes flags from the remote endpoint serving instance flags
- *
- * @private
- * @see  https://docs.cozy.io/en/cozy-stack/settings/#get-settingsflags
- * @param  {import('cozy-client/types/CozyClient').default} client
- */
-
 
-exports.enable = enable;
 
-var initializeFromRemote = /*#__PURE__*/function () {
-  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client) {
-    var _yield$client$query, attributes;
+/***/ }),
+/* 567 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    return _regenerator.default.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            _context.next = 2;
-            return client.query((0, _dsl.Q)('io.cozy.settings').getById('io.cozy.settings.flags'));
+"use strict";
 
-          case 2:
-            _yield$client$query = _context.sent;
-            attributes = _yield$client$query.data.attributes;
-            enable(attributes);
 
-          case 5:
-          case "end":
-            return _context.stop();
-        }
-      }
-    }, _callee);
-  }));
+var $defineProperty = __webpack_require__(568);
 
-  return function initializeFromRemote(_x) {
-    return _ref.apply(this, arguments);
-  };
-}();
+var $SyntaxError = __webpack_require__(555);
+var $TypeError = __webpack_require__(556);
 
-exports.initializeFromRemote = initializeFromRemote;
+var gopd = __webpack_require__(569);
 
-var capitalize = function capitalize(str) {
-  return str[0].toUpperCase() + str.slice(1);
-};
+/** @type {import('.')} */
+module.exports = function defineDataProperty(
+	obj,
+	property,
+	value
+) {
+	if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {
+		throw new $TypeError('`obj` must be an object or a function`');
+	}
+	if (typeof property !== 'string' && typeof property !== 'symbol') {
+		throw new $TypeError('`property` must be a string or a symbol`');
+	}
+	if (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {
+		throw new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');
+	}
+	if (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {
+		throw new $TypeError('`nonWritable`, if provided, must be a boolean or null');
+	}
+	if (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {
+		throw new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');
+	}
+	if (arguments.length > 6 && typeof arguments[6] !== 'boolean') {
+		throw new $TypeError('`loose`, if provided, must be a boolean');
+	}
 
-var getTemplateData = function getTemplateData(attr) {
-  if (typeof document === 'undefined') {
-    return null;
-  }
+	var nonEnumerable = arguments.length > 3 ? arguments[3] : null;
+	var nonWritable = arguments.length > 4 ? arguments[4] : null;
+	var nonConfigurable = arguments.length > 5 ? arguments[5] : null;
+	var loose = arguments.length > 6 ? arguments[6] : false;
 
-  var allDataNode = document.querySelector('[data-cozy]');
-  var attrNode = document.querySelector("[data-cozy-".concat(attr, "]"));
+	/* @type {false | TypedPropertyDescriptor<unknown>} */
+	var desc = !!gopd && gopd(obj, property);
 
-  try {
-    if (allDataNode) {
-      return JSON.parse(allDataNode.dataset.cozy)[attr];
-    } else if (attrNode) {
-      // eslint-disable-next-line no-console
-      console.warn('Prefer to use [data-cozy] to store template data. <div data-cozy="{{.CozyData}}></div>. "');
-      return JSON.parse(attrNode.dataset["cozy".concat(capitalize(attr))]);
-    } else {
-      return null;
-    }
-  } catch (e) {
-    return null;
-  }
+	if ($defineProperty) {
+		$defineProperty(obj, property, {
+			configurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,
+			enumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,
+			value: value,
+			writable: nonWritable === null && desc ? desc.writable : !nonWritable
+		});
+	} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {
+		// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable
+		obj[property] = value; // eslint-disable-line no-param-reassign
+	} else {
+		throw new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');
+	}
 };
-/**
- * Initialize from the template data injected by cozy-stack into the DOM
- *
- * @private
- * @see https://docs.cozy.io/en/cozy-stack/client-app-dev/#good-practices-for-your-application
- *
- * @returns {Boolean} - False is DOM initialization could not be completed, true otherwise
- */
-
-
-exports.getTemplateData = getTemplateData;
-
-var initializeFromDOM = /*#__PURE__*/function () {
-  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
-    var domData;
-    return _regenerator.default.wrap(function _callee2$(_context2) {
-      while (1) {
-        switch (_context2.prev = _context2.next) {
-          case 0:
-            domData = getTemplateData('flags');
-
-            if (domData) {
-              _context2.next = 3;
-              break;
-            }
-
-            return _context2.abrupt("return", false);
-
-          case 3:
-            enable(domData);
-            return _context2.abrupt("return", true);
-
-          case 5:
-          case "end":
-            return _context2.stop();
-        }
-      }
-    }, _callee2);
-  }));
-
-  return function initializeFromDOM() {
-    return _ref2.apply(this, arguments);
-  };
-}();
-/**
- * Initialize flags from DOM if possible, otherwise from remote endpoint
- *
- * @example
- *
- * Flags can be taken from the flags injected by the stack
- * ```
- * <div data-cozy="{{ .CozyData }}"></div>
- *
- * // not recommended but possible
- * <div data-flags="{{ .Flags }}"></div>
- * ````
- *
- * @param  {import('cozy-client/types/CozyClient').default} client - A CozyClient
- * @return {Promise} Resolves when flags have been initialized
- */
-
 
-exports.initializeFromDOM = initializeFromDOM;
 
-var initialize = /*#__PURE__*/function () {
-  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(client) {
-    var domRes;
-    return _regenerator.default.wrap(function _callee3$(_context3) {
-      while (1) {
-        switch (_context3.prev = _context3.next) {
-          case 0:
-            _context3.next = 2;
-            return initializeFromDOM();
+/***/ }),
+/* 568 */
+/***/ (function(module, exports, __webpack_require__) {
 
-          case 2:
-            domRes = _context3.sent;
+"use strict";
 
-            if (!(domRes == false)) {
-              _context3.next = 6;
-              break;
-            }
 
-            _context3.next = 6;
-            return initializeFromRemote(client);
+var GetIntrinsic = __webpack_require__(550);
 
-          case 6:
-          case "end":
-            return _context3.stop();
-        }
-      }
-    }, _callee3);
-  }));
+/** @type {import('.')} */
+var $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;
+if ($defineProperty) {
+	try {
+		$defineProperty({}, 'a', { value: 1 });
+	} catch (e) {
+		// IE 8 has a broken defineProperty
+		$defineProperty = false;
+	}
+}
 
-  return function initialize(_x2) {
-    return _ref3.apply(this, arguments);
-  };
-}();
+module.exports = $defineProperty;
 
-exports.initialize = initialize;
 
-var FlagClientPlugin = /*#__PURE__*/function () {
-  function FlagClientPlugin(client) {
-    (0, _classCallCheck2.default)(this, FlagClientPlugin);
-    this.client = client;
-    this.handleLogin = this.handleLogin.bind(this);
-    this.handleLogout = this.handleLogout.bind(this);
-    this.client.on('login', this.handleLogin);
-    this.client.on('logout', this.handleLogout);
-    this.setupInitializing();
-    if (client.isLogged) this.handleLogin();
-  }
-  /**
-   * Fetches and sets flags from remote
-   */
+/***/ }),
+/* 569 */
+/***/ (function(module, exports, __webpack_require__) {
 
+"use strict";
 
-  (0, _createClass2.default)(FlagClientPlugin, [{
-    key: "refresh",
-    value: function () {
-      var _refresh = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
-        return _regenerator.default.wrap(function _callee4$(_context4) {
-          while (1) {
-            switch (_context4.prev = _context4.next) {
-              case 0:
-                _context4.next = 2;
-                return flag.initializeFromRemote(this.client);
 
-              case 2:
-              case "end":
-                return _context4.stop();
-            }
-          }
-        }, _callee4, this);
-      }));
+var GetIntrinsic = __webpack_require__(550);
 
-      function refresh() {
-        return _refresh.apply(this, arguments);
-      }
+var $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);
 
-      return refresh;
-    }()
-    /**
-     * Sets up a promise that can be awaited to wait for flag complete
-     * initialization
-     */
+if ($gOPD) {
+	try {
+		$gOPD([], 'length');
+	} catch (e) {
+		// IE 8 has a broken gOPD
+		$gOPD = null;
+	}
+}
 
-  }, {
-    key: "setupInitializing",
-    value: function setupInitializing() {
-      var _this = this;
+module.exports = $gOPD;
 
-      this.initializing = new Promise(function (resolve) {
-        _this.resolveInitializing = resolve;
-      });
-    }
-  }, {
-    key: "handleLogin",
-    value: function () {
-      var _handleLogin = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
-        return _regenerator.default.wrap(function _callee5$(_context5) {
-          while (1) {
-            switch (_context5.prev = _context5.next) {
-              case 0:
-                _context5.next = 2;
-                return flag.initialize(this.client);
 
-              case 2:
-                this.resolveInitializing();
-                this.client.emit('plugin:flag:login');
+/***/ }),
+/* 570 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 4:
-              case "end":
-                return _context5.stop();
-            }
-          }
-        }, _callee5, this);
-      }));
+"use strict";
 
-      function handleLogin() {
-        return _handleLogin.apply(this, arguments);
-      }
 
-      return handleLogin;
-    }()
-  }, {
-    key: "handleLogout",
-    value: function () {
-      var _handleLogout = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
-        return _regenerator.default.wrap(function _callee6$(_context6) {
-          while (1) {
-            switch (_context6.prev = _context6.next) {
-              case 0:
-                flag.reset();
-                this.setupInitializing();
-                this.client.emit('plugin:flag:logout');
+var $defineProperty = __webpack_require__(568);
 
-              case 3:
-              case "end":
-                return _context6.stop();
-            }
-          }
-        }, _callee6, this);
-      }));
+var hasPropertyDescriptors = function hasPropertyDescriptors() {
+	return !!$defineProperty;
+};
 
-      function handleLogout() {
-        return _handleLogout.apply(this, arguments);
-      }
+hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {
+	// node v0.6 has a bug where array lengths can be Set but not Defined
+	if (!$defineProperty) {
+		return null;
+	}
+	try {
+		return $defineProperty([], 'length', { value: 1 }).length !== 1;
+	} catch (e) {
+		// In Firefox 4-22, defining length on an array throws an exception.
+		return true;
+	}
+};
 
-      return handleLogout;
-    }()
-  }]);
-  return FlagClientPlugin;
-}();
+module.exports = hasPropertyDescriptors;
 
-FlagClientPlugin.pluginName = 'flags';
-flag.store = store;
-flag.list = listFlags;
-flag.reset = resetFlags;
-flag.enable = enable;
-flag.initializeFromRemote = initializeFromRemote;
-flag.initializeFromDOM = initializeFromDOM;
-flag.initialize = initialize;
-flag.plugin = FlagClientPlugin;
-var _default = flag;
-exports.default = _default;
 
 /***/ }),
-/* 495 */
+/* 571 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
+var hasMap = typeof Map === 'function' && Map.prototype;
+var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;
+var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;
+var mapForEach = hasMap && Map.prototype.forEach;
+var hasSet = typeof Set === 'function' && Set.prototype;
+var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;
+var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;
+var setForEach = hasSet && Set.prototype.forEach;
+var hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;
+var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;
+var hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;
+var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;
+var hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;
+var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;
+var booleanValueOf = Boolean.prototype.valueOf;
+var objectToString = Object.prototype.toString;
+var functionToString = Function.prototype.toString;
+var $match = String.prototype.match;
+var $slice = String.prototype.slice;
+var $replace = String.prototype.replace;
+var $toUpperCase = String.prototype.toUpperCase;
+var $toLowerCase = String.prototype.toLowerCase;
+var $test = RegExp.prototype.test;
+var $concat = Array.prototype.concat;
+var $join = Array.prototype.join;
+var $arrSlice = Array.prototype.slice;
+var $floor = Math.floor;
+var bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;
+var gOPS = Object.getOwnPropertySymbols;
+var symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;
+var hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';
+// ie, `has-tostringtag/shams
+var toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')
+    ? Symbol.toStringTag
+    : null;
+var isEnumerable = Object.prototype.propertyIsEnumerable;
 
+var gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (
+    [].__proto__ === Array.prototype // eslint-disable-line no-proto
+        ? function (O) {
+            return O.__proto__; // eslint-disable-line no-proto
+        }
+        : null
+);
 
-var _interopRequireDefault = __webpack_require__(1);
+function addNumericSeparator(num, str) {
+    if (
+        num === Infinity
+        || num === -Infinity
+        || num !== num
+        || (num && num > -1000 && num < 1000)
+        || $test.call(/e/, str)
+    ) {
+        return str;
+    }
+    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;
+    if (typeof num === 'number') {
+        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)
+        if (int !== num) {
+            var intStr = String(int);
+            var dec = $slice.call(str, intStr.length + 1);
+            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');
+        }
+    }
+    return $replace.call(str, sepRegex, '$&_');
+}
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.QueryDefinition = exports.MutationTypes = exports.Mutations = exports.getDoctypeFromOperation = exports.uploadFile = exports.removeReferencedBy = exports.addReferencedBy = exports.removeReferencesTo = exports.addReferencesTo = exports.deleteDocument = exports.updateDocuments = exports.updateDocument = exports.createDocument = exports.isAGetByIdQuery = exports.Q = void 0;
+var utilInspect = __webpack_require__(572);
+var inspectCustom = utilInspect.custom;
+var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+module.exports = function inspect_(obj, options, depth, seen) {
+    var opts = options || {};
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+    if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {
+        throw new TypeError('option "quoteStyle" must be "single" or "double"');
+    }
+    if (
+        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'
+            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity
+            : opts.maxStringLength !== null
+        )
+    ) {
+        throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');
+    }
+    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;
+    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {
+        throw new TypeError('option "customInspect", if provided, must be `true`, `false`, or `\'symbol\'`');
+    }
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+    if (
+        has(opts, 'indent')
+        && opts.indent !== null
+        && opts.indent !== '\t'
+        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)
+    ) {
+        throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');
+    }
+    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {
+        throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');
+    }
+    var numericSeparator = opts.numericSeparator;
 
-var _findKey = _interopRequireDefault(__webpack_require__(496));
+    if (typeof obj === 'undefined') {
+        return 'undefined';
+    }
+    if (obj === null) {
+        return 'null';
+    }
+    if (typeof obj === 'boolean') {
+        return obj ? 'true' : 'false';
+    }
 
-var _logger = _interopRequireDefault(__webpack_require__(498));
-
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-/**
- * @typedef PartialQueryDefinition
- *
- * @property {Array} [indexedFields]
- * @property {Array} [sort]
- * @property {object} [selector]
- * @property {object} [partialFilter]
- * @property {Array} [fields]
- */
-
-/**
- * @typedef {object} MangoSelector
- */
+    if (typeof obj === 'string') {
+        return inspectString(obj, opts);
+    }
+    if (typeof obj === 'number') {
+        if (obj === 0) {
+            return Infinity / obj > 0 ? '0' : '-0';
+        }
+        var str = String(obj);
+        return numericSeparator ? addNumericSeparator(obj, str) : str;
+    }
+    if (typeof obj === 'bigint') {
+        var bigIntStr = String(obj) + 'n';
+        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;
+    }
 
-/**
- * @typedef {object} MangoPartialFilter
- */
+    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;
+    if (typeof depth === 'undefined') { depth = 0; }
+    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {
+        return isArray(obj) ? '[Array]' : '[Object]';
+    }
 
-/**
- * Chainable API to create query definitions to retrieve documents
- * from a Cozy. `QueryDefinition`s are sent to links.
- *
- * @augments {object}
- */
-var QueryDefinition = /*#__PURE__*/function () {
-  /**
-   * @class
-   *
-   * @param {object} options Initial options for the query definition
-   * @param  {import('../types').Doctype} [options.doctype] - The doctype of the doc.
-   * @param {import('../types').DocId|null} [options.id] - The id of the doc.
-   * @param {Array<import('../types').DocId>} [options.ids] - The ids of the docs.
-   * @param {MangoSelector} [options.selector] - The selector to query the docs.
-   * @param {Array<string>} [options.fields] - The fields to return.
-   * @param {Array<string>} [options.indexedFields] - The fields to index.
-   * @param {MangoPartialFilter} [options.partialFilter] - The partial index definition to filter docs.
-   * @param {Array<object>} [options.sort] - The sorting params.
-   * @param {Array<string>} [options.includes] - The docs to include.
-   * @param {string|null} [options.referenced] - The referenced document.
-   * @param {number|null} [options.limit] - The document's limit to return.
-   * @param {number|null} [options.skip] - The number of docs to skip.
-   * @param {import('../types').CouchDBViewCursor} [options.cursor] - The cursor to paginate views.
-   * @param {string} [options.bookmark] - The bookmark to paginate mango queries.
-   */
-  function QueryDefinition() {
-    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-    (0, _classCallCheck2.default)(this, QueryDefinition);
-    this.doctype = options.doctype;
-    this.id = options.id;
-    this.ids = options.ids;
-    this.selector = options.selector;
-    this.fields = options.fields;
-    this.indexedFields = options.indexedFields;
-    this.partialFilter = options.partialFilter;
-    this.sort = options.sort;
-    this.includes = options.includes;
-    this.referenced = options.referenced;
-    this.limit = options.limit;
-    this.skip = options.skip;
-    this.cursor = options.cursor;
-    this.bookmark = options.bookmark;
-  }
-  /**
-   * Checks if the sort order matches the index' fields order.
-   *
-   * When sorting with CouchDB, it is required to:
-   * - use indexed fields
-   * - keep the same order than the indexed fields.
-   *
-   * See https://docs.cozy.io/en/tutorials/data/queries/#sort-data-with-mango
-   *
-   * @param {PartialQueryDefinition} obj - A partial QueryDefinition to check
-   */
+    var indent = getIndent(opts, depth);
 
+    if (typeof seen === 'undefined') {
+        seen = [];
+    } else if (indexOf(seen, obj) >= 0) {
+        return '[Circular]';
+    }
 
-  (0, _createClass2.default)(QueryDefinition, [{
-    key: "checkSortOrder",
-    value: function checkSortOrder(_ref) {
-      var sort = _ref.sort,
-          selector = _ref.selector,
-          indexedFields = _ref.indexedFields;
+    function inspect(value, from, noIndent) {
+        if (from) {
+            seen = $arrSlice.call(seen);
+            seen.push(from);
+        }
+        if (noIndent) {
+            var newOpts = {
+                depth: opts.depth
+            };
+            if (has(opts, 'quoteStyle')) {
+                newOpts.quoteStyle = opts.quoteStyle;
+            }
+            return inspect_(value, newOpts, depth + 1, seen);
+        }
+        return inspect_(value, opts, depth + 1, seen);
+    }
 
-      var _sort = this.sort || sort;
+    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable
+        var name = nameOf(obj);
+        var keys = arrObjKeys(obj, inspect);
+        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');
+    }
+    if (isSymbol(obj)) {
+        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, '$1') : symToString.call(obj);
+        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;
+    }
+    if (isElement(obj)) {
+        var s = '<' + $toLowerCase.call(String(obj.nodeName));
+        var attrs = obj.attributes || [];
+        for (var i = 0; i < attrs.length; i++) {
+            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);
+        }
+        s += '>';
+        if (obj.childNodes && obj.childNodes.length) { s += '...'; }
+        s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';
+        return s;
+    }
+    if (isArray(obj)) {
+        if (obj.length === 0) { return '[]'; }
+        var xs = arrObjKeys(obj, inspect);
+        if (indent && !singleLineValues(xs)) {
+            return '[' + indentedJoin(xs, indent) + ']';
+        }
+        return '[ ' + $join.call(xs, ', ') + ' ]';
+    }
+    if (isError(obj)) {
+        var parts = arrObjKeys(obj, inspect);
+        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {
+            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';
+        }
+        if (parts.length === 0) { return '[' + String(obj) + ']'; }
+        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';
+    }
+    if (typeof obj === 'object' && customInspect) {
+        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {
+            return utilInspect(obj, { depth: maxDepth - depth });
+        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {
+            return obj.inspect();
+        }
+    }
+    if (isMap(obj)) {
+        var mapParts = [];
+        if (mapForEach) {
+            mapForEach.call(obj, function (value, key) {
+                mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));
+            });
+        }
+        return collectionOf('Map', mapSize.call(obj), mapParts, indent);
+    }
+    if (isSet(obj)) {
+        var setParts = [];
+        if (setForEach) {
+            setForEach.call(obj, function (value) {
+                setParts.push(inspect(value, obj));
+            });
+        }
+        return collectionOf('Set', setSize.call(obj), setParts, indent);
+    }
+    if (isWeakMap(obj)) {
+        return weakCollectionOf('WeakMap');
+    }
+    if (isWeakSet(obj)) {
+        return weakCollectionOf('WeakSet');
+    }
+    if (isWeakRef(obj)) {
+        return weakCollectionOf('WeakRef');
+    }
+    if (isNumber(obj)) {
+        return markBoxed(inspect(Number(obj)));
+    }
+    if (isBigInt(obj)) {
+        return markBoxed(inspect(bigIntValueOf.call(obj)));
+    }
+    if (isBoolean(obj)) {
+        return markBoxed(booleanValueOf.call(obj));
+    }
+    if (isString(obj)) {
+        return markBoxed(inspect(String(obj)));
+    }
+    // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other
+    /* eslint-env browser */
+    if (typeof window !== 'undefined' && obj === window) {
+        return '{ [object Window] }';
+    }
+    if (obj === global) {
+        return '{ [object globalThis] }';
+    }
+    if (!isDate(obj) && !isRegExp(obj)) {
+        var ys = arrObjKeys(obj, inspect);
+        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;
+        var protoTag = obj instanceof Object ? '' : 'null prototype';
+        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';
+        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';
+        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');
+        if (ys.length === 0) { return tag + '{}'; }
+        if (indent) {
+            return tag + '{' + indentedJoin(ys, indent) + '}';
+        }
+        return tag + '{ ' + $join.call(ys, ', ') + ' }';
+    }
+    return String(obj);
+};
 
-      var _selector = this.selector || selector || {};
+function wrapQuotes(s, defaultStyle, opts) {
+    var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '"' : "'";
+    return quoteChar + s + quoteChar;
+}
 
-      var _indexedFields = this.indexedFields || indexedFields;
+function quote(s) {
+    return $replace.call(String(s), /"/g, '&quot;');
+}
 
-      if (!_sort) {
-        return;
-      }
+function isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
+function isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
+function isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
+function isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
+function isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
+function isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
+function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
 
-      var fieldsToIndex = _indexedFields || Object.keys(_selector);
+// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives
+function isSymbol(obj) {
+    if (hasShammedSymbols) {
+        return obj && typeof obj === 'object' && obj instanceof Symbol;
+    }
+    if (typeof obj === 'symbol') {
+        return true;
+    }
+    if (!obj || typeof obj !== 'object' || !symToString) {
+        return false;
+    }
+    try {
+        symToString.call(obj);
+        return true;
+    } catch (e) {}
+    return false;
+}
 
-      if (!fieldsToIndex || fieldsToIndex.length < 1) {
-        return;
-      }
+function isBigInt(obj) {
+    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {
+        return false;
+    }
+    try {
+        bigIntValueOf.call(obj);
+        return true;
+    } catch (e) {}
+    return false;
+}
 
-      if (_sort.length > fieldsToIndex.length) {
-        _logger.default.warn("You should not sort on non-indexed fields.\n\n        Sort: ".concat(JSON.stringify(_sort), "\n\n        Indexed fields: ").concat(fieldsToIndex));
+var hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };
+function has(obj, key) {
+    return hasOwn.call(obj, key);
+}
 
-        return;
-      }
+function toStr(obj) {
+    return objectToString.call(obj);
+}
 
-      for (var i = 0; i < _sort.length; i++) {
-        if (Object.keys(_sort[i])[0] !== fieldsToIndex[i]) {
-          _logger.default.warn("The sort order should be the same than the indexed fields.\n\n          Sort: ".concat(JSON.stringify(_sort), "\n\n          Indexed fields: ").concat(fieldsToIndex, "\n"));
+function nameOf(f) {
+    if (f.name) { return f.name; }
+    var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/);
+    if (m) { return m[1]; }
+    return null;
+}
 
-          return;
-        }
-      }
+function indexOf(xs, x) {
+    if (xs.indexOf) { return xs.indexOf(x); }
+    for (var i = 0, l = xs.length; i < l; i++) {
+        if (xs[i] === x) { return i; }
     }
-    /**
-     * Checks the selector predicates.
-     *
-     * It is useful to warn the developer when a partial index might be used.
-     *
-     * @param {MangoSelector} selector - The selector definition
-     * @returns {void}
-     */
+    return -1;
+}
 
-  }, {
-    key: "checkSelector",
-    value: function checkSelector(selector) {
-      var hasExistsFalse = (0, _findKey.default)(selector, ['$exists', false]);
+function isMap(x) {
+    if (!mapSize || !x || typeof x !== 'object') {
+        return false;
+    }
+    try {
+        mapSize.call(x);
+        try {
+            setSize.call(x);
+        } catch (s) {
+            return true;
+        }
+        return x instanceof Map; // core-js workaround, pre-v2.5.0
+    } catch (e) {}
+    return false;
+}
 
-      if (hasExistsFalse) {
-        _logger.default.warn("The \"$exists: false\" predicate should be defined as a partial index for better performance.\n\n        Selector: ".concat(JSON.stringify(selector)));
-      }
+function isWeakMap(x) {
+    if (!weakMapHas || !x || typeof x !== 'object') {
+        return false;
+    }
+    try {
+        weakMapHas.call(x, weakMapHas);
+        try {
+            weakSetHas.call(x, weakSetHas);
+        } catch (s) {
+            return true;
+        }
+        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0
+    } catch (e) {}
+    return false;
+}
 
-      var hasNe = (0, _findKey.default)(selector, '$ne');
+function isWeakRef(x) {
+    if (!weakRefDeref || !x || typeof x !== 'object') {
+        return false;
+    }
+    try {
+        weakRefDeref.call(x);
+        return true;
+    } catch (e) {}
+    return false;
+}
 
-      if (hasNe) {
-        _logger.default.info("The use of the $ne operator is more efficient with a partial index.\n\n        Selector: ".concat(JSON.stringify(selector)));
-      }
+function isSet(x) {
+    if (!setSize || !x || typeof x !== 'object') {
+        return false;
     }
-    /**
-     * Check if the selected fields are all included in the selectors
-     *
-     * @param {PartialQueryDefinition} obj - A partial QueryDefinition to check
-     */
+    try {
+        setSize.call(x);
+        try {
+            mapSize.call(x);
+        } catch (m) {
+            return true;
+        }
+        return x instanceof Set; // core-js workaround, pre-v2.5.0
+    } catch (e) {}
+    return false;
+}
 
-  }, {
-    key: "checkSelectFields",
-    value: function checkSelectFields(_ref2) {
-      var fields = _ref2.fields,
-          selector = _ref2.selector,
-          partialFilter = _ref2.partialFilter;
+function isWeakSet(x) {
+    if (!weakSetHas || !x || typeof x !== 'object') {
+        return false;
+    }
+    try {
+        weakSetHas.call(x, weakSetHas);
+        try {
+            weakMapHas.call(x, weakMapHas);
+        } catch (s) {
+            return true;
+        }
+        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0
+    } catch (e) {}
+    return false;
+}
 
-      var _fields = this.fields || fields;
+function isElement(x) {
+    if (!x || typeof x !== 'object') { return false; }
+    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {
+        return true;
+    }
+    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';
+}
 
-      var _selector = this.selector || selector;
+function inspectString(str, opts) {
+    if (str.length > opts.maxStringLength) {
+        var remaining = str.length - opts.maxStringLength;
+        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');
+        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;
+    }
+    // eslint-disable-next-line no-control-regex
+    var s = $replace.call($replace.call(str, /(['\\])/g, '\\$1'), /[\x00-\x1f]/g, lowbyte);
+    return wrapQuotes(s, 'single', opts);
+}
 
-      var _partialFilter = this.partialFilter || partialFilter;
+function lowbyte(c) {
+    var n = c.charCodeAt(0);
+    var x = {
+        8: 'b',
+        9: 't',
+        10: 'n',
+        12: 'f',
+        13: 'r'
+    }[n];
+    if (x) { return '\\' + x; }
+    return '\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));
+}
 
-      if (!_fields || !_selector && !_partialFilter) {
-        return;
-      }
+function markBoxed(str) {
+    return 'Object(' + str + ')';
+}
 
-      var mergedSelector = _objectSpread(_objectSpread({}, _selector), _partialFilter);
+function weakCollectionOf(type) {
+    return type + ' { ? }';
+}
 
-      var selectorAttributes = Object.keys(mergedSelector);
-      var hasEveryFieldsInSelector = selectorAttributes.every(function (attribute) {
-        return _fields.includes(attribute);
-      });
+function collectionOf(type, size, entries, indent) {
+    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');
+    return type + ' (' + size + ') {' + joinedEntries + '}';
+}
 
-      if (!hasEveryFieldsInSelector) {
-        throw new Error("The .select should includes all the fields used in where or partialIndex.\n        Please fix this query: fields: ".concat(JSON.stringify(this.toDefinition())));
-      }
+function singleLineValues(xs) {
+    for (var i = 0; i < xs.length; i++) {
+        if (indexOf(xs[i], '\n') >= 0) {
+            return false;
+        }
+    }
+    return true;
+}
 
-      return;
+function getIndent(opts, depth) {
+    var baseIndent;
+    if (opts.indent === '\t') {
+        baseIndent = '\t';
+    } else if (typeof opts.indent === 'number' && opts.indent > 0) {
+        baseIndent = $join.call(Array(opts.indent + 1), ' ');
+    } else {
+        return null;
     }
-    /**
-     * Query a single document on its id.
-     *
-     * @param {string} id   The document id.
-     * @returns {QueryDefinition}  The QueryDefinition object.
-     */
+    return {
+        base: baseIndent,
+        prev: $join.call(Array(depth + 1), baseIndent)
+    };
+}
 
-  }, {
-    key: "getById",
-    value: function getById(id) {
-      if (!id) {
-        throw new Error('getById called with undefined id');
-      }
+function indentedJoin(xs, indent) {
+    if (xs.length === 0) { return ''; }
+    var lineJoiner = '\n' + indent.prev + indent.base;
+    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\n' + indent.prev;
+}
 
-      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
-        id: id
-      }));
+function arrObjKeys(obj, inspect) {
+    var isArr = isArray(obj);
+    var xs = [];
+    if (isArr) {
+        xs.length = obj.length;
+        for (var i = 0; i < obj.length; i++) {
+            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';
+        }
     }
-    /**
-     * Query several documents on their ids.
-     *
-     * @param {Array} ids   The documents ids.
-     * @returns {QueryDefinition}  The QueryDefinition object.
-     */
-
-  }, {
-    key: "getByIds",
-    value: function getByIds(ids) {
-      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
-        ids: ids
-      }));
+    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];
+    var symMap;
+    if (hasShammedSymbols) {
+        symMap = {};
+        for (var k = 0; k < syms.length; k++) {
+            symMap['$' + syms[k]] = syms[k];
+        }
     }
-    /**
-     * Query documents with a [mango selector](http://docs.couchdb.org/en/latest/api/database/find.html#find-selectors).
-     * Each field passed in the selector will be indexed, except if the indexField option is used.
-     *
-     * @param {MangoSelector} selector   The Mango selector.
-     * @returns {QueryDefinition}  The QueryDefinition object.
-     */
 
-  }, {
-    key: "where",
-    value: function where(selector) {
-      this.checkSortOrder({
-        selector: selector
-      });
-      this.checkSelector(selector);
-      this.checkSelectFields({
-        selector: selector
-      });
-      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
-        selector: selector
-      }));
+    for (var key in obj) { // eslint-disable-line no-restricted-syntax
+        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue
+        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue
+        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {
+            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section
+            continue; // eslint-disable-line no-restricted-syntax, no-continue
+        } else if ($test.call(/[^\w$]/, key)) {
+            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));
+        } else {
+            xs.push(key + ': ' + inspect(obj[key], obj));
+        }
     }
-    /**
-     * Specify which fields of each object should be returned. If it is omitted, the entire object is returned.
-     *
-     * @param {Array} fields The fields to return.
-     * @returns {QueryDefinition}  The QueryDefinition object.
-     */
+    if (typeof gOPS === 'function') {
+        for (var j = 0; j < syms.length; j++) {
+            if (isEnumerable.call(obj, syms[j])) {
+                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));
+            }
+        }
+    }
+    return xs;
+}
 
-  }, {
-    key: "select",
-    value: function select(fields) {
-      this.checkSelectFields({
-        fields: fields
-      });
-      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
-        fields: fields
-      }));
+
+/***/ }),
+/* 572 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(218).inspect;
+
+
+/***/ }),
+/* 573 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var formats = __webpack_require__(574);
+
+var has = Object.prototype.hasOwnProperty;
+var isArray = Array.isArray;
+
+var hexTable = (function () {
+    var array = [];
+    for (var i = 0; i < 256; ++i) {
+        array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());
     }
-    /**
-     * Specify which fields should be indexed. This prevent the automatic indexing of the mango fields.
-     *
-     * @param {Array} indexedFields The fields to index.
-     * @returns {QueryDefinition}  The QueryDefinition object.
-     */
 
-  }, {
-    key: "indexFields",
-    value: function indexFields(indexedFields) {
-      this.checkSortOrder({
-        indexedFields: indexedFields
-      });
-      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
-        indexedFields: indexedFields
-      }));
+    return array;
+}());
+
+var compactQueue = function compactQueue(queue) {
+    while (queue.length > 1) {
+        var item = queue.pop();
+        var obj = item.obj[item.prop];
+
+        if (isArray(obj)) {
+            var compacted = [];
+
+            for (var j = 0; j < obj.length; ++j) {
+                if (typeof obj[j] !== 'undefined') {
+                    compacted.push(obj[j]);
+                }
+            }
+
+            item.obj[item.prop] = compacted;
+        }
     }
-    /**
-     * Specify a [partial index](https://docs.couchdb.org/en/stable/api/database/find.html#find-partial-indexes).
-     * The filter must follow the same syntax than the selector.
-     *
-     * A partial index includes a filter, used to select documents before the indexing.
-     * You can find more information about partial indexes [here](https://docs.cozy.io/en/tutorials/data/advanced/#partial-indexes)
-     *
-     * @param {object} partialFilter - The filter definition.
-     */
+};
 
-  }, {
-    key: "partialIndex",
-    value: function partialIndex(partialFilter) {
-      this.checkSelectFields({
-        partialFilter: partialFilter
-      });
-      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
-        partialFilter: partialFilter
-      }));
+var arrayToObject = function arrayToObject(source, options) {
+    var obj = options && options.plainObjects ? Object.create(null) : {};
+    for (var i = 0; i < source.length; ++i) {
+        if (typeof source[i] !== 'undefined') {
+            obj[i] = source[i];
+        }
     }
-    /**
-     * Specify how to sort documents, following the [sort syntax](http://docs.couchdb.org/en/latest/api/database/find.html#find-sort)
-     *
-     * @param {Array} sort The list of field name and direction pairs.
-     * @returns {QueryDefinition}  The QueryDefinition object.
-     */
 
-  }, {
-    key: "sortBy",
-    value: function sortBy(sort) {
-      if (!Array.isArray(sort)) {
-        throw new Error("Invalid sort, should be an array ([{ label: \"desc\"}, { name: \"asc\"}]), you passed ".concat(JSON.stringify(sort), "."));
-      }
+    return obj;
+};
 
-      this.checkSortOrder({
-        sort: sort
-      });
-      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
-        sort: sort
-      }));
+var merge = function merge(target, source, options) {
+    /* eslint no-param-reassign: 0 */
+    if (!source) {
+        return target;
     }
-    /**
-     * Includes documents having a relationships with the ones queried.
-     * For example, query albums including the photos.
-     *
-     * @param {Array} includes The documents to include.
-     * @returns {QueryDefinition}  The QueryDefinition object.
-     */
 
-  }, {
-    key: "include",
-    value: function include(includes) {
-      if (!Array.isArray(includes)) {
-        throw new Error('include() takes an array of relationship names');
-      }
+    if (typeof source !== 'object') {
+        if (isArray(target)) {
+            target.push(source);
+        } else if (target && typeof target === 'object') {
+            if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {
+                target[source] = true;
+            }
+        } else {
+            return [target, source];
+        }
 
-      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
-        includes: includes
-      }));
+        return target;
     }
-    /**
-     * Maximum number of documents returned, useful for pagination. Default is 100.
-     *
-     * @param {number} limit The document's limit.
-     * @returns {QueryDefinition}  The QueryDefinition object.
-     */
 
-  }, {
-    key: "limitBy",
-    value: function limitBy(limit) {
-      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
-        limit: limit
-      }));
+    if (!target || typeof target !== 'object') {
+        return [target].concat(source);
     }
-  }, {
-    key: "UNSAFE_noLimit",
-    value: function UNSAFE_noLimit() {
-      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
-        limit: null
-      }));
+
+    var mergeTarget = target;
+    if (isArray(target) && !isArray(source)) {
+        mergeTarget = arrayToObject(target, options);
     }
-    /**
-     * Skip the first ‘n’ documents, where ‘n’ is the value specified.
-     *
-     * Beware, this [performs badly](http://docs.couchdb.org/en/stable/ddocs/views/pagination.html#paging-alternate-method) on view's index.
-     *  Prefer cursor-based pagination in such situation.
-     *
-     * @param {number} skip The number of documents to skip.
-     * @returns {QueryDefinition}  The QueryDefinition object.
-     */
 
-  }, {
-    key: "offset",
-    value: function offset(skip) {
-      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
-        bookmark: undefined,
-        cursor: undefined,
-        skip: skip
-      }));
+    if (isArray(target) && isArray(source)) {
+        source.forEach(function (item, i) {
+            if (has.call(target, i)) {
+                var targetItem = target[i];
+                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {
+                    target[i] = merge(targetItem, item, options);
+                } else {
+                    target.push(item);
+                }
+            } else {
+                target[i] = item;
+            }
+        });
+        return target;
     }
-    /**
-     * Use [cursor-based](https://docs.cozy.io/en/cozy-stack/jsonapi/#pagination) pagination.
-     * *Warning*: this is only useful for views.
-     * The cursor is a [startkey, startkey_docid] array, where startkey is the view's key,
-     * e.g. ["io.cozy.photos.albums", "album-id"] and startkey_docid is the id of
-     * the starting document of the query, e.g. "file-id".
-     * Use the last docid of each query as startkey_docid to paginate or leave blank for the first query.
-     *
-     * @param {import('../types').CouchDBViewCursor} cursor The cursor for pagination.
-     * @returns {QueryDefinition}  The QueryDefinition object.
-     */
 
-  }, {
-    key: "offsetCursor",
-    value: function offsetCursor(cursor) {
-      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
-        bookmark: undefined,
-        skip: undefined,
-        cursor: cursor
-      }));
+    return Object.keys(source).reduce(function (acc, key) {
+        var value = source[key];
+
+        if (has.call(acc, key)) {
+            acc[key] = merge(acc[key], value, options);
+        } else {
+            acc[key] = value;
+        }
+        return acc;
+    }, mergeTarget);
+};
+
+var assign = function assignSingleSource(target, source) {
+    return Object.keys(source).reduce(function (acc, key) {
+        acc[key] = source[key];
+        return acc;
+    }, target);
+};
+
+var decode = function (str, decoder, charset) {
+    var strWithoutPlus = str.replace(/\+/g, ' ');
+    if (charset === 'iso-8859-1') {
+        // unescape never throws, no try...catch needed:
+        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);
     }
-    /**
-     * Use [bookmark](https://docs.couchdb.org/en/2.2.0/api/database/find.html#pagination) pagination.
-     * Note this only applies for mango-queries (not views) and is way more efficient than skip pagination.
-     * The bookmark is a string returned by the _find response and can be seen as a pointer in
-     * the index for the next query.
-     *
-     * @param {string} bookmark The bookmark to continue a previous paginated query.
-     * @returns {QueryDefinition}  The QueryDefinition object.
-     */
+    // utf-8
+    try {
+        return decodeURIComponent(strWithoutPlus);
+    } catch (e) {
+        return strWithoutPlus;
+    }
+};
 
-  }, {
-    key: "offsetBookmark",
-    value: function offsetBookmark(bookmark) {
-      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
-        skip: undefined,
-        cursor: undefined,
-        bookmark: bookmark
-      }));
+var encode = function encode(str, defaultEncoder, charset, kind, format) {
+    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.
+    // It has been adapted here for stricter adherence to RFC 3986
+    if (str.length === 0) {
+        return str;
     }
-    /**
-     * Use the [file reference system](https://docs.cozy.io/en/cozy-stack/references-docs-in-vfs/)
-     *
-     * @param {object} document The reference document
-     * @returns {QueryDefinition}  The QueryDefinition object.
-     */
 
-  }, {
-    key: "referencedBy",
-    value: function referencedBy(document) {
-      return new QueryDefinition(_objectSpread(_objectSpread({}, this.toDefinition()), {}, {
-        referenced: document
-      }));
+    var string = str;
+    if (typeof str === 'symbol') {
+        string = Symbol.prototype.toString.call(str);
+    } else if (typeof str !== 'string') {
+        string = String(str);
     }
-  }, {
-    key: "toDefinition",
-    value: function toDefinition() {
-      return {
-        doctype: this.doctype,
-        id: this.id,
-        ids: this.ids,
-        selector: this.selector,
-        fields: this.fields,
-        indexedFields: this.indexedFields,
-        partialFilter: this.partialFilter,
-        sort: this.sort,
-        includes: this.includes,
-        referenced: this.referenced,
-        limit: this.limit,
-        skip: this.skip,
-        cursor: this.cursor,
-        bookmark: this.bookmark
-      };
+
+    if (charset === 'iso-8859-1') {
+        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {
+            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';
+        });
     }
-  }]);
-  return QueryDefinition;
-}();
-/**
- * Helper to create a QueryDefinition. Recommended way to create
- * query definitions.
- *
- * @param {import('../types').Doctype} doctype - Doctype of the query definition
- *
- * @example
- * ```
- * import { Q } from 'cozy-client'
- *
- * const qDef = Q('io.cozy.todos').where({ _id: '1234' })
- * ```
- */
 
+    var out = '';
+    for (var i = 0; i < string.length; ++i) {
+        var c = string.charCodeAt(i);
 
-exports.QueryDefinition = QueryDefinition;
+        if (
+            c === 0x2D // -
+            || c === 0x2E // .
+            || c === 0x5F // _
+            || c === 0x7E // ~
+            || (c >= 0x30 && c <= 0x39) // 0-9
+            || (c >= 0x41 && c <= 0x5A) // a-z
+            || (c >= 0x61 && c <= 0x7A) // A-Z
+            || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )
+        ) {
+            out += string.charAt(i);
+            continue;
+        }
 
-var Q = function Q(doctype) {
-  return new QueryDefinition({
-    doctype: doctype
-  });
-};
-/**
- * Check if the query is a getById() query
- *
- * @param {QueryDefinition} queryDefinition The query definition
- *
- * @returns {boolean}
- */
+        if (c < 0x80) {
+            out = out + hexTable[c];
+            continue;
+        }
 
+        if (c < 0x800) {
+            out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);
+            continue;
+        }
 
-exports.Q = Q;
+        if (c < 0xD800 || c >= 0xE000) {
+            out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);
+            continue;
+        }
 
-var isAGetByIdQuery = function isAGetByIdQuery(queryDefinition) {
-  if (!queryDefinition) return false;
-  var attributes = Object.values(queryDefinition);
-  if (attributes.length === 0) return false; // 2 attrs because we check if id and doctype are not undefined
+        i += 1;
+        c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));
+        /* eslint operator-linebreak: [2, "before"] */
+        out += hexTable[0xF0 | (c >> 18)]
+            + hexTable[0x80 | ((c >> 12) & 0x3F)]
+            + hexTable[0x80 | ((c >> 6) & 0x3F)]
+            + hexTable[0x80 | (c & 0x3F)];
+    }
 
-  return attributes.filter(function (attr) {
-    return attr !== undefined;
-  }).length === 2 && queryDefinition.id !== undefined;
-}; // Mutations
+    return out;
+};
 
+var compact = function compact(value) {
+    var queue = [{ obj: { o: value }, prop: 'o' }];
+    var refs = [];
 
-exports.isAGetByIdQuery = isAGetByIdQuery;
-var CREATE_DOCUMENT = 'CREATE_DOCUMENT';
-var UPDATE_DOCUMENT = 'UPDATE_DOCUMENT';
-var UPDATE_DOCUMENTS = 'UPDATE_DOCUMENTS';
-var DELETE_DOCUMENT = 'DELETE_DOCUMENT';
-var ADD_REFERENCES_TO = 'ADD_REFERENCES_TO';
-var REMOVE_REFERENCES_TO = 'REMOVE_REFERENCES_TO';
-var ADD_REFERENCED_BY = 'ADD_REFERENCED_BY';
-var REMOVE_REFERENCED_BY = 'REMOVE_REFERENCED_BY';
-var UPLOAD_FILE = 'UPLOAD_FILE';
+    for (var i = 0; i < queue.length; ++i) {
+        var item = queue[i];
+        var obj = item.obj[item.prop];
 
-var createDocument = function createDocument(document) {
-  return {
-    mutationType: MutationTypes.CREATE_DOCUMENT,
-    document: document
-  };
-};
+        var keys = Object.keys(obj);
+        for (var j = 0; j < keys.length; ++j) {
+            var key = keys[j];
+            var val = obj[key];
+            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {
+                queue.push({ obj: obj, prop: key });
+                refs.push(val);
+            }
+        }
+    }
 
-exports.createDocument = createDocument;
+    compactQueue(queue);
 
-var updateDocument = function updateDocument(document) {
-  return {
-    mutationType: MutationTypes.UPDATE_DOCUMENT,
-    document: document
-  };
+    return value;
 };
 
-exports.updateDocument = updateDocument;
-
-var updateDocuments = function updateDocuments(documents) {
-  return {
-    mutationType: MutationTypes.UPDATE_DOCUMENTS,
-    documents: documents
-  };
+var isRegExp = function isRegExp(obj) {
+    return Object.prototype.toString.call(obj) === '[object RegExp]';
 };
 
-exports.updateDocuments = updateDocuments;
+var isBuffer = function isBuffer(obj) {
+    if (!obj || typeof obj !== 'object') {
+        return false;
+    }
 
-var deleteDocument = function deleteDocument(document) {
-  return {
-    mutationType: MutationTypes.DELETE_DOCUMENT,
-    document: document
-  };
+    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
 };
 
-exports.deleteDocument = deleteDocument;
-
-var addReferencesTo = function addReferencesTo(document, referencedDocuments) {
-  return {
-    mutationType: MutationTypes.ADD_REFERENCES_TO,
-    referencedDocuments: referencedDocuments,
-    document: document
-  };
+var combine = function combine(a, b) {
+    return [].concat(a, b);
 };
 
-exports.addReferencesTo = addReferencesTo;
+var maybeMap = function maybeMap(val, fn) {
+    if (isArray(val)) {
+        var mapped = [];
+        for (var i = 0; i < val.length; i += 1) {
+            mapped.push(fn(val[i]));
+        }
+        return mapped;
+    }
+    return fn(val);
+};
 
-var removeReferencesTo = function removeReferencesTo(document, referencedDocuments) {
-  return {
-    mutationType: MutationTypes.REMOVE_REFERENCES_TO,
-    referencedDocuments: referencedDocuments,
-    document: document
-  };
+module.exports = {
+    arrayToObject: arrayToObject,
+    assign: assign,
+    combine: combine,
+    compact: compact,
+    decode: decode,
+    encode: encode,
+    isBuffer: isBuffer,
+    isRegExp: isRegExp,
+    maybeMap: maybeMap,
+    merge: merge
 };
 
-exports.removeReferencesTo = removeReferencesTo;
 
-var addReferencedBy = function addReferencedBy(document, referencedDocuments) {
-  return {
-    mutationType: MutationTypes.ADD_REFERENCED_BY,
-    referencedDocuments: referencedDocuments,
-    document: document
-  };
-};
+/***/ }),
+/* 574 */
+/***/ (function(module, exports, __webpack_require__) {
 
-exports.addReferencedBy = addReferencedBy;
+"use strict";
 
-var removeReferencedBy = function removeReferencedBy(document, referencedDocuments) {
-  return {
-    mutationType: MutationTypes.REMOVE_REFERENCED_BY,
-    referencedDocuments: referencedDocuments,
-    document: document
-  };
-};
 
-exports.removeReferencedBy = removeReferencedBy;
+var replace = String.prototype.replace;
+var percentTwenties = /%20/g;
 
-var uploadFile = function uploadFile(file, dirPath) {
-  return {
-    mutationType: MutationTypes.UPLOAD_FILE,
-    file: file,
-    dirPath: dirPath
-  };
+var Format = {
+    RFC1738: 'RFC1738',
+    RFC3986: 'RFC3986'
 };
 
-exports.uploadFile = uploadFile;
-
-var getDoctypeFromOperation = function getDoctypeFromOperation(operation) {
-  if (operation.mutationType) {
-    var type = operation.mutationType;
+module.exports = {
+    'default': Format.RFC3986,
+    formatters: {
+        RFC1738: function (value) {
+            return replace.call(value, percentTwenties, '+');
+        },
+        RFC3986: function (value) {
+            return String(value);
+        }
+    },
+    RFC1738: Format.RFC1738,
+    RFC3986: Format.RFC3986
+};
 
-    switch (type) {
-      case CREATE_DOCUMENT:
-        return operation.document._type;
 
-      case UPDATE_DOCUMENT:
-        return operation.document._type;
+/***/ }),
+/* 575 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      case UPDATE_DOCUMENTS:
-        return operation.documents[0]._type;
+"use strict";
 
-      case DELETE_DOCUMENT:
-        return operation.document._type;
 
-      case ADD_REFERENCES_TO:
-        throw new Error('Not implemented');
+var utils = __webpack_require__(573);
 
-      case UPLOAD_FILE:
-        throw new Error('Not implemented');
+var has = Object.prototype.hasOwnProperty;
+var isArray = Array.isArray;
 
-      default:
-        throw new Error("Unknown mutationType ".concat(type));
-    }
-  } else {
-    return operation.doctype;
-  }
+var defaults = {
+    allowDots: false,
+    allowPrototypes: false,
+    allowSparse: false,
+    arrayLimit: 20,
+    charset: 'utf-8',
+    charsetSentinel: false,
+    comma: false,
+    decoder: utils.decode,
+    delimiter: '&',
+    depth: 5,
+    ignoreQueryPrefix: false,
+    interpretNumericEntities: false,
+    parameterLimit: 1000,
+    parseArrays: true,
+    plainObjects: false,
+    strictNullHandling: false
 };
 
-exports.getDoctypeFromOperation = getDoctypeFromOperation;
-var Mutations = {
-  createDocument: createDocument,
-  updateDocument: updateDocument,
-  updateDocuments: updateDocuments,
-  deleteDocument: deleteDocument,
-  addReferencesTo: addReferencesTo,
-  removeReferencesTo: removeReferencesTo,
-  addReferencedBy: addReferencedBy,
-  removeReferencedBy: removeReferencedBy,
-  uploadFile: uploadFile
+var interpretNumericEntities = function (str) {
+    return str.replace(/&#(\d+);/g, function ($0, numberStr) {
+        return String.fromCharCode(parseInt(numberStr, 10));
+    });
 };
-exports.Mutations = Mutations;
-var MutationTypes = {
-  CREATE_DOCUMENT: CREATE_DOCUMENT,
-  UPDATE_DOCUMENT: UPDATE_DOCUMENT,
-  UPDATE_DOCUMENTS: UPDATE_DOCUMENTS,
-  DELETE_DOCUMENT: DELETE_DOCUMENT,
-  ADD_REFERENCES_TO: ADD_REFERENCES_TO,
-  REMOVE_REFERENCES_TO: REMOVE_REFERENCES_TO,
-  ADD_REFERENCED_BY: ADD_REFERENCED_BY,
-  REMOVE_REFERENCED_BY: REMOVE_REFERENCED_BY,
-  UPLOAD_FILE: UPLOAD_FILE
+
+var parseArrayValue = function (val, options) {
+    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {
+        return val.split(',');
+    }
+
+    return val;
 };
-exports.MutationTypes = MutationTypes;
 
-/***/ }),
-/* 496 */
-/***/ (function(module, exports, __webpack_require__) {
+// This is what browsers will submit when the ✓ character occurs in an
+// application/x-www-form-urlencoded body and the encoding of the page containing
+// the form is iso-8859-1, or when the submitted form has an accept-charset
+// attribute of iso-8859-1. Presumably also with other charsets that do not contain
+// the ✓ character, such as us-ascii.
+var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')
 
-var baseFindKey = __webpack_require__(497),
-    baseForOwn = __webpack_require__(315),
-    baseIteratee = __webpack_require__(338);
+// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.
+var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')
 
-/**
- * This method is like `_.find` except that it returns the key of the first
- * element `predicate` returns truthy for instead of the element itself.
- *
- * @static
- * @memberOf _
- * @since 1.1.0
- * @category Object
- * @param {Object} object The object to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {string|undefined} Returns the key of the matched element,
- *  else `undefined`.
- * @example
- *
- * var users = {
- *   'barney':  { 'age': 36, 'active': true },
- *   'fred':    { 'age': 40, 'active': false },
- *   'pebbles': { 'age': 1,  'active': true }
- * };
- *
- * _.findKey(users, function(o) { return o.age < 40; });
- * // => 'barney' (iteration order is not guaranteed)
- *
- * // The `_.matches` iteratee shorthand.
- * _.findKey(users, { 'age': 1, 'active': true });
- * // => 'pebbles'
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.findKey(users, ['active', false]);
- * // => 'fred'
- *
- * // The `_.property` iteratee shorthand.
- * _.findKey(users, 'active');
- * // => 'barney'
- */
-function findKey(object, predicate) {
-  return baseFindKey(object, baseIteratee(predicate, 3), baseForOwn);
-}
+var parseValues = function parseQueryStringValues(str, options) {
+    var obj = {};
+    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str;
+    var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;
+    var parts = cleanStr.split(options.delimiter, limit);
+    var skipIndex = -1; // Keep track of where the utf8 sentinel was found
+    var i;
 
-module.exports = findKey;
+    var charset = options.charset;
+    if (options.charsetSentinel) {
+        for (i = 0; i < parts.length; ++i) {
+            if (parts[i].indexOf('utf8=') === 0) {
+                if (parts[i] === charsetSentinel) {
+                    charset = 'utf-8';
+                } else if (parts[i] === isoSentinel) {
+                    charset = 'iso-8859-1';
+                }
+                skipIndex = i;
+                i = parts.length; // The eslint settings do not allow break;
+            }
+        }
+    }
 
+    for (i = 0; i < parts.length; ++i) {
+        if (i === skipIndex) {
+            continue;
+        }
+        var part = parts[i];
 
-/***/ }),
-/* 497 */
-/***/ (function(module, exports) {
+        var bracketEqualsPos = part.indexOf(']=');
+        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;
 
-/**
- * The base implementation of methods like `_.findKey` and `_.findLastKey`,
- * without support for iteratee shorthands, which iterates over `collection`
- * using `eachFunc`.
- *
- * @private
- * @param {Array|Object} collection The collection to inspect.
- * @param {Function} predicate The function invoked per iteration.
- * @param {Function} eachFunc The function to iterate over `collection`.
- * @returns {*} Returns the found element or its key, else `undefined`.
- */
-function baseFindKey(collection, predicate, eachFunc) {
-  var result;
-  eachFunc(collection, function(value, key, collection) {
-    if (predicate(value, key, collection)) {
-      result = key;
-      return false;
+        var key, val;
+        if (pos === -1) {
+            key = options.decoder(part, defaults.decoder, charset, 'key');
+            val = options.strictNullHandling ? null : '';
+        } else {
+            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');
+            val = utils.maybeMap(
+                parseArrayValue(part.slice(pos + 1), options),
+                function (encodedVal) {
+                    return options.decoder(encodedVal, defaults.decoder, charset, 'value');
+                }
+            );
+        }
+
+        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {
+            val = interpretNumericEntities(val);
+        }
+
+        if (part.indexOf('[]=') > -1) {
+            val = isArray(val) ? [val] : val;
+        }
+
+        if (has.call(obj, key)) {
+            obj[key] = utils.combine(obj[key], val);
+        } else {
+            obj[key] = val;
+        }
     }
-  });
-  return result;
-}
 
-module.exports = baseFindKey;
+    return obj;
+};
 
+var parseObject = function (chain, val, options, valuesParsed) {
+    var leaf = valuesParsed ? val : parseArrayValue(val, options);
 
-/***/ }),
-/* 498 */
-/***/ (function(module, exports, __webpack_require__) {
+    for (var i = chain.length - 1; i >= 0; --i) {
+        var obj;
+        var root = chain[i];
 
-"use strict";
+        if (root === '[]' && options.parseArrays) {
+            obj = [].concat(leaf);
+        } else {
+            obj = options.plainObjects ? Object.create(null) : {};
+            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;
+            var index = parseInt(cleanRoot, 10);
+            if (!options.parseArrays && cleanRoot === '') {
+                obj = { 0: leaf };
+            } else if (
+                !isNaN(index)
+                && root !== cleanRoot
+                && String(index) === cleanRoot
+                && index >= 0
+                && (options.parseArrays && index <= options.arrayLimit)
+            ) {
+                obj = [];
+                obj[index] = leaf;
+            } else if (cleanRoot !== '__proto__') {
+                obj[cleanRoot] = leaf;
+            }
+        }
 
+        leaf = obj;
+    }
 
-var _interopRequireDefault = __webpack_require__(1);
+    return leaf;
+};
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
+var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {
+    if (!givenKey) {
+        return;
+    }
 
-var _minilog = _interopRequireDefault(__webpack_require__(499));
+    // Transform dot notation to bracket notation
+    var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey;
 
-var logger = (0, _minilog.default)('cozy-client');
+    // The regex chunks
 
-_minilog.default.suggest.deny('cozy-client', 'info');
+    var brackets = /(\[[^[\]]*])/;
+    var child = /(\[[^[\]]*])/g;
 
-var _default = logger;
-exports.default = _default;
+    // Get the parent
 
-/***/ }),
-/* 499 */
-/***/ (function(module, exports, __webpack_require__) {
+    var segment = options.depth > 0 && brackets.exec(key);
+    var parent = segment ? key.slice(0, segment.index) : key;
 
-module.exports = __webpack_require__(500);
+    // Stash the parent if it exists
 
-var consoleLogger = __webpack_require__(503);
+    var keys = [];
+    if (parent) {
+        // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties
+        if (!options.plainObjects && has.call(Object.prototype, parent)) {
+            if (!options.allowPrototypes) {
+                return;
+            }
+        }
 
-// if we are running inside Electron then use the web version of console.js
-var isElectron = (typeof window !== 'undefined' && window.process && window.process.type === 'renderer');
-if (isElectron) {
-  consoleLogger = __webpack_require__(512).minilog;
-}
+        keys.push(parent);
+    }
 
-// intercept the pipe method and transparently wrap the stringifier, if the
-// destination is a Node core stream
+    // Loop through children appending to the array until we hit depth
 
-module.exports.Stringifier = __webpack_require__(516);
+    var i = 0;
+    while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {
+        i += 1;
+        if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {
+            if (!options.allowPrototypes) {
+                return;
+            }
+        }
+        keys.push(segment[1]);
+    }
 
-var oldPipe = module.exports.pipe;
-module.exports.pipe = function(dest) {
-  if(dest instanceof __webpack_require__(517)) {
-    return oldPipe.call(module.exports, new (module.exports.Stringifier)).pipe(dest);
-  } else {
-    return oldPipe.call(module.exports, dest);
-  }
-};
+    // If there's a remainder, just add whatever is left
 
-module.exports.defaultBackend = consoleLogger;
-module.exports.defaultFormatter = consoleLogger.formatMinilog;
+    if (segment) {
+        keys.push('[' + key.slice(segment.index) + ']');
+    }
 
-module.exports.backends = {
-  redis: __webpack_require__(518),
-  nodeConsole: consoleLogger,
-  console: consoleLogger
+    return parseObject(keys, val, options, valuesParsed);
 };
 
+var normalizeParseOptions = function normalizeParseOptions(opts) {
+    if (!opts) {
+        return defaults;
+    }
 
-/***/ }),
-/* 500 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var Transform = __webpack_require__(501),
-    Filter = __webpack_require__(502);
+    if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {
+        throw new TypeError('Decoder has to be a function.');
+    }
 
-var log = new Transform(),
-    slice = Array.prototype.slice;
+    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {
+        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');
+    }
+    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;
 
-exports = module.exports = function create(name) {
-  var o   = function() { log.write(name, undefined, slice.call(arguments)); return o; };
-  o.debug = function() { log.write(name, 'debug', slice.call(arguments)); return o; };
-  o.info  = function() { log.write(name, 'info',  slice.call(arguments)); return o; };
-  o.warn  = function() { log.write(name, 'warn',  slice.call(arguments)); return o; };
-  o.error = function() { log.write(name, 'error', slice.call(arguments)); return o; };
-  o.group = function() { log.write(name, 'group', slice.call(arguments)); return o; };
-  o.groupEnd = function() { log.write(name, 'groupEnd', slice.call(arguments)); return o; };
-  o.log   = o.debug; // for interface compliance with Node and browser consoles
-  o.suggest = exports.suggest;
-  o.format = log.format;
-  return o;
+    return {
+        allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,
+        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,
+        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,
+        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,
+        charset: charset,
+        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,
+        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,
+        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,
+        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,
+        // eslint-disable-next-line no-implicit-coercion, no-extra-parens
+        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,
+        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,
+        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,
+        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,
+        parseArrays: opts.parseArrays !== false,
+        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,
+        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling
+    };
 };
 
-// filled in separately
-exports.defaultBackend = exports.defaultFormatter = null;
+module.exports = function (str, opts) {
+    var options = normalizeParseOptions(opts);
 
-exports.pipe = function(dest) {
-  return log.pipe(dest);
-};
+    if (str === '' || str === null || typeof str === 'undefined') {
+        return options.plainObjects ? Object.create(null) : {};
+    }
 
-exports.end = exports.unpipe = exports.disable = function(from) {
-  return log.unpipe(from);
-};
+    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;
+    var obj = options.plainObjects ? Object.create(null) : {};
 
-exports.Transform = Transform;
-exports.Filter = Filter;
-// this is the default filter that's applied when .enable() is called normally
-// you can bypass it completely and set up your own pipes
-exports.suggest = new Filter();
+    // Iterate over the keys and setup the new object
 
-exports.enable = function() {
-  if(exports.defaultFormatter) {
-    return log.pipe(exports.suggest) // filter
-              .pipe(exports.defaultFormatter) // formatter
-              .pipe(exports.defaultBackend); // backend
-  }
-  return log.pipe(exports.suggest) // filter
-            .pipe(exports.defaultBackend); // formatter
-};
+    var keys = Object.keys(tempObj);
+    for (var i = 0; i < keys.length; ++i) {
+        var key = keys[i];
+        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');
+        obj = utils.merge(obj, newObj, options);
+    }
+
+    if (options.allowSparse === true) {
+        return obj;
+    }
 
+    return utils.compact(obj);
+};
 
 
 /***/ }),
-/* 501 */
+/* 576 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var microee = __webpack_require__(447);
+"use strict";
 
-// Implements a subset of Node's stream.Transform - in a cross-platform manner.
-function Transform() {}
 
-microee.mixin(Transform);
+var _interopRequireDefault = __webpack_require__(1);
 
-// The write() signature is different from Node's
-// --> makes it much easier to work with objects in logs.
-// One of the lessons from v1 was that it's better to target
-// a good browser rather than the lowest common denominator
-// internally.
-// If you want to use external streams, pipe() to ./stringify.js first.
-Transform.prototype.write = function(name, level, args) {
-  this.emit('item', name, level, args);
-};
-
-Transform.prototype.end = function() {
-  this.emit('end');
-  this.removeAllListeners();
-};
-
-Transform.prototype.pipe = function(dest) {
-  var s = this;
-  // prevent double piping
-  s.emit('unpipe', dest);
-  // tell the dest that it's being piped to
-  dest.emit('pipe', s);
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.isMatchingIndex = exports.getIndexFields = exports.transformSort = exports.getIndexNameFromFields = exports.normalizeDesignDoc = void 0;
 
-  function onItem() {
-    dest.write.apply(dest, Array.prototype.slice.call(arguments));
-  }
-  function onEnd() { !dest._isStdio && dest.end(); }
+var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
 
-  s.on('item', onItem);
-  s.on('end', onEnd);
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-  s.when('unpipe', function(from) {
-    var match = (from === dest) || typeof from == 'undefined';
-    if(match) {
-      s.removeListener('item', onItem);
-      s.removeListener('end', onEnd);
-      dest.emit('unpipe');
-    }
-    return match;
-  });
+var _head = _interopRequireDefault(__webpack_require__(531));
 
-  return dest;
-};
+var _get = _interopRequireDefault(__webpack_require__(399));
 
-Transform.prototype.unpipe = function(from) {
-  this.emit('unpipe', from);
-  return this;
-};
+var _isEqual = _interopRequireDefault(__webpack_require__(577));
 
-Transform.prototype.format = function(dest) {
-  throw new Error([
-    'Warning: .format() is deprecated in Minilog v2! Use .pipe() instead. For example:',
-    'var Minilog = require(\'minilog\');',
-    'Minilog',
-    '  .pipe(Minilog.backends.console.formatClean)',
-    '  .pipe(Minilog.backends.console);'].join('\n'));
-};
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-Transform.mixin = function(dest) {
-  var o = Transform.prototype, k;
-  for (k in o) {
-    o.hasOwnProperty(k) && (dest.prototype[k] = o[k]);
-  }
-};
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-module.exports = Transform;
+/**
+ * @typedef {Object} MangoPartialFilter
+ */
 
+/**
+ * @typedef {object} MangoSelector
+ */
 
-/***/ }),
-/* 502 */
-/***/ (function(module, exports, __webpack_require__) {
+/**
+ * @typedef {Array<object>} MangoSort
+ */
 
-// default filter
-var Transform = __webpack_require__(501);
+/**
+ * @typedef {object} MangoQueryOptions
+ * @property {MangoSelector} [selector] Selector
+ * @property {MangoSort} [sort] The sorting parameters
+ * @property {Array<string>} [fields] The fields to return
+ * @property {Array<string>} [partialFilterFields] The partial filter fields
+ * @property {number|null} [limit] For pagination, the number of results to return
+ * @property {number|null} [skip] For skip-based pagination, the number of referenced files to skip
+ * @property {string|null} [indexId] The _id of the CouchDB index to use for this request
+ * @property {string|null} [bookmark] For bookmark-based pagination, the document _id to start from
+ * @property {Array<string>} [indexedFields]
+ * @property {string} [use_index] Name of the index to use
+ * @property {boolean} [execution_stats] If true, we request the stats from Couch
+ * @property {MangoPartialFilter|null} [partialFilter] An optional partial filter
+ */
 
-var levelMap = { debug: 1, info: 2, warn: 3, error: 4 };
+/**
+ * Attributes representing a design doc
+ *
+ * @typedef {object} DesignDoc
+ *
+ * @property {string} _id - Id of the design doc. Can be named, e.g. '_design/by_indexed_attribute' or not, e.g. '_design/12345'
+ * @property {string} language - The index language. Can be 'query' for mango index or 'javascript' for views.
+ * @property {object} views - Views definition, i.e. the index.
+ * @property {string} _rev - Rev version
+ */
+var normalizeDesignDoc = function normalizeDesignDoc(designDoc) {
+  var id = designDoc._id || designDoc.id;
+  return _objectSpread({
+    id: id,
+    _id: id
+  }, designDoc.doc);
+};
+/**
+ * Name an index, based on its indexed fields and partial filter.
+ *
+ * It follows this naming convention:
+ * `by_{indexed_field1}_and_{indexed_field2}_filter_{partial_filter_field1}_and_{partial_filter_field2}
+ *
+ * @param {Array<string>} fields - The indexed fields
+ * @param {object} params - The additional params
+ * @param {Array<string>=} params.partialFilterFields - The partial filter fields
+ * @returns {string} The index name, built from the fields
+ */
 
-function Filter() {
-  this.enabled = true;
-  this.defaultResult = true;
-  this.clear();
-}
 
-Transform.mixin(Filter);
+exports.normalizeDesignDoc = normalizeDesignDoc;
 
-// allow all matching, with level >= given level
-Filter.prototype.allow = function(name, level) {
-  this._white.push({ n: name, l: levelMap[level] });
-  return this;
-};
+var getIndexNameFromFields = function getIndexNameFromFields(fields) {
+  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+      partialFilterFields = _ref.partialFilterFields;
 
-// deny all matching, with level <= given level
-Filter.prototype.deny = function(name, level) {
-  this._black.push({ n: name, l: levelMap[level] });
-  return this;
+  var indexName = "by_".concat(fields.join('_and_'));
+  return partialFilterFields ? "".concat(indexName, "_filter_").concat(partialFilterFields.join('_and_')) : indexName;
 };
+/**
+ * Transform sort into Array
+ *
+ * @param {MangoSort} sort - The sorting parameters
+ * @returns {MangoSort}
+ */
 
-Filter.prototype.clear = function() {
-  this._white = [];
-  this._black = [];
-  return this;
-};
 
-function test(rule, name) {
-  // use .test for RegExps
-  return (rule.n.test ? rule.n.test(name) : rule.n == name);
-};
+exports.getIndexNameFromFields = getIndexNameFromFields;
 
-Filter.prototype.test = function(name, level) {
-  var i, len = Math.max(this._white.length, this._black.length);
-  for(i = 0; i < len; i++) {
-    if(this._white[i] && test(this._white[i], name) && levelMap[level] >= this._white[i].l) {
-      return true;
-    }
-    if(this._black[i] && test(this._black[i], name) && levelMap[level] <= this._black[i].l) {
-      return false;
-    }
+var transformSort = function transformSort(sort) {
+  if (!sort || Array.isArray(sort)) {
+    return sort;
   }
-  return this.defaultResult;
-};
 
-Filter.prototype.write = function(name, level, args) {
-  if(!this.enabled || this.test(name, level)) {
-    return this.emit('item', name, level, args);
-  }
+  throw Error('Passing an object to the "sort" is not supported');
 };
+/**
+ * Compute fields that should be indexed for a mango
+ * query to work
+ *
+ *
+ * @returns {Array} - Fields to index
+ */
 
-module.exports = Filter;
 
+exports.transformSort = transformSort;
 
-/***/ }),
-/* 503 */
-/***/ (function(module, exports, __webpack_require__) {
+var getIndexFields = function getIndexFields(
+/** @type {MangoQueryOptions} */
+_ref2) {
+  var selector = _ref2.selector,
+      partialFilter = _ref2.partialFilter,
+      _ref2$sort = _ref2.sort,
+      sort = _ref2$sort === void 0 ? [] : _ref2$sort;
+  return Array.from(new Set([].concat((0, _toConsumableArray2.default)(sort.map(function (sortOption) {
+    return (0, _head.default)(Object.keys(sortOption));
+  })), (0, _toConsumableArray2.default)(selector ? Object.keys(selector) : []), (0, _toConsumableArray2.default)(partialFilter ? Object.keys(partialFilter) : []))));
+};
+/**
+ * Check if an index is matching the given fields
+ *
+ * @param {DesignDoc} index - The index to check
+ * @param {Array} fields - The fields that the index must have
+ * @param {object} partialFilter - An optional partial filter
+ * @returns {boolean} True if the index is matches the given fields
+ */
 
-var Transform = __webpack_require__(501);
 
-function ConsoleBackend() { }
+exports.getIndexFields = getIndexFields;
 
-Transform.mixin(ConsoleBackend);
+var isMatchingIndex = function isMatchingIndex(index, fields, partialFilter) {
+  var viewId = Object.keys((0, _get.default)(index, "views"))[0];
+  var fieldsInIndex = Object.keys((0, _get.default)(index, "views.".concat(viewId, ".map.fields")));
 
-ConsoleBackend.prototype.write = function() {
-  console.log.apply(console, arguments);
-};
+  if ((0, _isEqual.default)(fieldsInIndex, fields)) {
+    var partialFilterInIndex = (0, _get.default)(index, "views.".concat(viewId, ".map.partial_filter_selector"));
 
-var e = new ConsoleBackend();
+    if (!partialFilter && !partialFilterInIndex) {
+      return true;
+    }
 
-var levelMap = __webpack_require__(504).levelMap;
+    if ((0, _isEqual.default)(partialFilter, partialFilterInIndex)) {
+      return true;
+    }
+  }
 
-e.filterEnv = function() {
-  console.error('Minilog.backends.console.filterEnv is deprecated in Minilog v2.');
-  // return the instance of Minilog
-  return __webpack_require__(500);
+  return false;
 };
 
-e.formatters = [
-    'formatClean', 'formatColor', 'formatNpm',
-    'formatLearnboost', 'formatMinilog', 'formatWithStack', 'formatTime'
-];
+exports.isMatchingIndex = isMatchingIndex;
 
-e.formatClean = new (__webpack_require__(505));
-e.formatColor = new (__webpack_require__(506));
-e.formatNpm = new (__webpack_require__(507));
-e.formatLearnboost = new (__webpack_require__(508));
-e.formatMinilog = new (__webpack_require__(509));
-e.formatWithStack = new (__webpack_require__(510));
-e.formatTime = new (__webpack_require__(511));
+/***/ }),
+/* 577 */
+/***/ (function(module, exports, __webpack_require__) {
 
-module.exports = e;
+var baseIsEqual = __webpack_require__(371);
+
+/**
+ * Performs a deep comparison between two values to determine if they are
+ * equivalent.
+ *
+ * **Note:** This method supports comparing arrays, array buffers, booleans,
+ * date objects, error objects, maps, numbers, `Object` objects, regexes,
+ * sets, strings, symbols, and typed arrays. `Object` objects are compared
+ * by their own, not inherited, enumerable properties. Functions and DOM
+ * nodes are compared by strict equality, i.e. `===`.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to compare.
+ * @param {*} other The other value to compare.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+ * @example
+ *
+ * var object = { 'a': 1 };
+ * var other = { 'a': 1 };
+ *
+ * _.isEqual(object, other);
+ * // => true
+ *
+ * object === other;
+ * // => false
+ */
+function isEqual(value, other) {
+  return baseIsEqual(value, other);
+}
+
+module.exports = isEqual;
 
 
 /***/ }),
-/* 504 */
-/***/ (function(module, exports) {
+/* 578 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var styles = {
-  //styles
-  bold: ["\x1B[1m", "\x1B[22m"],
-  italic: ["\x1B[3m", "\x1B[23m"],
-  underline: ["\x1B[4m", "\x1B[24m"],
-  inverse: ["\x1B[7m", "\x1B[27m"],
-  //grayscale
-  white: ["\x1B[37m", "\x1B[39m"],
-  grey: ["\x1B[90m", "\x1B[39m"],
-  black: ["\x1B[30m", "\x1B[39m"],
-  //colors
-  blue: ["\x1B[34m", "\x1B[39m"],
-  cyan: ["\x1B[36m", "\x1B[39m"],
-  green: ["\x1B[32m", "\x1B[39m"],
-  magenta: ["\x1B[35m", "\x1B[39m"],
-  red: ["\x1B[31m", "\x1B[39m"],
-  yellow: ["\x1B[33m", "\x1B[39m"]
-};
+"use strict";
 
-exports.levelMap = { debug: 1, info: 2, warn: 3, error: 4 };
 
-exports.style = function(str, style) {
-  return styles[style][0] + str + styles[style][1];
-};
+var _interopRequireDefault = __webpack_require__(1);
 
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.buildURL = exports.encode = void 0;
 
-/***/ }),
-/* 505 */
-/***/ (function(module, exports, __webpack_require__) {
+var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
 
-var Transform = __webpack_require__(501);
+var _pickBy = _interopRequireDefault(__webpack_require__(579));
 
-function FormatClean() {}
+/**
+ * Encode a value of any type into a URI search param compatible string with a specific treatment for arrays which will keep their brackets (they do not with standard `toString()` method).
+ *
+ * Examples:
+ *
+ *   encodeValues([['io.cozy.files', 'abcd1234'], '12345'])
+ *   // → '[[%22io.cozy.files%22,%22abcd1234%22],%2212345%22]'
+ *
+ *   encodeValues([['io.cozy.files', 'abcd1234'], '12345'].toString(), true)
+ *   // → '%22io.cozy.files%2Cabcd1234%2C12345%22'
+ *
+ *   encodeValues([['io.cozy.files', 'abcd1234'], '12345'].toString(), false)
+ *   // → 'io.cozy.files%2Cabcd1234%2C12345'
+ *
+ *   encodeValues('[1234]')
+ *   // → %5B1234%5D
+ *
+ * @function
+ * @private
+ */
+var encodeValues = function encodeValues(values) {
+  var fromArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
 
-Transform.mixin(FormatClean);
+  if (Array.isArray(values)) {
+    return '[' + values.map(function (v) {
+      return encodeValues(v, true);
+    }).join(',') + ']';
+  }
 
-FormatClean.prototype.write = function(name, level, args) {
-  function pad(s) { return (s.toString().length == 1? '0'+s : s); }
-  this.emit('item', (name ? name + ' ' : '') + (level ? level + ' ' : '') + args.join(' '));
+  return fromArray ? encodeURIComponent("\"".concat(values, "\"")) : encodeURIComponent(values);
 };
+/**
+ * Encode an object as querystring, values are encoded as
+ * URI components, keys are not.
+ *
+ * @function
+ * @private
+ */
 
-module.exports = FormatClean;
 
+var encode = function encode(data) {
+  return Object.entries(data).map(function (_ref) {
+    var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
+        k = _ref2[0],
+        v = _ref2[1];
 
-/***/ }),
-/* 506 */
-/***/ (function(module, exports, __webpack_require__) {
+    var encodedValue = encodeValues(v);
+    return "".concat(k, "=").concat(encodedValue);
+  }).join('&');
+};
+/**
+ * Returns a URL from base url and a query parameter object.
+ * Any undefined parameter is removed.
+ *
+ * @function
+ * @private
+ */
 
-var Transform = __webpack_require__(501),
-    style = __webpack_require__(504).style;
 
-function FormatColor() {}
+exports.encode = encode;
 
-Transform.mixin(FormatColor);
+var buildURL = function buildURL(url, params) {
+  var qs = encode((0, _pickBy.default)(params));
 
-FormatColor.prototype.write = function(name, level, args) {
-  var colors = { debug: 'magenta', info: 'cyan', warn: 'yellow', error: 'red' };
-  function pad(s) { return (s.toString().length == 4? ' '+s : s); }
-  this.emit('item', (name ? name + ' ' : '')
-          + (level ? style('- ' + pad(level.toUpperCase()) + ' -', colors[level]) + ' ' : '')
-          + args.join(' '));
+  if (qs) {
+    return "".concat(url, "?").concat(qs);
+  } else {
+    return url;
+  }
 };
 
-module.exports = FormatColor;
-
+exports.buildURL = buildURL;
 
 /***/ }),
-/* 507 */
+/* 579 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(501);
-
-function FormatNpm() {}
-
-Transform.mixin(FormatNpm);
+var arrayMap = __webpack_require__(409),
+    baseIteratee = __webpack_require__(338),
+    basePickBy = __webpack_require__(580),
+    getAllKeysIn = __webpack_require__(465);
 
-FormatNpm.prototype.write = function(name, level, args) {
-  var out = {
-    debug: "\x1B[34;40m" + "debug" + "\x1B[39m ",
-    info: "\x1B[32m" + "info" + "\x1B[39m  ",
-    warn: "\x1B[30;41m" + "WARN" + "\x1B[0m  ",
-    error: "\x1B[31;40m" + "ERR!" + "\x1B[0m  "
-  };
-  this.emit(
-    "item",
-    (name ? "\x1B[37;40m" + name + "\x1B[0m " : "") +
-      (level && out[level] ? out[level] : "") +
-      args.join(" ")
-  );
-};
+/**
+ * Creates an object composed of the `object` properties `predicate` returns
+ * truthy for. The predicate is invoked with two arguments: (value, key).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Object
+ * @param {Object} object The source object.
+ * @param {Function} [predicate=_.identity] The function invoked per property.
+ * @returns {Object} Returns the new object.
+ * @example
+ *
+ * var object = { 'a': 1, 'b': '2', 'c': 3 };
+ *
+ * _.pickBy(object, _.isNumber);
+ * // => { 'a': 1, 'c': 3 }
+ */
+function pickBy(object, predicate) {
+  if (object == null) {
+    return {};
+  }
+  var props = arrayMap(getAllKeysIn(object), function(prop) {
+    return [prop];
+  });
+  predicate = baseIteratee(predicate);
+  return basePickBy(object, props, function(value, path) {
+    return predicate(value, path[0]);
+  });
+}
 
-module.exports = FormatNpm;
+module.exports = pickBy;
 
 
 /***/ }),
-/* 508 */
+/* 580 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(501),
-    style = __webpack_require__(504).style;
+var baseGet = __webpack_require__(400),
+    baseSet = __webpack_require__(581),
+    castPath = __webpack_require__(401);
 
-function FormatLearnboost() {}
+/**
+ * The base implementation of  `_.pickBy` without support for iteratee shorthands.
+ *
+ * @private
+ * @param {Object} object The source object.
+ * @param {string[]} paths The property paths to pick.
+ * @param {Function} predicate The function invoked per property.
+ * @returns {Object} Returns the new object.
+ */
+function basePickBy(object, paths, predicate) {
+  var index = -1,
+      length = paths.length,
+      result = {};
 
-Transform.mixin(FormatLearnboost);
+  while (++index < length) {
+    var path = paths[index],
+        value = baseGet(object, path);
 
-FormatLearnboost.prototype.write = function(name, level, args) {
-  var colors = { debug: 'grey', info: 'cyan', warn: 'yellow', error: 'red' };
-  this.emit('item', (name ? style(name +' ', 'grey') : '')
-          + (level ? style(level, colors[level]) + ' ' : '')
-          + args.join(' '));
-};
+    if (predicate(value, path)) {
+      baseSet(result, castPath(path, object), value);
+    }
+  }
+  return result;
+}
 
-module.exports = FormatLearnboost;
+module.exports = basePickBy;
 
 
 /***/ }),
-/* 509 */
+/* 581 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(501),
-    style = __webpack_require__(504).style,
-    util = __webpack_require__(218);
+var assignValue = __webpack_require__(452),
+    castPath = __webpack_require__(401),
+    isIndex = __webpack_require__(327),
+    isObject = __webpack_require__(310),
+    toKey = __webpack_require__(410);
 
-function FormatMinilog() {}
+/**
+ * The base implementation of `_.set`.
+ *
+ * @private
+ * @param {Object} object The object to modify.
+ * @param {Array|string} path The path of the property to set.
+ * @param {*} value The value to set.
+ * @param {Function} [customizer] The function to customize path creation.
+ * @returns {Object} Returns `object`.
+ */
+function baseSet(object, path, value, customizer) {
+  if (!isObject(object)) {
+    return object;
+  }
+  path = castPath(path, object);
 
-Transform.mixin(FormatMinilog);
+  var index = -1,
+      length = path.length,
+      lastIndex = length - 1,
+      nested = object;
 
-FormatMinilog.prototype.write = function(name, level, args) {
-  var colors = { debug: 'blue', info: 'cyan', warn: 'yellow', error: 'red' };
-  this.emit('item', (name ? style(name +' ', 'grey') : '')
-            + (level ? style(level, colors[level]) + ' ' : '')
-            + args.map(function(item) {
-              return (typeof item == 'string' ? item : util.inspect(item, null, 3, true));
-            }).join(' '));
-};
+  while (nested != null && ++index < length) {
+    var key = toKey(path[index]),
+        newValue = value;
 
-module.exports = FormatMinilog;
+    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
+      return object;
+    }
+
+    if (index != lastIndex) {
+      var objValue = nested[key];
+      newValue = customizer ? customizer(objValue, key, nested) : undefined;
+      if (newValue === undefined) {
+        newValue = isObject(objValue)
+          ? objValue
+          : (isIndex(path[index + 1]) ? [] : {});
+      }
+    }
+    assignValue(nested, key, newValue);
+    nested = nested[key];
+  }
+  return object;
+}
+
+module.exports = baseSet;
 
 
 /***/ }),
-/* 510 */
+/* 582 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(501),
-    style = __webpack_require__(504).style;
+"use strict";
 
-function FormatNpm() {}
 
-Transform.mixin(FormatNpm);
+var _interopRequireDefault = __webpack_require__(1);
 
-function noop(a){
-  return a;
-}
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.FetchError = exports.default = void 0;
 
-var types = {
-  string: noop,
-  number: noop,
-  default: JSON.stringify.bind(JSON)
-};
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-function stringify(args) {
-  return args.map(function(arg) {
-    return (types[typeof arg] || types.default)(arg);
-  });
-}
+var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(483));
 
-FormatNpm.prototype.write = function(name, level, args) {
-  var colors = { debug: 'magenta', info: 'cyan', warn: 'yellow', error: 'red' };
-  function pad(s) { return (s.toString().length == 4? ' '+s : s); }
-  function getStack() {
-    var orig = Error.prepareStackTrace;
-    Error.prepareStackTrace = function (err, stack) {
-      return stack;
-    };
-    var err = new Error;
-    Error.captureStackTrace(err, arguments.callee);
-    var stack = err.stack;
-    Error.prepareStackTrace = orig;
-    return stack;
-  }
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
-  var frame = getStack()[5],
-      fileName = FormatNpm.fullPath ? frame.getFileName() : frame.getFileName().replace(/^.*\/(.+)$/, '/$1');
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
-  this.emit('item', (name ? name + ' ' : '')
-          + (level ? style(pad(level), colors[level]) + ' ' : '')
-          + style(fileName + ":" + frame.getLineNumber(), 'grey')
-          + ' '
-          + stringify(args).join(' '));
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+
+var _wrapNativeSuper2 = _interopRequireDefault(__webpack_require__(583));
+
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var EXPIRED_TOKEN = /Expired token/;
+var CLIENT_NOT_FOUND = /Client not found/;
+var INVALID_TOKEN = /Invalid JWT token/;
+var INVALID_TOKEN_ALT = /Invalid token/;
+var UNREGISTERED_CLIENT = /the client must be registered/;
+var _default = {
+  EXPIRED_TOKEN: EXPIRED_TOKEN,
+  CLIENT_NOT_FOUND: CLIENT_NOT_FOUND,
+  INVALID_TOKEN: INVALID_TOKEN,
+  INVALID_TOKEN_ALT: INVALID_TOKEN_ALT,
+  UNREGISTERED_CLIENT: UNREGISTERED_CLIENT
 };
+exports.default = _default;
+var invalidTokenRegex = /invalid_token/;
+var expiredTokenRegex = /access_token_expired/;
 
-FormatNpm.fullPath = true;
+var getWwwAuthenticateErrorMessage = function getWwwAuthenticateErrorMessage(response) {
+  var _response$headers;
 
-module.exports = FormatNpm;
+  var wwwAuthenticateHeader = (_response$headers = response.headers) === null || _response$headers === void 0 ? void 0 : _response$headers.get('www-authenticate');
+  if (!wwwAuthenticateHeader) return undefined;
+  if (expiredTokenRegex.test(wwwAuthenticateHeader)) return 'Expired token';
+  if (invalidTokenRegex.test(wwwAuthenticateHeader)) return 'Invalid token';
+};
 
+var getReasonMessage = function getReasonMessage(reason, wwwAuthenticateErrorMessage) {
+  // As for now we only want to use `reason.error` over `reason.message` if it's an unregistered client error
+  // For other scenarios, we want to still use `reason.message` over `JSON.stringify(reason)` for better backward compatibility
+  var isUnregisteredError = typeof reason.error === 'string' && UNREGISTERED_CLIENT.test(reason.error) ? reason.error : undefined;
+  return isUnregisteredError || reason.message || wwwAuthenticateErrorMessage || (typeof reason === 'string' ? reason : JSON.stringify(reason));
+};
 
+var FetchError = /*#__PURE__*/function (_Error) {
+  (0, _inherits2.default)(FetchError, _Error);
 
-/***/ }),
-/* 511 */
-/***/ (function(module, exports, __webpack_require__) {
+  var _super = _createSuper(FetchError);
 
-var Transform = __webpack_require__(501),
-    style = __webpack_require__(504).style,
-    util = __webpack_require__(218);
+  function FetchError(response, reason) {
+    var _Error$captureStackTr;
 
-function FormatTime() {}
+    var _this;
 
-function timestamp() {
-  var d = new Date();
-  return ('0' + d.getDate()).slice(-2) + '-' +
-    ('0' + (d.getMonth() + 1)).slice(-2) + '-' +
-    d.getFullYear() + ' ' +
-    ('0' + d.getHours()).slice(-2) + ':' +
-    ('0' + d.getMinutes()).slice(-2) + ':' +
-    ('0' + d.getSeconds()).slice(-2) + '.' +
-    ('00' + d.getMilliseconds()).slice(-3);
-}
+    (0, _classCallCheck2.default)(this, FetchError);
+    _this = _super.call(this);
+    (_Error$captureStackTr = Error.captureStackTrace) === null || _Error$captureStackTr === void 0 ? void 0 : _Error$captureStackTr.call(Error, (0, _assertThisInitialized2.default)(_this), _this.constructor); // WARN We have to hardcode this because babel doesn't play nice when extending Error
 
-Transform.mixin(FormatTime);
+    _this.name = 'FetchError';
+    _this.response = response;
+    _this.url = response.url;
+    _this.status = response.status;
+    _this.reason = reason;
 
-FormatTime.prototype.write = function(name, level, args) {
-  var colors = { debug: 'blue', info: 'cyan', warn: 'yellow', error: 'red' };
-  this.emit('item', style(timestamp() +' ', 'grey')
-            + (name ? style(name +' ', 'grey') : '')
-            + (level ? style(level, colors[level]) + ' ' : '')
-            + args.map(function(item) {
-              return (typeof item == 'string' ? item : util.inspect(item, null, 3, true));
-            }).join(' '));
-};
+    if (reason === null) {
+      throw new Error("FetchError received a ".concat(response.status, " error without a Response Body when calling ").concat(response.url));
+    }
 
-module.exports = FormatTime;
+    var wwwAuthenticateErrorMessage = getWwwAuthenticateErrorMessage(response);
+    Object.defineProperty((0, _assertThisInitialized2.default)(_this), 'message', {
+      value: getReasonMessage(reason, wwwAuthenticateErrorMessage)
+    });
+    return _this;
+  }
+
+  return FetchError;
+}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
 
+exports.FetchError = FetchError;
 
 /***/ }),
-/* 512 */
+/* 583 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(501);
-
-var newlines = /\n+$/,
-    logger = new Transform();
+var getPrototypeOf = __webpack_require__(484);
 
-logger.write = function(name, level, args) {
-  var i = args.length-1;
-  if (typeof console === 'undefined' || !console.log) {
-    return;
-  }
-  if(console.log.apply) {
-    return console.log.apply(console, [name, level].concat(args));
-  } else if(JSON && JSON.stringify) {
-    // console.log.apply is undefined in IE8 and IE9
-    // for IE8/9: make console.log at least a bit less awful
-    if(args[i] && typeof args[i] == 'string') {
-      args[i] = args[i].replace(newlines, '');
-    }
-    try {
-      for(i = 0; i < args.length; i++) {
-        args[i] = JSON.stringify(args[i]);
-      }
-    } catch(e) {}
-    console.log(args.join(' '));
-  }
-};
+var setPrototypeOf = __webpack_require__(481);
 
-logger.formatters = ['color', 'minilog'];
-logger.color = __webpack_require__(513);
-logger.minilog = __webpack_require__(515);
+var isNativeFunction = __webpack_require__(584);
 
-module.exports = logger;
+var construct = __webpack_require__(585);
 
+function _wrapNativeSuper(Class) {
+  var _cache = typeof Map === "function" ? new Map() : undefined;
 
-/***/ }),
-/* 513 */
-/***/ (function(module, exports, __webpack_require__) {
+  module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {
+    if (Class === null || !isNativeFunction(Class)) return Class;
 
-var Transform = __webpack_require__(501),
-    color = __webpack_require__(514);
+    if (typeof Class !== "function") {
+      throw new TypeError("Super expression must either be null or a function");
+    }
 
-var colors = { debug: ['cyan'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },
-    logger = new Transform();
+    if (typeof _cache !== "undefined") {
+      if (_cache.has(Class)) return _cache.get(Class);
 
-logger.write = function(name, level, args) {
-  var fn = console.log;
-  if(console[level] && console[level].apply) {
-    fn = console[level];
-    fn.apply(console, [ '%c'+name+' %c'+level, color('gray'), color.apply(color, colors[level])].concat(args));
-  }
-};
+      _cache.set(Class, Wrapper);
+    }
 
-// NOP, because piping the formatted logs can only cause trouble.
-logger.pipe = function() { };
+    function Wrapper() {
+      return construct(Class, arguments, getPrototypeOf(this).constructor);
+    }
 
-module.exports = logger;
+    Wrapper.prototype = Object.create(Class.prototype, {
+      constructor: {
+        value: Wrapper,
+        enumerable: false,
+        writable: true,
+        configurable: true
+      }
+    });
+    return setPrototypeOf(Wrapper, Class);
+  }, module.exports.__esModule = true, module.exports["default"] = module.exports;
+  return _wrapNativeSuper(Class);
+}
 
+module.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
 /***/ }),
-/* 514 */
+/* 584 */
 /***/ (function(module, exports) {
 
-var hex = {
-  black: '#000',
-  red: '#c23621',
-  green: '#25bc26',
-  yellow: '#bbbb00',
-  blue:  '#492ee1',
-  magenta: '#d338d3',
-  cyan: '#33bbc8',
-  gray: '#808080',
-  purple: '#708'
-};
-function color(fg, isInverse) {
-  if(isInverse) {
-    return 'color: #fff; background: '+hex[fg]+';';
-  } else {
-    return 'color: '+hex[fg]+';';
-  }
+function _isNativeFunction(fn) {
+  return Function.toString.call(fn).indexOf("[native code]") !== -1;
 }
 
-module.exports = color;
-
+module.exports = _isNativeFunction, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
 /***/ }),
-/* 515 */
+/* 585 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(501),
-    color = __webpack_require__(514),
-    colors = { debug: ['gray'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },
-    logger = new Transform();
+var setPrototypeOf = __webpack_require__(481);
 
-logger.write = function(name, level, args) {
-  var fn = console.log;
-  if(level != 'debug' && console[level]) {
-    fn = console[level];
-  }
+var isNativeReflectConstruct = __webpack_require__(586);
 
-  var subset = [], i = 0;
-  if(level != 'info') {
-    for(; i < args.length; i++) {
-      if(typeof args[i] != 'string') break;
-    }
-    fn.apply(console, [ '%c'+name +' '+ args.slice(0, i).join(' '), color.apply(color, colors[level]) ].concat(args.slice(i)));
+function _construct(Parent, args, Class) {
+  if (isNativeReflectConstruct()) {
+    module.exports = _construct = Reflect.construct.bind(), module.exports.__esModule = true, module.exports["default"] = module.exports;
   } else {
-    fn.apply(console, [ '%c'+name, color.apply(color, colors[level]) ].concat(args));
+    module.exports = _construct = function _construct(Parent, args, Class) {
+      var a = [null];
+      a.push.apply(a, args);
+      var Constructor = Function.bind.apply(Parent, a);
+      var instance = new Constructor();
+      if (Class) setPrototypeOf(instance, Class.prototype);
+      return instance;
+    }, module.exports.__esModule = true, module.exports["default"] = module.exports;
   }
-};
-
-// NOP, because piping the formatted logs can only cause trouble.
-logger.pipe = function() { };
 
-module.exports = logger;
+  return _construct.apply(null, arguments);
+}
 
+module.exports = _construct, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
 /***/ }),
-/* 516 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var Transform = __webpack_require__(501);
-
-function Stringify() {}
+/* 586 */
+/***/ (function(module, exports) {
 
-Transform.mixin(Stringify);
+function _isNativeReflectConstruct() {
+  if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+  if (Reflect.construct.sham) return false;
+  if (typeof Proxy === "function") return true;
 
-Stringify.prototype.write = function(name, level, args) {
-  var result = [];
-  if(name) result.push(name);
-  if(level) result.push(level);
-  result = result.concat(args);
-  for(var i = 0; i < result.length; i++) {
-    if(result[i] && typeof result[i] == 'object') {
-      // Buffers in Node.js look bad when stringified
-      if(result[i].constructor && result[i].constructor.isBuffer) {
-        result[i] = result[i].toString();
-      } else {
-        try {
-          result[i] = JSON.stringify(result[i]);
-        } catch(stringifyError) {
-          // happens when an object has a circular structure
-          // do not throw an error, when printing, the toString() method of the object will be used
-        }
-      }
-    } else {
-      result[i] = result[i];
-    }
+  try {
+    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
+    return true;
+  } catch (e) {
+    return false;
   }
-  this.emit('item',  result.join(' ') + '\n');
-};
-
-module.exports = Stringify;
+}
 
+module.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
 /***/ }),
-/* 517 */
-/***/ (function(module, exports) {
+/* 587 */
+/***/ (function(module, exports, __webpack_require__) {
 
-module.exports = require("stream");
+"use strict";
 
-/***/ }),
-/* 518 */
-/***/ (function(module, exports) {
 
-function RedisBackend(options) {
-  this.client = options.client;
-  this.key = options.key;
-}
+var _interopRequireDefault = __webpack_require__(1);
 
-RedisBackend.prototype.write = function(str) {
-  this.client.rpush(this.key, str);
-};
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
 
-RedisBackend.prototype.end = function() {};
+var _minilog = _interopRequireDefault(__webpack_require__(499));
 
-RedisBackend.prototype.clear = function(cb) {
-  this.client.del(this.key, cb);
-};
+var logger = (0, _minilog.default)('cozy-stack-client');
 
-module.exports = RedisBackend;
+_minilog.default.suggest.deny('cozy-stack-client', 'info');
 
+var _default = logger;
+exports.default = _default;
 
 /***/ }),
-/* 519 */
+/* 588 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -87120,4884 +83540,5006 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 
-var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
-
 var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-var _microee = _interopRequireDefault(__webpack_require__(447));
+var AppToken = /*#__PURE__*/function () {
+  function AppToken(token) {
+    (0, _classCallCheck2.default)(this, AppToken);
+    this.token = token || '';
+  }
 
-var _lsAdapter = _interopRequireDefault(__webpack_require__(520));
+  (0, _createClass2.default)(AppToken, [{
+    key: "toAuthHeader",
+    value: function toAuthHeader() {
+      return 'Bearer ' + this.token;
+    }
+  }, {
+    key: "toBasicAuth",
+    value: function toBasicAuth() {
+      return "user:".concat(this.token, "@");
+    }
+    /**
+     * Get the app token string
+     *
+     * @see CozyStackClient.getAccessToken
+     * @returns {string} token
+     */
 
-/**
- * In memory key value storage.
- *
- * Can potentially be backed by localStorage if present
+  }, {
+    key: "getAccessToken",
+    value: function getAccessToken() {
+      return this.token;
+    }
+  }]);
+  return AppToken;
+}();
 
- * Emits `change` when a key is set (eventEmitter)
- */
-var FlagStore = /*#__PURE__*/function () {
-  function FlagStore() {
-    (0, _classCallCheck2.default)(this, FlagStore);
-    this.store = {};
+exports.default = AppToken;
 
-    if (typeof localStorage !== 'undefined') {
-      this.longtermStore = _lsAdapter.default;
-    }
+/***/ }),
+/* 589 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    this.restore();
-  }
+"use strict";
 
-  (0, _createClass2.default)(FlagStore, [{
-    key: "restore",
-    value: function restore() {
-      if (!this.longtermStore) {
-        return;
-      }
 
-      var allValues = this.longtermStore.getAll();
+var _interopRequireDefault = __webpack_require__(1);
 
-      for (var _i = 0, _Object$entries = Object.entries(allValues); _i < _Object$entries.length; _i++) {
-        var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
-            flag = _Object$entries$_i[0],
-            val = _Object$entries$_i[1];
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
 
-        this.store[flag] = val;
-        this.emit('change', flag);
-      }
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+
+var AccessToken = /*#__PURE__*/function () {
+  function AccessToken(dataArg) {
+    (0, _classCallCheck2.default)(this, AccessToken);
+    var data = dataArg;
+    if (typeof data === 'string') data = JSON.parse(data);
+    this.tokenType = data.token_type || data.tokenType;
+    this.accessToken = data.access_token || data.accessToken;
+    this.refreshToken = data.refresh_token || data.refreshToken;
+    this.scope = data.scope;
+  }
+
+  (0, _createClass2.default)(AccessToken, [{
+    key: "toAuthHeader",
+    value: function toAuthHeader() {
+      return 'Bearer ' + this.accessToken;
     }
   }, {
-    key: "keys",
-    value: function keys() {
-      return Object.keys(this.store);
+    key: "toBasicAuth",
+    value: function toBasicAuth() {
+      return "user:".concat(this.accessToken, "@");
     }
   }, {
-    key: "get",
-    value: function get(name) {
-      // eslint-disable-next-line no-prototype-builtins
-      if (this.store.hasOwnProperty(name)) {
-        return this.store[name];
-      }
-
-      if (typeof name === 'string') {
-        var nameElements = name.split('.');
-        var size = nameElements.length;
-
-        for (var idx = size - 1; idx > 0; idx--) {
-          var currentKey = nameElements.slice(0, idx).join('.'); // eslint-disable-next-line no-prototype-builtins
-
-          if (this.store.hasOwnProperty(currentKey)) {
-            return nameElements.slice(idx, size).reduce(function (previousValue, currentValue) {
-              // eslint-disable-next-line no-prototype-builtins
-              return previousValue && previousValue.hasOwnProperty(currentValue) ? previousValue[currentValue] : null;
-            }, this.store[currentKey]);
-          }
-        }
-      }
-
-      return null;
+    key: "toJSON",
+    value: function toJSON() {
+      return {
+        tokenType: this.tokenType,
+        accessToken: this.accessToken,
+        refreshToken: this.refreshToken,
+        scope: this.scope
+      };
     }
   }, {
-    key: "set",
-    value: function set(name, value) {
-      if (this.longtermStore) {
-        this.longtermStore.setItem(name, value);
-      }
-
-      this.store[name] = value;
-      this.emit('change', name);
+    key: "toString",
+    value: function toString() {
+      return JSON.stringify(this.toJSON());
     }
-  }, {
-    key: "remove",
-    value: function remove(name) {
-      delete this.store[name];
-
-      if (this.longtermStore) {
-        this.longtermStore.removeItem(name);
-      }
+    /**
+     * Get the access token string
+     *
+     * @see CozyStackClient.getAccessToken
+     * @returns {string} token
+     */
 
-      this.emit('change', name);
+  }, {
+    key: "getAccessToken",
+    value: function getAccessToken() {
+      return this.accessToken;
     }
   }]);
-  return FlagStore;
+  return AccessToken;
 }();
 
-_microee.default.mixin(FlagStore);
-
-var _default = FlagStore;
-exports.default = _default;
+exports.default = AccessToken;
 
 /***/ }),
-/* 520 */
+/* 590 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
+var _interopRequireWildcard = __webpack_require__(277);
+
+var _interopRequireDefault = __webpack_require__(1);
+
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.prefix = exports.getKey = exports.default = void 0;
+exports.default = exports.isDirectory = exports.isFile = void 0;
 
-function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
+var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(291));
 
-function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
 
-function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-// eslint-disable-next-line no-redeclare
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-/* global localStorage */
-var prefix = 'flag__';
-exports.prefix = prefix;
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-var getKey = function getKey(name) {
-  return prefix + name;
-};
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-exports.getKey = getKey;
+var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(483));
 
-var listFlagLocalStorage = function listFlagLocalStorage() {
-  return Object.keys(localStorage).filter(function (x) {
-    return x.indexOf(prefix) === 0;
-  }).map(function (x) {
-    return x.replace(prefix, '');
-  });
-};
-/**
- * Gets a flag from localStorage, parses value from JSON
- *
- * @param  {String} flag
- */
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
-var getItem = function getItem(flag) {
-  var val = localStorage.getItem(getKey(flag));
-  var parsed = val ? JSON.parse(val) : val;
-  return parsed;
-};
-/**
- * Stores a flag in localStorage, stringifies the value for storage
- *
- * @param  {String} flag
- * @param  {String} value
- */
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-var setItem = function setItem(flag, value) {
-  var str = JSON.stringify(value);
-  return localStorage.setItem(getKey(flag), str);
-};
-/**
- * Removes a flag from localStorage
- *
- * @param  {String} flag
- */
+var _lite = _interopRequireDefault(__webpack_require__(591));
 
+var _has = _interopRequireDefault(__webpack_require__(594));
 
-var removeItem = function removeItem(flag) {
-  return localStorage.removeItem(getKey(flag));
-};
-/**
- * Returns all stored flags as an object
- */
+var _get = _interopRequireDefault(__webpack_require__(399));
 
+var _omit = _interopRequireDefault(__webpack_require__(523));
 
-var getAll = function getAll() {
-  var res = {};
+var _pick = _interopRequireDefault(__webpack_require__(596));
 
-  var _iterator = _createForOfIteratorHelper(listFlagLocalStorage()),
-      _step;
+var _mangoIndex = __webpack_require__(576);
 
-  try {
-    for (_iterator.s(); !(_step = _iterator.n()).done;) {
-      var flag = _step.value;
-      res[flag] = getItem(flag);
-    }
-  } catch (err) {
-    _iterator.e(err);
-  } finally {
-    _iterator.f();
-  }
+var _DocumentCollection2 = _interopRequireWildcard(__webpack_require__(491));
 
-  return res;
-};
-/**
- * Clears all the flags from localstorage
- */
+var _utils = __webpack_require__(521);
 
+var _errors = __webpack_require__(582);
 
-var clearAll = function clearAll() {
-  var _iterator2 = _createForOfIteratorHelper(listFlagLocalStorage()),
-      _step2;
+var _Collection = __webpack_require__(489);
 
-  try {
-    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
-      var flag = _step2.value;
-      removeItem(flag);
-    }
-  } catch (err) {
-    _iterator2.e(err);
-  } finally {
-    _iterator2.f();
-  }
-};
+var _getIllegalCharacter = __webpack_require__(598);
 
-var _default = {
-  getAll: getAll,
-  getItem: getItem,
-  setItem: setItem,
-  clearAll: clearAll,
-  removeItem: removeItem
-};
-exports.default = _default;
+var querystring = _interopRequireWildcard(__webpack_require__(578));
 
-/***/ }),
-/* 521 */
-/***/ (function(module, exports, __webpack_require__) {
+var _logger = _interopRequireDefault(__webpack_require__(587));
 
-"use strict";
+function _templateObject24() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/files/_changes"]);
 
+  _templateObject24 = function _templateObject24() {
+    return data;
+  };
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.formatBytes = exports.slugify = exports.sleep = exports.attempt = exports.uri = void 0;
+  return data;
+}
 
-/**
- * @function
- * @description Template tag function for URIs encoding
- *
- * Will automatically apply `encodeURIComponent` to template literal placeholders
- *
- * @example
- * ```
- * const safe = uri`/data/${doctype}/_all_docs?limit=${limit}`
- * ```
- *
- * @private
- */
-var uri = function uri(strings) {
-  var parts = [strings[0]];
+function _templateObject23() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", "/relationships/not_synchronizing"]);
 
-  for (var i = 0; i < (arguments.length <= 1 ? 0 : arguments.length - 1); i++) {
-    parts.push(encodeURIComponent(i + 1 < 1 || arguments.length <= i + 1 ? undefined : arguments[i + 1]) + strings[i + 1]);
-  }
+  _templateObject23 = function _templateObject23() {
+    return data;
+  };
 
-  return parts.join('');
-};
-/**
- * @function
- * @description Helps to avoid nested try/catch when using async/await
- *
- * Inspired by a Go pattern: http://blog.grossman.io/how-to-write-async-await-without-try-catch-blocks-in-javascript/
- *
- * @example
- * ```
- * if (await attempt(collection.all()) return
- * await sleep(1000)
- * if (await attempt(collection.all()) return
- * await sleep(1000)
- * return
- * ```
- *
- * @private
- */
+  return data;
+}
 
+function _templateObject22() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", "/relationships/not_synchronizing"]);
 
-exports.uri = uri;
+  _templateObject22 = function _templateObject22() {
+    return data;
+  };
 
-var attempt = function attempt(promise) {
-  return promise.then(function () {
-    return true;
-  }).catch(function () {
-    return false;
-  });
-};
-/**
- * @function
- * @description Helps to avoid nested try/catch when using async/await — see documentation for attempt
- * @private
- */
+  return data;
+}
 
+function _templateObject21() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", "/relationships/not_synchronizing"]);
 
-exports.attempt = attempt;
+  _templateObject21 = function _templateObject21() {
+    return data;
+  };
 
-var sleep = function sleep(time, args) {
-  return new Promise(function (resolve) {
-    setTimeout(resolve, time, args);
-  });
-};
+  return data;
+}
 
-exports.sleep = sleep;
+function _templateObject20() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/files/", "/versions"]);
 
-var slugify = function slugify(text) {
-  return text.toString().toLowerCase().replace(/\s+/g, '-') // Replace spaces with -
-  .replace(/[^\w-]+/g, '') // Remove all non-word chars
-  .replace(/--+/g, '-') // Replace multiple - with single -
-  .replace(/^-+/, '') // Trim - from start of text
-  .replace(/-+$/, '');
-}; // Trim - from end of text
+  _templateObject20 = function _templateObject20() {
+    return data;
+  };
 
+  return data;
+}
 
-exports.slugify = slugify;
+function _templateObject19() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/files/upload/metadata"]);
 
-var formatBytes = function formatBytes(bytes) {
-  var decimals = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
-  if (bytes === 0) return '0 Bytes';
-  var k = 1024;
-  var dm = decimals < 0 ? 0 : decimals;
-  var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
-  var i = Math.floor(Math.log(bytes) / Math.log(k));
-  return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
-};
+  _templateObject19 = function _templateObject19() {
+    return data;
+  };
 
-exports.formatBytes = formatBytes;
+  return data;
+}
 
-/***/ }),
-/* 522 */
-/***/ (function(module, exports, __webpack_require__) {
+function _templateObject18() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/files/", ""]);
 
-var baseUniq = __webpack_require__(423);
+  _templateObject18 = function _templateObject18() {
+    return data;
+  };
 
-/**
- * Creates a duplicate-free version of an array, using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons, in which only the first occurrence of each element
- * is kept. The order of result values is determined by the order they occur
- * in the array.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * _.uniq([2, 1, 2]);
- * // => [2, 1]
- */
-function uniq(array) {
-  return (array && array.length) ? baseUniq(array) : [];
+  return data;
 }
 
-module.exports = uniq;
+function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
 
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
 
-/***/ }),
-/* 523 */
-/***/ (function(module, exports, __webpack_require__) {
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
 
-var arrayMap = __webpack_require__(409),
-    baseClone = __webpack_require__(451),
-    baseUnset = __webpack_require__(524),
-    castPath = __webpack_require__(401),
-    copyObject = __webpack_require__(454),
-    customOmitClone = __webpack_require__(528),
-    flatRest = __webpack_require__(530),
-    getAllKeysIn = __webpack_require__(465);
+function _templateObject17() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/files/", "?Name=", "&Type=directory&MetadataID=", ""]);
 
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1,
-    CLONE_FLAT_FLAG = 2,
-    CLONE_SYMBOLS_FLAG = 4;
+  _templateObject17 = function _templateObject17() {
+    return data;
+  };
 
-/**
- * The opposite of `_.pick`; this method creates an object composed of the
- * own and inherited enumerable property paths of `object` that are not omitted.
- *
- * **Note:** This method is considerably slower than `_.pick`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The source object.
- * @param {...(string|string[])} [paths] The property paths to omit.
- * @returns {Object} Returns the new object.
- * @example
- *
- * var object = { 'a': 1, 'b': '2', 'c': 3 };
- *
- * _.omit(object, ['a', 'c']);
- * // => { 'b': '2' }
- */
-var omit = flatRest(function(object, paths) {
-  var result = {};
-  if (object == null) {
-    return result;
-  }
-  var isDeep = false;
-  paths = arrayMap(paths, function(path) {
-    path = castPath(path, object);
-    isDeep || (isDeep = path.length > 1);
-    return path;
-  });
-  copyObject(object, getAllKeysIn(object), result);
-  if (isDeep) {
-    result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
-  }
-  var length = paths.length;
-  while (length--) {
-    baseUnset(result, paths[length]);
-  }
-  return result;
-});
+  return data;
+}
 
-module.exports = omit;
+function _templateObject16() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/files/metadata?Path=", ""]);
+
+  _templateObject16 = function _templateObject16() {
+    return data;
+  };
 
+  return data;
+}
 
-/***/ }),
-/* 524 */
-/***/ (function(module, exports, __webpack_require__) {
+function _templateObject15() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/files/", ""]);
 
-var castPath = __webpack_require__(401),
-    last = __webpack_require__(525),
-    parent = __webpack_require__(526),
-    toKey = __webpack_require__(410);
+  _templateObject15 = function _templateObject15() {
+    return data;
+  };
 
-/**
- * The base implementation of `_.unset`.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {Array|string} path The property path to unset.
- * @returns {boolean} Returns `true` if the property is deleted, else `false`.
- */
-function baseUnset(object, path) {
-  path = castPath(path, object);
-  object = parent(object, path);
-  return object == null || delete object[toKey(last(path))];
+  return data;
 }
 
-module.exports = baseUnset;
-
+function _templateObject14() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/files/downloads?Path=", ""]);
 
-/***/ }),
-/* 525 */
-/***/ (function(module, exports) {
+  _templateObject14 = function _templateObject14() {
+    return data;
+  };
 
-/**
- * Gets the last element of `array`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to query.
- * @returns {*} Returns the last element of `array`.
- * @example
- *
- * _.last([1, 2, 3]);
- * // => 3
- */
-function last(array) {
-  var length = array == null ? 0 : array.length;
-  return length ? array[length - 1] : undefined;
+  return data;
 }
 
-module.exports = last;
+function _templateObject13() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/files/downloads?VersionId=", "&Filename=", ""]);
+
+  _templateObject13 = function _templateObject13() {
+    return data;
+  };
 
+  return data;
+}
 
-/***/ }),
-/* 526 */
-/***/ (function(module, exports, __webpack_require__) {
+function _templateObject12() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/files/downloads?Id=", "&Filename=", ""]);
 
-var baseGet = __webpack_require__(400),
-    baseSlice = __webpack_require__(527);
+  _templateObject12 = function _templateObject12() {
+    return data;
+  };
 
-/**
- * Gets the parent value at `path` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array} path The path to get the parent value of.
- * @returns {*} Returns the parent value.
- */
-function parent(object, path) {
-  return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
+  return data;
 }
 
-module.exports = parent;
+function _templateObject11() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/files/", "?Name=", "&Type=file&Executable=", "&Encrypted=", ""]);
 
+  _templateObject11 = function _templateObject11() {
+    return data;
+  };
 
-/***/ }),
-/* 527 */
-/***/ (function(module, exports) {
+  return data;
+}
 
-/**
- * The base implementation of `_.slice` without an iteratee call guard.
- *
- * @private
- * @param {Array} array The array to slice.
- * @param {number} [start=0] The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns the slice of `array`.
- */
-function baseSlice(array, start, end) {
-  var index = -1,
-      length = array.length;
+function _templateObject10() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/files/", "?Name=", "&Type=file&Executable=", "&Encrypted=", "&MetadataID=", "&Size=", "&SourceAccount=", "&SourceAccountIdentifier=", ""]);
 
-  if (start < 0) {
-    start = -start > length ? 0 : (length + start);
-  }
-  end = end > length ? length : end;
-  if (end < 0) {
-    end += length;
-  }
-  length = start > end ? 0 : ((end - start) >>> 0);
-  start >>>= 0;
+  _templateObject10 = function _templateObject10() {
+    return data;
+  };
 
-  var result = Array(length);
-  while (++index < length) {
-    result[index] = array[index + start];
-  }
-  return result;
+  return data;
 }
 
-module.exports = baseSlice;
+function _templateObject9() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/files/", ""]);
 
+  _templateObject9 = function _templateObject9() {
+    return data;
+  };
 
-/***/ }),
-/* 528 */
-/***/ (function(module, exports, __webpack_require__) {
+  return data;
+}
 
-var isPlainObject = __webpack_require__(529);
+function _templateObject8() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/files/", "/copy"]);
 
-/**
- * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain
- * objects.
- *
- * @private
- * @param {*} value The value to inspect.
- * @param {string} key The key of the property to inspect.
- * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
- */
-function customOmitClone(value) {
-  return isPlainObject(value) ? undefined : value;
-}
+  _templateObject8 = function _templateObject8() {
+    return data;
+  };
 
-module.exports = customOmitClone;
+  return data;
+}
 
+function _templateObject7() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/files/trash/", ""]);
 
-/***/ }),
-/* 529 */
-/***/ (function(module, exports, __webpack_require__) {
+  _templateObject7 = function _templateObject7() {
+    return data;
+  };
 
-var baseGetTag = __webpack_require__(304),
-    getPrototype = __webpack_require__(464),
-    isObjectLike = __webpack_require__(323);
+  return data;
+}
 
-/** `Object#toString` result references. */
-var objectTag = '[object Object]';
+function _templateObject6() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/files/", ""]);
 
-/** Used for built-in method references. */
-var funcProto = Function.prototype,
-    objectProto = Object.prototype;
+  _templateObject6 = function _templateObject6() {
+    return data;
+  };
 
-/** Used to resolve the decompiled source of functions. */
-var funcToString = funcProto.toString;
+  return data;
+}
 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
+function _templateObject5() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", "/relationships/references"]);
 
-/** Used to infer the `Object` constructor. */
-var objectCtorString = funcToString.call(Object);
+  _templateObject5 = function _templateObject5() {
+    return data;
+  };
 
-/**
- * Checks if `value` is a plain object, that is, an object created by the
- * `Object` constructor or one with a `[[Prototype]]` of `null`.
- *
- * @static
- * @memberOf _
- * @since 0.8.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- * }
- *
- * _.isPlainObject(new Foo);
- * // => false
- *
- * _.isPlainObject([1, 2, 3]);
- * // => false
- *
- * _.isPlainObject({ 'x': 0, 'y': 0 });
- * // => true
- *
- * _.isPlainObject(Object.create(null));
- * // => true
- */
-function isPlainObject(value) {
-  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
-    return false;
-  }
-  var proto = getPrototype(value);
-  if (proto === null) {
-    return true;
-  }
-  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
-  return typeof Ctor == 'function' && Ctor instanceof Ctor &&
-    funcToString.call(Ctor) == objectCtorString;
+  return data;
 }
 
-module.exports = isPlainObject;
+function _templateObject4() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", "/relationships/references"]);
 
+  _templateObject4 = function _templateObject4() {
+    return data;
+  };
 
-/***/ }),
-/* 530 */
-/***/ (function(module, exports, __webpack_require__) {
+  return data;
+}
 
-var flatten = __webpack_require__(419),
-    overRest = __webpack_require__(434),
-    setToString = __webpack_require__(436);
+function _templateObject3() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/files/", "/relationships/referenced_by"]);
 
-/**
- * A specialized version of `baseRest` which flattens the rest array.
- *
- * @private
- * @param {Function} func The function to apply a rest parameter to.
- * @returns {Function} Returns the new function.
- */
-function flatRest(func) {
-  return setToString(overRest(func, undefined, flatten), func + '');
+  _templateObject3 = function _templateObject3() {
+    return data;
+  };
+
+  return data;
 }
 
-module.exports = flatRest;
+function _templateObject2() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/files/", "/relationships/referenced_by"]);
 
+  _templateObject2 = function _templateObject2() {
+    return data;
+  };
 
-/***/ }),
-/* 531 */
-/***/ (function(module, exports) {
+  return data;
+}
 
-/**
- * Gets the first element of `array`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @alias first
- * @category Array
- * @param {Array} array The array to query.
- * @returns {*} Returns the first element of `array`.
- * @example
- *
- * _.head([1, 2, 3]);
- * // => 1
- *
- * _.head([]);
- * // => undefined
- */
-function head(array) {
-  return (array && array.length) ? array[0] : undefined;
+function _templateObject() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", "/relationships/references"]);
+
+  _templateObject = function _templateObject() {
+    return data;
+  };
+
+  return data;
 }
 
-module.exports = head;
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-/***/ }),
-/* 532 */
-/***/ (function(module, exports, __webpack_require__) {
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-var baseMerge = __webpack_require__(533),
-    createAssigner = __webpack_require__(538);
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
 /**
- * This method is like `_.assign` except that it recursively merges own and
- * inherited enumerable string keyed properties of source objects into the
- * destination object. Source properties that resolve to `undefined` are
- * skipped if a destination value exists. Array and plain object properties
- * are merged recursively. Other objects and value types are overridden by
- * assignment. Source objects are applied from left to right. Subsequent
- * sources overwrite property assignments of previous sources.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 0.5.0
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} [sources] The source objects.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var object = {
- *   'a': [{ 'b': 2 }, { 'd': 4 }]
- * };
- *
- * var other = {
- *   'a': [{ 'c': 3 }, { 'e': 5 }]
- * };
- *
- * _.merge(object, other);
- * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
+ * @typedef {object} IOCozyFolder Folder
  */
-var merge = createAssigner(function(object, source, srcIndex) {
-  baseMerge(object, source, srcIndex);
-});
-
-module.exports = merge;
 
+/**
+ * @typedef {object} SpecificFileAttributesForKonnector Specific file attributes for creation for konnector
+ * @property {string} sourceAccount the id of the source account used by a konnector
+ * @property {string} sourceAccountIdentifier the unique identifier of the account targeted by the connector
+ */
 
-/***/ }),
-/* 533 */
-/***/ (function(module, exports, __webpack_require__) {
+/**
+ * Cursor used for Mango queries pagination
+ *
+ * @typedef {Array<string>|string} ViewKey
+ * @typedef {string} DocId
+ * @typedef {Array<*> & {0: ViewKey, 1: DocId}} CouchDBViewCursor
+ */
 
-var Stack = __webpack_require__(341),
-    assignMergeValue = __webpack_require__(534),
-    baseFor = __webpack_require__(316),
-    baseMergeDeep = __webpack_require__(535),
-    isObject = __webpack_require__(310),
-    keysIn = __webpack_require__(456),
-    safeGet = __webpack_require__(536);
+/**
+ * Attributes used for directory creation
+ *
+ * @typedef {object} DirectoryAttributes
+ * @property {string} dirId - Id of the parent directory.
+ * @property {boolean} name - Name of the created directory.
+ * @property {boolean} executable - Indicates whether the file will be executable.
+ * @property {object} [metadata] io.cozy.files.metadata to attach to the directory
+ */
 
 /**
- * The base implementation of `_.merge` without support for multiple sources.
+ * Attributes used for file creation
  *
- * @private
- * @param {Object} object The destination object.
- * @param {Object} source The source object.
- * @param {number} srcIndex The index of `source`.
- * @param {Function} [customizer] The function to customize merged values.
- * @param {Object} [stack] Tracks traversed source values and their merged
- *  counterparts.
+ * @typedef {object} FileAttributes
+ * @property {string} id - Id of the document
+ * @property {string} _id - Id of the document
+ * @property {string} dirId - Id of the parent directory.
+ * @property {string} name - Name of the created file.
+ * @property {Date} lastModifiedDate - Can be used to set the last modified date of a file.
+ * @property {boolean} executable - Whether or not the file is executable
+ * @property {boolean} encrypted - Whether or not the file is client-side encrypted
+ * @property {object} metadata io.cozy.files.metadata to attach to the file
  */
-function baseMerge(object, source, srcIndex, customizer, stack) {
-  if (object === source) {
-    return;
-  }
-  baseFor(source, function(srcValue, key) {
-    stack || (stack = new Stack);
-    if (isObject(srcValue)) {
-      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
-    }
-    else {
-      var newValue = customizer
-        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
-        : undefined;
 
-      if (newValue === undefined) {
-        newValue = srcValue;
-      }
-      assignMergeValue(object, key, newValue);
-    }
-  }, keysIn);
-}
+/**
+ * Document representing a io.cozy.files
+ *
+ * @typedef {object} FileDocument
+ * @property {string} _id - Id of the file
+ * @property {FileAttributes} attributes - Attributes of the file
+ * @property {object} meta - Meta
+ * @property {object} relationships - Relationships
+ * @property {object} referenced_by - Referenced by
+ */
 
-module.exports = baseMerge;
+/**
+ * Stream is not defined in a browser, but is on NodeJS environment
+ *
+ * @typedef {object} Stream
+ */
 
+/**
+ * Document representing a io.cozy.oauth.clients
+ *
+ * @typedef {object} OAuthClient
+ * @property {string} _id - Id of the client
+ * @property {string} _type - Doctype of the client (i.e. io.cozy.oauth.clients)
+ */
+var ROOT_DIR_ID = 'io.cozy.files.root-dir';
+var CONTENT_TYPE_OCTET_STREAM = 'application/octet-stream';
+/**
+ * Normalize a file, adding document's doctype if needed
+ *
+ * @param  {FileDocument} file - File to normalize
+ * @returns {FileDocument} normalized file
+ * @private
+ */
 
-/***/ }),
-/* 534 */
-/***/ (function(module, exports, __webpack_require__) {
+var normalizeFile = function normalizeFile(file) {
+  var _file$meta;
 
-var baseAssignValue = __webpack_require__(299),
-    eq = __webpack_require__(346);
+  return _objectSpread(_objectSpread(_objectSpread({}, (0, _DocumentCollection2.normalizeDoc)(file, 'io.cozy.files')), file.attributes), {}, {
+    _rev: file === null || file === void 0 ? void 0 : (_file$meta = file.meta) === null || _file$meta === void 0 ? void 0 : _file$meta.rev // Beware of JSON-API
 
+  });
+};
 /**
- * This function is like `assignValue` except that it doesn't assign
- * `undefined` values.
+ * Normalize references, expliciting _type and _id — see https://docs.cozy.io/en/cozy-stack/references-docs-in-vfs/
  *
+ * @param  {Array<object>} references - The list of files referenced by a document to normalize
+ * @returns {Array<object>} the data attribute of the normalized references
  * @private
- * @param {Object} object The object to modify.
- * @param {string} key The key of the property to assign.
- * @param {*} value The value to assign.
  */
-function assignMergeValue(object, key, value) {
-  if ((value !== undefined && !eq(object[key], value)) ||
-      (value === undefined && !(key in object))) {
-    baseAssignValue(object, key, value);
-  }
-}
-
-module.exports = assignMergeValue;
 
 
-/***/ }),
-/* 535 */
-/***/ (function(module, exports, __webpack_require__) {
+var normalizeReferences = function normalizeReferences(references) {
+  return references ? references.map(function (ref) {
+    return {
+      _type: ref.type,
+      _id: ref.id
+    };
+  }) : [];
+};
+/**
+ * Sanitize the file name by trimming spaces
+ *
+ * @param {string} name - The file name to trim
+ * @returns {string} the trimmed file name
+ * @private
+ */
 
-var assignMergeValue = __webpack_require__(534),
-    cloneBuffer = __webpack_require__(459),
-    cloneTypedArray = __webpack_require__(472),
-    copyArray = __webpack_require__(460),
-    initCloneObject = __webpack_require__(473),
-    isArguments = __webpack_require__(321),
-    isArray = __webpack_require__(324),
-    isArrayLikeObject = __webpack_require__(441),
-    isBuffer = __webpack_require__(325),
-    isFunction = __webpack_require__(303),
-    isObject = __webpack_require__(310),
-    isPlainObject = __webpack_require__(529),
-    isTypedArray = __webpack_require__(328),
-    safeGet = __webpack_require__(536),
-    toPlainObject = __webpack_require__(537);
 
+var sanitizeFileName = function sanitizeFileName(name) {
+  return name && name.trim();
+};
 /**
- * A specialized version of `baseMerge` for arrays and objects which performs
- * deep merges and tracks traversed objects enabling objects with circular
- * references to be merged.
+ * Sanitize and validate the file name - throw errors according to case
  *
+ * @param {string} name - The file name
+ * @returns {string} the trimmed safe file name
+ * @throws {Error} - explaining reason why file name is not valid
  * @private
- * @param {Object} object The destination object.
- * @param {Object} source The source object.
- * @param {string} key The key of the value to merge.
- * @param {number} srcIndex The index of `source`.
- * @param {Function} mergeFunc The function to merge values.
- * @param {Function} [customizer] The function to customize assigned values.
- * @param {Object} [stack] Tracks traversed source values and their merged
- *  counterparts.
  */
-function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
-  var objValue = safeGet(object, key),
-      srcValue = safeGet(source, key),
-      stacked = stack.get(srcValue);
-
-  if (stacked) {
-    assignMergeValue(object, key, stacked);
-    return;
-  }
-  var newValue = customizer
-    ? customizer(objValue, srcValue, (key + ''), object, source, stack)
-    : undefined;
 
-  var isCommon = newValue === undefined;
 
-  if (isCommon) {
-    var isArr = isArray(srcValue),
-        isBuff = !isArr && isBuffer(srcValue),
-        isTyped = !isArr && !isBuff && isTypedArray(srcValue);
+var sanitizeAndValidateFileName = function sanitizeAndValidateFileName(name) {
+  var safeName = sanitizeFileName(name);
 
-    newValue = srcValue;
-    if (isArr || isBuff || isTyped) {
-      if (isArray(objValue)) {
-        newValue = objValue;
-      }
-      else if (isArrayLikeObject(objValue)) {
-        newValue = copyArray(objValue);
-      }
-      else if (isBuff) {
-        isCommon = false;
-        newValue = cloneBuffer(srcValue, true);
-      }
-      else if (isTyped) {
-        isCommon = false;
-        newValue = cloneTypedArray(srcValue, true);
-      }
-      else {
-        newValue = [];
-      }
-    }
-    else if (isPlainObject(srcValue) || isArguments(srcValue)) {
-      newValue = objValue;
-      if (isArguments(objValue)) {
-        newValue = toPlainObject(objValue);
-      }
-      else if (!isObject(objValue) || isFunction(objValue)) {
-        newValue = initCloneObject(srcValue);
-      }
-    }
-    else {
-      isCommon = false;
-    }
-  }
-  if (isCommon) {
-    // Recursively merge objects and arrays (susceptible to call stack limits).
-    stack.set(srcValue, newValue);
-    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
-    stack['delete'](srcValue);
+  if (typeof safeName !== 'string' || safeName === '') {
+    throw new Error('Missing name argument');
   }
-  assignMergeValue(object, key, newValue);
-}
 
-module.exports = baseMergeDeep;
+  if (name === '.' || name === '..') {
+    throw new Error("Invalid filename: ".concat(name));
+  }
 
+  var illegalCharacters = (0, _getIllegalCharacter.getIllegalCharacters)(safeName);
 
-/***/ }),
-/* 536 */
-/***/ (function(module, exports) {
+  if (illegalCharacters.length) {
+    throw new Error("Invalid filename containing illegal character(s): ".concat(illegalCharacters));
+  }
 
+  return safeName;
+};
 /**
- * Gets the value at `key`, unless `key` is "__proto__" or "constructor".
+ * Returns true when parameter has type directory, file or has _type io.cozy.files
  *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
+ * @param {object} doc - The document whose type is checked
+ * @param {string} [doc._type] - The document's doctype
+ * @param {'directory'|'file'} [doc.type] - The io.cozy-files document type
+ *
+ * @returns {boolean} true when objects has type directory, file or has _type io.cozy.files or false
  */
-function safeGet(object, key) {
-  if (key === 'constructor' && typeof object[key] === 'function') {
-    return;
-  }
-
-  if (key == '__proto__') {
-    return;
-  }
-
-  return object[key];
-}
-
-module.exports = safeGet;
-
-
-/***/ }),
-/* 537 */
-/***/ (function(module, exports, __webpack_require__) {
 
-var copyObject = __webpack_require__(454),
-    keysIn = __webpack_require__(456);
 
+var isFile = function isFile(_ref) {
+  var _type = _ref._type,
+      type = _ref.type;
+  return _type === 'io.cozy.files' || type === 'directory' || type === 'file';
+};
 /**
- * Converts `value` to a plain object flattening inherited enumerable string
- * keyed properties of `value` to own properties of the plain object.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {Object} Returns the converted plain object.
- * @example
- *
- * function Foo() {
- *   this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.assign({ 'a': 1 }, new Foo);
- * // => { 'a': 1, 'b': 2 }
+ * Returns true when parameters has type directory
  *
- * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
- * // => { 'a': 1, 'b': 2, 'c': 3 }
+ * @param {object} args File
+ * @param {string} args.type - The type of the file
+ * @returns {boolean} true when parameters has type directory or false
  */
-function toPlainObject(value) {
-  return copyObject(value, keysIn(value));
-}
 
-module.exports = toPlainObject;
 
+exports.isFile = isFile;
+
+var isDirectory = function isDirectory(_ref2) {
+  var type = _ref2.type;
+  return type === 'directory';
+};
 
-/***/ }),
-/* 538 */
-/***/ (function(module, exports, __webpack_require__) {
+exports.isDirectory = isDirectory;
 
-var baseRest = __webpack_require__(433),
-    isIterateeCall = __webpack_require__(539);
+var raceWithCondition = function raceWithCondition(promises, predicate) {
+  return new Promise(function (resolve) {
+    promises.forEach(function (p) {
+      return p.then(function (res) {
+        if (predicate(res)) {
+          resolve(true);
+        }
+      });
+    });
+    Promise.all(promises).then(function () {
+      return resolve(false);
+    });
+  });
+};
 
+var dirName = function dirName(path) {
+  var lastIndex = path.lastIndexOf('/');
+  return path.substring(0, lastIndex);
+};
 /**
- * Creates a function like `_.assign`.
+ * Implements `DocumentCollection` API along with specific methods for
+ * `io.cozy.files`.
  *
- * @private
- * @param {Function} assigner The function to assign values.
- * @returns {Function} Returns the new assigner function.
+ * Files are a special type of documents and are handled differently by the stack:
+ * special routes are to be used, and there is a notion of referenced files, aka
+ * files associated to a specific document
  */
-function createAssigner(assigner) {
-  return baseRest(function(object, sources) {
-    var index = -1,
-        length = sources.length,
-        customizer = length > 1 ? sources[length - 1] : undefined,
-        guard = length > 2 ? sources[2] : undefined;
 
-    customizer = (assigner.length > 3 && typeof customizer == 'function')
-      ? (length--, customizer)
-      : undefined;
 
-    if (guard && isIterateeCall(sources[0], sources[1], guard)) {
-      customizer = length < 3 ? undefined : customizer;
-      length = 1;
-    }
-    object = Object(object);
-    while (++index < length) {
-      var source = sources[index];
-      if (source) {
-        assigner(object, source, index, customizer);
-      }
-    }
-    return object;
-  });
-}
+var FileCollection = /*#__PURE__*/function (_DocumentCollection) {
+  (0, _inherits2.default)(FileCollection, _DocumentCollection);
 
-module.exports = createAssigner;
+  var _super = _createSuper(FileCollection);
 
+  function FileCollection(doctype, stackClient) {
+    var _this;
 
-/***/ }),
-/* 539 */
-/***/ (function(module, exports, __webpack_require__) {
+    (0, _classCallCheck2.default)(this, FileCollection);
+    _this = _super.call(this, doctype, stackClient);
+    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "extractResponseLinkRelated", function (res) {
+      var href = res.links && res.links.related;
+      if (!href) throw new Error('No related link in server response');
+      return _this.stackClient.fullpath(href);
+    });
+    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "forceFileDownload", function (href, filename) {
+      var element = document.createElement('a');
+      element.setAttribute('href', href);
+      element.setAttribute('download', filename);
+      element.style.display = 'none';
+      document.body.appendChild(element);
+      element.click();
+      document.body.removeChild(element);
+    });
+    _this.specialDirectories = {};
+    return _this;
+  }
+  /**
+   * Fetches the file's data
+   *
+   * @param {string} id File id
+   * @returns {{data, included}} Information about the file or folder and it's descendents
+   */
 
-var eq = __webpack_require__(346),
-    isArrayLike = __webpack_require__(337),
-    isIndex = __webpack_require__(327),
-    isObject = __webpack_require__(310);
 
-/**
- * Checks if the given arguments are from an iteratee call.
- *
- * @private
- * @param {*} value The potential iteratee value argument.
- * @param {*} index The potential iteratee index or key argument.
- * @param {*} object The potential iteratee object argument.
- * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
- *  else `false`.
- */
-function isIterateeCall(value, index, object) {
-  if (!isObject(object)) {
-    return false;
-  }
-  var type = typeof index;
-  if (type == 'number'
-        ? (isArrayLike(object) && isIndex(index, object.length))
-        : (type == 'string' && index in object)
-      ) {
-    return eq(object[index], value);
-  }
-  return false;
-}
+  (0, _createClass2.default)(FileCollection, [{
+    key: "get",
+    value: function get(id) {
+      return this.statById(id);
+    }
+  }, {
+    key: "fetchFindFiles",
+    value: function () {
+      var _fetchFindFiles = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(selector, options) {
+        return _regenerator.default.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                return _context.abrupt("return", this.stackClient.fetchJSON('POST', '/files/_find', this.toMangoOptions(selector, options)));
 
-module.exports = isIterateeCall;
+              case 1:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this);
+      }));
 
+      function fetchFindFiles(_x, _x2) {
+        return _fetchFindFiles.apply(this, arguments);
+      }
 
-/***/ }),
-/* 540 */
-/***/ (function(module, exports, __webpack_require__) {
+      return fetchFindFiles;
+    }()
+    /**
+     * Returns a filtered list of documents using a Mango selector.
+     *
+     * The returned documents are paginated by the stack.
+     *
+     * @param {object}            selector  The Mango selector.
+     * @param {MangoQueryOptions} options   The query options
+     * @returns {Promise<{data, meta, skip, next, bookmark, execution_stats}>} The JSON API conformant response.
+     * @throws {FetchError}
+     */
 
-var baseClamp = __webpack_require__(541),
-    baseToString = __webpack_require__(408),
-    toInteger = __webpack_require__(542),
-    toString = __webpack_require__(407);
+  }, {
+    key: "find",
+    value: function () {
+      var _find = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(selector) {
+        var options,
+            _options$skip,
+            skip,
+            resp,
+            path,
+            nextLink,
+            nextLinkURL,
+            nextBookmark,
+            _args2 = arguments;
 
-/**
- * Checks if `string` starts with the given target string.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to inspect.
- * @param {string} [target] The string to search for.
- * @param {number} [position=0] The position to search from.
- * @returns {boolean} Returns `true` if `string` starts with `target`,
- *  else `false`.
- * @example
- *
- * _.startsWith('abc', 'a');
- * // => true
- *
- * _.startsWith('abc', 'b');
- * // => false
- *
- * _.startsWith('abc', 'b', 1);
- * // => true
- */
-function startsWith(string, target, position) {
-  string = toString(string);
-  position = position == null
-    ? 0
-    : baseClamp(toInteger(position), 0, string.length);
+        return _regenerator.default.wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                options = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : {};
+                _options$skip = options.skip, skip = _options$skip === void 0 ? 0 : _options$skip;
+                _context2.prev = 2;
+                path = '/files/_find';
+                _context2.next = 6;
+                return this.findWithMango(path, selector, options);
 
-  target = baseToString(target);
-  return string.slice(position, position + target.length) == target;
-}
+              case 6:
+                resp = _context2.sent;
+                _context2.next = 12;
+                break;
 
-module.exports = startsWith;
+              case 9:
+                _context2.prev = 9;
+                _context2.t0 = _context2["catch"](2);
+                return _context2.abrupt("return", (0, _Collection.dontThrowNotFoundError)(_context2.t0));
 
+              case 12:
+                nextLink = (0, _get.default)(resp, 'links.next', '');
+                nextLinkURL = new URL("".concat(this.stackClient.uri).concat(nextLink));
+                nextBookmark = nextLinkURL.searchParams.get('page[cursor]');
+                return _context2.abrupt("return", {
+                  data: resp.data.map(function (f) {
+                    return normalizeFile(f);
+                  }),
+                  meta: resp.meta,
+                  next: resp.meta.count > skip + resp.data.length,
+                  skip: skip,
+                  bookmark: nextBookmark || undefined,
+                  execution_stats: resp.meta.execution_stats
+                });
 
-/***/ }),
-/* 541 */
-/***/ (function(module, exports) {
+              case 16:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2, this, [[2, 9]]);
+      }));
 
-/**
- * The base implementation of `_.clamp` which doesn't coerce arguments.
- *
- * @private
- * @param {number} number The number to clamp.
- * @param {number} [lower] The lower bound.
- * @param {number} upper The upper bound.
- * @returns {number} Returns the clamped number.
- */
-function baseClamp(number, lower, upper) {
-  if (number === number) {
-    if (upper !== undefined) {
-      number = number <= upper ? number : upper;
-    }
-    if (lower !== undefined) {
-      number = number >= lower ? number : lower;
-    }
-  }
-  return number;
-}
+      function find(_x3) {
+        return _find.apply(this, arguments);
+      }
 
-module.exports = baseClamp;
+      return find;
+    }()
+    /**
+     * async findReferencedBy - Returns the list of files referenced by a document — see https://docs.cozy.io/en/cozy-stack/references-docs-in-vfs/
+     *
+     * @param  {object}       document          A JSON representing a document, with at least a `_type` and `_id` field.
+     * @param  {object}       options           Additional options
+     * @param  {number|null}  [options.skip]    For skip-based pagination, the number of referenced files to skip.
+     * @param  {number|null}  [options.limit]   For pagination, the number of results to return.
+     * @param  {CouchDBViewCursor|null}  [options.cursor]  For cursor-based pagination, the index cursor.
+     * @returns {Promise<{data, included, meta, skip, next}>} The JSON API conformant response.
+     */
 
+  }, {
+    key: "findReferencedBy",
+    value: function () {
+      var _findReferencedBy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(document) {
+        var _ref3,
+            _ref3$skip,
+            skip,
+            limit,
+            cursor,
+            params,
+            path,
+            url,
+            resp,
+            _args3 = arguments;
 
-/***/ }),
-/* 542 */
-/***/ (function(module, exports, __webpack_require__) {
+        return _regenerator.default.wrap(function _callee3$(_context3) {
+          while (1) {
+            switch (_context3.prev = _context3.next) {
+              case 0:
+                _ref3 = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {}, _ref3$skip = _ref3.skip, skip = _ref3$skip === void 0 ? 0 : _ref3$skip, limit = _ref3.limit, cursor = _ref3.cursor;
+                params = {
+                  include: 'files',
+                  'page[limit]': limit,
+                  'page[cursor]': cursor,
+                  sort: 'datetime'
+                };
+                path = (0, _utils.uri)(_templateObject(), document._type, document._id);
+                url = querystring.buildURL(path, params);
+                _context3.next = 6;
+                return this.stackClient.fetchJSON('GET', url);
 
-var toFinite = __webpack_require__(543);
+              case 6:
+                resp = _context3.sent;
+                return _context3.abrupt("return", {
+                  data: normalizeReferences(resp.data),
+                  included: resp.included ? resp.included.map(function (f) {
+                    return normalizeFile(f);
+                  }) : [],
+                  next: (0, _has.default)(resp, 'links.next'),
+                  meta: resp.meta,
+                  skip: skip
+                });
 
-/**
- * Converts `value` to an integer.
- *
- * **Note:** This method is loosely based on
- * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.toInteger(3.2);
- * // => 3
- *
- * _.toInteger(Number.MIN_VALUE);
- * // => 0
- *
- * _.toInteger(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toInteger('3.2');
- * // => 3
- */
-function toInteger(value) {
-  var result = toFinite(value),
-      remainder = result % 1;
+              case 8:
+              case "end":
+                return _context3.stop();
+            }
+          }
+        }, _callee3, this);
+      }));
 
-  return result === result ? (remainder ? result - remainder : result) : 0;
-}
+      function findReferencedBy(_x4) {
+        return _findReferencedBy.apply(this, arguments);
+      }
 
-module.exports = toInteger;
+      return findReferencedBy;
+    }()
+    /**
+     *  Add referenced_by documents to a file — see https://docs.cozy.io/en/cozy-stack/references-docs-in-vfs/#post-filesfile-idrelationshipsreferenced_by
+     *
+     *  For example, to have an album referenced by a file:
+     * ```
+     * addReferencedBy({_id: 123, _type: "io.cozy.files", name: "cozy.jpg"}, [{_id: 456, _type: "io.cozy.photos.albums", name: "Happy Cloud"}])
+     * ```
+     *
+     * @param  {FileDocument} document  A JSON representing the file
+     * @param  {Array}  documents       An array of JSON documents having a `_type` and `_id` field.
+     * @returns {Promise<{data, meta}>}          The JSON API conformant response.
+     */
 
+  }, {
+    key: "addReferencedBy",
+    value: function () {
+      var _addReferencedBy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(document, documents) {
+        var refs, resp;
+        return _regenerator.default.wrap(function _callee4$(_context4) {
+          while (1) {
+            switch (_context4.prev = _context4.next) {
+              case 0:
+                refs = documents.map(function (d) {
+                  return {
+                    id: d._id,
+                    type: d._type
+                  };
+                });
+                _context4.next = 3;
+                return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject2(), document._id), {
+                  data: refs
+                });
 
-/***/ }),
-/* 543 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 3:
+                resp = _context4.sent;
+                return _context4.abrupt("return", {
+                  data: normalizeReferences(resp.data),
+                  meta: resp.meta
+                });
 
-var toNumber = __webpack_require__(544);
+              case 5:
+              case "end":
+                return _context4.stop();
+            }
+          }
+        }, _callee4, this);
+      }));
 
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0,
-    MAX_INTEGER = 1.7976931348623157e+308;
+      function addReferencedBy(_x5, _x6) {
+        return _addReferencedBy.apply(this, arguments);
+      }
 
-/**
- * Converts `value` to a finite number.
- *
- * @static
- * @memberOf _
- * @since 4.12.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted number.
- * @example
- *
- * _.toFinite(3.2);
- * // => 3.2
- *
- * _.toFinite(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toFinite(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toFinite('3.2');
- * // => 3.2
- */
-function toFinite(value) {
-  if (!value) {
-    return value === 0 ? value : 0;
-  }
-  value = toNumber(value);
-  if (value === INFINITY || value === -INFINITY) {
-    var sign = (value < 0 ? -1 : 1);
-    return sign * MAX_INTEGER;
-  }
-  return value === value ? value : 0;
-}
+      return addReferencedBy;
+    }()
+    /**
+     *  Remove referenced_by documents from a file — see https://docs.cozy.io/en/cozy-stack/references-docs-in-vfs/#delete-filesfile-idrelationshipsreferenced_by
+     *
+     *  For example, to remove an album reference from a file:
+     * ```
+     *  removeReferencedBy({_id: 123, _type: "io.cozy.files", name: "cozy.jpg"}, [{_id: 456, _type: "io.cozy.photos.albums", name: "Happy Cloud"}])
+     * ```
+     *
+     * @param  {object} document        A JSON representing the file
+     * @param  {Array}  documents       An array of JSON documents having a `_type` and `_id` field.
+     * @returns {Promise<{data, meta}>}          The JSON API conformant response.
+     */
 
-module.exports = toFinite;
+  }, {
+    key: "removeReferencedBy",
+    value: function () {
+      var _removeReferencedBy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(document, documents) {
+        var refs, resp;
+        return _regenerator.default.wrap(function _callee5$(_context5) {
+          while (1) {
+            switch (_context5.prev = _context5.next) {
+              case 0:
+                refs = documents.map(function (d) {
+                  return {
+                    id: d._id || d.id,
+                    type: d._type || d.type
+                  };
+                });
+                _context5.next = 3;
+                return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject3(), document._id || document.id), {
+                  data: refs
+                });
 
+              case 3:
+                resp = _context5.sent;
+                return _context5.abrupt("return", {
+                  data: normalizeReferences(resp.data),
+                  meta: resp.meta
+                });
 
-/***/ }),
-/* 544 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 5:
+              case "end":
+                return _context5.stop();
+            }
+          }
+        }, _callee5, this);
+      }));
 
-var baseTrim = __webpack_require__(545),
-    isObject = __webpack_require__(310),
-    isSymbol = __webpack_require__(403);
+      function removeReferencedBy(_x7, _x8) {
+        return _removeReferencedBy.apply(this, arguments);
+      }
 
-/** Used as references for various `Number` constants. */
-var NAN = 0 / 0;
+      return removeReferencedBy;
+    }()
+    /**
+     *  Add files references to a document — see https://docs.cozy.io/en/cozy-stack/references-docs-in-vfs/#post-datatypedoc-idrelationshipsreferences
+     *
+     *  For example, to add a photo to an album:
+     * ```
+     *  addReferencesTo({_id: 456, _type: "io.cozy.photos.albums", name: "Happy Cloud"}, [{_id: 123, _type: "io.cozy.files", name: "cozy.jpg"}])
+     * ```
+     *
+     * @param  {object} document        A JSON representing a document, with at least a `_type` and `_id` field.
+     * @param  {Array}  documents       An array of JSON files having an `_id` field.
+     *
+     * Returns 204 No Content
+     */
 
-/** Used to detect bad signed hexadecimal string values. */
-var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
+  }, {
+    key: "addReferencesTo",
+    value: function () {
+      var _addReferencesTo = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(document, documents) {
+        var refs;
+        return _regenerator.default.wrap(function _callee6$(_context6) {
+          while (1) {
+            switch (_context6.prev = _context6.next) {
+              case 0:
+                refs = documents.map(function (d) {
+                  return {
+                    id: d._id,
+                    type: 'io.cozy.files'
+                  };
+                });
+                return _context6.abrupt("return", this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject4(), document._type, document._id), {
+                  data: refs
+                }));
 
-/** Used to detect binary string values. */
-var reIsBinary = /^0b[01]+$/i;
+              case 2:
+              case "end":
+                return _context6.stop();
+            }
+          }
+        }, _callee6, this);
+      }));
 
-/** Used to detect octal string values. */
-var reIsOctal = /^0o[0-7]+$/i;
+      function addReferencesTo(_x9, _x10) {
+        return _addReferencesTo.apply(this, arguments);
+      }
 
-/** Built-in method references without a dependency on `root`. */
-var freeParseInt = parseInt;
+      return addReferencesTo;
+    }()
+    /**
+     *  Remove files references to a document — see https://docs.cozy.io/en/cozy-stack/references-docs-in-vfs/#delete-datatypedoc-idrelationshipsreferences
+     *
+     *  For example, to remove a photo from an album:
+     * ```
+     *  removeReferencesTo({_id: 456, _type: "io.cozy.photos.albums", name: "Happy Cloud"}, [{_id: 123, _type: "io.cozy.files", name: "cozy.jpg"}])
+     * ```
+     *
+     * @param  {object} document        A JSON representing a document, with at least a `_type` and `_id` field.
+     * @param  {Array}  documents       An array of JSON files having an `_id` field.
+     *
+     * Returns 204 No Content
+     */
 
-/**
- * Converts `value` to a number.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to process.
- * @returns {number} Returns the number.
- * @example
- *
- * _.toNumber(3.2);
- * // => 3.2
- *
- * _.toNumber(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toNumber(Infinity);
- * // => Infinity
- *
- * _.toNumber('3.2');
- * // => 3.2
- */
-function toNumber(value) {
-  if (typeof value == 'number') {
-    return value;
-  }
-  if (isSymbol(value)) {
-    return NAN;
-  }
-  if (isObject(value)) {
-    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
-    value = isObject(other) ? (other + '') : other;
-  }
-  if (typeof value != 'string') {
-    return value === 0 ? value : +value;
-  }
-  value = baseTrim(value);
-  var isBinary = reIsBinary.test(value);
-  return (isBinary || reIsOctal.test(value))
-    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
-    : (reIsBadHex.test(value) ? NAN : +value);
-}
+  }, {
+    key: "removeReferencesTo",
+    value: function () {
+      var _removeReferencesTo = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(document, documents) {
+        var refs;
+        return _regenerator.default.wrap(function _callee7$(_context7) {
+          while (1) {
+            switch (_context7.prev = _context7.next) {
+              case 0:
+                refs = documents.map(function (d) {
+                  return {
+                    id: d._id,
+                    type: 'io.cozy.files'
+                  };
+                });
+                return _context7.abrupt("return", this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject5(), document._type, document._id), {
+                  data: refs
+                }));
 
-module.exports = toNumber;
+              case 2:
+              case "end":
+                return _context7.stop();
+            }
+          }
+        }, _callee7, this);
+      }));
 
+      function removeReferencesTo(_x11, _x12) {
+        return _removeReferencesTo.apply(this, arguments);
+      }
 
-/***/ }),
-/* 545 */
-/***/ (function(module, exports, __webpack_require__) {
+      return removeReferencesTo;
+    }()
+    /**
+     * Sends file to trash and removes references to it
+     *
+     * @param  {FileDocument} file - File that will be sent to trash
+     * @returns {Promise} - Resolves when references have been removed
+     * and file has been sent to trash
+     */
 
-var trimmedEndIndex = __webpack_require__(546);
+  }, {
+    key: "destroy",
+    value: function () {
+      var _destroy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(file) {
+        var _ref4,
+            _ref4$ifMatch,
+            ifMatch,
+            _id,
+            relationships,
+            resp,
+            references,
+            _args8 = arguments;
 
-/** Used to match leading whitespace. */
-var reTrimStart = /^\s+/;
+        return _regenerator.default.wrap(function _callee8$(_context8) {
+          while (1) {
+            switch (_context8.prev = _context8.next) {
+              case 0:
+                _ref4 = _args8.length > 1 && _args8[1] !== undefined ? _args8[1] : {}, _ref4$ifMatch = _ref4.ifMatch, ifMatch = _ref4$ifMatch === void 0 ? '' : _ref4$ifMatch;
+                _id = file._id, relationships = file.relationships;
+                _context8.next = 4;
+                return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject6(), _id), undefined, {
+                  headers: {
+                    'If-Match': ifMatch
+                  }
+                });
 
-/**
- * The base implementation of `_.trim`.
- *
- * @private
- * @param {string} string The string to trim.
- * @returns {string} Returns the trimmed string.
- */
-function baseTrim(string) {
-  return string
-    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')
-    : string;
-}
+              case 4:
+                resp = _context8.sent;
+                // needed because we had a bug in cozy-stack https://github.com/cozy/cozy-stack/pull/3566
+                // to remove once the code is deployed everywhere
+                references = (0, _get.default)(relationships, 'referenced_by.data', file.referenced_by);
 
-module.exports = baseTrim;
+                if (!Array.isArray(references)) {
+                  _context8.next = 9;
+                  break;
+                }
 
+                _context8.next = 9;
+                return this.removeReferencedBy(file, references);
 
-/***/ }),
-/* 546 */
-/***/ (function(module, exports) {
+              case 9:
+                return _context8.abrupt("return", {
+                  data: normalizeFile(resp.data)
+                });
 
-/** Used to match a single whitespace character. */
-var reWhitespace = /\s/;
+              case 10:
+              case "end":
+                return _context8.stop();
+            }
+          }
+        }, _callee8, this);
+      }));
 
-/**
- * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace
- * character of `string`.
- *
- * @private
- * @param {string} string The string to inspect.
- * @returns {number} Returns the index of the last non-whitespace character.
- */
-function trimmedEndIndex(string) {
-  var index = string.length;
+      function destroy(_x13) {
+        return _destroy.apply(this, arguments);
+      }
 
-  while (index-- && reWhitespace.test(string.charAt(index))) {}
-  return index;
-}
+      return destroy;
+    }()
+    /**
+     * Empty the Trash
+     */
 
-module.exports = trimmedEndIndex;
+  }, {
+    key: "emptyTrash",
+    value: function emptyTrash() {
+      return this.stackClient.fetchJSON('DELETE', '/files/trash');
+    }
+    /**
+     * Restores a trashed file.
+     *
+     * @param {string} id   - The file's id
+     * @returns {Promise}   - A promise that returns the restored file if resolved.
+     * @throws {FetchError}
+     *
+     */
 
+  }, {
+    key: "restore",
+    value: function restore(id) {
+      return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject7(), id));
+    }
+    /**
+     * Copy a file.
+     *
+     * @param {string} id   - The file's id
+     * @param {string} [name]   - The file copy name
+     * @param {string} [dirId]   - The destination directory id
+     * @returns {Promise<object>}   - A promise that returns the copied file if resolved.
+     * @throws {FetchError}
+     *
+     */
 
-/***/ }),
-/* 547 */
-/***/ (function(module, exports, __webpack_require__) {
+  }, {
+    key: "copy",
+    value: function () {
+      var _copy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(id, name, dirId) {
+        var params, path, url, resp;
+        return _regenerator.default.wrap(function _callee9$(_context9) {
+          while (1) {
+            switch (_context9.prev = _context9.next) {
+              case 0:
+                params = {
+                  name: name === undefined ? undefined : sanitizeAndValidateFileName(name),
+                  dirId: dirId
+                };
+                path = (0, _utils.uri)(_templateObject8(), id);
+                url = querystring.buildURL(path, params);
+                _context9.next = 5;
+                return this.stackClient.fetchJSON('POST', url);
 
-"use strict";
+              case 5:
+                resp = _context9.sent;
+                return _context9.abrupt("return", {
+                  data: normalizeFile(resp.data)
+                });
 
+              case 7:
+              case "end":
+                return _context9.stop();
+            }
+          }
+        }, _callee9, this);
+      }));
 
-var stringify = __webpack_require__(548);
-var parse = __webpack_require__(575);
-var formats = __webpack_require__(574);
+      function copy(_x14, _x15, _x16) {
+        return _copy.apply(this, arguments);
+      }
 
-module.exports = {
-    formats: formats,
-    parse: parse,
-    stringify: stringify
-};
+      return copy;
+    }()
+    /**
+     * async deleteFilePermanently - Definitely delete a file
+     *
+     * @param  {string} id - The id of the file to delete
+     * @returns {Promise<object>} The deleted file object
+     */
 
+  }, {
+    key: "deleteFilePermanently",
+    value: function () {
+      var _deleteFilePermanently = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(id) {
+        var resp;
+        return _regenerator.default.wrap(function _callee10$(_context10) {
+          while (1) {
+            switch (_context10.prev = _context10.next) {
+              case 0:
+                _context10.next = 2;
+                return this.stackClient.fetchJSON('PATCH', (0, _utils.uri)(_templateObject9(), id), {
+                  data: {
+                    type: 'io.cozy.files',
+                    id: id,
+                    attributes: {
+                      permanent_delete: true
+                    }
+                  }
+                });
 
-/***/ }),
-/* 548 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 2:
+                resp = _context10.sent;
+                return _context10.abrupt("return", resp.data);
 
-"use strict";
+              case 4:
+              case "end":
+                return _context10.stop();
+            }
+          }
+        }, _callee10, this);
+      }));
 
+      function deleteFilePermanently(_x17) {
+        return _deleteFilePermanently.apply(this, arguments);
+      }
 
-var getSideChannel = __webpack_require__(549);
-var utils = __webpack_require__(573);
-var formats = __webpack_require__(574);
-var has = Object.prototype.hasOwnProperty;
+      return deleteFilePermanently;
+    }()
+    /**
+     * @param {File|Blob|Stream|string|ArrayBuffer} data file to be uploaded
+     * @param {string} dirPath Path to upload the file to. ie : /Administative/XXX/
+     * @returns {Promise<object>} Created io.cozy.files
+     */
 
-var arrayPrefixGenerators = {
-    brackets: function brackets(prefix) {
-        return prefix + '[]';
-    },
-    comma: 'comma',
-    indices: function indices(prefix, key) {
-        return prefix + '[' + key + ']';
-    },
-    repeat: function repeat(prefix) {
-        return prefix;
-    }
-};
+  }, {
+    key: "upload",
+    value: function () {
+      var _upload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(data, dirPath) {
+        var dirId;
+        return _regenerator.default.wrap(function _callee11$(_context11) {
+          while (1) {
+            switch (_context11.prev = _context11.next) {
+              case 0:
+                _context11.next = 2;
+                return this.ensureDirectoryExists(dirPath);
 
-var isArray = Array.isArray;
-var split = String.prototype.split;
-var push = Array.prototype.push;
-var pushToArray = function (arr, valueOrArray) {
-    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);
-};
+              case 2:
+                dirId = _context11.sent;
+                return _context11.abrupt("return", this.createFile(data, {
+                  dirId: dirId
+                }));
 
-var toISO = Date.prototype.toISOString;
+              case 4:
+              case "end":
+                return _context11.stop();
+            }
+          }
+        }, _callee11, this);
+      }));
 
-var defaultFormat = formats['default'];
-var defaults = {
-    addQueryPrefix: false,
-    allowDots: false,
-    charset: 'utf-8',
-    charsetSentinel: false,
-    delimiter: '&',
-    encode: true,
-    encoder: utils.encode,
-    encodeValuesOnly: false,
-    format: defaultFormat,
-    formatter: formats.formatters[defaultFormat],
-    // deprecated
-    indices: false,
-    serializeDate: function serializeDate(date) {
-        return toISO.call(date);
-    },
-    skipNulls: false,
-    strictNullHandling: false
-};
+      function upload(_x18, _x19) {
+        return _upload.apply(this, arguments);
+      }
 
-var isNonNullishPrimitive = function isNonNullishPrimitive(v) {
-    return typeof v === 'string'
-        || typeof v === 'number'
-        || typeof v === 'boolean'
-        || typeof v === 'symbol'
-        || typeof v === 'bigint';
-};
+      return upload;
+    }()
+    /**
+     * Creates directory or file.
+     * - Used by StackLink to support CozyClient.create('io.cozy.files', options)
+     *
+     * @param {FileAttributes|DirectoryAttributes} attributes - Attributes of the created file/directory
+     * @param {File|Blob|string|ArrayBuffer} attributes.data Will be used as content of the created file
+     * @throws {Error} - explaining reason why creation failed
+     */
 
-var sentinel = {};
+  }, {
+    key: "create",
+    value: function () {
+      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(attributes) {
+        var data, createFileOptions;
+        return _regenerator.default.wrap(function _callee12$(_context12) {
+          while (1) {
+            switch (_context12.prev = _context12.next) {
+              case 0:
+                if (!(attributes.type === 'directory')) {
+                  _context12.next = 4;
+                  break;
+                }
 
-var stringify = function stringify(
-    object,
-    prefix,
-    generateArrayPrefix,
-    commaRoundTrip,
-    strictNullHandling,
-    skipNulls,
-    encoder,
-    filter,
-    sort,
-    allowDots,
-    serializeDate,
-    format,
-    formatter,
-    encodeValuesOnly,
-    charset,
-    sideChannel
-) {
-    var obj = object;
+                return _context12.abrupt("return", this.createDirectory(attributes));
 
-    var tmpSc = sideChannel;
-    var step = 0;
-    var findFlag = false;
-    while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {
-        // Where object last appeared in the ref tree
-        var pos = tmpSc.get(object);
-        step += 1;
-        if (typeof pos !== 'undefined') {
-            if (pos === step) {
-                throw new RangeError('Cyclic object value');
-            } else {
-                findFlag = true; // Break while
-            }
-        }
-        if (typeof tmpSc.get(sentinel) === 'undefined') {
-            step = 0;
-        }
-    }
+              case 4:
+                data = attributes.data, createFileOptions = (0, _objectWithoutProperties2.default)(attributes, ["data"]);
+                return _context12.abrupt("return", this.createFile(data, createFileOptions));
 
-    if (typeof filter === 'function') {
-        obj = filter(prefix, obj);
-    } else if (obj instanceof Date) {
-        obj = serializeDate(obj);
-    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {
-        obj = utils.maybeMap(obj, function (value) {
-            if (value instanceof Date) {
-                return serializeDate(value);
+              case 6:
+              case "end":
+                return _context12.stop();
             }
-            return value;
-        });
-    }
+          }
+        }, _callee12, this);
+      }));
 
-    if (obj === null) {
-        if (strictNullHandling) {
-            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;
-        }
+      function create(_x20) {
+        return _create.apply(this, arguments);
+      }
 
-        obj = '';
-    }
+      return create;
+    }()
+    /***
+     * Updates an existing file or directory
+     *
+     * Used by StackLink to support CozyClient.save({file}).
+     * Update the binary file if a `data` param is passed. Only updates
+     * attributes otherwise.
+     * @param {object} attributes
+     * @param {FileAttributes} attributes.file - The file with its new content
+     * @param {File|Blob|string|ArrayBuffer} attributes.data Will be used as content of the updated file
+     * @returns {Promise<FileAttributes>} Updated document
+     * @throws {Error} - explaining reason why update failed
+     */
 
-    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {
-        if (encoder) {
-            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);
-            if (generateArrayPrefix === 'comma' && encodeValuesOnly) {
-                var valuesArray = split.call(String(obj), ',');
-                var valuesJoined = '';
-                for (var i = 0; i < valuesArray.length; ++i) {
-                    valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));
+  }, {
+    key: "update",
+    value: function () {
+      var _update = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13(attributes) {
+        var data, updateFileOptions, fileId;
+        return _regenerator.default.wrap(function _callee13$(_context13) {
+          while (1) {
+            switch (_context13.prev = _context13.next) {
+              case 0:
+                data = attributes.data, updateFileOptions = (0, _objectWithoutProperties2.default)(attributes, ["data"]);
+                fileId = attributes.id || attributes._id;
+
+                if (!data) {
+                  _context13.next = 7;
+                  break;
                 }
-                return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];
-            }
-            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];
-        }
-        return [formatter(prefix) + '=' + formatter(String(obj))];
-    }
 
-    var values = [];
+                if (!(attributes.type === 'directory')) {
+                  _context13.next = 5;
+                  break;
+                }
 
-    if (typeof obj === 'undefined') {
-        return values;
-    }
+                throw new Error('You cannot pass a data object for a directory');
 
-    var objKeys;
-    if (generateArrayPrefix === 'comma' && isArray(obj)) {
-        // we need to join elements in
-        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];
-    } else if (isArray(filter)) {
-        objKeys = filter;
-    } else {
-        var keys = Object.keys(obj);
-        objKeys = sort ? keys.sort(sort) : keys;
-    }
+              case 5:
+                updateFileOptions.fileId = fileId;
+                return _context13.abrupt("return", this.updateFile(data, updateFileOptions));
 
-    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;
+              case 7:
+                return _context13.abrupt("return", this.updateAttributes(fileId, attributes));
 
-    for (var j = 0; j < objKeys.length; ++j) {
-        var key = objKeys[j];
-        var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];
+              case 8:
+              case "end":
+                return _context13.stop();
+            }
+          }
+        }, _callee13, this);
+      }));
 
-        if (skipNulls && value === null) {
-            continue;
-        }
+      function update(_x21) {
+        return _update.apply(this, arguments);
+      }
 
-        var keyPrefix = isArray(obj)
-            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix
-            : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');
+      return update;
+    }()
+    /**
+     * Creates a file
+     *
+     *
+     * @private
+     * @param {File|Blob|Stream|string|ArrayBuffer} data file to be uploaded
+     * @param {FileAttributes & SpecificFileAttributesForKonnector} params Additional parameters
+     * @param  {object}  params.options     Options to pass to doUpload method (additional headers)
+     * @throws {Error} - explaining reason why creation failed
+     */
 
-        sideChannel.set(object, step);
-        var valueSideChannel = getSideChannel();
-        valueSideChannel.set(sentinel, sideChannel);
-        pushToArray(values, stringify(
-            value,
-            keyPrefix,
-            generateArrayPrefix,
-            commaRoundTrip,
-            strictNullHandling,
-            skipNulls,
-            encoder,
-            filter,
-            sort,
-            allowDots,
-            serializeDate,
-            format,
-            formatter,
-            encodeValuesOnly,
-            charset,
-            valueSideChannel
-        ));
-    }
+  }, {
+    key: "createFile",
+    value: function () {
+      var _createFile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14(data) {
+        var _ref5,
+            nameOption,
+            _ref5$dirId,
+            dirId,
+            _ref5$executable,
+            executable,
+            _ref5$encrypted,
+            encrypted,
+            metadata,
+            _ref5$sourceAccount,
+            sourceAccount,
+            _ref5$sourceAccountId,
+            sourceAccountIdentifier,
+            options,
+            name,
+            metadataId,
+            meta,
+            size,
+            path,
+            _args14 = arguments;
 
-    return values;
-};
+        return _regenerator.default.wrap(function _callee14$(_context14) {
+          while (1) {
+            switch (_context14.prev = _context14.next) {
+              case 0:
+                _ref5 = _args14.length > 1 && _args14[1] !== undefined ? _args14[1] : {};
+                nameOption = _ref5.name, _ref5$dirId = _ref5.dirId, dirId = _ref5$dirId === void 0 ? '' : _ref5$dirId, _ref5$executable = _ref5.executable, executable = _ref5$executable === void 0 ? false : _ref5$executable, _ref5$encrypted = _ref5.encrypted, encrypted = _ref5$encrypted === void 0 ? false : _ref5$encrypted, metadata = _ref5.metadata, _ref5$sourceAccount = _ref5.sourceAccount, sourceAccount = _ref5$sourceAccount === void 0 ? '' : _ref5$sourceAccount, _ref5$sourceAccountId = _ref5.sourceAccountIdentifier, sourceAccountIdentifier = _ref5$sourceAccountId === void 0 ? '' : _ref5$sourceAccountId, options = (0, _objectWithoutProperties2.default)(_ref5, ["name", "dirId", "executable", "encrypted", "metadata", "sourceAccount", "sourceAccountIdentifier"]);
+                name = nameOption; // handle case where data is a file and contains the name
 
-var normalizeStringifyOptions = function normalizeStringifyOptions(opts) {
-    if (!opts) {
-        return defaults;
-    }
+                if (!name && typeof data.name === 'string') {
+                  name = data.name;
+                }
 
-    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {
-        throw new TypeError('Encoder has to be a function.');
-    }
+                name = sanitizeAndValidateFileName(name);
+                metadataId = '';
 
-    var charset = opts.charset || defaults.charset;
-    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {
-        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');
-    }
+                if (!metadata) {
+                  _context14.next = 11;
+                  break;
+                }
 
-    var format = formats['default'];
-    if (typeof opts.format !== 'undefined') {
-        if (!has.call(formats.formatters, opts.format)) {
-            throw new TypeError('Unknown format option provided.');
-        }
-        format = opts.format;
-    }
-    var formatter = formats.formatters[format];
+                _context14.next = 9;
+                return this.createFileMetadata(metadata);
 
-    var filter = defaults.filter;
-    if (typeof opts.filter === 'function' || isArray(opts.filter)) {
-        filter = opts.filter;
-    }
+              case 9:
+                meta = _context14.sent;
+                metadataId = meta.data.id;
 
-    return {
-        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,
-        allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,
-        charset: charset,
-        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,
-        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,
-        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,
-        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,
-        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,
-        filter: filter,
-        format: format,
-        formatter: formatter,
-        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,
-        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,
-        sort: typeof opts.sort === 'function' ? opts.sort : null,
-        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling
-    };
-};
+              case 11:
+                size = '';
 
-module.exports = function (object, opts) {
-    var obj = object;
-    var options = normalizeStringifyOptions(opts);
+                if (options.contentLength) {
+                  size = String(options.contentLength);
+                }
 
-    var objKeys;
-    var filter;
+                path = (0, _utils.uri)(_templateObject10(), dirId, name, executable, encrypted, metadataId, size, sourceAccount, sourceAccountIdentifier);
+                return _context14.abrupt("return", this.doUpload(data, path, options));
 
-    if (typeof options.filter === 'function') {
-        filter = options.filter;
-        obj = filter('', obj);
-    } else if (isArray(options.filter)) {
-        filter = options.filter;
-        objKeys = filter;
-    }
+              case 15:
+              case "end":
+                return _context14.stop();
+            }
+          }
+        }, _callee14, this);
+      }));
 
-    var keys = [];
+      function createFile(_x22) {
+        return _createFile.apply(this, arguments);
+      }
 
-    if (typeof obj !== 'object' || obj === null) {
-        return '';
-    }
+      return createFile;
+    }()
+    /**
+     * updateFile - Updates a file's data
+     *
+     * @param {File|Blob|Stream|string|ArrayBuffer} data file to be uploaded
+     * @param {FileAttributes} params       Additional parameters
+     * @param  {object}  params.options     Options to pass to doUpload method (additional headers)
+     * @returns {object}                    Updated document
+     * @throws {Error} - explaining reason why update failed
+     */
 
-    var arrayFormat;
-    if (opts && opts.arrayFormat in arrayPrefixGenerators) {
-        arrayFormat = opts.arrayFormat;
-    } else if (opts && 'indices' in opts) {
-        arrayFormat = opts.indices ? 'indices' : 'repeat';
-    } else {
-        arrayFormat = 'indices';
-    }
+  }, {
+    key: "updateFile",
+    value: function () {
+      var _updateFile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15(data) {
+        var _ref6,
+            _ref6$executable,
+            executable,
+            _ref6$encrypted,
+            encrypted,
+            fileId,
+            _ref6$name,
+            name,
+            metadata,
+            options,
+            fileName,
+            sanitizedName,
+            metadataId,
+            path,
+            meta,
+            size,
+            _args15 = arguments;
 
-    var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];
-    if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {
-        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');
-    }
-    var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;
+        return _regenerator.default.wrap(function _callee15$(_context15) {
+          while (1) {
+            switch (_context15.prev = _context15.next) {
+              case 0:
+                _ref6 = _args15.length > 1 && _args15[1] !== undefined ? _args15[1] : {};
+                _ref6$executable = _ref6.executable, executable = _ref6$executable === void 0 ? false : _ref6$executable, _ref6$encrypted = _ref6.encrypted, encrypted = _ref6$encrypted === void 0 ? false : _ref6$encrypted, fileId = _ref6.fileId, _ref6$name = _ref6.name, name = _ref6$name === void 0 ? '' : _ref6$name, metadata = _ref6.metadata, options = (0, _objectWithoutProperties2.default)(_ref6, ["executable", "encrypted", "fileId", "name", "metadata"]);
 
-    if (!objKeys) {
-        objKeys = Object.keys(obj);
-    }
+                if (!(!fileId || typeof fileId !== 'string')) {
+                  _context15.next = 4;
+                  break;
+                }
 
-    if (options.sort) {
-        objKeys.sort(options.sort);
-    }
+                throw new Error('missing fileId argument');
 
-    var sideChannel = getSideChannel();
-    for (var i = 0; i < objKeys.length; ++i) {
-        var key = objKeys[i];
+              case 4:
+                // name might be set in a File object
+                fileName = name || data.name;
 
-        if (options.skipNulls && obj[key] === null) {
-            continue;
-        }
-        pushToArray(keys, stringify(
-            obj[key],
-            key,
-            generateArrayPrefix,
-            commaRoundTrip,
-            options.strictNullHandling,
-            options.skipNulls,
-            options.encode ? options.encoder : null,
-            options.filter,
-            options.sort,
-            options.allowDots,
-            options.serializeDate,
-            options.format,
-            options.formatter,
-            options.encodeValuesOnly,
-            options.charset,
-            sideChannel
-        ));
-    }
+                if (!(!fileName || typeof fileName !== 'string')) {
+                  _context15.next = 7;
+                  break;
+                }
 
-    var joined = keys.join(options.delimiter);
-    var prefix = options.addQueryPrefix === true ? '?' : '';
+                throw new Error('missing name in data argument');
 
-    if (options.charsetSentinel) {
-        if (options.charset === 'iso-8859-1') {
-            // encodeURIComponent('&#10003;'), the "numeric entity" representation of a checkmark
-            prefix += 'utf8=%26%2310003%3B&';
-        } else {
-            // encodeURIComponent('✓')
-            prefix += 'utf8=%E2%9C%93&';
-        }
-    }
+              case 7:
+                sanitizedName = sanitizeAndValidateFileName(fileName);
+                /**
+                 * We already use the body to send the content of the file. So we have 2 choices :
+                 * Use an object in a query string to send the metadata
+                 * create a new header http
+                 * In both case, we have a size limitation depending of the browser.
+                 *
+                 * So we had this current workaround where we create the metadata before
+                 * (no size limit since we can use the body for that) and after we use the ID.
+                 */
 
-    return joined.length > 0 ? prefix + joined : '';
-};
+                path = (0, _utils.uri)(_templateObject11(), fileId, sanitizedName, executable, encrypted);
 
+                if (!metadata) {
+                  _context15.next = 15;
+                  break;
+                }
 
-/***/ }),
-/* 549 */
-/***/ (function(module, exports, __webpack_require__) {
+                _context15.next = 12;
+                return this.createFileMetadata(metadata);
 
-"use strict";
+              case 12:
+                meta = _context15.sent;
+                metadataId = meta.data.id;
+                path = path + "&MetadataID=".concat(metadataId);
 
+              case 15:
+                size = '';
 
-var GetIntrinsic = __webpack_require__(550);
-var callBound = __webpack_require__(564);
-var inspect = __webpack_require__(571);
+                if (options.contentLength) {
+                  size = String(options.contentLength);
+                  path = path + "&Size=".concat(size);
+                }
 
-var $TypeError = __webpack_require__(556);
-var $WeakMap = GetIntrinsic('%WeakMap%', true);
-var $Map = GetIntrinsic('%Map%', true);
+                return _context15.abrupt("return", this.doUpload(data, path, options, 'PUT'));
 
-var $weakMapGet = callBound('WeakMap.prototype.get', true);
-var $weakMapSet = callBound('WeakMap.prototype.set', true);
-var $weakMapHas = callBound('WeakMap.prototype.has', true);
-var $mapGet = callBound('Map.prototype.get', true);
-var $mapSet = callBound('Map.prototype.set', true);
-var $mapHas = callBound('Map.prototype.has', true);
+              case 18:
+              case "end":
+                return _context15.stop();
+            }
+          }
+        }, _callee15, this);
+      }));
 
-/*
-* This function traverses the list returning the node corresponding to the given key.
-*
-* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. By doing so, all the recently used nodes can be accessed relatively quickly.
-*/
-/** @type {import('.').listGetNode} */
-var listGetNode = function (list, key) { // eslint-disable-line consistent-return
-	/** @type {typeof list | NonNullable<(typeof list)['next']>} */
-	var prev = list;
-	/** @type {(typeof list)['next']} */
-	var curr;
-	for (; (curr = prev.next) !== null; prev = curr) {
-		if (curr.key === key) {
-			prev.next = curr.next;
-			// eslint-disable-next-line no-extra-parens
-			curr.next = /** @type {NonNullable<typeof list.next>} */ (list.next);
-			list.next = curr; // eslint-disable-line no-param-reassign
-			return curr;
-		}
-	}
-};
+      function updateFile(_x23) {
+        return _updateFile.apply(this, arguments);
+      }
 
-/** @type {import('.').listGet} */
-var listGet = function (objects, key) {
-	var node = listGetNode(objects, key);
-	return node && node.value;
-};
-/** @type {import('.').listSet} */
-var listSet = function (objects, key, value) {
-	var node = listGetNode(objects, key);
-	if (node) {
-		node.value = value;
-	} else {
-		// Prepend the new node to the beginning of the list
-		objects.next = /** @type {import('.').ListNode<typeof value>} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens
-			key: key,
-			next: objects.next,
-			value: value
-		});
-	}
-};
-/** @type {import('.').listHas} */
-var listHas = function (objects, key) {
-	return !!listGetNode(objects, key);
-};
+      return updateFile;
+    }()
+  }, {
+    key: "getDownloadLinkById",
+    value: function getDownloadLinkById(id, filename) {
+      return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject12(), id, encodeURIComponent(filename))).then(this.extractResponseLinkRelated);
+    }
+  }, {
+    key: "getDownloadLinkByRevision",
+    value: function getDownloadLinkByRevision(versionId, filename) {
+      return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject13(), versionId, encodeURIComponent(filename))).then(this.extractResponseLinkRelated);
+    }
+  }, {
+    key: "getDownloadLinkByPath",
+    value: function getDownloadLinkByPath(path) {
+      return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject14(), path)).then(this.extractResponseLinkRelated);
+    }
+  }, {
+    key: "download",
 
-/** @type {import('.')} */
-module.exports = function getSideChannel() {
-	/** @type {WeakMap<object, unknown>} */ var $wm;
-	/** @type {Map<object, unknown>} */ var $m;
-	/** @type {import('.').RootNode<unknown>} */ var $o;
+    /**
+     * Download a file or a specific version of the file
+     *
+     * @param {object} file io.cozy.files object
+     * @param {string} versionId Id of the io.cozy.files.version
+     * @param {string} filename The name you want for the downloaded file
+     *                            (by default the same as the file)
+     */
+    value: function () {
+      var _download = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16(file) {
+        var versionId,
+            filename,
+            href,
+            filenameToUse,
+            _args16 = arguments;
+        return _regenerator.default.wrap(function _callee16$(_context16) {
+          while (1) {
+            switch (_context16.prev = _context16.next) {
+              case 0:
+                versionId = _args16.length > 1 && _args16[1] !== undefined ? _args16[1] : null;
+                filename = _args16.length > 2 && _args16[2] !== undefined ? _args16[2] : undefined;
+                filenameToUse = filename ? filename : file.name;
+                /**
+                 * Passing a filename to forceFileDownload is not enough
+                 * for a few browsers since the stack's response header will
+                 * not contain that name. Passing the filename to
+                 * getDownloadLinkBy{Id,Revision} will ask the stack to
+                 * return this filename in its content-disposition
+                 * header response
+                 */
 
-	/** @type {import('.').Channel} */
-	var channel = {
-		assert: function (key) {
-			if (!channel.has(key)) {
-				throw new $TypeError('Side channel does not contain ' + inspect(key));
-			}
-		},
-		get: function (key) { // eslint-disable-line consistent-return
-			if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
-				if ($wm) {
-					return $weakMapGet($wm, key);
-				}
-			} else if ($Map) {
-				if ($m) {
-					return $mapGet($m, key);
-				}
-			} else {
-				if ($o) { // eslint-disable-line no-lonely-if
-					return listGet($o, key);
-				}
-			}
-		},
-		has: function (key) {
-			if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
-				if ($wm) {
-					return $weakMapHas($wm, key);
-				}
-			} else if ($Map) {
-				if ($m) {
-					return $mapHas($m, key);
-				}
-			} else {
-				if ($o) { // eslint-disable-line no-lonely-if
-					return listHas($o, key);
-				}
-			}
-			return false;
-		},
-		set: function (key, value) {
-			if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
-				if (!$wm) {
-					$wm = new $WeakMap();
-				}
-				$weakMapSet($wm, key, value);
-			} else if ($Map) {
-				if (!$m) {
-					$m = new $Map();
-				}
-				$mapSet($m, key, value);
-			} else {
-				if (!$o) {
-					// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head
-					$o = { key: {}, next: null };
-				}
-				listSet($o, key, value);
-			}
-		}
-	};
-	return channel;
-};
+                if (versionId) {
+                  _context16.next = 9;
+                  break;
+                }
 
+                _context16.next = 6;
+                return this.getDownloadLinkById(file._id, filenameToUse);
 
-/***/ }),
-/* 550 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 6:
+                href = _context16.sent;
+                _context16.next = 12;
+                break;
 
-"use strict";
+              case 9:
+                _context16.next = 11;
+                return this.getDownloadLinkByRevision(versionId, filenameToUse);
 
+              case 11:
+                href = _context16.sent;
 
-var undefined;
+              case 12:
+                this.forceFileDownload("".concat(href, "?Dl=1"), filenameToUse);
 
-var $Error = __webpack_require__(551);
-var $EvalError = __webpack_require__(552);
-var $RangeError = __webpack_require__(553);
-var $ReferenceError = __webpack_require__(554);
-var $SyntaxError = __webpack_require__(555);
-var $TypeError = __webpack_require__(556);
-var $URIError = __webpack_require__(557);
+              case 13:
+              case "end":
+                return _context16.stop();
+            }
+          }
+        }, _callee16, this);
+      }));
 
-var $Function = Function;
+      function download(_x24) {
+        return _download.apply(this, arguments);
+      }
 
-// eslint-disable-next-line consistent-return
-var getEvalledConstructor = function (expressionSyntax) {
-	try {
-		return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')();
-	} catch (e) {}
-};
+      return download;
+    }()
+  }, {
+    key: "fetchFileContent",
+    value: function () {
+      var _fetchFileContent = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17(id) {
+        return _regenerator.default.wrap(function _callee17$(_context17) {
+          while (1) {
+            switch (_context17.prev = _context17.next) {
+              case 0:
+                _logger.default.warn('FileCollection.fetchFileContent() is deprecated. Use FileCollection.fetchFileContentById() instead');
 
-var $gOPD = Object.getOwnPropertyDescriptor;
-if ($gOPD) {
-	try {
-		$gOPD({}, '');
-	} catch (e) {
-		$gOPD = null; // this is IE 8, which has a broken gOPD
-	}
-}
+                return _context17.abrupt("return", this.fetchFileContentById(id));
 
-var throwTypeError = function () {
-	throw new $TypeError();
-};
-var ThrowTypeError = $gOPD
-	? (function () {
-		try {
-			// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties
-			arguments.callee; // IE 8 does not throw here
-			return throwTypeError;
-		} catch (calleeThrows) {
-			try {
-				// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')
-				return $gOPD(arguments, 'callee').get;
-			} catch (gOPDthrows) {
-				return throwTypeError;
-			}
-		}
-	}())
-	: throwTypeError;
+              case 2:
+              case "end":
+                return _context17.stop();
+            }
+          }
+        }, _callee17, this);
+      }));
 
-var hasSymbols = __webpack_require__(558)();
-var hasProto = __webpack_require__(560)();
+      function fetchFileContent(_x25) {
+        return _fetchFileContent.apply(this, arguments);
+      }
 
-var getProto = Object.getPrototypeOf || (
-	hasProto
-		? function (x) { return x.__proto__; } // eslint-disable-line no-proto
-		: null
-);
+      return fetchFileContent;
+    }()
+    /**
+     * Fetch the binary of a file or a specific version of a file
+     * Useful for instance when you can't download the file directly
+     * (via a content-disposition attachement header) and need to store
+     * it before doing an operation.
+     *
+     * @param {string} id Id of the io.cozy.files or io.cozy.files.version
+     *
+     */
 
-var needsEval = {};
+  }, {
+    key: "fetchFileContentById",
+    value: function () {
+      var _fetchFileContentById = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18(id) {
+        return _regenerator.default.wrap(function _callee18$(_context18) {
+          while (1) {
+            switch (_context18.prev = _context18.next) {
+              case 0:
+                return _context18.abrupt("return", this.stackClient.fetch('GET', "/files/download/".concat(id)));
 
-var TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);
+              case 1:
+              case "end":
+                return _context18.stop();
+            }
+          }
+        }, _callee18, this);
+      }));
 
-var INTRINSICS = {
-	__proto__: null,
-	'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,
-	'%Array%': Array,
-	'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,
-	'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,
-	'%AsyncFromSyncIteratorPrototype%': undefined,
-	'%AsyncFunction%': needsEval,
-	'%AsyncGenerator%': needsEval,
-	'%AsyncGeneratorFunction%': needsEval,
-	'%AsyncIteratorPrototype%': needsEval,
-	'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,
-	'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,
-	'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,
-	'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,
-	'%Boolean%': Boolean,
-	'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,
-	'%Date%': Date,
-	'%decodeURI%': decodeURI,
-	'%decodeURIComponent%': decodeURIComponent,
-	'%encodeURI%': encodeURI,
-	'%encodeURIComponent%': encodeURIComponent,
-	'%Error%': $Error,
-	'%eval%': eval, // eslint-disable-line no-eval
-	'%EvalError%': $EvalError,
-	'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,
-	'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,
-	'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,
-	'%Function%': $Function,
-	'%GeneratorFunction%': needsEval,
-	'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,
-	'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,
-	'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,
-	'%isFinite%': isFinite,
-	'%isNaN%': isNaN,
-	'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,
-	'%JSON%': typeof JSON === 'object' ? JSON : undefined,
-	'%Map%': typeof Map === 'undefined' ? undefined : Map,
-	'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),
-	'%Math%': Math,
-	'%Number%': Number,
-	'%Object%': Object,
-	'%parseFloat%': parseFloat,
-	'%parseInt%': parseInt,
-	'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,
-	'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,
-	'%RangeError%': $RangeError,
-	'%ReferenceError%': $ReferenceError,
-	'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,
-	'%RegExp%': RegExp,
-	'%Set%': typeof Set === 'undefined' ? undefined : Set,
-	'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),
-	'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,
-	'%String%': String,
-	'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,
-	'%Symbol%': hasSymbols ? Symbol : undefined,
-	'%SyntaxError%': $SyntaxError,
-	'%ThrowTypeError%': ThrowTypeError,
-	'%TypedArray%': TypedArray,
-	'%TypeError%': $TypeError,
-	'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,
-	'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,
-	'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,
-	'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,
-	'%URIError%': $URIError,
-	'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,
-	'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,
-	'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet
-};
+      function fetchFileContentById(_x26) {
+        return _fetchFileContentById.apply(this, arguments);
+      }
 
-if (getProto) {
-	try {
-		null.error; // eslint-disable-line no-unused-expressions
-	} catch (e) {
-		// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229
-		var errorProto = getProto(getProto(e));
-		INTRINSICS['%Error.prototype%'] = errorProto;
-	}
-}
+      return fetchFileContentById;
+    }()
+    /**
+     * Get a beautified size for a given file
+     * 1024B => 1KB
+     * 102404500404B => 95.37 GB
+     *
+     * @param {object} file io.cozy.files object
+     * @param {number} decimal number of decimal
+     */
 
-var doEval = function doEval(name) {
-	var value;
-	if (name === '%AsyncFunction%') {
-		value = getEvalledConstructor('async function () {}');
-	} else if (name === '%GeneratorFunction%') {
-		value = getEvalledConstructor('function* () {}');
-	} else if (name === '%AsyncGeneratorFunction%') {
-		value = getEvalledConstructor('async function* () {}');
-	} else if (name === '%AsyncGenerator%') {
-		var fn = doEval('%AsyncGeneratorFunction%');
-		if (fn) {
-			value = fn.prototype;
-		}
-	} else if (name === '%AsyncIteratorPrototype%') {
-		var gen = doEval('%AsyncGenerator%');
-		if (gen && getProto) {
-			value = getProto(gen.prototype);
-		}
-	}
+  }, {
+    key: "getBeautifulSize",
+    value: function getBeautifulSize(file, decimal) {
+      return (0, _utils.formatBytes)(parseInt(file.size), decimal);
+    }
+  }, {
+    key: "downloadArchive",
+    value: function () {
+      var _downloadArchive = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19(fileIds) {
+        var notSecureFilename,
+            filename,
+            href,
+            fullpath,
+            _args19 = arguments;
+        return _regenerator.default.wrap(function _callee19$(_context19) {
+          while (1) {
+            switch (_context19.prev = _context19.next) {
+              case 0:
+                notSecureFilename = _args19.length > 1 && _args19[1] !== undefined ? _args19[1] : 'files';
+                filename = (0, _utils.slugify)(notSecureFilename);
+                _context19.next = 4;
+                return this.getArchiveLinkByIds(fileIds, filename);
 
-	INTRINSICS[name] = value;
+              case 4:
+                href = _context19.sent;
+                fullpath = this.stackClient.fullpath(href);
+                this.forceFileDownload(fullpath, filename + '.zip');
 
-	return value;
-};
+              case 7:
+              case "end":
+                return _context19.stop();
+            }
+          }
+        }, _callee19, this);
+      }));
 
-var LEGACY_ALIASES = {
-	__proto__: null,
-	'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],
-	'%ArrayPrototype%': ['Array', 'prototype'],
-	'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],
-	'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],
-	'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],
-	'%ArrayProto_values%': ['Array', 'prototype', 'values'],
-	'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],
-	'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],
-	'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],
-	'%BooleanPrototype%': ['Boolean', 'prototype'],
-	'%DataViewPrototype%': ['DataView', 'prototype'],
-	'%DatePrototype%': ['Date', 'prototype'],
-	'%ErrorPrototype%': ['Error', 'prototype'],
-	'%EvalErrorPrototype%': ['EvalError', 'prototype'],
-	'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],
-	'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],
-	'%FunctionPrototype%': ['Function', 'prototype'],
-	'%Generator%': ['GeneratorFunction', 'prototype'],
-	'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],
-	'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],
-	'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],
-	'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],
-	'%JSONParse%': ['JSON', 'parse'],
-	'%JSONStringify%': ['JSON', 'stringify'],
-	'%MapPrototype%': ['Map', 'prototype'],
-	'%NumberPrototype%': ['Number', 'prototype'],
-	'%ObjectPrototype%': ['Object', 'prototype'],
-	'%ObjProto_toString%': ['Object', 'prototype', 'toString'],
-	'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],
-	'%PromisePrototype%': ['Promise', 'prototype'],
-	'%PromiseProto_then%': ['Promise', 'prototype', 'then'],
-	'%Promise_all%': ['Promise', 'all'],
-	'%Promise_reject%': ['Promise', 'reject'],
-	'%Promise_resolve%': ['Promise', 'resolve'],
-	'%RangeErrorPrototype%': ['RangeError', 'prototype'],
-	'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],
-	'%RegExpPrototype%': ['RegExp', 'prototype'],
-	'%SetPrototype%': ['Set', 'prototype'],
-	'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],
-	'%StringPrototype%': ['String', 'prototype'],
-	'%SymbolPrototype%': ['Symbol', 'prototype'],
-	'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],
-	'%TypedArrayPrototype%': ['TypedArray', 'prototype'],
-	'%TypeErrorPrototype%': ['TypeError', 'prototype'],
-	'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],
-	'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],
-	'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],
-	'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],
-	'%URIErrorPrototype%': ['URIError', 'prototype'],
-	'%WeakMapPrototype%': ['WeakMap', 'prototype'],
-	'%WeakSetPrototype%': ['WeakSet', 'prototype']
-};
+      function downloadArchive(_x27) {
+        return _downloadArchive.apply(this, arguments);
+      }
 
-var bind = __webpack_require__(561);
-var hasOwn = __webpack_require__(563);
-var $concat = bind.call(Function.call, Array.prototype.concat);
-var $spliceApply = bind.call(Function.apply, Array.prototype.splice);
-var $replace = bind.call(Function.call, String.prototype.replace);
-var $strSlice = bind.call(Function.call, String.prototype.slice);
-var $exec = bind.call(Function.call, RegExp.prototype.exec);
+      return downloadArchive;
+    }()
+  }, {
+    key: "getArchiveLinkByIds",
+    value: function () {
+      var _getArchiveLinkByIds = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee20(ids) {
+        var name,
+            resp,
+            _args20 = arguments;
+        return _regenerator.default.wrap(function _callee20$(_context20) {
+          while (1) {
+            switch (_context20.prev = _context20.next) {
+              case 0:
+                name = _args20.length > 1 && _args20[1] !== undefined ? _args20[1] : 'files';
+                _context20.next = 3;
+                return this.stackClient.fetchJSON('POST', '/files/archive', {
+                  data: {
+                    type: 'io.cozy.archives',
+                    attributes: {
+                      name: name,
+                      ids: ids
+                    }
+                  }
+                });
 
-/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */
-var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g;
-var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */
-var stringToPath = function stringToPath(string) {
-	var first = $strSlice(string, 0, 1);
-	var last = $strSlice(string, -1);
-	if (first === '%' && last !== '%') {
-		throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`');
-	} else if (last === '%' && first !== '%') {
-		throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`');
-	}
-	var result = [];
-	$replace(string, rePropName, function (match, number, quote, subString) {
-		result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;
-	});
-	return result;
-};
-/* end adaptation */
+              case 3:
+                resp = _context20.sent;
+                return _context20.abrupt("return", resp.links.related);
 
-var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {
-	var intrinsicName = name;
-	var alias;
-	if (hasOwn(LEGACY_ALIASES, intrinsicName)) {
-		alias = LEGACY_ALIASES[intrinsicName];
-		intrinsicName = '%' + alias[0] + '%';
-	}
+              case 5:
+              case "end":
+                return _context20.stop();
+            }
+          }
+        }, _callee20, this);
+      }));
 
-	if (hasOwn(INTRINSICS, intrinsicName)) {
-		var value = INTRINSICS[intrinsicName];
-		if (value === needsEval) {
-			value = doEval(intrinsicName);
-		}
-		if (typeof value === 'undefined' && !allowMissing) {
-			throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');
-		}
+      function getArchiveLinkByIds(_x28) {
+        return _getArchiveLinkByIds.apply(this, arguments);
+      }
 
-		return {
-			alias: alias,
-			name: intrinsicName,
-			value: value
-		};
-	}
+      return getArchiveLinkByIds;
+    }()
+    /**
+     * Checks if the file belongs to the parent's hierarchy.
+     *
+     * @param  {string|object}  child    The file which can either be an id or an object
+     * @param  {string|object}  parent   The parent target which can either be an id or an object
+     * @returns {boolean}                 Whether the file is a parent's child
+     */
 
-	throw new $SyntaxError('intrinsic ' + name + ' does not exist!');
-};
+  }, {
+    key: "isChildOf",
+    value: function () {
+      var _isChildOf = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee21(child, parent) {
+        var _this2 = this;
 
-module.exports = function GetIntrinsic(name, allowMissing) {
-	if (typeof name !== 'string' || name.length === 0) {
-		throw new $TypeError('intrinsic name must be a non-empty string');
-	}
-	if (arguments.length > 1 && typeof allowMissing !== 'boolean') {
-		throw new $TypeError('"allowMissing" argument must be a boolean');
-	}
+        var _ref7, childID, childDirID, childPath, _ref8, parentID, childDoc, currPath, targetsPath, newPath;
 
-	if ($exec(/^%?[^%]*%?$/, name) === null) {
-		throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');
-	}
-	var parts = stringToPath(name);
-	var intrinsicBaseName = parts.length > 0 ? parts[0] : '';
+        return _regenerator.default.wrap(function _callee21$(_context21) {
+          while (1) {
+            switch (_context21.prev = _context21.next) {
+              case 0:
+                _ref7 = typeof child === 'object' ? child : {
+                  _id: child
+                }, childID = _ref7._id, childDirID = _ref7.dirID, childPath = _ref7.path;
+                _ref8 = typeof parent === 'object' ? parent : {
+                  _id: parent
+                }, parentID = _ref8._id;
 
-	var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);
-	var intrinsicRealName = intrinsic.name;
-	var value = intrinsic.value;
-	var skipFurtherCaching = false;
+                if (!(childID === parentID || childDirID === parentID)) {
+                  _context21.next = 4;
+                  break;
+                }
 
-	var alias = intrinsic.alias;
-	if (alias) {
-		intrinsicBaseName = alias[0];
-		$spliceApply(parts, $concat([0, 1], alias));
-	}
+                return _context21.abrupt("return", true);
 
-	for (var i = 1, isOwn = true; i < parts.length; i += 1) {
-		var part = parts[i];
-		var first = $strSlice(part, 0, 1);
-		var last = $strSlice(part, -1);
-		if (
-			(
-				(first === '"' || first === "'" || first === '`')
-				|| (last === '"' || last === "'" || last === '`')
-			)
-			&& first !== last
-		) {
-			throw new $SyntaxError('property names with quotes must have matching quotes');
-		}
-		if (part === 'constructor' || !isOwn) {
-			skipFurtherCaching = true;
-		}
+              case 4:
+                if (childPath) {
+                  _context21.next = 10;
+                  break;
+                }
 
-		intrinsicBaseName += '.' + part;
-		intrinsicRealName = '%' + intrinsicBaseName + '%';
+                _context21.next = 7;
+                return this.statById(childID);
 
-		if (hasOwn(INTRINSICS, intrinsicRealName)) {
-			value = INTRINSICS[intrinsicRealName];
-		} else if (value != null) {
-			if (!(part in value)) {
-				if (!allowMissing) {
-					throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');
-				}
-				return void undefined;
-			}
-			if ($gOPD && (i + 1) >= parts.length) {
-				var desc = $gOPD(value, part);
-				isOwn = !!desc;
+              case 7:
+                childDoc = _context21.sent;
+                childPath = childDoc.data.path;
+                childDirID = childDoc.data.dirID;
 
-				// By convention, when a data property is converted to an accessor
-				// property to emulate a data property that does not suffer from
-				// the override mistake, that accessor's getter is marked with
-				// an `originalValue` property. Here, when we detect this, we
-				// uphold the illusion by pretending to see that original data
-				// property, i.e., returning the value rather than the getter
-				// itself.
-				if (isOwn && 'get' in desc && !('originalValue' in desc.get)) {
-					value = desc.get;
-				} else {
-					value = value[part];
-				}
-			} else {
-				isOwn = hasOwn(value, part);
-				value = value[part];
-			}
+              case 10:
+                // Build hierarchy paths
+                currPath = childPath;
+                targetsPath = [childPath];
 
-			if (isOwn && !skipFurtherCaching) {
-				INTRINSICS[intrinsicRealName] = value;
-			}
-		}
-	}
-	return value;
-};
+                while (currPath != '') {
+                  newPath = dirName(currPath);
 
+                  if (newPath != '') {
+                    targetsPath.push(newPath);
+                  }
 
-/***/ }),
-/* 551 */
-/***/ (function(module, exports, __webpack_require__) {
+                  currPath = newPath;
+                }
 
-"use strict";
+                targetsPath.reverse(); // Look for all hierarchy in parallel and return true as soon as a dir is the searched parent
 
+                return _context21.abrupt("return", raceWithCondition(targetsPath.map(function (path) {
+                  return _this2.statByPath(path);
+                }), function (stat) {
+                  return stat.data._id == parentID;
+                }));
 
-/** @type {import('.')} */
-module.exports = Error;
+              case 15:
+              case "end":
+                return _context21.stop();
+            }
+          }
+        }, _callee21, this);
+      }));
 
+      function isChildOf(_x29, _x30) {
+        return _isChildOf.apply(this, arguments);
+      }
 
-/***/ }),
-/* 552 */
-/***/ (function(module, exports, __webpack_require__) {
+      return isChildOf;
+    }()
+    /**
+     * statById - Fetches the metadata about a document. For folders, the results include the list of child files and folders.
+     *
+     * @param {string}      id                      ID of the document
+     * @param {object|null} options                 Pagination options
+     * @param {number|null} [options.page[limit]]   For pagination, the number of results to return.
+     * @param {number|null} [options.page[skip]]    For skip-based pagination, the number of referenced files to skip.
+     * @param {CouchDBViewCursor|null} [options.page[cursor]]  For cursor-based pagination, the index cursor.
+     *
+     * @returns {object} A promise resolving to an object containing "data" (the document metadata), "included" (the child documents) and "links" (pagination informations)
+     */
 
-"use strict";
+  }, {
+    key: "statById",
+    value: function () {
+      var _statById = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee22(id) {
+        var options,
+            params,
+            path,
+            url,
+            resp,
+            _args22 = arguments;
+        return _regenerator.default.wrap(function _callee22$(_context22) {
+          while (1) {
+            switch (_context22.prev = _context22.next) {
+              case 0:
+                options = _args22.length > 1 && _args22[1] !== undefined ? _args22[1] : {};
+                params = (0, _pick.default)(options, ['page[limit]', 'page[skip]', 'page[cursor]']);
+                path = (0, _utils.uri)(_templateObject15(), id);
+                url = querystring.buildURL(path, params);
+                _context22.next = 6;
+                return this.stackClient.fetchJSON('GET', url);
 
+              case 6:
+                resp = _context22.sent;
+                return _context22.abrupt("return", {
+                  data: normalizeFile(resp.data),
+                  included: resp.included && resp.included.map(function (f) {
+                    return normalizeFile(f);
+                  }),
+                  links: resp.links
+                });
 
-/** @type {import('./eval')} */
-module.exports = EvalError;
+              case 8:
+              case "end":
+                return _context22.stop();
+            }
+          }
+        }, _callee22, this);
+      }));
 
+      function statById(_x31) {
+        return _statById.apply(this, arguments);
+      }
 
-/***/ }),
-/* 553 */
-/***/ (function(module, exports, __webpack_require__) {
+      return statById;
+    }()
+  }, {
+    key: "statByPath",
+    value: function () {
+      var _statByPath = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee23(path) {
+        var resp;
+        return _regenerator.default.wrap(function _callee23$(_context23) {
+          while (1) {
+            switch (_context23.prev = _context23.next) {
+              case 0:
+                _context23.next = 2;
+                return this.stackClient.fetchJSON('GET', (0, _utils.uri)(_templateObject16(), path));
 
-"use strict";
+              case 2:
+                resp = _context23.sent;
+                return _context23.abrupt("return", {
+                  data: normalizeFile(resp.data),
+                  included: resp.included && resp.included.map(function (f) {
+                    return normalizeFile(f);
+                  })
+                });
 
+              case 4:
+              case "end":
+                return _context23.stop();
+            }
+          }
+        }, _callee23, this);
+      }));
 
-/** @type {import('./range')} */
-module.exports = RangeError;
+      function statByPath(_x32) {
+        return _statByPath.apply(this, arguments);
+      }
 
+      return statByPath;
+    }()
+    /**
+     * Create directory
+     *
+     * @private
+     * @param  {DirectoryAttributes} attributes - Attributes of the directory
+     * @returns {Promise}
+     * @throws {Error} - explaining reason why creation failed
+     */
 
-/***/ }),
-/* 554 */
-/***/ (function(module, exports, __webpack_require__) {
+  }, {
+    key: "createDirectory",
+    value: function () {
+      var _createDirectory = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24() {
+        var attributes,
+            name,
+            dirId,
+            lastModifiedDate,
+            metadata,
+            metadataId,
+            meta,
+            safeName,
+            lastModified,
+            resp,
+            _args24 = arguments;
+        return _regenerator.default.wrap(function _callee24$(_context24) {
+          while (1) {
+            switch (_context24.prev = _context24.next) {
+              case 0:
+                attributes = _args24.length > 0 && _args24[0] !== undefined ? _args24[0] : {};
+                name = attributes.name, dirId = attributes.dirId, lastModifiedDate = attributes.lastModifiedDate, metadata = attributes.metadata;
+                metadataId = '';
 
-"use strict";
+                if (!metadata) {
+                  _context24.next = 8;
+                  break;
+                }
 
+                _context24.next = 6;
+                return this.createFileMetadata(metadata);
 
-/** @type {import('./ref')} */
-module.exports = ReferenceError;
+              case 6:
+                meta = _context24.sent;
+                metadataId = meta.data.id;
 
+              case 8:
+                safeName = sanitizeAndValidateFileName(name);
+                lastModified = lastModifiedDate && (typeof lastModifiedDate === 'string' ? new Date(lastModifiedDate) : lastModifiedDate);
+                _context24.next = 12;
+                return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject17(), dirId, safeName, metadataId), undefined, {
+                  headers: {
+                    Date: lastModified ? lastModified.toGMTString() : ''
+                  }
+                });
 
-/***/ }),
-/* 555 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 12:
+                resp = _context24.sent;
+                return _context24.abrupt("return", {
+                  data: normalizeFile(resp.data)
+                });
 
-"use strict";
+              case 14:
+              case "end":
+                return _context24.stop();
+            }
+          }
+        }, _callee24, this);
+      }));
 
+      function createDirectory() {
+        return _createDirectory.apply(this, arguments);
+      }
 
-/** @type {import('./syntax')} */
-module.exports = SyntaxError;
+      return createDirectory;
+    }()
+  }, {
+    key: "ensureDirectoryExists",
+    value: function () {
+      var _ensureDirectoryExists = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee25(path) {
+        var resp;
+        return _regenerator.default.wrap(function _callee25$(_context25) {
+          while (1) {
+            switch (_context25.prev = _context25.next) {
+              case 0:
+                if (this.specialDirectories[path]) {
+                  _context25.next = 5;
+                  break;
+                }
 
+                _context25.next = 3;
+                return this.createDirectoryByPath(path);
 
-/***/ }),
-/* 556 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 3:
+                resp = _context25.sent;
+                this.specialDirectories[path] = resp.data._id;
 
-"use strict";
+              case 5:
+                return _context25.abrupt("return", this.specialDirectories[path]);
 
+              case 6:
+              case "end":
+                return _context25.stop();
+            }
+          }
+        }, _callee25, this);
+      }));
 
-/** @type {import('./type')} */
-module.exports = TypeError;
+      function ensureDirectoryExists(_x33) {
+        return _ensureDirectoryExists.apply(this, arguments);
+      }
 
+      return ensureDirectoryExists;
+    }()
+    /**
+     * Get a directory or create it
+     *
+     * @private
+     * @param  {string} name - Name of the directory we want to get or create
+     * @param  {FileDocument} parentDirectory - Parent directory of the directory we want to get or create
+     * @returns {Promise}
+     * @throws {Error} - explaining reason why creation failed
+     */
 
-/***/ }),
-/* 557 */
-/***/ (function(module, exports, __webpack_require__) {
+  }, {
+    key: "getDirectoryOrCreate",
+    value: function () {
+      var _getDirectoryOrCreate = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee26(name, parentDirectory) {
+        var safeName, path, stat, parsedError, errors;
+        return _regenerator.default.wrap(function _callee26$(_context26) {
+          while (1) {
+            switch (_context26.prev = _context26.next) {
+              case 0:
+                if (!(parentDirectory && !parentDirectory.attributes)) {
+                  _context26.next = 2;
+                  break;
+                }
 
-"use strict";
+                throw new Error('Malformed parent directory');
 
+              case 2:
+                safeName = sanitizeFileName(name);
+                path = "".concat(parentDirectory._id === ROOT_DIR_ID ? '' : parentDirectory.attributes.path, "/").concat(safeName);
+                _context26.prev = 4;
+                _context26.next = 7;
+                return this.statByPath(path || '/');
 
-/** @type {import('./uri')} */
-module.exports = URIError;
+              case 7:
+                stat = _context26.sent;
+                return _context26.abrupt("return", stat);
 
+              case 11:
+                _context26.prev = 11;
+                _context26.t0 = _context26["catch"](4);
+                parsedError = JSON.parse(_context26.t0.message);
+                errors = parsedError.errors;
 
-/***/ }),
-/* 558 */
-/***/ (function(module, exports, __webpack_require__) {
+                if (!(errors && errors.length && errors[0].status === '404')) {
+                  _context26.next = 17;
+                  break;
+                }
 
-"use strict";
+                return _context26.abrupt("return", this.createDirectory({
+                  name: safeName,
+                  dirId: parentDirectory && parentDirectory._id
+                }));
 
+              case 17:
+                throw errors;
 
-var origSymbol = typeof Symbol !== 'undefined' && Symbol;
-var hasSymbolSham = __webpack_require__(559);
+              case 18:
+              case "end":
+                return _context26.stop();
+            }
+          }
+        }, _callee26, this, [[4, 11]]);
+      }));
 
-module.exports = function hasNativeSymbols() {
-	if (typeof origSymbol !== 'function') { return false; }
-	if (typeof Symbol !== 'function') { return false; }
-	if (typeof origSymbol('foo') !== 'symbol') { return false; }
-	if (typeof Symbol('bar') !== 'symbol') { return false; }
+      function getDirectoryOrCreate(_x34, _x35) {
+        return _getDirectoryOrCreate.apply(this, arguments);
+      }
 
-	return hasSymbolSham();
-};
+      return getDirectoryOrCreate;
+    }()
+    /**
+     * async createDirectoryByPath - Creates one or more folders until the given path exists
+     *
+     * @param  {string} path - Path of the created directory
+     * @returns {object} The document corresponding to the last segment of the path
+     */
 
+  }, {
+    key: "createDirectoryByPath",
+    value: function () {
+      var _createDirectoryByPath = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee27(path) {
+        var parts, root, parentDir, _iterator, _step, part;
 
-/***/ }),
-/* 559 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
+        return _regenerator.default.wrap(function _callee27$(_context27) {
+          while (1) {
+            switch (_context27.prev = _context27.next) {
+              case 0:
+                parts = path.split('/').filter(function (part) {
+                  return part !== '';
+                });
+                _context27.next = 3;
+                return this.statById(ROOT_DIR_ID);
 
+              case 3:
+                root = _context27.sent;
 
-/* eslint complexity: [2, 18], max-statements: [2, 33] */
-module.exports = function hasSymbols() {
-	if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }
-	if (typeof Symbol.iterator === 'symbol') { return true; }
+                if (parts.length) {
+                  _context27.next = 6;
+                  break;
+                }
 
-	var obj = {};
-	var sym = Symbol('test');
-	var symObj = Object(sym);
-	if (typeof sym === 'string') { return false; }
+                return _context27.abrupt("return", root);
 
-	if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }
-	if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }
+              case 6:
+                parentDir = root;
+                _iterator = _createForOfIteratorHelper(parts);
+                _context27.prev = 8;
 
-	// temp disabled per https://github.com/ljharb/object.assign/issues/17
-	// if (sym instanceof Symbol) { return false; }
-	// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4
-	// if (!(symObj instanceof Symbol)) { return false; }
+                _iterator.s();
 
-	// if (typeof Symbol.prototype.toString !== 'function') { return false; }
-	// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }
+              case 10:
+                if ((_step = _iterator.n()).done) {
+                  _context27.next = 17;
+                  break;
+                }
 
-	var symVal = 42;
-	obj[sym] = symVal;
-	for (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop
-	if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }
+                part = _step.value;
+                _context27.next = 14;
+                return this.getDirectoryOrCreate(part, parentDir.data);
 
-	if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }
+              case 14:
+                parentDir = _context27.sent;
 
-	var syms = Object.getOwnPropertySymbols(obj);
-	if (syms.length !== 1 || syms[0] !== sym) { return false; }
+              case 15:
+                _context27.next = 10;
+                break;
 
-	if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }
+              case 17:
+                _context27.next = 22;
+                break;
 
-	if (typeof Object.getOwnPropertyDescriptor === 'function') {
-		var descriptor = Object.getOwnPropertyDescriptor(obj, sym);
-		if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }
-	}
+              case 19:
+                _context27.prev = 19;
+                _context27.t0 = _context27["catch"](8);
 
-	return true;
-};
+                _iterator.e(_context27.t0);
 
+              case 22:
+                _context27.prev = 22;
 
-/***/ }),
-/* 560 */
-/***/ (function(module, exports, __webpack_require__) {
+                _iterator.f();
 
-"use strict";
+                return _context27.finish(22);
 
+              case 25:
+                return _context27.abrupt("return", parentDir);
 
-var test = {
-	__proto__: null,
-	foo: {}
-};
+              case 26:
+              case "end":
+                return _context27.stop();
+            }
+          }
+        }, _callee27, this, [[8, 19, 22, 25]]);
+      }));
 
-var $Object = Object;
+      function createDirectoryByPath(_x36) {
+        return _createDirectoryByPath.apply(this, arguments);
+      }
 
-/** @type {import('.')} */
-module.exports = function hasProto() {
-	// @ts-expect-error: TS errors on an inherited property for some reason
-	return { __proto__: test }.foo === test.foo
-		&& !(test instanceof $Object);
-};
+      return createDirectoryByPath;
+    }()
+    /**
+     *
+     * async updateAttributes - Updates a file / folder's attributes except
+     * the metadata attribute. If you want to update its metadata attribute,
+     * then use `updateFileMetadataAttribute` since `metadata` is a specific
+     * doctype.
+     *
+     * For instance, if you want to update the name of a file, you can pass
+     * attributes = { name: 'newName'}
+     *
+     * You can see the attributes for both Folder and File (as they share the
+     * same doctype they have a few in common) here :
+     * https://docs.cozy.io/en/cozy-doctypes/docs/io.cozy.files/#iocozyfiles
+     *
+     * @private You shoud use update() directly.
+     * @param  {string} id         File id
+     * @param  {object} attributes New file attributes
+     * @returns {object}            Updated document
+     * @throws {Error} - explaining reason why update failed
+     */
 
+  }, {
+    key: "updateAttributes",
+    value: function () {
+      var _updateAttributes = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee28(id, attributes) {
+        var sanitizedAttributes, resp;
+        return _regenerator.default.wrap(function _callee28$(_context28) {
+          while (1) {
+            switch (_context28.prev = _context28.next) {
+              case 0:
+                sanitizedAttributes = _objectSpread({}, attributes);
 
-/***/ }),
-/* 561 */
-/***/ (function(module, exports, __webpack_require__) {
+                if (attributes.name) {
+                  sanitizedAttributes.name = sanitizeAndValidateFileName(attributes.name);
+                }
 
-"use strict";
+                _context28.next = 4;
+                return this.stackClient.fetchJSON('PATCH', (0, _utils.uri)(_templateObject18(), id), {
+                  data: {
+                    type: 'io.cozy.files',
+                    id: id,
+                    attributes: sanitizedAttributes
+                  }
+                });
 
+              case 4:
+                resp = _context28.sent;
+                return _context28.abrupt("return", {
+                  data: normalizeFile(resp.data)
+                });
 
-var implementation = __webpack_require__(562);
+              case 6:
+              case "end":
+                return _context28.stop();
+            }
+          }
+        }, _callee28, this);
+      }));
 
-module.exports = Function.prototype.bind || implementation;
+      function updateAttributes(_x37, _x38) {
+        return _updateAttributes.apply(this, arguments);
+      }
 
+      return updateAttributes;
+    }()
+  }, {
+    key: "updateFileMetadata",
+    value: function () {
+      var _updateFileMetadata = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee29(id, attributes) {
+        return _regenerator.default.wrap(function _callee29$(_context29) {
+          while (1) {
+            switch (_context29.prev = _context29.next) {
+              case 0:
+                _logger.default.warn('CozyClient FileCollection updateFileMetadata method is deprecated. Use updateAttributes instead');
 
-/***/ }),
-/* 562 */
-/***/ (function(module, exports, __webpack_require__) {
+                return _context29.abrupt("return", this.updateAttributes(id, attributes));
 
-"use strict";
+              case 2:
+              case "end":
+                return _context29.stop();
+            }
+          }
+        }, _callee29, this);
+      }));
 
+      function updateFileMetadata(_x39, _x40) {
+        return _updateFileMetadata.apply(this, arguments);
+      }
 
-/* eslint no-invalid-this: 1 */
+      return updateFileMetadata;
+    }()
+    /**
+     * Send a metadata object that can be associated to a file uploaded after that,
+     * via the MetadataID query parameter.
+     * See https://github.com/cozy/cozy-stack/blob/master/docs/files.md#post-filesuploadmetadata
+     *
+     * @param {object} attributes The file's metadata
+     * @returns {Promise<object>}          The Metadata object
+     */
 
-var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';
-var toStr = Object.prototype.toString;
-var max = Math.max;
-var funcType = '[object Function]';
+  }, {
+    key: "createFileMetadata",
+    value: function () {
+      var _createFileMetadata = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee30(attributes) {
+        var resp;
+        return _regenerator.default.wrap(function _callee30$(_context30) {
+          while (1) {
+            switch (_context30.prev = _context30.next) {
+              case 0:
+                _context30.next = 2;
+                return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject19()), {
+                  data: {
+                    type: 'io.cozy.files.metadata',
+                    attributes: attributes
+                  }
+                });
 
-var concatty = function concatty(a, b) {
-    var arr = [];
+              case 2:
+                resp = _context30.sent;
+                return _context30.abrupt("return", {
+                  data: resp.data
+                });
 
-    for (var i = 0; i < a.length; i += 1) {
-        arr[i] = a[i];
-    }
-    for (var j = 0; j < b.length; j += 1) {
-        arr[j + a.length] = b[j];
-    }
+              case 4:
+              case "end":
+                return _context30.stop();
+            }
+          }
+        }, _callee30, this);
+      }));
 
-    return arr;
-};
+      function createFileMetadata(_x41) {
+        return _createFileMetadata.apply(this, arguments);
+      }
 
-var slicy = function slicy(arrLike, offset) {
-    var arr = [];
-    for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {
-        arr[j] = arrLike[i];
-    }
-    return arr;
-};
+      return createFileMetadata;
+    }()
+    /**
+     *
+     * Updates the metadata attribute of a io.cozy.files
+     * Creates a new version of the file without having
+     * to upload again the file's content
+     *
+     * To see available content of the metadata attribute
+     * see : https://docs.cozy.io/en/cozy-doctypes/docs/io.cozy.files_metadata/
+     *
+     * @param {string} id File id
+     * @param {object} metadata io.cozy.files.metadata attributes
+     * @returns {Promise<object>} io.cozy.files updated
+     */
 
-var joiny = function (arr, joiner) {
-    var str = '';
-    for (var i = 0; i < arr.length; i += 1) {
-        str += arr[i];
-        if (i + 1 < arr.length) {
-            str += joiner;
-        }
-    }
-    return str;
-};
+  }, {
+    key: "updateMetadataAttribute",
+    value: function () {
+      var _updateMetadataAttribute = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee31(id, metadata) {
+        var resp;
+        return _regenerator.default.wrap(function _callee31$(_context31) {
+          while (1) {
+            switch (_context31.prev = _context31.next) {
+              case 0:
+                _context31.next = 2;
+                return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject20(), id), {
+                  data: {
+                    type: 'io.cozy.files.metadata',
+                    attributes: metadata
+                  }
+                });
 
-module.exports = function bind(that) {
-    var target = this;
-    if (typeof target !== 'function' || toStr.apply(target) !== funcType) {
-        throw new TypeError(ERROR_MESSAGE + target);
-    }
-    var args = slicy(arguments, 1);
+              case 2:
+                resp = _context31.sent;
+                return _context31.abrupt("return", {
+                  data: resp.data
+                });
 
-    var bound;
-    var binder = function () {
-        if (this instanceof bound) {
-            var result = target.apply(
-                this,
-                concatty(args, arguments)
-            );
-            if (Object(result) === result) {
-                return result;
+              case 4:
+              case "end":
+                return _context31.stop();
             }
-            return this;
-        }
-        return target.apply(
-            that,
-            concatty(args, arguments)
-        );
-
-    };
+          }
+        }, _callee31, this);
+      }));
 
-    var boundLength = max(0, target.length - args.length);
-    var boundArgs = [];
-    for (var i = 0; i < boundLength; i++) {
-        boundArgs[i] = '$' + i;
-    }
+      function updateMetadataAttribute(_x42, _x43) {
+        return _updateMetadataAttribute.apply(this, arguments);
+      }
 
-    bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);
+      return updateMetadataAttribute;
+    }()
+    /**
+     * Get the file mime-type based on its name
+     *
+     * @param {string} name - The file name
+     * @returns {string} the inferred file mime-type
+     */
 
-    if (target.prototype) {
-        var Empty = function Empty() {};
-        Empty.prototype = target.prototype;
-        bound.prototype = new Empty();
-        Empty.prototype = null;
+  }, {
+    key: "getFileTypeFromName",
+    value: function getFileTypeFromName(name) {
+      return _lite.default.getType(name) || CONTENT_TYPE_OCTET_STREAM;
     }
+    /**
+     *
+     * This method should not be called directly to upload a file.
+     * You should use `createFile`
+     *
+     * @param {File|Blob|Stream|string|ArrayBuffer} dataArg file to be uploaded
+     * @param {string} path Uri to call the stack from. Something like
+     * `/files/${dirId}?Name=${name}&Type=file&Executable=${executable}&MetadataID=${metadataId}`
+     * @param {object} options Additional headers
+     * @param {string} method POST / PUT / PATCH
+     */
 
-    return bound;
-};
-
+  }, {
+    key: "doUpload",
+    value: function () {
+      var _doUpload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32(dataArg, path, options) {
+        var method,
+            correctPath,
+            data,
+            isBuffer,
+            isFile,
+            isBlob,
+            isStream,
+            isString,
+            _ref9,
+            contentType,
+            contentLength,
+            checksum,
+            lastModifiedDate,
+            ifMatch,
+            sPath,
+            params,
+            name,
+            headers,
+            date,
+            resp,
+            _args32 = arguments;
 
-/***/ }),
-/* 563 */
-/***/ (function(module, exports, __webpack_require__) {
+        return _regenerator.default.wrap(function _callee32$(_context32) {
+          while (1) {
+            switch (_context32.prev = _context32.next) {
+              case 0:
+                method = _args32.length > 3 && _args32[3] !== undefined ? _args32[3] : 'POST';
+                correctPath = path;
+                data = dataArg;
 
-"use strict";
+                if (data) {
+                  _context32.next = 5;
+                  break;
+                }
 
+                throw new Error('missing data argument');
 
-var call = Function.prototype.call;
-var $hasOwn = Object.prototype.hasOwnProperty;
-var bind = __webpack_require__(561);
+              case 5:
+                // transform any ArrayBufferView to ArrayBuffer
+                if (data.buffer && data.buffer instanceof ArrayBuffer) {
+                  data = data.buffer;
+                }
 
-/** @type {(o: {}, p: PropertyKey) => p is keyof o} */
-module.exports = bind.call(call, $hasOwn);
+                isBuffer = typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer;
+                isFile = typeof File !== 'undefined' && data instanceof File;
+                isBlob = typeof Blob !== 'undefined' && data instanceof Blob;
+                isStream = data.readable === true && typeof data.pipe === 'function';
+                isString = typeof data === 'string';
 
+                if (!(!isBuffer && !isFile && !isBlob && !isStream && !isString)) {
+                  _context32.next = 13;
+                  break;
+                }
 
-/***/ }),
-/* 564 */
-/***/ (function(module, exports, __webpack_require__) {
+                throw new Error('invalid data type');
 
-"use strict";
+              case 13:
+                _ref9 = options || {}, contentType = _ref9.contentType, contentLength = _ref9.contentLength, checksum = _ref9.checksum, lastModifiedDate = _ref9.lastModifiedDate, ifMatch = _ref9.ifMatch;
 
+                if (!contentType) {
+                  if (typeof data === 'string') {
+                    contentType = 'text/plain';
+                  } else {
+                    if (data.type) {
+                      // The type is specified in the file object
+                      contentType = data.type;
+                    } else {
+                      // Extract the name from the correctPath and infer the type
+                      sPath = correctPath.split('?');
+                      params = sPath.length > 1 ? sPath[1] : '';
+                      name = new URLSearchParams(params).get('Name');
+                      contentType = this.getFileTypeFromName(name.toLowerCase());
+                    }
+                  }
+                }
 
-var GetIntrinsic = __webpack_require__(550);
+                lastModifiedDate = lastModifiedDate || data.lastModified;
 
-var callBind = __webpack_require__(565);
+                if (lastModifiedDate) {
+                  lastModifiedDate = new Date(lastModifiedDate);
+                }
 
-var $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));
+                headers = {
+                  'Content-Type': contentType
+                };
+                if (contentLength) headers['Content-Length'] = String(contentLength);
+                if (checksum) headers['Content-MD5'] = checksum;
 
-module.exports = function callBoundIntrinsic(name, allowMissing) {
-	var intrinsic = GetIntrinsic(name, !!allowMissing);
-	if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {
-		return callBind(intrinsic);
-	}
-	return intrinsic;
-};
+                if (lastModifiedDate) {
+                  date = lastModifiedDate.toISOString();
+                  correctPath = "".concat(correctPath, "&UpdatedAt=").concat(date, "&CreatedAt=").concat(date);
+                }
 
+                if (ifMatch) headers['If-Match'] = ifMatch;
+                _context32.next = 24;
+                return this.stackClient.fetchJSON(method, correctPath, data, {
+                  headers: headers,
+                  onUploadProgress: options.onUploadProgress
+                });
 
-/***/ }),
-/* 565 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 24:
+                resp = _context32.sent;
+                return _context32.abrupt("return", {
+                  data: normalizeFile(resp.data)
+                });
 
-"use strict";
+              case 26:
+              case "end":
+                return _context32.stop();
+            }
+          }
+        }, _callee32, this);
+      }));
 
+      function doUpload(_x44, _x45, _x46) {
+        return _doUpload.apply(this, arguments);
+      }
 
-var bind = __webpack_require__(561);
-var GetIntrinsic = __webpack_require__(550);
-var setFunctionLength = __webpack_require__(566);
+      return doUpload;
+    }()
+    /**
+     * async findNotSynchronizedDirectories - Returns the list of directories not synchronized on the given OAuth client (mainly Cozy Desktop clients) — see https://docs.cozy.io/en/cozy-stack/not-synchronized-vfs/#get-datatypedoc-idrelationshipsnot_synchronizing
+     *
+     * @param  {OAuthClient}  oauthClient           A JSON representing an OAuth client, with at least a `_type` and `_id` field.
+     * @param  {object|null}  options               Pagination options
+     * @param  {number|null}  options.skip          For skip-based pagination, the number of referenced files to skip.
+     * @param  {number|null}  options.limit         For pagination, the number of results to return.
+     * @param  {CouchDBViewCursor|null}  options.cursor        For cursor-based pagination, the index cursor.
+     * @param  {boolean}      options.includeFiles  Include the whole file documents in the results list
+     *
+     * @returns {Array<object|IOCozyFolder>}    The JSON API conformant response.
+     */
 
-var $TypeError = __webpack_require__(556);
-var $apply = GetIntrinsic('%Function.prototype.apply%');
-var $call = GetIntrinsic('%Function.prototype.call%');
-var $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);
-
-var $defineProperty = __webpack_require__(568);
-var $max = GetIntrinsic('%Math.max%');
-
-module.exports = function callBind(originalFunction) {
-	if (typeof originalFunction !== 'function') {
-		throw new $TypeError('a function is required');
-	}
-	var func = $reflectApply(bind, $call, arguments);
-	return setFunctionLength(
-		func,
-		1 + $max(0, originalFunction.length - (arguments.length - 1)),
-		true
-	);
-};
-
-var applyBind = function applyBind() {
-	return $reflectApply(bind, $apply, arguments);
-};
-
-if ($defineProperty) {
-	$defineProperty(module.exports, 'apply', { value: applyBind });
-} else {
-	module.exports.apply = applyBind;
-}
-
-
-/***/ }),
-/* 566 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
+  }, {
+    key: "findNotSynchronizedDirectories",
+    value: function () {
+      var _findNotSynchronizedDirectories = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(oauthClient) {
+        var _ref10,
+            _ref10$skip,
+            skip,
+            limit,
+            cursor,
+            _ref10$includeFiles,
+            includeFiles,
+            params,
+            path,
+            url,
+            resp,
+            _args33 = arguments;
 
+        return _regenerator.default.wrap(function _callee33$(_context33) {
+          while (1) {
+            switch (_context33.prev = _context33.next) {
+              case 0:
+                _ref10 = _args33.length > 1 && _args33[1] !== undefined ? _args33[1] : {}, _ref10$skip = _ref10.skip, skip = _ref10$skip === void 0 ? 0 : _ref10$skip, limit = _ref10.limit, cursor = _ref10.cursor, _ref10$includeFiles = _ref10.includeFiles, includeFiles = _ref10$includeFiles === void 0 ? false : _ref10$includeFiles;
+                params = {
+                  include: includeFiles ? 'files' : undefined,
+                  'page[limit]': limit,
+                  'page[cursor]': cursor,
+                  sort: 'id'
+                };
+                path = (0, _utils.uri)(_templateObject21(), oauthClient._type, oauthClient._id);
+                url = querystring.buildURL(path, params);
+                _context33.next = 6;
+                return this.stackClient.fetchJSON('GET', url);
 
-var GetIntrinsic = __webpack_require__(550);
-var define = __webpack_require__(567);
-var hasDescriptors = __webpack_require__(570)();
-var gOPD = __webpack_require__(569);
+              case 6:
+                resp = _context33.sent;
+                return _context33.abrupt("return", {
+                  data: resp.data.map(function (f) {
+                    return normalizeFile(f);
+                  }),
+                  included: resp.included ? resp.included.map(function (f) {
+                    return normalizeFile(f);
+                  }) : [],
+                  next: (0, _has.default)(resp, 'links.next'),
+                  meta: resp.meta,
+                  skip: skip
+                });
 
-var $TypeError = __webpack_require__(556);
-var $floor = GetIntrinsic('%Math.floor%');
+              case 8:
+              case "end":
+                return _context33.stop();
+            }
+          }
+        }, _callee33, this);
+      }));
 
-/** @type {import('.')} */
-module.exports = function setFunctionLength(fn, length) {
-	if (typeof fn !== 'function') {
-		throw new $TypeError('`fn` is not a function');
-	}
-	if (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {
-		throw new $TypeError('`length` must be a positive 32-bit integer');
-	}
+      function findNotSynchronizedDirectories(_x47) {
+        return _findNotSynchronizedDirectories.apply(this, arguments);
+      }
 
-	var loose = arguments.length > 2 && !!arguments[2];
+      return findNotSynchronizedDirectories;
+    }()
+    /**
+     *  Add directory synchronization exclusions to an OAuth client — see https://docs.cozy.io/en/cozy-stack/not-synchronized-vfs/#post-datatypedoc-idrelationshipsnot_synchronizing
+     *
+     *  For example, to exclude directory `/Photos` from `My Computer`'s desktop synchronization:
+     * ```
+     * addNotSynchronizedDirectories({_id: 123, _type: "io.cozy.oauth.clients", clientName: "Cozy Drive (My Computer)", clientKind: "desktop"}, [{_id: 456, _type: "io.cozy.files", name: "Photos", path: "/Photos"}])
+     * ```
+     *
+     * @param  {OAuthClient} oauthClient  A JSON representing the OAuth client
+     * @param  {Array}  directories       An array of JSON documents having a `_type` and `_id` fields and representing directories.
+     *
+     * Returns 204 No Content
+     */
 
-	var functionLengthIsConfigurable = true;
-	var functionLengthIsWritable = true;
-	if ('length' in fn && gOPD) {
-		var desc = gOPD(fn, 'length');
-		if (desc && !desc.configurable) {
-			functionLengthIsConfigurable = false;
-		}
-		if (desc && !desc.writable) {
-			functionLengthIsWritable = false;
-		}
-	}
+  }, {
+    key: "addNotSynchronizedDirectories",
+    value: function addNotSynchronizedDirectories(oauthClient, directories) {
+      var refs = directories.map(function (d) {
+        return {
+          id: d._id,
+          type: d._type
+        };
+      });
+      return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject22(), oauthClient._type, oauthClient._id), {
+        data: refs
+      });
+    }
+    /**
+     *  Remove directory synchronization exclusions from an OAuth client — see https://docs.cozy.io/en/cozy-stack/not-synchronized-vfs/#delete-datatypedoc-idrelationshipsnot_synchronizing
+     *
+     *  For example, to re-include directory `/Photos` into `My Computer`'s desktop synchronization:
+     * ```
+     *  removeNotSynchronizedDirectories({_id: 123, _type: "io.cozy.oauth.clients", clientName: "Cozy Drive (My Computer)", clientKind: "desktop"}, [{_id: 456, _type: "io.cozy.files", name: "Photos", path: "/Photos"}])
+     * ```
+     *
+     * @param  {OAuthClient} oauthClient  A JSON representing the OAuth client
+     * @param  {Array}  directories       An array of JSON documents having a `_type` and `_id` field and representing directories.
+     *
+     * Returns 204 No Content
+     */
 
-	if (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {
-		if (hasDescriptors) {
-			define(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);
-		} else {
-			define(/** @type {Parameters<define>[0]} */ (fn), 'length', length);
-		}
-	}
-	return fn;
-};
+  }, {
+    key: "removeNotSynchronizedDirectories",
+    value: function removeNotSynchronizedDirectories(oauthClient, directories) {
+      var refs = directories.map(function (d) {
+        return {
+          id: d._id,
+          type: d._type
+        };
+      });
+      return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject23(), oauthClient._type, oauthClient._id), {
+        data: refs
+      });
+    }
+    /**
+     * Use cozy-stack's _changes API for io.cozy.files
+     * Design docs are filtered by default, thus documents are retrieved in the
+     * response (includeDocs is set to true in the parameters of _changes).
+     * Deleted and trashed documents can be filtered on demand and files' paths
+     * can be requested as well.
+     *
+     * Since deleted and trashed documents are skipped by cozy-stack rather than
+     * CouchDB, when either option is set to true, the response can contain less
+     * documents than the defined limit. Thus one should rely solely on the
+     * `pending` result attribute to determine if more documents can be fetched or
+     * not.
+     *
+     * You should use fetchChangesRaw to call CouchDB's _changes API.
+     *
+     * @typedef {object} CouchOptions
+     * @property {string} since - Bookmark telling CouchDB from which point in time should changes be returned
+     * @property {number} limit - The maximum number of returned documents for one call
+     * @property {boolean} includeDocs - Whether or not complete documents should be returned
+     *
+     * @typedef {object} FetchChangesOptions
+     * @property {Array<string>} fields - The list of fields that should be returned for each document
+     * @property {boolean} includeFilePath - Whether to include the path of file changes (needs includeDocs to be true)
+     * @property {boolean} skipDeleted - Whether to skip changes for deleted documents
+     * @property {boolean} skipTrashed - Whether to skip changes for trashed documents (needs includeDocs to be true)
+     *
+     * @param  {CouchOptions} couchOptions - Couch options for changes
+     * @param  {FetchChangesOptions} options - Further options on the returned documents. By default, it is set to
+     *                                        { includeFilePath: false, skipDeleted: false, skipTrashed: false }
+     *
+     * @typedef {object} FetchChangesReturnValue
+     * @property {string} newLastSeq
+     * @property {boolean} pending
+     * @property {Array<object>} documents
+     * @returns {FetchChangesReturnValue}
+     */
 
+  }, {
+    key: "fetchChanges",
+    value: function () {
+      var _fetchChanges = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34() {
+        var couchOptions,
+            options,
+            opts,
+            params,
+            path,
+            url,
+            _yield$this$stackClie,
+            newLastSeq,
+            pending,
+            results,
+            _args34 = arguments;
 
-/***/ }),
-/* 567 */
-/***/ (function(module, exports, __webpack_require__) {
+        return _regenerator.default.wrap(function _callee34$(_context34) {
+          while (1) {
+            switch (_context34.prev = _context34.next) {
+              case 0:
+                couchOptions = _args34.length > 0 && _args34[0] !== undefined ? _args34[0] : {};
+                options = _args34.length > 1 && _args34[1] !== undefined ? _args34[1] : {};
+                opts = {};
 
-"use strict";
+                if (typeof couchOptions !== 'object') {
+                  opts.since = couchOptions;
 
+                  _logger.default.warn("fetchChanges use couchOptions as Object not a string, since is deprecated, please use fetchChanges({since: \"".concat(couchOptions, "\"})."));
+                } else if (Object.keys(couchOptions).length > 0) {
+                  Object.assign(opts, couchOptions);
+                }
 
-var $defineProperty = __webpack_require__(568);
+                if (Object.keys(options).length > 0) {
+                  Object.assign(opts, options);
 
-var $SyntaxError = __webpack_require__(555);
-var $TypeError = __webpack_require__(556);
+                  if (options.skipTrashed || options.includeFilePath) {
+                    opts.includeDocs = true;
+                  }
+                }
 
-var gopd = __webpack_require__(569);
+                params = _objectSpread(_objectSpread({}, (0, _omit.default)(opts, ['fields', 'includeDocs', 'includeFilePath', 'skipDeleted', 'skipTrashed'])), {}, {
+                  fields: opts.fields ? opts.fields.join(',') : null,
+                  include_docs: opts.includeDocs,
+                  include_file_path: opts.includeFilePath,
+                  skip_deleted: opts.skipDeleted,
+                  skip_trashed: opts.skipTrashed
+                });
+                path = (0, _utils.uri)(_templateObject24());
+                url = querystring.buildURL(path, params);
+                _context34.next = 10;
+                return this.stackClient.fetchJSON('GET', url);
 
-/** @type {import('.')} */
-module.exports = function defineDataProperty(
-	obj,
-	property,
-	value
-) {
-	if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {
-		throw new $TypeError('`obj` must be an object or a function`');
-	}
-	if (typeof property !== 'string' && typeof property !== 'symbol') {
-		throw new $TypeError('`property` must be a string or a symbol`');
-	}
-	if (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {
-		throw new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');
-	}
-	if (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {
-		throw new $TypeError('`nonWritable`, if provided, must be a boolean or null');
-	}
-	if (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {
-		throw new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');
-	}
-	if (arguments.length > 6 && typeof arguments[6] !== 'boolean') {
-		throw new $TypeError('`loose`, if provided, must be a boolean');
-	}
+              case 10:
+                _yield$this$stackClie = _context34.sent;
+                newLastSeq = _yield$this$stackClie.last_seq;
+                pending = _yield$this$stackClie.pending;
+                results = _yield$this$stackClie.results;
+                return _context34.abrupt("return", {
+                  newLastSeq: newLastSeq,
+                  pending: pending,
+                  results: results
+                });
 
-	var nonEnumerable = arguments.length > 3 ? arguments[3] : null;
-	var nonWritable = arguments.length > 4 ? arguments[4] : null;
-	var nonConfigurable = arguments.length > 5 ? arguments[5] : null;
-	var loose = arguments.length > 6 ? arguments[6] : false;
+              case 15:
+              case "end":
+                return _context34.stop();
+            }
+          }
+        }, _callee34, this);
+      }));
 
-	/* @type {false | TypedPropertyDescriptor<unknown>} */
-	var desc = !!gopd && gopd(obj, property);
+      function fetchChanges() {
+        return _fetchChanges.apply(this, arguments);
+      }
 
-	if ($defineProperty) {
-		$defineProperty(obj, property, {
-			configurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,
-			enumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,
-			value: value,
-			writable: nonWritable === null && desc ? desc.writable : !nonWritable
-		});
-	} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {
-		// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable
-		obj[property] = value; // eslint-disable-line no-param-reassign
-	} else {
-		throw new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');
-	}
-};
+      return fetchChanges;
+    }()
+  }]);
+  return FileCollection;
+}(_DocumentCollection2.default);
 
+var _default = FileCollection;
+exports.default = _default;
 
 /***/ }),
-/* 568 */
+/* 591 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var GetIntrinsic = __webpack_require__(550);
-
-/** @type {import('.')} */
-var $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;
-if ($defineProperty) {
-	try {
-		$defineProperty({}, 'a', { value: 1 });
-	} catch (e) {
-		// IE 8 has a broken defineProperty
-		$defineProperty = false;
-	}
-}
-
-module.exports = $defineProperty;
+let Mime = __webpack_require__(592);
+module.exports = new Mime(__webpack_require__(593));
 
 
 /***/ }),
-/* 569 */
+/* 592 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var GetIntrinsic = __webpack_require__(550);
+/**
+ * @param typeMap [Object] Map of MIME type -> Array[extensions]
+ * @param ...
+ */
+function Mime() {
+  this._types = Object.create(null);
+  this._extensions = Object.create(null);
 
-var $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);
+  for (let i = 0; i < arguments.length; i++) {
+    this.define(arguments[i]);
+  }
 
-if ($gOPD) {
-	try {
-		$gOPD([], 'length');
-	} catch (e) {
-		// IE 8 has a broken gOPD
-		$gOPD = null;
-	}
+  this.define = this.define.bind(this);
+  this.getType = this.getType.bind(this);
+  this.getExtension = this.getExtension.bind(this);
 }
 
-module.exports = $gOPD;
+/**
+ * Define mimetype -> extension mappings.  Each key is a mime-type that maps
+ * to an array of extensions associated with the type.  The first extension is
+ * used as the default extension for the type.
+ *
+ * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});
+ *
+ * If a type declares an extension that has already been defined, an error will
+ * be thrown.  To suppress this error and force the extension to be associated
+ * with the new type, pass `force`=true.  Alternatively, you may prefix the
+ * extension with "*" to map the type to extension, without mapping the
+ * extension to the type.
+ *
+ * e.g. mime.define({'audio/wav', ['wav']}, {'audio/x-wav', ['*wav']});
+ *
+ *
+ * @param map (Object) type definitions
+ * @param force (Boolean) if true, force overriding of existing definitions
+ */
+Mime.prototype.define = function(typeMap, force) {
+  for (let type in typeMap) {
+    let extensions = typeMap[type].map(function(t) {
+      return t.toLowerCase();
+    });
+    type = type.toLowerCase();
 
+    for (let i = 0; i < extensions.length; i++) {
+      const ext = extensions[i];
 
-/***/ }),
-/* 570 */
-/***/ (function(module, exports, __webpack_require__) {
+      // '*' prefix = not the preferred type for this extension.  So fixup the
+      // extension, and skip it.
+      if (ext[0] === '*') {
+        continue;
+      }
 
-"use strict";
+      if (!force && (ext in this._types)) {
+        throw new Error(
+          'Attempt to change mapping for "' + ext +
+          '" extension from "' + this._types[ext] + '" to "' + type +
+          '". Pass `force=true` to allow this, otherwise remove "' + ext +
+          '" from the list of extensions for "' + type + '".'
+        );
+      }
 
+      this._types[ext] = type;
+    }
 
-var $defineProperty = __webpack_require__(568);
+    // Use first extension as default
+    if (force || !this._extensions[type]) {
+      const ext = extensions[0];
+      this._extensions[type] = (ext[0] !== '*') ? ext : ext.substr(1);
+    }
+  }
+};
 
-var hasPropertyDescriptors = function hasPropertyDescriptors() {
-	return !!$defineProperty;
+/**
+ * Lookup a mime type based on extension
+ */
+Mime.prototype.getType = function(path) {
+  path = String(path);
+  let last = path.replace(/^.*[/\\]/, '').toLowerCase();
+  let ext = last.replace(/^.*\./, '').toLowerCase();
+
+  let hasPath = last.length < path.length;
+  let hasDot = ext.length < last.length - 1;
+
+  return (hasDot || !hasPath) && this._types[ext] || null;
 };
 
-hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {
-	// node v0.6 has a bug where array lengths can be Set but not Defined
-	if (!$defineProperty) {
-		return null;
-	}
-	try {
-		return $defineProperty([], 'length', { value: 1 }).length !== 1;
-	} catch (e) {
-		// In Firefox 4-22, defining length on an array throws an exception.
-		return true;
-	}
+/**
+ * Return file extension associated with a mime type
+ */
+Mime.prototype.getExtension = function(type) {
+  type = /^\s*([^;\s]*)/.test(type) && RegExp.$1;
+  return type && this._extensions[type.toLowerCase()] || null;
 };
 
-module.exports = hasPropertyDescriptors;
+module.exports = Mime;
 
 
 /***/ }),
-/* 571 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 593 */
+/***/ (function(module, exports) {
 
-var hasMap = typeof Map === 'function' && Map.prototype;
-var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;
-var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;
-var mapForEach = hasMap && Map.prototype.forEach;
-var hasSet = typeof Set === 'function' && Set.prototype;
-var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;
-var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;
-var setForEach = hasSet && Set.prototype.forEach;
-var hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;
-var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;
-var hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;
-var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;
-var hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;
-var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;
-var booleanValueOf = Boolean.prototype.valueOf;
-var objectToString = Object.prototype.toString;
-var functionToString = Function.prototype.toString;
-var $match = String.prototype.match;
-var $slice = String.prototype.slice;
-var $replace = String.prototype.replace;
-var $toUpperCase = String.prototype.toUpperCase;
-var $toLowerCase = String.prototype.toLowerCase;
-var $test = RegExp.prototype.test;
-var $concat = Array.prototype.concat;
-var $join = Array.prototype.join;
-var $arrSlice = Array.prototype.slice;
-var $floor = Math.floor;
-var bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;
-var gOPS = Object.getOwnPropertySymbols;
-var symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;
-var hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';
-// ie, `has-tostringtag/shams
-var toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')
-    ? Symbol.toStringTag
-    : null;
-var isEnumerable = Object.prototype.propertyIsEnumerable;
+module.exports = {"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomdeleted+xml":["atomdeleted"],"application/atomsvc+xml":["atomsvc"],"application/atsc-dwd+xml":["dwd"],"application/atsc-held+xml":["held"],"application/atsc-rsat+xml":["rsat"],"application/bdoc":["bdoc"],"application/calendar+xml":["xcs"],"application/ccxml+xml":["ccxml"],"application/cdfx+xml":["cdfx"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["es","ecma"],"application/emma+xml":["emma"],"application/emotionml+xml":["emotionml"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/express":["exp"],"application/fdt+xml":["fdt"],"application/font-tdpfr":["pfr"],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hjson":["hjson"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/its+xml":["its"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lgr+xml":["lgr"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mmt-aei+xml":["maei"],"application/mmt-usd+xml":["musd"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/n-quads":["nq"],"application/n-triples":["nt"],"application/node":["cjs"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/p2p-overlay+xml":["relo"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/provenance+xml":["provx"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf","owl"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/route-apd+xml":["rapd"],"application/route-s-tsid+xml":["sls"],"application/route-usd+xml":["rusd"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/senml+xml":["senmlx"],"application/sensml+xml":["sensmlx"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/sieve":["siv","sieve"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/swid+xml":["swidtag"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/toml":["toml"],"application/trig":["trig"],"application/ttml+xml":["ttml"],"application/ubjson":["ubj"],"application/urc-ressheet+xml":["rsheet"],"application/urc-targetdesc+xml":["td"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/xaml+xml":["xaml"],"application/xcap-att+xml":["xav"],"application/xcap-caps+xml":["xca"],"application/xcap-diff+xml":["xdf"],"application/xcap-el+xml":["xel"],"application/xcap-ns+xml":["xns"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xliff+xml":["xlf"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["*xsl","xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":["*3gpp"],"audio/adpcm":["adp"],"audio/amr":["amr"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mobile-xmf":["mxmf"],"audio/mp3":["*mp3"],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx","opus"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/wav":["wav"],"audio/wave":["*wav"],"audio/webm":["weba"],"audio/xm":["xm"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["woff"],"font/woff2":["woff2"],"image/aces":["exr"],"image/apng":["apng"],"image/avif":["avif"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/dicom-rle":["drle"],"image/emf":["emf"],"image/fits":["fits"],"image/g3fax":["g3"],"image/gif":["gif"],"image/heic":["heic"],"image/heic-sequence":["heics"],"image/heif":["heif"],"image/heif-sequence":["heifs"],"image/hej2k":["hej2"],"image/hsj2":["hsj2"],"image/ief":["ief"],"image/jls":["jls"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpeg","jpg","jpe"],"image/jph":["jph"],"image/jphc":["jhc"],"image/jpm":["jpm"],"image/jpx":["jpx","jpf"],"image/jxr":["jxr"],"image/jxra":["jxra"],"image/jxrs":["jxrs"],"image/jxs":["jxs"],"image/jxsc":["jxsc"],"image/jxsi":["jxsi"],"image/jxss":["jxss"],"image/ktx":["ktx"],"image/ktx2":["ktx2"],"image/png":["png"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/t38":["t38"],"image/tiff":["tif","tiff"],"image/tiff-fx":["tfx"],"image/webp":["webp"],"image/wmf":["wmf"],"message/disposition-notification":["disposition-notification"],"message/global":["u8msg"],"message/global-delivery-status":["u8dsn"],"message/global-disposition-notification":["u8mdn"],"message/global-headers":["u8hdr"],"message/rfc822":["eml","mime"],"model/3mf":["3mf"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/mtl":["mtl"],"model/obj":["obj"],"model/step+xml":["stpx"],"model/step+zip":["stpz"],"model/step-xml+zip":["stpxz"],"model/stl":["stl"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["*x3db","x3dbz"],"model/x3d+fastinfoset":["x3db"],"model/x3d+vrml":["*x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"model/x3d-vrml":["x3dv"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/mdx":["mdx"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/richtext":["rtx"],"text/rtf":["*rtf"],"text/sgml":["sgml","sgm"],"text/shex":["shex"],"text/slim":["slim","slm"],"text/spdx":["spdx"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vtt":["vtt"],"text/xml":["*xml"],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/iso.segment":["m4s"],"video/jpeg":["jpgv"],"video/jpm":["*jpm","jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/webm":["webm"]};
 
-var gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (
-    [].__proto__ === Array.prototype // eslint-disable-line no-proto
-        ? function (O) {
-            return O.__proto__; // eslint-disable-line no-proto
-        }
-        : null
-);
+/***/ }),
+/* 594 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function addNumericSeparator(num, str) {
-    if (
-        num === Infinity
-        || num === -Infinity
-        || num !== num
-        || (num && num > -1000 && num < 1000)
-        || $test.call(/e/, str)
-    ) {
-        return str;
-    }
-    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;
-    if (typeof num === 'number') {
-        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)
-        if (int !== num) {
-            var intStr = String(int);
-            var dec = $slice.call(str, intStr.length + 1);
-            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');
-        }
-    }
-    return $replace.call(str, sepRegex, '$&_');
+var baseHas = __webpack_require__(595),
+    hasPath = __webpack_require__(413);
+
+/**
+ * Checks if `path` is a direct property of `object`.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Object
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path to check.
+ * @returns {boolean} Returns `true` if `path` exists, else `false`.
+ * @example
+ *
+ * var object = { 'a': { 'b': 2 } };
+ * var other = _.create({ 'a': _.create({ 'b': 2 }) });
+ *
+ * _.has(object, 'a');
+ * // => true
+ *
+ * _.has(object, 'a.b');
+ * // => true
+ *
+ * _.has(object, ['a', 'b']);
+ * // => true
+ *
+ * _.has(other, 'a');
+ * // => false
+ */
+function has(object, path) {
+  return object != null && hasPath(object, path, baseHas);
 }
 
-var utilInspect = __webpack_require__(572);
-var inspectCustom = utilInspect.custom;
-var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;
+module.exports = has;
 
-module.exports = function inspect_(obj, options, depth, seen) {
-    var opts = options || {};
 
-    if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {
-        throw new TypeError('option "quoteStyle" must be "single" or "double"');
-    }
-    if (
-        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'
-            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity
-            : opts.maxStringLength !== null
-        )
-    ) {
-        throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');
-    }
-    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;
-    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {
-        throw new TypeError('option "customInspect", if provided, must be `true`, `false`, or `\'symbol\'`');
-    }
+/***/ }),
+/* 595 */
+/***/ (function(module, exports) {
 
-    if (
-        has(opts, 'indent')
-        && opts.indent !== null
-        && opts.indent !== '\t'
-        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)
-    ) {
-        throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');
-    }
-    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {
-        throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');
-    }
-    var numericSeparator = opts.numericSeparator;
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
 
-    if (typeof obj === 'undefined') {
-        return 'undefined';
-    }
-    if (obj === null) {
-        return 'null';
-    }
-    if (typeof obj === 'boolean') {
-        return obj ? 'true' : 'false';
-    }
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
 
-    if (typeof obj === 'string') {
-        return inspectString(obj, opts);
-    }
-    if (typeof obj === 'number') {
-        if (obj === 0) {
-            return Infinity / obj > 0 ? '0' : '-0';
-        }
-        var str = String(obj);
-        return numericSeparator ? addNumericSeparator(obj, str) : str;
-    }
-    if (typeof obj === 'bigint') {
-        var bigIntStr = String(obj) + 'n';
-        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;
-    }
+/**
+ * The base implementation of `_.has` without support for deep paths.
+ *
+ * @private
+ * @param {Object} [object] The object to query.
+ * @param {Array|string} key The key to check.
+ * @returns {boolean} Returns `true` if `key` exists, else `false`.
+ */
+function baseHas(object, key) {
+  return object != null && hasOwnProperty.call(object, key);
+}
 
-    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;
-    if (typeof depth === 'undefined') { depth = 0; }
-    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {
-        return isArray(obj) ? '[Array]' : '[Object]';
-    }
+module.exports = baseHas;
 
-    var indent = getIndent(opts, depth);
 
-    if (typeof seen === 'undefined') {
-        seen = [];
-    } else if (indexOf(seen, obj) >= 0) {
-        return '[Circular]';
-    }
+/***/ }),
+/* 596 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    function inspect(value, from, noIndent) {
-        if (from) {
-            seen = $arrSlice.call(seen);
-            seen.push(from);
-        }
-        if (noIndent) {
-            var newOpts = {
-                depth: opts.depth
-            };
-            if (has(opts, 'quoteStyle')) {
-                newOpts.quoteStyle = opts.quoteStyle;
-            }
-            return inspect_(value, newOpts, depth + 1, seen);
-        }
-        return inspect_(value, opts, depth + 1, seen);
-    }
+var basePick = __webpack_require__(597),
+    flatRest = __webpack_require__(530);
 
-    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable
-        var name = nameOf(obj);
-        var keys = arrObjKeys(obj, inspect);
-        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');
-    }
-    if (isSymbol(obj)) {
-        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, '$1') : symToString.call(obj);
-        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;
-    }
-    if (isElement(obj)) {
-        var s = '<' + $toLowerCase.call(String(obj.nodeName));
-        var attrs = obj.attributes || [];
-        for (var i = 0; i < attrs.length; i++) {
-            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);
-        }
-        s += '>';
-        if (obj.childNodes && obj.childNodes.length) { s += '...'; }
-        s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';
-        return s;
-    }
-    if (isArray(obj)) {
-        if (obj.length === 0) { return '[]'; }
-        var xs = arrObjKeys(obj, inspect);
-        if (indent && !singleLineValues(xs)) {
-            return '[' + indentedJoin(xs, indent) + ']';
-        }
-        return '[ ' + $join.call(xs, ', ') + ' ]';
-    }
-    if (isError(obj)) {
-        var parts = arrObjKeys(obj, inspect);
-        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {
-            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';
-        }
-        if (parts.length === 0) { return '[' + String(obj) + ']'; }
-        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';
-    }
-    if (typeof obj === 'object' && customInspect) {
-        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {
-            return utilInspect(obj, { depth: maxDepth - depth });
-        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {
-            return obj.inspect();
-        }
-    }
-    if (isMap(obj)) {
-        var mapParts = [];
-        if (mapForEach) {
-            mapForEach.call(obj, function (value, key) {
-                mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));
-            });
-        }
-        return collectionOf('Map', mapSize.call(obj), mapParts, indent);
-    }
-    if (isSet(obj)) {
-        var setParts = [];
-        if (setForEach) {
-            setForEach.call(obj, function (value) {
-                setParts.push(inspect(value, obj));
-            });
-        }
-        return collectionOf('Set', setSize.call(obj), setParts, indent);
-    }
-    if (isWeakMap(obj)) {
-        return weakCollectionOf('WeakMap');
-    }
-    if (isWeakSet(obj)) {
-        return weakCollectionOf('WeakSet');
-    }
-    if (isWeakRef(obj)) {
-        return weakCollectionOf('WeakRef');
-    }
-    if (isNumber(obj)) {
-        return markBoxed(inspect(Number(obj)));
-    }
-    if (isBigInt(obj)) {
-        return markBoxed(inspect(bigIntValueOf.call(obj)));
-    }
-    if (isBoolean(obj)) {
-        return markBoxed(booleanValueOf.call(obj));
-    }
-    if (isString(obj)) {
-        return markBoxed(inspect(String(obj)));
-    }
-    // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other
-    /* eslint-env browser */
-    if (typeof window !== 'undefined' && obj === window) {
-        return '{ [object Window] }';
-    }
-    if (obj === global) {
-        return '{ [object globalThis] }';
-    }
-    if (!isDate(obj) && !isRegExp(obj)) {
-        var ys = arrObjKeys(obj, inspect);
-        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;
-        var protoTag = obj instanceof Object ? '' : 'null prototype';
-        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';
-        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';
-        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');
-        if (ys.length === 0) { return tag + '{}'; }
-        if (indent) {
-            return tag + '{' + indentedJoin(ys, indent) + '}';
-        }
-        return tag + '{ ' + $join.call(ys, ', ') + ' }';
-    }
-    return String(obj);
-};
+/**
+ * Creates an object composed of the picked `object` properties.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Object
+ * @param {Object} object The source object.
+ * @param {...(string|string[])} [paths] The property paths to pick.
+ * @returns {Object} Returns the new object.
+ * @example
+ *
+ * var object = { 'a': 1, 'b': '2', 'c': 3 };
+ *
+ * _.pick(object, ['a', 'c']);
+ * // => { 'a': 1, 'c': 3 }
+ */
+var pick = flatRest(function(object, paths) {
+  return object == null ? {} : basePick(object, paths);
+});
 
-function wrapQuotes(s, defaultStyle, opts) {
-    var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '"' : "'";
-    return quoteChar + s + quoteChar;
-}
+module.exports = pick;
 
-function quote(s) {
-    return $replace.call(String(s), /"/g, '&quot;');
-}
 
-function isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
-function isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
-function isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
-function isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
-function isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
-function isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
-function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
+/***/ }),
+/* 597 */
+/***/ (function(module, exports, __webpack_require__) {
 
-// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives
-function isSymbol(obj) {
-    if (hasShammedSymbols) {
-        return obj && typeof obj === 'object' && obj instanceof Symbol;
-    }
-    if (typeof obj === 'symbol') {
-        return true;
-    }
-    if (!obj || typeof obj !== 'object' || !symToString) {
-        return false;
-    }
-    try {
-        symToString.call(obj);
-        return true;
-    } catch (e) {}
-    return false;
-}
+var basePickBy = __webpack_require__(580),
+    hasIn = __webpack_require__(411);
 
-function isBigInt(obj) {
-    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {
-        return false;
-    }
-    try {
-        bigIntValueOf.call(obj);
-        return true;
-    } catch (e) {}
-    return false;
+/**
+ * The base implementation of `_.pick` without support for individual
+ * property identifiers.
+ *
+ * @private
+ * @param {Object} object The source object.
+ * @param {string[]} paths The property paths to pick.
+ * @returns {Object} Returns the new object.
+ */
+function basePick(object, paths) {
+  return basePickBy(object, paths, function(value, path) {
+    return hasIn(object, path);
+  });
 }
 
-var hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };
-function has(obj, key) {
-    return hasOwn.call(obj, key);
-}
+module.exports = basePick;
 
-function toStr(obj) {
-    return objectToString.call(obj);
-}
 
-function nameOf(f) {
-    if (f.name) { return f.name; }
-    var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/);
-    if (m) { return m[1]; }
-    return null;
-}
+/***/ }),
+/* 598 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function indexOf(xs, x) {
-    if (xs.indexOf) { return xs.indexOf(x); }
-    for (var i = 0, l = xs.length; i < l; i++) {
-        if (xs[i] === x) { return i; }
-    }
-    return -1;
-}
+"use strict";
 
-function isMap(x) {
-    if (!mapSize || !x || typeof x !== 'object') {
-        return false;
-    }
-    try {
-        mapSize.call(x);
-        try {
-            setSize.call(x);
-        } catch (s) {
-            return true;
-        }
-        return x instanceof Map; // core-js workaround, pre-v2.5.0
-    } catch (e) {}
-    return false;
-}
 
-function isWeakMap(x) {
-    if (!weakMapHas || !x || typeof x !== 'object') {
-        return false;
-    }
-    try {
-        weakMapHas.call(x, weakMapHas);
-        try {
-            weakSetHas.call(x, weakSetHas);
-        } catch (s) {
-            return true;
-        }
-        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0
-    } catch (e) {}
-    return false;
-}
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.getIllegalCharacters = void 0;
 
-function isWeakRef(x) {
-    if (!weakRefDeref || !x || typeof x !== 'object') {
-        return false;
-    }
-    try {
-        weakRefDeref.call(x);
-        return true;
-    } catch (e) {}
-    return false;
-}
+/**
+ * Get the list of illegal characters in the file name
+ *
+ * @public
+ * @param {string} name - the file name
+ * @returns {string} illegal characters separated by spaces
+ */
+var getIllegalCharacters = function getIllegalCharacters(name) {
+  var FILENAME_ILLEGAL_CHARACTERS = /\/|\x00|\n|\r/g; // eslint-disable-line no-control-regex
 
-function isSet(x) {
-    if (!setSize || !x || typeof x !== 'object') {
-        return false;
-    }
-    try {
-        setSize.call(x);
-        try {
-            mapSize.call(x);
-        } catch (m) {
-            return true;
-        }
-        return x instanceof Set; // core-js workaround, pre-v2.5.0
-    } catch (e) {}
-    return false;
-}
+  var match = name.match(FILENAME_ILLEGAL_CHARACTERS);
+  return match ? match.join(' ') : '';
+};
 
-function isWeakSet(x) {
-    if (!weakSetHas || !x || typeof x !== 'object') {
-        return false;
-    }
-    try {
-        weakSetHas.call(x, weakSetHas);
-        try {
-            weakMapHas.call(x, weakMapHas);
-        } catch (s) {
-            return true;
-        }
-        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0
-    } catch (e) {}
-    return false;
-}
+exports.getIllegalCharacters = getIllegalCharacters;
 
-function isElement(x) {
-    if (!x || typeof x !== 'object') { return false; }
-    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {
-        return true;
-    }
-    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';
-}
+/***/ }),
+/* 599 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function inspectString(str, opts) {
-    if (str.length > opts.maxStringLength) {
-        var remaining = str.length - opts.maxStringLength;
-        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');
-        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;
-    }
-    // eslint-disable-next-line no-control-regex
-    var s = $replace.call($replace.call(str, /(['\\])/g, '\\$1'), /[\x00-\x1f]/g, lowbyte);
-    return wrapQuotes(s, 'single', opts);
-}
+"use strict";
 
-function lowbyte(c) {
-    var n = c.charCodeAt(0);
-    var x = {
-        8: 'b',
-        9: 't',
-        10: 'n',
-        12: 'f',
-        13: 'r'
-    }[n];
-    if (x) { return '\\' + x; }
-    return '\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));
-}
 
-function markBoxed(str) {
-    return 'Object(' + str + ')';
-}
+var _interopRequireWildcard = __webpack_require__(277);
 
-function weakCollectionOf(type) {
-    return type + ' { ? }';
-}
+var _interopRequireDefault = __webpack_require__(1);
 
-function collectionOf(type, size, entries, indent) {
-    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');
-    return type + ' (' + size + ') {' + joinedEntries + '}';
-}
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.hasJobFinished = exports.normalizeJob = exports.JOBS_DOCTYPE = void 0;
 
-function singleLineValues(xs) {
-    for (var i = 0; i < xs.length; i++) {
-        if (indexOf(xs[i], '\n') >= 0) {
-            return false;
-        }
-    }
-    return true;
-}
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-function getIndent(opts, depth) {
-    var baseIndent;
-    if (opts.indent === '\t') {
-        baseIndent = '\t';
-    } else if (typeof opts.indent === 'number' && opts.indent > 0) {
-        baseIndent = $join.call(Array(opts.indent + 1), ' ');
-    } else {
-        return null;
-    }
-    return {
-        base: baseIndent,
-        prev: $join.call(Array(depth + 1), baseIndent)
-    };
-}
+var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
 
-function indentedJoin(xs, indent) {
-    if (xs.length === 0) { return ''; }
-    var lineJoiner = '\n' + indent.prev + indent.base;
-    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\n' + indent.prev;
-}
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-function arrObjKeys(obj, inspect) {
-    var isArr = isArray(obj);
-    var xs = [];
-    if (isArr) {
-        xs.length = obj.length;
-        for (var i = 0; i < obj.length; i++) {
-            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';
-        }
-    }
-    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];
-    var symMap;
-    if (hasShammedSymbols) {
-        symMap = {};
-        for (var k = 0; k < syms.length; k++) {
-            symMap['$' + syms[k]] = syms[k];
-        }
-    }
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-    for (var key in obj) { // eslint-disable-line no-restricted-syntax
-        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue
-        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue
-        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {
-            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section
-            continue; // eslint-disable-line no-restricted-syntax, no-continue
-        } else if ($test.call(/[^\w$]/, key)) {
-            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));
-        } else {
-            xs.push(key + ': ' + inspect(obj[key], obj));
-        }
-    }
-    if (typeof gOPS === 'function') {
-        for (var j = 0; j < syms.length; j++) {
-            if (isEnumerable.call(obj, syms[j])) {
-                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));
-            }
-        }
-    }
-    return xs;
-}
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
-/***/ }),
-/* 572 */
-/***/ (function(module, exports, __webpack_require__) {
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
-module.exports = __webpack_require__(218).inspect;
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-/***/ }),
-/* 573 */
-/***/ (function(module, exports, __webpack_require__) {
+var _Collection = _interopRequireDefault(__webpack_require__(489));
 
-"use strict";
+var _DocumentCollection2 = _interopRequireWildcard(__webpack_require__(491));
 
+var _utils = __webpack_require__(521);
 
-var formats = __webpack_require__(574);
+function _templateObject() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/jobs/", ""]);
 
-var has = Object.prototype.hasOwnProperty;
-var isArray = Array.isArray;
+  _templateObject = function _templateObject() {
+    return data;
+  };
 
-var hexTable = (function () {
-    var array = [];
-    for (var i = 0; i < 256; ++i) {
-        array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());
-    }
+  return data;
+}
 
-    return array;
-}());
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
-var compactQueue = function compactQueue(queue) {
-    while (queue.length > 1) {
-        var item = queue.pop();
-        var obj = item.obj[item.prop];
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-        if (isArray(obj)) {
-            var compacted = [];
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-            for (var j = 0; j < obj.length; ++j) {
-                if (typeof obj[j] !== 'undefined') {
-                    compacted.push(obj[j]);
-                }
-            }
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-            item.obj[item.prop] = compacted;
-        }
-    }
+var JOBS_DOCTYPE = 'io.cozy.jobs';
+exports.JOBS_DOCTYPE = JOBS_DOCTYPE;
+
+var sleep = function sleep(delay) {
+  return new Promise(function (resolve) {
+    return setTimeout(resolve, delay);
+  });
 };
 
-var arrayToObject = function arrayToObject(source, options) {
-    var obj = options && options.plainObjects ? Object.create(null) : {};
-    for (var i = 0; i < source.length; ++i) {
-        if (typeof source[i] !== 'undefined') {
-            obj[i] = source[i];
-        }
-    }
+var normalizeJob = function normalizeJob(job) {
+  return _objectSpread(_objectSpread(_objectSpread({}, job), (0, _DocumentCollection2.normalizeDoc)(job, JOBS_DOCTYPE)), job.attributes);
+};
 
-    return obj;
+exports.normalizeJob = normalizeJob;
+
+var hasJobFinished = function hasJobFinished(job) {
+  return job.state === 'done' || job.state === 'errored';
 };
+/**
+ * Document representing a io.cozy.jobs
+ *
+ * @typedef {object} JobDocument
+ * @property {string} _id - Id of the job
+ * @property {string} attributes.state - state of the job. Can be 'errored', 'running', 'queued', 'done'
+ * @property {string} attributes.error - Error message of the job if any
+ */
 
-var merge = function merge(target, source, options) {
-    /* eslint no-param-reassign: 0 */
-    if (!source) {
-        return target;
-    }
 
-    if (typeof source !== 'object') {
-        if (isArray(target)) {
-            target.push(source);
-        } else if (target && typeof target === 'object') {
-            if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {
-                target[source] = true;
-            }
-        } else {
-            return [target, source];
-        }
+exports.hasJobFinished = hasJobFinished;
 
-        return target;
-    }
+var JobCollection = /*#__PURE__*/function (_DocumentCollection) {
+  (0, _inherits2.default)(JobCollection, _DocumentCollection);
 
-    if (!target || typeof target !== 'object') {
-        return [target].concat(source);
-    }
+  var _super = _createSuper(JobCollection);
 
-    var mergeTarget = target;
-    if (isArray(target) && !isArray(source)) {
-        mergeTarget = arrayToObject(target, options);
-    }
+  function JobCollection(stackClient) {
+    (0, _classCallCheck2.default)(this, JobCollection);
+    return _super.call(this, JOBS_DOCTYPE, stackClient);
+  }
 
-    if (isArray(target) && isArray(source)) {
-        source.forEach(function (item, i) {
-            if (has.call(target, i)) {
-                var targetItem = target[i];
-                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {
-                    target[i] = merge(targetItem, item, options);
-                } else {
-                    target.push(item);
-                }
-            } else {
-                target[i] = item;
-            }
-        });
-        return target;
+  (0, _createClass2.default)(JobCollection, [{
+    key: "queued",
+    value: function queued(workerType) {
+      return this.stackClient.fetchJSON('GET', "/jobs/queue/".concat(workerType));
     }
+    /**
+     * Creates a job
+     *
+     * @param  {string} workerType - Ex: "konnector"
+     * @param  {object} [args={}] - Ex: {"slug": "my-konnector", "trigger": "trigger-id"}
+     * @param  {object} [options={}] - creation options
+     * @param  {boolean} [manual=false] -  Manual execution
+     * @returns {object} createdJob
+     */
 
-    return Object.keys(source).reduce(function (acc, key) {
-        var value = source[key];
-
-        if (has.call(acc, key)) {
-            acc[key] = merge(acc[key], value, options);
-        } else {
-            acc[key] = value;
+  }, {
+    key: "create",
+    value: function create(workerType) {
+      var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+      var manual = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
+      return this.stackClient.fetchJSON('POST', "/jobs/queue/".concat(workerType), {
+        data: {
+          type: JOBS_DOCTYPE,
+          attributes: {
+            arguments: args,
+            options: options,
+            manual: manual
+          }
         }
-        return acc;
-    }, mergeTarget);
-};
-
-var assign = function assignSingleSource(target, source) {
-    return Object.keys(source).reduce(function (acc, key) {
-        acc[key] = source[key];
-        return acc;
-    }, target);
-};
-
-var decode = function (str, decoder, charset) {
-    var strWithoutPlus = str.replace(/\+/g, ' ');
-    if (charset === 'iso-8859-1') {
-        // unescape never throws, no try...catch needed:
-        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);
-    }
-    // utf-8
-    try {
-        return decodeURIComponent(strWithoutPlus);
-    } catch (e) {
-        return strWithoutPlus;
+      });
     }
-};
+    /**
+     * Return a normalized job, given its id
+     *
+     * @param {string} id - id of the job
+     * @returns {JobDocument}
+     */
 
-var encode = function encode(str, defaultEncoder, charset, kind, format) {
-    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.
-    // It has been adapted here for stricter adherence to RFC 3986
-    if (str.length === 0) {
-        return str;
-    }
+  }, {
+    key: "get",
+    value: function () {
+      var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(id) {
+        return _regenerator.default.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                return _context.abrupt("return", _Collection.default.get(this.stackClient, (0, _utils.uri)(_templateObject(), id), {
+                  normalize: normalizeJob
+                }));
 
-    var string = str;
-    if (typeof str === 'symbol') {
-        string = Symbol.prototype.toString.call(str);
-    } else if (typeof str !== 'string') {
-        string = String(str);
-    }
+              case 1:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this);
+      }));
 
-    if (charset === 'iso-8859-1') {
-        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {
-            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';
-        });
-    }
+      function get(_x) {
+        return _get.apply(this, arguments);
+      }
 
-    var out = '';
-    for (var i = 0; i < string.length; ++i) {
-        var c = string.charCodeAt(i);
+      return get;
+    }()
+    /**
+     * Update the job's state
+     * This does work only for jobs comming from @client triggers
+     *
+     * @param {JobDocument} job - io.cozy.jobs document
+     */
 
-        if (
-            c === 0x2D // -
-            || c === 0x2E // .
-            || c === 0x5F // _
-            || c === 0x7E // ~
-            || (c >= 0x30 && c <= 0x39) // 0-9
-            || (c >= 0x41 && c <= 0x5A) // a-z
-            || (c >= 0x61 && c <= 0x7A) // A-Z
-            || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )
-        ) {
-            out += string.charAt(i);
-            continue;
-        }
+  }, {
+    key: "update",
+    value: function () {
+      var _update = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(job) {
+        var jobResult;
+        return _regenerator.default.wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                if (!(job.worker !== 'client')) {
+                  _context2.next = 2;
+                  break;
+                }
 
-        if (c < 0x80) {
-            out = out + hexTable[c];
-            continue;
-        }
+                throw new Error("JobCollection.update only works for client workers. ".concat(job.worker, " given"));
 
-        if (c < 0x800) {
-            out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);
-            continue;
-        }
+              case 2:
+                _context2.next = 4;
+                return this.stackClient.fetchJSON('PATCH', "/jobs/".concat(job._id), {
+                  data: {
+                    type: JOBS_DOCTYPE,
+                    id: job._id,
+                    attributes: {
+                      state: job.attributes.state,
+                      error: job.attributes.error
+                    }
+                  }
+                });
 
-        if (c < 0xD800 || c >= 0xE000) {
-            out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);
-            continue;
-        }
+              case 4:
+                jobResult = _context2.sent;
+                return _context2.abrupt("return", normalizeJob(jobResult.data));
 
-        i += 1;
-        c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));
-        /* eslint operator-linebreak: [2, "before"] */
-        out += hexTable[0xF0 | (c >> 18)]
-            + hexTable[0x80 | ((c >> 12) & 0x3F)]
-            + hexTable[0x80 | ((c >> 6) & 0x3F)]
-            + hexTable[0x80 | (c & 0x3F)];
-    }
+              case 6:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2, this);
+      }));
 
-    return out;
-};
+      function update(_x2) {
+        return _update.apply(this, arguments);
+      }
 
-var compact = function compact(value) {
-    var queue = [{ obj: { o: value }, prop: 'o' }];
-    var refs = [];
+      return update;
+    }()
+    /**
+     * Polls a job state until it is finished
+     *
+     * `options.until` can be used to tweak when to stop waiting. It will be
+     * given the current job state. If true is returned, the awaiting is
+     * stopped.
+     */
 
-    for (var i = 0; i < queue.length; ++i) {
-        var item = queue[i];
-        var obj = item.obj[item.prop];
+  }, {
+    key: "waitFor",
+    value: function () {
+      var _waitFor = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(id) {
+        var _ref,
+            _ref$onUpdate,
+            onUpdate,
+            _ref$until,
+            until,
+            _ref$delay,
+            delay,
+            _ref$timeout,
+            timeout,
+            start,
+            jobData,
+            now,
+            _args3 = arguments;
 
-        var keys = Object.keys(obj);
-        for (var j = 0; j < keys.length; ++j) {
-            var key = keys[j];
-            var val = obj[key];
-            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {
-                queue.push({ obj: obj, prop: key });
-                refs.push(val);
-            }
-        }
-    }
+        return _regenerator.default.wrap(function _callee3$(_context3) {
+          while (1) {
+            switch (_context3.prev = _context3.next) {
+              case 0:
+                _ref = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {}, _ref$onUpdate = _ref.onUpdate, onUpdate = _ref$onUpdate === void 0 ? null : _ref$onUpdate, _ref$until = _ref.until, until = _ref$until === void 0 ? hasJobFinished : _ref$until, _ref$delay = _ref.delay, delay = _ref$delay === void 0 ? 5 * 1000 : _ref$delay, _ref$timeout = _ref.timeout, timeout = _ref$timeout === void 0 ? 60 * 5 * 1000 : _ref$timeout;
+                start = Date.now();
+                _context3.next = 4;
+                return this.get(id);
 
-    compactQueue(queue);
+              case 4:
+                jobData = _context3.sent.data.attributes;
 
-    return value;
-};
+              case 5:
+                if (!(!jobData || !until(jobData))) {
+                  _context3.next = 17;
+                  break;
+                }
 
-var isRegExp = function isRegExp(obj) {
-    return Object.prototype.toString.call(obj) === '[object RegExp]';
-};
+                _context3.next = 8;
+                return sleep(delay);
 
-var isBuffer = function isBuffer(obj) {
-    if (!obj || typeof obj !== 'object') {
-        return false;
-    }
+              case 8:
+                _context3.next = 10;
+                return this.get(id);
 
-    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
-};
+              case 10:
+                jobData = _context3.sent.data.attributes;
 
-var combine = function combine(a, b) {
-    return [].concat(a, b);
-};
+                if (onUpdate) {
+                  onUpdate(jobData);
+                }
 
-var maybeMap = function maybeMap(val, fn) {
-    if (isArray(val)) {
-        var mapped = [];
-        for (var i = 0; i < val.length; i += 1) {
-            mapped.push(fn(val[i]));
-        }
-        return mapped;
-    }
-    return fn(val);
-};
+                now = Date.now();
 
-module.exports = {
-    arrayToObject: arrayToObject,
-    assign: assign,
-    combine: combine,
-    compact: compact,
-    decode: decode,
-    encode: encode,
-    isBuffer: isBuffer,
-    isRegExp: isRegExp,
-    maybeMap: maybeMap,
-    merge: merge
-};
+                if (!(start - now > timeout)) {
+                  _context3.next = 15;
+                  break;
+                }
 
+                throw new Error('Timeout for JobCollection::waitFor');
 
-/***/ }),
-/* 574 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 15:
+                _context3.next = 5;
+                break;
 
-"use strict";
+              case 17:
+                return _context3.abrupt("return", jobData);
 
+              case 18:
+              case "end":
+                return _context3.stop();
+            }
+          }
+        }, _callee3, this);
+      }));
 
-var replace = String.prototype.replace;
-var percentTwenties = /%20/g;
+      function waitFor(_x3) {
+        return _waitFor.apply(this, arguments);
+      }
 
-var Format = {
-    RFC1738: 'RFC1738',
-    RFC3986: 'RFC3986'
-};
-
-module.exports = {
-    'default': Format.RFC3986,
-    formatters: {
-        RFC1738: function (value) {
-            return replace.call(value, percentTwenties, '+');
-        },
-        RFC3986: function (value) {
-            return String(value);
-        }
-    },
-    RFC1738: Format.RFC1738,
-    RFC3986: Format.RFC3986
-};
+      return waitFor;
+    }()
+  }]);
+  return JobCollection;
+}(_DocumentCollection2.default);
 
+var _default = JobCollection;
+exports.default = _default;
 
 /***/ }),
-/* 575 */
+/* 600 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var utils = __webpack_require__(573);
+var _interopRequireWildcard = __webpack_require__(277);
 
-var has = Object.prototype.hasOwnProperty;
-var isArray = Array.isArray;
+var _interopRequireDefault = __webpack_require__(1);
 
-var defaults = {
-    allowDots: false,
-    allowPrototypes: false,
-    allowSparse: false,
-    arrayLimit: 20,
-    charset: 'utf-8',
-    charsetSentinel: false,
-    comma: false,
-    decoder: utils.decode,
-    delimiter: '&',
-    depth: 5,
-    ignoreQueryPrefix: false,
-    interpretNumericEntities: false,
-    parameterLimit: 1000,
-    parseArrays: true,
-    plainObjects: false,
-    strictNullHandling: false
-};
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.KONNECTORS_DOCTYPE = void 0;
 
-var interpretNumericEntities = function (str) {
-    return str.replace(/&#(\d+);/g, function ($0, numberStr) {
-        return String.fromCharCode(parseInt(numberStr, 10));
-    });
-};
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-var parseArrayValue = function (val, options) {
-    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {
-        return val.split(',');
-    }
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-    return val;
-};
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-// This is what browsers will submit when the ✓ character occurs in an
-// application/x-www-form-urlencoded body and the encoding of the page containing
-// the form is iso-8859-1, or when the submitted form has an accept-charset
-// attribute of iso-8859-1. Presumably also with other charsets that do not contain
-// the ✓ character, such as us-ascii.
-var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.
-var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
-var parseValues = function parseQueryStringValues(str, options) {
-    var obj = {};
-    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str;
-    var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;
-    var parts = cleanStr.split(options.delimiter, limit);
-    var skipIndex = -1; // Keep track of where the utf8 sentinel was found
-    var i;
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
-    var charset = options.charset;
-    if (options.charsetSentinel) {
-        for (i = 0; i < parts.length; ++i) {
-            if (parts[i].indexOf('utf8=') === 0) {
-                if (parts[i] === charsetSentinel) {
-                    charset = 'utf-8';
-                } else if (parts[i] === isoSentinel) {
-                    charset = 'iso-8859-1';
-                }
-                skipIndex = i;
-                i = parts.length; // The eslint settings do not allow break;
-            }
-        }
-    }
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
-    for (i = 0; i < parts.length; ++i) {
-        if (i === skipIndex) {
-            continue;
-        }
-        var part = parts[i];
+var _pick = _interopRequireDefault(__webpack_require__(596));
 
-        var bracketEqualsPos = part.indexOf(']=');
-        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;
+var _AppCollection2 = _interopRequireDefault(__webpack_require__(479));
 
-        var key, val;
-        if (pos === -1) {
-            key = options.decoder(part, defaults.decoder, charset, 'key');
-            val = options.strictNullHandling ? null : '';
-        } else {
-            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');
-            val = utils.maybeMap(
-                parseArrayValue(part.slice(pos + 1), options),
-                function (encodedVal) {
-                    return options.decoder(encodedVal, defaults.decoder, charset, 'value');
-                }
-            );
-        }
+var _TriggerCollection = _interopRequireWildcard(__webpack_require__(601));
 
-        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {
-            val = interpretNumericEntities(val);
-        }
+var _DocumentCollection = __webpack_require__(491);
 
-        if (part.indexOf('[]=') > -1) {
-            val = isArray(val) ? [val] : val;
-        }
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
-        if (has.call(obj, key)) {
-            obj[key] = utils.combine(obj[key], val);
-        } else {
-            obj[key] = val;
-        }
-    }
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-    return obj;
-};
+var KONNECTORS_DOCTYPE = 'io.cozy.konnectors';
+exports.KONNECTORS_DOCTYPE = KONNECTORS_DOCTYPE;
 
-var parseObject = function (chain, val, options, valuesParsed) {
-    var leaf = valuesParsed ? val : parseArrayValue(val, options);
+var KonnectorCollection = /*#__PURE__*/function (_AppCollection) {
+  (0, _inherits2.default)(KonnectorCollection, _AppCollection);
 
-    for (var i = chain.length - 1; i >= 0; --i) {
-        var obj;
-        var root = chain[i];
+  var _super = _createSuper(KonnectorCollection);
 
-        if (root === '[]' && options.parseArrays) {
-            obj = [].concat(leaf);
-        } else {
-            obj = options.plainObjects ? Object.create(null) : {};
-            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;
-            var index = parseInt(cleanRoot, 10);
-            if (!options.parseArrays && cleanRoot === '') {
-                obj = { 0: leaf };
-            } else if (
-                !isNaN(index)
-                && root !== cleanRoot
-                && String(index) === cleanRoot
-                && index >= 0
-                && (options.parseArrays && index <= options.arrayLimit)
-            ) {
-                obj = [];
-                obj[index] = leaf;
-            } else if (cleanRoot !== '__proto__') {
-                obj[cleanRoot] = leaf;
-            }
-        }
+  function KonnectorCollection(stackClient) {
+    var _this;
 
-        leaf = obj;
-    }
+    (0, _classCallCheck2.default)(this, KonnectorCollection);
+    _this = _super.call(this, stackClient);
+    _this.doctype = KONNECTORS_DOCTYPE;
+    _this.endpoint = '/konnectors/';
+    return _this;
+  }
 
-    return leaf;
-};
+  (0, _createClass2.default)(KonnectorCollection, [{
+    key: "create",
+    value: function () {
+      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
+        return _regenerator.default.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                throw new Error('create() method is not available for konnectors');
 
-var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {
-    if (!givenKey) {
-        return;
-    }
+              case 1:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee);
+      }));
 
-    // Transform dot notation to bracket notation
-    var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey;
+      function create() {
+        return _create.apply(this, arguments);
+      }
 
-    // The regex chunks
+      return create;
+    }()
+  }, {
+    key: "destroy",
+    value: function () {
+      var _destroy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
+        return _regenerator.default.wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                throw new Error('destroy() method is not available for konnectors');
 
-    var brackets = /(\[[^[\]]*])/;
-    var child = /(\[[^[\]]*])/g;
+              case 1:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2);
+      }));
 
-    // Get the parent
+      function destroy() {
+        return _destroy.apply(this, arguments);
+      }
 
-    var segment = options.depth > 0 && brackets.exec(key);
-    var parent = segment ? key.slice(0, segment.index) : key;
+      return destroy;
+    }()
+    /**
+     * Find triggers for a particular konnector
+     *
+     * @param  {string} slug of the konnector
+     */
 
-    // Stash the parent if it exists
+  }, {
+    key: "findTriggersBySlug",
+    value: function () {
+      var _findTriggersBySlug = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(slug) {
+        var triggerCol, _yield$triggerCol$all, rawTriggers;
 
-    var keys = [];
-    if (parent) {
-        // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties
-        if (!options.plainObjects && has.call(Object.prototype, parent)) {
-            if (!options.allowPrototypes) {
-                return;
+        return _regenerator.default.wrap(function _callee3$(_context3) {
+          while (1) {
+            switch (_context3.prev = _context3.next) {
+              case 0:
+                triggerCol = new _TriggerCollection.default(this.stackClient);
+                _context3.next = 3;
+                return triggerCol.all({
+                  limit: null
+                });
+
+              case 3:
+                _yield$triggerCol$all = _context3.sent;
+                rawTriggers = _yield$triggerCol$all.data;
+                return _context3.abrupt("return", rawTriggers.map(function (x) {
+                  return x.attributes;
+                }).filter(function (triggerAttrs) {
+                  return (0, _TriggerCollection.isForKonnector)(triggerAttrs, slug);
+                }));
+
+              case 6:
+              case "end":
+                return _context3.stop();
             }
-        }
+          }
+        }, _callee3, this);
+      }));
 
-        keys.push(parent);
-    }
+      function findTriggersBySlug(_x) {
+        return _findTriggersBySlug.apply(this, arguments);
+      }
 
-    // Loop through children appending to the array until we hit depth
+      return findTriggersBySlug;
+    }()
+    /**
+     * Launch a trigger for a given konnector.
+     *
+     * @param  {string} slug - Konnector slug
+     * @param  {object} options - Options
+     * @param  {object} options.accountId - Pinpoint the account that should be used, useful if the user
+     * has more than 1 account for 1 konnector
+     */
 
-    var i = 0;
-    while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {
-        i += 1;
-        if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {
-            if (!options.allowPrototypes) {
-                return;
-            }
-        }
-        keys.push(segment[1]);
-    }
+  }, {
+    key: "launch",
+    value: function () {
+      var _launch = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(slug) {
+        var options,
+            triggerCol,
+            konnTriggers,
+            filteredTriggers,
+            filterAttrs,
+            _args4 = arguments;
+        return _regenerator.default.wrap(function _callee4$(_context4) {
+          while (1) {
+            switch (_context4.prev = _context4.next) {
+              case 0:
+                options = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : {};
+                triggerCol = new _TriggerCollection.default(this.stackClient);
+                _context4.next = 4;
+                return this.findTriggersBySlug(slug);
 
-    // If there's a remainder, just add whatever is left
+              case 4:
+                konnTriggers = _context4.sent;
+                filteredTriggers = options.accountId ? konnTriggers.filter(function (triggerAttrs) {
+                  return (0, _TriggerCollection.isForAccount)(triggerAttrs, options.accountId);
+                }) : konnTriggers;
 
-    if (segment) {
-        keys.push('[' + key.slice(segment.index) + ']');
-    }
+                if (!(filteredTriggers.length === 1)) {
+                  _context4.next = 10;
+                  break;
+                }
 
-    return parseObject(keys, val, options, valuesParsed);
-};
+                return _context4.abrupt("return", triggerCol.launch(konnTriggers[0]));
 
-var normalizeParseOptions = function normalizeParseOptions(opts) {
-    if (!opts) {
-        return defaults;
-    }
+              case 10:
+                filterAttrs = JSON.stringify((0, _pick.default)({
+                  slug: slug,
+                  accountId: options.accountId
+                }));
 
-    if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {
-        throw new TypeError('Decoder has to be a function.');
-    }
+                if (!(filteredTriggers.length === 0)) {
+                  _context4.next = 15;
+                  break;
+                }
 
-    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {
-        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');
-    }
-    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;
+                throw new Error("No trigger found for ".concat(filterAttrs));
 
-    return {
-        allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,
-        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,
-        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,
-        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,
-        charset: charset,
-        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,
-        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,
-        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,
-        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,
-        // eslint-disable-next-line no-implicit-coercion, no-extra-parens
-        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,
-        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,
-        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,
-        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,
-        parseArrays: opts.parseArrays !== false,
-        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,
-        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling
-    };
-};
+              case 15:
+                if (!(filteredTriggers.length > 1)) {
+                  _context4.next = 17;
+                  break;
+                }
 
-module.exports = function (str, opts) {
-    var options = normalizeParseOptions(opts);
+                throw new Error("More than 1 trigger found for ".concat(filterAttrs));
 
-    if (str === '' || str === null || typeof str === 'undefined') {
-        return options.plainObjects ? Object.create(null) : {};
-    }
+              case 17:
+              case "end":
+                return _context4.stop();
+            }
+          }
+        }, _callee4, this);
+      }));
 
-    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;
-    var obj = options.plainObjects ? Object.create(null) : {};
+      function launch(_x2) {
+        return _launch.apply(this, arguments);
+      }
 
-    // Iterate over the keys and setup the new object
+      return launch;
+    }()
+    /**
+     * Updates a konnector
+     *
+     * @param  {string} slug - Konnector slug
+     * @param  {object} options - Options
+     * @param  {object} options.source - Specify the source (ex: registry://slug/stable)
+     * @param  {boolean} options.sync - Wait for konnector to be updated, otherwise the job
+     * is just scheduled
+     */
 
-    var keys = Object.keys(tempObj);
-    for (var i = 0; i < keys.length; ++i) {
-        var key = keys[i];
-        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');
-        obj = utils.merge(obj, newObj, options);
-    }
+  }, {
+    key: "update",
+    value: function () {
+      var _update = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(slug) {
+        var options,
+            source,
+            sync,
+            reqOptions,
+            rawKonnector,
+            _args5 = arguments;
+        return _regenerator.default.wrap(function _callee5$(_context5) {
+          while (1) {
+            switch (_context5.prev = _context5.next) {
+              case 0:
+                options = _args5.length > 1 && _args5[1] !== undefined ? _args5[1] : {};
 
-    if (options.allowSparse === true) {
-        return obj;
-    }
+                if (slug) {
+                  _context5.next = 3;
+                  break;
+                }
 
-    return utils.compact(obj);
-};
+                throw new Error('Cannot call update with no slug');
 
+              case 3:
+                source = options.source || null;
+                sync = options.sync || false;
+                reqOptions = sync ? {
+                  headers: {
+                    Accept: 'text/event-stream'
+                  }
+                } : {};
+                _context5.next = 8;
+                return this.stackClient.fetchJSON('PUT', "/konnectors/".concat(slug) + (source ? "?Source=".concat(source) : ''), reqOptions);
+
+              case 8:
+                rawKonnector = _context5.sent;
+                return _context5.abrupt("return", (0, _DocumentCollection.normalizeDoc)(rawKonnector));
+
+              case 10:
+              case "end":
+                return _context5.stop();
+            }
+          }
+        }, _callee5, this);
+      }));
+
+      function update(_x3) {
+        return _update.apply(this, arguments);
+      }
+
+      return update;
+    }()
+  }]);
+  return KonnectorCollection;
+}(_AppCollection2.default);
+
+var _default = KonnectorCollection;
+exports.default = _default;
 
 /***/ }),
-/* 576 */
+/* 601 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
+var _interopRequireWildcard = __webpack_require__(277);
+
 var _interopRequireDefault = __webpack_require__(1);
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.isMatchingIndex = exports.getIndexFields = exports.transformSort = exports.getIndexNameFromFields = exports.normalizeDesignDoc = void 0;
+exports.default = exports.isForAccount = exports.isForKonnector = exports.normalizeTrigger = exports.TRIGGERS_DOCTYPE = exports.JOBS_DOCTYPE = void 0;
 
-var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
+var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(291));
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
 
-var _head = _interopRequireDefault(__webpack_require__(531));
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-var _get = _interopRequireDefault(__webpack_require__(399));
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-var _isEqual = _interopRequireDefault(__webpack_require__(577));
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+var _get3 = _interopRequireDefault(__webpack_require__(602));
 
-/**
- * @typedef {Object} MangoPartialFilter
- */
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
-/**
- * @typedef {object} MangoSelector
- */
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
-/**
- * @typedef {Array<object>} MangoSort
- */
-
-/**
- * @typedef {object} MangoQueryOptions
- * @property {MangoSelector} [selector] Selector
- * @property {MangoSort} [sort] The sorting parameters
- * @property {Array<string>} [fields] The fields to return
- * @property {Array<string>} [partialFilterFields] The partial filter fields
- * @property {number|null} [limit] For pagination, the number of results to return
- * @property {number|null} [skip] For skip-based pagination, the number of referenced files to skip
- * @property {string|null} [indexId] The _id of the CouchDB index to use for this request
- * @property {string|null} [bookmark] For bookmark-based pagination, the document _id to start from
- * @property {Array<string>} [indexedFields]
- * @property {string} [use_index] Name of the index to use
- * @property {boolean} [execution_stats] If true, we request the stats from Couch
- * @property {MangoPartialFilter|null} [partialFilter] An optional partial filter
- */
-
-/**
- * Attributes representing a design doc
- *
- * @typedef {object} DesignDoc
- *
- * @property {string} _id - Id of the design doc. Can be named, e.g. '_design/by_indexed_attribute' or not, e.g. '_design/12345'
- * @property {string} language - The index language. Can be 'query' for mango index or 'javascript' for views.
- * @property {object} views - Views definition, i.e. the index.
- * @property {string} _rev - Rev version
- */
-var normalizeDesignDoc = function normalizeDesignDoc(designDoc) {
-  var id = designDoc._id || designDoc.id;
-  return _objectSpread({
-    id: id,
-    _id: id
-  }, designDoc.doc);
-};
-/**
- * Name an index, based on its indexed fields and partial filter.
- *
- * It follows this naming convention:
- * `by_{indexed_field1}_and_{indexed_field2}_filter_{partial_filter_field1}_and_{partial_filter_field2}
- *
- * @param {Array<string>} fields - The indexed fields
- * @param {object} params - The additional params
- * @param {Array<string>=} params.partialFilterFields - The partial filter fields
- * @returns {string} The index name, built from the fields
- */
-
-
-exports.normalizeDesignDoc = normalizeDesignDoc;
-
-var getIndexNameFromFields = function getIndexNameFromFields(fields) {
-  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
-      partialFilterFields = _ref.partialFilterFields;
-
-  var indexName = "by_".concat(fields.join('_and_'));
-  return partialFilterFields ? "".concat(indexName, "_filter_").concat(partialFilterFields.join('_and_')) : indexName;
-};
-/**
- * Transform sort into Array
- *
- * @param {MangoSort} sort - The sorting parameters
- * @returns {MangoSort}
- */
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-exports.getIndexNameFromFields = getIndexNameFromFields;
+var _Collection = _interopRequireWildcard(__webpack_require__(489));
 
-var transformSort = function transformSort(sort) {
-  if (!sort || Array.isArray(sort)) {
-    return sort;
-  }
+var _DocumentCollection2 = _interopRequireWildcard(__webpack_require__(491));
 
-  throw Error('Passing an object to the "sort" is not supported');
-};
-/**
- * Compute fields that should be indexed for a mango
- * query to work
- *
- *
- * @returns {Array} - Fields to index
- */
+var _JobCollection = __webpack_require__(599);
 
+var _utils = __webpack_require__(521);
 
-exports.transformSort = transformSort;
+var _errors = __webpack_require__(582);
 
-var getIndexFields = function getIndexFields(
-/** @type {MangoQueryOptions} */
-_ref2) {
-  var selector = _ref2.selector,
-      partialFilter = _ref2.partialFilter,
-      _ref2$sort = _ref2.sort,
-      sort = _ref2$sort === void 0 ? [] : _ref2$sort;
-  return Array.from(new Set([].concat((0, _toConsumableArray2.default)(sort.map(function (sortOption) {
-    return (0, _head.default)(Object.keys(sortOption));
-  })), (0, _toConsumableArray2.default)(selector ? Object.keys(selector) : []), (0, _toConsumableArray2.default)(partialFilter ? Object.keys(partialFilter) : []))));
-};
-/**
- * Check if an index is matching the given fields
- *
- * @param {DesignDoc} index - The index to check
- * @param {Array} fields - The fields that the index must have
- * @param {object} partialFilter - An optional partial filter
- * @returns {boolean} True if the index is matches the given fields
- */
+function _templateObject4() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/jobs/triggers/", "/launch"]);
 
+  _templateObject4 = function _templateObject4() {
+    return data;
+  };
 
-exports.getIndexFields = getIndexFields;
+  return data;
+}
 
-var isMatchingIndex = function isMatchingIndex(index, fields, partialFilter) {
-  var viewId = Object.keys((0, _get.default)(index, "views"))[0];
-  var fieldsInIndex = Object.keys((0, _get.default)(index, "views.".concat(viewId, ".map.fields")));
+function _templateObject3() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/jobs/triggers/", ""]);
 
-  if ((0, _isEqual.default)(fieldsInIndex, fields)) {
-    var partialFilterInIndex = (0, _get.default)(index, "views.".concat(viewId, ".map.partial_filter_selector"));
+  _templateObject3 = function _templateObject3() {
+    return data;
+  };
 
-    if (!partialFilter && !partialFilterInIndex) {
-      return true;
-    }
+  return data;
+}
 
-    if ((0, _isEqual.default)(partialFilter, partialFilterInIndex)) {
-      return true;
-    }
-  }
+function _templateObject2() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/jobs/triggers/", ""]);
 
-  return false;
-};
+  _templateObject2 = function _templateObject2() {
+    return data;
+  };
 
-exports.isMatchingIndex = isMatchingIndex;
+  return data;
+}
 
-/***/ }),
-/* 577 */
-/***/ (function(module, exports, __webpack_require__) {
+function _templateObject() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/jobs/triggers"]);
 
-var baseIsEqual = __webpack_require__(371);
+  _templateObject = function _templateObject() {
+    return data;
+  };
 
-/**
- * Performs a deep comparison between two values to determine if they are
- * equivalent.
- *
- * **Note:** This method supports comparing arrays, array buffers, booleans,
- * date objects, error objects, maps, numbers, `Object` objects, regexes,
- * sets, strings, symbols, and typed arrays. `Object` objects are compared
- * by their own, not inherited, enumerable properties. Functions and DOM
- * nodes are compared by strict equality, i.e. `===`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.isEqual(object, other);
- * // => true
- *
- * object === other;
- * // => false
- */
-function isEqual(value, other) {
-  return baseIsEqual(value, other);
+  return data;
 }
 
-module.exports = isEqual;
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-/***/ }),
-/* 578 */
-/***/ (function(module, exports, __webpack_require__) {
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-"use strict";
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
+var JOBS_DOCTYPE = 'io.cozy.jobs';
+exports.JOBS_DOCTYPE = JOBS_DOCTYPE;
+var TRIGGERS_DOCTYPE = 'io.cozy.triggers';
+exports.TRIGGERS_DOCTYPE = TRIGGERS_DOCTYPE;
 
-var _interopRequireDefault = __webpack_require__(1);
+var normalizeTrigger = function normalizeTrigger(trigger) {
+  return _objectSpread(_objectSpread(_objectSpread({}, trigger), (0, _DocumentCollection2.normalizeDoc)(trigger, TRIGGERS_DOCTYPE)), trigger.attributes);
+};
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.buildURL = exports.encode = void 0;
+exports.normalizeTrigger = normalizeTrigger;
 
-var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
+var isForKonnector = function isForKonnector(triggerAttrs, slug) {
+  return triggerAttrs.worker === 'konnector' && triggerAttrs.message.konnector == slug;
+};
 
-var _pickBy = _interopRequireDefault(__webpack_require__(579));
+exports.isForKonnector = isForKonnector;
 
-/**
- * Encode a value of any type into a URI search param compatible string with a specific treatment for arrays which will keep their brackets (they do not with standard `toString()` method).
- *
- * Examples:
- *
- *   encodeValues([['io.cozy.files', 'abcd1234'], '12345'])
- *   // → '[[%22io.cozy.files%22,%22abcd1234%22],%2212345%22]'
- *
- *   encodeValues([['io.cozy.files', 'abcd1234'], '12345'].toString(), true)
- *   // → '%22io.cozy.files%2Cabcd1234%2C12345%22'
- *
- *   encodeValues([['io.cozy.files', 'abcd1234'], '12345'].toString(), false)
- *   // → 'io.cozy.files%2Cabcd1234%2C12345'
- *
- *   encodeValues('[1234]')
- *   // → %5B1234%5D
- *
- * @function
- * @private
- */
-var encodeValues = function encodeValues(values) {
-  var fromArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+var isForAccount = function isForAccount(triggerAttrs, accountId) {
+  return triggerAttrs.message.account == accountId;
+};
 
-  if (Array.isArray(values)) {
-    return '[' + values.map(function (v) {
-      return encodeValues(v, true);
-    }).join(',') + ']';
-  }
+exports.isForAccount = isForAccount;
 
-  return fromArray ? encodeURIComponent("\"".concat(values, "\"")) : encodeURIComponent(values);
-};
-/**
- * Encode an object as querystring, values are encoded as
- * URI components, keys are not.
- *
- * @function
- * @private
- */
+var buildParamsUrl = function buildParamsUrl(worker, type) {
+  var urlParams = new URLSearchParams();
 
+  if (worker) {
+    if (Array.isArray(worker.$in)) {
+      urlParams.set('Worker', worker.$in.join(','));
+    } else {
+      urlParams.set('Worker', worker);
+    }
+  }
 
-var encode = function encode(data) {
-  return Object.entries(data).map(function (_ref) {
-    var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
-        k = _ref2[0],
-        v = _ref2[1];
+  if (type) {
+    if (Array.isArray(type.$in)) {
+      urlParams.set('Type', type.$in.join(','));
+    } else {
+      urlParams.set('Type', type);
+    }
+  }
 
-    var encodedValue = encodeValues(v);
-    return "".concat(k, "=").concat(encodedValue);
-  }).join('&');
+  return urlParams.toString();
 };
 /**
- * Returns a URL from base url and a query parameter object.
- * Any undefined parameter is removed.
- *
- * @function
- * @private
+ * Implements `DocumentCollection` API along with specific methods for `io.cozy.triggers`.
  */
 
 
-exports.encode = encode;
+var TriggerCollection = /*#__PURE__*/function (_DocumentCollection) {
+  (0, _inherits2.default)(TriggerCollection, _DocumentCollection);
 
-var buildURL = function buildURL(url, params) {
-  var qs = encode((0, _pickBy.default)(params));
+  var _super = _createSuper(TriggerCollection);
 
-  if (qs) {
-    return "".concat(url, "?").concat(qs);
-  } else {
-    return url;
+  function TriggerCollection(stackClient) {
+    (0, _classCallCheck2.default)(this, TriggerCollection);
+    return _super.call(this, TRIGGERS_DOCTYPE, stackClient);
   }
-};
-
-exports.buildURL = buildURL;
+  /**
+   * Get the list of triggers.
+   *
+   * @see https://docs.cozy.io/en/cozy-stack/jobs/#get-jobstriggers
+   * @param  {{Worker}} options The fetch options: Worker allow to filter only triggers associated with a specific worker.
+   * @returns {{data}} The JSON API conformant response.
+   * @throws {FetchError}
+   */
 
-/***/ }),
-/* 579 */
-/***/ (function(module, exports, __webpack_require__) {
 
-var arrayMap = __webpack_require__(409),
-    baseIteratee = __webpack_require__(338),
-    basePickBy = __webpack_require__(580),
-    getAllKeysIn = __webpack_require__(465);
+  (0, _createClass2.default)(TriggerCollection, [{
+    key: "all",
+    value: function () {
+      var _all = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
+        var options,
+            resp,
+            _args = arguments;
+        return _regenerator.default.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                options = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
+                _context.prev = 1;
+                _context.next = 4;
+                return this.stackClient.fetchJSON('GET', "/jobs/triggers");
 
-/**
- * Creates an object composed of the `object` properties `predicate` returns
- * truthy for. The predicate is invoked with two arguments: (value, key).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The source object.
- * @param {Function} [predicate=_.identity] The function invoked per property.
- * @returns {Object} Returns the new object.
- * @example
- *
- * var object = { 'a': 1, 'b': '2', 'c': 3 };
- *
- * _.pickBy(object, _.isNumber);
- * // => { 'a': 1, 'c': 3 }
- */
-function pickBy(object, predicate) {
-  if (object == null) {
-    return {};
-  }
-  var props = arrayMap(getAllKeysIn(object), function(prop) {
-    return [prop];
-  });
-  predicate = baseIteratee(predicate);
-  return basePickBy(object, props, function(value, path) {
-    return predicate(value, path[0]);
-  });
-}
+              case 4:
+                resp = _context.sent;
+                return _context.abrupt("return", {
+                  data: resp.data.map(function (row) {
+                    return normalizeTrigger(row, TRIGGERS_DOCTYPE);
+                  }),
+                  meta: {
+                    count: resp.data.length
+                  },
+                  next: false,
+                  skip: 0
+                });
 
-module.exports = pickBy;
+              case 8:
+                _context.prev = 8;
+                _context.t0 = _context["catch"](1);
+                return _context.abrupt("return", (0, _Collection.dontThrowNotFoundError)(_context.t0));
 
+              case 11:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this, [[1, 8]]);
+      }));
 
-/***/ }),
-/* 580 */
-/***/ (function(module, exports, __webpack_require__) {
+      function all() {
+        return _all.apply(this, arguments);
+      }
 
-var baseGet = __webpack_require__(400),
-    baseSet = __webpack_require__(581),
-    castPath = __webpack_require__(401);
+      return all;
+    }()
+    /**
+     * Creates a Trigger document
+     *
+     * @see https://docs.cozy.io/en/cozy-stack/jobs/#post-jobstriggers
+     * @param  {object}  attributes Trigger's attributes
+     * @returns {object}  Stack response, containing trigger document under `data` attribute.
+     */
 
-/**
- * The base implementation of  `_.pickBy` without support for iteratee shorthands.
- *
- * @private
- * @param {Object} object The source object.
- * @param {string[]} paths The property paths to pick.
- * @param {Function} predicate The function invoked per property.
- * @returns {Object} Returns the new object.
- */
-function basePickBy(object, paths, predicate) {
-  var index = -1,
-      length = paths.length,
-      result = {};
+  }, {
+    key: "create",
+    value: function () {
+      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(attributes) {
+        var path, resp;
+        return _regenerator.default.wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                path = (0, _utils.uri)(_templateObject());
+                _context2.next = 3;
+                return this.stackClient.fetchJSON('POST', path, {
+                  data: {
+                    attributes: attributes
+                  }
+                });
 
-  while (++index < length) {
-    var path = paths[index],
-        value = baseGet(object, path);
+              case 3:
+                resp = _context2.sent;
+                return _context2.abrupt("return", {
+                  data: normalizeTrigger(resp.data)
+                });
 
-    if (predicate(value, path)) {
-      baseSet(result, castPath(path, object), value);
-    }
-  }
-  return result;
-}
+              case 5:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2, this);
+      }));
 
-module.exports = basePickBy;
+      function create(_x) {
+        return _create.apply(this, arguments);
+      }
 
+      return create;
+    }()
+    /**
+     * Deletes a trigger
+     *
+     * @see https://docs.cozy.io/en/cozy-stack/jobs/#delete-jobstriggerstrigger-id
+     * @param  {object} document The trigger to delete — must have an _id field
+     * @returns {object} The deleted document
+     */
 
-/***/ }),
-/* 581 */
-/***/ (function(module, exports, __webpack_require__) {
+  }, {
+    key: "destroy",
+    value: function () {
+      var _destroy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(document) {
+        var _id;
 
-var assignValue = __webpack_require__(452),
-    castPath = __webpack_require__(401),
-    isIndex = __webpack_require__(327),
-    isObject = __webpack_require__(310),
-    toKey = __webpack_require__(410);
+        return _regenerator.default.wrap(function _callee3$(_context3) {
+          while (1) {
+            switch (_context3.prev = _context3.next) {
+              case 0:
+                _id = document._id;
 
-/**
- * The base implementation of `_.set`.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {*} value The value to set.
- * @param {Function} [customizer] The function to customize path creation.
- * @returns {Object} Returns `object`.
- */
-function baseSet(object, path, value, customizer) {
-  if (!isObject(object)) {
-    return object;
-  }
-  path = castPath(path, object);
+                if (_id) {
+                  _context3.next = 3;
+                  break;
+                }
 
-  var index = -1,
-      length = path.length,
-      lastIndex = length - 1,
-      nested = object;
+                throw new Error('TriggerCollection.destroy needs a document with an _id');
 
-  while (nested != null && ++index < length) {
-    var key = toKey(path[index]),
-        newValue = value;
+              case 3:
+                _context3.next = 5;
+                return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject2(), _id));
 
-    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
-      return object;
-    }
+              case 5:
+                return _context3.abrupt("return", {
+                  data: normalizeTrigger(_objectSpread(_objectSpread({}, document), {}, {
+                    _deleted: true
+                  }))
+                });
 
-    if (index != lastIndex) {
-      var objValue = nested[key];
-      newValue = customizer ? customizer(objValue, key, nested) : undefined;
-      if (newValue === undefined) {
-        newValue = isObject(objValue)
-          ? objValue
-          : (isIndex(path[index + 1]) ? [] : {});
+              case 6:
+              case "end":
+                return _context3.stop();
+            }
+          }
+        }, _callee3, this);
+      }));
+
+      function destroy(_x2) {
+        return _destroy.apply(this, arguments);
       }
-    }
-    assignValue(nested, key, newValue);
-    nested = nested[key];
-  }
-  return object;
-}
 
-module.exports = baseSet;
+      return destroy;
+    }()
+    /**
+     *
+     * Be warned, ATM /jobs/triggers does not return the same informations
+     * than /data/io.cozy.triggers (used by the super.find method).
+     *
+     * See https://github.com/cozy/cozy-stack/pull/2010
+     *
+     * @param {object} selector - Which kind of worker {konnector,service}
+     * @param {object} options - Options
+     * @returns {{data, meta, skip, next}} The JSON API conformant response.
+     * @throws {FetchError}
+     */
 
+  }, {
+    key: "find",
+    value: function () {
+      var _find = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
+        var selector,
+            options,
+            worker,
+            type,
+            rest,
+            hasOnlyWorkerAndType,
+            url,
+            resp,
+            _args4 = arguments;
+        return _regenerator.default.wrap(function _callee4$(_context4) {
+          while (1) {
+            switch (_context4.prev = _context4.next) {
+              case 0:
+                selector = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : {};
+                options = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : {};
+                worker = selector.worker, type = selector.type, rest = (0, _objectWithoutProperties2.default)(selector, ["worker", "type"]);
+                hasOnlyWorkerAndType = Object.keys(rest).length === 0;
 
-/***/ }),
-/* 582 */
-/***/ (function(module, exports, __webpack_require__) {
+                if (!hasOnlyWorkerAndType) {
+                  _context4.next = 18;
+                  break;
+                }
 
-"use strict";
+                // @see https://github.com/cozy/cozy-stack/blob/master/docs/jobs.md#get-jobstriggers
+                url = "/jobs/triggers?".concat(buildParamsUrl(worker, type));
+                _context4.prev = 6;
+                _context4.next = 9;
+                return this.stackClient.fetchJSON('GET', url);
 
+              case 9:
+                resp = _context4.sent;
+                return _context4.abrupt("return", {
+                  data: resp.data.map(function (row) {
+                    return normalizeTrigger(row, TRIGGERS_DOCTYPE);
+                  }),
+                  meta: {
+                    count: resp.data.length
+                  },
+                  next: false,
+                  skip: 0
+                });
 
-var _interopRequireDefault = __webpack_require__(1);
+              case 13:
+                _context4.prev = 13;
+                _context4.t0 = _context4["catch"](6);
+                return _context4.abrupt("return", (0, _Collection.dontThrowNotFoundError)(_context4.t0));
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.FetchError = exports.default = void 0;
+              case 16:
+                _context4.next = 19;
+                break;
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+              case 18:
+                return _context4.abrupt("return", (0, _get3.default)((0, _getPrototypeOf2.default)(TriggerCollection.prototype), "find", this).call(this, selector, options));
 
-var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(483));
+              case 19:
+              case "end":
+                return _context4.stop();
+            }
+          }
+        }, _callee4, this, [[6, 13]]);
+      }));
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+      function find() {
+        return _find.apply(this, arguments);
+      }
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+      return find;
+    }()
+  }, {
+    key: "get",
+    value: function () {
+      var _get2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(id) {
+        return _regenerator.default.wrap(function _callee5$(_context5) {
+          while (1) {
+            switch (_context5.prev = _context5.next) {
+              case 0:
+                return _context5.abrupt("return", _Collection.default.get(this.stackClient, (0, _utils.uri)(_templateObject3(), id), {
+                  normalize: normalizeTrigger
+                }));
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+              case 1:
+              case "end":
+                return _context5.stop();
+            }
+          }
+        }, _callee5, this);
+      }));
 
-var _wrapNativeSuper2 = _interopRequireDefault(__webpack_require__(583));
+      function get(_x3) {
+        return _get2.apply(this, arguments);
+      }
 
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+      return get;
+    }()
+    /**
+     * Force given trigger execution.
+     *
+     * @see https://docs.cozy.io/en/cozy-stack/jobs/#post-jobstriggerstrigger-idlaunch
+     * @param {object} trigger Trigger to launch
+     * @returns {object} Stack response, containing job launched by trigger, under `data` attribute.
+     */
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+  }, {
+    key: "launch",
+    value: function () {
+      var _launch = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(trigger) {
+        var path, resp;
+        return _regenerator.default.wrap(function _callee6$(_context6) {
+          while (1) {
+            switch (_context6.prev = _context6.next) {
+              case 0:
+                path = (0, _utils.uri)(_templateObject4(), trigger._id);
+                _context6.next = 3;
+                return this.stackClient.fetchJSON('POST', path);
 
-var EXPIRED_TOKEN = /Expired token/;
-var CLIENT_NOT_FOUND = /Client not found/;
-var INVALID_TOKEN = /Invalid JWT token/;
-var INVALID_TOKEN_ALT = /Invalid token/;
-var UNREGISTERED_CLIENT = /the client must be registered/;
-var _default = {
-  EXPIRED_TOKEN: EXPIRED_TOKEN,
-  CLIENT_NOT_FOUND: CLIENT_NOT_FOUND,
-  INVALID_TOKEN: INVALID_TOKEN,
-  INVALID_TOKEN_ALT: INVALID_TOKEN_ALT,
-  UNREGISTERED_CLIENT: UNREGISTERED_CLIENT
-};
-exports.default = _default;
-var invalidTokenRegex = /invalid_token/;
-var expiredTokenRegex = /access_token_expired/;
+              case 3:
+                resp = _context6.sent;
+                return _context6.abrupt("return", {
+                  data: (0, _JobCollection.normalizeJob)(resp.data)
+                });
 
-var getWwwAuthenticateErrorMessage = function getWwwAuthenticateErrorMessage(response) {
-  var _response$headers;
+              case 5:
+              case "end":
+                return _context6.stop();
+            }
+          }
+        }, _callee6, this);
+      }));
 
-  var wwwAuthenticateHeader = (_response$headers = response.headers) === null || _response$headers === void 0 ? void 0 : _response$headers.get('www-authenticate');
-  if (!wwwAuthenticateHeader) return undefined;
-  if (expiredTokenRegex.test(wwwAuthenticateHeader)) return 'Expired token';
-  if (invalidTokenRegex.test(wwwAuthenticateHeader)) return 'Invalid token';
-};
+      function launch(_x4) {
+        return _launch.apply(this, arguments);
+      }
 
-var getReasonMessage = function getReasonMessage(reason, wwwAuthenticateErrorMessage) {
-  // As for now we only want to use `reason.error` over `reason.message` if it's an unregistered client error
-  // For other scenarios, we want to still use `reason.message` over `JSON.stringify(reason)` for better backward compatibility
-  var isUnregisteredError = typeof reason.error === 'string' && UNREGISTERED_CLIENT.test(reason.error) ? reason.error : undefined;
-  return isUnregisteredError || reason.message || wwwAuthenticateErrorMessage || (typeof reason === 'string' ? reason : JSON.stringify(reason));
-};
+      return launch;
+    }()
+  }, {
+    key: "update",
+    value: function () {
+      var _update = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
+        return _regenerator.default.wrap(function _callee7$(_context7) {
+          while (1) {
+            switch (_context7.prev = _context7.next) {
+              case 0:
+                throw new Error('update() method is not available for triggers');
 
-var FetchError = /*#__PURE__*/function (_Error) {
-  (0, _inherits2.default)(FetchError, _Error);
+              case 1:
+              case "end":
+                return _context7.stop();
+            }
+          }
+        }, _callee7);
+      }));
 
-  var _super = _createSuper(FetchError);
+      function update() {
+        return _update.apply(this, arguments);
+      }
 
-  function FetchError(response, reason) {
-    var _Error$captureStackTr;
+      return update;
+    }()
+  }]);
+  return TriggerCollection;
+}(_DocumentCollection2.default);
 
-    var _this;
+TriggerCollection.normalizeDoctype = _DocumentCollection2.default.normalizeDoctypeJsonApi;
+var _default = TriggerCollection;
+exports.default = _default;
 
-    (0, _classCallCheck2.default)(this, FetchError);
-    _this = _super.call(this);
-    (_Error$captureStackTr = Error.captureStackTrace) === null || _Error$captureStackTr === void 0 ? void 0 : _Error$captureStackTr.call(Error, (0, _assertThisInitialized2.default)(_this), _this.constructor); // WARN We have to hardcode this because babel doesn't play nice when extending Error
+/***/ }),
+/* 602 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    _this.name = 'FetchError';
-    _this.response = response;
-    _this.url = response.url;
-    _this.status = response.status;
-    _this.reason = reason;
+var superPropBase = __webpack_require__(603);
 
-    if (reason === null) {
-      throw new Error("FetchError received a ".concat(response.status, " error without a Response Body when calling ").concat(response.url));
-    }
+function _get() {
+  if (typeof Reflect !== "undefined" && Reflect.get) {
+    module.exports = _get = Reflect.get.bind(), module.exports.__esModule = true, module.exports["default"] = module.exports;
+  } else {
+    module.exports = _get = function _get(target, property, receiver) {
+      var base = superPropBase(target, property);
+      if (!base) return;
+      var desc = Object.getOwnPropertyDescriptor(base, property);
 
-    var wwwAuthenticateErrorMessage = getWwwAuthenticateErrorMessage(response);
-    Object.defineProperty((0, _assertThisInitialized2.default)(_this), 'message', {
-      value: getReasonMessage(reason, wwwAuthenticateErrorMessage)
-    });
-    return _this;
+      if (desc.get) {
+        return desc.get.call(arguments.length < 3 ? target : receiver);
+      }
+
+      return desc.value;
+    }, module.exports.__esModule = true, module.exports["default"] = module.exports;
   }
 
-  return FetchError;
-}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
+  return _get.apply(this, arguments);
+}
 
-exports.FetchError = FetchError;
+module.exports = _get, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
 /***/ }),
-/* 583 */
+/* 603 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var getPrototypeOf = __webpack_require__(484);
 
-var setPrototypeOf = __webpack_require__(481);
-
-var isNativeFunction = __webpack_require__(584);
-
-var construct = __webpack_require__(585);
-
-function _wrapNativeSuper(Class) {
-  var _cache = typeof Map === "function" ? new Map() : undefined;
-
-  module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {
-    if (Class === null || !isNativeFunction(Class)) return Class;
-
-    if (typeof Class !== "function") {
-      throw new TypeError("Super expression must either be null or a function");
-    }
-
-    if (typeof _cache !== "undefined") {
-      if (_cache.has(Class)) return _cache.get(Class);
-
-      _cache.set(Class, Wrapper);
-    }
-
-    function Wrapper() {
-      return construct(Class, arguments, getPrototypeOf(this).constructor);
-    }
+function _superPropBase(object, property) {
+  while (!Object.prototype.hasOwnProperty.call(object, property)) {
+    object = getPrototypeOf(object);
+    if (object === null) break;
+  }
 
-    Wrapper.prototype = Object.create(Class.prototype, {
-      constructor: {
-        value: Wrapper,
-        enumerable: false,
-        writable: true,
-        configurable: true
-      }
-    });
-    return setPrototypeOf(Wrapper, Class);
-  }, module.exports.__esModule = true, module.exports["default"] = module.exports;
-  return _wrapNativeSuper(Class);
+  return object;
 }
 
-module.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports["default"] = module.exports;
+module.exports = _superPropBase, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
 /***/ }),
-/* 584 */
-/***/ (function(module, exports) {
+/* 604 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function _isNativeFunction(fn) {
-  return Function.toString.call(fn).indexOf("[native code]") !== -1;
-}
+"use strict";
 
-module.exports = _isNativeFunction, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
-/***/ }),
-/* 585 */
-/***/ (function(module, exports, __webpack_require__) {
+var _interopRequireWildcard = __webpack_require__(277);
 
-var setPrototypeOf = __webpack_require__(481);
+var _interopRequireDefault = __webpack_require__(1);
 
-var isNativeReflectConstruct = __webpack_require__(586);
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.getSharingRules = exports.BITWARDEN_CIPHERS_DOCTYPE = exports.BITWARDEN_ORGANIZATIONS_DOCTYPE = exports.SHARING_DOCTYPE = void 0;
 
-function _construct(Parent, args, Class) {
-  if (isNativeReflectConstruct()) {
-    module.exports = _construct = Reflect.construct.bind(), module.exports.__esModule = true, module.exports["default"] = module.exports;
-  } else {
-    module.exports = _construct = function _construct(Parent, args, Class) {
-      var a = [null];
-      a.push.apply(a, args);
-      var Constructor = Function.bind.apply(Parent, a);
-      var instance = new Constructor();
-      if (Class) setPrototypeOf(instance, Class.prototype);
-      return instance;
-    }, module.exports.__esModule = true, module.exports["default"] = module.exports;
-  }
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-  return _construct.apply(null, arguments);
-}
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-module.exports = _construct, module.exports.__esModule = true, module.exports["default"] = module.exports;
+var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
 
-/***/ }),
-/* 586 */
-/***/ (function(module, exports) {
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-function _isNativeReflectConstruct() {
-  if (typeof Reflect === "undefined" || !Reflect.construct) return false;
-  if (Reflect.construct.sham) return false;
-  if (typeof Proxy === "function") return true;
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-  try {
-    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
-    return true;
-  } catch (e) {
-    return false;
-  }
-}
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-module.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports["default"] = module.exports;
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
-/***/ }),
-/* 587 */
-/***/ (function(module, exports, __webpack_require__) {
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
-"use strict";
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
+var _DocumentCollection2 = _interopRequireWildcard(__webpack_require__(491));
 
-var _interopRequireDefault = __webpack_require__(1);
+var _FileCollection = __webpack_require__(590);
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
+var _utils = __webpack_require__(521);
 
-var _minilog = _interopRequireDefault(__webpack_require__(499));
+var _logger = _interopRequireDefault(__webpack_require__(587));
 
-var logger = (0, _minilog.default)('cozy-stack-client');
+function _templateObject6() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/sharings/", "/recipients"]);
 
-_minilog.default.suggest.deny('cozy-stack-client', 'info');
+  _templateObject6 = function _templateObject6() {
+    return data;
+  };
 
-var _default = logger;
-exports.default = _default;
+  return data;
+}
 
-/***/ }),
-/* 588 */
-/***/ (function(module, exports, __webpack_require__) {
+function _templateObject5() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/sharings/", "/recipients/self"]);
 
-"use strict";
+  _templateObject5 = function _templateObject5() {
+    return data;
+  };
 
+  return data;
+}
 
-var _interopRequireDefault = __webpack_require__(1);
+function _templateObject4() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/sharings/", "/recipients/", ""]);
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
+  _templateObject4 = function _templateObject4() {
+    return data;
+  };
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+  return data;
+}
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+function _templateObject3() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/sharings/", "/recipients"]);
 
-var AppToken = /*#__PURE__*/function () {
-  function AppToken(token) {
-    (0, _classCallCheck2.default)(this, AppToken);
-    this.token = token || '';
-  }
+  _templateObject3 = function _templateObject3() {
+    return data;
+  };
 
-  (0, _createClass2.default)(AppToken, [{
-    key: "toAuthHeader",
-    value: function toAuthHeader() {
-      return 'Bearer ' + this.token;
-    }
-  }, {
-    key: "toBasicAuth",
-    value: function toBasicAuth() {
-      return "user:".concat(this.token, "@");
-    }
-    /**
-     * Get the app token string
-     *
-     * @see CozyStackClient.getAccessToken
-     * @returns {string} token
-     */
+  return data;
+}
 
-  }, {
-    key: "getAccessToken",
-    value: function getAccessToken() {
-      return this.token;
-    }
-  }]);
-  return AppToken;
-}();
+function _templateObject2() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/sharings/", ""]);
 
-exports.default = AppToken;
+  _templateObject2 = function _templateObject2() {
+    return data;
+  };
 
-/***/ }),
-/* 589 */
-/***/ (function(module, exports, __webpack_require__) {
+  return data;
+}
 
-"use strict";
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-var _interopRequireDefault = __webpack_require__(1);
+function _templateObject() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/sharings/doctype/", ""]);
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
+  _templateObject = function _templateObject() {
+    return data;
+  };
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+  return data;
+}
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
-var AccessToken = /*#__PURE__*/function () {
-  function AccessToken(dataArg) {
-    (0, _classCallCheck2.default)(this, AccessToken);
-    var data = dataArg;
-    if (typeof data === 'string') data = JSON.parse(data);
-    this.tokenType = data.token_type || data.tokenType;
-    this.accessToken = data.access_token || data.accessToken;
-    this.refreshToken = data.refresh_token || data.refreshToken;
-    this.scope = data.scope;
-  }
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-  (0, _createClass2.default)(AccessToken, [{
-    key: "toAuthHeader",
-    value: function toAuthHeader() {
-      return 'Bearer ' + this.accessToken;
-    }
-  }, {
-    key: "toBasicAuth",
-    value: function toBasicAuth() {
-      return "user:".concat(this.accessToken, "@");
-    }
-  }, {
-    key: "toJSON",
-    value: function toJSON() {
-      return {
-        tokenType: this.tokenType,
-        accessToken: this.accessToken,
-        refreshToken: this.refreshToken,
-        scope: this.scope
-      };
-    }
-  }, {
-    key: "toString",
-    value: function toString() {
-      return JSON.stringify(this.toJSON());
-    }
-    /**
-     * Get the access token string
-     *
-     * @see CozyStackClient.getAccessToken
-     * @returns {string} token
-     */
+var SHARING_DOCTYPE = 'io.cozy.sharings';
+exports.SHARING_DOCTYPE = SHARING_DOCTYPE;
+var BITWARDEN_ORGANIZATIONS_DOCTYPE = 'com.bitwarden.organizations';
+exports.BITWARDEN_ORGANIZATIONS_DOCTYPE = BITWARDEN_ORGANIZATIONS_DOCTYPE;
+var BITWARDEN_CIPHERS_DOCTYPE = 'com.bitwarden.ciphers';
+exports.BITWARDEN_CIPHERS_DOCTYPE = BITWARDEN_CIPHERS_DOCTYPE;
 
-  }, {
-    key: "getAccessToken",
-    value: function getAccessToken() {
-      return this.accessToken;
-    }
-  }]);
-  return AccessToken;
-}();
+var normalizeSharing = function normalizeSharing(sharing) {
+  return (0, _DocumentCollection2.normalizeDoc)(sharing, SHARING_DOCTYPE);
+};
+/**
+ * @typedef {object} Rule A sharing rule
+ * @property {string} title
+ * @property {string} doctype
+ * @property {Array} values
+ * @property {string=} add
+ * @property {string=} update
+ * @property {string=} remove
+ */
 
-exports.default = AccessToken;
+/**
+ * @typedef {object} Recipient An io.cozy.contact
+ */
 
-/***/ }),
-/* 590 */
-/***/ (function(module, exports, __webpack_require__) {
+/**
+ * @typedef {object} Sharing An io.cozy.sharings document
+ */
 
-"use strict";
+/**
+ * @typedef {object} SharingPolicy Define the add/update/remove policies for a sharing
+ * @property {string} add
+ * @property {string} update
+ * @property {string} remove
+ */
 
+/**
+ * @typedef {(undefined|'one-way'|'two-way')} SharingType Define how a document is synced between sharing's owner and receivers.
+ */
 
-var _interopRequireWildcard = __webpack_require__(277);
+/**
+ * @typedef {object} RelationshipItem Define a recipient that can be used as target of a sharing
+ * @property {string} id - Recipient's ID
+ * @property {string} type - Reciptient's type (should be 'io.cozy.contacts')
+ */
 
-var _interopRequireDefault = __webpack_require__(1);
+/**
+ * Implements the `DocumentCollection` API along with specific methods for
+ * `io.cozy.sharings`.
+ */
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = exports.isDirectory = exports.isFile = void 0;
 
-var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(291));
+var SharingCollection = /*#__PURE__*/function (_DocumentCollection) {
+  (0, _inherits2.default)(SharingCollection, _DocumentCollection);
 
-var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
+  var _super = _createSuper(SharingCollection);
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+  function SharingCollection() {
+    (0, _classCallCheck2.default)(this, SharingCollection);
+    return _super.apply(this, arguments);
+  }
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+  (0, _createClass2.default)(SharingCollection, [{
+    key: "findByDoctype",
+    value: function () {
+      var _findByDoctype = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(doctype) {
+        var resp;
+        return _regenerator.default.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                _context.next = 2;
+                return this.stackClient.fetchJSON('GET', (0, _utils.uri)(_templateObject(), doctype));
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+              case 2:
+                resp = _context.sent;
+                return _context.abrupt("return", _objectSpread(_objectSpread({}, resp), {}, {
+                  data: resp.data.map(normalizeSharing)
+                }));
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+              case 4:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this);
+      }));
 
-var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(483));
+      function findByDoctype(_x) {
+        return _findByDoctype.apply(this, arguments);
+      }
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+      return findByDoctype;
+    }()
+    /**
+     * Fetches a sharing by id
+     *
+     * @param {string} id Sharing's id
+     * @returns {Sharing} sharing
+     */
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+  }, {
+    key: "get",
+    value: function () {
+      var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(id) {
+        var path, resp;
+        return _regenerator.default.wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                path = (0, _utils.uri)(_templateObject2(), id);
+                _context2.next = 3;
+                return this.stackClient.fetchJSON('GET', path);
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+              case 3:
+                resp = _context2.sent;
+                return _context2.abrupt("return", {
+                  data: normalizeSharing(resp.data)
+                });
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+              case 5:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2, this);
+      }));
 
-var _lite = _interopRequireDefault(__webpack_require__(591));
+      function get(_x2) {
+        return _get.apply(this, arguments);
+      }
 
-var _has = _interopRequireDefault(__webpack_require__(594));
+      return get;
+    }()
+    /**
+     *
+     * Creates a new Sharing. See https://docs.cozy.io/en/cozy-stack/sharing/#post-sharings
+     *
+     * @param {object} params Sharing  params
+     * @param {Sharing} params.document The document to share
+     * @param {string} params.description Description of the sharing
+     * @param {string=} params.previewPath The preview path
+     * @param {Array<Rule>=} params.rules The rules defined to the sharing. See https://docs.cozy.io/en/cozy-stack/sharing-design/#description-of-a-sharing
+     * @param {Array<Recipient>=} params.recipients Recipients to add to the sharings (will have the same permissions given by the rules defined by the sharing )
+     * @param {Array<Recipient>=} params.readOnlyRecipients Recipients to add to the sharings with only read only access
+     * @param {boolean=} params.openSharing If someone else than the owner can add a recipient to the sharing
+     * @param {string=} params.appSlug Slug of the targeted app
+     */
 
-var _get = _interopRequireDefault(__webpack_require__(399));
+  }, {
+    key: "create",
+    value: function () {
+      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(_ref) {
+        var document, description, previewPath, rules, _ref$recipients, recipients, _ref$readOnlyRecipien, readOnlyRecipients, openSharing, appSlug, attributes, optionalAttributes, resp;
 
-var _omit = _interopRequireDefault(__webpack_require__(523));
+        return _regenerator.default.wrap(function _callee3$(_context3) {
+          while (1) {
+            switch (_context3.prev = _context3.next) {
+              case 0:
+                document = _ref.document, description = _ref.description, previewPath = _ref.previewPath, rules = _ref.rules, _ref$recipients = _ref.recipients, recipients = _ref$recipients === void 0 ? [] : _ref$recipients, _ref$readOnlyRecipien = _ref.readOnlyRecipients, readOnlyRecipients = _ref$readOnlyRecipien === void 0 ? [] : _ref$readOnlyRecipien, openSharing = _ref.openSharing, appSlug = _ref.appSlug;
+                attributes = {
+                  description: description,
+                  preview_path: previewPath,
+                  open_sharing: openSharing,
+                  rules: rules ? rules : getSharingRules(document)
+                };
+                optionalAttributes = {};
 
-var _pick = _interopRequireDefault(__webpack_require__(596));
+                if (appSlug) {
+                  optionalAttributes = {
+                    app_slug: appSlug
+                  };
+                }
 
-var _mangoIndex = __webpack_require__(576);
+                _context3.next = 6;
+                return this.stackClient.fetchJSON('POST', '/sharings/', {
+                  data: {
+                    type: 'io.cozy.sharings',
+                    attributes: _objectSpread(_objectSpread({}, attributes), optionalAttributes),
+                    relationships: _objectSpread(_objectSpread({}, recipients.length > 0 && {
+                      recipients: {
+                        data: recipients.map(toRelationshipItem)
+                      }
+                    }), readOnlyRecipients.length > 0 && {
+                      read_only_recipients: {
+                        data: readOnlyRecipients.map(toRelationshipItem)
+                      }
+                    })
+                  }
+                });
 
-var _DocumentCollection2 = _interopRequireWildcard(__webpack_require__(491));
+              case 6:
+                resp = _context3.sent;
+                return _context3.abrupt("return", {
+                  data: normalizeSharing(resp.data)
+                });
 
-var _utils = __webpack_require__(521);
+              case 8:
+              case "end":
+                return _context3.stop();
+            }
+          }
+        }, _callee3, this);
+      }));
 
-var _errors = __webpack_require__(582);
+      function create(_x3) {
+        return _create.apply(this, arguments);
+      }
 
-var _Collection = __webpack_require__(489);
+      return create;
+    }()
+    /**
+     * @deprecated Use create() instead
+     * share - Creates a new sharing. See https://docs.cozy.io/en/cozy-stack/sharing/#post-sharings
+     *
+     * @param  {Sharing} document The document to share. Should have and _id and a name.
+     * @param  {Array} recipients A list of io.cozy.contacts
+     * @param  {string} sharingType - If "two-way", will set the open_sharing attribute to true
+     * @param  {string} description - Describes the sharing
+     * @param  {string=} previewPath Relative URL of the sharings preview page
+     */
 
-var _getIllegalCharacter = __webpack_require__(598);
+  }, {
+    key: "share",
+    value: function () {
+      var _share = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(document, recipients, sharingType, description) {
+        var previewPath,
+            recipientsToUse,
+            _args4 = arguments;
+        return _regenerator.default.wrap(function _callee4$(_context4) {
+          while (1) {
+            switch (_context4.prev = _context4.next) {
+              case 0:
+                previewPath = _args4.length > 4 && _args4[4] !== undefined ? _args4[4] : null;
 
-var querystring = _interopRequireWildcard(__webpack_require__(578));
+                _logger.default.warn('SharingCollection.share is deprecated, use SharingCollection.create instead');
 
-var _logger = _interopRequireDefault(__webpack_require__(587));
+                recipientsToUse = sharingType === 'two-way' ? {
+                  recipients: recipients
+                } : {
+                  readOnlyRecipients: recipients
+                };
+                return _context4.abrupt("return", this.create(_objectSpread(_objectSpread({
+                  document: document
+                }, recipientsToUse), {}, {
+                  description: description,
+                  previewPath: previewPath,
+                  openSharing: sharingType === 'two-way',
+                  rules: getSharingRules(document, sharingType)
+                })));
 
-function _templateObject24() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/files/_changes"]);
+              case 4:
+              case "end":
+                return _context4.stop();
+            }
+          }
+        }, _callee4, this);
+      }));
 
-  _templateObject24 = function _templateObject24() {
-    return data;
-  };
+      function share(_x4, _x5, _x6, _x7) {
+        return _share.apply(this, arguments);
+      }
 
-  return data;
-}
+      return share;
+    }()
+    /**
+     * getDiscoveryLink - Returns the URL of the page that can be used to accept a sharing. See https://docs.cozy.io/en/cozy-stack/sharing/#get-sharingssharing-iddiscovery
+     *
+     * @param  {string} sharingId - Id of the sharing
+     * @param  {string} sharecode - Code of the sharing
+     * @returns {string}
+     */
 
-function _templateObject23() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", "/relationships/not_synchronizing"]);
+  }, {
+    key: "getDiscoveryLink",
+    value: function getDiscoveryLink(sharingId, sharecode) {
+      return this.stackClient.fullpath("/sharings/".concat(sharingId, "/discovery?sharecode=").concat(sharecode));
+    }
+    /**
+     * Add an array of contacts to the Sharing
+     *
+     * @param {object} options Object
+     * @param {Sharing} options.document Sharing Object
+     * @param {Array<Recipient>=} options.recipients Recipients to add to the sharing
+     * @param {Array<Recipient>=} options.readOnlyRecipients Recipients to add to the sharings with only read only access
+     */
 
-  _templateObject23 = function _templateObject23() {
-    return data;
-  };
+  }, {
+    key: "addRecipients",
+    value: function () {
+      var _addRecipients = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(_ref2) {
+        var document, _ref2$recipients, recipients, _ref2$readOnlyRecipie, readOnlyRecipients, resp;
 
-  return data;
-}
+        return _regenerator.default.wrap(function _callee5$(_context5) {
+          while (1) {
+            switch (_context5.prev = _context5.next) {
+              case 0:
+                document = _ref2.document, _ref2$recipients = _ref2.recipients, recipients = _ref2$recipients === void 0 ? [] : _ref2$recipients, _ref2$readOnlyRecipie = _ref2.readOnlyRecipients, readOnlyRecipients = _ref2$readOnlyRecipie === void 0 ? [] : _ref2$readOnlyRecipie;
+                _context5.next = 3;
+                return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject3(), document._id), {
+                  data: {
+                    type: 'io.cozy.sharings',
+                    id: document._id,
+                    relationships: _objectSpread(_objectSpread({}, recipients.length > 0 && {
+                      recipients: {
+                        data: recipients.map(toRelationshipItem)
+                      }
+                    }), readOnlyRecipients.length > 0 && {
+                      read_only_recipients: {
+                        data: readOnlyRecipients.map(toRelationshipItem)
+                      }
+                    })
+                  }
+                });
 
-function _templateObject22() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", "/relationships/not_synchronizing"]);
+              case 3:
+                resp = _context5.sent;
+                return _context5.abrupt("return", {
+                  data: normalizeSharing(resp.data)
+                });
 
-  _templateObject22 = function _templateObject22() {
-    return data;
-  };
+              case 5:
+              case "end":
+                return _context5.stop();
+            }
+          }
+        }, _callee5, this);
+      }));
 
-  return data;
-}
+      function addRecipients(_x8) {
+        return _addRecipients.apply(this, arguments);
+      }
 
-function _templateObject21() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", "/relationships/not_synchronizing"]);
+      return addRecipients;
+    }()
+    /**
+     * Revoke only one recipient of the sharing.
+     *
+     * @param {object} sharing Sharing Object
+     * @param {number} recipientIndex Index of this recipient in the members array of the sharing
+     */
 
-  _templateObject21 = function _templateObject21() {
-    return data;
-  };
+  }, {
+    key: "revokeRecipient",
+    value: function revokeRecipient(sharing, recipientIndex) {
+      return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject4(), sharing._id, recipientIndex));
+    }
+    /**
+     * Remove self from the sharing.
+     *
+     * @param {object} sharing Sharing Object
+     */
 
-  return data;
-}
+  }, {
+    key: "revokeSelf",
+    value: function revokeSelf(sharing) {
+      return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject5(), sharing._id));
+    }
+    /**
+     * Revoke the sharing for all the members. Must be called
+     * from the owner's cozy
+     *
+     * @param {object} sharing Sharing Objects
+     */
 
-function _templateObject20() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/files/", "/versions"]);
+  }, {
+    key: "revokeAllRecipients",
+    value: function revokeAllRecipients(sharing) {
+      return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject6(), sharing._id));
+    }
+  }]);
+  return SharingCollection;
+}(_DocumentCollection2.default);
 
-  _templateObject20 = function _templateObject20() {
-    return data;
-  };
+SharingCollection.normalizeDoctype = _DocumentCollection2.default.normalizeDoctypeJsonApi;
 
-  return data;
-}
+var getSharingRulesWithoutWarning = function getSharingRulesWithoutWarning(document, sharingType) {
+  if ((0, _FileCollection.isFile)(document)) {
+    return getSharingRulesForFile(document, sharingType);
+  }
 
-function _templateObject19() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/files/upload/metadata"]);
+  if (document._type === BITWARDEN_ORGANIZATIONS_DOCTYPE) {
+    return getSharingRulesForOrganizations(document);
+  }
 
-  _templateObject19 = function _templateObject19() {
-    return data;
-  };
+  return getSharingRulesForPhotosAlbum(document, sharingType);
+};
+/**
+ * Rules determine the behavior of the sharing when changes are made to the shared document
+ * See https://docs.cozy.io/en/cozy-stack/sharing-design/#description-of-a-sharing
+ *
+ * @param {Sharing} document - The document to share. Should have and _id and a name
+ * @param  {SharingType} sharingType - The type of the sharing
+ *
+ * @returns {Array<Rule>=} The rules that define how to share the document
+ */
 
-  return data;
-}
 
-function _templateObject18() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/files/", ""]);
+var getSharingRules = function getSharingRules(document, sharingType) {
+  if (sharingType) {
+    _logger.default.warn("sharingType is deprecated and will be removed. We now set this default rules: ".concat(getSharingRulesWithoutWarning(document), "} \n      \n      If this default rules do not fill your need, please set custom rules \n      by using the 'rules' object of the SharingCollection.create() method"));
+  }
 
-  _templateObject18 = function _templateObject18() {
-    return data;
-  };
+  return getSharingRulesWithoutWarning(document, sharingType);
+};
+/**
+ * Compute the rules that define how to share a Photo Album. See https://docs.cozy.io/en/cozy-stack/sharing-design/#description-of-a-sharing
+ *
+ * @param {Sharing} document - The document to share. Should have and _id and a name
+ * @param  {SharingType} sharingType - The type of the sharing
+ *
+ * @returns {Array<Rule>=} The rules that define how to share a Photo Album
+ */
 
-  return data;
-}
 
-function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
+exports.getSharingRules = getSharingRules;
 
-function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+var getSharingRulesForPhotosAlbum = function getSharingRulesForPhotosAlbum(document, sharingType) {
+  var _id = document._id,
+      _type = document._type;
+  return [_objectSpread({
+    title: 'collection',
+    doctype: _type,
+    values: [_id]
+  }, getSharingPolicyForAlbum(sharingType)), _objectSpread({
+    title: 'items',
+    doctype: 'io.cozy.files',
+    values: ["".concat(_type, "/").concat(_id)],
+    selector: 'referenced_by'
+  }, getSharingPolicyForReferencedFiles(sharingType))];
+};
+/**
+ * Compute the sharing policy for a ReferencedFile based on its sharing type
+ *
+ * @param  {SharingType} sharingType - The type of the sharing
+ *
+ * @returns {SharingPolicy} The sharing policy for the ReferencedFile
+ */
 
-function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
-
-function _templateObject17() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/files/", "?Name=", "&Type=directory&MetadataID=", ""]);
 
-  _templateObject17 = function _templateObject17() {
-    return data;
+var getSharingPolicyForReferencedFiles = function getSharingPolicyForReferencedFiles(sharingType) {
+  return sharingType === 'two-way' ? {
+    add: 'sync',
+    update: 'sync',
+    remove: 'sync'
+  } : {
+    add: 'push',
+    update: 'none',
+    remove: 'push'
   };
+};
+/**
+ * Compute the sharing policy for an Album based on its sharing type
+ *
+ * @param  {SharingType} sharingType - The type of the sharing
+ *
+ * @returns {Array<Rule>=} The sharing policy for the Album
+ */
 
-  return data;
-}
-
-function _templateObject16() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/files/metadata?Path=", ""]);
 
-  _templateObject16 = function _templateObject16() {
-    return data;
+var getSharingPolicyForAlbum = function getSharingPolicyForAlbum(sharingType) {
+  if (!sharingType) return {
+    update: 'sync',
+    remove: 'revoke'
   };
+  return sharingType === 'two-way' ? {
+    update: 'sync',
+    remove: 'revoke'
+  } : {
+    update: 'push',
+    remove: 'revoke'
+  };
+};
+/**
+ * Compute the rules that define how to share a File. See https://docs.cozy.io/en/cozy-stack/sharing-design/#description-of-a-sharing
+ *
+ * @param {Sharing} document - The document to share. Should have and _id and a name
+ * @param  {SharingType} sharingType - The type of the sharing
+ *
+ * @returns {Array<Rule>=} The rules that define how to share a File
+ */
 
-  return data;
-}
-
-function _templateObject15() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/files/", ""]);
 
-  _templateObject15 = function _templateObject15() {
-    return data;
-  };
+var getSharingRulesForFile = function getSharingRulesForFile(document, sharingType) {
+  var _id = document._id,
+      name = document.name;
+  return [_objectSpread({
+    title: name,
+    doctype: 'io.cozy.files',
+    values: [_id]
+  }, getSharingPolicyForFile(document, sharingType))];
+};
+/**
+ * Compute the sharing policy for a File based on its sharing type
+ *
+ * @param {Sharing} document - The document to share. Should have and _id and a name
+ * @param {SharingType} sharingType - The type of the sharing
+ *
+ * @returns {SharingPolicy} The sharing policy for the File
+ */
 
-  return data;
-}
 
-function _templateObject14() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/files/downloads?Path=", ""]);
+var getSharingPolicyForFile = function getSharingPolicyForFile(document, sharingType) {
+  if ((0, _FileCollection.isDirectory)(document)) {
+    if (!sharingType) return {
+      add: 'sync',
+      update: 'sync',
+      remove: 'sync'
+    };
+    return sharingType === 'two-way' ? {
+      add: 'sync',
+      update: 'sync',
+      remove: 'sync'
+    } : {
+      add: 'push',
+      update: 'push',
+      remove: 'push'
+    };
+  }
 
-  _templateObject14 = function _templateObject14() {
-    return data;
+  if (!sharingType) return {
+    update: 'sync',
+    remove: 'revoke'
+  };
+  return sharingType === 'two-way' ? {
+    update: 'sync',
+    remove: 'revoke'
+  } : {
+    update: 'push',
+    remove: 'revoke'
   };
+};
+/**
+ * Compute the rules that define how to share an Organization. See https://docs.cozy.io/en/cozy-stack/sharing-design/#description-of-a-sharing
+ *
+ * @param {Sharing} document The document to share. Should have and _id and a name
+ *
+ * @returns {Array<Rule>=} The rules that define how to share an Organization
+ */
 
-  return data;
-}
 
-function _templateObject13() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/files/downloads?VersionId=", "&Filename=", ""]);
+var getSharingRulesForOrganizations = function getSharingRulesForOrganizations(document) {
+  var _id = document._id,
+      name = document.name;
+  var sharingRules = [{
+    title: name,
+    doctype: BITWARDEN_ORGANIZATIONS_DOCTYPE,
+    values: [_id],
+    add: 'sync',
+    update: 'sync',
+    remove: 'revoke'
+  }, {
+    title: 'Ciphers',
+    doctype: BITWARDEN_CIPHERS_DOCTYPE,
+    values: [_id],
+    add: 'sync',
+    update: 'sync',
+    remove: 'sync',
+    selector: 'organization_id'
+  }];
+  return sharingRules;
+};
+/**
+ * Compute the RelationshipItem that can be referenced as a sharing recipient
+ *
+ * @param {Recipient} item The recipient of a sharing
+ *
+ * @returns {RelationshipItem} The RelationshipItem that can be referenced as a sharing recipient
+ */
 
-  _templateObject13 = function _templateObject13() {
-    return data;
-  };
 
-  return data;
-}
+var toRelationshipItem = function toRelationshipItem(item) {
+  return {
+    id: item._id,
+    type: item._type
+  };
+};
 
-function _templateObject12() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/files/downloads?Id=", "&Filename=", ""]);
+var _default = SharingCollection;
+exports.default = _default;
 
-  _templateObject12 = function _templateObject12() {
-    return data;
-  };
+/***/ }),
+/* 605 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  return data;
-}
+"use strict";
 
-function _templateObject11() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/files/", "?Name=", "&Type=file&Executable=", "&Encrypted=", ""]);
 
-  _templateObject11 = function _templateObject11() {
-    return data;
-  };
+var _interopRequireWildcard = __webpack_require__(277);
 
-  return data;
-}
+var _interopRequireDefault = __webpack_require__(1);
 
-function _templateObject10() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/files/", "?Name=", "&Type=file&Executable=", "&Encrypted=", "&MetadataID=", "&Size=", "&SourceAccount=", "&SourceAccountIdentifier=", ""]);
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.getPermissionsFor = void 0;
 
-  _templateObject10 = function _templateObject10() {
-    return data;
-  };
+var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
 
-  return data;
-}
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-function _templateObject9() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/files/", ""]);
+var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(291));
 
-  _templateObject9 = function _templateObject9() {
-    return data;
-  };
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-  return data;
-}
+var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
 
-function _templateObject8() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/files/", "/copy"]);
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-  _templateObject8 = function _templateObject8() {
-    return data;
-  };
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-  return data;
-}
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-function _templateObject7() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/files/trash/", ""]);
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
-  _templateObject7 = function _templateObject7() {
-    return data;
-  };
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
-  return data;
-}
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
-function _templateObject6() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/files/", ""]);
+var _DocumentCollection2 = _interopRequireWildcard(__webpack_require__(491));
 
-  _templateObject6 = function _templateObject6() {
-    return data;
-  };
+var _FileCollection = __webpack_require__(590);
 
-  return data;
-}
+var _utils = __webpack_require__(521);
 
-function _templateObject5() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", "/relationships/references"]);
+var _logger = _interopRequireDefault(__webpack_require__(587));
 
-  _templateObject5 = function _templateObject5() {
-    return data;
-  };
+function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
 
-  return data;
-}
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
 
-function _templateObject4() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", "/relationships/references"]);
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
 
-  _templateObject4 = function _templateObject4() {
-    return data;
-  };
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-  return data;
-}
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
 function _templateObject3() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/files/", "/relationships/referenced_by"]);
+  var data = (0, _taggedTemplateLiteral2.default)(["/permissions/doctype/", "/shared-by-link"]);
 
   _templateObject3 = function _templateObject3() {
     return data;
@@ -92007,7 +88549,7 @@ function _templateObject3() {
 }
 
 function _templateObject2() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/files/", "/relationships/referenced_by"]);
+  var data = (0, _taggedTemplateLiteral2.default)(["/permissions/", ""]);
 
   _templateObject2 = function _templateObject2() {
     return data;
@@ -92017,7 +88559,7 @@ function _templateObject2() {
 }
 
 function _templateObject() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", "/relationships/references"]);
+  var data = (0, _taggedTemplateLiteral2.default)(["/permissions/", ""]);
 
   _templateObject = function _templateObject() {
     return data;
@@ -92030,409 +88572,184 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
 
 function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-/**
- * @typedef {object} IOCozyFolder Folder
- */
-
+var normalizePermission = function normalizePermission(perm) {
+  return (0, _DocumentCollection2.normalizeDoc)(perm, 'io.cozy.permissions');
+};
 /**
- * @typedef {object} SpecificFileAttributesForKonnector Specific file attributes for creation for konnector
- * @property {string} sourceAccount the id of the source account used by a konnector
- * @property {string} sourceAccountIdentifier the unique identifier of the account targeted by the connector
+ * Implements `DocumentCollection` API along with specific methods for `io.cozy.permissions`.
  */
 
-/**
- * Cursor used for Mango queries pagination
- *
- * @typedef {Array<string>|string} ViewKey
- * @typedef {string} DocId
- * @typedef {Array<*> & {0: ViewKey, 1: DocId}} CouchDBViewCursor
- */
 
-/**
- * Attributes used for directory creation
- *
- * @typedef {object} DirectoryAttributes
- * @property {string} dirId - Id of the parent directory.
- * @property {boolean} name - Name of the created directory.
- * @property {boolean} executable - Indicates whether the file will be executable.
- * @property {object} [metadata] io.cozy.files.metadata to attach to the directory
- */
+var PermissionCollection = /*#__PURE__*/function (_DocumentCollection) {
+  (0, _inherits2.default)(PermissionCollection, _DocumentCollection);
 
-/**
- * Attributes used for file creation
- *
- * @typedef {object} FileAttributes
- * @property {string} id - Id of the document
- * @property {string} _id - Id of the document
- * @property {string} dirId - Id of the parent directory.
- * @property {string} name - Name of the created file.
- * @property {Date} lastModifiedDate - Can be used to set the last modified date of a file.
- * @property {boolean} executable - Whether or not the file is executable
- * @property {boolean} encrypted - Whether or not the file is client-side encrypted
- * @property {object} metadata io.cozy.files.metadata to attach to the file
- */
+  var _super = _createSuper(PermissionCollection);
 
-/**
- * Document representing a io.cozy.files
- *
- * @typedef {object} FileDocument
- * @property {string} _id - Id of the file
- * @property {FileAttributes} attributes - Attributes of the file
- * @property {object} meta - Meta
- * @property {object} relationships - Relationships
- * @property {object} referenced_by - Referenced by
- */
+  function PermissionCollection() {
+    (0, _classCallCheck2.default)(this, PermissionCollection);
+    return _super.apply(this, arguments);
+  }
 
-/**
- * Stream is not defined in a browser, but is on NodeJS environment
- *
- * @typedef {object} Stream
- */
+  (0, _createClass2.default)(PermissionCollection, [{
+    key: "get",
+    value: function () {
+      var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(id) {
+        var resp;
+        return _regenerator.default.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                _context.next = 2;
+                return this.stackClient.fetchJSON('GET', (0, _utils.uri)(_templateObject(), id));
 
-/**
- * Document representing a io.cozy.oauth.clients
- *
- * @typedef {object} OAuthClient
- * @property {string} _id - Id of the client
- * @property {string} _type - Doctype of the client (i.e. io.cozy.oauth.clients)
- */
-var ROOT_DIR_ID = 'io.cozy.files.root-dir';
-var CONTENT_TYPE_OCTET_STREAM = 'application/octet-stream';
-/**
- * Normalize a file, adding document's doctype if needed
- *
- * @param  {FileDocument} file - File to normalize
- * @returns {FileDocument} normalized file
- * @private
- */
+              case 2:
+                resp = _context.sent;
+                return _context.abrupt("return", {
+                  data: normalizePermission(resp.data)
+                });
 
-var normalizeFile = function normalizeFile(file) {
-  var _file$meta;
+              case 4:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this);
+      }));
 
-  return _objectSpread(_objectSpread(_objectSpread({}, (0, _DocumentCollection2.normalizeDoc)(file, 'io.cozy.files')), file.attributes), {}, {
-    _rev: file === null || file === void 0 ? void 0 : (_file$meta = file.meta) === null || _file$meta === void 0 ? void 0 : _file$meta.rev // Beware of JSON-API
+      function get(_x) {
+        return _get.apply(this, arguments);
+      }
 
-  });
-};
-/**
- * Normalize references, expliciting _type and _id — see https://docs.cozy.io/en/cozy-stack/references-docs-in-vfs/
- *
- * @param  {Array<object>} references - The list of files referenced by a document to normalize
- * @returns {Array<object>} the data attribute of the normalized references
- * @private
- */
+      return get;
+    }()
+    /**
+     * Create a new set of permissions
+     * It can also associates one or more codes to it, via the codes parameter
+     *
+     * @param {object} permission - permission to create
+     * @param {string} permission.codes A comma separed list of values (defaulted to code)
+     * @param {string} permission.ttl Make the codes expire after a delay (bigduration format)
+     * @param {boolean} permission.tiny If set to true then the generated shortcode will be 6 digits
+     * Cozy-Stack has a few conditions to be able to use this tiny shortcode ATM you have to specifiy
+     * a ttl < 1h, but it can change.
+     * see https://docs.cozy.io/en/cozy-stack/permissions/#post-permissions for exact informations
+     *
+     * bigduration format: https://github.com/justincampbell/bigduration/blob/master/README.md
+     * @see https://docs.cozy.io/en/cozy-stack/permissions/#post-permissions
+     *
+     */
 
+  }, {
+    key: "create",
+    value: function () {
+      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(_ref) {
+        var _id, _type, _ref$codes, codes, ttl, tiny, attributes, searchParams, resp;
 
-var normalizeReferences = function normalizeReferences(references) {
-  return references ? references.map(function (ref) {
-    return {
-      _type: ref.type,
-      _id: ref.id
-    };
-  }) : [];
-};
-/**
- * Sanitize the file name by trimming spaces
- *
- * @param {string} name - The file name to trim
- * @returns {string} the trimmed file name
- * @private
- */
+        return _regenerator.default.wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                _id = _ref._id, _type = _ref._type, _ref$codes = _ref.codes, codes = _ref$codes === void 0 ? 'code' : _ref$codes, ttl = _ref.ttl, tiny = _ref.tiny, attributes = (0, _objectWithoutProperties2.default)(_ref, ["_id", "_type", "codes", "ttl", "tiny"]);
+                searchParams = new URLSearchParams();
+                searchParams.append('codes', codes);
+                if (ttl) searchParams.append('ttl', ttl);
+                if (tiny) searchParams.append('tiny', true);
+                _context2.next = 7;
+                return this.stackClient.fetchJSON('POST', "/permissions?".concat(searchParams), {
+                  data: {
+                    type: 'io.cozy.permissions',
+                    attributes: attributes
+                  }
+                });
 
+              case 7:
+                resp = _context2.sent;
+                return _context2.abrupt("return", {
+                  data: normalizePermission(resp.data)
+                });
 
-var sanitizeFileName = function sanitizeFileName(name) {
-  return name && name.trim();
-};
-/**
- * Sanitize and validate the file name - throw errors according to case
- *
- * @param {string} name - The file name
- * @returns {string} the trimmed safe file name
- * @throws {Error} - explaining reason why file name is not valid
- * @private
- */
+              case 9:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2, this);
+      }));
 
+      function create(_x2) {
+        return _create.apply(this, arguments);
+      }
 
-var sanitizeAndValidateFileName = function sanitizeAndValidateFileName(name) {
-  var safeName = sanitizeFileName(name);
+      return create;
+    }()
+    /**
+     * Adds a permission to the given document. Document type must be
+     * `io.cozy.apps`, `io.cozy.konnectors` or `io.cozy.permissions`
+     *
+     * @param  {object}  document - Document which receives the permission
+     * @param  {object}  permission - Describes the permission
+     * @returns {Promise}
+     *
+     * @example
+     * ```
+     * const permissions = await client
+     *   .collection('io.cozy.permissions')
+     *   .add(konnector, {
+     *     folder: {
+     *       type: 'io.cozy.files',
+     *       verbs: ['GET', 'PUT'],
+     *       values: [`io.cozy.files.bc57b60eb2954537b0dcdc6ebd8e9d23`]
+     *     }
+     *  })
+     * ```
+     */
 
-  if (typeof safeName !== 'string' || safeName === '') {
-    throw new Error('Missing name argument');
-  }
+  }, {
+    key: "add",
+    value: function () {
+      var _add = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(document, permission) {
+        var endpoint, resp;
+        return _regenerator.default.wrap(function _callee3$(_context3) {
+          while (1) {
+            switch (_context3.prev = _context3.next) {
+              case 0:
+                _context3.t0 = document._type;
+                _context3.next = _context3.t0 === 'io.cozy.apps' ? 3 : _context3.t0 === 'io.cozy.konnectors' ? 5 : _context3.t0 === 'io.cozy.permissions' ? 7 : 9;
+                break;
 
-  if (name === '.' || name === '..') {
-    throw new Error("Invalid filename: ".concat(name));
-  }
+              case 3:
+                endpoint = "/permissions/apps/".concat(document.slug);
+                return _context3.abrupt("break", 10);
 
-  var illegalCharacters = (0, _getIllegalCharacter.getIllegalCharacters)(safeName);
+              case 5:
+                endpoint = "/permissions/konnectors/".concat(document.slug);
+                return _context3.abrupt("break", 10);
 
-  if (illegalCharacters.length) {
-    throw new Error("Invalid filename containing illegal character(s): ".concat(illegalCharacters));
-  }
-
-  return safeName;
-};
-/**
- * Returns true when parameter has type directory, file or has _type io.cozy.files
- *
- * @param {object} doc - The document whose type is checked
- * @param {string} [doc._type] - The document's doctype
- * @param {'directory'|'file'} [doc.type] - The io.cozy-files document type
- *
- * @returns {boolean} true when objects has type directory, file or has _type io.cozy.files or false
- */
-
-
-var isFile = function isFile(_ref) {
-  var _type = _ref._type,
-      type = _ref.type;
-  return _type === 'io.cozy.files' || type === 'directory' || type === 'file';
-};
-/**
- * Returns true when parameters has type directory
- *
- * @param {object} args File
- * @param {string} args.type - The type of the file
- * @returns {boolean} true when parameters has type directory or false
- */
-
-
-exports.isFile = isFile;
-
-var isDirectory = function isDirectory(_ref2) {
-  var type = _ref2.type;
-  return type === 'directory';
-};
-
-exports.isDirectory = isDirectory;
-
-var raceWithCondition = function raceWithCondition(promises, predicate) {
-  return new Promise(function (resolve) {
-    promises.forEach(function (p) {
-      return p.then(function (res) {
-        if (predicate(res)) {
-          resolve(true);
-        }
-      });
-    });
-    Promise.all(promises).then(function () {
-      return resolve(false);
-    });
-  });
-};
-
-var dirName = function dirName(path) {
-  var lastIndex = path.lastIndexOf('/');
-  return path.substring(0, lastIndex);
-};
-/**
- * Implements `DocumentCollection` API along with specific methods for
- * `io.cozy.files`.
- *
- * Files are a special type of documents and are handled differently by the stack:
- * special routes are to be used, and there is a notion of referenced files, aka
- * files associated to a specific document
- */
-
-
-var FileCollection = /*#__PURE__*/function (_DocumentCollection) {
-  (0, _inherits2.default)(FileCollection, _DocumentCollection);
-
-  var _super = _createSuper(FileCollection);
-
-  function FileCollection(doctype, stackClient) {
-    var _this;
-
-    (0, _classCallCheck2.default)(this, FileCollection);
-    _this = _super.call(this, doctype, stackClient);
-    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "extractResponseLinkRelated", function (res) {
-      var href = res.links && res.links.related;
-      if (!href) throw new Error('No related link in server response');
-      return _this.stackClient.fullpath(href);
-    });
-    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "forceFileDownload", function (href, filename) {
-      var element = document.createElement('a');
-      element.setAttribute('href', href);
-      element.setAttribute('download', filename);
-      element.style.display = 'none';
-      document.body.appendChild(element);
-      element.click();
-      document.body.removeChild(element);
-    });
-    _this.specialDirectories = {};
-    return _this;
-  }
-  /**
-   * Fetches the file's data
-   *
-   * @param {string} id File id
-   * @returns {{data, included}} Information about the file or folder and it's descendents
-   */
-
-
-  (0, _createClass2.default)(FileCollection, [{
-    key: "get",
-    value: function get(id) {
-      return this.statById(id);
-    }
-  }, {
-    key: "fetchFindFiles",
-    value: function () {
-      var _fetchFindFiles = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(selector, options) {
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                return _context.abrupt("return", this.stackClient.fetchJSON('POST', '/files/_find', this.toMangoOptions(selector, options)));
-
-              case 1:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee, this);
-      }));
-
-      function fetchFindFiles(_x, _x2) {
-        return _fetchFindFiles.apply(this, arguments);
-      }
-
-      return fetchFindFiles;
-    }()
-    /**
-     * Returns a filtered list of documents using a Mango selector.
-     *
-     * The returned documents are paginated by the stack.
-     *
-     * @param {object}            selector  The Mango selector.
-     * @param {MangoQueryOptions} options   The query options
-     * @returns {Promise<{data, meta, skip, next, bookmark, execution_stats}>} The JSON API conformant response.
-     * @throws {FetchError}
-     */
-
-  }, {
-    key: "find",
-    value: function () {
-      var _find = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(selector) {
-        var options,
-            _options$skip,
-            skip,
-            resp,
-            path,
-            nextLink,
-            nextLinkURL,
-            nextBookmark,
-            _args2 = arguments;
-
-        return _regenerator.default.wrap(function _callee2$(_context2) {
-          while (1) {
-            switch (_context2.prev = _context2.next) {
-              case 0:
-                options = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : {};
-                _options$skip = options.skip, skip = _options$skip === void 0 ? 0 : _options$skip;
-                _context2.prev = 2;
-                path = '/files/_find';
-                _context2.next = 6;
-                return this.findWithMango(path, selector, options);
-
-              case 6:
-                resp = _context2.sent;
-                _context2.next = 12;
-                break;
+              case 7:
+                endpoint = "/permissions/".concat(document._id);
+                return _context3.abrupt("break", 10);
 
               case 9:
-                _context2.prev = 9;
-                _context2.t0 = _context2["catch"](2);
-                return _context2.abrupt("return", (0, _Collection.dontThrowNotFoundError)(_context2.t0));
+                throw new Error('Permissions can only be added on existing permissions, apps and konnectors.');
 
-              case 12:
-                nextLink = (0, _get.default)(resp, 'links.next', '');
-                nextLinkURL = new URL("".concat(this.stackClient.uri).concat(nextLink));
-                nextBookmark = nextLinkURL.searchParams.get('page[cursor]');
-                return _context2.abrupt("return", {
-                  data: resp.data.map(function (f) {
-                    return normalizeFile(f);
-                  }),
-                  meta: resp.meta,
-                  next: resp.meta.count > skip + resp.data.length,
-                  skip: skip,
-                  bookmark: nextBookmark || undefined,
-                  execution_stats: resp.meta.execution_stats
+              case 10:
+                _context3.next = 12;
+                return this.stackClient.fetchJSON('PATCH', endpoint, {
+                  data: {
+                    type: 'io.cozy.permissions',
+                    attributes: {
+                      permissions: permission
+                    }
+                  }
                 });
 
-              case 16:
-              case "end":
-                return _context2.stop();
-            }
-          }
-        }, _callee2, this, [[2, 9]]);
-      }));
-
-      function find(_x3) {
-        return _find.apply(this, arguments);
-      }
-
-      return find;
-    }()
-    /**
-     * async findReferencedBy - Returns the list of files referenced by a document — see https://docs.cozy.io/en/cozy-stack/references-docs-in-vfs/
-     *
-     * @param  {object}       document          A JSON representing a document, with at least a `_type` and `_id` field.
-     * @param  {object}       options           Additional options
-     * @param  {number|null}  [options.skip]    For skip-based pagination, the number of referenced files to skip.
-     * @param  {number|null}  [options.limit]   For pagination, the number of results to return.
-     * @param  {CouchDBViewCursor|null}  [options.cursor]  For cursor-based pagination, the index cursor.
-     * @returns {Promise<{data, included, meta, skip, next}>} The JSON API conformant response.
-     */
-
-  }, {
-    key: "findReferencedBy",
-    value: function () {
-      var _findReferencedBy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(document) {
-        var _ref3,
-            _ref3$skip,
-            skip,
-            limit,
-            cursor,
-            params,
-            path,
-            url,
-            resp,
-            _args3 = arguments;
-
-        return _regenerator.default.wrap(function _callee3$(_context3) {
-          while (1) {
-            switch (_context3.prev = _context3.next) {
-              case 0:
-                _ref3 = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {}, _ref3$skip = _ref3.skip, skip = _ref3$skip === void 0 ? 0 : _ref3$skip, limit = _ref3.limit, cursor = _ref3.cursor;
-                params = {
-                  include: 'files',
-                  'page[limit]': limit,
-                  'page[cursor]': cursor,
-                  sort: 'datetime'
-                };
-                path = (0, _utils.uri)(_templateObject(), document._type, document._id);
-                url = querystring.buildURL(path, params);
-                _context3.next = 6;
-                return this.stackClient.fetchJSON('GET', url);
-
-              case 6:
+              case 12:
                 resp = _context3.sent;
                 return _context3.abrupt("return", {
-                  data: normalizeReferences(resp.data),
-                  included: resp.included ? resp.included.map(function (f) {
-                    return normalizeFile(f);
-                  }) : [],
-                  next: (0, _has.default)(resp, 'links.next'),
-                  meta: resp.meta,
-                  skip: skip
+                  data: normalizePermission(resp.data)
                 });
 
-              case 8:
+              case 14:
               case "end":
                 return _context3.stop();
             }
@@ -92440,53 +88757,36 @@ var FileCollection = /*#__PURE__*/function (_DocumentCollection) {
         }, _callee3, this);
       }));
 
-      function findReferencedBy(_x4) {
-        return _findReferencedBy.apply(this, arguments);
+      function add(_x3, _x4) {
+        return _add.apply(this, arguments);
       }
 
-      return findReferencedBy;
+      return add;
     }()
-    /**
-     *  Add referenced_by documents to a file — see https://docs.cozy.io/en/cozy-stack/references-docs-in-vfs/#post-filesfile-idrelationshipsreferenced_by
-     *
-     *  For example, to have an album referenced by a file:
-     * ```
-     * addReferencedBy({_id: 123, _type: "io.cozy.files", name: "cozy.jpg"}, [{_id: 456, _type: "io.cozy.photos.albums", name: "Happy Cloud"}])
-     * ```
-     *
-     * @param  {FileDocument} document  A JSON representing the file
-     * @param  {Array}  documents       An array of JSON documents having a `_type` and `_id` field.
-     * @returns {Promise<{data, meta}>}          The JSON API conformant response.
-     */
-
   }, {
-    key: "addReferencedBy",
+    key: "destroy",
+    value: function destroy(permission) {
+      return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject2(), permission.id));
+    }
+  }, {
+    key: "findLinksByDoctype",
     value: function () {
-      var _addReferencedBy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(document, documents) {
-        var refs, resp;
+      var _findLinksByDoctype = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(doctype) {
+        var resp;
         return _regenerator.default.wrap(function _callee4$(_context4) {
           while (1) {
             switch (_context4.prev = _context4.next) {
               case 0:
-                refs = documents.map(function (d) {
-                  return {
-                    id: d._id,
-                    type: d._type
-                  };
-                });
-                _context4.next = 3;
-                return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject2(), document._id), {
-                  data: refs
-                });
+                _context4.next = 2;
+                return this.stackClient.fetchJSON('GET', (0, _utils.uri)(_templateObject3(), doctype));
 
-              case 3:
+              case 2:
                 resp = _context4.sent;
-                return _context4.abrupt("return", {
-                  data: normalizeReferences(resp.data),
-                  meta: resp.meta
-                });
+                return _context4.abrupt("return", _objectSpread(_objectSpread({}, resp), {}, {
+                  data: resp.data.map(normalizePermission)
+                }));
 
-              case 5:
+              case 4:
               case "end":
                 return _context4.stop();
             }
@@ -92494,51 +88794,40 @@ var FileCollection = /*#__PURE__*/function (_DocumentCollection) {
         }, _callee4, this);
       }));
 
-      function addReferencedBy(_x5, _x6) {
-        return _addReferencedBy.apply(this, arguments);
+      function findLinksByDoctype(_x5) {
+        return _findLinksByDoctype.apply(this, arguments);
       }
 
-      return addReferencedBy;
+      return findLinksByDoctype;
     }()
     /**
-     *  Remove referenced_by documents from a file — see https://docs.cozy.io/en/cozy-stack/references-docs-in-vfs/#delete-filesfile-idrelationshipsreferenced_by
-     *
-     *  For example, to remove an album reference from a file:
-     * ```
-     *  removeReferencedBy({_id: 123, _type: "io.cozy.files", name: "cozy.jpg"}, [{_id: 456, _type: "io.cozy.photos.albums", name: "Happy Cloud"}])
-     * ```
      *
-     * @param  {object} document        A JSON representing the file
-     * @param  {Array}  documents       An array of JSON documents having a `_type` and `_id` field.
-     * @returns {Promise<{data, meta}>}          The JSON API conformant response.
+     * @deprecated
      */
 
   }, {
-    key: "removeReferencedBy",
+    key: "findApps",
     value: function () {
-      var _removeReferencedBy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(document, documents) {
-        var refs, resp;
+      var _findApps = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
+        var resp;
         return _regenerator.default.wrap(function _callee5$(_context5) {
           while (1) {
             switch (_context5.prev = _context5.next) {
               case 0:
-                refs = documents.map(function (d) {
-                  return {
-                    id: d._id || d.id,
-                    type: d._type || d.type
-                  };
-                });
+                _logger.default.warn("PermissionCollection.findApps will be removed in next version of cozy-client. \n\n      You can use AppCollection.all() instead \n\n      or even better client.query(Q('io.cozy.apps'), {as: 'io.cozy.apps'})");
+
                 _context5.next = 3;
-                return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject3(), document._id || document.id), {
-                  data: refs
-                });
+                return this.stackClient.fetchJSON('GET', '/apps/');
 
               case 3:
                 resp = _context5.sent;
-                return _context5.abrupt("return", {
-                  data: normalizeReferences(resp.data),
-                  meta: resp.meta
-                });
+                return _context5.abrupt("return", _objectSpread(_objectSpread({}, resp), {}, {
+                  data: resp.data.map(function (a) {
+                    return _objectSpread({
+                      _id: a.id
+                    }, a);
+                  })
+                }));
 
               case 5:
               case "end":
@@ -92548,46 +88837,53 @@ var FileCollection = /*#__PURE__*/function (_DocumentCollection) {
         }, _callee5, this);
       }));
 
-      function removeReferencedBy(_x7, _x8) {
-        return _removeReferencedBy.apply(this, arguments);
+      function findApps() {
+        return _findApps.apply(this, arguments);
       }
 
-      return removeReferencedBy;
+      return findApps;
     }()
     /**
-     *  Add files references to a document — see https://docs.cozy.io/en/cozy-stack/references-docs-in-vfs/#post-datatypedoc-idrelationshipsreferences
-     *
-     *  For example, to add a photo to an album:
-     * ```
-     *  addReferencesTo({_id: 456, _type: "io.cozy.photos.albums", name: "Happy Cloud"}, [{_id: 123, _type: "io.cozy.files", name: "cozy.jpg"}])
-     * ```
-     *
-     * @param  {object} document        A JSON representing a document, with at least a `_type` and `_id` field.
-     * @param  {Array}  documents       An array of JSON files having an `_id` field.
+     * Create a share link
      *
-     * Returns 204 No Content
+     * @param {{_id, _type}} document - cozy document
+     * @param {object} options - options
+     * @param {string[]} options.verbs - explicit permissions to use
      */
 
   }, {
-    key: "addReferencesTo",
+    key: "createSharingLink",
     value: function () {
-      var _addReferencesTo = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(document, documents) {
-        var refs;
+      var _createSharingLink = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(document) {
+        var options,
+            verbs,
+            resp,
+            _args6 = arguments;
         return _regenerator.default.wrap(function _callee6$(_context6) {
           while (1) {
             switch (_context6.prev = _context6.next) {
               case 0:
-                refs = documents.map(function (d) {
-                  return {
-                    id: d._id,
-                    type: 'io.cozy.files'
-                  };
+                options = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : {};
+                verbs = options.verbs;
+                _context6.next = 4;
+                return this.stackClient.fetchJSON('POST', "/permissions?codes=email", {
+                  data: {
+                    type: 'io.cozy.permissions',
+                    attributes: {
+                      permissions: getPermissionsFor(document, true, verbs ? {
+                        verbs: verbs
+                      } : {})
+                    }
+                  }
                 });
-                return _context6.abrupt("return", this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject4(), document._type, document._id), {
-                  data: refs
-                }));
 
-              case 2:
+              case 4:
+                resp = _context6.sent;
+                return _context6.abrupt("return", {
+                  data: normalizePermission(resp.data)
+                });
+
+              case 6:
               case "end":
                 return _context6.stop();
             }
@@ -92595,46 +88891,42 @@ var FileCollection = /*#__PURE__*/function (_DocumentCollection) {
         }, _callee6, this);
       }));
 
-      function addReferencesTo(_x9, _x10) {
-        return _addReferencesTo.apply(this, arguments);
+      function createSharingLink(_x6) {
+        return _createSharingLink.apply(this, arguments);
       }
 
-      return addReferencesTo;
+      return createSharingLink;
     }()
     /**
-     *  Remove files references to a document — see https://docs.cozy.io/en/cozy-stack/references-docs-in-vfs/#delete-datatypedoc-idrelationshipsreferences
-     *
-     *  For example, to remove a photo from an album:
-     * ```
-     *  removeReferencesTo({_id: 456, _type: "io.cozy.photos.albums", name: "Happy Cloud"}, [{_id: 123, _type: "io.cozy.files", name: "cozy.jpg"}])
-     * ```
-     *
-     * @param  {object} document        A JSON representing a document, with at least a `_type` and `_id` field.
-     * @param  {Array}  documents       An array of JSON files having an `_id` field.
+     * Follow the next link to fetch the next permissions
      *
-     * Returns 204 No Content
+     * @param {object} permissions JSON-API based permissions document
      */
 
   }, {
-    key: "removeReferencesTo",
+    key: "fetchPermissionsByLink",
     value: function () {
-      var _removeReferencesTo = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(document, documents) {
-        var refs;
+      var _fetchPermissionsByLink = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(permissions) {
+        var resp;
         return _regenerator.default.wrap(function _callee7$(_context7) {
           while (1) {
             switch (_context7.prev = _context7.next) {
               case 0:
-                refs = documents.map(function (d) {
-                  return {
-                    id: d._id,
-                    type: 'io.cozy.files'
-                  };
-                });
-                return _context7.abrupt("return", this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject5(), document._type, document._id), {
-                  data: refs
+                if (!(permissions.links && permissions.links.next)) {
+                  _context7.next = 5;
+                  break;
+                }
+
+                _context7.next = 3;
+                return this.stackClient.fetchJSON('GET', permissions.links.next);
+
+              case 3:
+                resp = _context7.sent;
+                return _context7.abrupt("return", _objectSpread(_objectSpread({}, resp), {}, {
+                  data: resp.data.map(normalizePermission)
                 }));
 
-              case 2:
+              case 5:
               case "end":
                 return _context7.stop();
             }
@@ -92642,66 +88934,56 @@ var FileCollection = /*#__PURE__*/function (_DocumentCollection) {
         }, _callee7, this);
       }));
 
-      function removeReferencesTo(_x11, _x12) {
-        return _removeReferencesTo.apply(this, arguments);
+      function fetchPermissionsByLink(_x7) {
+        return _fetchPermissionsByLink.apply(this, arguments);
       }
 
-      return removeReferencesTo;
+      return fetchPermissionsByLink;
     }()
     /**
-     * Sends file to trash and removes references to it
      *
-     * @param  {FileDocument} file - File that will be sent to trash
-     * @returns {Promise} - Resolves when references have been removed
-     * and file has been sent to trash
+     * @param {object} document Cozy doc
+     * @returns {object} with all the permissions
      */
 
   }, {
-    key: "destroy",
+    key: "fetchAllLinks",
     value: function () {
-      var _destroy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(file) {
-        var _ref4,
-            _ref4$ifMatch,
-            ifMatch,
-            _id,
-            relationships,
-            resp,
-            references,
-            _args8 = arguments;
+      var _fetchAllLinks = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(document) {
+        var allLinks, resp, _allLinks$data;
 
         return _regenerator.default.wrap(function _callee8$(_context8) {
           while (1) {
             switch (_context8.prev = _context8.next) {
               case 0:
-                _ref4 = _args8.length > 1 && _args8[1] !== undefined ? _args8[1] : {}, _ref4$ifMatch = _ref4.ifMatch, ifMatch = _ref4$ifMatch === void 0 ? '' : _ref4$ifMatch;
-                _id = file._id, relationships = file.relationships;
-                _context8.next = 4;
-                return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject6(), _id), undefined, {
-                  headers: {
-                    'If-Match': ifMatch
-                  }
-                });
+                _context8.next = 2;
+                return this.findLinksByDoctype(document._type);
+
+              case 2:
+                allLinks = _context8.sent;
+                resp = allLinks;
 
               case 4:
-                resp = _context8.sent;
-                // needed because we had a bug in cozy-stack https://github.com/cozy/cozy-stack/pull/3566
-                // to remove once the code is deployed everywhere
-                references = (0, _get.default)(relationships, 'referenced_by.data', file.referenced_by);
-
-                if (!Array.isArray(references)) {
-                  _context8.next = 9;
+                if (!(resp.links && resp.links.next)) {
+                  _context8.next = 11;
                   break;
                 }
 
-                _context8.next = 9;
-                return this.removeReferencedBy(file, references);
+                _context8.next = 7;
+                return this.fetchPermissionsByLink(resp);
 
-              case 9:
-                return _context8.abrupt("return", {
-                  data: normalizeFile(resp.data)
-                });
+              case 7:
+                resp = _context8.sent;
 
-              case 10:
+                (_allLinks$data = allLinks.data).push.apply(_allLinks$data, (0, _toConsumableArray2.default)(resp.data));
+
+                _context8.next = 4;
+                break;
+
+              case 11:
+                return _context8.abrupt("return", allLinks);
+
+              case 12:
               case "end":
                 return _context8.stop();
             }
@@ -92709,116 +88991,107 @@ var FileCollection = /*#__PURE__*/function (_DocumentCollection) {
         }, _callee8, this);
       }));
 
-      function destroy(_x13) {
-        return _destroy.apply(this, arguments);
+      function fetchAllLinks(_x8) {
+        return _fetchAllLinks.apply(this, arguments);
       }
 
-      return destroy;
+      return fetchAllLinks;
     }()
     /**
-     * Empty the Trash
-     */
-
-  }, {
-    key: "emptyTrash",
-    value: function emptyTrash() {
-      return this.stackClient.fetchJSON('DELETE', '/files/trash');
-    }
-    /**
-     * Restores a trashed file.
-     *
-     * @param {string} id   - The file's id
-     * @returns {Promise}   - A promise that returns the restored file if resolved.
-     * @throws {FetchError}
-     *
-     */
-
-  }, {
-    key: "restore",
-    value: function restore(id) {
-      return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject7(), id));
-    }
-    /**
-     * Copy a file.
-     *
-     * @param {string} id   - The file's id
-     * @param {string} [name]   - The file copy name
-     * @param {string} [dirId]   - The destination directory id
-     * @returns {Promise<object>}   - A promise that returns the copied file if resolved.
-     * @throws {FetchError}
+     * Destroy a sharing link and the related permissions
      *
+     * @param {object} document - document to revoke sharing link
      */
 
   }, {
-    key: "copy",
+    key: "revokeSharingLink",
     value: function () {
-      var _copy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(id, name, dirId) {
-        var params, path, url, resp;
+      var _revokeSharingLink = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(document) {
+        var allLinks, links, _iterator, _step, perm;
+
         return _regenerator.default.wrap(function _callee9$(_context9) {
           while (1) {
             switch (_context9.prev = _context9.next) {
               case 0:
-                params = {
-                  name: name === undefined ? undefined : sanitizeAndValidateFileName(name),
-                  dirId: dirId
-                };
-                path = (0, _utils.uri)(_templateObject8(), id);
-                url = querystring.buildURL(path, params);
-                _context9.next = 5;
-                return this.stackClient.fetchJSON('POST', url);
+                _context9.next = 2;
+                return this.fetchAllLinks(document);
 
-              case 5:
-                resp = _context9.sent;
-                return _context9.abrupt("return", {
-                  data: normalizeFile(resp.data)
+              case 2:
+                allLinks = _context9.sent;
+                links = allLinks.data.filter(function (perm) {
+                  return isPermissionRelatedTo(perm, document);
                 });
+                _iterator = _createForOfIteratorHelper(links);
+                _context9.prev = 5;
+
+                _iterator.s();
 
               case 7:
+                if ((_step = _iterator.n()).done) {
+                  _context9.next = 13;
+                  break;
+                }
+
+                perm = _step.value;
+                _context9.next = 11;
+                return this.destroy(perm);
+
+              case 11:
+                _context9.next = 7;
+                break;
+
+              case 13:
+                _context9.next = 18;
+                break;
+
+              case 15:
+                _context9.prev = 15;
+                _context9.t0 = _context9["catch"](5);
+
+                _iterator.e(_context9.t0);
+
+              case 18:
+                _context9.prev = 18;
+
+                _iterator.f();
+
+                return _context9.finish(18);
+
+              case 21:
               case "end":
                 return _context9.stop();
             }
           }
-        }, _callee9, this);
+        }, _callee9, this, [[5, 15, 18, 21]]);
       }));
 
-      function copy(_x14, _x15, _x16) {
-        return _copy.apply(this, arguments);
+      function revokeSharingLink(_x9) {
+        return _revokeSharingLink.apply(this, arguments);
       }
 
-      return copy;
+      return revokeSharingLink;
     }()
     /**
-     * async deleteFilePermanently - Definitely delete a file
+     * async getOwnPermissions - deprecated: please use fetchOwnPermissions instead
      *
-     * @param  {string} id - The id of the file to delete
-     * @returns {Promise<object>} The deleted file object
+     * @typedef {object} Permission
+     *
+     * @returns {Permission} permission
      */
 
   }, {
-    key: "deleteFilePermanently",
+    key: "getOwnPermissions",
     value: function () {
-      var _deleteFilePermanently = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(id) {
-        var resp;
+      var _getOwnPermissions = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() {
         return _regenerator.default.wrap(function _callee10$(_context10) {
           while (1) {
             switch (_context10.prev = _context10.next) {
               case 0:
-                _context10.next = 2;
-                return this.stackClient.fetchJSON('PATCH', (0, _utils.uri)(_templateObject9(), id), {
-                  data: {
-                    type: 'io.cozy.files',
-                    id: id,
-                    attributes: {
-                      permanent_delete: true
-                    }
-                  }
-                });
+                _logger.default.warn('getOwnPermissions is deprecated, please use fetchOwnPermissions instead');
 
-              case 2:
-                resp = _context10.sent;
-                return _context10.abrupt("return", resp.data);
+                return _context10.abrupt("return", this.fetchOwnPermissions());
 
-              case 4:
+              case 2:
               case "end":
                 return _context10.stop();
             }
@@ -92826,35 +89099,38 @@ var FileCollection = /*#__PURE__*/function (_DocumentCollection) {
         }, _callee10, this);
       }));
 
-      function deleteFilePermanently(_x17) {
-        return _deleteFilePermanently.apply(this, arguments);
+      function getOwnPermissions() {
+        return _getOwnPermissions.apply(this, arguments);
       }
 
-      return deleteFilePermanently;
+      return getOwnPermissions;
     }()
     /**
-     * @param {File|Blob|Stream|string|ArrayBuffer} data file to be uploaded
-     * @param {string} dirPath Path to upload the file to. ie : /Administative/XXX/
-     * @returns {Promise<object>} Created io.cozy.files
+     * async fetchOwnPermissions - Fetches permissions
+     *
+     * @typedef {object} Permission
+     *
+     * @returns {Permission} permission
      */
 
   }, {
-    key: "upload",
+    key: "fetchOwnPermissions",
     value: function () {
-      var _upload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(data, dirPath) {
-        var dirId;
+      var _fetchOwnPermissions = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {
+        var resp;
         return _regenerator.default.wrap(function _callee11$(_context11) {
           while (1) {
             switch (_context11.prev = _context11.next) {
               case 0:
                 _context11.next = 2;
-                return this.ensureDirectoryExists(dirPath);
+                return this.stackClient.fetchJSON('GET', '/permissions/self');
 
               case 2:
-                dirId = _context11.sent;
-                return _context11.abrupt("return", this.createFile(data, {
-                  dirId: dirId
-                }));
+                resp = _context11.sent;
+                return _context11.abrupt("return", {
+                  data: normalizePermission(resp.data),
+                  included: resp.included ? resp.included.map(normalizePermission) : []
+                });
 
               case 4:
               case "end":
@@ -92864,1854 +89140,1606 @@ var FileCollection = /*#__PURE__*/function (_DocumentCollection) {
         }, _callee11, this);
       }));
 
-      function upload(_x18, _x19) {
-        return _upload.apply(this, arguments);
+      function fetchOwnPermissions() {
+        return _fetchOwnPermissions.apply(this, arguments);
       }
 
-      return upload;
+      return fetchOwnPermissions;
     }()
-    /**
-     * Creates directory or file.
-     * - Used by StackLink to support CozyClient.create('io.cozy.files', options)
-     *
-     * @param {FileAttributes|DirectoryAttributes} attributes - Attributes of the created file/directory
-     * @param {File|Blob|string|ArrayBuffer} attributes.data Will be used as content of the created file
-     * @throws {Error} - explaining reason why creation failed
-     */
+  }]);
+  return PermissionCollection;
+}(_DocumentCollection2.default);
+/**
+ * Build a permission set
+ *
+ * @param {{_id, _type}} document - cozy document
+ * @param {boolean} publicLink - are the permissions for a public link ?
+ * @param {object} options - options
+ * @param {string[]} options.verbs - explicit permissions to use
+ * @returns {object} permissions object that can be sent through /permissions/*
+ */
 
-  }, {
-    key: "create",
+
+var getPermissionsFor = function getPermissionsFor(document) {
+  var publicLink = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+  var _id = document._id,
+      _type = document._type;
+  var verbs = options.verbs ? options.verbs : publicLink ? ['GET'] : ['ALL']; // TODO: this works for albums, but it needs to be generalized and integrated
+  // with cozy-client ; some sort of doctype "schema" will be needed here
+
+  return (0, _FileCollection.isFile)(document) ? {
+    files: {
+      type: 'io.cozy.files',
+      verbs: verbs,
+      values: [_id]
+    }
+  } : {
+    collection: {
+      type: _type,
+      verbs: verbs,
+      values: [_id]
+    },
+    files: {
+      type: 'io.cozy.files',
+      verbs: verbs,
+      values: ["".concat(_type, "/").concat(_id)],
+      selector: 'referenced_by'
+    }
+  };
+};
+
+exports.getPermissionsFor = getPermissionsFor;
+PermissionCollection.normalizeDoctype = _DocumentCollection2.default.normalizeDoctypeJsonApi;
+
+var isPermissionRelatedTo = function isPermissionRelatedTo(perm, document) {
+  var _id = document._id;
+  return (0, _FileCollection.isFile)(document) ? perm.attributes.permissions.files.values.indexOf(_id) !== -1 : perm.attributes.permissions.collection.values.indexOf(_id) !== -1;
+};
+
+var _default = PermissionCollection;
+exports.default = _default;
+
+/***/ }),
+/* 606 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _interopRequireWildcard = __webpack_require__(277);
+
+var _interopRequireDefault = __webpack_require__(1);
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.normalizeSettings = exports.SETTINGS_DOCTYPE = void 0;
+
+var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
+
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
+
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+
+var _DocumentCollection2 = _interopRequireWildcard(__webpack_require__(491));
+
+var _logger = _interopRequireDefault(__webpack_require__(587));
+
+var _utils = __webpack_require__(521);
+
+function _templateObject() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", ""]);
+
+  _templateObject = function _templateObject() {
+    return data;
+  };
+
+  return data;
+}
+
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+var SETTINGS_DOCTYPE = 'io.cozy.settings';
+/**
+ * Normalizing a document for SettingsCollection context
+ *
+ * @param {object} doc - Document to normalize
+ * @returns {object} normalized document
+ */
+
+exports.SETTINGS_DOCTYPE = SETTINGS_DOCTYPE;
+
+var normalizeSettings = function normalizeSettings(doc) {
+  var normDoc = (0, _DocumentCollection2.normalizeDoc)(doc, SETTINGS_DOCTYPE);
+  return _objectSpread(_objectSpread({}, normDoc), normDoc.attributes);
+};
+/**
+ * Implements `DocumentCollection` API to interact with the /settings endpoint of the stack
+ */
+
+
+exports.normalizeSettings = normalizeSettings;
+
+var SettingsCollection = /*#__PURE__*/function (_DocumentCollection) {
+  (0, _inherits2.default)(SettingsCollection, _DocumentCollection);
+
+  var _super = _createSuper(SettingsCollection);
+
+  function SettingsCollection(stackClient) {
+    (0, _classCallCheck2.default)(this, SettingsCollection);
+    return _super.call(this, SETTINGS_DOCTYPE, stackClient);
+  }
+  /**
+   * async get - Calls a route on the /settings API
+   *
+   * @param  {string} id The setting id to call, eg `io.cozy.settings.instance` for `instance` route or `io.cozy.settings.context` for `context`route
+   * @returns {object} The response from the route
+   */
+
+
+  (0, _createClass2.default)(SettingsCollection, [{
+    key: "get",
     value: function () {
-      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(attributes) {
-        var data, createFileOptions;
-        return _regenerator.default.wrap(function _callee12$(_context12) {
+      var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(id) {
+        var _resp, path, resp;
+
+        return _regenerator.default.wrap(function _callee$(_context) {
           while (1) {
-            switch (_context12.prev = _context12.next) {
+            switch (_context.prev = _context.next) {
               case 0:
-                if (!(attributes.type === 'directory')) {
-                  _context12.next = 4;
+                if (!(id === 'io.cozy.settings.bitwarden')) {
+                  _context.next = 5;
                   break;
                 }
 
-                return _context12.abrupt("return", this.createDirectory(attributes));
+                _context.next = 3;
+                return this.stackClient.fetchJSON('GET', '/data/io.cozy.settings/io.cozy.settings.bitwarden');
 
-              case 4:
-                data = attributes.data, createFileOptions = (0, _objectWithoutProperties2.default)(attributes, ["data"]);
-                return _context12.abrupt("return", this.createFile(data, createFileOptions));
+              case 3:
+                _resp = _context.sent;
+                return _context.abrupt("return", {
+                  data: _DocumentCollection2.default.normalizeDoctypeJsonApi(SETTINGS_DOCTYPE)(_resp, _resp)
+                });
 
-              case 6:
+              case 5:
+                if (id.startsWith('io.cozy.settings.')) {
+                  path = id.substring(17);
+                } else {
+                  _logger.default.warn("Deprecated: in next versions of cozy-client, it will not be possible to query settings with an incomplete id\n\n- Q('io.cozy.settings').getById('instance')\n+ Q('io.cozy.settings').getById('io.cozy.settings.instance')");
+
+                  path = id;
+                }
+
+                _context.next = 8;
+                return this.stackClient.fetchJSON('GET', "/settings/".concat(path));
+
+              case 8:
+                resp = _context.sent;
+                return _context.abrupt("return", {
+                  data: normalizeSettings(_objectSpread({
+                    id: "/settings/".concat(path)
+                  }, resp.data))
+                });
+
+              case 10:
               case "end":
-                return _context12.stop();
+                return _context.stop();
             }
           }
-        }, _callee12, this);
+        }, _callee, this);
       }));
 
-      function create(_x20) {
-        return _create.apply(this, arguments);
+      function get(_x) {
+        return _get.apply(this, arguments);
       }
 
-      return create;
+      return get;
     }()
-    /***
-     * Updates an existing file or directory
+    /**
+     * Updates a settings document
      *
-     * Used by StackLink to support CozyClient.save({file}).
-     * Update the binary file if a `data` param is passed. Only updates
-     * attributes otherwise.
-     * @param {object} attributes
-     * @param {FileAttributes} attributes.file - The file with its new content
-     * @param {File|Blob|string|ArrayBuffer} attributes.data Will be used as content of the updated file
-     * @returns {Promise<FileAttributes>} Updated document
-     * @throws {Error} - explaining reason why update failed
+     * @param {object} document - Document to update. Do not forget the _id attribute
      */
 
   }, {
     key: "update",
     value: function () {
-      var _update = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13(attributes) {
-        var data, updateFileOptions, fileId;
-        return _regenerator.default.wrap(function _callee13$(_context13) {
+      var _update = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(document) {
+        var resp;
+        return _regenerator.default.wrap(function _callee2$(_context2) {
           while (1) {
-            switch (_context13.prev = _context13.next) {
+            switch (_context2.prev = _context2.next) {
               case 0:
-                data = attributes.data, updateFileOptions = (0, _objectWithoutProperties2.default)(attributes, ["data"]);
-                fileId = attributes.id || attributes._id;
-
-                if (!data) {
-                  _context13.next = 7;
-                  break;
-                }
-
-                if (!(attributes.type === 'directory')) {
-                  _context13.next = 5;
+                if (!(document._id === 'io.cozy.settings.instance')) {
+                  _context2.next = 6;
                   break;
                 }
 
-                throw new Error('You cannot pass a data object for a directory');
+                _context2.next = 3;
+                return this.stackClient.fetchJSON('PUT', '/settings/instance', {
+                  data: document
+                });
 
-              case 5:
-                updateFileOptions.fileId = fileId;
-                return _context13.abrupt("return", this.updateFile(data, updateFileOptions));
+              case 3:
+                resp = _context2.sent;
+                _context2.next = 9;
+                break;
 
-              case 7:
-                return _context13.abrupt("return", this.updateAttributes(fileId, attributes));
+              case 6:
+                _context2.next = 8;
+                return this.stackClient.fetchJSON('PUT', (0, _utils.uri)(_templateObject(), this.doctype, document._id), document);
 
               case 8:
+                resp = _context2.sent;
+
+              case 9:
+                return _context2.abrupt("return", {
+                  data: normalizeSettings(resp.data)
+                });
+
+              case 10:
               case "end":
-                return _context13.stop();
+                return _context2.stop();
             }
           }
-        }, _callee13, this);
+        }, _callee2, this);
       }));
 
-      function update(_x21) {
+      function update(_x2) {
         return _update.apply(this, arguments);
       }
 
       return update;
     }()
-    /**
-     * Creates a file
-     *
-     *
-     * @private
-     * @param {File|Blob|Stream|string|ArrayBuffer} data file to be uploaded
-     * @param {FileAttributes & SpecificFileAttributesForKonnector} params Additional parameters
-     * @param  {object}  params.options     Options to pass to doUpload method (additional headers)
-     * @throws {Error} - explaining reason why creation failed
-     */
+  }]);
+  return SettingsCollection;
+}(_DocumentCollection2.default);
 
-  }, {
-    key: "createFile",
-    value: function () {
-      var _createFile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14(data) {
-        var _ref5,
-            nameOption,
-            _ref5$dirId,
-            dirId,
-            _ref5$executable,
-            executable,
-            _ref5$encrypted,
-            encrypted,
-            metadata,
-            _ref5$sourceAccount,
-            sourceAccount,
-            _ref5$sourceAccountId,
-            sourceAccountIdentifier,
-            options,
-            name,
-            metadataId,
-            meta,
-            size,
-            path,
-            _args14 = arguments;
-
-        return _regenerator.default.wrap(function _callee14$(_context14) {
-          while (1) {
-            switch (_context14.prev = _context14.next) {
-              case 0:
-                _ref5 = _args14.length > 1 && _args14[1] !== undefined ? _args14[1] : {};
-                nameOption = _ref5.name, _ref5$dirId = _ref5.dirId, dirId = _ref5$dirId === void 0 ? '' : _ref5$dirId, _ref5$executable = _ref5.executable, executable = _ref5$executable === void 0 ? false : _ref5$executable, _ref5$encrypted = _ref5.encrypted, encrypted = _ref5$encrypted === void 0 ? false : _ref5$encrypted, metadata = _ref5.metadata, _ref5$sourceAccount = _ref5.sourceAccount, sourceAccount = _ref5$sourceAccount === void 0 ? '' : _ref5$sourceAccount, _ref5$sourceAccountId = _ref5.sourceAccountIdentifier, sourceAccountIdentifier = _ref5$sourceAccountId === void 0 ? '' : _ref5$sourceAccountId, options = (0, _objectWithoutProperties2.default)(_ref5, ["name", "dirId", "executable", "encrypted", "metadata", "sourceAccount", "sourceAccountIdentifier"]);
-                name = nameOption; // handle case where data is a file and contains the name
-
-                if (!name && typeof data.name === 'string') {
-                  name = data.name;
-                }
-
-                name = sanitizeAndValidateFileName(name);
-                metadataId = '';
+SettingsCollection.normalizeDoctype = _DocumentCollection2.default.normalizeDoctypeJsonApi;
+var _default = SettingsCollection;
+exports.default = _default;
 
-                if (!metadata) {
-                  _context14.next = 11;
-                  break;
-                }
+/***/ }),
+/* 607 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                _context14.next = 9;
-                return this.createFileMetadata(metadata);
+"use strict";
 
-              case 9:
-                meta = _context14.sent;
-                metadataId = meta.data.id;
 
-              case 11:
-                size = '';
+var _interopRequireDefault = __webpack_require__(1);
 
-                if (options.contentLength) {
-                  size = String(options.contentLength);
-                }
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.NOTES_URL_DOCTYPE = exports.NOTES_DOCTYPE = void 0;
 
-                path = (0, _utils.uri)(_templateObject10(), dirId, name, executable, encrypted, metadataId, size, sourceAccount, sourceAccountIdentifier);
-                return _context14.abrupt("return", this.doUpload(data, path, options));
+var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
 
-              case 15:
-              case "end":
-                return _context14.stop();
-            }
-          }
-        }, _callee14, this);
-      }));
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-      function createFile(_x22) {
-        return _createFile.apply(this, arguments);
-      }
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-      return createFile;
-    }()
-    /**
-     * updateFile - Updates a file's data
-     *
-     * @param {File|Blob|Stream|string|ArrayBuffer} data file to be uploaded
-     * @param {FileAttributes} params       Additional parameters
-     * @param  {object}  params.options     Options to pass to doUpload method (additional headers)
-     * @returns {object}                    Updated document
-     * @throws {Error} - explaining reason why update failed
-     */
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-  }, {
-    key: "updateFile",
-    value: function () {
-      var _updateFile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15(data) {
-        var _ref6,
-            _ref6$executable,
-            executable,
-            _ref6$encrypted,
-            encrypted,
-            fileId,
-            _ref6$name,
-            name,
-            metadata,
-            options,
-            fileName,
-            sanitizedName,
-            metadataId,
-            path,
-            meta,
-            size,
-            _args15 = arguments;
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-        return _regenerator.default.wrap(function _callee15$(_context15) {
-          while (1) {
-            switch (_context15.prev = _context15.next) {
-              case 0:
-                _ref6 = _args15.length > 1 && _args15[1] !== undefined ? _args15[1] : {};
-                _ref6$executable = _ref6.executable, executable = _ref6$executable === void 0 ? false : _ref6$executable, _ref6$encrypted = _ref6.encrypted, encrypted = _ref6$encrypted === void 0 ? false : _ref6$encrypted, fileId = _ref6.fileId, _ref6$name = _ref6.name, name = _ref6$name === void 0 ? '' : _ref6$name, metadata = _ref6.metadata, options = (0, _objectWithoutProperties2.default)(_ref6, ["executable", "encrypted", "fileId", "name", "metadata"]);
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
-                if (!(!fileId || typeof fileId !== 'string')) {
-                  _context15.next = 4;
-                  break;
-                }
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
-                throw new Error('missing fileId argument');
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
-              case 4:
-                // name might be set in a File object
-                fileName = name || data.name;
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-                if (!(!fileName || typeof fileName !== 'string')) {
-                  _context15.next = 7;
-                  break;
-                }
+var _DocumentCollection2 = _interopRequireDefault(__webpack_require__(491));
 
-                throw new Error('missing name in data argument');
+var _utils = __webpack_require__(521);
 
-              case 7:
-                sanitizedName = sanitizeAndValidateFileName(fileName);
-                /**
-                 * We already use the body to send the content of the file. So we have 2 choices :
-                 * Use an object in a query string to send the metadata
-                 * create a new header http
-                 * In both case, we have a size limitation depending of the browser.
-                 *
-                 * So we had this current workaround where we create the metadata before
-                 * (no size limit since we can use the body for that) and after we use the ID.
-                 */
+var _NotesSchema = __webpack_require__(608);
 
-                path = (0, _utils.uri)(_templateObject11(), fileId, sanitizedName, executable, encrypted);
+function _templateObject2() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/notes/", "/open"]);
 
-                if (!metadata) {
-                  _context15.next = 15;
-                  break;
-                }
+  _templateObject2 = function _templateObject2() {
+    return data;
+  };
 
-                _context15.next = 12;
-                return this.createFileMetadata(metadata);
+  return data;
+}
 
-              case 12:
-                meta = _context15.sent;
-                metadataId = meta.data.id;
-                path = path + "&MetadataID=".concat(metadataId);
+function _templateObject() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/files/", ""]);
 
-              case 15:
-                size = '';
+  _templateObject = function _templateObject() {
+    return data;
+  };
 
-                if (options.contentLength) {
-                  size = String(options.contentLength);
-                  path = path + "&Size=".concat(size);
-                }
+  return data;
+}
 
-                return _context15.abrupt("return", this.doUpload(data, path, options, 'PUT'));
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
-              case 18:
-              case "end":
-                return _context15.stop();
-            }
-          }
-        }, _callee15, this);
-      }));
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-      function updateFile(_x23) {
-        return _updateFile.apply(this, arguments);
-      }
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-      return updateFile;
-    }()
-  }, {
-    key: "getDownloadLinkById",
-    value: function getDownloadLinkById(id, filename) {
-      return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject12(), id, encodeURIComponent(filename))).then(this.extractResponseLinkRelated);
-    }
-  }, {
-    key: "getDownloadLinkByRevision",
-    value: function getDownloadLinkByRevision(versionId, filename) {
-      return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject13(), versionId, encodeURIComponent(filename))).then(this.extractResponseLinkRelated);
-    }
-  }, {
-    key: "getDownloadLinkByPath",
-    value: function getDownloadLinkByPath(path) {
-      return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject14(), path)).then(this.extractResponseLinkRelated);
-    }
-  }, {
-    key: "download",
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-    /**
-     * Download a file or a specific version of the file
-     *
-     * @param {object} file io.cozy.files object
-     * @param {string} versionId Id of the io.cozy.files.version
-     * @param {string} filename The name you want for the downloaded file
-     *                            (by default the same as the file)
-     */
-    value: function () {
-      var _download = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16(file) {
-        var versionId,
-            filename,
-            href,
-            filenameToUse,
-            _args16 = arguments;
-        return _regenerator.default.wrap(function _callee16$(_context16) {
-          while (1) {
-            switch (_context16.prev = _context16.next) {
-              case 0:
-                versionId = _args16.length > 1 && _args16[1] !== undefined ? _args16[1] : null;
-                filename = _args16.length > 2 && _args16[2] !== undefined ? _args16[2] : undefined;
-                filenameToUse = filename ? filename : file.name;
-                /**
-                 * Passing a filename to forceFileDownload is not enough
-                 * for a few browsers since the stack's response header will
-                 * not contain that name. Passing the filename to
-                 * getDownloadLinkBy{Id,Revision} will ask the stack to
-                 * return this filename in its content-disposition
-                 * header response
-                 */
+var NOTES_DOCTYPE = 'io.cozy.notes';
+exports.NOTES_DOCTYPE = NOTES_DOCTYPE;
+var NOTES_URL_DOCTYPE = 'io.cozy.notes.url';
+exports.NOTES_URL_DOCTYPE = NOTES_URL_DOCTYPE;
 
-                if (versionId) {
-                  _context16.next = 9;
-                  break;
-                }
+var normalizeDoc = _DocumentCollection2.default.normalizeDoctypeJsonApi(NOTES_DOCTYPE);
 
-                _context16.next = 6;
-                return this.getDownloadLinkById(file._id, filenameToUse);
+var normalizeNote = function normalizeNote(note) {
+  return _objectSpread(_objectSpread({}, normalizeDoc(note, NOTES_DOCTYPE)), note.attributes);
+};
 
-              case 6:
-                href = _context16.sent;
-                _context16.next = 12;
-                break;
+var normalizeNoteUrl = function normalizeNoteUrl(noteUrl) {
+  return _objectSpread(_objectSpread({}, _DocumentCollection2.default.normalizeDoctypeJsonApi(NOTES_URL_DOCTYPE)(noteUrl)), noteUrl.attributes);
+};
+/**
+ * Implements `DocumentCollection` API to interact with the /notes endpoint of the stack
+ */
 
-              case 9:
-                _context16.next = 11;
-                return this.getDownloadLinkByRevision(versionId, filenameToUse);
 
-              case 11:
-                href = _context16.sent;
+var NotesCollection = /*#__PURE__*/function (_DocumentCollection) {
+  (0, _inherits2.default)(NotesCollection, _DocumentCollection);
 
-              case 12:
-                this.forceFileDownload("".concat(href, "?Dl=1"), filenameToUse);
+  var _super = _createSuper(NotesCollection);
 
-              case 13:
-              case "end":
-                return _context16.stop();
-            }
-          }
-        }, _callee16, this);
-      }));
+  function NotesCollection(stackClient) {
+    (0, _classCallCheck2.default)(this, NotesCollection);
+    return _super.call(this, NOTES_DOCTYPE, stackClient);
+  }
+  /**
+   * Fetches all notes
+   *
+   * @returns {{data, links, meta}} The JSON API conformant response.
+   */
 
-      function download(_x24) {
-        return _download.apply(this, arguments);
-      }
 
-      return download;
-    }()
-  }, {
-    key: "fetchFileContent",
+  (0, _createClass2.default)(NotesCollection, [{
+    key: "all",
     value: function () {
-      var _fetchFileContent = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17(id) {
-        return _regenerator.default.wrap(function _callee17$(_context17) {
+      var _all = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
+        var resp;
+        return _regenerator.default.wrap(function _callee$(_context) {
           while (1) {
-            switch (_context17.prev = _context17.next) {
+            switch (_context.prev = _context.next) {
               case 0:
-                _logger.default.warn('FileCollection.fetchFileContent() is deprecated. Use FileCollection.fetchFileContentById() instead');
-
-                return _context17.abrupt("return", this.fetchFileContentById(id));
+                _context.next = 2;
+                return this.stackClient.fetchJSON('GET', '/notes');
 
               case 2:
+                resp = _context.sent;
+                return _context.abrupt("return", _objectSpread(_objectSpread({}, resp), {}, {
+                  data: resp.data.map(normalizeNote)
+                }));
+
+              case 4:
               case "end":
-                return _context17.stop();
+                return _context.stop();
             }
           }
-        }, _callee17, this);
+        }, _callee, this);
       }));
 
-      function fetchFileContent(_x25) {
-        return _fetchFileContent.apply(this, arguments);
+      function all() {
+        return _all.apply(this, arguments);
       }
 
-      return fetchFileContent;
+      return all;
     }()
     /**
-     * Fetch the binary of a file or a specific version of a file
-     * Useful for instance when you can't download the file directly
-     * (via a content-disposition attachement header) and need to store
-     * it before doing an operation.
+     * Destroys the note on the server
      *
-     * @param {string} id Id of the io.cozy.files or io.cozy.files.version
+     * @param {object} note       The io.cozy.notes document to destroy
+     * @param {string} [note._id] The note's id
      *
+     * @returns {{ data }} The deleted note
      */
 
   }, {
-    key: "fetchFileContentById",
+    key: "destroy",
     value: function () {
-      var _fetchFileContentById = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18(id) {
-        return _regenerator.default.wrap(function _callee18$(_context18) {
+      var _destroy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(_ref) {
+        var _id, resp;
+
+        return _regenerator.default.wrap(function _callee2$(_context2) {
           while (1) {
-            switch (_context18.prev = _context18.next) {
+            switch (_context2.prev = _context2.next) {
               case 0:
-                return _context18.abrupt("return", this.stackClient.fetch('GET', "/files/download/".concat(id)));
+                _id = _ref._id;
+                _context2.next = 3;
+                return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject(), _id));
 
-              case 1:
+              case 3:
+                resp = _context2.sent;
+                return _context2.abrupt("return", {
+                  data: _objectSpread(_objectSpread({}, normalizeNote(resp.data)), {}, {
+                    _deleted: true
+                  })
+                });
+
+              case 5:
               case "end":
-                return _context18.stop();
+                return _context2.stop();
             }
           }
-        }, _callee18, this);
+        }, _callee2, this);
       }));
 
-      function fetchFileContentById(_x26) {
-        return _fetchFileContentById.apply(this, arguments);
+      function destroy(_x) {
+        return _destroy.apply(this, arguments);
       }
 
-      return fetchFileContentById;
+      return destroy;
     }()
     /**
-     * Get a beautified size for a given file
-     * 1024B => 1KB
-     * 102404500404B => 95.37 GB
+     * Create a note
      *
-     * @param {object} file io.cozy.files object
-     * @param {number} decimal number of decimal
+     * @param {object} options - Options
+     * @param {string} [options.dir_id] dir_id where to create the note
+     *
+     * @returns {{data, links, meta}} The JSON API conformant response.
      */
 
   }, {
-    key: "getBeautifulSize",
-    value: function getBeautifulSize(file, decimal) {
-      return (0, _utils.formatBytes)(parseInt(file.size), decimal);
-    }
-  }, {
-    key: "downloadArchive",
+    key: "create",
     value: function () {
-      var _downloadArchive = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19(fileIds) {
-        var notSecureFilename,
-            filename,
-            href,
-            fullpath,
-            _args19 = arguments;
-        return _regenerator.default.wrap(function _callee19$(_context19) {
+      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(_ref2) {
+        var dir_id, resp;
+        return _regenerator.default.wrap(function _callee3$(_context3) {
           while (1) {
-            switch (_context19.prev = _context19.next) {
+            switch (_context3.prev = _context3.next) {
               case 0:
-                notSecureFilename = _args19.length > 1 && _args19[1] !== undefined ? _args19[1] : 'files';
-                filename = (0, _utils.slugify)(notSecureFilename);
-                _context19.next = 4;
-                return this.getArchiveLinkByIds(fileIds, filename);
+                dir_id = _ref2.dir_id;
+                _context3.next = 3;
+                return this.stackClient.fetchJSON('POST', '/notes', {
+                  data: {
+                    type: 'io.cozy.notes.documents',
+                    attributes: {
+                      title: '',
+                      schema: (0, _NotesSchema.getDefaultSchema)(),
+                      dir_id: dir_id
+                    }
+                  }
+                });
 
-              case 4:
-                href = _context19.sent;
-                fullpath = this.stackClient.fullpath(href);
-                this.forceFileDownload(fullpath, filename + '.zip');
+              case 3:
+                resp = _context3.sent;
+                return _context3.abrupt("return", _objectSpread(_objectSpread({}, resp), {}, {
+                  data: normalizeNote(resp.data)
+                }));
 
-              case 7:
+              case 5:
               case "end":
-                return _context19.stop();
+                return _context3.stop();
             }
           }
-        }, _callee19, this);
+        }, _callee3, this);
       }));
 
-      function downloadArchive(_x27) {
-        return _downloadArchive.apply(this, arguments);
+      function create(_x2) {
+        return _create.apply(this, arguments);
       }
 
-      return downloadArchive;
+      return create;
     }()
+    /**
+     * Returns the details to build the note's url
+     *
+     * @see https://github.com/cozy/cozy-stack/blob/master/docs/notes.md#get-notesidopen
+     *
+     * @param {object} note       The io.cozy.notes document to open
+     * @param {string} [note._id] The note's id
+     *
+     * @returns {{ data }} The note's url details
+     */
+
   }, {
-    key: "getArchiveLinkByIds",
+    key: "fetchURL",
     value: function () {
-      var _getArchiveLinkByIds = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee20(ids) {
-        var name,
-            resp,
-            _args20 = arguments;
-        return _regenerator.default.wrap(function _callee20$(_context20) {
+      var _fetchURL = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(_ref3) {
+        var _id, resp;
+
+        return _regenerator.default.wrap(function _callee4$(_context4) {
           while (1) {
-            switch (_context20.prev = _context20.next) {
+            switch (_context4.prev = _context4.next) {
               case 0:
-                name = _args20.length > 1 && _args20[1] !== undefined ? _args20[1] : 'files';
-                _context20.next = 3;
-                return this.stackClient.fetchJSON('POST', '/files/archive', {
-                  data: {
-                    type: 'io.cozy.archives',
-                    attributes: {
-                      name: name,
-                      ids: ids
-                    }
-                  }
-                });
+                _id = _ref3._id;
+                _context4.next = 3;
+                return this.stackClient.fetchJSON('GET', (0, _utils.uri)(_templateObject2(), _id));
 
               case 3:
-                resp = _context20.sent;
-                return _context20.abrupt("return", resp.links.related);
+                resp = _context4.sent;
+                return _context4.abrupt("return", {
+                  data: normalizeNoteUrl(resp.data)
+                });
 
               case 5:
               case "end":
-                return _context20.stop();
+                return _context4.stop();
             }
           }
-        }, _callee20, this);
+        }, _callee4, this);
       }));
 
-      function getArchiveLinkByIds(_x28) {
-        return _getArchiveLinkByIds.apply(this, arguments);
+      function fetchURL(_x3) {
+        return _fetchURL.apply(this, arguments);
       }
 
-      return getArchiveLinkByIds;
+      return fetchURL;
     }()
     /**
-     * Checks if the file belongs to the parent's hierarchy.
+     * Returns promise mirror schema for a note
      *
-     * @param  {string|object}  child    The file which can either be an id or an object
-     * @param  {string|object}  parent   The parent target which can either be an id or an object
-     * @returns {boolean}                 Whether the file is a parent's child
+     * @returns {object} schema
      */
 
   }, {
-    key: "isChildOf",
-    value: function () {
-      var _isChildOf = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee21(child, parent) {
-        var _this2 = this;
+    key: "getDefaultSchema",
+    value: function getDefaultSchema() {
+      return (0, _NotesSchema.getDefaultSchema)();
+    }
+  }]);
+  return NotesCollection;
+}(_DocumentCollection2.default);
 
-        var _ref7, childID, childDirID, childPath, _ref8, parentID, childDoc, currPath, targetsPath, newPath;
+NotesCollection.normalizeDoctype = _DocumentCollection2.default.normalizeDoctypeJsonApi;
+var _default = NotesCollection;
+exports.default = _default;
 
-        return _regenerator.default.wrap(function _callee21$(_context21) {
-          while (1) {
-            switch (_context21.prev = _context21.next) {
-              case 0:
-                _ref7 = typeof child === 'object' ? child : {
-                  _id: child
-                }, childID = _ref7._id, childDirID = _ref7.dirID, childPath = _ref7.path;
-                _ref8 = typeof parent === 'object' ? parent : {
-                  _id: parent
-                }, parentID = _ref8._id;
+/***/ }),
+/* 608 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                if (!(childID === parentID || childDirID === parentID)) {
-                  _context21.next = 4;
-                  break;
-                }
+"use strict";
 
-                return _context21.abrupt("return", true);
 
-              case 4:
-                if (childPath) {
-                  _context21.next = 10;
-                  break;
-                }
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.getDefaultSchema = exports.marks = exports.nodes = void 0;
+// taken from a debug of @atlakit/editor/editor-core/create-editor/create-editor
+// L139 (new Schema({nodes ,marks}))
+// static because the @atlaskit code base requires a real navigator
+// TODO: either find and exclude plugins requiring interaction
+//       or running a JSDOM faking a navigator
+var nodes = [['doc', {
+  content: '(block)+',
+  marks: 'link'
+}], ['paragraph', {
+  content: 'inline*',
+  group: 'block',
+  marks: 'strong code em link strike subsup textColor typeAheadQuery underline',
+  parseDOM: [{
+    tag: 'p'
+  }]
+}], ['text', {
+  group: 'inline'
+}], ['bulletList', {
+  group: 'block',
+  content: 'listItem+',
+  parseDOM: [{
+    tag: 'ul'
+  }]
+}], ['orderedList', {
+  group: 'block',
+  content: 'listItem+',
+  parseDOM: [{
+    tag: 'ol'
+  }]
+}], ['listItem', {
+  content: '(paragraph ) (paragraph | bulletList | orderedList )*',
+  defining: true,
+  parseDOM: [{
+    tag: 'li'
+  }]
+}], ['heading', {
+  attrs: {
+    level: {
+      default: 1
+    }
+  },
+  content: 'inline*',
+  group: 'block',
+  defining: true,
+  parseDOM: [{
+    tag: 'h1',
+    attrs: {
+      level: 1
+    }
+  }, {
+    tag: 'h2',
+    attrs: {
+      level: 2
+    }
+  }, {
+    tag: 'h3',
+    attrs: {
+      level: 3
+    }
+  }, {
+    tag: 'h4',
+    attrs: {
+      level: 4
+    }
+  }, {
+    tag: 'h5',
+    attrs: {
+      level: 5
+    }
+  }, {
+    tag: 'h6',
+    attrs: {
+      level: 6
+    }
+  }]
+}], ['blockquote', {
+  content: 'paragraph+',
+  group: 'block',
+  defining: true,
+  selectable: false,
+  parseDOM: [{
+    tag: 'blockquote'
+  }]
+}], ['rule', {
+  group: 'block',
+  parseDOM: [{
+    tag: 'hr'
+  }]
+}], ['panel', {
+  group: 'block',
+  content: '(paragraph | heading | bulletList | orderedList)+',
+  attrs: {
+    panelType: {
+      default: 'info'
+    }
+  },
+  parseDOM: [{
+    tag: 'div[data-panel-type]'
+  }]
+}], ['confluenceUnsupportedBlock', {
+  group: 'block',
+  attrs: {
+    cxhtml: {
+      default: null
+    }
+  },
+  parseDOM: [{
+    tag: 'div[data-node-type="confluenceUnsupportedBlock"]'
+  }]
+}], ['confluenceUnsupportedInline', {
+  group: 'inline',
+  inline: true,
+  atom: true,
+  attrs: {
+    cxhtml: {
+      default: null
+    }
+  },
+  parseDOM: [{
+    tag: 'div[data-node-type="confluenceUnsupportedInline"]'
+  }]
+}], ['unsupportedBlock', {
+  inline: false,
+  group: 'block',
+  atom: true,
+  selectable: true,
+  attrs: {
+    originalValue: {
+      default: {}
+    }
+  },
+  parseDOM: [{
+    tag: '[data-node-type="unsupportedBlock"]'
+  }]
+}], ['unsupportedInline', {
+  inline: true,
+  group: 'inline',
+  selectable: true,
+  attrs: {
+    originalValue: {
+      default: {}
+    }
+  },
+  parseDOM: [{
+    tag: '[data-node-type="unsupportedInline"]'
+  }]
+}], ['hardBreak', {
+  inline: true,
+  group: 'inline',
+  selectable: false,
+  parseDOM: [{
+    tag: 'br'
+  }]
+}], ['table', {
+  content: 'tableRow+',
+  attrs: {
+    isNumberColumnEnabled: {
+      default: false
+    },
+    layout: {
+      default: 'default'
+    },
+    __autoSize: {
+      default: false
+    }
+  },
+  tableRole: 'table',
+  isolating: true,
+  selectable: false,
+  group: 'block',
+  parseDOM: [{
+    tag: 'table'
+  }]
+}], ['tableHeader', {
+  content: '(paragraph | panel | blockquote | orderedList | bulletList | rule | heading )+',
+  attrs: {
+    colspan: {
+      default: 1
+    },
+    rowspan: {
+      default: 1
+    },
+    colwidth: {
+      default: null
+    },
+    background: {
+      default: null
+    }
+  },
+  tableRole: 'header_cell',
+  isolating: true,
+  marks: '',
+  parseDOM: [{
+    tag: 'th'
+  }]
+}], ['tableRow', {
+  content: '(tableCell | tableHeader)+',
+  tableRole: 'row',
+  parseDOM: [{
+    tag: 'tr'
+  }]
+}], ['tableCell', {
+  content: '(paragraph | panel | blockquote | orderedList | bulletList | rule | heading | unsupportedBlock)+',
+  attrs: {
+    colspan: {
+      default: 1
+    },
+    rowspan: {
+      default: 1
+    },
+    colwidth: {
+      default: null
+    },
+    background: {
+      default: null
+    }
+  },
+  tableRole: 'cell',
+  marks: '',
+  isolating: true,
+  parseDOM: [{
+    tag: '.ak-renderer-table-number-column',
+    ignore: true
+  }, {
+    tag: 'td'
+  }]
+}]];
+exports.nodes = nodes;
+var marks = [['link', {
+  excludes: 'color',
+  group: 'link',
+  attrs: {
+    href: {},
+    __confluenceMetadata: {
+      default: null
+    }
+  },
+  inclusive: false,
+  parseDOM: [{
+    tag: 'a[href]'
+  }]
+}], ['em', {
+  inclusive: true,
+  group: 'fontStyle',
+  parseDOM: [{
+    tag: 'i'
+  }, {
+    tag: 'em'
+  }, {
+    style: 'font-style=italic'
+  }]
+}], ['strong', {
+  inclusive: true,
+  group: 'fontStyle',
+  parseDOM: [{
+    tag: 'strong'
+  }, {
+    tag: 'b'
+  }, {
+    style: 'font-weight'
+  }]
+}], ['textColor', {
+  attrs: {
+    color: {}
+  },
+  inclusive: true,
+  group: 'color',
+  parseDOM: [{
+    style: 'color'
+  }]
+}], ['strike', {
+  inclusive: true,
+  group: 'fontStyle',
+  parseDOM: [{
+    tag: 'strike'
+  }, {
+    tag: 's'
+  }, {
+    tag: 'del'
+  }, {
+    style: 'text-decoration'
+  }]
+}], ['subsup', {
+  inclusive: true,
+  group: 'fontStyle',
+  attrs: {
+    type: {
+      default: 'sub'
+    }
+  },
+  parseDOM: [{
+    tag: 'sub',
+    attrs: {
+      type: 'sub'
+    }
+  }, {
+    tag: 'sup',
+    attrs: {
+      type: 'sup'
+    }
+  }]
+}], ['underline', {
+  inclusive: true,
+  group: 'fontStyle',
+  parseDOM: [{
+    tag: 'u'
+  }, {
+    style: 'text-decoration'
+  }]
+}], ['code', {
+  excludes: 'fontStyle link searchQuery color',
+  inclusive: true,
+  parseDOM: [{
+    tag: 'span.code',
+    preserveWhitespace: true
+  }, {
+    tag: 'code',
+    preserveWhitespace: true
+  }, {
+    tag: 'tt',
+    preserveWhitespace: true
+  }, {
+    tag: 'span',
+    preserveWhitespace: true
+  }]
+}], ['typeAheadQuery', {
+  excludes: 'searchQuery',
+  inclusive: true,
+  group: 'searchQuery',
+  parseDOM: [{
+    tag: 'span[data-type-ahead-query]'
+  }],
+  attrs: {
+    trigger: {
+      default: ''
+    }
+  }
+}]];
+exports.marks = marks;
 
-                _context21.next = 7;
-                return this.statById(childID);
+var getDefaultSchema = function getDefaultSchema() {
+  return {
+    nodes: nodes,
+    marks: marks
+  };
+};
 
-              case 7:
-                childDoc = _context21.sent;
-                childPath = childDoc.data.path;
-                childDirID = childDoc.data.dirID;
+exports.getDefaultSchema = getDefaultSchema;
 
-              case 10:
-                // Build hierarchy paths
-                currPath = childPath;
-                targetsPath = [childPath];
+/***/ }),
+/* 609 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                while (currPath != '') {
-                  newPath = dirName(currPath);
+"use strict";
 
-                  if (newPath != '') {
-                    targetsPath.push(newPath);
-                  }
 
-                  currPath = newPath;
-                }
+var _interopRequireWildcard = __webpack_require__(277);
 
-                targetsPath.reverse(); // Look for all hierarchy in parallel and return true as soon as a dir is the searched parent
+var _interopRequireDefault = __webpack_require__(1);
 
-                return _context21.abrupt("return", raceWithCondition(targetsPath.map(function (path) {
-                  return _this2.statByPath(path);
-                }), function (stat) {
-                  return stat.data._id == parentID;
-                }));
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.OAUTH_CLIENTS_DOCTYPE = void 0;
 
-              case 15:
-              case "end":
-                return _context21.stop();
-            }
-          }
-        }, _callee21, this);
-      }));
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-      function isChildOf(_x29, _x30) {
-        return _isChildOf.apply(this, arguments);
-      }
+var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
 
-      return isChildOf;
-    }()
-    /**
-     * statById - Fetches the metadata about a document. For folders, the results include the list of child files and folders.
-     *
-     * @param {string}      id                      ID of the document
-     * @param {object|null} options                 Pagination options
-     * @param {number|null} [options.page[limit]]   For pagination, the number of results to return.
-     * @param {number|null} [options.page[skip]]    For skip-based pagination, the number of referenced files to skip.
-     * @param {CouchDBViewCursor|null} [options.page[cursor]]  For cursor-based pagination, the index cursor.
-     *
-     * @returns {object} A promise resolving to an object containing "data" (the document metadata), "included" (the child documents) and "links" (pagination informations)
-     */
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-  }, {
-    key: "statById",
-    value: function () {
-      var _statById = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee22(id) {
-        var options,
-            params,
-            path,
-            url,
-            resp,
-            _args22 = arguments;
-        return _regenerator.default.wrap(function _callee22$(_context22) {
-          while (1) {
-            switch (_context22.prev = _context22.next) {
-              case 0:
-                options = _args22.length > 1 && _args22[1] !== undefined ? _args22[1] : {};
-                params = (0, _pick.default)(options, ['page[limit]', 'page[skip]', 'page[cursor]']);
-                path = (0, _utils.uri)(_templateObject15(), id);
-                url = querystring.buildURL(path, params);
-                _context22.next = 6;
-                return this.stackClient.fetchJSON('GET', url);
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-              case 6:
-                resp = _context22.sent;
-                return _context22.abrupt("return", {
-                  data: normalizeFile(resp.data),
-                  included: resp.included && resp.included.map(function (f) {
-                    return normalizeFile(f);
-                  }),
-                  links: resp.links
-                });
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-              case 8:
-              case "end":
-                return _context22.stop();
-            }
-          }
-        }, _callee22, this);
-      }));
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
-      function statById(_x31) {
-        return _statById.apply(this, arguments);
-      }
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
-      return statById;
-    }()
-  }, {
-    key: "statByPath",
-    value: function () {
-      var _statByPath = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee23(path) {
-        var resp;
-        return _regenerator.default.wrap(function _callee23$(_context23) {
-          while (1) {
-            switch (_context23.prev = _context23.next) {
-              case 0:
-                _context23.next = 2;
-                return this.stackClient.fetchJSON('GET', (0, _utils.uri)(_templateObject16(), path));
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
-              case 2:
-                resp = _context23.sent;
-                return _context23.abrupt("return", {
-                  data: normalizeFile(resp.data),
-                  included: resp.included && resp.included.map(function (f) {
-                    return normalizeFile(f);
-                  })
-                });
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-              case 4:
-              case "end":
-                return _context23.stop();
-            }
-          }
-        }, _callee23, this);
-      }));
+var _get2 = _interopRequireDefault(__webpack_require__(399));
 
-      function statByPath(_x32) {
-        return _statByPath.apply(this, arguments);
-      }
+var _DocumentCollection2 = _interopRequireDefault(__webpack_require__(491));
 
-      return statByPath;
-    }()
-    /**
-     * Create directory
-     *
-     * @private
-     * @param  {DirectoryAttributes} attributes - Attributes of the directory
-     * @returns {Promise}
-     * @throws {Error} - explaining reason why creation failed
-     */
+var _utils = __webpack_require__(521);
 
-  }, {
-    key: "createDirectory",
-    value: function () {
-      var _createDirectory = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24() {
-        var attributes,
-            name,
-            dirId,
-            lastModifiedDate,
-            metadata,
-            metadataId,
-            meta,
-            safeName,
-            lastModified,
-            resp,
-            _args24 = arguments;
-        return _regenerator.default.wrap(function _callee24$(_context24) {
-          while (1) {
-            switch (_context24.prev = _context24.next) {
-              case 0:
-                attributes = _args24.length > 0 && _args24[0] !== undefined ? _args24[0] : {};
-                name = attributes.name, dirId = attributes.dirId, lastModifiedDate = attributes.lastModifiedDate, metadata = attributes.metadata;
-                metadataId = '';
+var querystring = _interopRequireWildcard(__webpack_require__(578));
 
-                if (!metadata) {
-                  _context24.next = 8;
-                  break;
-                }
+var _Collection = __webpack_require__(489);
 
-                _context24.next = 6;
-                return this.createFileMetadata(metadata);
+var _errors = __webpack_require__(582);
 
-              case 6:
-                meta = _context24.sent;
-                metadataId = meta.data.id;
+function _templateObject3() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/settings/clients/", ""]);
 
-              case 8:
-                safeName = sanitizeAndValidateFileName(name);
-                lastModified = lastModifiedDate && (typeof lastModifiedDate === 'string' ? new Date(lastModifiedDate) : lastModifiedDate);
-                _context24.next = 12;
-                return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject17(), dirId, safeName, metadataId), undefined, {
-                  headers: {
-                    Date: lastModified ? lastModified.toGMTString() : ''
-                  }
-                });
+  _templateObject3 = function _templateObject3() {
+    return data;
+  };
 
-              case 12:
-                resp = _context24.sent;
-                return _context24.abrupt("return", {
-                  data: normalizeFile(resp.data)
-                });
+  return data;
+}
 
-              case 14:
-              case "end":
-                return _context24.stop();
-            }
-          }
-        }, _callee24, this);
-      }));
+function _templateObject2() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/settings/clients/", ""]);
 
-      function createDirectory() {
-        return _createDirectory.apply(this, arguments);
-      }
+  _templateObject2 = function _templateObject2() {
+    return data;
+  };
 
-      return createDirectory;
-    }()
-  }, {
-    key: "ensureDirectoryExists",
-    value: function () {
-      var _ensureDirectoryExists = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee25(path) {
-        var resp;
-        return _regenerator.default.wrap(function _callee25$(_context25) {
-          while (1) {
-            switch (_context25.prev = _context25.next) {
-              case 0:
-                if (this.specialDirectories[path]) {
-                  _context25.next = 5;
-                  break;
-                }
+  return data;
+}
 
-                _context25.next = 3;
-                return this.createDirectoryByPath(path);
+function _templateObject() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/settings/clients"]);
 
-              case 3:
-                resp = _context25.sent;
-                this.specialDirectories[path] = resp.data._id;
+  _templateObject = function _templateObject() {
+    return data;
+  };
 
-              case 5:
-                return _context25.abrupt("return", this.specialDirectories[path]);
+  return data;
+}
 
-              case 6:
-              case "end":
-                return _context25.stop();
-            }
-          }
-        }, _callee25, this);
-      }));
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
-      function ensureDirectoryExists(_x33) {
-        return _ensureDirectoryExists.apply(this, arguments);
-      }
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-      return ensureDirectoryExists;
-    }()
-    /**
-     * Get a directory or create it
-     *
-     * @private
-     * @param  {string} name - Name of the directory we want to get or create
-     * @param  {FileDocument} parentDirectory - Parent directory of the directory we want to get or create
-     * @returns {Promise}
-     * @throws {Error} - explaining reason why creation failed
-     */
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-  }, {
-    key: "getDirectoryOrCreate",
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+var OAUTH_CLIENTS_DOCTYPE = 'io.cozy.oauth.clients';
+exports.OAUTH_CLIENTS_DOCTYPE = OAUTH_CLIENTS_DOCTYPE;
+
+var normalizeDoc = _DocumentCollection2.default.normalizeDoctypeJsonApi(OAUTH_CLIENTS_DOCTYPE);
+
+var normalizeOAuthClient = function normalizeOAuthClient(client) {
+  return _objectSpread(_objectSpread({}, normalizeDoc(client, OAUTH_CLIENTS_DOCTYPE)), client.attributes);
+};
+/**
+ * Implements `DocumentCollection` API to interact with the /settings/clients endpoint of the stack
+ */
+
+
+var OAuthClientsCollection = /*#__PURE__*/function (_DocumentCollection) {
+  (0, _inherits2.default)(OAuthClientsCollection, _DocumentCollection);
+
+  var _super = _createSuper(OAuthClientsCollection);
+
+  function OAuthClientsCollection(stackClient) {
+    (0, _classCallCheck2.default)(this, OAuthClientsCollection);
+    return _super.call(this, OAUTH_CLIENTS_DOCTYPE, stackClient);
+  }
+  /**
+   * Fetches all OAuth clients
+   *
+   * @param  {object}         options             Query options
+   * @param  {number}         [options.limit]     For pagination, the number of results to return.
+   * @param  {string}         [options.bookmark]  For bookmark-based pagination, the document _id to start from
+   * @param  {Array<string>}  [options.keys]      Ids of specific clients to return (within the current page),
+   *
+   * @returns {object} The JSON API conformant response.
+   */
+
+
+  (0, _createClass2.default)(OAuthClientsCollection, [{
+    key: "all",
     value: function () {
-      var _getDirectoryOrCreate = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee26(name, parentDirectory) {
-        var safeName, path, stat, parsedError, errors;
-        return _regenerator.default.wrap(function _callee26$(_context26) {
+      var _all = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
+        var options,
+            _options$limit,
+            limit,
+            bookmark,
+            keys,
+            params,
+            url,
+            path,
+            resp,
+            nextLink,
+            nextLinkURL,
+            nextBookmark,
+            hasBookmark,
+            data,
+            meta,
+            _args = arguments;
+
+        return _regenerator.default.wrap(function _callee$(_context) {
           while (1) {
-            switch (_context26.prev = _context26.next) {
+            switch (_context.prev = _context.next) {
               case 0:
-                if (!(parentDirectory && !parentDirectory.attributes)) {
-                  _context26.next = 2;
-                  break;
-                }
-
-                throw new Error('Malformed parent directory');
-
-              case 2:
-                safeName = sanitizeFileName(name);
-                path = "".concat(parentDirectory._id === ROOT_DIR_ID ? '' : parentDirectory.attributes.path, "/").concat(safeName);
-                _context26.prev = 4;
-                _context26.next = 7;
-                return this.statByPath(path || '/');
+                options = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
+                _options$limit = options.limit, limit = _options$limit === void 0 ? 100 : _options$limit, bookmark = options.bookmark, keys = options.keys;
+                params = {
+                  'page[limit]': limit,
+                  'page[cursor]': bookmark
+                };
+                url = (0, _utils.uri)(_templateObject());
+                path = querystring.buildURL(url, params);
+                _context.prev = 5;
+                _context.next = 8;
+                return this.stackClient.fetchJSON('GET', path);
 
-              case 7:
-                stat = _context26.sent;
-                return _context26.abrupt("return", stat);
+              case 8:
+                resp = _context.sent;
+                _context.next = 14;
+                break;
 
               case 11:
-                _context26.prev = 11;
-                _context26.t0 = _context26["catch"](4);
-                parsedError = JSON.parse(_context26.t0.message);
-                errors = parsedError.errors;
+                _context.prev = 11;
+                _context.t0 = _context["catch"](5);
+                return _context.abrupt("return", (0, _Collection.dontThrowNotFoundError)(_context.t0));
 
-                if (!(errors && errors.length && errors[0].status === '404')) {
-                  _context26.next = 17;
+              case 14:
+                nextLink = (0, _get2.default)(resp, 'links.next', '');
+                nextLinkURL = new URL("".concat(this.stackClient.uri).concat(nextLink));
+                nextBookmark = nextLinkURL.searchParams.get('page[cursor]') || undefined;
+                hasBookmark = nextBookmark !== undefined;
+
+                if (!keys) {
+                  _context.next = 24;
                   break;
                 }
 
-                return _context26.abrupt("return", this.createDirectory({
-                  name: safeName,
-                  dirId: parentDirectory && parentDirectory._id
-                }));
+                data = resp.data.filter(function (c) {
+                  return keys.includes(c.id);
+                }).map(function (c) {
+                  return normalizeOAuthClient(c);
+                });
+                meta = _objectSpread(_objectSpread({}, resp.meta), {}, {
+                  count: data.length
+                });
+                return _context.abrupt("return", {
+                  data: data,
+                  meta: meta,
+                  next: keys.length > data.length && hasBookmark,
+                  bookmark: nextBookmark
+                });
 
-              case 17:
-                throw errors;
+              case 24:
+                return _context.abrupt("return", {
+                  data: resp.data.map(function (c) {
+                    return normalizeOAuthClient(c);
+                  }),
+                  meta: resp.meta,
+                  next: hasBookmark,
+                  bookmark: nextBookmark
+                });
 
-              case 18:
+              case 25:
               case "end":
-                return _context26.stop();
+                return _context.stop();
             }
           }
-        }, _callee26, this, [[4, 11]]);
+        }, _callee, this, [[5, 11]]);
       }));
 
-      function getDirectoryOrCreate(_x34, _x35) {
-        return _getDirectoryOrCreate.apply(this, arguments);
+      function all() {
+        return _all.apply(this, arguments);
       }
 
-      return getDirectoryOrCreate;
+      return all;
     }()
     /**
-     * async createDirectoryByPath - Creates one or more folders until the given path exists
+     * Get an OAuth client by id
      *
-     * @param  {string} path - Path of the created directory
-     * @returns {object} The document corresponding to the last segment of the path
+     * @param  {string} id The client id.
+     * @returns {object}  JsonAPI response containing normalized client as data attribute
      */
 
   }, {
-    key: "createDirectoryByPath",
+    key: "get",
     value: function () {
-      var _createDirectoryByPath = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee27(path) {
-        var parts, root, parentDir, _iterator, _step, part;
-
-        return _regenerator.default.wrap(function _callee27$(_context27) {
+      var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(id) {
+        var resp;
+        return _regenerator.default.wrap(function _callee2$(_context2) {
           while (1) {
-            switch (_context27.prev = _context27.next) {
+            switch (_context2.prev = _context2.next) {
               case 0:
-                parts = path.split('/').filter(function (part) {
-                  return part !== '';
+                _context2.next = 2;
+                return this.all({
+                  keys: [id]
                 });
-                _context27.next = 3;
-                return this.statById(ROOT_DIR_ID);
 
-              case 3:
-                root = _context27.sent;
+              case 2:
+                resp = _context2.sent;
 
-                if (parts.length) {
-                  _context27.next = 6;
+              case 3:
+                if (!resp.next) {
+                  _context2.next = 9;
                   break;
                 }
 
-                return _context27.abrupt("return", root);
+                _context2.next = 6;
+                return this.all({
+                  keys: [id],
+                  bookmark: resp.bookmark
+                });
 
               case 6:
-                parentDir = root;
-                _iterator = _createForOfIteratorHelper(parts);
-                _context27.prev = 8;
-
-                _iterator.s();
+                resp = _context2.sent;
+                _context2.next = 3;
+                break;
 
-              case 10:
-                if ((_step = _iterator.n()).done) {
-                  _context27.next = 17;
+              case 9:
+                if (!resp.data.length) {
+                  _context2.next = 13;
                   break;
                 }
 
-                part = _step.value;
-                _context27.next = 14;
-                return this.getDirectoryOrCreate(part, parentDir.data);
-
-              case 14:
-                parentDir = _context27.sent;
-
-              case 15:
-                _context27.next = 10;
-                break;
-
-              case 17:
-                _context27.next = 22;
-                break;
-
-              case 19:
-                _context27.prev = 19;
-                _context27.t0 = _context27["catch"](8);
-
-                _iterator.e(_context27.t0);
-
-              case 22:
-                _context27.prev = 22;
-
-                _iterator.f();
-
-                return _context27.finish(22);
+                return _context2.abrupt("return", {
+                  data: normalizeOAuthClient(resp.data[0])
+                });
 
-              case 25:
-                return _context27.abrupt("return", parentDir);
+              case 13:
+                resp.url = (0, _utils.uri)(_templateObject2(), id);
+                resp.status = '404';
+                throw new _errors.FetchError(resp, 'Not Found');
 
-              case 26:
+              case 16:
               case "end":
-                return _context27.stop();
+                return _context2.stop();
             }
           }
-        }, _callee27, this, [[8, 19, 22, 25]]);
+        }, _callee2, this);
       }));
 
-      function createDirectoryByPath(_x36) {
-        return _createDirectoryByPath.apply(this, arguments);
+      function get(_x) {
+        return _get.apply(this, arguments);
       }
 
-      return createDirectoryByPath;
+      return get;
     }()
     /**
+     * Destroys the OAuth client on the server
      *
-     * async updateAttributes - Updates a file / folder's attributes except
-     * the metadata attribute. If you want to update its metadata attribute,
-     * then use `updateFileMetadataAttribute` since `metadata` is a specific
-     * doctype.
-     *
-     * For instance, if you want to update the name of a file, you can pass
-     * attributes = { name: 'newName'}
-     *
-     * You can see the attributes for both Folder and File (as they share the
-     * same doctype they have a few in common) here :
-     * https://docs.cozy.io/en/cozy-doctypes/docs/io.cozy.files/#iocozyfiles
+     * @param {object} oauthClient The io.cozy.oauth.clients document to destroy
      *
-     * @private You shoud use update() directly.
-     * @param  {string} id         File id
-     * @param  {object} attributes New file attributes
-     * @returns {object}            Updated document
-     * @throws {Error} - explaining reason why update failed
+     * @returns {{ data }} The deleted client
      */
 
   }, {
-    key: "updateAttributes",
+    key: "destroy",
     value: function () {
-      var _updateAttributes = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee28(id, attributes) {
-        var sanitizedAttributes, resp;
-        return _regenerator.default.wrap(function _callee28$(_context28) {
+      var _destroy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(oauthClient) {
+        var _id;
+
+        return _regenerator.default.wrap(function _callee3$(_context3) {
           while (1) {
-            switch (_context28.prev = _context28.next) {
+            switch (_context3.prev = _context3.next) {
               case 0:
-                sanitizedAttributes = _objectSpread({}, attributes);
-
-                if (attributes.name) {
-                  sanitizedAttributes.name = sanitizeAndValidateFileName(attributes.name);
-                }
+                _id = oauthClient._id;
+                _context3.next = 3;
+                return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject3(), _id));
 
-                _context28.next = 4;
-                return this.stackClient.fetchJSON('PATCH', (0, _utils.uri)(_templateObject18(), id), {
-                  data: {
-                    type: 'io.cozy.files',
-                    id: id,
-                    attributes: sanitizedAttributes
-                  }
+              case 3:
+                return _context3.abrupt("return", {
+                  data: _objectSpread(_objectSpread({}, normalizeOAuthClient(oauthClient)), {}, {
+                    _deleted: true
+                  })
                 });
 
               case 4:
-                resp = _context28.sent;
-                return _context28.abrupt("return", {
-                  data: normalizeFile(resp.data)
-                });
-
-              case 6:
               case "end":
-                return _context28.stop();
+                return _context3.stop();
             }
           }
-        }, _callee28, this);
+        }, _callee3, this);
       }));
 
-      function updateAttributes(_x37, _x38) {
-        return _updateAttributes.apply(this, arguments);
+      function destroy(_x2) {
+        return _destroy.apply(this, arguments);
       }
 
-      return updateAttributes;
+      return destroy;
     }()
-  }, {
-    key: "updateFileMetadata",
-    value: function () {
-      var _updateFileMetadata = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee29(id, attributes) {
-        return _regenerator.default.wrap(function _callee29$(_context29) {
-          while (1) {
-            switch (_context29.prev = _context29.next) {
-              case 0:
-                _logger.default.warn('CozyClient FileCollection updateFileMetadata method is deprecated. Use updateAttributes instead');
+  }]);
+  return OAuthClientsCollection;
+}(_DocumentCollection2.default);
 
-                return _context29.abrupt("return", this.updateAttributes(id, attributes));
+OAuthClientsCollection.normalizeDoctype = _DocumentCollection2.default.normalizeDoctypeJsonApi;
+var _default = OAuthClientsCollection;
+exports.default = _default;
 
-              case 2:
-              case "end":
-                return _context29.stop();
-            }
-          }
-        }, _callee29, this);
-      }));
+/***/ }),
+/* 610 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      function updateFileMetadata(_x39, _x40) {
-        return _updateFileMetadata.apply(this, arguments);
-      }
+"use strict";
 
-      return updateFileMetadata;
-    }()
-    /**
-     * Send a metadata object that can be associated to a file uploaded after that,
-     * via the MetadataID query parameter.
-     * See https://github.com/cozy/cozy-stack/blob/master/docs/files.md#post-filesuploadmetadata
-     *
-     * @param {object} attributes The file's metadata
-     * @returns {Promise<object>}          The Metadata object
-     */
 
-  }, {
-    key: "createFileMetadata",
-    value: function () {
-      var _createFileMetadata = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee30(attributes) {
-        var resp;
-        return _regenerator.default.wrap(function _callee30$(_context30) {
-          while (1) {
-            switch (_context30.prev = _context30.next) {
-              case 0:
-                _context30.next = 2;
-                return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject19()), {
-                  data: {
-                    type: 'io.cozy.files.metadata',
-                    attributes: attributes
-                  }
-                });
+var _interopRequireDefault = __webpack_require__(1);
 
-              case 2:
-                resp = _context30.sent;
-                return _context30.abrupt("return", {
-                  data: resp.data
-                });
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.SHORTCUTS_DOCTYPE = void 0;
 
-              case 4:
-              case "end":
-                return _context30.stop();
-            }
-          }
-        }, _callee30, this);
-      }));
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-      function createFileMetadata(_x41) {
-        return _createFileMetadata.apply(this, arguments);
-      }
+var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
 
-      return createFileMetadata;
-    }()
-    /**
-     *
-     * Updates the metadata attribute of a io.cozy.files
-     * Creates a new version of the file without having
-     * to upload again the file's content
-     *
-     * To see available content of the metadata attribute
-     * see : https://docs.cozy.io/en/cozy-doctypes/docs/io.cozy.files_metadata/
-     *
-     * @param {string} id File id
-     * @param {object} metadata io.cozy.files.metadata attributes
-     * @returns {Promise<object>} io.cozy.files updated
-     */
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-  }, {
-    key: "updateMetadataAttribute",
-    value: function () {
-      var _updateMetadataAttribute = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee31(id, metadata) {
-        var resp;
-        return _regenerator.default.wrap(function _callee31$(_context31) {
-          while (1) {
-            switch (_context31.prev = _context31.next) {
-              case 0:
-                _context31.next = 2;
-                return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject20(), id), {
-                  data: {
-                    type: 'io.cozy.files.metadata',
-                    attributes: metadata
-                  }
-                });
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-              case 2:
-                resp = _context31.sent;
-                return _context31.abrupt("return", {
-                  data: resp.data
-                });
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-              case 4:
-              case "end":
-                return _context31.stop();
-            }
-          }
-        }, _callee31, this);
-      }));
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
-      function updateMetadataAttribute(_x42, _x43) {
-        return _updateMetadataAttribute.apply(this, arguments);
-      }
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
-      return updateMetadataAttribute;
-    }()
-    /**
-     * Get the file mime-type based on its name
-     *
-     * @param {string} name - The file name
-     * @returns {string} the inferred file mime-type
-     */
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
-  }, {
-    key: "getFileTypeFromName",
-    value: function getFileTypeFromName(name) {
-      return _lite.default.getType(name) || CONTENT_TYPE_OCTET_STREAM;
-    }
-    /**
-     *
-     * This method should not be called directly to upload a file.
-     * You should use `createFile`
-     *
-     * @param {File|Blob|Stream|string|ArrayBuffer} dataArg file to be uploaded
-     * @param {string} path Uri to call the stack from. Something like
-     * `/files/${dirId}?Name=${name}&Type=file&Executable=${executable}&MetadataID=${metadataId}`
-     * @param {object} options Additional headers
-     * @param {string} method POST / PUT / PATCH
-     */
+var _DocumentCollection2 = _interopRequireDefault(__webpack_require__(491));
 
-  }, {
-    key: "doUpload",
-    value: function () {
-      var _doUpload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32(dataArg, path, options) {
-        var method,
-            correctPath,
-            data,
-            isBuffer,
-            isFile,
-            isBlob,
-            isStream,
-            isString,
-            _ref9,
-            contentType,
-            contentLength,
-            checksum,
-            lastModifiedDate,
-            ifMatch,
-            sPath,
-            params,
-            name,
-            headers,
-            date,
-            resp,
-            _args32 = arguments;
+var _utils = __webpack_require__(521);
 
-        return _regenerator.default.wrap(function _callee32$(_context32) {
-          while (1) {
-            switch (_context32.prev = _context32.next) {
-              case 0:
-                method = _args32.length > 3 && _args32[3] !== undefined ? _args32[3] : 'POST';
-                correctPath = path;
-                data = dataArg;
+var _getIllegalCharacter = __webpack_require__(598);
 
-                if (data) {
-                  _context32.next = 5;
-                  break;
-                }
+function _templateObject2() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/shortcuts/", ""]);
 
-                throw new Error('missing data argument');
+  _templateObject2 = function _templateObject2() {
+    return data;
+  };
 
-              case 5:
-                // transform any ArrayBufferView to ArrayBuffer
-                if (data.buffer && data.buffer instanceof ArrayBuffer) {
-                  data = data.buffer;
-                }
+  return data;
+}
 
-                isBuffer = typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer;
-                isFile = typeof File !== 'undefined' && data instanceof File;
-                isBlob = typeof Blob !== 'undefined' && data instanceof Blob;
-                isStream = data.readable === true && typeof data.pipe === 'function';
-                isString = typeof data === 'string';
+function _templateObject() {
+  var data = (0, _taggedTemplateLiteral2.default)(["/shortcuts"]);
 
-                if (!(!isBuffer && !isFile && !isBlob && !isStream && !isString)) {
-                  _context32.next = 13;
-                  break;
-                }
+  _templateObject = function _templateObject() {
+    return data;
+  };
 
-                throw new Error('invalid data type');
+  return data;
+}
 
-              case 13:
-                _ref9 = options || {}, contentType = _ref9.contentType, contentLength = _ref9.contentLength, checksum = _ref9.checksum, lastModifiedDate = _ref9.lastModifiedDate, ifMatch = _ref9.ifMatch;
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
-                if (!contentType) {
-                  if (typeof data === 'string') {
-                    contentType = 'text/plain';
-                  } else {
-                    if (data.type) {
-                      // The type is specified in the file object
-                      contentType = data.type;
-                    } else {
-                      // Extract the name from the correctPath and infer the type
-                      sPath = correctPath.split('?');
-                      params = sPath.length > 1 ? sPath[1] : '';
-                      name = new URLSearchParams(params).get('Name');
-                      contentType = this.getFileTypeFromName(name.toLowerCase());
-                    }
-                  }
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var SHORTCUTS_DOCTYPE = 'io.cozy.files.shortcuts';
+exports.SHORTCUTS_DOCTYPE = SHORTCUTS_DOCTYPE;
+
+var ShortcutsCollection = /*#__PURE__*/function (_DocumentCollection) {
+  (0, _inherits2.default)(ShortcutsCollection, _DocumentCollection);
+
+  var _super = _createSuper(ShortcutsCollection);
+
+  function ShortcutsCollection(stackClient) {
+    (0, _classCallCheck2.default)(this, ShortcutsCollection);
+    return _super.call(this, SHORTCUTS_DOCTYPE, stackClient);
+  }
+  /**
+   * Create a shortcut
+   *
+   * @param {object} attributes shortcut's attributes
+   * @param {string} attributes.name Filename
+   * @param {string} attributes.url Shortcut's URL
+   * @param {string} attributes.dir_id dir_id where to create the shortcut
+   * @throws {Error} - explaining reason why creation failed
+   */
+
+
+  (0, _createClass2.default)(ShortcutsCollection, [{
+    key: "create",
+    value: function () {
+      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(attributes) {
+        var name, illegalCharacters, path, resp;
+        return _regenerator.default.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                if (!attributes.type) {
+                  attributes.type = SHORTCUTS_DOCTYPE;
                 }
 
-                lastModifiedDate = lastModifiedDate || data.lastModified;
+                if (!(!attributes.name || !attributes.name.trim() || !attributes.url || !attributes.dir_id)) {
+                  _context.next = 3;
+                  break;
+                }
 
-                if (lastModifiedDate) {
-                  lastModifiedDate = new Date(lastModifiedDate);
+                throw new Error('you need at least a name, an url and a dir_id attributes to create a shortcut');
+
+              case 3:
+                name = attributes.name.trim();
+
+                if (!(name === '.' || name === '..')) {
+                  _context.next = 6;
+                  break;
                 }
 
-                headers = {
-                  'Content-Type': contentType
-                };
-                if (contentLength) headers['Content-Length'] = String(contentLength);
-                if (checksum) headers['Content-MD5'] = checksum;
+                throw new Error("Invalid filename: ".concat(name));
 
-                if (lastModifiedDate) {
-                  date = lastModifiedDate.toISOString();
-                  correctPath = "".concat(correctPath, "&UpdatedAt=").concat(date, "&CreatedAt=").concat(date);
+              case 6:
+                illegalCharacters = (0, _getIllegalCharacter.getIllegalCharacters)(name);
+
+                if (!illegalCharacters.length) {
+                  _context.next = 9;
+                  break;
                 }
 
-                if (ifMatch) headers['If-Match'] = ifMatch;
-                _context32.next = 24;
-                return this.stackClient.fetchJSON(method, correctPath, data, {
-                  headers: headers,
-                  onUploadProgress: options.onUploadProgress
+                throw new Error("Invalid filename containing illegal character(s): ".concat(illegalCharacters));
+
+              case 9:
+                path = (0, _utils.uri)(_templateObject());
+                _context.next = 12;
+                return this.stackClient.fetchJSON('POST', path, {
+                  data: {
+                    attributes: attributes,
+                    type: 'io.cozy.files.shortcuts'
+                  }
                 });
 
-              case 24:
-                resp = _context32.sent;
-                return _context32.abrupt("return", {
-                  data: normalizeFile(resp.data)
+              case 12:
+                resp = _context.sent;
+                return _context.abrupt("return", {
+                  data: _DocumentCollection2.default.normalizeDoctypeJsonApi(SHORTCUTS_DOCTYPE)(resp.data, resp)
                 });
 
-              case 26:
+              case 14:
               case "end":
-                return _context32.stop();
+                return _context.stop();
             }
           }
-        }, _callee32, this);
+        }, _callee, this);
       }));
 
-      function doUpload(_x44, _x45, _x46) {
-        return _doUpload.apply(this, arguments);
+      function create(_x) {
+        return _create.apply(this, arguments);
       }
 
-      return doUpload;
+      return create;
     }()
-    /**
-     * async findNotSynchronizedDirectories - Returns the list of directories not synchronized on the given OAuth client (mainly Cozy Desktop clients) — see https://docs.cozy.io/en/cozy-stack/not-synchronized-vfs/#get-datatypedoc-idrelationshipsnot_synchronizing
-     *
-     * @param  {OAuthClient}  oauthClient           A JSON representing an OAuth client, with at least a `_type` and `_id` field.
-     * @param  {object|null}  options               Pagination options
-     * @param  {number|null}  options.skip          For skip-based pagination, the number of referenced files to skip.
-     * @param  {number|null}  options.limit         For pagination, the number of results to return.
-     * @param  {CouchDBViewCursor|null}  options.cursor        For cursor-based pagination, the index cursor.
-     * @param  {boolean}      options.includeFiles  Include the whole file documents in the results list
-     *
-     * @returns {Array<object|IOCozyFolder>}    The JSON API conformant response.
-     */
-
   }, {
-    key: "findNotSynchronizedDirectories",
+    key: "get",
     value: function () {
-      var _findNotSynchronizedDirectories = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(oauthClient) {
-        var _ref10,
-            _ref10$skip,
-            skip,
-            limit,
-            cursor,
-            _ref10$includeFiles,
-            includeFiles,
-            params,
-            path,
-            url,
-            resp,
-            _args33 = arguments;
-
-        return _regenerator.default.wrap(function _callee33$(_context33) {
+      var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(id) {
+        var path, resp;
+        return _regenerator.default.wrap(function _callee2$(_context2) {
           while (1) {
-            switch (_context33.prev = _context33.next) {
+            switch (_context2.prev = _context2.next) {
               case 0:
-                _ref10 = _args33.length > 1 && _args33[1] !== undefined ? _args33[1] : {}, _ref10$skip = _ref10.skip, skip = _ref10$skip === void 0 ? 0 : _ref10$skip, limit = _ref10.limit, cursor = _ref10.cursor, _ref10$includeFiles = _ref10.includeFiles, includeFiles = _ref10$includeFiles === void 0 ? false : _ref10$includeFiles;
-                params = {
-                  include: includeFiles ? 'files' : undefined,
-                  'page[limit]': limit,
-                  'page[cursor]': cursor,
-                  sort: 'id'
-                };
-                path = (0, _utils.uri)(_templateObject21(), oauthClient._type, oauthClient._id);
-                url = querystring.buildURL(path, params);
-                _context33.next = 6;
-                return this.stackClient.fetchJSON('GET', url);
+                path = (0, _utils.uri)(_templateObject2(), id);
+                _context2.next = 3;
+                return this.stackClient.fetchJSON('GET', path);
 
-              case 6:
-                resp = _context33.sent;
-                return _context33.abrupt("return", {
-                  data: resp.data.map(function (f) {
-                    return normalizeFile(f);
-                  }),
-                  included: resp.included ? resp.included.map(function (f) {
-                    return normalizeFile(f);
-                  }) : [],
-                  next: (0, _has.default)(resp, 'links.next'),
-                  meta: resp.meta,
-                  skip: skip
+              case 3:
+                resp = _context2.sent;
+                return _context2.abrupt("return", {
+                  data: _DocumentCollection2.default.normalizeDoctypeJsonApi(SHORTCUTS_DOCTYPE)(resp.data, resp)
                 });
 
-              case 8:
+              case 5:
               case "end":
-                return _context33.stop();
+                return _context2.stop();
             }
           }
-        }, _callee33, this);
+        }, _callee2, this);
       }));
 
-      function findNotSynchronizedDirectories(_x47) {
-        return _findNotSynchronizedDirectories.apply(this, arguments);
+      function get(_x2) {
+        return _get.apply(this, arguments);
       }
 
-      return findNotSynchronizedDirectories;
+      return get;
     }()
-    /**
-     *  Add directory synchronization exclusions to an OAuth client — see https://docs.cozy.io/en/cozy-stack/not-synchronized-vfs/#post-datatypedoc-idrelationshipsnot_synchronizing
-     *
-     *  For example, to exclude directory `/Photos` from `My Computer`'s desktop synchronization:
-     * ```
-     * addNotSynchronizedDirectories({_id: 123, _type: "io.cozy.oauth.clients", clientName: "Cozy Drive (My Computer)", clientKind: "desktop"}, [{_id: 456, _type: "io.cozy.files", name: "Photos", path: "/Photos"}])
-     * ```
-     *
-     * @param  {OAuthClient} oauthClient  A JSON representing the OAuth client
-     * @param  {Array}  directories       An array of JSON documents having a `_type` and `_id` fields and representing directories.
-     *
-     * Returns 204 No Content
-     */
+  }]);
+  return ShortcutsCollection;
+}(_DocumentCollection2.default);
 
-  }, {
-    key: "addNotSynchronizedDirectories",
-    value: function addNotSynchronizedDirectories(oauthClient, directories) {
-      var refs = directories.map(function (d) {
-        return {
-          id: d._id,
-          type: d._type
-        };
-      });
-      return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject22(), oauthClient._type, oauthClient._id), {
-        data: refs
-      });
-    }
-    /**
-     *  Remove directory synchronization exclusions from an OAuth client — see https://docs.cozy.io/en/cozy-stack/not-synchronized-vfs/#delete-datatypedoc-idrelationshipsnot_synchronizing
-     *
-     *  For example, to re-include directory `/Photos` into `My Computer`'s desktop synchronization:
-     * ```
-     *  removeNotSynchronizedDirectories({_id: 123, _type: "io.cozy.oauth.clients", clientName: "Cozy Drive (My Computer)", clientKind: "desktop"}, [{_id: 456, _type: "io.cozy.files", name: "Photos", path: "/Photos"}])
-     * ```
-     *
-     * @param  {OAuthClient} oauthClient  A JSON representing the OAuth client
-     * @param  {Array}  directories       An array of JSON documents having a `_type` and `_id` field and representing directories.
-     *
-     * Returns 204 No Content
-     */
+ShortcutsCollection.normalizeDoctype = _DocumentCollection2.default.normalizeDoctypeJsonApi;
+var _default = ShortcutsCollection;
+exports.default = _default;
 
-  }, {
-    key: "removeNotSynchronizedDirectories",
-    value: function removeNotSynchronizedDirectories(oauthClient, directories) {
-      var refs = directories.map(function (d) {
-        return {
-          id: d._id,
-          type: d._type
-        };
-      });
-      return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject23(), oauthClient._type, oauthClient._id), {
-        data: refs
-      });
-    }
-    /**
-     * Use cozy-stack's _changes API for io.cozy.files
-     * Design docs are filtered by default, thus documents are retrieved in the
-     * response (includeDocs is set to true in the parameters of _changes).
-     * Deleted and trashed documents can be filtered on demand and files' paths
-     * can be requested as well.
-     *
-     * Since deleted and trashed documents are skipped by cozy-stack rather than
-     * CouchDB, when either option is set to true, the response can contain less
-     * documents than the defined limit. Thus one should rely solely on the
-     * `pending` result attribute to determine if more documents can be fetched or
-     * not.
-     *
-     * You should use fetchChangesRaw to call CouchDB's _changes API.
-     *
-     * @typedef {object} CouchOptions
-     * @property {string} since - Bookmark telling CouchDB from which point in time should changes be returned
-     * @property {number} limit - The maximum number of returned documents for one call
-     * @property {boolean} includeDocs - Whether or not complete documents should be returned
-     *
-     * @typedef {object} FetchChangesOptions
-     * @property {Array<string>} fields - The list of fields that should be returned for each document
-     * @property {boolean} includeFilePath - Whether to include the path of file changes (needs includeDocs to be true)
-     * @property {boolean} skipDeleted - Whether to skip changes for deleted documents
-     * @property {boolean} skipTrashed - Whether to skip changes for trashed documents (needs includeDocs to be true)
-     *
-     * @param  {CouchOptions} couchOptions - Couch options for changes
-     * @param  {FetchChangesOptions} options - Further options on the returned documents. By default, it is set to
-     *                                        { includeFilePath: false, skipDeleted: false, skipTrashed: false }
-     *
-     * @typedef {object} FetchChangesReturnValue
-     * @property {string} newLastSeq
-     * @property {boolean} pending
-     * @property {Array<object>} documents
-     * @returns {FetchChangesReturnValue}
-     */
+/***/ }),
+/* 611 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  }, {
-    key: "fetchChanges",
-    value: function () {
-      var _fetchChanges = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34() {
-        var couchOptions,
-            options,
-            opts,
-            params,
-            path,
-            url,
-            _yield$this$stackClie,
-            newLastSeq,
-            pending,
-            results,
-            _args34 = arguments;
+"use strict";
 
-        return _regenerator.default.wrap(function _callee34$(_context34) {
-          while (1) {
-            switch (_context34.prev = _context34.next) {
-              case 0:
-                couchOptions = _args34.length > 0 && _args34[0] !== undefined ? _args34[0] : {};
-                options = _args34.length > 1 && _args34[1] !== undefined ? _args34[1] : {};
-                opts = {};
 
-                if (typeof couchOptions !== 'object') {
-                  opts.since = couchOptions;
+var _interopRequireWildcard = __webpack_require__(277);
 
-                  _logger.default.warn("fetchChanges use couchOptions as Object not a string, since is deprecated, please use fetchChanges({since: \"".concat(couchOptions, "\"})."));
-                } else if (Object.keys(couchOptions).length > 0) {
-                  Object.assign(opts, couchOptions);
-                }
+var _interopRequireDefault = __webpack_require__(1);
 
-                if (Object.keys(options).length > 0) {
-                  Object.assign(opts, options);
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.CONTACTS_DOCTYPE = void 0;
 
-                  if (options.skipTrashed || options.includeFilePath) {
-                    opts.includeDocs = true;
-                  }
-                }
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-                params = _objectSpread(_objectSpread({}, (0, _omit.default)(opts, ['fields', 'includeDocs', 'includeFilePath', 'skipDeleted', 'skipTrashed'])), {}, {
-                  fields: opts.fields ? opts.fields.join(',') : null,
-                  include_docs: opts.includeDocs,
-                  include_file_path: opts.includeFilePath,
-                  skip_deleted: opts.skipDeleted,
-                  skip_trashed: opts.skipTrashed
-                });
-                path = (0, _utils.uri)(_templateObject24());
-                url = querystring.buildURL(path, params);
-                _context34.next = 10;
-                return this.stackClient.fetchJSON('GET', url);
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-              case 10:
-                _yield$this$stackClie = _context34.sent;
-                newLastSeq = _yield$this$stackClie.last_seq;
-                pending = _yield$this$stackClie.pending;
-                results = _yield$this$stackClie.results;
-                return _context34.abrupt("return", {
-                  newLastSeq: newLastSeq,
-                  pending: pending,
-                  results: results
-                });
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-              case 15:
-              case "end":
-                return _context34.stop();
-            }
-          }
-        }, _callee34, this);
-      }));
-
-      function fetchChanges() {
-        return _fetchChanges.apply(this, arguments);
-      }
-
-      return fetchChanges;
-    }()
-  }]);
-  return FileCollection;
-}(_DocumentCollection2.default);
-
-var _default = FileCollection;
-exports.default = _default;
-
-/***/ }),
-/* 591 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-let Mime = __webpack_require__(592);
-module.exports = new Mime(__webpack_require__(593));
-
-
-/***/ }),
-/* 592 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-/**
- * @param typeMap [Object] Map of MIME type -> Array[extensions]
- * @param ...
- */
-function Mime() {
-  this._types = Object.create(null);
-  this._extensions = Object.create(null);
-
-  for (let i = 0; i < arguments.length; i++) {
-    this.define(arguments[i]);
-  }
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-  this.define = this.define.bind(this);
-  this.getType = this.getType.bind(this);
-  this.getExtension = this.getExtension.bind(this);
-}
+var _get2 = _interopRequireDefault(__webpack_require__(602));
 
-/**
- * Define mimetype -> extension mappings.  Each key is a mime-type that maps
- * to an array of extensions associated with the type.  The first extension is
- * used as the default extension for the type.
- *
- * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});
- *
- * If a type declares an extension that has already been defined, an error will
- * be thrown.  To suppress this error and force the extension to be associated
- * with the new type, pass `force`=true.  Alternatively, you may prefix the
- * extension with "*" to map the type to extension, without mapping the
- * extension to the type.
- *
- * e.g. mime.define({'audio/wav', ['wav']}, {'audio/x-wav', ['*wav']});
- *
- *
- * @param map (Object) type definitions
- * @param force (Boolean) if true, force overriding of existing definitions
- */
-Mime.prototype.define = function(typeMap, force) {
-  for (let type in typeMap) {
-    let extensions = typeMap[type].map(function(t) {
-      return t.toLowerCase();
-    });
-    type = type.toLowerCase();
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
-    for (let i = 0; i < extensions.length; i++) {
-      const ext = extensions[i];
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
-      // '*' prefix = not the preferred type for this extension.  So fixup the
-      // extension, and skip it.
-      if (ext[0] === '*') {
-        continue;
-      }
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
-      if (!force && (ext in this._types)) {
-        throw new Error(
-          'Attempt to change mapping for "' + ext +
-          '" extension from "' + this._types[ext] + '" to "' + type +
-          '". Pass `force=true` to allow this, otherwise remove "' + ext +
-          '" from the list of extensions for "' + type + '".'
-        );
-      }
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-      this._types[ext] = type;
-    }
+var _DocumentCollection2 = _interopRequireWildcard(__webpack_require__(491));
 
-    // Use first extension as default
-    if (force || !this._extensions[type]) {
-      const ext = extensions[0];
-      this._extensions[type] = (ext[0] !== '*') ? ext : ext.substr(1);
-    }
-  }
-};
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
-/**
- * Lookup a mime type based on extension
- */
-Mime.prototype.getType = function(path) {
-  path = String(path);
-  let last = path.replace(/^.*[/\\]/, '').toLowerCase();
-  let ext = last.replace(/^.*\./, '').toLowerCase();
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-  let hasPath = last.length < path.length;
-  let hasDot = ext.length < last.length - 1;
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-  return (hasDot || !hasPath) && this._types[ext] || null;
-};
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-/**
- * Return file extension associated with a mime type
- */
-Mime.prototype.getExtension = function(type) {
-  type = /^\s*([^;\s]*)/.test(type) && RegExp.$1;
-  return type && this._extensions[type.toLowerCase()] || null;
+var normalizeMyselfResp = function normalizeMyselfResp(resp) {
+  return _objectSpread(_objectSpread(_objectSpread({}, (0, _DocumentCollection2.normalizeDoc)(resp.data, CONTACTS_DOCTYPE)), resp.data.attributes), {}, {
+    _rev: resp.data.meta.rev
+  });
 };
 
-module.exports = Mime;
-
-
-/***/ }),
-/* 593 */
-/***/ (function(module, exports) {
-
-module.exports = {"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomdeleted+xml":["atomdeleted"],"application/atomsvc+xml":["atomsvc"],"application/atsc-dwd+xml":["dwd"],"application/atsc-held+xml":["held"],"application/atsc-rsat+xml":["rsat"],"application/bdoc":["bdoc"],"application/calendar+xml":["xcs"],"application/ccxml+xml":["ccxml"],"application/cdfx+xml":["cdfx"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["es","ecma"],"application/emma+xml":["emma"],"application/emotionml+xml":["emotionml"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/express":["exp"],"application/fdt+xml":["fdt"],"application/font-tdpfr":["pfr"],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hjson":["hjson"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/its+xml":["its"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lgr+xml":["lgr"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mmt-aei+xml":["maei"],"application/mmt-usd+xml":["musd"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/n-quads":["nq"],"application/n-triples":["nt"],"application/node":["cjs"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/p2p-overlay+xml":["relo"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/provenance+xml":["provx"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf","owl"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/route-apd+xml":["rapd"],"application/route-s-tsid+xml":["sls"],"application/route-usd+xml":["rusd"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/senml+xml":["senmlx"],"application/sensml+xml":["sensmlx"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/sieve":["siv","sieve"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/swid+xml":["swidtag"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/toml":["toml"],"application/trig":["trig"],"application/ttml+xml":["ttml"],"application/ubjson":["ubj"],"application/urc-ressheet+xml":["rsheet"],"application/urc-targetdesc+xml":["td"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/xaml+xml":["xaml"],"application/xcap-att+xml":["xav"],"application/xcap-caps+xml":["xca"],"application/xcap-diff+xml":["xdf"],"application/xcap-el+xml":["xel"],"application/xcap-ns+xml":["xns"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xliff+xml":["xlf"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["*xsl","xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":["*3gpp"],"audio/adpcm":["adp"],"audio/amr":["amr"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mobile-xmf":["mxmf"],"audio/mp3":["*mp3"],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx","opus"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/wav":["wav"],"audio/wave":["*wav"],"audio/webm":["weba"],"audio/xm":["xm"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["woff"],"font/woff2":["woff2"],"image/aces":["exr"],"image/apng":["apng"],"image/avif":["avif"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/dicom-rle":["drle"],"image/emf":["emf"],"image/fits":["fits"],"image/g3fax":["g3"],"image/gif":["gif"],"image/heic":["heic"],"image/heic-sequence":["heics"],"image/heif":["heif"],"image/heif-sequence":["heifs"],"image/hej2k":["hej2"],"image/hsj2":["hsj2"],"image/ief":["ief"],"image/jls":["jls"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpeg","jpg","jpe"],"image/jph":["jph"],"image/jphc":["jhc"],"image/jpm":["jpm"],"image/jpx":["jpx","jpf"],"image/jxr":["jxr"],"image/jxra":["jxra"],"image/jxrs":["jxrs"],"image/jxs":["jxs"],"image/jxsc":["jxsc"],"image/jxsi":["jxsi"],"image/jxss":["jxss"],"image/ktx":["ktx"],"image/ktx2":["ktx2"],"image/png":["png"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/t38":["t38"],"image/tiff":["tif","tiff"],"image/tiff-fx":["tfx"],"image/webp":["webp"],"image/wmf":["wmf"],"message/disposition-notification":["disposition-notification"],"message/global":["u8msg"],"message/global-delivery-status":["u8dsn"],"message/global-disposition-notification":["u8mdn"],"message/global-headers":["u8hdr"],"message/rfc822":["eml","mime"],"model/3mf":["3mf"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/mtl":["mtl"],"model/obj":["obj"],"model/step+xml":["stpx"],"model/step+zip":["stpz"],"model/step-xml+zip":["stpxz"],"model/stl":["stl"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["*x3db","x3dbz"],"model/x3d+fastinfoset":["x3db"],"model/x3d+vrml":["*x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"model/x3d-vrml":["x3dv"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/mdx":["mdx"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/richtext":["rtx"],"text/rtf":["*rtf"],"text/sgml":["sgml","sgm"],"text/shex":["shex"],"text/slim":["slim","slm"],"text/spdx":["spdx"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vtt":["vtt"],"text/xml":["*xml"],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/iso.segment":["m4s"],"video/jpeg":["jpgv"],"video/jpm":["*jpm","jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/webm":["webm"]};
-
-/***/ }),
-/* 594 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseHas = __webpack_require__(595),
-    hasPath = __webpack_require__(413);
-
-/**
- * Checks if `path` is a direct property of `object`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path to check.
- * @returns {boolean} Returns `true` if `path` exists, else `false`.
- * @example
- *
- * var object = { 'a': { 'b': 2 } };
- * var other = _.create({ 'a': _.create({ 'b': 2 }) });
- *
- * _.has(object, 'a');
- * // => true
- *
- * _.has(object, 'a.b');
- * // => true
- *
- * _.has(object, ['a', 'b']);
- * // => true
- *
- * _.has(other, 'a');
- * // => false
- */
-function has(object, path) {
-  return object != null && hasPath(object, path, baseHas);
-}
-
-module.exports = has;
-
-
-/***/ }),
-/* 595 */
-/***/ (function(module, exports) {
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * The base implementation of `_.has` without support for deep paths.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {Array|string} key The key to check.
- * @returns {boolean} Returns `true` if `key` exists, else `false`.
- */
-function baseHas(object, key) {
-  return object != null && hasOwnProperty.call(object, key);
-}
-
-module.exports = baseHas;
-
-
-/***/ }),
-/* 596 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var basePick = __webpack_require__(597),
-    flatRest = __webpack_require__(530);
-
-/**
- * Creates an object composed of the picked `object` properties.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The source object.
- * @param {...(string|string[])} [paths] The property paths to pick.
- * @returns {Object} Returns the new object.
- * @example
- *
- * var object = { 'a': 1, 'b': '2', 'c': 3 };
- *
- * _.pick(object, ['a', 'c']);
- * // => { 'a': 1, 'c': 3 }
- */
-var pick = flatRest(function(object, paths) {
-  return object == null ? {} : basePick(object, paths);
-});
-
-module.exports = pick;
+var ContactsCollection = /*#__PURE__*/function (_DocumentCollection) {
+  (0, _inherits2.default)(ContactsCollection, _DocumentCollection);
 
+  var _super = _createSuper(ContactsCollection);
 
-/***/ }),
-/* 597 */
-/***/ (function(module, exports, __webpack_require__) {
+  function ContactsCollection() {
+    (0, _classCallCheck2.default)(this, ContactsCollection);
+    return _super.apply(this, arguments);
+  }
 
-var basePickBy = __webpack_require__(580),
-    hasIn = __webpack_require__(411);
+  (0, _createClass2.default)(ContactsCollection, [{
+    key: "find",
+    value: function () {
+      var _find = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(selector, options) {
+        return _regenerator.default.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                if (!(selector !== undefined && Object.values(selector).length === 1 && selector['me'] == true)) {
+                  _context.next = 4;
+                  break;
+                }
 
-/**
- * The base implementation of `_.pick` without support for individual
- * property identifiers.
- *
- * @private
- * @param {Object} object The source object.
- * @param {string[]} paths The property paths to pick.
- * @returns {Object} Returns the new object.
- */
-function basePick(object, paths) {
-  return basePickBy(object, paths, function(value, path) {
-    return hasIn(object, path);
-  });
-}
+                return _context.abrupt("return", this.findMyself());
 
-module.exports = basePick;
+              case 4:
+                return _context.abrupt("return", (0, _get2.default)((0, _getPrototypeOf2.default)(ContactsCollection.prototype), "find", this).call(this, selector, options));
 
+              case 5:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this);
+      }));
 
-/***/ }),
-/* 598 */
-/***/ (function(module, exports, __webpack_require__) {
+      function find(_x, _x2) {
+        return _find.apply(this, arguments);
+      }
 
-"use strict";
+      return find;
+    }()
+  }, {
+    key: "findMyself",
+    value: function () {
+      var _findMyself = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
+        var resp, col;
+        return _regenerator.default.wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                _context2.next = 2;
+                return this.stackClient.fetchJSON('POST', '/contacts/myself');
 
+              case 2:
+                resp = _context2.sent;
+                col = {
+                  data: [normalizeMyselfResp(resp)],
+                  next: false,
+                  meta: null,
+                  bookmark: false
+                };
+                return _context2.abrupt("return", col);
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.getIllegalCharacters = void 0;
+              case 5:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2, this);
+      }));
 
-/**
- * Get the list of illegal characters in the file name
- *
- * @public
- * @param {string} name - the file name
- * @returns {string} illegal characters separated by spaces
- */
-var getIllegalCharacters = function getIllegalCharacters(name) {
-  var FILENAME_ILLEGAL_CHARACTERS = /\/|\x00|\n|\r/g; // eslint-disable-line no-control-regex
+      function findMyself() {
+        return _findMyself.apply(this, arguments);
+      }
 
-  var match = name.match(FILENAME_ILLEGAL_CHARACTERS);
-  return match ? match.join(' ') : '';
-};
+      return findMyself;
+    }()
+  }]);
+  return ContactsCollection;
+}(_DocumentCollection2.default);
 
-exports.getIllegalCharacters = getIllegalCharacters;
+var CONTACTS_DOCTYPE = 'io.cozy.contacts';
+exports.CONTACTS_DOCTYPE = CONTACTS_DOCTYPE;
+var _default = ContactsCollection;
+exports.default = _default;
 
 /***/ }),
-/* 599 */
+/* 612 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -94724,12 +90752,10 @@ var _interopRequireDefault = __webpack_require__(1);
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.default = exports.hasJobFinished = exports.normalizeJob = exports.JOBS_DOCTYPE = void 0;
+exports.default = exports.normalizeAppFromRegistry = exports.APPS_REGISTRY_DOCTYPE = void 0;
 
 var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
-
 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
 var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
@@ -94744,21 +90770,11 @@ var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
 var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-var _Collection = _interopRequireDefault(__webpack_require__(489));
+var _registry = __webpack_require__(485);
 
 var _DocumentCollection2 = _interopRequireWildcard(__webpack_require__(491));
 
-var _utils = __webpack_require__(521);
-
-function _templateObject() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/jobs/", ""]);
-
-  _templateObject = function _templateObject() {
-    return data;
-  };
-
-  return data;
-}
+var _errors = __webpack_require__(582);
 
 function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
@@ -94768,98 +90784,61 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
 
 function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-var JOBS_DOCTYPE = 'io.cozy.jobs';
-exports.JOBS_DOCTYPE = JOBS_DOCTYPE;
-
-var sleep = function sleep(delay) {
-  return new Promise(function (resolve) {
-    return setTimeout(resolve, delay);
-  });
-};
-
-var normalizeJob = function normalizeJob(job) {
-  return _objectSpread(_objectSpread(_objectSpread({}, job), (0, _DocumentCollection2.normalizeDoc)(job, JOBS_DOCTYPE)), job.attributes);
-};
-
-exports.normalizeJob = normalizeJob;
+var APPS_REGISTRY_DOCTYPE = 'io.cozy.apps_registry';
+exports.APPS_REGISTRY_DOCTYPE = APPS_REGISTRY_DOCTYPE;
 
-var hasJobFinished = function hasJobFinished(job) {
-  return job.state === 'done' || job.state === 'errored';
+var normalizeAppFromRegistry = function normalizeAppFromRegistry(app, doctype) {
+  return _objectSpread({}, (0, _DocumentCollection2.normalizeDoc)(app, doctype));
 };
 /**
- * Document representing a io.cozy.jobs
- *
- * @typedef {object} JobDocument
- * @property {string} _id - Id of the job
- * @property {string} attributes.state - state of the job. Can be 'errored', 'running', 'queued', 'done'
- * @property {string} attributes.error - Error message of the job if any
+ * Extends `DocumentCollection` API along with specific methods for `io.cozy.apps_registry`.
  */
 
 
-exports.hasJobFinished = hasJobFinished;
+exports.normalizeAppFromRegistry = normalizeAppFromRegistry;
 
-var JobCollection = /*#__PURE__*/function (_DocumentCollection) {
-  (0, _inherits2.default)(JobCollection, _DocumentCollection);
+var AppsRegistryCollection = /*#__PURE__*/function (_DocumentCollection) {
+  (0, _inherits2.default)(AppsRegistryCollection, _DocumentCollection);
 
-  var _super = _createSuper(JobCollection);
+  var _super = _createSuper(AppsRegistryCollection);
 
-  function JobCollection(stackClient) {
-    (0, _classCallCheck2.default)(this, JobCollection);
-    return _super.call(this, JOBS_DOCTYPE, stackClient);
-  }
+  function AppsRegistryCollection(stackClient) {
+    var _this;
 
-  (0, _createClass2.default)(JobCollection, [{
-    key: "queued",
-    value: function queued(workerType) {
-      return this.stackClient.fetchJSON('GET', "/jobs/queue/".concat(workerType));
-    }
-    /**
-     * Creates a job
-     *
-     * @param  {string} workerType - Ex: "konnector"
-     * @param  {object} [args={}] - Ex: {"slug": "my-konnector", "trigger": "trigger-id"}
-     * @param  {object} [options={}] - creation options
-     * @param  {boolean} [manual=false] -  Manual execution
-     * @returns {object} createdJob
-     */
+    (0, _classCallCheck2.default)(this, AppsRegistryCollection);
+    _this = _super.call(this, APPS_REGISTRY_DOCTYPE, stackClient);
+    _this.endpoint = '/registry/';
+    return _this;
+  }
+  /**
+   * Fetches an app from the registry.
+   *
+   * @param  {string} slug - Slug of the app
+   * @returns {Promise<{data: object}>} JsonAPI response containing normalized document as data attribute
+   * @throws {FetchError}
+   */
 
-  }, {
-    key: "create",
-    value: function create(workerType) {
-      var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-      var manual = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
-      return this.stackClient.fetchJSON('POST', "/jobs/queue/".concat(workerType), {
-        data: {
-          type: JOBS_DOCTYPE,
-          attributes: {
-            arguments: args,
-            options: options,
-            manual: manual
-          }
-        }
-      });
-    }
-    /**
-     * Return a normalized job, given its id
-     *
-     * @param {string} id - id of the job
-     * @returns {JobDocument}
-     */
 
-  }, {
+  (0, _createClass2.default)(AppsRegistryCollection, [{
     key: "get",
     value: function () {
-      var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(id) {
+      var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(slug) {
+        var app, data;
         return _regenerator.default.wrap(function _callee$(_context) {
           while (1) {
             switch (_context.prev = _context.next) {
               case 0:
-                return _context.abrupt("return", _Collection.default.get(this.stackClient, (0, _utils.uri)(_templateObject(), id), {
-                  normalize: normalizeJob
-                }));
+                _context.next = 2;
+                return this.stackClient.fetchJSON('GET', "".concat(this.endpoint).concat(slug));
 
-              case 1:
+              case 2:
+                app = _context.sent;
+                data = (0, _registry.transformRegistryFormatToStackFormat)(app);
+                return _context.abrupt("return", {
+                  data: normalizeAppFromRegistry(data, this.doctype)
+                });
+
+              case 5:
               case "end":
                 return _context.stop();
             }
@@ -94873,157 +90852,63 @@ var JobCollection = /*#__PURE__*/function (_DocumentCollection) {
 
       return get;
     }()
-    /**
-     * Update the job's state
-     * This does work only for jobs comming from @client triggers
-     *
-     * @param {JobDocument} job - io.cozy.jobs document
-     */
-
   }, {
-    key: "update",
+    key: "create",
     value: function () {
-      var _update = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(job) {
-        var jobResult;
+      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
         return _regenerator.default.wrap(function _callee2$(_context2) {
           while (1) {
             switch (_context2.prev = _context2.next) {
               case 0:
-                if (!(job.worker !== 'client')) {
-                  _context2.next = 2;
-                  break;
-                }
+                throw new Error('create() method is not available for AppsRegistryCollection');
 
-                throw new Error("JobCollection.update only works for client workers. ".concat(job.worker, " given"));
+              case 1:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2);
+      }));
 
-              case 2:
-                _context2.next = 4;
-                return this.stackClient.fetchJSON('PATCH', "/jobs/".concat(job._id), {
-                  data: {
-                    type: JOBS_DOCTYPE,
-                    id: job._id,
-                    attributes: {
-                      state: job.attributes.state,
-                      error: job.attributes.error
-                    }
-                  }
-                });
-
-              case 4:
-                jobResult = _context2.sent;
-                return _context2.abrupt("return", normalizeJob(jobResult.data));
-
-              case 6:
-              case "end":
-                return _context2.stop();
-            }
-          }
-        }, _callee2, this);
-      }));
-
-      function update(_x2) {
-        return _update.apply(this, arguments);
+      function create() {
+        return _create.apply(this, arguments);
       }
 
-      return update;
+      return create;
     }()
-    /**
-     * Polls a job state until it is finished
-     *
-     * `options.until` can be used to tweak when to stop waiting. It will be
-     * given the current job state. If true is returned, the awaiting is
-     * stopped.
-     */
-
   }, {
-    key: "waitFor",
+    key: "destroy",
     value: function () {
-      var _waitFor = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(id) {
-        var _ref,
-            _ref$onUpdate,
-            onUpdate,
-            _ref$until,
-            until,
-            _ref$delay,
-            delay,
-            _ref$timeout,
-            timeout,
-            start,
-            jobData,
-            now,
-            _args3 = arguments;
-
+      var _destroy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
         return _regenerator.default.wrap(function _callee3$(_context3) {
           while (1) {
             switch (_context3.prev = _context3.next) {
               case 0:
-                _ref = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {}, _ref$onUpdate = _ref.onUpdate, onUpdate = _ref$onUpdate === void 0 ? null : _ref$onUpdate, _ref$until = _ref.until, until = _ref$until === void 0 ? hasJobFinished : _ref$until, _ref$delay = _ref.delay, delay = _ref$delay === void 0 ? 5 * 1000 : _ref$delay, _ref$timeout = _ref.timeout, timeout = _ref$timeout === void 0 ? 60 * 5 * 1000 : _ref$timeout;
-                start = Date.now();
-                _context3.next = 4;
-                return this.get(id);
-
-              case 4:
-                jobData = _context3.sent.data.attributes;
-
-              case 5:
-                if (!(!jobData || !until(jobData))) {
-                  _context3.next = 17;
-                  break;
-                }
-
-                _context3.next = 8;
-                return sleep(delay);
-
-              case 8:
-                _context3.next = 10;
-                return this.get(id);
-
-              case 10:
-                jobData = _context3.sent.data.attributes;
-
-                if (onUpdate) {
-                  onUpdate(jobData);
-                }
-
-                now = Date.now();
-
-                if (!(start - now > timeout)) {
-                  _context3.next = 15;
-                  break;
-                }
-
-                throw new Error('Timeout for JobCollection::waitFor');
-
-              case 15:
-                _context3.next = 5;
-                break;
-
-              case 17:
-                return _context3.abrupt("return", jobData);
+                throw new Error('destroy() method is not available for AppsRegistryCollection');
 
-              case 18:
+              case 1:
               case "end":
                 return _context3.stop();
             }
           }
-        }, _callee3, this);
+        }, _callee3);
       }));
 
-      function waitFor(_x3) {
-        return _waitFor.apply(this, arguments);
+      function destroy() {
+        return _destroy.apply(this, arguments);
       }
 
-      return waitFor;
+      return destroy;
     }()
   }]);
-  return JobCollection;
+  return AppsRegistryCollection;
 }(_DocumentCollection2.default);
 
-var _default = JobCollection;
+var _default = AppsRegistryCollection;
 exports.default = _default;
 
 /***/ }),
-/* 600 */
+/* 613 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -95036,1018 +90921,1033 @@ var _interopRequireDefault = __webpack_require__(1);
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.default = exports.KONNECTORS_DOCTYPE = void 0;
+exports.getIconURL = exports.default = exports._getIconURL = void 0;
 
 var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
-
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
-
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+var _types = __webpack_require__(490);
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+var _memoize = _interopRequireWildcard(__webpack_require__(614));
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
 
-var _pick = _interopRequireDefault(__webpack_require__(596));
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
 
-var _AppCollection2 = _interopRequireDefault(__webpack_require__(479));
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
 
-var _TriggerCollection = _interopRequireWildcard(__webpack_require__(601));
+/**
+ * Get Icon source Url
+ *
+ * @param  {object}  app - Apps data - io.cozy.apps
+ * @param  {string}  slug - Slug - string
+ * @param  {string|undefined} domain - Host to use in the origin (e.g. cozy.tools)
+ * @param  {string} protocol - Url protocol (e.g. http / https)
+ * @returns {string}  Source Url of icon
+ * @private
+ * @throws {Error} When cannot fetch or get icon source
+ */
+var loadIcon = function loadIcon(app, slug, domain, protocol) {
+  if (!domain) throw new Error('Cannot fetch icon: missing domain');
 
-var _DocumentCollection = __webpack_require__(491);
+  var source = _getAppIconURL(app, slug, domain, protocol);
 
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+  if (!source) {
+    throw new Error("Cannot get icon source for app ".concat(app.name));
+  }
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+  return source;
+};
+/**
+ * Get App Icon URL
+ *
+ * @param  {object}  app - Apps data - io.cozy.apps or Slug - string
+ * @param  {string}  slug - Slug - string
+ * @param  {string|undefined} domain - Host to use in the origin (e.g. cozy.tools)
+ * @param  {string} protocol - Url protocol (e.g. http / https)
+ * @private
+ * @returns {string|null}  App Icon URL
+ */
 
-var KONNECTORS_DOCTYPE = 'io.cozy.konnectors';
-exports.KONNECTORS_DOCTYPE = KONNECTORS_DOCTYPE;
 
-var KonnectorCollection = /*#__PURE__*/function (_AppCollection) {
-  (0, _inherits2.default)(KonnectorCollection, _AppCollection);
+var _getAppIconURL = function _getAppIconURL(app, slug, domain, protocol) {
+  var path = app && app.links && app.links.icon || _getRegistryIconPath(app, slug);
 
-  var _super = _createSuper(KonnectorCollection);
+  return path ? "".concat(protocol, "//").concat(domain).concat(path) : null;
+};
+/**
+ * Get Registry Icon Path
+ *
+ * @param  {object}  app - Apps data - io.cozy.apps or Slug - string
+ * @param  {string}  slug - Slug - string
+ * @returns {string|undefined}  Registry icon path
+ * @private
+ */
 
-  function KonnectorCollection(stackClient) {
-    var _this;
 
-    (0, _classCallCheck2.default)(this, KonnectorCollection);
-    _this = _super.call(this, stackClient);
-    _this.doctype = KONNECTORS_DOCTYPE;
-    _this.endpoint = '/konnectors/';
-    return _this;
+var _getRegistryIconPath = function _getRegistryIconPath(app, slug) {
+  if (slug) {
+    return "/registry/".concat(slug, "/icon");
   }
 
-  (0, _createClass2.default)(KonnectorCollection, [{
-    key: "create",
-    value: function () {
-      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                throw new Error('create() method is not available for konnectors');
-
-              case 1:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee);
-      }));
+  return app && app.latest_version && app.latest_version.version && "/registry/".concat(app.slug, "/").concat(app.latest_version.version, "/icon");
+};
 
-      function create() {
-        return _create.apply(this, arguments);
-      }
+var mimeTypes = {
+  gif: 'image/gif',
+  ico: 'image/vnd.microsoft.icon',
+  jpeg: 'image/jpeg',
+  jpg: 'image/jpeg',
+  png: 'image/png',
+  svg: 'image/svg+xml'
+};
+/**
+ * Get icon extension
+ *
+ * @param {object} app io.cozy.apps or io.cozy.konnectors document
+ * @param  {string} app.icon - App Icon
+ * @param  {string} app.name - App Name
+ * @returns {string}  icon extension
+ * @private
+ * @throws {Error} When problem while detecting icon mime type
+ */
 
-      return create;
-    }()
-  }, {
-    key: "destroy",
-    value: function () {
-      var _destroy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
-        return _regenerator.default.wrap(function _callee2$(_context2) {
-          while (1) {
-            switch (_context2.prev = _context2.next) {
-              case 0:
-                throw new Error('destroy() method is not available for konnectors');
+var getIconExtensionFromApp = function getIconExtensionFromApp(app) {
+  if (!app.icon) {
+    throw new Error("".concat(app.name, ": Cannot detect icon mime type since app has no icon"));
+  }
 
-              case 1:
-              case "end":
-                return _context2.stop();
-            }
-          }
-        }, _callee2);
-      }));
+  var extension = app.icon.split('.').pop();
 
-      function destroy() {
-        return _destroy.apply(this, arguments);
-      }
+  if (!extension) {
+    throw new Error("".concat(app.name, ": Unable to detect icon mime type from extension (").concat(app.icon, ")"));
+  }
 
-      return destroy;
-    }()
-    /**
-     * Find triggers for a particular konnector
-     *
-     * @param  {string} slug of the konnector
-     */
+  return extension;
+};
 
-  }, {
-    key: "findTriggersBySlug",
-    value: function () {
-      var _findTriggersBySlug = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(slug) {
-        var triggerCol, _yield$triggerCol$all, rawTriggers;
+var fallbacks = /*#__PURE__*/function () {
+  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(tries, check) {
+    var err, _iterator, _step, _try, res;
 
-        return _regenerator.default.wrap(function _callee3$(_context3) {
-          while (1) {
-            switch (_context3.prev = _context3.next) {
-              case 0:
-                triggerCol = new _TriggerCollection.default(this.stackClient);
-                _context3.next = 3;
-                return triggerCol.all({
-                  limit: null
-                });
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            _iterator = _createForOfIteratorHelper(tries);
+            _context.prev = 1;
 
-              case 3:
-                _yield$triggerCol$all = _context3.sent;
-                rawTriggers = _yield$triggerCol$all.data;
-                return _context3.abrupt("return", rawTriggers.map(function (x) {
-                  return x.attributes;
-                }).filter(function (triggerAttrs) {
-                  return (0, _TriggerCollection.isForKonnector)(triggerAttrs, slug);
-                }));
+            _iterator.s();
 
-              case 6:
-              case "end":
-                return _context3.stop();
+          case 3:
+            if ((_step = _iterator.n()).done) {
+              _context.next = 18;
+              break;
             }
-          }
-        }, _callee3, this);
-      }));
-
-      function findTriggersBySlug(_x) {
-        return _findTriggersBySlug.apply(this, arguments);
-      }
 
-      return findTriggersBySlug;
-    }()
-    /**
-     * Launch a trigger for a given konnector.
-     *
-     * @param  {string} slug - Konnector slug
-     * @param  {object} options - Options
-     * @param  {object} options.accountId - Pinpoint the account that should be used, useful if the user
-     * has more than 1 account for 1 konnector
-     */
+            _try = _step.value;
+            _context.prev = 5;
+            _context.next = 8;
+            return _try();
 
-  }, {
-    key: "launch",
-    value: function () {
-      var _launch = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(slug) {
-        var options,
-            triggerCol,
-            konnTriggers,
-            filteredTriggers,
-            filterAttrs,
-            _args4 = arguments;
-        return _regenerator.default.wrap(function _callee4$(_context4) {
-          while (1) {
-            switch (_context4.prev = _context4.next) {
-              case 0:
-                options = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : {};
-                triggerCol = new _TriggerCollection.default(this.stackClient);
-                _context4.next = 4;
-                return this.findTriggersBySlug(slug);
+          case 8:
+            res = _context.sent;
+            check && check(res);
+            return _context.abrupt("return", res);
 
-              case 4:
-                konnTriggers = _context4.sent;
-                filteredTriggers = options.accountId ? konnTriggers.filter(function (triggerAttrs) {
-                  return (0, _TriggerCollection.isForAccount)(triggerAttrs, options.accountId);
-                }) : konnTriggers;
+          case 13:
+            _context.prev = 13;
+            _context.t0 = _context["catch"](5);
+            err = _context.t0;
 
-                if (!(filteredTriggers.length === 1)) {
-                  _context4.next = 10;
-                  break;
-                }
+          case 16:
+            _context.next = 3;
+            break;
 
-                return _context4.abrupt("return", triggerCol.launch(konnTriggers[0]));
+          case 18:
+            _context.next = 23;
+            break;
 
-              case 10:
-                filterAttrs = JSON.stringify((0, _pick.default)({
-                  slug: slug,
-                  accountId: options.accountId
-                }));
+          case 20:
+            _context.prev = 20;
+            _context.t1 = _context["catch"](1);
 
-                if (!(filteredTriggers.length === 0)) {
-                  _context4.next = 15;
-                  break;
-                }
+            _iterator.e(_context.t1);
 
-                throw new Error("No trigger found for ".concat(filterAttrs));
+          case 23:
+            _context.prev = 23;
 
-              case 15:
-                if (!(filteredTriggers.length > 1)) {
-                  _context4.next = 17;
-                  break;
-                }
+            _iterator.f();
 
-                throw new Error("More than 1 trigger found for ".concat(filterAttrs));
+            return _context.finish(23);
 
-              case 17:
-              case "end":
-                return _context4.stop();
-            }
-          }
-        }, _callee4, this);
-      }));
+          case 26:
+            throw err;
 
-      function launch(_x2) {
-        return _launch.apply(this, arguments);
+          case 27:
+          case "end":
+            return _context.stop();
+        }
       }
+    }, _callee, null, [[1, 20, 23, 26], [5, 13]]);
+  }));
 
-      return launch;
-    }()
-    /**
-     * Updates a konnector
-     *
-     * @param  {string} slug - Konnector slug
-     * @param  {object} options - Options
-     * @param  {object} options.source - Specify the source (ex: registry://slug/stable)
-     * @param  {boolean} options.sync - Wait for konnector to be updated, otherwise the job
-     * is just scheduled
-     */
-
-  }, {
-    key: "update",
-    value: function () {
-      var _update = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(slug) {
-        var options,
-            source,
-            sync,
-            reqOptions,
-            rawKonnector,
-            _args5 = arguments;
-        return _regenerator.default.wrap(function _callee5$(_context5) {
-          while (1) {
-            switch (_context5.prev = _context5.next) {
-              case 0:
-                options = _args5.length > 1 && _args5[1] !== undefined ? _args5[1] : {};
+  return function fallbacks(_x, _x2) {
+    return _ref.apply(this, arguments);
+  };
+}();
+/**
+ * Fetch application/konnector that is installed
+ *
+ * @private
+ */
 
-                if (slug) {
-                  _context5.next = 3;
-                  break;
-                }
 
-                throw new Error('Cannot call update with no slug');
+var fetchAppOrKonnector = function fetchAppOrKonnector(stackClient, type, slug) {
+  return stackClient.fetchJSON('GET', "/".concat(type, "s/").concat(slug)).then(function (x) {
+    return x.data.attributes;
+  });
+};
+/**
+ * Fetch application/konnector from the registry
+ *
+ * @private
+ */
 
-              case 3:
-                source = options.source || null;
-                sync = options.sync || false;
-                reqOptions = sync ? {
-                  headers: {
-                    Accept: 'text/event-stream'
-                  }
-                } : {};
-                _context5.next = 8;
-                return this.stackClient.fetchJSON('PUT', "/konnectors/".concat(slug) + (source ? "?Source=".concat(source) : ''), reqOptions);
 
-              case 8:
-                rawKonnector = _context5.sent;
-                return _context5.abrupt("return", (0, _DocumentCollection.normalizeDoc)(rawKonnector));
+var fetchAppOrKonnectorViaRegistry = function fetchAppOrKonnectorViaRegistry(stackClient, type, slug) {
+  return stackClient.fetchJSON('GET', "/registry/".concat(slug)).then(function (x) {
+    return x.latest_version.manifest;
+  });
+};
+/**
+ * Get Icon URL using blob mechanism if OAuth connected
+ * or using preloaded url when blob not needed
+ *
+ * @param  {CozyStackClient}  stackClient - CozyStackClient
+ * @param  {object} opts - Options
+ * @param  {string} opts.type - Options type
+ * @param  {string|undefined} opts.slug - Options slug
+ * @param  {object|string|undefined}  opts.appData - Apps data - io.cozy.apps
+ * @param  {string} [opts.priority='stack'] - Options priority
+ * @returns {Promise<string>} DOMString containing URL source or a URL representing the Blob .
+ * @private
+ * @throws {Error} while fetching icon, or unknown image extension
+ */
 
-              case 10:
-              case "end":
-                return _context5.stop();
-            }
-          }
-        }, _callee5, this);
-      }));
 
-      function update(_x3) {
-        return _update.apply(this, arguments);
-      }
+var _getIconURL = /*#__PURE__*/function () {
+  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(stackClient, opts) {
+    var type, slug, appData, _opts$priority, priority, iconDataFetchers, resp, icon, app, appDataFetchers, ext, _URL, domain, protocol;
 
-      return update;
-    }()
-  }]);
-  return KonnectorCollection;
-}(_AppCollection2.default);
-
-var _default = KonnectorCollection;
-exports.default = _default;
-
-/***/ }),
-/* 601 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
+    return _regenerator.default.wrap(function _callee2$(_context2) {
+      while (1) {
+        switch (_context2.prev = _context2.next) {
+          case 0:
+            type = opts.type, slug = opts.slug, appData = opts.appData, _opts$priority = opts.priority, priority = _opts$priority === void 0 ? 'stack' : _opts$priority;
 
+            if (!stackClient.oauthOptions) {
+              _context2.next = 29;
+              break;
+            }
 
-var _interopRequireWildcard = __webpack_require__(277);
+            iconDataFetchers = [function () {
+              return stackClient.fetch('GET', "/".concat(type, "s/").concat(slug, "/icon"));
+            }, function () {
+              return stackClient.fetch('GET', "/registry/".concat(slug, "/icon"));
+            }];
 
-var _interopRequireDefault = __webpack_require__(1);
+            if (priority === 'registry') {
+              iconDataFetchers.reverse();
+            }
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = exports.isForAccount = exports.isForKonnector = exports.normalizeTrigger = exports.TRIGGERS_DOCTYPE = exports.JOBS_DOCTYPE = void 0;
+            _context2.next = 6;
+            return fallbacks(iconDataFetchers, function (resp) {
+              if (!resp.ok) {
+                throw new Error("Error while fetching icon ".concat(resp.statusText));
+              }
+            });
 
-var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(291));
+          case 6:
+            resp = _context2.sent;
+            _context2.next = 9;
+            return resp.blob();
 
-var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
+          case 9:
+            icon = _context2.sent;
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+            if (icon.type) {
+              _context2.next = 26;
+              break;
+            }
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+            // iOS10 does not set correctly mime type for images, so we assume
+            // that an empty mime type could mean that the app is running on iOS10.
+            // For regular images like jpeg, png or gif it still works well in the
+            // Safari browser but not for SVG.
+            // So let's set a mime type manually. We cannot always set it to
+            // image/svg+xml and must guess the mime type based on the icon attribute
+            // from app/manifest
+            // See https://stackoverflow.com/questions/38318411/uiwebview-on-ios-10-beta-not-loading-any-svg-images
+            appDataFetchers = [function () {
+              return fetchAppOrKonnector(stackClient, type, slug);
+            }, function () {
+              return fetchAppOrKonnectorViaRegistry(stackClient, type, slug);
+            }];
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+            if (priority === 'registry') {
+              appDataFetchers.reverse();
+            }
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+            _context2.t1 = appData;
 
-var _get3 = _interopRequireDefault(__webpack_require__(602));
+            if (_context2.t1) {
+              _context2.next = 18;
+              break;
+            }
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+            _context2.next = 17;
+            return fallbacks(appDataFetchers);
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+          case 17:
+            _context2.t1 = _context2.sent;
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+          case 18:
+            _context2.t0 = _context2.t1;
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+            if (_context2.t0) {
+              _context2.next = 21;
+              break;
+            }
 
-var _Collection = _interopRequireWildcard(__webpack_require__(489));
+            _context2.t0 = {};
 
-var _DocumentCollection2 = _interopRequireWildcard(__webpack_require__(491));
+          case 21:
+            app = _context2.t0;
+            ext = getIconExtensionFromApp(app);
 
-var _JobCollection = __webpack_require__(599);
+            if (mimeTypes[ext]) {
+              _context2.next = 25;
+              break;
+            }
 
-var _utils = __webpack_require__(521);
+            throw new Error("Unknown image extension \"".concat(ext, "\" for app ").concat(app.name));
 
-var _errors = __webpack_require__(582);
+          case 25:
+            icon = new Blob([icon], {
+              type: mimeTypes[ext]
+            });
 
-function _templateObject4() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/jobs/triggers/", "/launch"]);
+          case 26:
+            return _context2.abrupt("return", URL.createObjectURL(icon));
 
-  _templateObject4 = function _templateObject4() {
-    return data;
-  };
+          case 29:
+            _context2.prev = 29;
+            _URL = new URL(stackClient.uri), domain = _URL.host, protocol = _URL.protocol;
+            return _context2.abrupt("return", loadIcon(appData, slug, domain, protocol));
 
-  return data;
-}
+          case 34:
+            _context2.prev = 34;
+            _context2.t2 = _context2["catch"](29);
+            throw new Error("Cannot fetch icon: invalid stackClient.uri: ".concat(_context2.t2.message));
 
-function _templateObject3() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/jobs/triggers/", ""]);
+          case 37:
+          case "end":
+            return _context2.stop();
+        }
+      }
+    }, _callee2, null, [[29, 34]]);
+  }));
 
-  _templateObject3 = function _templateObject3() {
-    return data;
+  return function _getIconURL(_x3, _x4) {
+    return _ref2.apply(this, arguments);
   };
+}();
+/**
+ * Get Icon URL using blob mechanism if OAuth connected
+ * or using preloaded url when blob not needed
+ *
+ */
 
-  return data;
-}
 
-function _templateObject2() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/jobs/triggers/", ""]);
+exports._getIconURL = _getIconURL;
 
-  _templateObject2 = function _templateObject2() {
-    return data;
-  };
+var getIconURL = function getIconURL() {
+  return _getIconURL.apply(this, arguments).catch(function () {
+    return new _memoize.ErrorReturned();
+  });
+};
 
-  return data;
-}
+exports.getIconURL = getIconURL;
 
-function _templateObject() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/jobs/triggers"]);
+var _default = (0, _memoize.default)(getIconURL, {
+  maxDuration: 300 * 1000,
+  key: function key(stackClient, opts) {
+    var type = opts.type,
+        slug = opts.slug,
+        priority = opts.priority;
+    return stackClient.uri + +':' + type + ':' + slug + ':' + priority;
+  }
+});
 
-  _templateObject = function _templateObject() {
-    return data;
-  };
+exports.default = _default;
 
-  return data;
-}
+/***/ }),
+/* 614 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+"use strict";
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+var _interopRequireDefault = __webpack_require__(1);
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.ErrorReturned = exports.default = void 0;
 
-var JOBS_DOCTYPE = 'io.cozy.jobs';
-exports.JOBS_DOCTYPE = JOBS_DOCTYPE;
-var TRIGGERS_DOCTYPE = 'io.cozy.triggers';
-exports.TRIGGERS_DOCTYPE = TRIGGERS_DOCTYPE;
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-var normalizeTrigger = function normalizeTrigger(trigger) {
-  return _objectSpread(_objectSpread(_objectSpread({}, trigger), (0, _DocumentCollection2.normalizeDoc)(trigger, TRIGGERS_DOCTYPE)), trigger.attributes);
-};
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
-exports.normalizeTrigger = normalizeTrigger;
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
-var isForKonnector = function isForKonnector(triggerAttrs, slug) {
-  return triggerAttrs.worker === 'konnector' && triggerAttrs.message.konnector == slug;
-};
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
-exports.isForKonnector = isForKonnector;
+var _wrapNativeSuper2 = _interopRequireDefault(__webpack_require__(583));
 
-var isForAccount = function isForAccount(triggerAttrs, accountId) {
-  return triggerAttrs.message.account == accountId;
-};
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
-exports.isForAccount = isForAccount;
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-var buildParamsUrl = function buildParamsUrl(worker, type) {
-  var urlParams = new URLSearchParams();
+var ErrorReturned = /*#__PURE__*/function (_String) {
+  (0, _inherits2.default)(ErrorReturned, _String);
 
-  if (worker) {
-    if (Array.isArray(worker.$in)) {
-      urlParams.set('Worker', worker.$in.join(','));
-    } else {
-      urlParams.set('Worker', worker);
-    }
-  }
+  var _super = _createSuper(ErrorReturned);
 
-  if (type) {
-    if (Array.isArray(type.$in)) {
-      urlParams.set('Type', type.$in.join(','));
-    } else {
-      urlParams.set('Type', type);
-    }
+  function ErrorReturned() {
+    (0, _classCallCheck2.default)(this, ErrorReturned);
+    return _super.apply(this, arguments);
   }
 
-  return urlParams.toString();
-};
+  return ErrorReturned;
+}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(String));
 /**
- * Implements `DocumentCollection` API along with specific methods for `io.cozy.triggers`.
+ * Delete outdated results from cache
  */
 
 
-var TriggerCollection = /*#__PURE__*/function (_DocumentCollection) {
-  (0, _inherits2.default)(TriggerCollection, _DocumentCollection);
+exports.ErrorReturned = ErrorReturned;
 
-  var _super = _createSuper(TriggerCollection);
+var garbageCollect = function garbageCollect(cache, maxDuration) {
+  var now = Date.now();
 
-  function TriggerCollection(stackClient) {
-    (0, _classCallCheck2.default)(this, TriggerCollection);
-    return _super.call(this, TRIGGERS_DOCTYPE, stackClient);
+  for (var _i = 0, _Object$keys = Object.keys(cache); _i < _Object$keys.length; _i++) {
+    var key = _Object$keys[_i];
+    var delta = now - cache[key].date;
+
+    if (delta > maxDuration) {
+      delete cache[key];
+    }
   }
-  /**
-   * Get the list of triggers.
-   *
-   * @see https://docs.cozy.io/en/cozy-stack/jobs/#get-jobstriggers
-   * @param  {{Worker}} options The fetch options: Worker allow to filter only triggers associated with a specific worker.
-   * @returns {{data}} The JSON API conformant response.
-   * @throws {FetchError}
-   */
+};
 
+var isPromise = function isPromise(maybePromise) {
+  return typeof maybePromise === 'object' && typeof maybePromise.then === 'function';
+};
+/**
+ * Memoize with maxDuration and custom key
+ */
 
-  (0, _createClass2.default)(TriggerCollection, [{
-    key: "all",
-    value: function () {
-      var _all = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
-        var options,
-            resp,
-            _args = arguments;
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                options = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
-                _context.prev = 1;
-                _context.next = 4;
-                return this.stackClient.fetchJSON('GET', "/jobs/triggers");
 
-              case 4:
-                resp = _context.sent;
-                return _context.abrupt("return", {
-                  data: resp.data.map(function (row) {
-                    return normalizeTrigger(row, TRIGGERS_DOCTYPE);
-                  }),
-                  meta: {
-                    count: resp.data.length
-                  },
-                  next: false,
-                  skip: 0
-                });
+var memoize = function memoize(fn, options) {
+  var cache = {};
+  return function () {
+    var key = options.key.apply(null, arguments);
+    garbageCollect(cache, options.maxDuration);
+    var existing = cache[key];
 
-              case 8:
-                _context.prev = 8;
-                _context.t0 = _context["catch"](1);
-                return _context.abrupt("return", (0, _Collection.dontThrowNotFoundError)(_context.t0));
+    if (existing) {
+      return existing.result;
+    } else {
+      var result = fn.apply(this, arguments);
+      cache[key] = {
+        result: result,
+        date: Date.now()
+      };
+      /**
+       * If the result is a promise and this promise
+       * failed or resolved with a specific error (aka ErrorReturned),
+       * let's remove the result from the cache since we don't want to
+       * memoize error
+       */
 
-              case 11:
-              case "end":
-                return _context.stop();
-            }
+      if (isPromise(result)) {
+        result.then(function (v) {
+          if (v instanceof ErrorReturned) {
+            delete cache[key];
           }
-        }, _callee, this, [[1, 8]]);
-      }));
-
-      function all() {
-        return _all.apply(this, arguments);
+        }).catch(function (e) {
+          delete cache[key];
+        });
       }
 
-      return all;
-    }()
-    /**
-     * Creates a Trigger document
-     *
-     * @see https://docs.cozy.io/en/cozy-stack/jobs/#post-jobstriggers
-     * @param  {object}  attributes Trigger's attributes
-     * @returns {object}  Stack response, containing trigger document under `data` attribute.
-     */
+      return result;
+    }
+  };
+};
 
-  }, {
-    key: "create",
-    value: function () {
-      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(attributes) {
-        var path, resp;
-        return _regenerator.default.wrap(function _callee2$(_context2) {
-          while (1) {
-            switch (_context2.prev = _context2.next) {
-              case 0:
-                path = (0, _utils.uri)(_templateObject());
-                _context2.next = 3;
-                return this.stackClient.fetchJSON('POST', path, {
-                  data: {
-                    attributes: attributes
-                  }
-                });
+var _default = memoize;
+exports.default = _default;
 
-              case 3:
-                resp = _context2.sent;
-                return _context2.abrupt("return", {
-                  data: normalizeTrigger(resp.data)
-                });
+/***/ }),
+/* 615 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 5:
-              case "end":
-                return _context2.stop();
-            }
-          }
-        }, _callee2, this);
-      }));
+"use strict";
 
-      function create(_x) {
-        return _create.apply(this, arguments);
-      }
 
-      return create;
-    }()
-    /**
-     * Deletes a trigger
-     *
-     * @see https://docs.cozy.io/en/cozy-stack/jobs/#delete-jobstriggerstrigger-id
-     * @param  {object} document The trigger to delete — must have an _id field
-     * @returns {object} The deleted document
-     */
+var _interopRequireDefault = __webpack_require__(1);
 
-  }, {
-    key: "destroy",
-    value: function () {
-      var _destroy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(document) {
-        var _id;
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
 
-        return _regenerator.default.wrap(function _callee3$(_context3) {
-          while (1) {
-            switch (_context3.prev = _context3.next) {
-              case 0:
-                _id = document._id;
+var _logger = _interopRequireDefault(__webpack_require__(587));
 
-                if (_id) {
-                  _context3.next = 3;
-                  break;
-                }
+var logDeprecate = function logDeprecate() {
+  if (false) {}
 
-                throw new Error('TriggerCollection.destroy needs a document with an _id');
+  _logger.default.warn.apply(_logger.default, arguments);
+};
 
-              case 3:
-                _context3.next = 5;
-                return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject2(), _id));
+var _default = logDeprecate;
+exports.default = _default;
 
-              case 5:
-                return _context3.abrupt("return", {
-                  data: normalizeTrigger(_objectSpread(_objectSpread({}, document), {}, {
-                    _deleted: true
-                  }))
-                });
+/***/ }),
+/* 616 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 6:
-              case "end":
-                return _context3.stop();
-            }
-          }
-        }, _callee3, this);
-      }));
+"use strict";
 
-      function destroy(_x2) {
-        return _destroy.apply(this, arguments);
-      }
 
-      return destroy;
-    }()
-    /**
-     *
-     * Be warned, ATM /jobs/triggers does not return the same informations
-     * than /data/io.cozy.triggers (used by the super.find method).
-     *
-     * See https://github.com/cozy/cozy-stack/pull/2010
-     *
-     * @param {object} selector - Which kind of worker {konnector,service}
-     * @param {object} options - Options
-     * @returns {{data, meta, skip, next}} The JSON API conformant response.
-     * @throws {FetchError}
-     */
+var _interopRequireDefault = __webpack_require__(1);
 
-  }, {
-    key: "find",
-    value: function () {
-      var _find = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
-        var selector,
-            options,
-            worker,
-            type,
-            rest,
-            hasOnlyWorkerAndType,
-            url,
-            resp,
-            _args4 = arguments;
-        return _regenerator.default.wrap(function _callee4$(_context4) {
-          while (1) {
-            switch (_context4.prev = _context4.next) {
-              case 0:
-                selector = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : {};
-                options = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : {};
-                worker = selector.worker, type = selector.type, rest = (0, _objectWithoutProperties2.default)(selector, ["worker", "type"]);
-                hasOnlyWorkerAndType = Object.keys(rest).length === 0;
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.shouldXMLHTTPRequestBeUsed = exports.fetchWithXMLHttpRequest = void 0;
 
-                if (!hasOnlyWorkerAndType) {
-                  _context4.next = 18;
-                  break;
-                }
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-                // @see https://github.com/cozy/cozy-stack/blob/master/docs/jobs.md#get-jobstriggers
-                url = "/jobs/triggers?".concat(buildParamsUrl(worker, type));
-                _context4.prev = 6;
-                _context4.next = 9;
-                return this.stackClient.fetchJSON('GET', url);
+var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
 
-              case 9:
-                resp = _context4.sent;
-                return _context4.abrupt("return", {
-                  data: resp.data.map(function (row) {
-                    return normalizeTrigger(row, TRIGGERS_DOCTYPE);
-                  }),
-                  meta: {
-                    count: resp.data.length
-                  },
-                  next: false,
-                  skip: 0
-                });
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-              case 13:
-                _context4.prev = 13;
-                _context4.t0 = _context4["catch"](6);
-                return _context4.abrupt("return", (0, _Collection.dontThrowNotFoundError)(_context4.t0));
+var _memoize = _interopRequireDefault(__webpack_require__(406));
 
-              case 16:
-                _context4.next = 19;
-                break;
-
-              case 18:
-                return _context4.abrupt("return", (0, _get3.default)((0, _getPrototypeOf2.default)(TriggerCollection.prototype), "find", this).call(this, selector, options));
-
-              case 19:
-              case "end":
-                return _context4.stop();
-            }
-          }
-        }, _callee4, this, [[6, 13]]);
-      }));
-
-      function find() {
-        return _find.apply(this, arguments);
-      }
+var headersFromString = function headersFromString(headerString) {
+  return new Headers(headerString.split('\r\n').map(function (x) {
+    return x.split(':', 2);
+  }).filter(function (x) {
+    return x.length == 2;
+  }));
+};
+/**
+ * Returns a `fetch()` like response but uses XHR.
+ * XMLHTTPRequest provides upload progress events unlike fetch.
+ *
+ * @private
+ * @param {string} fullpath - Route path
+ * @param {object} options - Fetch options
+ * @param {Function} options.onUploadProgress - Callback to receive upload progress events
+ */
 
-      return find;
-    }()
-  }, {
-    key: "get",
-    value: function () {
-      var _get2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(id) {
-        return _regenerator.default.wrap(function _callee5$(_context5) {
-          while (1) {
-            switch (_context5.prev = _context5.next) {
-              case 0:
-                return _context5.abrupt("return", _Collection.default.get(this.stackClient, (0, _utils.uri)(_templateObject3(), id), {
-                  normalize: normalizeTrigger
-                }));
 
-              case 1:
-              case "end":
-                return _context5.stop();
-            }
-          }
-        }, _callee5, this);
-      }));
+var fetchWithXMLHttpRequest = /*#__PURE__*/function () {
+  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(fullpath, options) {
+    var response;
+    return _regenerator.default.wrap(function _callee3$(_context3) {
+      while (1) {
+        switch (_context3.prev = _context3.next) {
+          case 0:
+            _context3.next = 2;
+            return new Promise(function (resolve, reject) {
+              var xhr = new XMLHttpRequest();
 
-      function get(_x3) {
-        return _get2.apply(this, arguments);
-      }
+              if (options.onUploadProgress && xhr.upload) {
+                xhr.upload.addEventListener('progress', options.onUploadProgress, false);
+              }
 
-      return get;
-    }()
-    /**
-     * Force given trigger execution.
-     *
-     * @see https://docs.cozy.io/en/cozy-stack/jobs/#post-jobstriggerstrigger-idlaunch
-     * @param {object} trigger Trigger to launch
-     * @returns {object} Stack response, containing job launched by trigger, under `data` attribute.
-     */
+              xhr.onload = function () {
+                if (this.readyState == 4) {
+                  resolve(this);
+                } else {
+                  reject(this);
+                }
+              };
 
-  }, {
-    key: "launch",
-    value: function () {
-      var _launch = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(trigger) {
-        var path, resp;
-        return _regenerator.default.wrap(function _callee6$(_context6) {
-          while (1) {
-            switch (_context6.prev = _context6.next) {
-              case 0:
-                path = (0, _utils.uri)(_templateObject4(), trigger._id);
-                _context6.next = 3;
-                return this.stackClient.fetchJSON('POST', path);
+              xhr.onerror = function (err) {
+                reject(err);
+              };
 
-              case 3:
-                resp = _context6.sent;
-                return _context6.abrupt("return", {
-                  data: (0, _JobCollection.normalizeJob)(resp.data)
-                });
+              xhr.open(options.method, fullpath, true);
+              xhr.withCredentials = true;
 
-              case 5:
-              case "end":
-                return _context6.stop();
-            }
-          }
-        }, _callee6, this);
-      }));
+              for (var _i = 0, _Object$entries = Object.entries(options.headers); _i < _Object$entries.length; _i++) {
+                var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
+                    headerName = _Object$entries$_i[0],
+                    headerValue = _Object$entries$_i[1];
 
-      function launch(_x4) {
-        return _launch.apply(this, arguments);
-      }
+                xhr.setRequestHeader(headerName, headerValue);
+              }
 
-      return launch;
-    }()
-  }, {
-    key: "update",
-    value: function () {
-      var _update = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
-        return _regenerator.default.wrap(function _callee7$(_context7) {
-          while (1) {
-            switch (_context7.prev = _context7.next) {
-              case 0:
-                throw new Error('update() method is not available for triggers');
+              xhr.send(options.body);
+            });
 
-              case 1:
-              case "end":
-                return _context7.stop();
-            }
-          }
-        }, _callee7);
-      }));
+          case 2:
+            response = _context3.sent;
+            return _context3.abrupt("return", {
+              headers: headersFromString(response.getAllResponseHeaders()),
+              ok: response.status >= 200 && response.status < 300,
+              text: function () {
+                var _text = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
+                  return _regenerator.default.wrap(function _callee$(_context) {
+                    while (1) {
+                      switch (_context.prev = _context.next) {
+                        case 0:
+                          return _context.abrupt("return", response.responseText);
 
-      function update() {
-        return _update.apply(this, arguments);
-      }
+                        case 1:
+                        case "end":
+                          return _context.stop();
+                      }
+                    }
+                  }, _callee);
+                }));
 
-      return update;
-    }()
-  }]);
-  return TriggerCollection;
-}(_DocumentCollection2.default);
+                function text() {
+                  return _text.apply(this, arguments);
+                }
 
-TriggerCollection.normalizeDoctype = _DocumentCollection2.default.normalizeDoctypeJsonApi;
-var _default = TriggerCollection;
-exports.default = _default;
+                return text;
+              }(),
+              json: function () {
+                var _json = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
+                  return _regenerator.default.wrap(function _callee2$(_context2) {
+                    while (1) {
+                      switch (_context2.prev = _context2.next) {
+                        case 0:
+                          return _context2.abrupt("return", JSON.parse(response.responseText));
 
-/***/ }),
-/* 602 */
-/***/ (function(module, exports, __webpack_require__) {
+                        case 1:
+                        case "end":
+                          return _context2.stop();
+                      }
+                    }
+                  }, _callee2);
+                }));
 
-var superPropBase = __webpack_require__(603);
+                function json() {
+                  return _json.apply(this, arguments);
+                }
 
-function _get() {
-  if (typeof Reflect !== "undefined" && Reflect.get) {
-    module.exports = _get = Reflect.get.bind(), module.exports.__esModule = true, module.exports["default"] = module.exports;
-  } else {
-    module.exports = _get = function _get(target, property, receiver) {
-      var base = superPropBase(target, property);
-      if (!base) return;
-      var desc = Object.getOwnPropertyDescriptor(base, property);
+                return json;
+              }(),
+              status: response.status,
+              statusText: response.statusText
+            });
 
-      if (desc.get) {
-        return desc.get.call(arguments.length < 3 ? target : receiver);
+          case 4:
+          case "end":
+            return _context3.stop();
+        }
       }
+    }, _callee3);
+  }));
 
-      return desc.value;
-    }, module.exports.__esModule = true, module.exports["default"] = module.exports;
-  }
-
-  return _get.apply(this, arguments);
-}
-
-module.exports = _get, module.exports.__esModule = true, module.exports["default"] = module.exports;
-
-/***/ }),
-/* 603 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getPrototypeOf = __webpack_require__(484);
+  return function fetchWithXMLHttpRequest(_x, _x2) {
+    return _ref.apply(this, arguments);
+  };
+}();
 
-function _superPropBase(object, property) {
-  while (!Object.prototype.hasOwnProperty.call(object, property)) {
-    object = getPrototypeOf(object);
-    if (object === null) break;
-  }
+exports.fetchWithXMLHttpRequest = fetchWithXMLHttpRequest;
+var doesXHRSupportLoadAndProgress = (0, _memoize.default)(function () {
+  var xhr = new XMLHttpRequest();
+  return 'onload' in xhr && 'onprogress' in xhr;
+});
 
-  return object;
-}
+var shouldXMLHTTPRequestBeUsed = function shouldXMLHTTPRequestBeUsed(method, path, options) {
+  return Boolean(options.onUploadProgress) && doesXHRSupportLoadAndProgress();
+};
 
-module.exports = _superPropBase, module.exports.__esModule = true, module.exports["default"] = module.exports;
+exports.shouldXMLHTTPRequestBeUsed = shouldXMLHTTPRequestBeUsed;
 
 /***/ }),
-/* 604 */
+/* 617 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _interopRequireWildcard = __webpack_require__(277);
-
 var _interopRequireDefault = __webpack_require__(1);
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.default = exports.getSharingRules = exports.BITWARDEN_CIPHERS_DOCTYPE = exports.BITWARDEN_ORGANIZATIONS_DOCTYPE = exports.SHARING_DOCTYPE = void 0;
+exports.default = void 0;
 
 var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
-
-var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
-
 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
 var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+/**
+ * Caches promises while they are pending
+ * Serves to dedupe equal queries requested at the same time
+ */
+var PromiseCache = /*#__PURE__*/function () {
+  function PromiseCache() {
+    (0, _classCallCheck2.default)(this, PromiseCache);
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+    /**
+     * Holds pending promises
+     *
+     * @type {Object.<string, Promise>}
+     */
+    this.pending = {};
+  }
+  /**
+   * Tries to find a pending promise corresponding to the result of keyFunc
+   * - If not found, promiseFunc is executed and the resulting promise is stored while it's pending
+   * - If found, it is immediately returned
+   *
+   * @template T
+   * @param  {function(): Promise<T>} promiseFunc - Not executed only if an "equal" promise is already pending.
+   * @param  {function(): string} keyFunc - Returns a key to find in cache to find a pending promise.
+   * @returns {Promise<T>}
+   */
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
-var _DocumentCollection2 = _interopRequireWildcard(__webpack_require__(491));
+  (0, _createClass2.default)(PromiseCache, [{
+    key: "exec",
+    value: function () {
+      var _exec = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(promiseFunc, keyFunc) {
+        var key, already, prom, response;
+        return _regenerator.default.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                key = keyFunc();
+                already = this.pending[key];
 
-var _FileCollection = __webpack_require__(590);
+                if (already) {
+                  prom = already;
+                } else {
+                  prom = promiseFunc();
+                  this.pending[key] = prom;
+                }
 
-var _utils = __webpack_require__(521);
+                _context.prev = 3;
+                _context.next = 6;
+                return prom;
 
-var _logger = _interopRequireDefault(__webpack_require__(587));
+              case 6:
+                response = _context.sent;
+                return _context.abrupt("return", response);
 
-function _templateObject6() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/sharings/", "/recipients"]);
+              case 8:
+                _context.prev = 8;
+                this.pending[key] = null;
+                return _context.finish(8);
 
-  _templateObject6 = function _templateObject6() {
-    return data;
-  };
+              case 11:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this, [[3,, 8, 11]]);
+      }));
 
-  return data;
-}
+      function exec(_x, _x2) {
+        return _exec.apply(this, arguments);
+      }
 
-function _templateObject5() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/sharings/", "/recipients/self"]);
+      return exec;
+    }()
+    /**
+     *
+     * @param {function(): string} keyFunc - Returns a key to find in cache to find a pending promise.
+     * @returns {Promise | null}
+     */
 
-  _templateObject5 = function _templateObject5() {
-    return data;
-  };
+  }, {
+    key: "get",
+    value: function get(keyFunc) {
+      var key = keyFunc();
+      var already = this.pending[key];
+      if (already) return already;
+      return null;
+    }
+  }]);
+  return PromiseCache;
+}();
 
-  return data;
-}
+var _default = PromiseCache;
+exports.default = _default;
 
-function _templateObject4() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/sharings/", "/recipients/", ""]);
+/***/ }),
+/* 618 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  _templateObject4 = function _templateObject4() {
-    return data;
-  };
+"use strict";
 
-  return data;
-}
 
-function _templateObject3() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/sharings/", "/recipients"]);
+var _interopRequireDefault = __webpack_require__(1);
 
-  _templateObject3 = function _templateObject3() {
-    return data;
-  };
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
 
-  return data;
-}
+var _wrapNativeSuper2 = _interopRequireDefault(__webpack_require__(583));
 
-function _templateObject2() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/sharings/", ""]);
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-  _templateObject2 = function _templateObject2() {
-    return data;
-  };
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-  return data;
-}
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(291));
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-function _templateObject() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/sharings/doctype/", ""]);
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-  _templateObject = function _templateObject() {
-    return data;
-  };
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
-  return data;
-}
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+var _CozyStackClient2 = _interopRequireDefault(__webpack_require__(449));
 
-var SHARING_DOCTYPE = 'io.cozy.sharings';
-exports.SHARING_DOCTYPE = SHARING_DOCTYPE;
-var BITWARDEN_ORGANIZATIONS_DOCTYPE = 'com.bitwarden.organizations';
-exports.BITWARDEN_ORGANIZATIONS_DOCTYPE = BITWARDEN_ORGANIZATIONS_DOCTYPE;
-var BITWARDEN_CIPHERS_DOCTYPE = 'com.bitwarden.ciphers';
-exports.BITWARDEN_CIPHERS_DOCTYPE = BITWARDEN_CIPHERS_DOCTYPE;
+var _AccessToken = _interopRequireDefault(__webpack_require__(589));
 
-var normalizeSharing = function normalizeSharing(sharing) {
-  return (0, _DocumentCollection2.normalizeDoc)(sharing, SHARING_DOCTYPE);
-};
-/**
- * @typedef {object} Rule A sharing rule
- * @property {string} title
- * @property {string} doctype
- * @property {Array} values
- * @property {string=} add
- * @property {string=} update
- * @property {string=} remove
- */
+var _logDeprecate = _interopRequireDefault(__webpack_require__(615));
 
-/**
- * @typedef {object} Recipient An io.cozy.contact
- */
+var _errors = _interopRequireDefault(__webpack_require__(582));
 
-/**
- * @typedef {object} Sharing An io.cozy.sharings document
- */
+var _logger = _interopRequireDefault(__webpack_require__(587));
 
-/**
- * @typedef {object} SharingPolicy Define the add/update/remove policies for a sharing
- * @property {string} add
- * @property {string} update
- * @property {string} remove
- */
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-/**
- * @typedef {(undefined|'one-way'|'two-way')} SharingType Define how a document is synced between sharing's owner and receivers.
- */
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
 /**
- * @typedef {object} RelationshipItem Define a recipient that can be used as target of a sharing
- * @property {string} id - Recipient's ID
- * @property {string} type - Reciptient's type (should be 'io.cozy.contacts')
+ * @typedef {string} SessionCode
  */
-
+var defaultoauthOptions = {
+  clientID: '',
+  clientName: '',
+  clientKind: '',
+  clientSecret: '',
+  clientURI: '',
+  registrationAccessToken: '',
+  redirectURI: '',
+  softwareID: '',
+  softwareVersion: '',
+  logoURI: '',
+  policyURI: '',
+  notificationPlatform: '',
+  notificationDeviceToken: ''
+};
 /**
- * Implements the `DocumentCollection` API along with specific methods for
- * `io.cozy.sharings`.
+ * Specialized `CozyStackClient` for mobile, implementing stack registration
+ * through OAuth.
  */
 
+var OAuthClient = /*#__PURE__*/function (_CozyStackClient) {
+  (0, _inherits2.default)(OAuthClient, _CozyStackClient);
 
-var SharingCollection = /*#__PURE__*/function (_DocumentCollection) {
-  (0, _inherits2.default)(SharingCollection, _DocumentCollection);
+  var _super = _createSuper(OAuthClient);
 
-  var _super = _createSuper(SharingCollection);
+  function OAuthClient(_ref) {
+    var _this;
 
-  function SharingCollection() {
-    (0, _classCallCheck2.default)(this, SharingCollection);
-    return _super.apply(this, arguments);
-  }
+    var oauth = _ref.oauth,
+        _ref$scope = _ref.scope,
+        scope = _ref$scope === void 0 ? [] : _ref$scope,
+        onTokenRefresh = _ref.onTokenRefresh,
+        options = (0, _objectWithoutProperties2.default)(_ref, ["oauth", "scope", "onTokenRefresh"]);
+    (0, _classCallCheck2.default)(this, OAuthClient);
+    _this = _super.call(this, options);
 
-  (0, _createClass2.default)(SharingCollection, [{
-    key: "findByDoctype",
-    value: function () {
-      var _findByDoctype = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(doctype) {
-        var resp;
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
+    _this.setOAuthOptions(_objectSpread(_objectSpread({}, defaultoauthOptions), oauth));
+
+    if (oauth.token) {
+      _this.setToken(oauth.token);
+    }
+
+    _this.scope = scope;
+    _this.onTokenRefresh = onTokenRefresh;
+    return _this;
+  }
+  /**
+   * Checks if the client has his registration information from the server
+   *
+   * @returns {boolean} true if registered, false otherwise
+   * @private
+   */
+
+
+  (0, _createClass2.default)(OAuthClient, [{
+    key: "isRegistered",
+    value: function isRegistered() {
+      return this.oauthOptions.clientID !== '';
+    }
+    /**
+     * Converts a camel-cased data set to snake case, suitable for sending to the OAuth server
+     *
+     * @param   {object} data Initial data
+     * @returns {object} Formatted data
+     * @private
+     */
+
+  }, {
+    key: "snakeCaseOAuthData",
+    value: function snakeCaseOAuthData(data) {
+      var mappedFields = {
+        softwareID: 'software_id',
+        softwareVersion: 'software_version',
+        clientID: 'client_id',
+        clientName: 'client_name',
+        clientKind: 'client_kind',
+        clientURI: 'client_uri',
+        logoURI: 'logo_uri',
+        policyURI: 'policy_uri',
+        notificationPlatform: 'notification_platform',
+        notificationDeviceToken: 'notification_device_token',
+        redirectURI: 'redirect_uris'
+      };
+      var result = {};
+      Object.keys(data).forEach(function (fieldName) {
+        var key = mappedFields[fieldName] || fieldName;
+        var value = data[fieldName];
+        result[key] = value;
+      }); // special case: turn redirect_uris into an array
+
+      if (result['redirect_uris'] && result['redirect_uris'] instanceof Array === false) result['redirect_uris'] = [result['redirect_uris']];
+      return result;
+    }
+    /**
+     * Converts a snake-cased data set to camel case, suitable for internal use
+     *
+     * @param   {object} data Initial data
+     * @returns {object} Formatted data
+     * @private
+     */
+
+  }, {
+    key: "camelCaseOAuthData",
+    value: function camelCaseOAuthData(data) {
+      var mappedFields = {
+        client_id: 'clientID',
+        client_name: 'clientName',
+        client_secret: 'clientSecret',
+        registration_access_token: 'registrationAccessToken',
+        software_id: 'softwareID',
+        redirect_uris: 'redirectURI'
+      };
+      var result = {};
+      Object.keys(data).forEach(function (fieldName) {
+        var key = mappedFields[fieldName] || fieldName;
+        var value = data[fieldName];
+        result[key] = value;
+      });
+      return result;
+    }
+    /** Performs the HTTP call to register the client to the server */
+
+  }, {
+    key: "doRegistration",
+    value: function doRegistration() {
+      return this.fetchJSON('POST', '/auth/register', this.snakeCaseOAuthData({
+        redirectURI: this.oauthOptions.redirectURI,
+        clientName: this.oauthOptions.clientName,
+        softwareID: this.oauthOptions.softwareID,
+        clientKind: this.oauthOptions.clientKind,
+        clientURI: this.oauthOptions.clientURI,
+        logoURI: this.oauthOptions.logoURI,
+        policyURI: this.oauthOptions.policyURI,
+        softwareVersion: this.oauthOptions.softwareVersion,
+        notificationPlatform: this.oauthOptions.notificationPlatform,
+        notificationDeviceToken: this.oauthOptions.notificationDeviceToken
+      }));
+    }
+    /**
+     * Registers the currenly configured client with the OAuth server and
+     * sets internal information from the server response
+     *
+     * @throws {Error} When the client is already registered
+     * @returns {Promise} A promise that resolves with a complete list of client information, including client ID and client secret.
+     */
+
+  }, {
+    key: "register",
+    value: function () {
+      var _register = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
+        var mandatoryFields, fields, missingMandatoryFields, data;
+        return _regenerator.default.wrap(function _callee$(_context) {
+          while (1) {
             switch (_context.prev = _context.next) {
               case 0:
-                _context.next = 2;
-                return this.stackClient.fetchJSON('GET', (0, _utils.uri)(_templateObject(), doctype));
+                if (!this.isRegistered()) {
+                  _context.next = 2;
+                  break;
+                }
+
+                throw new Error('Client already registered');
 
               case 2:
-                resp = _context.sent;
-                return _context.abrupt("return", _objectSpread(_objectSpread({}, resp), {}, {
-                  data: resp.data.map(normalizeSharing)
+                mandatoryFields = ['redirectURI'];
+                fields = Object.keys(this.oauthOptions);
+                missingMandatoryFields = mandatoryFields.filter(function (fieldName) {
+                  return fields[fieldName];
+                });
+
+                if (!(missingMandatoryFields.length > 0)) {
+                  _context.next = 7;
+                  break;
+                }
+
+                throw new Error("Can't register client : missing ".concat(missingMandatoryFields, " fields"));
+
+              case 7:
+                _context.next = 9;
+                return this.doRegistration();
+
+              case 9:
+                data = _context.sent;
+                this.setOAuthOptions(_objectSpread(_objectSpread({}, this.oauthOptions), {}, {
+                  client_id: data.client_id,
+                  client_name: data.client_name,
+                  client_secret: data.client_secret,
+                  registration_access_token: data.registration_access_token,
+                  software_id: data.software_id
                 }));
+                return _context.abrupt("return", this.oauthOptions);
 
-              case 4:
+              case 12:
               case "end":
                 return _context.stop();
             }
@@ -96055,37 +91955,43 @@ var SharingCollection = /*#__PURE__*/function (_DocumentCollection) {
         }, _callee, this);
       }));
 
-      function findByDoctype(_x) {
-        return _findByDoctype.apply(this, arguments);
+      function register() {
+        return _register.apply(this, arguments);
       }
 
-      return findByDoctype;
+      return register;
     }()
     /**
-     * Fetches a sharing by id
+     * Unregisters the currenly configured client with the OAuth server.
      *
-     * @param {string} id Sharing's id
-     * @returns {Sharing} sharing
+     * @throws {NotRegisteredException} When the client doesn't have it's registration information
+     * @returns {Promise}
      */
 
   }, {
-    key: "get",
+    key: "unregister",
     value: function () {
-      var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(id) {
-        var path, resp;
+      var _unregister = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
+        var clientID;
         return _regenerator.default.wrap(function _callee2$(_context2) {
           while (1) {
             switch (_context2.prev = _context2.next) {
               case 0:
-                path = (0, _utils.uri)(_templateObject2(), id);
-                _context2.next = 3;
-                return this.stackClient.fetchJSON('GET', path);
+                if (this.isRegistered()) {
+                  _context2.next = 2;
+                  break;
+                }
 
-              case 3:
-                resp = _context2.sent;
-                return _context2.abrupt("return", {
-                  data: normalizeSharing(resp.data)
-                });
+                throw new NotRegisteredException();
+
+              case 2:
+                clientID = this.oauthOptions.clientID;
+                this.oauthOptions.clientID = '';
+                return _context2.abrupt("return", this.fetchJSON('DELETE', "/auth/register/".concat(clientID), null, {
+                  headers: {
+                    Authorization: this.registrationAccessTokenToAuthHeader()
+                  }
+                }));
 
               case 5:
               case "end":
@@ -96095,76 +92001,42 @@ var SharingCollection = /*#__PURE__*/function (_DocumentCollection) {
         }, _callee2, this);
       }));
 
-      function get(_x2) {
-        return _get.apply(this, arguments);
+      function unregister() {
+        return _unregister.apply(this, arguments);
       }
 
-      return get;
+      return unregister;
     }()
     /**
+     * Fetches the complete set of client information from the server after it has been registered.
      *
-     * Creates a new Sharing. See https://docs.cozy.io/en/cozy-stack/sharing/#post-sharings
-     *
-     * @param {object} params Sharing  params
-     * @param {Sharing} params.document The document to share
-     * @param {string} params.description Description of the sharing
-     * @param {string=} params.previewPath The preview path
-     * @param {Array<Rule>=} params.rules The rules defined to the sharing. See https://docs.cozy.io/en/cozy-stack/sharing-design/#description-of-a-sharing
-     * @param {Array<Recipient>=} params.recipients Recipients to add to the sharings (will have the same permissions given by the rules defined by the sharing )
-     * @param {Array<Recipient>=} params.readOnlyRecipients Recipients to add to the sharings with only read only access
-     * @param {boolean=} params.openSharing If someone else than the owner can add a recipient to the sharing
-     * @param {string=} params.appSlug Slug of the targeted app
+     * @throws {NotRegisteredException} When the client doesn't have it's registration information
+     * @returns {Promise}
      */
 
   }, {
-    key: "create",
+    key: "fetchInformation",
     value: function () {
-      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(_ref) {
-        var document, description, previewPath, rules, _ref$recipients, recipients, _ref$readOnlyRecipien, readOnlyRecipients, openSharing, appSlug, attributes, optionalAttributes, resp;
-
+      var _fetchInformation = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
         return _regenerator.default.wrap(function _callee3$(_context3) {
           while (1) {
             switch (_context3.prev = _context3.next) {
               case 0:
-                document = _ref.document, description = _ref.description, previewPath = _ref.previewPath, rules = _ref.rules, _ref$recipients = _ref.recipients, recipients = _ref$recipients === void 0 ? [] : _ref$recipients, _ref$readOnlyRecipien = _ref.readOnlyRecipients, readOnlyRecipients = _ref$readOnlyRecipien === void 0 ? [] : _ref$readOnlyRecipien, openSharing = _ref.openSharing, appSlug = _ref.appSlug;
-                attributes = {
-                  description: description,
-                  preview_path: previewPath,
-                  open_sharing: openSharing,
-                  rules: rules ? rules : getSharingRules(document)
-                };
-                optionalAttributes = {};
-
-                if (appSlug) {
-                  optionalAttributes = {
-                    app_slug: appSlug
-                  };
+                if (this.isRegistered()) {
+                  _context3.next = 2;
+                  break;
                 }
 
-                _context3.next = 6;
-                return this.stackClient.fetchJSON('POST', '/sharings/', {
-                  data: {
-                    type: 'io.cozy.sharings',
-                    attributes: _objectSpread(_objectSpread({}, attributes), optionalAttributes),
-                    relationships: _objectSpread(_objectSpread({}, recipients.length > 0 && {
-                      recipients: {
-                        data: recipients.map(toRelationshipItem)
-                      }
-                    }), readOnlyRecipients.length > 0 && {
-                      read_only_recipients: {
-                        data: readOnlyRecipients.map(toRelationshipItem)
-                      }
-                    })
-                  }
-                });
+                throw new NotRegisteredException();
 
-              case 6:
-                resp = _context3.sent;
-                return _context3.abrupt("return", {
-                  data: normalizeSharing(resp.data)
-                });
+              case 2:
+                return _context3.abrupt("return", this.fetchJSON('GET', "/auth/register/".concat(this.oauthOptions.clientID), null, {
+                  headers: {
+                    Authorization: this.registrationAccessTokenToAuthHeader()
+                  }
+                }));
 
-              case 8:
+              case 3:
               case "end":
                 return _context3.stop();
             }
@@ -96172,53 +92044,65 @@ var SharingCollection = /*#__PURE__*/function (_DocumentCollection) {
         }, _callee3, this);
       }));
 
-      function create(_x3) {
-        return _create.apply(this, arguments);
+      function fetchInformation() {
+        return _fetchInformation.apply(this, arguments);
       }
 
-      return create;
+      return fetchInformation;
     }()
     /**
-     * @deprecated Use create() instead
-     * share - Creates a new sharing. See https://docs.cozy.io/en/cozy-stack/sharing/#post-sharings
+     * Overwrites the client own information. This method will update both the local information and the remote information on the OAuth server.
      *
-     * @param  {Sharing} document The document to share. Should have and _id and a name.
-     * @param  {Array} recipients A list of io.cozy.contacts
-     * @param  {string} sharingType - If "two-way", will set the open_sharing attribute to true
-     * @param  {string} description - Describes the sharing
-     * @param  {string=} previewPath Relative URL of the sharings preview page
+     * @throws {NotRegisteredException} When the client doesn't have it's registration information
+     * @param   {object} information Set of information to update. Note that some fields such as `clientID` can't be updated.
+     * @param   {boolean} resetSecret = false Optionnal, whether to reset the client secret or not
+     * @returns {Promise} Resolves to a complete, updated list of client information
      */
 
   }, {
-    key: "share",
+    key: "updateInformation",
     value: function () {
-      var _share = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(document, recipients, sharingType, description) {
-        var previewPath,
-            recipientsToUse,
+      var _updateInformation = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(information) {
+        var resetSecret,
+            mandatoryFields,
+            data,
+            result,
             _args4 = arguments;
         return _regenerator.default.wrap(function _callee4$(_context4) {
           while (1) {
             switch (_context4.prev = _context4.next) {
               case 0:
-                previewPath = _args4.length > 4 && _args4[4] !== undefined ? _args4[4] : null;
+                resetSecret = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : false;
 
-                _logger.default.warn('SharingCollection.share is deprecated, use SharingCollection.create instead');
+                if (this.isRegistered()) {
+                  _context4.next = 3;
+                  break;
+                }
 
-                recipientsToUse = sharingType === 'two-way' ? {
-                  recipients: recipients
-                } : {
-                  readOnlyRecipients: recipients
+                throw new NotRegisteredException();
+
+              case 3:
+                mandatoryFields = {
+                  clientID: this.oauthOptions.clientID,
+                  clientName: this.oauthOptions.clientName,
+                  redirectURI: this.oauthOptions.redirectURI,
+                  softwareID: this.oauthOptions.softwareID
                 };
-                return _context4.abrupt("return", this.create(_objectSpread(_objectSpread({
-                  document: document
-                }, recipientsToUse), {}, {
-                  description: description,
-                  previewPath: previewPath,
-                  openSharing: sharingType === 'two-way',
-                  rules: getSharingRules(document, sharingType)
-                })));
+                data = this.snakeCaseOAuthData(_objectSpread(_objectSpread({}, mandatoryFields), information));
+                if (resetSecret) data['client_secret'] = this.oauthOptions.clientSecret;
+                _context4.next = 8;
+                return this.fetchJSON('PUT', "/auth/register/".concat(this.oauthOptions.clientID), data, {
+                  headers: {
+                    Authorization: this.registrationAccessTokenToAuthHeader()
+                  }
+                });
 
-              case 4:
+              case 8:
+                result = _context4.sent;
+                this.setOAuthOptions(_objectSpread(_objectSpread({}, data), result));
+                return _context4.abrupt("return", this.oauthOptions);
+
+              case 11:
               case "end":
                 return _context4.stop();
             }
@@ -96226,1068 +92110,702 @@ var SharingCollection = /*#__PURE__*/function (_DocumentCollection) {
         }, _callee4, this);
       }));
 
-      function share(_x4, _x5, _x6, _x7) {
-        return _share.apply(this, arguments);
+      function updateInformation(_x) {
+        return _updateInformation.apply(this, arguments);
       }
 
-      return share;
+      return updateInformation;
     }()
     /**
-     * getDiscoveryLink - Returns the URL of the page that can be used to accept a sharing. See https://docs.cozy.io/en/cozy-stack/sharing/#get-sharingssharing-iddiscovery
+     * Generates a random state code to be used during the OAuth process
      *
-     * @param  {string} sharingId - Id of the sharing
-     * @param  {string} sharecode - Code of the sharing
      * @returns {string}
      */
 
   }, {
-    key: "getDiscoveryLink",
-    value: function getDiscoveryLink(sharingId, sharecode) {
-      return this.stackClient.fullpath("/sharings/".concat(sharingId, "/discovery?sharecode=").concat(sharecode));
+    key: "generateStateCode",
+    value: function generateStateCode() {
+      var STATE_SIZE = 16;
+      var hasCrypto = typeof window !== 'undefined' && typeof window.crypto !== 'undefined' && typeof window.crypto.getRandomValues === 'function';
+      var buffer;
+
+      if (hasCrypto) {
+        buffer = new Uint8Array(STATE_SIZE);
+        window.crypto.getRandomValues(buffer);
+      } else {
+        buffer = new Array(STATE_SIZE);
+
+        for (var i = 0; i < buffer.length; i++) {
+          buffer[i] = Math.floor(Math.random() * 255);
+        }
+      }
+
+      return btoa(String.fromCharCode.apply(null, buffer)).replace(/=+$/, '').replace(/\//g, '_').replace(/\+/g, '-');
     }
     /**
-     * Add an array of contacts to the Sharing
+     * Generates the URL that the user should be sent to in order to accept the app's permissions.
      *
-     * @param {object} options Object
-     * @param {Sharing} options.document Sharing Object
-     * @param {Array<Recipient>=} options.recipients Recipients to add to the sharing
-     * @param {Array<Recipient>=} options.readOnlyRecipients Recipients to add to the sharings with only read only access
+     * @throws {NotRegisteredException} When the client doesn't have it's registration information
+     * @param {object} options - URL generation options
+     * @param {string} options.stateCode - A random code to be included in the URl for security. Can be generated with `client.generateStateCode()`
+     * @param {Array} [options.scopes] - An array of permission scopes for the token.
+     * @param {SessionCode} [options.sessionCode] - A session code that can be used to create a session.
+     * @param {string} [options.codeChallenge] - A code challenge that can be used in a PKCE verification process.
+     * @returns {string} The URL
      */
 
   }, {
-    key: "addRecipients",
-    value: function () {
-      var _addRecipients = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(_ref2) {
-        var document, _ref2$recipients, recipients, _ref2$readOnlyRecipie, readOnlyRecipients, resp;
-
-        return _regenerator.default.wrap(function _callee5$(_context5) {
-          while (1) {
-            switch (_context5.prev = _context5.next) {
-              case 0:
-                document = _ref2.document, _ref2$recipients = _ref2.recipients, recipients = _ref2$recipients === void 0 ? [] : _ref2$recipients, _ref2$readOnlyRecipie = _ref2.readOnlyRecipients, readOnlyRecipients = _ref2$readOnlyRecipie === void 0 ? [] : _ref2$readOnlyRecipie;
-                _context5.next = 3;
-                return this.stackClient.fetchJSON('POST', (0, _utils.uri)(_templateObject3(), document._id), {
-                  data: {
-                    type: 'io.cozy.sharings',
-                    id: document._id,
-                    relationships: _objectSpread(_objectSpread({}, recipients.length > 0 && {
-                      recipients: {
-                        data: recipients.map(toRelationshipItem)
-                      }
-                    }), readOnlyRecipients.length > 0 && {
-                      read_only_recipients: {
-                        data: readOnlyRecipients.map(toRelationshipItem)
-                      }
-                    })
-                  }
-                });
-
-              case 3:
-                resp = _context5.sent;
-                return _context5.abrupt("return", {
-                  data: normalizeSharing(resp.data)
-                });
+    key: "getAuthCodeURL",
+    value: function getAuthCodeURL(_ref2) {
+      var stateCode = _ref2.stateCode,
+          _ref2$scopes = _ref2.scopes,
+          scopes = _ref2$scopes === void 0 ? this.scope : _ref2$scopes,
+          _ref2$sessionCode = _ref2.sessionCode,
+          sessionCode = _ref2$sessionCode === void 0 ? undefined : _ref2$sessionCode,
+          _ref2$codeChallenge = _ref2.codeChallenge,
+          codeChallenge = _ref2$codeChallenge === void 0 ? undefined : _ref2$codeChallenge;
+      if (!this.isRegistered()) throw new NotRegisteredException();
+      var query = {
+        client_id: this.oauthOptions.clientID,
+        redirect_uri: this.oauthOptions.redirectURI,
+        state: stateCode,
+        response_type: 'code',
+        scope: scopes.join(' ')
+      };
 
-              case 5:
-              case "end":
-                return _context5.stop();
-            }
-          }
-        }, _callee5, this);
-      }));
+      if (this.oauthOptions.registerToken) {
+        query = _objectSpread(_objectSpread({}, query), {}, {
+          registerToken: this.oauthOptions.registerToken
+        });
+      }
 
-      function addRecipients(_x8) {
-        return _addRecipients.apply(this, arguments);
+      if (sessionCode) {
+        query = _objectSpread(_objectSpread({}, query), {}, {
+          session_code: sessionCode
+        });
       }
 
-      return addRecipients;
-    }()
-    /**
-     * Revoke only one recipient of the sharing.
-     *
-     * @param {object} sharing Sharing Object
-     * @param {number} recipientIndex Index of this recipient in the members array of the sharing
-     */
+      if (codeChallenge) {
+        query = _objectSpread(_objectSpread({}, query), {}, {
+          code_challenge: codeChallenge,
+          code_challenge_method: 'S256'
+        });
+      }
 
+      return "".concat(this.uri, "/auth/authorize?").concat(this.dataToQueryString(query));
+    }
   }, {
-    key: "revokeRecipient",
-    value: function revokeRecipient(sharing, recipientIndex) {
-      return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject4(), sharing._id, recipientIndex));
+    key: "dataToQueryString",
+    value: function dataToQueryString(data) {
+      return Object.keys(data).map(function (param) {
+        return "".concat(param, "=").concat(encodeURIComponent(data[param]));
+      }).join('&');
     }
     /**
-     * Remove self from the sharing.
+     * Retrieves the access code contained in the URL to which the user is redirected after accepting the app's permissions (the `redirectURI`).
      *
-     * @param {object} sharing Sharing Object
+     * @throws {Error} The URL should contain the same state code as the one generated with `client.getAuthCodeURL()`. If not, it will throw an error
+     * @param   {string} pageURL The redirected page URL, containing the state code and the access code
+     * @param   {string} stateCode The state code that was contained in the original URL the user was sent to (see `client.getAuthCodeURL()`)
+     * @returns {string} The access code
      */
 
   }, {
-    key: "revokeSelf",
-    value: function revokeSelf(sharing) {
-      return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject5(), sharing._id));
+    key: "getAccessCodeFromURL",
+    value: function getAccessCodeFromURL(pageURL, stateCode) {
+      if (!stateCode) throw new Error('Missing state code');
+      var params = new URL(pageURL).searchParams;
+      var urlStateCode = params.get('state');
+      var urlAccessCode = params.get('access_code');
+      if (stateCode !== urlStateCode) throw new Error('Given state does not match url query state');
+      return urlAccessCode;
     }
     /**
-     * Revoke the sharing for all the members. Must be called
-     * from the owner's cozy
+     * Exchanges an access code for an access token. This function does **not** update the client's token.
      *
-     * @param {object} sharing Sharing Objects
+     * @throws {NotRegisteredException} When the client doesn't have it's registration information
+     * @param   {string} accessCode - The access code contained in the redirection URL — see `client.getAccessCodeFromURL()`
+     * @param   {object} oauthOptionsArg — To use when OAuthClient is not yet registered (during login process)
+     * @param   {string} uri — To use when OAuthClient is not yet registered (during login process)
+     * @param   {string} codeVerifier — The PKCE code verifier (see https://docs.cozy.io/en/cozy-stack/auth/#pkce-extension)
+     * @returns {Promise} A promise that resolves with an AccessToken object.
      */
 
   }, {
-    key: "revokeAllRecipients",
-    value: function revokeAllRecipients(sharing) {
-      return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject6(), sharing._id));
-    }
-  }]);
-  return SharingCollection;
-}(_DocumentCollection2.default);
-
-SharingCollection.normalizeDoctype = _DocumentCollection2.default.normalizeDoctypeJsonApi;
-
-var getSharingRulesWithoutWarning = function getSharingRulesWithoutWarning(document, sharingType) {
-  if ((0, _FileCollection.isFile)(document)) {
-    return getSharingRulesForFile(document, sharingType);
-  }
-
-  if (document._type === BITWARDEN_ORGANIZATIONS_DOCTYPE) {
-    return getSharingRulesForOrganizations(document);
-  }
-
-  return getSharingRulesForPhotosAlbum(document, sharingType);
-};
-/**
- * Rules determine the behavior of the sharing when changes are made to the shared document
- * See https://docs.cozy.io/en/cozy-stack/sharing-design/#description-of-a-sharing
- *
- * @param {Sharing} document - The document to share. Should have and _id and a name
- * @param  {SharingType} sharingType - The type of the sharing
- *
- * @returns {Array<Rule>=} The rules that define how to share the document
- */
-
+    key: "fetchAccessToken",
+    value: function () {
+      var _fetchAccessToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(accessCode, oauthOptionsArg, uri, codeVerifier) {
+        var oauthOptions, data, result;
+        return _regenerator.default.wrap(function _callee5$(_context5) {
+          while (1) {
+            switch (_context5.prev = _context5.next) {
+              case 0:
+                if (!(!this.isRegistered() && !oauthOptionsArg)) {
+                  _context5.next = 2;
+                  break;
+                }
 
-var getSharingRules = function getSharingRules(document, sharingType) {
-  if (sharingType) {
-    _logger.default.warn("sharingType is deprecated and will be removed. We now set this default rules: ".concat(getSharingRulesWithoutWarning(document), "} \n      \n      If this default rules do not fill your need, please set custom rules \n      by using the 'rules' object of the SharingCollection.create() method"));
-  }
+                throw new NotRegisteredException();
 
-  return getSharingRulesWithoutWarning(document, sharingType);
-};
-/**
- * Compute the rules that define how to share a Photo Album. See https://docs.cozy.io/en/cozy-stack/sharing-design/#description-of-a-sharing
- *
- * @param {Sharing} document - The document to share. Should have and _id and a name
- * @param  {SharingType} sharingType - The type of the sharing
- *
- * @returns {Array<Rule>=} The rules that define how to share a Photo Album
- */
+              case 2:
+                oauthOptions = oauthOptionsArg || this.oauthOptions;
+                data = {
+                  grant_type: 'authorization_code',
+                  code: accessCode,
+                  client_id: oauthOptions.clientID,
+                  client_secret: oauthOptions.clientSecret
+                };
 
+                if (codeVerifier) {
+                  data = _objectSpread(_objectSpread({}, data), {}, {
+                    code_verifier: codeVerifier
+                  });
+                }
 
-exports.getSharingRules = getSharingRules;
+                _context5.next = 7;
+                return this.fetchJSON('POST', (uri || '') + '/auth/access_token', this.dataToQueryString(data), {
+                  headers: {
+                    'Content-Type': 'application/x-www-form-urlencoded'
+                  }
+                });
 
-var getSharingRulesForPhotosAlbum = function getSharingRulesForPhotosAlbum(document, sharingType) {
-  var _id = document._id,
-      _type = document._type;
-  return [_objectSpread({
-    title: 'collection',
-    doctype: _type,
-    values: [_id]
-  }, getSharingPolicyForAlbum(sharingType)), _objectSpread({
-    title: 'items',
-    doctype: 'io.cozy.files',
-    values: ["".concat(_type, "/").concat(_id)],
-    selector: 'referenced_by'
-  }, getSharingPolicyForReferencedFiles(sharingType))];
-};
-/**
- * Compute the sharing policy for a ReferencedFile based on its sharing type
- *
- * @param  {SharingType} sharingType - The type of the sharing
- *
- * @returns {SharingPolicy} The sharing policy for the ReferencedFile
- */
+              case 7:
+                result = _context5.sent;
+                return _context5.abrupt("return", new _AccessToken.default(result));
 
+              case 9:
+              case "end":
+                return _context5.stop();
+            }
+          }
+        }, _callee5, this);
+      }));
 
-var getSharingPolicyForReferencedFiles = function getSharingPolicyForReferencedFiles(sharingType) {
-  return sharingType === 'two-way' ? {
-    add: 'sync',
-    update: 'sync',
-    remove: 'sync'
-  } : {
-    add: 'push',
-    update: 'none',
-    remove: 'push'
-  };
-};
-/**
- * Compute the sharing policy for an Album based on its sharing type
- *
- * @param  {SharingType} sharingType - The type of the sharing
- *
- * @returns {Array<Rule>=} The sharing policy for the Album
- */
+      function fetchAccessToken(_x2, _x3, _x4, _x5) {
+        return _fetchAccessToken.apply(this, arguments);
+      }
 
+      return fetchAccessToken;
+    }()
+    /**
+     * Used by the flagship application in order to create a token for the konnector with the given slug.
+     * This token can then be used by the client-side konnector to make requests to cozy-stack.
+     * The flagship app will need to use its own access token to request the konnector token.
+     *
+     * @param {string} slug - The slug of the konnector
+     * @returns {Promise<string>} - A promise that resolves with a new token
+     */
 
-var getSharingPolicyForAlbum = function getSharingPolicyForAlbum(sharingType) {
-  if (!sharingType) return {
-    update: 'sync',
-    remove: 'revoke'
-  };
-  return sharingType === 'two-way' ? {
-    update: 'sync',
-    remove: 'revoke'
-  } : {
-    update: 'push',
-    remove: 'revoke'
-  };
-};
-/**
- * Compute the rules that define how to share a File. See https://docs.cozy.io/en/cozy-stack/sharing-design/#description-of-a-sharing
- *
- * @param {Sharing} document - The document to share. Should have and _id and a name
- * @param  {SharingType} sharingType - The type of the sharing
- *
- * @returns {Array<Rule>=} The rules that define how to share a File
- */
+  }, {
+    key: "fetchKonnectorToken",
+    value: function () {
+      var _fetchKonnectorToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(slug) {
+        return _regenerator.default.wrap(function _callee6$(_context6) {
+          while (1) {
+            switch (_context6.prev = _context6.next) {
+              case 0:
+                _context6.prev = 0;
+                _context6.next = 3;
+                return this.fetchJSON('POST', "/auth/tokens/konnectors/".concat(slug));
 
+              case 3:
+                return _context6.abrupt("return", _context6.sent);
 
-var getSharingRulesForFile = function getSharingRulesForFile(document, sharingType) {
-  var _id = document._id,
-      name = document.name;
-  return [_objectSpread({
-    title: name,
-    doctype: 'io.cozy.files',
-    values: [_id]
-  }, getSharingPolicyForFile(document, sharingType))];
-};
-/**
- * Compute the sharing policy for a File based on its sharing type
- *
- * @param {Sharing} document - The document to share. Should have and _id and a name
- * @param {SharingType} sharingType - The type of the sharing
- *
- * @returns {SharingPolicy} The sharing policy for the File
- */
+              case 6:
+                _context6.prev = 6;
+                _context6.t0 = _context6["catch"](0);
+                throw new Error("oAuthClient.fetchKonnectorToken(): Could not create a token for the konnector with slug \"".concat(slug, "\". \n\n").concat(_context6.t0));
 
+              case 9:
+              case "end":
+                return _context6.stop();
+            }
+          }
+        }, _callee6, this, [[0, 6]]);
+      }));
 
-var getSharingPolicyForFile = function getSharingPolicyForFile(document, sharingType) {
-  if ((0, _FileCollection.isDirectory)(document)) {
-    if (!sharingType) return {
-      add: 'sync',
-      update: 'sync',
-      remove: 'sync'
-    };
-    return sharingType === 'two-way' ? {
-      add: 'sync',
-      update: 'sync',
-      remove: 'sync'
-    } : {
-      add: 'push',
-      update: 'push',
-      remove: 'push'
-    };
-  }
+      function fetchKonnectorToken(_x6) {
+        return _fetchKonnectorToken.apply(this, arguments);
+      }
 
-  if (!sharingType) return {
-    update: 'sync',
-    remove: 'revoke'
-  };
-  return sharingType === 'two-way' ? {
-    update: 'sync',
-    remove: 'revoke'
-  } : {
-    update: 'push',
-    remove: 'revoke'
-  };
-};
-/**
- * Compute the rules that define how to share an Organization. See https://docs.cozy.io/en/cozy-stack/sharing-design/#description-of-a-sharing
- *
- * @param {Sharing} document The document to share. Should have and _id and a name
- *
- * @returns {Array<Rule>=} The rules that define how to share an Organization
- */
+      return fetchKonnectorToken;
+    }()
+    /**
+     * @typedef SessionCodeRes
+     * @property {string} session_code The value of the session code
+     */
 
+    /**
+     * Fetches a new session code. Only usable by the Flagship application
+     *
+     * @throws {NotRegisteredException} When the client isn't certified to be the Flagship application
+     * @returns {Promise<SessionCodeRes>} A promise that resolves with a new session_code
+     */
 
-var getSharingRulesForOrganizations = function getSharingRulesForOrganizations(document) {
-  var _id = document._id,
-      name = document.name;
-  var sharingRules = [{
-    title: name,
-    doctype: BITWARDEN_ORGANIZATIONS_DOCTYPE,
-    values: [_id],
-    add: 'sync',
-    update: 'sync',
-    remove: 'revoke'
   }, {
-    title: 'Ciphers',
-    doctype: BITWARDEN_CIPHERS_DOCTYPE,
-    values: [_id],
-    add: 'sync',
-    update: 'sync',
-    remove: 'sync',
-    selector: 'organization_id'
-  }];
-  return sharingRules;
-};
-/**
- * Compute the RelationshipItem that can be referenced as a sharing recipient
- *
- * @param {Recipient} item The recipient of a sharing
- *
- * @returns {RelationshipItem} The RelationshipItem that can be referenced as a sharing recipient
- */
+    key: "fetchSessionCode",
+    value: function () {
+      var _fetchSessionCode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
+        return _regenerator.default.wrap(function _callee7$(_context7) {
+          while (1) {
+            switch (_context7.prev = _context7.next) {
+              case 0:
+                return _context7.abrupt("return", this.fetchJSON('POST', '/auth/session_code'));
 
+              case 1:
+              case "end":
+                return _context7.stop();
+            }
+          }
+        }, _callee7, this);
+      }));
 
-var toRelationshipItem = function toRelationshipItem(item) {
-  return {
-    id: item._id,
-    type: item._type
-  };
-};
+      function fetchSessionCode() {
+        return _fetchSessionCode.apply(this, arguments);
+      }
 
-var _default = SharingCollection;
-exports.default = _default;
+      return fetchSessionCode;
+    }()
+    /**
+     * Fetches a new session code. Only usable by the Flagship application
+     *
+     * @throws {NotRegisteredException} When the client isn't certified to be the Flagship application
+     * @returns {Promise<SessionCodeRes>} A promise that resolves with a new session_code
+     */
 
-/***/ }),
-/* 605 */
-/***/ (function(module, exports, __webpack_require__) {
+  }, {
+    key: "fetchSessionCodeWithPassword",
+    value: function () {
+      var _fetchSessionCodeWithPassword = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(_ref3) {
+        var passwordHash, _ref3$twoFactorToken, twoFactorToken, _ref3$twoFactorPassco, twoFactorPasscode;
 
-"use strict";
+        return _regenerator.default.wrap(function _callee8$(_context8) {
+          while (1) {
+            switch (_context8.prev = _context8.next) {
+              case 0:
+                passwordHash = _ref3.passwordHash, _ref3$twoFactorToken = _ref3.twoFactorToken, twoFactorToken = _ref3$twoFactorToken === void 0 ? undefined : _ref3$twoFactorToken, _ref3$twoFactorPassco = _ref3.twoFactorPasscode, twoFactorPasscode = _ref3$twoFactorPassco === void 0 ? undefined : _ref3$twoFactorPassco;
+                return _context8.abrupt("return", this.fetchJSON('POST', '/auth/session_code', {
+                  passphrase: passwordHash,
+                  two_factor_token: twoFactorToken,
+                  two_factor_passcode: twoFactorPasscode
+                }));
 
+              case 2:
+              case "end":
+                return _context8.stop();
+            }
+          }
+        }, _callee8, this);
+      }));
 
-var _interopRequireWildcard = __webpack_require__(277);
+      function fetchSessionCodeWithPassword(_x7) {
+        return _fetchSessionCodeWithPassword.apply(this, arguments);
+      }
 
-var _interopRequireDefault = __webpack_require__(1);
+      return fetchSessionCodeWithPassword;
+    }()
+    /**
+     * @typedef AccessTokenRes
+     * @property {string} access_token The OAuth access token
+     * @property {string} refresh_token The OAuth refresh token
+     * @property {string} token_type The OAuth token type
+     * @property {string} scope The OAuth scope
+     */
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = exports.getPermissionsFor = void 0;
+    /**
+     * @typedef TwoFactorNeededRes
+     * @property {string} two_factor_token The 2FA token
+     */
 
-var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
+    /**
+     * Get OAuth access and register tokens without having to make OAuth dance
+     *
+     * This endpoint returns registration tokens only from a Flagship app,
+     * otherwise it returns a session_code that should be used in an OAuth dance
+     *
+     * More info: https://docs.cozy.io/en/cozy-stack/flagship/
+     * More info: https://docs.cozy.io/en/cozy-stack/auth/#post-authloginflagship
+     *
+     * @returns {Promise<AccessTokenRes|TwoFactorNeededRes|SessionCodeRes>} A promise that resolves with an access token, a session_code or a 2FA code
+     */
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+  }, {
+    key: "loginFlagship",
+    value: function () {
+      var _loginFlagship = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(_ref4) {
+        var passwordHash, _ref4$twoFactorToken, twoFactorToken, _ref4$twoFactorPassco, twoFactorPasscode;
 
-var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(291));
+        return _regenerator.default.wrap(function _callee9$(_context9) {
+          while (1) {
+            switch (_context9.prev = _context9.next) {
+              case 0:
+                passwordHash = _ref4.passwordHash, _ref4$twoFactorToken = _ref4.twoFactorToken, twoFactorToken = _ref4$twoFactorToken === void 0 ? undefined : _ref4$twoFactorToken, _ref4$twoFactorPassco = _ref4.twoFactorPasscode, twoFactorPasscode = _ref4$twoFactorPassco === void 0 ? undefined : _ref4$twoFactorPassco;
+                return _context9.abrupt("return", this.fetchJSON('POST', '/auth/login/flagship', {
+                  client_id: this.oauthOptions.clientID,
+                  client_secret: this.oauthOptions.clientSecret,
+                  passphrase: passwordHash,
+                  two_factor_token: twoFactorToken,
+                  two_factor_passcode: twoFactorPasscode
+                }));
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+              case 2:
+              case "end":
+                return _context9.stop();
+            }
+          }
+        }, _callee9, this);
+      }));
 
-var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
+      function loginFlagship(_x8) {
+        return _loginFlagship.apply(this, arguments);
+      }
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+      return loginFlagship;
+    }()
+    /**
+     * Retrieves a new access token by refreshing the currently used token.
+     *
+     * @throws {NotRegisteredException} When the client doesn't have it's registration information
+     * @throws {Error} The client should already have an access token to use this function
+     * @returns {Promise} A promise that resolves with a new AccessToken object
+     */
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+  }, {
+    key: "refreshToken",
+    value: function () {
+      var _refreshToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() {
+        var data, result, newToken, revoked;
+        return _regenerator.default.wrap(function _callee10$(_context10) {
+          while (1) {
+            switch (_context10.prev = _context10.next) {
+              case 0:
+                if (this.isRegistered()) {
+                  _context10.next = 2;
+                  break;
+                }
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+                throw new NotRegisteredException();
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+              case 2:
+                if (this.token) {
+                  _context10.next = 4;
+                  break;
+                }
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+                throw new Error('No token to refresh');
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+              case 4:
+                data = {
+                  grant_type: 'refresh_token',
+                  refresh_token: this.token.refreshToken,
+                  client_id: this.oauthOptions.clientID,
+                  client_secret: this.oauthOptions.clientSecret
+                };
+                _context10.prev = 5;
+                _context10.next = 8;
+                return this.fetchJSONWithCurrentToken('POST', '/auth/access_token', this.dataToQueryString(data), {
+                  headers: {
+                    'Content-Type': 'application/x-www-form-urlencoded'
+                  }
+                });
 
-var _DocumentCollection2 = _interopRequireWildcard(__webpack_require__(491));
+              case 8:
+                result = _context10.sent;
+                newToken = new _AccessToken.default(_objectSpread({
+                  refresh_token: this.token.refreshToken
+                }, result));
+                this.setToken(newToken);
 
-var _FileCollection = __webpack_require__(590);
+                if (this.onTokenRefresh && typeof this.onTokenRefresh === 'function') {
+                  this.onTokenRefresh(newToken);
+                }
 
-var _utils = __webpack_require__(521);
+                return _context10.abrupt("return", newToken);
 
-var _logger = _interopRequireDefault(__webpack_require__(587));
+              case 15:
+                _context10.prev = 15;
+                _context10.t0 = _context10["catch"](5);
 
-function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
+                if (!this.isRevocationError(_context10.t0)) {
+                  _context10.next = 21;
+                  break;
+                }
 
-function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+                this.onRevocationChange(true);
 
-function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+                _logger.default.warn('Client has been revoked. Please authenticate again.');
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+                throw _context10.t0;
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+              case 21:
+                if (!(_errors.default.EXPIRED_TOKEN.test(_context10.t0.message) || _errors.default.INVALID_TOKEN.test(_context10.t0.message) || _errors.default.INVALID_TOKEN_ALT.test(_context10.t0.message))) {
+                  _context10.next = 28;
+                  break;
+                }
 
-function _templateObject3() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/permissions/doctype/", "/shared-by-link"]);
+                _context10.next = 24;
+                return this.checkForRevocation();
 
-  _templateObject3 = function _templateObject3() {
-    return data;
-  };
+              case 24:
+                revoked = _context10.sent;
 
-  return data;
-}
+                if (!revoked) {
+                  _context10.next = 28;
+                  break;
+                }
 
-function _templateObject2() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/permissions/", ""]);
+                _logger.default.warn('Client has been revoked. Please authenticate again.');
 
-  _templateObject2 = function _templateObject2() {
-    return data;
-  };
+                throw _context10.t0;
 
-  return data;
-}
+              case 28:
+                throw _context10.t0;
 
-function _templateObject() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/permissions/", ""]);
+              case 29:
+              case "end":
+                return _context10.stop();
+            }
+          }
+        }, _callee10, this, [[5, 15]]);
+      }));
 
-  _templateObject = function _templateObject() {
-    return data;
-  };
-
-  return data;
-}
-
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
-
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
-
-var normalizePermission = function normalizePermission(perm) {
-  return (0, _DocumentCollection2.normalizeDoc)(perm, 'io.cozy.permissions');
-};
-/**
- * Implements `DocumentCollection` API along with specific methods for `io.cozy.permissions`.
- */
-
-
-var PermissionCollection = /*#__PURE__*/function (_DocumentCollection) {
-  (0, _inherits2.default)(PermissionCollection, _DocumentCollection);
-
-  var _super = _createSuper(PermissionCollection);
-
-  function PermissionCollection() {
-    (0, _classCallCheck2.default)(this, PermissionCollection);
-    return _super.apply(this, arguments);
-  }
-
-  (0, _createClass2.default)(PermissionCollection, [{
-    key: "get",
-    value: function () {
-      var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(id) {
-        var resp;
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                _context.next = 2;
-                return this.stackClient.fetchJSON('GET', (0, _utils.uri)(_templateObject(), id));
-
-              case 2:
-                resp = _context.sent;
-                return _context.abrupt("return", {
-                  data: normalizePermission(resp.data)
-                });
-
-              case 4:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee, this);
-      }));
-
-      function get(_x) {
-        return _get.apply(this, arguments);
+      function refreshToken() {
+        return _refreshToken.apply(this, arguments);
       }
 
-      return get;
+      return refreshToken;
     }()
+  }, {
+    key: "exchangeOAuthSecret",
+    value: function exchangeOAuthSecret(uri, secret) {
+      return this.fetchJSON('POST', uri + '/auth/secret_exchange', {
+        secret: secret
+      });
+    }
     /**
-     * Create a new set of permissions
-     * It can also associates one or more codes to it, via the codes parameter
-     *
-     * @param {object} permission - permission to create
-     * @param {string} permission.codes A comma separed list of values (defaulted to code)
-     * @param {string} permission.ttl Make the codes expire after a delay (bigduration format)
-     * @param {boolean} permission.tiny If set to true then the generated shortcode will be 6 digits
-     * Cozy-Stack has a few conditions to be able to use this tiny shortcode ATM you have to specifiy
-     * a ttl < 1h, but it can change.
-     * see https://docs.cozy.io/en/cozy-stack/permissions/#post-permissions for exact informations
-     *
-     * bigduration format: https://github.com/justincampbell/bigduration/blob/master/README.md
-     * @see https://docs.cozy.io/en/cozy-stack/permissions/#post-permissions
+     * Updates the client's stored token
      *
+     * @param {string} token = null The new token to use — can be a string, a json object or an AccessToken instance.
      */
 
   }, {
-    key: "create",
-    value: function () {
-      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(_ref) {
-        var _id, _type, _ref$codes, codes, ttl, tiny, attributes, searchParams, resp;
-
-        return _regenerator.default.wrap(function _callee2$(_context2) {
-          while (1) {
-            switch (_context2.prev = _context2.next) {
-              case 0:
-                _id = _ref._id, _type = _ref._type, _ref$codes = _ref.codes, codes = _ref$codes === void 0 ? 'code' : _ref$codes, ttl = _ref.ttl, tiny = _ref.tiny, attributes = (0, _objectWithoutProperties2.default)(_ref, ["_id", "_type", "codes", "ttl", "tiny"]);
-                searchParams = new URLSearchParams();
-                searchParams.append('codes', codes);
-                if (ttl) searchParams.append('ttl', ttl);
-                if (tiny) searchParams.append('tiny', true);
-                _context2.next = 7;
-                return this.stackClient.fetchJSON('POST', "/permissions?".concat(searchParams), {
-                  data: {
-                    type: 'io.cozy.permissions',
-                    attributes: attributes
-                  }
-                });
-
-              case 7:
-                resp = _context2.sent;
-                return _context2.abrupt("return", {
-                  data: normalizePermission(resp.data)
-                });
-
-              case 9:
-              case "end":
-                return _context2.stop();
-            }
-          }
-        }, _callee2, this);
-      }));
-
-      function create(_x2) {
-        return _create.apply(this, arguments);
+    key: "setToken",
+    value: function setToken(token) {
+      if (token) {
+        this.token = token instanceof _AccessToken.default ? token : new _AccessToken.default(token);
+      } else {
+        this.token = null;
       }
-
-      return create;
-    }()
+    }
+  }, {
+    key: "setCredentials",
+    value: function setCredentials(token) {
+      (0, _logDeprecate.default)('setCredentials is deprecated, please replace by setToken');
+      return this.setToken(token);
+    }
     /**
-     * Adds a permission to the given document. Document type must be
-     * `io.cozy.apps`, `io.cozy.konnectors` or `io.cozy.permissions`
-     *
-     * @param  {object}  document - Document which receives the permission
-     * @param  {object}  permission - Describes the permission
-     * @returns {Promise}
+     * Updates the OAuth informations
      *
-     * @example
-     * ```
-     * const permissions = await client
-     *   .collection('io.cozy.permissions')
-     *   .add(konnector, {
-     *     folder: {
-     *       type: 'io.cozy.files',
-     *       verbs: ['GET', 'PUT'],
-     *       values: [`io.cozy.files.bc57b60eb2954537b0dcdc6ebd8e9d23`]
-     *     }
-     *  })
-     * ```
+     * @param {object} options Map of OAuth options
      */
 
   }, {
-    key: "add",
-    value: function () {
-      var _add = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(document, permission) {
-        var endpoint, resp;
-        return _regenerator.default.wrap(function _callee3$(_context3) {
-          while (1) {
-            switch (_context3.prev = _context3.next) {
-              case 0:
-                _context3.t0 = document._type;
-                _context3.next = _context3.t0 === 'io.cozy.apps' ? 3 : _context3.t0 === 'io.cozy.konnectors' ? 5 : _context3.t0 === 'io.cozy.permissions' ? 7 : 9;
-                break;
-
-              case 3:
-                endpoint = "/permissions/apps/".concat(document.slug);
-                return _context3.abrupt("break", 10);
-
-              case 5:
-                endpoint = "/permissions/konnectors/".concat(document.slug);
-                return _context3.abrupt("break", 10);
-
-              case 7:
-                endpoint = "/permissions/".concat(document._id);
-                return _context3.abrupt("break", 10);
-
-              case 9:
-                throw new Error('Permissions can only be added on existing permissions, apps and konnectors.');
-
-              case 10:
-                _context3.next = 12;
-                return this.stackClient.fetchJSON('PATCH', endpoint, {
-                  data: {
-                    type: 'io.cozy.permissions',
-                    attributes: {
-                      permissions: permission
-                    }
-                  }
-                });
-
-              case 12:
-                resp = _context3.sent;
-                return _context3.abrupt("return", {
-                  data: normalizePermission(resp.data)
-                });
-
-              case 14:
-              case "end":
-                return _context3.stop();
-            }
-          }
-        }, _callee3, this);
-      }));
-
-      function add(_x3, _x4) {
-        return _add.apply(this, arguments);
-      }
-
-      return add;
-    }()
-  }, {
-    key: "destroy",
-    value: function destroy(permission) {
-      return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject2(), permission.id));
+    key: "setOAuthOptions",
+    value: function setOAuthOptions(options) {
+      this.oauthOptions = this.camelCaseOAuthData(options);
     }
   }, {
-    key: "findLinksByDoctype",
-    value: function () {
-      var _findLinksByDoctype = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(doctype) {
-        var resp;
-        return _regenerator.default.wrap(function _callee4$(_context4) {
-          while (1) {
-            switch (_context4.prev = _context4.next) {
-              case 0:
-                _context4.next = 2;
-                return this.stackClient.fetchJSON('GET', (0, _utils.uri)(_templateObject3(), doctype));
-
-              case 2:
-                resp = _context4.sent;
-                return _context4.abrupt("return", _objectSpread(_objectSpread({}, resp), {}, {
-                  data: resp.data.map(normalizePermission)
-                }));
-
-              case 4:
-              case "end":
-                return _context4.stop();
-            }
-          }
-        }, _callee4, this);
-      }));
-
-      function findLinksByDoctype(_x5) {
-        return _findLinksByDoctype.apply(this, arguments);
-      }
+    key: "resetClientId",
+    value: function resetClientId() {
+      this.oauthOptions.clientID = '';
+    }
+    /**
+     * Reset the current OAuth client
+     */
 
-      return findLinksByDoctype;
-    }()
+  }, {
+    key: "resetClient",
+    value: function resetClient() {
+      this.resetClientId();
+      this.setUri(null);
+      this.setToken(null);
+    }
     /**
+     * Turns the client's registration access token into a header suitable for HTTP requests. Used in some queries to manipulate the client on the server side.
      *
-     * @deprecated
+     * @returns {string}
+     * @private
      */
 
   }, {
-    key: "findApps",
-    value: function () {
-      var _findApps = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
-        var resp;
-        return _regenerator.default.wrap(function _callee5$(_context5) {
-          while (1) {
-            switch (_context5.prev = _context5.next) {
-              case 0:
-                _logger.default.warn("PermissionCollection.findApps will be removed in next version of cozy-client. \n\n      You can use AppCollection.all() instead \n\n      or even better client.query(Q('io.cozy.apps'), {as: 'io.cozy.apps'})");
-
-                _context5.next = 3;
-                return this.stackClient.fetchJSON('GET', '/apps/');
-
-              case 3:
-                resp = _context5.sent;
-                return _context5.abrupt("return", _objectSpread(_objectSpread({}, resp), {}, {
-                  data: resp.data.map(function (a) {
-                    return _objectSpread({
-                      _id: a.id
-                    }, a);
-                  })
-                }));
-
-              case 5:
-              case "end":
-                return _context5.stop();
-            }
-          }
-        }, _callee5, this);
-      }));
-
-      function findApps() {
-        return _findApps.apply(this, arguments);
+    key: "registrationAccessTokenToAuthHeader",
+    value: function registrationAccessTokenToAuthHeader() {
+      if (!this.oauthOptions.registrationAccessToken) {
+        throw new Error('No registration access token');
       }
 
-      return findApps;
-    }()
+      return 'Bearer ' + this.oauthOptions.registrationAccessToken;
+    }
     /**
-     * Create a share link
+     * This method should be used in flagship app onboarding process to finalize the
+     * cozy creation by setting the user password into the cozy-stack
      *
-     * @param {{_id, _type}} document - cozy document
-     * @param {object} options - options
-     * @param {string[]} options.verbs - explicit permissions to use
+     * More info: https://docs.cozy.io/en/cozy-stack/settings/#post-settingspassphraseflagship
+     *
+     * @param {object} params - parameters needed to set passphrase
+     * @param {string} params.registerToken - registration token provided by the onboarding link
+     * @param {string} params.passwordHash - hash of the master password
+     * @param {string} params.hint - hint for the master password
+     * @param {string} params.key - key (crypted) used for the vault encryption
+     * @param {string} params.publicKey - public key used for sharing ciphers from the vault
+     * @param {string} params.privateKey - private key (crypted) used for sharing ciphers from the vault
+     * @param {string} params.iterations - number of KDF iterations applied when hashing the master password
+     * @returns {object} token - The OAauth token
      */
 
   }, {
-    key: "createSharingLink",
-    value: function () {
-      var _createSharingLink = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(document) {
-        var options,
-            verbs,
-            resp,
-            _args6 = arguments;
-        return _regenerator.default.wrap(function _callee6$(_context6) {
-          while (1) {
-            switch (_context6.prev = _context6.next) {
-              case 0:
-                options = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : {};
-                verbs = options.verbs;
-                _context6.next = 4;
-                return this.stackClient.fetchJSON('POST', "/permissions?codes=email", {
-                  data: {
-                    type: 'io.cozy.permissions',
-                    attributes: {
-                      permissions: getPermissionsFor(document, true, verbs ? {
-                        verbs: verbs
-                      } : {})
-                    }
-                  }
-                });
-
-              case 4:
-                resp = _context6.sent;
-                return _context6.abrupt("return", {
-                  data: normalizePermission(resp.data)
-                });
-
-              case 6:
-              case "end":
-                return _context6.stop();
-            }
-          }
-        }, _callee6, this);
-      }));
-
-      function createSharingLink(_x6) {
-        return _createSharingLink.apply(this, arguments);
-      }
-
-      return createSharingLink;
-    }()
+    key: "setPassphraseFlagship",
+    value: function setPassphraseFlagship(_ref5) {
+      var registerToken = _ref5.registerToken,
+          passwordHash = _ref5.passwordHash,
+          hint = _ref5.hint,
+          key = _ref5.key,
+          publicKey = _ref5.publicKey,
+          privateKey = _ref5.privateKey,
+          iterations = _ref5.iterations;
+      return this.fetchJSON('POST', '/settings/passphrase/flagship', {
+        register_token: registerToken,
+        passphrase: passwordHash,
+        hint: hint,
+        key: key,
+        public_key: publicKey,
+        private_key: privateKey,
+        iterations: iterations,
+        client_id: this.oauthOptions.clientID,
+        client_secret: this.oauthOptions.clientSecret
+      }, {
+        // TODO: faut il mettre le header?
+        headers: {
+          Authorization: this.registrationAccessTokenToAuthHeader()
+        }
+      });
+    }
     /**
-     * Follow the next link to fetch the next permissions
+     * Check if the OAuth client's has been revoked.
+     * If this is the case, call the onRevocationChange callback
      *
-     * @param {object} permissions JSON-API based permissions document
+     * @async
+     * @returns {Promise<boolean>} A Promise that resolves to `false` if client is still valid, or `true` if it has been revoked.
      */
 
   }, {
-    key: "fetchPermissionsByLink",
+    key: "checkForRevocation",
     value: function () {
-      var _fetchPermissionsByLink = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(permissions) {
-        var resp;
-        return _regenerator.default.wrap(function _callee7$(_context7) {
+      var _checkForRevocation = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {
+        return _regenerator.default.wrap(function _callee11$(_context11) {
           while (1) {
-            switch (_context7.prev = _context7.next) {
+            switch (_context11.prev = _context11.next) {
               case 0:
-                if (!(permissions.links && permissions.links.next)) {
-                  _context7.next = 5;
+                _context11.prev = 0;
+                _context11.next = 3;
+                return this.fetchInformation();
+
+              case 3:
+                return _context11.abrupt("return", false);
+
+              case 6:
+                _context11.prev = 6;
+                _context11.t0 = _context11["catch"](0);
+
+                if (!this.isRevocationError(_context11.t0)) {
+                  _context11.next = 11;
                   break;
                 }
 
-                _context7.next = 3;
-                return this.stackClient.fetchJSON('GET', permissions.links.next);
+                this.onRevocationChange(true);
+                return _context11.abrupt("return", true);
 
-              case 3:
-                resp = _context7.sent;
-                return _context7.abrupt("return", _objectSpread(_objectSpread({}, resp), {}, {
-                  data: resp.data.map(normalizePermission)
-                }));
+              case 11:
+                return _context11.abrupt("return", false);
 
-              case 5:
+              case 12:
               case "end":
-                return _context7.stop();
+                return _context11.stop();
             }
           }
-        }, _callee7, this);
+        }, _callee11, this, [[0, 6]]);
       }));
 
-      function fetchPermissionsByLink(_x7) {
-        return _fetchPermissionsByLink.apply(this, arguments);
+      function checkForRevocation() {
+        return _checkForRevocation.apply(this, arguments);
       }
 
-      return fetchPermissionsByLink;
+      return checkForRevocation;
     }()
-    /**
-     *
-     * @param {object} document Cozy doc
-     * @returns {object} with all the permissions
-     */
+  }]);
+  return OAuthClient;
+}(_CozyStackClient2.default);
 
-  }, {
-    key: "fetchAllLinks",
-    value: function () {
-      var _fetchAllLinks = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(document) {
-        var allLinks, resp, _allLinks$data;
+var NotRegisteredException = /*#__PURE__*/function (_Error) {
+  (0, _inherits2.default)(NotRegisteredException, _Error);
 
-        return _regenerator.default.wrap(function _callee8$(_context8) {
-          while (1) {
-            switch (_context8.prev = _context8.next) {
-              case 0:
-                _context8.next = 2;
-                return this.findLinksByDoctype(document._type);
+  var _super2 = _createSuper(NotRegisteredException);
 
-              case 2:
-                allLinks = _context8.sent;
-                resp = allLinks;
+  function NotRegisteredException() {
+    var _this2;
 
-              case 4:
-                if (!(resp.links && resp.links.next)) {
-                  _context8.next = 11;
-                  break;
-                }
+    var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Client not registered or missing OAuth information';
+    (0, _classCallCheck2.default)(this, NotRegisteredException);
+    _this2 = _super2.call(this, message);
+    _this2.message = message;
+    _this2.name = 'NotRegisteredException';
+    return _this2;
+  }
 
-                _context8.next = 7;
-                return this.fetchPermissionsByLink(resp);
+  return NotRegisteredException;
+}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
 
-              case 7:
-                resp = _context8.sent;
+var _default = OAuthClient;
+exports.default = _default;
 
-                (_allLinks$data = allLinks.data).push.apply(_allLinks$data, (0, _toConsumableArray2.default)(resp.data));
+/***/ }),
+/* 619 */
+/***/ (function(module, exports, __webpack_require__) {
 
-                _context8.next = 4;
-                break;
+"use strict";
 
-              case 11:
-                return _context8.abrupt("return", allLinks);
 
-              case 12:
-              case "end":
-                return _context8.stop();
-            }
-          }
-        }, _callee8, this);
-      }));
-
-      function fetchAllLinks(_x8) {
-        return _fetchAllLinks.apply(this, arguments);
-      }
-
-      return fetchAllLinks;
-    }()
-    /**
-     * Destroy a sharing link and the related permissions
-     *
-     * @param {object} document - document to revoke sharing link
-     */
-
-  }, {
-    key: "revokeSharingLink",
-    value: function () {
-      var _revokeSharingLink = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(document) {
-        var allLinks, links, _iterator, _step, perm;
-
-        return _regenerator.default.wrap(function _callee9$(_context9) {
-          while (1) {
-            switch (_context9.prev = _context9.next) {
-              case 0:
-                _context9.next = 2;
-                return this.fetchAllLinks(document);
-
-              case 2:
-                allLinks = _context9.sent;
-                links = allLinks.data.filter(function (perm) {
-                  return isPermissionRelatedTo(perm, document);
-                });
-                _iterator = _createForOfIteratorHelper(links);
-                _context9.prev = 5;
-
-                _iterator.s();
-
-              case 7:
-                if ((_step = _iterator.n()).done) {
-                  _context9.next = 13;
-                  break;
-                }
-
-                perm = _step.value;
-                _context9.next = 11;
-                return this.destroy(perm);
-
-              case 11:
-                _context9.next = 7;
-                break;
-
-              case 13:
-                _context9.next = 18;
-                break;
-
-              case 15:
-                _context9.prev = 15;
-                _context9.t0 = _context9["catch"](5);
-
-                _iterator.e(_context9.t0);
-
-              case 18:
-                _context9.prev = 18;
-
-                _iterator.f();
-
-                return _context9.finish(18);
-
-              case 21:
-              case "end":
-                return _context9.stop();
-            }
-          }
-        }, _callee9, this, [[5, 15, 18, 21]]);
-      }));
-
-      function revokeSharingLink(_x9) {
-        return _revokeSharingLink.apply(this, arguments);
-      }
-
-      return revokeSharingLink;
-    }()
-    /**
-     * async getOwnPermissions - deprecated: please use fetchOwnPermissions instead
-     *
-     * @typedef {object} Permission
-     *
-     * @returns {Permission} permission
-     */
-
-  }, {
-    key: "getOwnPermissions",
-    value: function () {
-      var _getOwnPermissions = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() {
-        return _regenerator.default.wrap(function _callee10$(_context10) {
-          while (1) {
-            switch (_context10.prev = _context10.next) {
-              case 0:
-                _logger.default.warn('getOwnPermissions is deprecated, please use fetchOwnPermissions instead');
-
-                return _context10.abrupt("return", this.fetchOwnPermissions());
-
-              case 2:
-              case "end":
-                return _context10.stop();
-            }
-          }
-        }, _callee10, this);
-      }));
-
-      function getOwnPermissions() {
-        return _getOwnPermissions.apply(this, arguments);
-      }
-
-      return getOwnPermissions;
-    }()
-    /**
-     * async fetchOwnPermissions - Fetches permissions
-     *
-     * @typedef {object} Permission
-     *
-     * @returns {Permission} permission
-     */
-
-  }, {
-    key: "fetchOwnPermissions",
-    value: function () {
-      var _fetchOwnPermissions = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {
-        var resp;
-        return _regenerator.default.wrap(function _callee11$(_context11) {
-          while (1) {
-            switch (_context11.prev = _context11.next) {
-              case 0:
-                _context11.next = 2;
-                return this.stackClient.fetchJSON('GET', '/permissions/self');
-
-              case 2:
-                resp = _context11.sent;
-                return _context11.abrupt("return", {
-                  data: normalizePermission(resp.data),
-                  included: resp.included ? resp.included.map(normalizePermission) : []
-                });
-
-              case 4:
-              case "end":
-                return _context11.stop();
-            }
-          }
-        }, _callee11, this);
-      }));
-
-      function fetchOwnPermissions() {
-        return _fetchOwnPermissions.apply(this, arguments);
-      }
-
-      return fetchOwnPermissions;
-    }()
-  }]);
-  return PermissionCollection;
-}(_DocumentCollection2.default);
-/**
- * Build a permission set
- *
- * @param {{_id, _type}} document - cozy document
- * @param {boolean} publicLink - are the permissions for a public link ?
- * @param {object} options - options
- * @param {string[]} options.verbs - explicit permissions to use
- * @returns {object} permissions object that can be sent through /permissions/*
- */
-
-
-var getPermissionsFor = function getPermissionsFor(document) {
-  var publicLink = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
-  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-  var _id = document._id,
-      _type = document._type;
-  var verbs = options.verbs ? options.verbs : publicLink ? ['GET'] : ['ALL']; // TODO: this works for albums, but it needs to be generalized and integrated
-  // with cozy-client ; some sort of doctype "schema" will be needed here
-
-  return (0, _FileCollection.isFile)(document) ? {
-    files: {
-      type: 'io.cozy.files',
-      verbs: verbs,
-      values: [_id]
-    }
-  } : {
-    collection: {
-      type: _type,
-      verbs: verbs,
-      values: [_id]
-    },
-    files: {
-      type: 'io.cozy.files',
-      verbs: verbs,
-      values: ["".concat(_type, "/").concat(_id)],
-      selector: 'referenced_by'
-    }
-  };
-};
-
-exports.getPermissionsFor = getPermissionsFor;
-PermissionCollection.normalizeDoctype = _DocumentCollection2.default.normalizeDoctypeJsonApi;
-
-var isPermissionRelatedTo = function isPermissionRelatedTo(perm, document) {
-  var _id = document._id;
-  return (0, _FileCollection.isFile)(document) ? perm.attributes.permissions.files.values.indexOf(_id) !== -1 : perm.attributes.permissions.collection.values.indexOf(_id) !== -1;
-};
-
-var _default = PermissionCollection;
-exports.default = _default;
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.DOCTYPE_PERMISSIONS = exports.DOCTYPE_FILES = exports.REGISTRATION_ABORT = void 0;
+var REGISTRATION_ABORT = 'REGISTRATION_ABORT';
+exports.REGISTRATION_ABORT = REGISTRATION_ABORT;
+var DOCTYPE_FILES = 'io.cozy.files';
+exports.DOCTYPE_FILES = DOCTYPE_FILES;
+var DOCTYPE_PERMISSIONS = 'io.cozy.permissions';
+exports.DOCTYPE_PERMISSIONS = DOCTYPE_PERMISSIONS;
 
 /***/ }),
-/* 606 */
+/* 620 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _interopRequireWildcard = __webpack_require__(277);
-
 var _interopRequireDefault = __webpack_require__(1);
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.default = exports.normalizeSettings = exports.SETTINGS_DOCTYPE = void 0;
-
-var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
+exports.default = exports.transformBulkDocsResponse = void 0;
 
 var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
+var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(291));
+
 var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__(297));
@@ -97300,21 +92818,17 @@ var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
 var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-var _DocumentCollection2 = _interopRequireWildcard(__webpack_require__(491));
+var _zipWith = _interopRequireDefault(__webpack_require__(621));
 
-var _logger = _interopRequireDefault(__webpack_require__(587));
+var _dsl = __webpack_require__(495);
 
-var _utils = __webpack_require__(521);
+var _CozyLink2 = _interopRequireDefault(__webpack_require__(623));
 
-function _templateObject() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/data/", "/", ""]);
+var _const = __webpack_require__(619);
 
-  _templateObject = function _templateObject() {
-    return data;
-  };
+var _errors = __webpack_require__(624);
 
-  return data;
-}
+var _logger = _interopRequireDefault(__webpack_require__(498));
 
 function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
@@ -97324,838 +92838,604 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
 
 function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-var SETTINGS_DOCTYPE = 'io.cozy.settings';
 /**
- * Normalizing a document for SettingsCollection context
  *
- * @param {object} doc - Document to normalize
- * @returns {object} normalized document
+ * To know if cozy-client should use Document.find()
+ * or Document.all()
+ * Similar to what is done in CozyPouchLink executeQuery()
+ *
+ * @param {QueryDefinition} queryDefinition - QueryDefinition to check
+ * @returns {boolean} If has find options
+ *
+ */
+var hasFindOptions = function hasFindOptions(queryDefinition) {
+  var selector = queryDefinition.selector,
+      partialFilter = queryDefinition.partialFilter,
+      sort = queryDefinition.sort,
+      fields = queryDefinition.fields;
+  if (selector || partialFilter || sort || fields) return true;
+  return false;
+};
+/**
+ * Returns full documents after a bulk update
+ *
+ * @private
+ *
+ * @param  {import("./types").CouchDBBulkResult[]} bulkResponse - Response from bulk docs
+ * @param  {import("./types").CozyClientDocument[]} originalDocuments - Documents that were updated
+ * @returns {{ data: import("./types").CozyClientDocument[] }} - Full documents with updated _id and _rev
  */
 
-exports.SETTINGS_DOCTYPE = SETTINGS_DOCTYPE;
 
-var normalizeSettings = function normalizeSettings(doc) {
-  var normDoc = (0, _DocumentCollection2.normalizeDoc)(doc, SETTINGS_DOCTYPE);
-  return _objectSpread(_objectSpread({}, normDoc), normDoc.attributes);
+var transformBulkDocsResponse = function transformBulkDocsResponse(bulkResponse, originalDocuments) {
+  var updatedDocs = (0, _zipWith.default)(bulkResponse, originalDocuments, function (result, od) {
+    return result.ok ? _objectSpread(_objectSpread({}, od), {}, {
+      _id: result.id,
+      _rev: result.rev
+    }) : od;
+  });
+
+  if (bulkResponse.find(function (x) {
+    return !x.ok;
+  })) {
+    throw new _errors.BulkEditError(bulkResponse, updatedDocs);
+  }
+
+  return {
+    data: updatedDocs
+  };
 };
 /**
- * Implements `DocumentCollection` API to interact with the /settings endpoint of the stack
+ * Transfers queries and mutations to a remote stack
  */
 
 
-exports.normalizeSettings = normalizeSettings;
+exports.transformBulkDocsResponse = transformBulkDocsResponse;
 
-var SettingsCollection = /*#__PURE__*/function (_DocumentCollection) {
-  (0, _inherits2.default)(SettingsCollection, _DocumentCollection);
+var StackLink = /*#__PURE__*/function (_CozyLink) {
+  (0, _inherits2.default)(StackLink, _CozyLink);
 
-  var _super = _createSuper(SettingsCollection);
+  var _super = _createSuper(StackLink);
 
-  function SettingsCollection(stackClient) {
-    (0, _classCallCheck2.default)(this, SettingsCollection);
-    return _super.call(this, SETTINGS_DOCTYPE, stackClient);
-  }
   /**
-   * async get - Calls a route on the /settings API
-   *
-   * @param  {string} id The setting id to call, eg `io.cozy.settings.instance` for `instance` route or `io.cozy.settings.context` for `context`route
-   * @returns {object} The response from the route
+   * @param {object} [options] - Options
+   * @param  {object} [options.stackClient] - A StackClient
+   * @param  {object} [options.client] - A StackClient (deprecated)
    */
+  function StackLink() {
+    var _this;
 
+    var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
+        client = _ref.client,
+        stackClient = _ref.stackClient;
 
-  (0, _createClass2.default)(SettingsCollection, [{
-    key: "get",
-    value: function () {
-      var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(id) {
-        var _resp, path, resp;
+    (0, _classCallCheck2.default)(this, StackLink);
+    _this = _super.call(this);
 
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                if (!(id === 'io.cozy.settings.bitwarden')) {
-                  _context.next = 5;
-                  break;
-                }
+    if (client) {
+      _logger.default.warn('Using options.client is deprecated, prefer options.stackClient');
+    }
 
-                _context.next = 3;
-                return this.stackClient.fetchJSON('GET', '/data/io.cozy.settings/io.cozy.settings.bitwarden');
+    _this.stackClient = stackClient || client;
+    return _this;
+  }
 
-              case 3:
-                _resp = _context.sent;
-                return _context.abrupt("return", {
-                  data: _DocumentCollection2.default.normalizeDoctypeJsonApi(SETTINGS_DOCTYPE)(_resp, _resp)
-                });
+  (0, _createClass2.default)(StackLink, [{
+    key: "registerClient",
+    value: function registerClient(client) {
+      this.stackClient = client.stackClient || client.client;
+    }
+  }, {
+    key: "reset",
+    value: function reset() {
+      this.stackClient = null;
+    }
+  }, {
+    key: "request",
+    value: function request(operation, result, forward) {
+      if (operation.mutationType) {
+        return this.executeMutation(operation, result, forward);
+      }
 
-              case 5:
-                if (id.startsWith('io.cozy.settings.')) {
-                  path = id.substring(17);
-                } else {
-                  _logger.default.warn("Deprecated: in next versions of cozy-client, it will not be possible to query settings with an incomplete id\n\n- Q('io.cozy.settings').getById('instance')\n+ Q('io.cozy.settings').getById('io.cozy.settings.instance')");
+      return this.executeQuery(operation);
+    }
+    /**
+     *
+     * @param {QueryDefinition} query - Query to execute
+     * @returns {Promise<import("./types").ClientResponse>}
+     */
 
-                  path = id;
-                }
+  }, {
+    key: "executeQuery",
+    value: function executeQuery(query) {
+      var doctype = query.doctype,
+          selector = query.selector,
+          id = query.id,
+          ids = query.ids,
+          referenced = query.referenced,
+          options = (0, _objectWithoutProperties2.default)(query, ["doctype", "selector", "id", "ids", "referenced"]);
 
-                _context.next = 8;
-                return this.stackClient.fetchJSON('GET', "/settings/".concat(path));
+      if (!doctype) {
+        _logger.default.warn('Bad query', query);
 
-              case 8:
-                resp = _context.sent;
-                return _context.abrupt("return", {
-                  data: normalizeSettings(_objectSpread({
-                    id: "/settings/".concat(path)
-                  }, resp.data))
-                });
+        throw new Error('No doctype found in a query definition');
+      }
 
-              case 10:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee, this);
-      }));
+      var collection = this.stackClient.collection(doctype);
 
-      function get(_x) {
-        return _get.apply(this, arguments);
+      if (id) {
+        return collection.get(id, query);
       }
 
-      return get;
-    }()
-    /**
-     * Updates a settings document
-     *
-     * @param {object} document - Document to update. Do not forget the _id attribute
-     */
+      if (ids) {
+        return collection.getAll(ids);
+      }
+
+      if (referenced) {
+        return collection.findReferencedBy(referenced, options);
+      }
 
+      if (hasFindOptions(query)) {
+        return collection.find(selector, options);
+      } else {
+        return collection.all(options);
+      }
+    }
   }, {
-    key: "update",
+    key: "executeMutation",
     value: function () {
-      var _update = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(document) {
-        var resp;
-        return _regenerator.default.wrap(function _callee2$(_context2) {
+      var _executeMutation = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(mutation, result, forward) {
+        var mutationType, doc, docs, props, updateAllResp;
+        return _regenerator.default.wrap(function _callee$(_context) {
           while (1) {
-            switch (_context2.prev = _context2.next) {
+            switch (_context.prev = _context.next) {
               case 0:
-                if (!(document._id === 'io.cozy.settings.instance')) {
-                  _context2.next = 6;
-                  break;
-                }
-
-                _context2.next = 3;
-                return this.stackClient.fetchJSON('PUT', '/settings/instance', {
-                  data: document
-                });
-
-              case 3:
-                resp = _context2.sent;
-                _context2.next = 9;
+                mutationType = mutation.mutationType, doc = mutation.document, docs = mutation.documents, props = (0, _objectWithoutProperties2.default)(mutation, ["mutationType", "document", "documents"]);
+                _context.t0 = mutationType;
+                _context.next = _context.t0 === _dsl.MutationTypes.CREATE_DOCUMENT ? 4 : _context.t0 === _dsl.MutationTypes.UPDATE_DOCUMENTS ? 5 : _context.t0 === _dsl.MutationTypes.UPDATE_DOCUMENT ? 9 : _context.t0 === _dsl.MutationTypes.DELETE_DOCUMENT ? 10 : _context.t0 === _dsl.MutationTypes.ADD_REFERENCES_TO ? 11 : _context.t0 === _dsl.MutationTypes.REMOVE_REFERENCES_TO ? 12 : _context.t0 === _dsl.MutationTypes.ADD_REFERENCED_BY ? 13 : _context.t0 === _dsl.MutationTypes.REMOVE_REFERENCED_BY ? 18 : _context.t0 === _dsl.MutationTypes.UPLOAD_FILE ? 23 : 24;
                 break;
 
-              case 6:
-                _context2.next = 8;
-                return this.stackClient.fetchJSON('PUT', (0, _utils.uri)(_templateObject(), this.doctype, document._id), document);
+              case 4:
+                return _context.abrupt("return", this.stackClient.collection(doc._type).create(doc));
 
-              case 8:
-                resp = _context2.sent;
+              case 5:
+                _context.next = 7;
+                return this.stackClient.collection(docs[0]._type).updateAll(docs);
+
+              case 7:
+                updateAllResp = _context.sent;
+                return _context.abrupt("return", transformBulkDocsResponse(updateAllResp, docs));
 
               case 9:
-                return _context2.abrupt("return", {
-                  data: normalizeSettings(resp.data)
-                });
+                return _context.abrupt("return", this.stackClient.collection(doc._type).update(doc));
 
               case 10:
-              case "end":
-                return _context2.stop();
-            }
-          }
-        }, _callee2, this);
-      }));
-
-      function update(_x2) {
-        return _update.apply(this, arguments);
-      }
+                return _context.abrupt("return", this.stackClient.collection(doc._type).destroy(doc));
 
-      return update;
-    }()
-  }]);
-  return SettingsCollection;
-}(_DocumentCollection2.default);
+              case 11:
+                return _context.abrupt("return", this.stackClient.collection(props.referencedDocuments[0]._type).addReferencesTo(doc, props.referencedDocuments));
 
-SettingsCollection.normalizeDoctype = _DocumentCollection2.default.normalizeDoctypeJsonApi;
-var _default = SettingsCollection;
-exports.default = _default;
+              case 12:
+                return _context.abrupt("return", this.stackClient.collection(props.referencedDocuments[0]._type).removeReferencesTo(doc, props.referencedDocuments));
 
-/***/ }),
-/* 607 */
-/***/ (function(module, exports, __webpack_require__) {
+              case 13:
+                if (!(doc._type === _const.DOCTYPE_FILES)) {
+                  _context.next = 17;
+                  break;
+                }
 
-"use strict";
+                return _context.abrupt("return", this.stackClient.collection(_const.DOCTYPE_FILES).addReferencedBy(doc, props.referencedDocuments));
 
+              case 17:
+                throw new Error('The document type should be io.cozy.files');
 
-var _interopRequireDefault = __webpack_require__(1);
+              case 18:
+                if (!(doc._type === _const.DOCTYPE_FILES)) {
+                  _context.next = 22;
+                  break;
+                }
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = exports.NOTES_URL_DOCTYPE = exports.NOTES_DOCTYPE = void 0;
+                return _context.abrupt("return", this.stackClient.collection(_const.DOCTYPE_FILES).removeReferencedBy(doc, props.referencedDocuments));
 
-var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
+              case 22:
+                throw new Error('The document type should be io.cozy.files');
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+              case 23:
+                return _context.abrupt("return", this.stackClient.collection(_const.DOCTYPE_FILES).upload(props.file, props.dirPath));
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+              case 24:
+                return _context.abrupt("return", forward(mutation, result));
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+              case 25:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this);
+      }));
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+      function executeMutation(_x, _x2, _x3) {
+        return _executeMutation.apply(this, arguments);
+      }
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+      return executeMutation;
+    }()
+  }]);
+  return StackLink;
+}(_CozyLink2.default);
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+exports.default = StackLink;
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+/***/ }),
+/* 621 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+var baseRest = __webpack_require__(433),
+    unzipWith = __webpack_require__(622);
 
-var _DocumentCollection2 = _interopRequireDefault(__webpack_require__(491));
+/**
+ * This method is like `_.zip` except that it accepts `iteratee` to specify
+ * how grouped values should be combined. The iteratee is invoked with the
+ * elements of each group: (...group).
+ *
+ * @static
+ * @memberOf _
+ * @since 3.8.0
+ * @category Array
+ * @param {...Array} [arrays] The arrays to process.
+ * @param {Function} [iteratee=_.identity] The function to combine
+ *  grouped values.
+ * @returns {Array} Returns the new array of grouped elements.
+ * @example
+ *
+ * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {
+ *   return a + b + c;
+ * });
+ * // => [111, 222]
+ */
+var zipWith = baseRest(function(arrays) {
+  var length = arrays.length,
+      iteratee = length > 1 ? arrays[length - 1] : undefined;
 
-var _utils = __webpack_require__(521);
+  iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;
+  return unzipWith(arrays, iteratee);
+});
 
-var _NotesSchema = __webpack_require__(608);
+module.exports = zipWith;
 
-function _templateObject2() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/notes/", "/open"]);
 
-  _templateObject2 = function _templateObject2() {
-    return data;
-  };
+/***/ }),
+/* 622 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  return data;
+var apply = __webpack_require__(435),
+    arrayMap = __webpack_require__(409),
+    unzip = __webpack_require__(440);
+
+/**
+ * This method is like `_.unzip` except that it accepts `iteratee` to specify
+ * how regrouped values should be combined. The iteratee is invoked with the
+ * elements of each group: (...group).
+ *
+ * @static
+ * @memberOf _
+ * @since 3.8.0
+ * @category Array
+ * @param {Array} array The array of grouped elements to process.
+ * @param {Function} [iteratee=_.identity] The function to combine
+ *  regrouped values.
+ * @returns {Array} Returns the new array of regrouped elements.
+ * @example
+ *
+ * var zipped = _.zip([1, 2], [10, 20], [100, 200]);
+ * // => [[1, 10, 100], [2, 20, 200]]
+ *
+ * _.unzipWith(zipped, _.add);
+ * // => [3, 30, 300]
+ */
+function unzipWith(array, iteratee) {
+  if (!(array && array.length)) {
+    return [];
+  }
+  var result = unzip(array);
+  if (iteratee == null) {
+    return result;
+  }
+  return arrayMap(result, function(group) {
+    return apply(iteratee, undefined, group);
+  });
 }
 
-function _templateObject() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/files/", ""]);
+module.exports = unzipWith;
 
-  _templateObject = function _templateObject() {
-    return data;
-  };
 
-  return data;
-}
+/***/ }),
+/* 623 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+"use strict";
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+var _interopRequireDefault = __webpack_require__(1);
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.chain = exports.default = void 0;
 
-var NOTES_DOCTYPE = 'io.cozy.notes';
-exports.NOTES_DOCTYPE = NOTES_DOCTYPE;
-var NOTES_URL_DOCTYPE = 'io.cozy.notes.url';
-exports.NOTES_URL_DOCTYPE = NOTES_URL_DOCTYPE;
+var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
 
-var normalizeDoc = _DocumentCollection2.default.normalizeDoctypeJsonApi(NOTES_DOCTYPE);
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-var normalizeNote = function normalizeNote(note) {
-  return _objectSpread(_objectSpread({}, normalizeDoc(note, NOTES_DOCTYPE)), note.attributes);
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+
+var CozyLink = /*#__PURE__*/function () {
+  function CozyLink(requestHandler) {
+    (0, _classCallCheck2.default)(this, CozyLink);
+
+    if (typeof requestHandler === 'function') {
+      this.request = requestHandler;
+    }
+  }
+
+  (0, _createClass2.default)(CozyLink, [{
+    key: "request",
+    value: function request(operation, result, forward) {
+      throw new Error('request is not implemented');
+    }
+  }]);
+  return CozyLink;
+}();
+
+exports.default = CozyLink;
+
+var toLink = function toLink(handler) {
+  return typeof handler === 'function' ? new CozyLink(handler) : handler;
 };
 
-var normalizeNoteUrl = function normalizeNoteUrl(noteUrl) {
-  return _objectSpread(_objectSpread({}, _DocumentCollection2.default.normalizeDoctypeJsonApi(NOTES_URL_DOCTYPE)(noteUrl)), noteUrl.attributes);
+var defaultLinkHandler = function defaultLinkHandler(operation, result) {
+  if (result) return result;else if (operation.execute) return operation.execute();else throw new Error("No link could handle operation ".concat(JSON.stringify(operation)));
 };
-/**
- * Implements `DocumentCollection` API to interact with the /notes endpoint of the stack
- */
 
+var chain = function chain(links) {
+  return [].concat((0, _toConsumableArray2.default)(links), [defaultLinkHandler]).map(toLink).reduce(concat);
+};
 
-var NotesCollection = /*#__PURE__*/function (_DocumentCollection) {
-  (0, _inherits2.default)(NotesCollection, _DocumentCollection);
+exports.chain = chain;
 
-  var _super = _createSuper(NotesCollection);
+var concat = function concat(firstLink, nextLink) {
+  return new CozyLink(function (operation, result, forward) {
+    var nextForward = function nextForward(op, res) {
+      return nextLink.request(op, res, forward);
+    };
 
-  function NotesCollection(stackClient) {
-    (0, _classCallCheck2.default)(this, NotesCollection);
-    return _super.call(this, NOTES_DOCTYPE, stackClient);
-  }
-  /**
-   * Fetches all notes
-   *
-   * @returns {{data, links, meta}} The JSON API conformant response.
-   */
+    return firstLink.request(operation, result, nextForward);
+  });
+};
 
+/***/ }),
+/* 624 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  (0, _createClass2.default)(NotesCollection, [{
-    key: "all",
-    value: function () {
-      var _all = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
-        var resp;
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                _context.next = 2;
-                return this.stackClient.fetchJSON('GET', '/notes');
+"use strict";
 
-              case 2:
-                resp = _context.sent;
-                return _context.abrupt("return", _objectSpread(_objectSpread({}, resp), {}, {
-                  data: resp.data.map(normalizeNote)
-                }));
 
-              case 4:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee, this);
-      }));
+var _interopRequireDefault = __webpack_require__(1);
 
-      function all() {
-        return _all.apply(this, arguments);
-      }
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.BulkEditError = void 0;
 
-      return all;
-    }()
-    /**
-     * Destroys the note on the server
-     *
-     * @param {object} note       The io.cozy.notes document to destroy
-     * @param {string} [note._id] The note's id
-     *
-     * @returns {{ data }} The deleted note
-     */
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-  }, {
-    key: "destroy",
-    value: function () {
-      var _destroy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(_ref) {
-        var _id, resp;
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-        return _regenerator.default.wrap(function _callee2$(_context2) {
-          while (1) {
-            switch (_context2.prev = _context2.next) {
-              case 0:
-                _id = _ref._id;
-                _context2.next = 3;
-                return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject(), _id));
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-              case 3:
-                resp = _context2.sent;
-                return _context2.abrupt("return", {
-                  data: _objectSpread(_objectSpread({}, normalizeNote(resp.data)), {}, {
-                    _deleted: true
-                  })
-                });
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
-              case 5:
-              case "end":
-                return _context2.stop();
-            }
-          }
-        }, _callee2, this);
-      }));
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
-      function destroy(_x) {
-        return _destroy.apply(this, arguments);
-      }
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
-      return destroy;
-    }()
-    /**
-     * Create a note
-     *
-     * @param {object} options - Options
-     * @param {string} [options.dir_id] dir_id where to create the note
-     *
-     * @returns {{data, links, meta}} The JSON API conformant response.
-     */
+var _wrapNativeSuper2 = _interopRequireDefault(__webpack_require__(583));
 
-  }, {
-    key: "create",
-    value: function () {
-      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(_ref2) {
-        var dir_id, resp;
-        return _regenerator.default.wrap(function _callee3$(_context3) {
-          while (1) {
-            switch (_context3.prev = _context3.next) {
-              case 0:
-                dir_id = _ref2.dir_id;
-                _context3.next = 3;
-                return this.stackClient.fetchJSON('POST', '/notes', {
-                  data: {
-                    type: 'io.cozy.notes.documents',
-                    attributes: {
-                      title: '',
-                      schema: (0, _NotesSchema.getDefaultSchema)(),
-                      dir_id: dir_id
-                    }
-                  }
-                });
+var _zipWith = _interopRequireDefault(__webpack_require__(621));
 
-              case 3:
-                resp = _context3.sent;
-                return _context3.abrupt("return", _objectSpread(_objectSpread({}, resp), {}, {
-                  data: normalizeNote(resp.data)
-                }));
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-              case 5:
-              case "end":
-                return _context3.stop();
-            }
-          }
-        }, _callee3, this);
-      }));
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-      function create(_x2) {
-        return _create.apply(this, arguments);
-      }
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
-      return create;
-    }()
-    /**
-     * Returns the details to build the note's url
-     *
-     * @see https://github.com/cozy/cozy-stack/blob/master/docs/notes.md#get-notesidopen
-     *
-     * @param {object} note       The io.cozy.notes document to open
-     * @param {string} [note._id] The note's id
-     *
-     * @returns {{ data }} The note's url details
-     */
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-  }, {
-    key: "fetchURL",
-    value: function () {
-      var _fetchURL = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(_ref3) {
-        var _id, resp;
+var BulkEditError = /*#__PURE__*/function (_Error) {
+  (0, _inherits2.default)(BulkEditError, _Error);
 
-        return _regenerator.default.wrap(function _callee4$(_context4) {
-          while (1) {
-            switch (_context4.prev = _context4.next) {
-              case 0:
-                _id = _ref3._id;
-                _context4.next = 3;
-                return this.stackClient.fetchJSON('GET', (0, _utils.uri)(_templateObject2(), _id));
+  var _super = _createSuper(BulkEditError);
 
-              case 3:
-                resp = _context4.sent;
-                return _context4.abrupt("return", {
-                  data: normalizeNoteUrl(resp.data)
-                });
+  /**
+   * Indicates that a bulk edit has (potentially partially) failed
+   *
+   * @param  {import("./types").CouchDBBulkResult[]} bulkResponse - CouchDB Bulk response
+   * @param  {import("./types").CozyClientDocument[]} updatedDocs - Docs with updated _id and _rev
+   */
+  function BulkEditError(bulkResponse, updatedDocs) {
+    var _this;
 
-              case 5:
-              case "end":
-                return _context4.stop();
-            }
-          }
-        }, _callee4, this);
-      }));
+    (0, _classCallCheck2.default)(this, BulkEditError);
+    _this = _super.call(this, 'Error while bulk saving');
+    _this.name = 'BulkEditError';
+    _this.results = (0, _zipWith.default)(bulkResponse, updatedDocs, function (result, doc) {
+      return _objectSpread(_objectSpread({}, result), {}, {
+        doc: doc
+      });
+    });
+    return _this;
+  }
+  /**
+   * Get documents that have been correctly updated
+   *
+   * @returns {import("./types").CozyClientDocument[]}
+   */
 
-      function fetchURL(_x3) {
-        return _fetchURL.apply(this, arguments);
-      }
 
-      return fetchURL;
-    }()
+  (0, _createClass2.default)(BulkEditError, [{
+    key: "getUpdatedDocuments",
+    value: function getUpdatedDocuments() {
+      return this.results.filter(function (r) {
+        return r.ok;
+      }).map(function (r) {
+        return r.doc;
+      });
+    }
     /**
-     * Returns promise mirror schema for a note
+     * Get bulk errors results
      *
-     * @returns {object} schema
+     * @returns {Array<import("./types").CouchDBBulkResult & { doc: import("./types").CozyClientDocument }>}
      */
 
   }, {
-    key: "getDefaultSchema",
-    value: function getDefaultSchema() {
-      return (0, _NotesSchema.getDefaultSchema)();
+    key: "getErrors",
+    value: function getErrors() {
+      return this.results.filter(function (r) {
+        return !r.ok;
+      });
     }
   }]);
-  return NotesCollection;
-}(_DocumentCollection2.default);
+  return BulkEditError;
+}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
 
-NotesCollection.normalizeDoctype = _DocumentCollection2.default.normalizeDoctypeJsonApi;
-var _default = NotesCollection;
-exports.default = _default;
+exports.BulkEditError = BulkEditError;
 
 /***/ }),
-/* 608 */
+/* 625 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
+var _interopRequireDefault = __webpack_require__(1);
+
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.getDefaultSchema = exports.marks = exports.nodes = void 0;
-// taken from a debug of @atlakit/editor/editor-core/create-editor/create-editor
-// L139 (new Schema({nodes ,marks}))
-// static because the @atlaskit code base requires a real navigator
-// TODO: either find and exclude plugins requiring interaction
-//       or running a JSDOM faking a navigator
-var nodes = [['doc', {
-  content: '(block)+',
-  marks: 'link'
-}], ['paragraph', {
-  content: 'inline*',
-  group: 'block',
-  marks: 'strong code em link strike subsup textColor typeAheadQuery underline',
-  parseDOM: [{
-    tag: 'p'
-  }]
-}], ['text', {
-  group: 'inline'
-}], ['bulletList', {
-  group: 'block',
-  content: 'listItem+',
-  parseDOM: [{
-    tag: 'ul'
-  }]
-}], ['orderedList', {
-  group: 'block',
-  content: 'listItem+',
-  parseDOM: [{
-    tag: 'ol'
-  }]
-}], ['listItem', {
-  content: '(paragraph ) (paragraph | bulletList | orderedList )*',
-  defining: true,
-  parseDOM: [{
-    tag: 'li'
-  }]
-}], ['heading', {
-  attrs: {
-    level: {
-      default: 1
-    }
-  },
-  content: 'inline*',
-  group: 'block',
-  defining: true,
-  parseDOM: [{
-    tag: 'h1',
-    attrs: {
-      level: 1
-    }
-  }, {
-    tag: 'h2',
-    attrs: {
-      level: 2
-    }
-  }, {
-    tag: 'h3',
-    attrs: {
-      level: 3
-    }
-  }, {
-    tag: 'h4',
-    attrs: {
-      level: 4
-    }
-  }, {
-    tag: 'h5',
-    attrs: {
-      level: 5
-    }
-  }, {
-    tag: 'h6',
-    attrs: {
-      level: 6
-    }
-  }]
-}], ['blockquote', {
-  content: 'paragraph+',
-  group: 'block',
-  defining: true,
-  selectable: false,
-  parseDOM: [{
-    tag: 'blockquote'
-  }]
-}], ['rule', {
-  group: 'block',
-  parseDOM: [{
-    tag: 'hr'
-  }]
-}], ['panel', {
-  group: 'block',
-  content: '(paragraph | heading | bulletList | orderedList)+',
-  attrs: {
-    panelType: {
-      default: 'info'
-    }
-  },
-  parseDOM: [{
-    tag: 'div[data-panel-type]'
-  }]
-}], ['confluenceUnsupportedBlock', {
-  group: 'block',
-  attrs: {
-    cxhtml: {
-      default: null
-    }
-  },
-  parseDOM: [{
-    tag: 'div[data-node-type="confluenceUnsupportedBlock"]'
-  }]
-}], ['confluenceUnsupportedInline', {
-  group: 'inline',
-  inline: true,
-  atom: true,
-  attrs: {
-    cxhtml: {
-      default: null
-    }
-  },
-  parseDOM: [{
-    tag: 'div[data-node-type="confluenceUnsupportedInline"]'
-  }]
-}], ['unsupportedBlock', {
-  inline: false,
-  group: 'block',
-  atom: true,
-  selectable: true,
-  attrs: {
-    originalValue: {
-      default: {}
-    }
-  },
-  parseDOM: [{
-    tag: '[data-node-type="unsupportedBlock"]'
-  }]
-}], ['unsupportedInline', {
-  inline: true,
-  group: 'inline',
-  selectable: true,
-  attrs: {
-    originalValue: {
-      default: {}
-    }
-  },
-  parseDOM: [{
-    tag: '[data-node-type="unsupportedInline"]'
-  }]
-}], ['hardBreak', {
-  inline: true,
-  group: 'inline',
-  selectable: false,
-  parseDOM: [{
-    tag: 'br'
-  }]
-}], ['table', {
-  content: 'tableRow+',
-  attrs: {
-    isNumberColumnEnabled: {
-      default: false
-    },
-    layout: {
-      default: 'default'
-    },
-    __autoSize: {
-      default: false
-    }
-  },
-  tableRole: 'table',
-  isolating: true,
-  selectable: false,
-  group: 'block',
-  parseDOM: [{
-    tag: 'table'
-  }]
-}], ['tableHeader', {
-  content: '(paragraph | panel | blockquote | orderedList | bulletList | rule | heading )+',
-  attrs: {
-    colspan: {
-      default: 1
-    },
-    rowspan: {
-      default: 1
-    },
-    colwidth: {
-      default: null
-    },
-    background: {
-      default: null
-    }
-  },
-  tableRole: 'header_cell',
-  isolating: true,
-  marks: '',
-  parseDOM: [{
-    tag: 'th'
-  }]
-}], ['tableRow', {
-  content: '(tableCell | tableHeader)+',
-  tableRole: 'row',
-  parseDOM: [{
-    tag: 'tr'
-  }]
-}], ['tableCell', {
-  content: '(paragraph | panel | blockquote | orderedList | bulletList | rule | heading | unsupportedBlock)+',
-  attrs: {
-    colspan: {
-      default: 1
-    },
-    rowspan: {
-      default: 1
-    },
-    colwidth: {
-      default: null
-    },
-    background: {
-      default: null
-    }
-  },
-  tableRole: 'cell',
-  marks: '',
-  isolating: true,
-  parseDOM: [{
-    tag: '.ak-renderer-table-number-column',
-    ignore: true
-  }, {
-    tag: 'td'
-  }]
-}]];
-exports.nodes = nodes;
-var marks = [['link', {
-  excludes: 'color',
-  group: 'link',
-  attrs: {
-    href: {},
-    __confluenceMetadata: {
-      default: null
-    }
-  },
-  inclusive: false,
-  parseDOM: [{
-    tag: 'a[href]'
-  }]
-}], ['em', {
-  inclusive: true,
-  group: 'fontStyle',
-  parseDOM: [{
-    tag: 'i'
-  }, {
-    tag: 'em'
-  }, {
-    style: 'font-style=italic'
-  }]
-}], ['strong', {
-  inclusive: true,
-  group: 'fontStyle',
-  parseDOM: [{
-    tag: 'strong'
-  }, {
-    tag: 'b'
-  }, {
-    style: 'font-weight'
-  }]
-}], ['textColor', {
-  attrs: {
-    color: {}
-  },
-  inclusive: true,
-  group: 'color',
-  parseDOM: [{
-    style: 'color'
-  }]
-}], ['strike', {
-  inclusive: true,
-  group: 'fontStyle',
-  parseDOM: [{
-    tag: 'strike'
-  }, {
-    tag: 's'
-  }, {
-    tag: 'del'
-  }, {
-    style: 'text-decoration'
-  }]
-}], ['subsup', {
-  inclusive: true,
-  group: 'fontStyle',
-  attrs: {
-    type: {
-      default: 'sub'
-    }
-  },
-  parseDOM: [{
-    tag: 'sub',
-    attrs: {
-      type: 'sub'
-    }
-  }, {
-    tag: 'sup',
-    attrs: {
-      type: 'sup'
-    }
-  }]
-}], ['underline', {
-  inclusive: true,
-  group: 'fontStyle',
-  parseDOM: [{
-    tag: 'u'
-  }, {
-    style: 'text-decoration'
-  }]
-}], ['code', {
-  excludes: 'fontStyle link searchQuery color',
-  inclusive: true,
-  parseDOM: [{
-    tag: 'span.code',
-    preserveWhitespace: true
-  }, {
-    tag: 'code',
-    preserveWhitespace: true
-  }, {
-    tag: 'tt',
-    preserveWhitespace: true
-  }, {
-    tag: 'span',
-    preserveWhitespace: true
-  }]
-}], ['typeAheadQuery', {
-  excludes: 'searchQuery',
-  inclusive: true,
-  group: 'searchQuery',
-  parseDOM: [{
-    tag: 'span[data-type-ahead-query]'
-  }],
-  attrs: {
-    trigger: {
-      default: ''
-    }
+Object.defineProperty(exports, "HasManyFiles", {
+  enumerable: true,
+  get: function get() {
+    return _HasManyFiles.default;
   }
-}]];
-exports.marks = marks;
+});
+Object.defineProperty(exports, "HasMany", {
+  enumerable: true,
+  get: function get() {
+    return _HasMany.default;
+  }
+});
+Object.defineProperty(exports, "HasOne", {
+  enumerable: true,
+  get: function get() {
+    return _HasOne.default;
+  }
+});
+Object.defineProperty(exports, "HasOneInPlace", {
+  enumerable: true,
+  get: function get() {
+    return _HasOneInPlace.default;
+  }
+});
+Object.defineProperty(exports, "HasManyInPlace", {
+  enumerable: true,
+  get: function get() {
+    return _HasManyInPlace.default;
+  }
+});
+Object.defineProperty(exports, "HasManyTriggers", {
+  enumerable: true,
+  get: function get() {
+    return _HasManyTriggers.default;
+  }
+});
+Object.defineProperty(exports, "Association", {
+  enumerable: true,
+  get: function get() {
+    return _Association.default;
+  }
+});
+Object.defineProperty(exports, "resolveClass", {
+  enumerable: true,
+  get: function get() {
+    return _helpers.resolveClass;
+  }
+});
+Object.defineProperty(exports, "create", {
+  enumerable: true,
+  get: function get() {
+    return _helpers.create;
+  }
+});
+Object.defineProperty(exports, "isReferencedBy", {
+  enumerable: true,
+  get: function get() {
+    return _helpers.isReferencedBy;
+  }
+});
+Object.defineProperty(exports, "isReferencedById", {
+  enumerable: true,
+  get: function get() {
+    return _helpers.isReferencedById;
+  }
+});
+Object.defineProperty(exports, "getReferencedBy", {
+  enumerable: true,
+  get: function get() {
+    return _helpers.getReferencedBy;
+  }
+});
+Object.defineProperty(exports, "getReferencedById", {
+  enumerable: true,
+  get: function get() {
+    return _helpers.getReferencedById;
+  }
+});
 
-var getDefaultSchema = function getDefaultSchema() {
-  return {
-    nodes: nodes,
-    marks: marks
-  };
-};
+var _HasManyFiles = _interopRequireDefault(__webpack_require__(626));
 
-exports.getDefaultSchema = getDefaultSchema;
+var _HasMany = _interopRequireDefault(__webpack_require__(656));
+
+var _HasOne = _interopRequireDefault(__webpack_require__(657));
+
+var _HasOneInPlace = _interopRequireDefault(__webpack_require__(659));
+
+var _HasManyInPlace = _interopRequireDefault(__webpack_require__(660));
+
+var _HasManyTriggers = _interopRequireDefault(__webpack_require__(661));
+
+var _Association = _interopRequireDefault(__webpack_require__(655));
+
+var _helpers = __webpack_require__(662);
 
 /***/ }),
-/* 609 */
+/* 626 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _interopRequireWildcard = __webpack_require__(277);
-
 var _interopRequireDefault = __webpack_require__(1);
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.default = exports.OAUTH_CLIENTS_DOCTYPE = void 0;
+exports.default = exports.getFileDatetime = void 0;
 
 var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
+var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
+
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
@@ -98163,1496 +93443,1682 @@ var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
+var _get3 = _interopRequireDefault(__webpack_require__(602));
+
 var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
 var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
 var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
-
-var _get2 = _interopRequireDefault(__webpack_require__(399));
-
-var _DocumentCollection2 = _interopRequireDefault(__webpack_require__(491));
-
-var _utils = __webpack_require__(521);
-
-var querystring = _interopRequireWildcard(__webpack_require__(578));
-
-var _Collection = __webpack_require__(489);
+var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
 
-var _errors = __webpack_require__(582);
+var _get4 = _interopRequireDefault(__webpack_require__(399));
 
-function _templateObject3() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/settings/clients/", ""]);
+var _omit = _interopRequireDefault(__webpack_require__(523));
 
-  _templateObject3 = function _templateObject3() {
-    return data;
-  };
+var _uniq = _interopRequireDefault(__webpack_require__(522));
 
-  return data;
-}
+var _dsl = __webpack_require__(495);
 
-function _templateObject2() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/settings/clients/", ""]);
+var _store = __webpack_require__(627);
 
-  _templateObject2 = function _templateObject2() {
-    return data;
-  };
+var _const = __webpack_require__(619);
 
-  return data;
-}
+var _Association = _interopRequireDefault(__webpack_require__(655));
 
-function _templateObject() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/settings/clients"]);
+var _HasMany2 = _interopRequireDefault(__webpack_require__(656));
 
-  _templateObject = function _templateObject() {
-    return data;
-  };
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-  return data;
-}
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
 function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
 function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+/**
+ * newCursor - Returns a CouchDB view Cursor for cursor-based pagination
+ *
+ * @param {import("../types").ViewKey} key - The CouchDB key of the view which will be requested
+ * @param {import("../types").DocId} startDocId - The first doc _id to return from the view
+ *
+ * @returns {import("../types").CouchDBViewCursor}
+ */
+var newCursor = function newCursor(_ref, startDocId) {
+  var _ref2 = (0, _slicedToArray2.default)(_ref, 3),
+      doctype = _ref2[0],
+      id = _ref2[1],
+      lastDatetime = _ref2[2];
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+  var cursorKey = lastDatetime ? [doctype, id, lastDatetime] : [doctype, id];
+  return [cursorKey, startDocId];
+};
+/**
+ * Get the file datetime
+ *
+ * @param  {import('../types').IOCozyFile} file - io.cozy.files document
+ * @returns {string} The file datetime
+ */
 
-var OAUTH_CLIENTS_DOCTYPE = 'io.cozy.oauth.clients';
-exports.OAUTH_CLIENTS_DOCTYPE = OAUTH_CLIENTS_DOCTYPE;
 
-var normalizeDoc = _DocumentCollection2.default.normalizeDoctypeJsonApi(OAUTH_CLIENTS_DOCTYPE);
+var getFileDatetime = function getFileDatetime(file) {
+  var _file$metadata;
 
-var normalizeOAuthClient = function normalizeOAuthClient(client) {
-  return _objectSpread(_objectSpread({}, normalizeDoc(client, OAUTH_CLIENTS_DOCTYPE)), client.attributes);
+  // Some files do not have any metadata, e.g. bitmap files.
+  return ((_file$metadata = file.metadata) === null || _file$metadata === void 0 ? void 0 : _file$metadata.datetime) || file.created_at;
 };
 /**
- * Implements `DocumentCollection` API to interact with the /settings/clients endpoint of the stack
+ *  This class is only used for photos albums relationships.
+ *  Behind the hood, the queries uses a view returning the files sorted
+ *  by datetime, with a cursor-based pagination.
  */
 
 
-var OAuthClientsCollection = /*#__PURE__*/function (_DocumentCollection) {
-  (0, _inherits2.default)(OAuthClientsCollection, _DocumentCollection);
+exports.getFileDatetime = getFileDatetime;
 
-  var _super = _createSuper(OAuthClientsCollection);
+var HasManyFiles = /*#__PURE__*/function (_HasMany) {
+  (0, _inherits2.default)(HasManyFiles, _HasMany);
 
-  function OAuthClientsCollection(stackClient) {
-    (0, _classCallCheck2.default)(this, OAuthClientsCollection);
-    return _super.call(this, OAUTH_CLIENTS_DOCTYPE, stackClient);
-  }
-  /**
-   * Fetches all OAuth clients
-   *
-   * @param  {object}         options             Query options
-   * @param  {number}         [options.limit]     For pagination, the number of results to return.
-   * @param  {string}         [options.bookmark]  For bookmark-based pagination, the document _id to start from
-   * @param  {Array<string>}  [options.keys]      Ids of specific clients to return (within the current page),
-   *
-   * @returns {object} The JSON API conformant response.
-   */
+  var _super = _createSuper(HasManyFiles);
 
+  function HasManyFiles() {
+    (0, _classCallCheck2.default)(this, HasManyFiles);
+    return _super.apply(this, arguments);
+  }
 
-  (0, _createClass2.default)(OAuthClientsCollection, [{
-    key: "all",
+  (0, _createClass2.default)(HasManyFiles, [{
+    key: "fetchMore",
     value: function () {
-      var _all = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
-        var options,
-            _options$limit,
-            limit,
-            bookmark,
-            keys,
-            params,
-            url,
-            path,
-            resp,
-            nextLink,
-            nextLinkURL,
-            nextBookmark,
-            hasBookmark,
-            data,
-            meta,
-            _args = arguments;
+      var _fetchMore = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
+        var _this = this;
 
-        return _regenerator.default.wrap(function _callee$(_context) {
+        var queryDef, relationships, lastRelationship;
+        return _regenerator.default.wrap(function _callee2$(_context2) {
           while (1) {
-            switch (_context.prev = _context.next) {
+            switch (_context2.prev = _context2.next) {
               case 0:
-                options = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
-                _options$limit = options.limit, limit = _options$limit === void 0 ? 100 : _options$limit, bookmark = options.bookmark, keys = options.keys;
-                params = {
-                  'page[limit]': limit,
-                  'page[cursor]': bookmark
-                };
-                url = (0, _utils.uri)(_templateObject());
-                path = querystring.buildURL(url, params);
-                _context.prev = 5;
-                _context.next = 8;
-                return this.stackClient.fetchJSON('GET', path);
-
-              case 8:
-                resp = _context.sent;
-                _context.next = 14;
-                break;
+                queryDef = new _dsl.QueryDefinition({
+                  doctype: _const.DOCTYPE_FILES
+                });
+                relationships = this.getRelationship().data; // Get last datetime for cursor
 
-              case 11:
-                _context.prev = 11;
-                _context.t0 = _context["catch"](5);
-                return _context.abrupt("return", (0, _Collection.dontThrowNotFoundError)(_context.t0));
+                lastRelationship = relationships[relationships.length - 1];
+                _context2.next = 5;
+                return this.dispatch( /*#__PURE__*/function () {
+                  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(dispatch, getState) {
+                    var lastRelDoc, lastDatetime, cursor, response;
+                    return _regenerator.default.wrap(function _callee$(_context) {
+                      while (1) {
+                        switch (_context.prev = _context.next) {
+                          case 0:
+                            lastRelDoc = (0, _store.getDocumentFromState)(getState(), lastRelationship._type, lastRelationship._id);
+                            lastDatetime = getFileDatetime(lastRelDoc.attributes); // cursor-based pagination
 
-              case 14:
-                nextLink = (0, _get2.default)(resp, 'links.next', '');
-                nextLinkURL = new URL("".concat(this.stackClient.uri).concat(nextLink));
-                nextBookmark = nextLinkURL.searchParams.get('page[cursor]') || undefined;
-                hasBookmark = nextBookmark !== undefined;
+                            cursor = newCursor([_this.target._type, _this.target._id, lastDatetime], relationships[relationships.length - 1]._id);
+                            _context.next = 5;
+                            return _this.query(queryDef.referencedBy(_this.target).offsetCursor(cursor));
 
-                if (!keys) {
-                  _context.next = 24;
-                  break;
-                }
+                          case 5:
+                            response = _context.sent;
+                            // Remove first returned element, used as starting point for the query
+                            response.data.shift();
+                            _context.next = 9;
+                            return _this.dispatch(_this.updateRelationshipData(function (previousRelationshipData) {
+                              return _objectSpread(_objectSpread({}, previousRelationshipData), {}, {
+                                data: [].concat((0, _toConsumableArray2.default)(previousRelationshipData.data), (0, _toConsumableArray2.default)(response.data)),
+                                next: response.next
+                              });
+                            }));
 
-                data = resp.data.filter(function (c) {
-                  return keys.includes(c.id);
-                }).map(function (c) {
-                  return normalizeOAuthClient(c);
-                });
-                meta = _objectSpread(_objectSpread({}, resp.meta), {}, {
-                  count: data.length
-                });
-                return _context.abrupt("return", {
-                  data: data,
-                  meta: meta,
-                  next: keys.length > data.length && hasBookmark,
-                  bookmark: nextBookmark
-                });
+                          case 9:
+                          case "end":
+                            return _context.stop();
+                        }
+                      }
+                    }, _callee);
+                  }));
 
-              case 24:
-                return _context.abrupt("return", {
-                  data: resp.data.map(function (c) {
-                    return normalizeOAuthClient(c);
-                  }),
-                  meta: resp.meta,
-                  next: hasBookmark,
-                  bookmark: nextBookmark
-                });
+                  return function (_x, _x2) {
+                    return _ref3.apply(this, arguments);
+                  };
+                }());
 
-              case 25:
+              case 5:
               case "end":
-                return _context.stop();
+                return _context2.stop();
             }
           }
-        }, _callee, this, [[5, 11]]);
+        }, _callee2, this);
       }));
 
-      function all() {
-        return _all.apply(this, arguments);
+      function fetchMore() {
+        return _fetchMore.apply(this, arguments);
       }
 
-      return all;
+      return fetchMore;
     }()
-    /**
-     * Get an OAuth client by id
-     *
-     * @param  {string} id The client id.
-     * @returns {object}  JsonAPI response containing normalized client as data attribute
-     */
-
   }, {
-    key: "get",
+    key: "addById",
     value: function () {
-      var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(id) {
-        var resp;
-        return _regenerator.default.wrap(function _callee2$(_context2) {
+      var _addById = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(idsArg) {
+        var _this2 = this;
+
+        var ids, relations;
+        return _regenerator.default.wrap(function _callee3$(_context3) {
           while (1) {
-            switch (_context2.prev = _context2.next) {
+            switch (_context3.prev = _context3.next) {
               case 0:
-                _context2.next = 2;
-                return this.all({
-                  keys: [id]
-                });
-
-              case 2:
-                resp = _context2.sent;
-
-              case 3:
-                if (!resp.next) {
-                  _context2.next = 9;
-                  break;
-                }
-
-                _context2.next = 6;
-                return this.all({
-                  keys: [id],
-                  bookmark: resp.bookmark
-                });
-
-              case 6:
-                resp = _context2.sent;
-                _context2.next = 3;
-                break;
-
-              case 9:
-                if (!resp.data.length) {
-                  _context2.next = 13;
-                  break;
-                }
-
-                return _context2.abrupt("return", {
-                  data: normalizeOAuthClient(resp.data[0])
+                ids = Array.isArray(idsArg) ? idsArg : [idsArg];
+                this.addTargetRelationships(ids);
+                relations = ids.map(function (id) {
+                  return {
+                    _id: id,
+                    _type: _this2.doctype
+                  };
                 });
+                _context3.next = 5;
+                return this.mutate(this.addReferences(relations));
 
-              case 13:
-                resp.url = (0, _utils.uri)(_templateObject2(), id);
-                resp.status = '404';
-                throw new _errors.FetchError(resp, 'Not Found');
-
-              case 16:
+              case 5:
               case "end":
-                return _context2.stop();
+                return _context3.stop();
             }
           }
-        }, _callee2, this);
+        }, _callee3, this);
       }));
 
-      function get(_x) {
-        return _get.apply(this, arguments);
+      function addById(_x3) {
+        return _addById.apply(this, arguments);
       }
 
-      return get;
+      return addById;
     }()
-    /**
-     * Destroys the OAuth client on the server
-     *
-     * @param {object} oauthClient The io.cozy.oauth.clients document to destroy
-     *
-     * @returns {{ data }} The deleted client
-     */
-
   }, {
-    key: "destroy",
+    key: "removeById",
     value: function () {
-      var _destroy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(oauthClient) {
-        var _id;
+      var _removeById = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(idsArg) {
+        var _this3 = this;
 
-        return _regenerator.default.wrap(function _callee3$(_context3) {
+        var ids, references;
+        return _regenerator.default.wrap(function _callee4$(_context4) {
           while (1) {
-            switch (_context3.prev = _context3.next) {
+            switch (_context4.prev = _context4.next) {
               case 0:
-                _id = oauthClient._id;
-                _context3.next = 3;
-                return this.stackClient.fetchJSON('DELETE', (0, _utils.uri)(_templateObject3(), _id));
-
-              case 3:
-                return _context3.abrupt("return", {
-                  data: _objectSpread(_objectSpread({}, normalizeOAuthClient(oauthClient)), {}, {
-                    _deleted: true
-                  })
+                ids = Array.isArray(idsArg) ? idsArg : [idsArg];
+                this.removeTargetRelationships(idsArg);
+                references = ids.map(function (id) {
+                  return {
+                    _id: id,
+                    _type: _this3.doctype
+                  };
                 });
+                _context4.next = 5;
+                return this.mutate(this.removeReferences(references));
 
-              case 4:
+              case 5:
               case "end":
-                return _context3.stop();
+                return _context4.stop();
             }
           }
-        }, _callee3, this);
+        }, _callee4, this);
       }));
 
-      function destroy(_x2) {
-        return _destroy.apply(this, arguments);
+      function removeById(_x4) {
+        return _removeById.apply(this, arguments);
       }
 
-      return destroy;
+      return removeById;
     }()
+  }, {
+    key: "addReferences",
+    value: function addReferences(referencedDocs) {
+      if (this.target._type === _const.DOCTYPE_FILES) {
+        return _dsl.Mutations.addReferencedBy(this.target, referencedDocs);
+      } else if (referencedDocs[0]._type === _const.DOCTYPE_FILES) {
+        return _dsl.Mutations.addReferencesTo(this.target, referencedDocs);
+      } else {
+        throw new Error('Either the document or the references should be io.cozy.files');
+      }
+    }
+  }, {
+    key: "removeReferences",
+    value: function removeReferences(referencedDocs) {
+      if (this.target._type === _const.DOCTYPE_FILES) {
+        return _dsl.Mutations.removeReferencedBy(this.target, referencedDocs);
+      } else if (referencedDocs[0]._type === _const.DOCTYPE_FILES) {
+        return _dsl.Mutations.removeReferencesTo(this.target, referencedDocs);
+      } else {
+        throw new Error('Either the document or the references should be io.cozy.files');
+      }
+    }
+  }, {
+    key: "dehydrate",
+    value: function dehydrate(doc) {
+      // HasManyFiles relationships are stored on the file doctype, not the document the files are related to
+      return (0, _omit.default)(doc, [this.name, "relationships.".concat(this.name)]);
+    }
+    /**
+     * @param {import("../types").CozyClientDocument} document - Document to query
+     * @param {object} client - The CozyClient instance
+     * @param {Association} assoc - The query params
+     *
+     * @returns {import("../types").CozyClientDocument | QueryDefinition}
+     */
+
+  }, {
+    key: "data",
+    get: function get() {
+      var _this4 = this;
+
+      if (this.target._type === _const.DOCTYPE_FILES) {
+        var refs = (0, _get4.default)(this.target, 'referenced_by', []);
+        return refs.map(function (_ref4) {
+          var id = _ref4.id,
+              type = _ref4.type;
+          return _this4.get(type, id);
+        }).filter(Boolean);
+      } else {
+        return (0, _get3.default)((0, _getPrototypeOf2.default)(HasManyFiles.prototype), "data", this);
+      }
+    }
+  }], [{
+    key: "query",
+    value: function query(document, client, assoc) {
+      if (document._type === _const.DOCTYPE_FILES) {
+        var refs = (0, _get4.default)(document, "relationships.referenced_by.data", []);
+        var ids = (0, _uniq.default)(refs.filter(function (ref) {
+          return ref.type === assoc.doctype;
+        }).map(function (ref) {
+          return ref.id;
+        }));
+        return ids.length > 0 ? (0, _dsl.Q)(assoc.doctype).getByIds(ids) : null;
+      } else {
+        var cursor = newCursor([document._type, document._id], '');
+        return (0, _dsl.Q)(assoc.doctype).referencedBy(document).offsetCursor(cursor);
+      }
+    }
   }]);
-  return OAuthClientsCollection;
-}(_DocumentCollection2.default);
+  return HasManyFiles;
+}(_HasMany2.default);
 
-OAuthClientsCollection.normalizeDoctype = _DocumentCollection2.default.normalizeDoctypeJsonApi;
-var _default = OAuthClientsCollection;
-exports.default = _default;
+exports.default = HasManyFiles;
 
 /***/ }),
-/* 610 */
+/* 627 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
+var _interopRequireWildcard = __webpack_require__(277);
+
 var _interopRequireDefault = __webpack_require__(1);
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.default = exports.SHORTCUTS_DOCTYPE = void 0;
-
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
-
-var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(492));
+Object.defineProperty(exports, "initQuery", {
+  enumerable: true,
+  get: function get() {
+    return _queries.initQuery;
+  }
+});
+Object.defineProperty(exports, "loadQuery", {
+  enumerable: true,
+  get: function get() {
+    return _queries.loadQuery;
+  }
+});
+Object.defineProperty(exports, "receiveQueryResult", {
+  enumerable: true,
+  get: function get() {
+    return _queries.receiveQueryResult;
+  }
+});
+Object.defineProperty(exports, "receiveQueryError", {
+  enumerable: true,
+  get: function get() {
+    return _queries.receiveQueryError;
+  }
+});
+Object.defineProperty(exports, "initMutation", {
+  enumerable: true,
+  get: function get() {
+    return _mutations.initMutation;
+  }
+});
+Object.defineProperty(exports, "receiveMutationResult", {
+  enumerable: true,
+  get: function get() {
+    return _mutations.receiveMutationResult;
+  }
+});
+Object.defineProperty(exports, "receiveMutationError", {
+  enumerable: true,
+  get: function get() {
+    return _mutations.receiveMutationError;
+  }
+});
+exports.resetState = exports.getRawQueryFromState = exports.getQueryFromState = exports.getQueryFromStore = exports.getDocumentFromState = exports.getCollectionFromState = exports.getStateRoot = exports.createStore = exports.default = exports.StoreProxy = void 0;
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
 var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+var _cozyFlags = _interopRequireDefault(__webpack_require__(493));
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+var _redux = __webpack_require__(628);
 
-var _DocumentCollection2 = _interopRequireDefault(__webpack_require__(491));
+var _reduxThunk = _interopRequireDefault(__webpack_require__(631));
 
-var _utils = __webpack_require__(521);
+var _documents = _interopRequireWildcard(__webpack_require__(632));
 
-var _getIllegalCharacter = __webpack_require__(598);
+var _queries = _interopRequireWildcard(__webpack_require__(637));
 
-function _templateObject2() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/shortcuts/", ""]);
+var _mutations = __webpack_require__(653);
 
-  _templateObject2 = function _templateObject2() {
-    return data;
-  };
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-  return data;
-}
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-function _templateObject() {
-  var data = (0, _taggedTemplateLiteral2.default)(["/shortcuts"]);
+var RESET_ACTION_TYPE = 'COZY_CLIENT.RESET_STATE';
 
-  _templateObject = function _templateObject() {
-    return data;
+var resetState = function resetState() {
+  return {
+    type: RESET_ACTION_TYPE
   };
+};
 
-  return data;
-}
-
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+exports.resetState = resetState;
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+var StoreProxy = /*#__PURE__*/function () {
+  function StoreProxy(state) {
+    (0, _classCallCheck2.default)(this, StoreProxy);
+    this.state = state;
+  }
 
-var SHORTCUTS_DOCTYPE = 'io.cozy.files.shortcuts';
-exports.SHORTCUTS_DOCTYPE = SHORTCUTS_DOCTYPE;
+  (0, _createClass2.default)(StoreProxy, [{
+    key: "readDocument",
+    value: function readDocument(doctype, id) {
+      return this.state.documents[doctype][id];
+    }
+  }, {
+    key: "writeDocument",
+    value: function writeDocument(document) {
+      this.setState(function (state) {
+        return _objectSpread(_objectSpread({}, state), {}, {
+          documents: _objectSpread(_objectSpread({}, state.documents), {}, (0, _defineProperty2.default)({}, document._type, _objectSpread(_objectSpread({}, state.documents[document._type]), {}, (0, _defineProperty2.default)({}, document._id, document))))
+        });
+      });
+    }
+  }, {
+    key: "setState",
+    value: function setState(updaterFn) {
+      this.state = updaterFn(this.state);
+    }
+  }, {
+    key: "getState",
+    value: function getState() {
+      return this.state;
+    }
+  }]);
+  return StoreProxy;
+}();
 
-var ShortcutsCollection = /*#__PURE__*/function (_DocumentCollection) {
-  (0, _inherits2.default)(ShortcutsCollection, _DocumentCollection);
+exports.StoreProxy = StoreProxy;
+var initialState = {
+  documents: {},
+  queries: {}
+};
 
-  var _super = _createSuper(ShortcutsCollection);
+var combinedReducer = function combinedReducer() {
+  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
+  var action = arguments.length > 1 ? arguments[1] : undefined;
 
-  function ShortcutsCollection(stackClient) {
-    (0, _classCallCheck2.default)(this, ShortcutsCollection);
-    return _super.call(this, SHORTCUTS_DOCTYPE, stackClient);
+  if (action.type == RESET_ACTION_TYPE) {
+    return initialState;
   }
-  /**
-   * Create a shortcut
-   *
-   * @param {object} attributes shortcut's attributes
-   * @param {string} attributes.name Filename
-   * @param {string} attributes.url Shortcut's URL
-   * @param {string} attributes.dir_id dir_id where to create the shortcut
-   * @throws {Error} - explaining reason why creation failed
-   */
 
+  if (!(0, _queries.isQueryAction)(action) && !(0, _mutations.isMutationAction)(action)) {
+    return state;
+  }
 
-  (0, _createClass2.default)(ShortcutsCollection, [{
-    key: "create",
-    value: function () {
-      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(attributes) {
-        var name, illegalCharacters, path, resp;
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                if (!attributes.type) {
-                  attributes.type = SHORTCUTS_DOCTYPE;
-                }
+  if (action.update) {
+    var proxy = new StoreProxy(state);
+    action.update(proxy, action.response);
+    return {
+      documents: proxy.getState().documents,
+      queries: (0, _queries.default)(proxy.getState().queries, action, proxy.getState().documents)
+    };
+  }
 
-                if (!(!attributes.name || !attributes.name.trim() || !attributes.url || !attributes.dir_id)) {
-                  _context.next = 3;
-                  break;
-                }
+  var nextDocuments = (0, _documents.default)(state.documents, action);
+  var haveDocumentsChanged = nextDocuments !== state.documents;
+  return {
+    documents: nextDocuments,
+    queries: (0, _queries.default)(state.queries, action, nextDocuments, haveDocumentsChanged)
+  };
+};
 
-                throw new Error('you need at least a name, an url and a dir_id attributes to create a shortcut');
+var _default = combinedReducer;
+exports.default = _default;
 
-              case 3:
-                name = attributes.name.trim();
+var composedEnhancer = // @ts-ignore '__REDUX_DEVTOOLS_EXTENSION_COMPOSE__' doesn't exist 'Window & typeof globalThis'.ts(2339)
+// should be (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ in ts file
+// see https://github.com/reduxjs/redux-devtools/tree/main/extension#11-basic-store
+(0, _cozyFlags.default)('debug') && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || _redux.compose;
 
-                if (!(name === '.' || name === '..')) {
-                  _context.next = 6;
-                  break;
-                }
+var createStore = function createStore() {
+  return (0, _redux.createStore)((0, _redux.combineReducers)({
+    cozy: combinedReducer
+  }), composedEnhancer((0, _redux.applyMiddleware)(_reduxThunk.default)));
+};
 
-                throw new Error("Invalid filename: ".concat(name));
+exports.createStore = createStore;
 
-              case 6:
-                illegalCharacters = (0, _getIllegalCharacter.getIllegalCharacters)(name);
-
-                if (!illegalCharacters.length) {
-                  _context.next = 9;
-                  break;
-                }
+var getStateRoot = function getStateRoot(state) {
+  return state.cozy || {};
+};
 
-                throw new Error("Invalid filename containing illegal character(s): ".concat(illegalCharacters));
+exports.getStateRoot = getStateRoot;
 
-              case 9:
-                path = (0, _utils.uri)(_templateObject());
-                _context.next = 12;
-                return this.stackClient.fetchJSON('POST', path, {
-                  data: {
-                    attributes: attributes,
-                    type: 'io.cozy.files.shortcuts'
-                  }
-                });
+var getCollectionFromState = function getCollectionFromState(state, doctype) {
+  return (0, _documents.getCollectionFromSlice)(getStateRoot(state).documents, doctype);
+};
 
-              case 12:
-                resp = _context.sent;
-                return _context.abrupt("return", {
-                  data: _DocumentCollection2.default.normalizeDoctypeJsonApi(SHORTCUTS_DOCTYPE)(resp.data, resp)
-                });
+exports.getCollectionFromState = getCollectionFromState;
 
-              case 14:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee, this);
-      }));
+var getDocumentFromState = function getDocumentFromState(state, doctype, id) {
+  return (0, _documents.getDocumentFromSlice)(getStateRoot(state).documents, doctype, id);
+};
 
-      function create(_x) {
-        return _create.apply(this, arguments);
-      }
+exports.getDocumentFromState = getDocumentFromState;
 
-      return create;
-    }()
-  }, {
-    key: "get",
-    value: function () {
-      var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(id) {
-        var path, resp;
-        return _regenerator.default.wrap(function _callee2$(_context2) {
-          while (1) {
-            switch (_context2.prev = _context2.next) {
-              case 0:
-                path = (0, _utils.uri)(_templateObject2(), id);
-                _context2.next = 3;
-                return this.stackClient.fetchJSON('GET', path);
+var getQueryFromStore = function getQueryFromStore(store, queryId) {
+  return getQueryFromState(store.getState(), queryId);
+};
 
-              case 3:
-                resp = _context2.sent;
-                return _context2.abrupt("return", {
-                  data: _DocumentCollection2.default.normalizeDoctypeJsonApi(SHORTCUTS_DOCTYPE)(resp.data, resp)
-                });
+exports.getQueryFromStore = getQueryFromStore;
 
-              case 5:
-              case "end":
-                return _context2.stop();
-            }
-          }
-        }, _callee2, this);
-      }));
+var getQueryFromState = function getQueryFromState(state, queryId) {
+  return (0, _queries.getQueryFromSlice)(getStateRoot(state).queries, queryId, getStateRoot(state).documents);
+};
 
-      function get(_x2) {
-        return _get.apply(this, arguments);
-      }
+exports.getQueryFromState = getQueryFromState;
 
-      return get;
-    }()
-  }]);
-  return ShortcutsCollection;
-}(_DocumentCollection2.default);
+var getRawQueryFromState = function getRawQueryFromState(state, queryId) {
+  return (0, _queries.getQueryFromSlice)(getStateRoot(state).queries, queryId);
+};
 
-ShortcutsCollection.normalizeDoctype = _DocumentCollection2.default.normalizeDoctypeJsonApi;
-var _default = ShortcutsCollection;
-exports.default = _default;
+exports.getRawQueryFromState = getRawQueryFromState;
 
 /***/ }),
-/* 611 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 628 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__DO_NOT_USE__ActionTypes", function() { return ActionTypes; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "applyMiddleware", function() { return applyMiddleware; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindActionCreators", function() { return bindActionCreators; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineReducers", function() { return combineReducers; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return compose; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createStore", function() { return createStore; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "legacy_createStore", function() { return legacy_createStore; });
+/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(629);
 
 
-var _interopRequireWildcard = __webpack_require__(277);
-
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = exports.CONTACTS_DOCTYPE = void 0;
-
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+/**
+ * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js
+ *
+ * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes
+ * during build.
+ * @param {number} code
+ */
+function formatProdErrorMessage(code) {
+  return "Minified Redux error #" + code + "; visit https://redux.js.org/Errors?code=" + code + " for the full message or " + 'use the non-minified dev environment for full errors. ';
+}
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+// Inlined version of the `symbol-observable` polyfill
+var $$observable = (function () {
+  return typeof Symbol === 'function' && Symbol.observable || '@@observable';
+})();
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+/**
+ * These are private action types reserved by Redux.
+ * For any unknown actions, you must return the current state.
+ * If the current state is undefined, you must return the initial state.
+ * Do not reference these action types directly in your code.
+ */
+var randomString = function randomString() {
+  return Math.random().toString(36).substring(7).split('').join('.');
+};
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+var ActionTypes = {
+  INIT: "@@redux/INIT" + randomString(),
+  REPLACE: "@@redux/REPLACE" + randomString(),
+  PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {
+    return "@@redux/PROBE_UNKNOWN_ACTION" + randomString();
+  }
+};
 
-var _get2 = _interopRequireDefault(__webpack_require__(602));
+/**
+ * @param {any} obj The object to inspect.
+ * @returns {boolean} True if the argument appears to be a plain object.
+ */
+function isPlainObject(obj) {
+  if (typeof obj !== 'object' || obj === null) return false;
+  var proto = obj;
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+  while (Object.getPrototypeOf(proto) !== null) {
+    proto = Object.getPrototypeOf(proto);
+  }
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+  return Object.getPrototypeOf(obj) === proto;
+}
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of
+function miniKindOf(val) {
+  if (val === void 0) return 'undefined';
+  if (val === null) return 'null';
+  var type = typeof val;
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+  switch (type) {
+    case 'boolean':
+    case 'string':
+    case 'number':
+    case 'symbol':
+    case 'function':
+      {
+        return type;
+      }
+  }
 
-var _DocumentCollection2 = _interopRequireWildcard(__webpack_require__(491));
+  if (Array.isArray(val)) return 'array';
+  if (isDate(val)) return 'date';
+  if (isError(val)) return 'error';
+  var constructorName = ctorName(val);
 
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+  switch (constructorName) {
+    case 'Symbol':
+    case 'Promise':
+    case 'WeakMap':
+    case 'WeakSet':
+    case 'Map':
+    case 'Set':
+      return constructorName;
+  } // other
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+  return type.slice(8, -1).toLowerCase().replace(/\s/g, '');
+}
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+function ctorName(val) {
+  return typeof val.constructor === 'function' ? val.constructor.name : null;
+}
 
-var normalizeMyselfResp = function normalizeMyselfResp(resp) {
-  return _objectSpread(_objectSpread(_objectSpread({}, (0, _DocumentCollection2.normalizeDoc)(resp.data, CONTACTS_DOCTYPE)), resp.data.attributes), {}, {
-    _rev: resp.data.meta.rev
-  });
-};
+function isError(val) {
+  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';
+}
 
-var ContactsCollection = /*#__PURE__*/function (_DocumentCollection) {
-  (0, _inherits2.default)(ContactsCollection, _DocumentCollection);
+function isDate(val) {
+  if (val instanceof Date) return true;
+  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';
+}
 
-  var _super = _createSuper(ContactsCollection);
+function kindOf(val) {
+  var typeOfVal = typeof val;
 
-  function ContactsCollection() {
-    (0, _classCallCheck2.default)(this, ContactsCollection);
-    return _super.apply(this, arguments);
+  if (true) {
+    typeOfVal = miniKindOf(val);
   }
 
-  (0, _createClass2.default)(ContactsCollection, [{
-    key: "find",
-    value: function () {
-      var _find = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(selector, options) {
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                if (!(selector !== undefined && Object.values(selector).length === 1 && selector['me'] == true)) {
-                  _context.next = 4;
-                  break;
-                }
+  return typeOfVal;
+}
 
-                return _context.abrupt("return", this.findMyself());
+/**
+ * @deprecated
+ *
+ * **We recommend using the `configureStore` method
+ * of the `@reduxjs/toolkit` package**, which replaces `createStore`.
+ *
+ * Redux Toolkit is our recommended approach for writing Redux logic today,
+ * including store setup, reducers, data fetching, and more.
+ *
+ * **For more details, please read this Redux docs page:**
+ * **https://redux.js.org/introduction/why-rtk-is-redux-today**
+ *
+ * `configureStore` from Redux Toolkit is an improved version of `createStore` that
+ * simplifies setup and helps avoid common bugs.
+ *
+ * You should not be using the `redux` core package by itself today, except for learning purposes.
+ * The `createStore` method from the core `redux` package will not be removed, but we encourage
+ * all users to migrate to using Redux Toolkit for all Redux code.
+ *
+ * If you want to use `createStore` without this visual deprecation warning, use
+ * the `legacy_createStore` import instead:
+ *
+ * `import { legacy_createStore as createStore} from 'redux'`
+ *
+ */
 
-              case 4:
-                return _context.abrupt("return", (0, _get2.default)((0, _getPrototypeOf2.default)(ContactsCollection.prototype), "find", this).call(this, selector, options));
+function createStore(reducer, preloadedState, enhancer) {
+  var _ref2;
 
-              case 5:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee, this);
-      }));
+  if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {
+    throw new Error( false ? undefined : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');
+  }
 
-      function find(_x, _x2) {
-        return _find.apply(this, arguments);
-      }
+  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {
+    enhancer = preloadedState;
+    preloadedState = undefined;
+  }
 
-      return find;
-    }()
-  }, {
-    key: "findMyself",
-    value: function () {
-      var _findMyself = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
-        var resp, col;
-        return _regenerator.default.wrap(function _callee2$(_context2) {
-          while (1) {
-            switch (_context2.prev = _context2.next) {
-              case 0:
-                _context2.next = 2;
-                return this.stackClient.fetchJSON('POST', '/contacts/myself');
+  if (typeof enhancer !== 'undefined') {
+    if (typeof enhancer !== 'function') {
+      throw new Error( false ? undefined : "Expected the enhancer to be a function. Instead, received: '" + kindOf(enhancer) + "'");
+    }
 
-              case 2:
-                resp = _context2.sent;
-                col = {
-                  data: [normalizeMyselfResp(resp)],
-                  next: false,
-                  meta: null,
-                  bookmark: false
-                };
-                return _context2.abrupt("return", col);
+    return enhancer(createStore)(reducer, preloadedState);
+  }
 
-              case 5:
-              case "end":
-                return _context2.stop();
-            }
-          }
-        }, _callee2, this);
-      }));
+  if (typeof reducer !== 'function') {
+    throw new Error( false ? undefined : "Expected the root reducer to be a function. Instead, received: '" + kindOf(reducer) + "'");
+  }
 
-      function findMyself() {
-        return _findMyself.apply(this, arguments);
-      }
+  var currentReducer = reducer;
+  var currentState = preloadedState;
+  var currentListeners = [];
+  var nextListeners = currentListeners;
+  var isDispatching = false;
+  /**
+   * This makes a shallow copy of currentListeners so we can use
+   * nextListeners as a temporary list while dispatching.
+   *
+   * This prevents any bugs around consumers calling
+   * subscribe/unsubscribe in the middle of a dispatch.
+   */
 
-      return findMyself;
-    }()
-  }]);
-  return ContactsCollection;
-}(_DocumentCollection2.default);
+  function ensureCanMutateNextListeners() {
+    if (nextListeners === currentListeners) {
+      nextListeners = currentListeners.slice();
+    }
+  }
+  /**
+   * Reads the state tree managed by the store.
+   *
+   * @returns {any} The current state tree of your application.
+   */
 
-var CONTACTS_DOCTYPE = 'io.cozy.contacts';
-exports.CONTACTS_DOCTYPE = CONTACTS_DOCTYPE;
-var _default = ContactsCollection;
-exports.default = _default;
 
-/***/ }),
-/* 612 */
-/***/ (function(module, exports, __webpack_require__) {
+  function getState() {
+    if (isDispatching) {
+      throw new Error( false ? undefined : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');
+    }
 
-"use strict";
+    return currentState;
+  }
+  /**
+   * Adds a change listener. It will be called any time an action is dispatched,
+   * and some part of the state tree may potentially have changed. You may then
+   * call `getState()` to read the current state tree inside the callback.
+   *
+   * You may call `dispatch()` from a change listener, with the following
+   * caveats:
+   *
+   * 1. The subscriptions are snapshotted just before every `dispatch()` call.
+   * If you subscribe or unsubscribe while the listeners are being invoked, this
+   * will not have any effect on the `dispatch()` that is currently in progress.
+   * However, the next `dispatch()` call, whether nested or not, will use a more
+   * recent snapshot of the subscription list.
+   *
+   * 2. The listener should not expect to see all state changes, as the state
+   * might have been updated multiple times during a nested `dispatch()` before
+   * the listener is called. It is, however, guaranteed that all subscribers
+   * registered before the `dispatch()` started will be called with the latest
+   * state by the time it exits.
+   *
+   * @param {Function} listener A callback to be invoked on every dispatch.
+   * @returns {Function} A function to remove this change listener.
+   */
 
 
-var _interopRequireWildcard = __webpack_require__(277);
+  function subscribe(listener) {
+    if (typeof listener !== 'function') {
+      throw new Error( false ? undefined : "Expected the listener to be a function. Instead, received: '" + kindOf(listener) + "'");
+    }
 
-var _interopRequireDefault = __webpack_require__(1);
+    if (isDispatching) {
+      throw new Error( false ? undefined : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');
+    }
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = exports.normalizeAppFromRegistry = exports.APPS_REGISTRY_DOCTYPE = void 0;
+    var isSubscribed = true;
+    ensureCanMutateNextListeners();
+    nextListeners.push(listener);
+    return function unsubscribe() {
+      if (!isSubscribed) {
+        return;
+      }
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+      if (isDispatching) {
+        throw new Error( false ? undefined : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');
+      }
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+      isSubscribed = false;
+      ensureCanMutateNextListeners();
+      var index = nextListeners.indexOf(listener);
+      nextListeners.splice(index, 1);
+      currentListeners = null;
+    };
+  }
+  /**
+   * Dispatches an action. It is the only way to trigger a state change.
+   *
+   * The `reducer` function, used to create the store, will be called with the
+   * current state tree and the given `action`. Its return value will
+   * be considered the **next** state of the tree, and the change listeners
+   * will be notified.
+   *
+   * The base implementation only supports plain object actions. If you want to
+   * dispatch a Promise, an Observable, a thunk, or something else, you need to
+   * wrap your store creating function into the corresponding middleware. For
+   * example, see the documentation for the `redux-thunk` package. Even the
+   * middleware will eventually dispatch plain object actions using this method.
+   *
+   * @param {Object} action A plain object representing “what changed”. It is
+   * a good idea to keep actions serializable so you can record and replay user
+   * sessions, or use the time travelling `redux-devtools`. An action must have
+   * a `type` property which may not be `undefined`. It is a good idea to use
+   * string constants for action types.
+   *
+   * @returns {Object} For convenience, the same action object you dispatched.
+   *
+   * Note that, if you use a custom middleware, it may wrap `dispatch()` to
+   * return something else (for example, a Promise you can await).
+   */
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+  function dispatch(action) {
+    if (!isPlainObject(action)) {
+      throw new Error( false ? undefined : "Actions must be plain objects. Instead, the actual type was: '" + kindOf(action) + "'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.");
+    }
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+    if (typeof action.type === 'undefined') {
+      throw new Error( false ? undefined : 'Actions may not have an undefined "type" property. You may have misspelled an action type string constant.');
+    }
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+    if (isDispatching) {
+      throw new Error( false ? undefined : 'Reducers may not dispatch actions.');
+    }
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+    try {
+      isDispatching = true;
+      currentState = currentReducer(currentState, action);
+    } finally {
+      isDispatching = false;
+    }
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+    var listeners = currentListeners = nextListeners;
 
-var _registry = __webpack_require__(485);
+    for (var i = 0; i < listeners.length; i++) {
+      var listener = listeners[i];
+      listener();
+    }
 
-var _DocumentCollection2 = _interopRequireWildcard(__webpack_require__(491));
+    return action;
+  }
+  /**
+   * Replaces the reducer currently used by the store to calculate the state.
+   *
+   * You might need this if your app implements code splitting and you want to
+   * load some of the reducers dynamically. You might also need this if you
+   * implement a hot reloading mechanism for Redux.
+   *
+   * @param {Function} nextReducer The reducer for the store to use instead.
+   * @returns {void}
+   */
 
-var _errors = __webpack_require__(582);
 
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+  function replaceReducer(nextReducer) {
+    if (typeof nextReducer !== 'function') {
+      throw new Error( false ? undefined : "Expected the nextReducer to be a function. Instead, received: '" + kindOf(nextReducer));
+    }
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+    currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.
+    // Any reducers that existed in both the new and old rootReducer
+    // will receive the previous state. This effectively populates
+    // the new state tree with any relevant data from the old one.
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+    dispatch({
+      type: ActionTypes.REPLACE
+    });
+  }
+  /**
+   * Interoperability point for observable/reactive libraries.
+   * @returns {observable} A minimal observable of state changes.
+   * For more information, see the observable proposal:
+   * https://github.com/tc39/proposal-observable
+   */
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-var APPS_REGISTRY_DOCTYPE = 'io.cozy.apps_registry';
-exports.APPS_REGISTRY_DOCTYPE = APPS_REGISTRY_DOCTYPE;
+  function observable() {
+    var _ref;
 
-var normalizeAppFromRegistry = function normalizeAppFromRegistry(app, doctype) {
-  return _objectSpread({}, (0, _DocumentCollection2.normalizeDoc)(app, doctype));
-};
+    var outerSubscribe = subscribe;
+    return _ref = {
+      /**
+       * The minimal observable subscription method.
+       * @param {Object} observer Any object that can be used as an observer.
+       * The observer object should have a `next` method.
+       * @returns {subscription} An object with an `unsubscribe` method that can
+       * be used to unsubscribe the observable from the store, and prevent further
+       * emission of values from the observable.
+       */
+      subscribe: function subscribe(observer) {
+        if (typeof observer !== 'object' || observer === null) {
+          throw new Error( false ? undefined : "Expected the observer to be an object. Instead, received: '" + kindOf(observer) + "'");
+        }
+
+        function observeState() {
+          if (observer.next) {
+            observer.next(getState());
+          }
+        }
+
+        observeState();
+        var unsubscribe = outerSubscribe(observeState);
+        return {
+          unsubscribe: unsubscribe
+        };
+      }
+    }, _ref[$$observable] = function () {
+      return this;
+    }, _ref;
+  } // When a store is created, an "INIT" action is dispatched so that every
+  // reducer returns their initial state. This effectively populates
+  // the initial state tree.
+
+
+  dispatch({
+    type: ActionTypes.INIT
+  });
+  return _ref2 = {
+    dispatch: dispatch,
+    subscribe: subscribe,
+    getState: getState,
+    replaceReducer: replaceReducer
+  }, _ref2[$$observable] = observable, _ref2;
+}
 /**
- * Extends `DocumentCollection` API along with specific methods for `io.cozy.apps_registry`.
+ * Creates a Redux store that holds the state tree.
+ *
+ * **We recommend using `configureStore` from the
+ * `@reduxjs/toolkit` package**, which replaces `createStore`:
+ * **https://redux.js.org/introduction/why-rtk-is-redux-today**
+ *
+ * The only way to change the data in the store is to call `dispatch()` on it.
+ *
+ * There should only be a single store in your app. To specify how different
+ * parts of the state tree respond to actions, you may combine several reducers
+ * into a single reducer function by using `combineReducers`.
+ *
+ * @param {Function} reducer A function that returns the next state tree, given
+ * the current state tree and the action to handle.
+ *
+ * @param {any} [preloadedState] The initial state. You may optionally specify it
+ * to hydrate the state from the server in universal apps, or to restore a
+ * previously serialized user session.
+ * If you use `combineReducers` to produce the root reducer function, this must be
+ * an object with the same shape as `combineReducers` keys.
+ *
+ * @param {Function} [enhancer] The store enhancer. You may optionally specify it
+ * to enhance the store with third-party capabilities such as middleware,
+ * time travel, persistence, etc. The only store enhancer that ships with Redux
+ * is `applyMiddleware()`.
+ *
+ * @returns {Store} A Redux store that lets you read the state, dispatch actions
+ * and subscribe to changes.
  */
 
+var legacy_createStore = createStore;
 
-exports.normalizeAppFromRegistry = normalizeAppFromRegistry;
+/**
+ * Prints a warning in the console if it exists.
+ *
+ * @param {String} message The warning message.
+ * @returns {void}
+ */
+function warning(message) {
+  /* eslint-disable no-console */
+  if (typeof console !== 'undefined' && typeof console.error === 'function') {
+    console.error(message);
+  }
+  /* eslint-enable no-console */
 
-var AppsRegistryCollection = /*#__PURE__*/function (_DocumentCollection) {
-  (0, _inherits2.default)(AppsRegistryCollection, _DocumentCollection);
 
-  var _super = _createSuper(AppsRegistryCollection);
+  try {
+    // This error was thrown as a convenience so that if you enable
+    // "break on all exceptions" in your console,
+    // it would pause the execution at this line.
+    throw new Error(message);
+  } catch (e) {} // eslint-disable-line no-empty
 
-  function AppsRegistryCollection(stackClient) {
-    var _this;
+}
 
-    (0, _classCallCheck2.default)(this, AppsRegistryCollection);
-    _this = _super.call(this, APPS_REGISTRY_DOCTYPE, stackClient);
-    _this.endpoint = '/registry/';
-    return _this;
-  }
-  /**
-   * Fetches an app from the registry.
-   *
-   * @param  {string} slug - Slug of the app
-   * @returns {Promise<{data: object}>} JsonAPI response containing normalized document as data attribute
-   * @throws {FetchError}
-   */
+function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {
+  var reducerKeys = Object.keys(reducers);
+  var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';
 
+  if (reducerKeys.length === 0) {
+    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';
+  }
 
-  (0, _createClass2.default)(AppsRegistryCollection, [{
-    key: "get",
-    value: function () {
-      var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(slug) {
-        var app, data;
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                _context.next = 2;
-                return this.stackClient.fetchJSON('GET', "".concat(this.endpoint).concat(slug));
+  if (!isPlainObject(inputState)) {
+    return "The " + argumentName + " has unexpected type of \"" + kindOf(inputState) + "\". Expected argument to be an object with the following " + ("keys: \"" + reducerKeys.join('", "') + "\"");
+  }
 
-              case 2:
-                app = _context.sent;
-                data = (0, _registry.transformRegistryFormatToStackFormat)(app);
-                return _context.abrupt("return", {
-                  data: normalizeAppFromRegistry(data, this.doctype)
-                });
+  var unexpectedKeys = Object.keys(inputState).filter(function (key) {
+    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];
+  });
+  unexpectedKeys.forEach(function (key) {
+    unexpectedKeyCache[key] = true;
+  });
+  if (action && action.type === ActionTypes.REPLACE) return;
 
-              case 5:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee, this);
-      }));
+  if (unexpectedKeys.length > 0) {
+    return "Unexpected " + (unexpectedKeys.length > 1 ? 'keys' : 'key') + " " + ("\"" + unexpectedKeys.join('", "') + "\" found in " + argumentName + ". ") + "Expected to find one of the known reducer keys instead: " + ("\"" + reducerKeys.join('", "') + "\". Unexpected keys will be ignored.");
+  }
+}
 
-      function get(_x) {
-        return _get.apply(this, arguments);
-      }
+function assertReducerShape(reducers) {
+  Object.keys(reducers).forEach(function (key) {
+    var reducer = reducers[key];
+    var initialState = reducer(undefined, {
+      type: ActionTypes.INIT
+    });
 
-      return get;
-    }()
-  }, {
-    key: "create",
-    value: function () {
-      var _create = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
-        return _regenerator.default.wrap(function _callee2$(_context2) {
-          while (1) {
-            switch (_context2.prev = _context2.next) {
-              case 0:
-                throw new Error('create() method is not available for AppsRegistryCollection');
+    if (typeof initialState === 'undefined') {
+      throw new Error( false ? undefined : "The slice reducer for key \"" + key + "\" returned undefined during initialization. " + "If the state passed to the reducer is undefined, you must " + "explicitly return the initial state. The initial state may " + "not be undefined. If you don't want to set a value for this reducer, " + "you can use null instead of undefined.");
+    }
 
-              case 1:
-              case "end":
-                return _context2.stop();
-            }
-          }
-        }, _callee2);
-      }));
+    if (typeof reducer(undefined, {
+      type: ActionTypes.PROBE_UNKNOWN_ACTION()
+    }) === 'undefined') {
+      throw new Error( false ? undefined : "The slice reducer for key \"" + key + "\" returned undefined when probed with a random type. " + ("Don't try to handle '" + ActionTypes.INIT + "' or other actions in \"redux/*\" ") + "namespace. They are considered private. Instead, you must return the " + "current state for any unknown actions, unless it is undefined, " + "in which case you must return the initial state, regardless of the " + "action type. The initial state may not be undefined, but can be null.");
+    }
+  });
+}
+/**
+ * Turns an object whose values are different reducer functions, into a single
+ * reducer function. It will call every child reducer, and gather their results
+ * into a single state object, whose keys correspond to the keys of the passed
+ * reducer functions.
+ *
+ * @param {Object} reducers An object whose values correspond to different
+ * reducer functions that need to be combined into one. One handy way to obtain
+ * it is to use ES6 `import * as reducers` syntax. The reducers may never return
+ * undefined for any action. Instead, they should return their initial state
+ * if the state passed to them was undefined, and the current state for any
+ * unrecognized action.
+ *
+ * @returns {Function} A reducer function that invokes every reducer inside the
+ * passed object, and builds a state object with the same shape.
+ */
 
-      function create() {
-        return _create.apply(this, arguments);
-      }
 
-      return create;
-    }()
-  }, {
-    key: "destroy",
-    value: function () {
-      var _destroy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
-        return _regenerator.default.wrap(function _callee3$(_context3) {
-          while (1) {
-            switch (_context3.prev = _context3.next) {
-              case 0:
-                throw new Error('destroy() method is not available for AppsRegistryCollection');
+function combineReducers(reducers) {
+  var reducerKeys = Object.keys(reducers);
+  var finalReducers = {};
 
-              case 1:
-              case "end":
-                return _context3.stop();
-            }
-          }
-        }, _callee3);
-      }));
+  for (var i = 0; i < reducerKeys.length; i++) {
+    var key = reducerKeys[i];
 
-      function destroy() {
-        return _destroy.apply(this, arguments);
+    if (true) {
+      if (typeof reducers[key] === 'undefined') {
+        warning("No reducer provided for key \"" + key + "\"");
       }
+    }
 
-      return destroy;
-    }()
-  }]);
-  return AppsRegistryCollection;
-}(_DocumentCollection2.default);
+    if (typeof reducers[key] === 'function') {
+      finalReducers[key] = reducers[key];
+    }
+  }
 
-var _default = AppsRegistryCollection;
-exports.default = _default;
+  var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same
+  // keys multiple times.
 
-/***/ }),
-/* 613 */
-/***/ (function(module, exports, __webpack_require__) {
+  var unexpectedKeyCache;
 
-"use strict";
+  if (true) {
+    unexpectedKeyCache = {};
+  }
 
+  var shapeAssertionError;
 
-var _interopRequireWildcard = __webpack_require__(277);
+  try {
+    assertReducerShape(finalReducers);
+  } catch (e) {
+    shapeAssertionError = e;
+  }
 
-var _interopRequireDefault = __webpack_require__(1);
+  return function combination(state, action) {
+    if (state === void 0) {
+      state = {};
+    }
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.getIconURL = exports.default = exports._getIconURL = void 0;
+    if (shapeAssertionError) {
+      throw shapeAssertionError;
+    }
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+    if (true) {
+      var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+      if (warningMessage) {
+        warning(warningMessage);
+      }
+    }
 
-var _types = __webpack_require__(490);
+    var hasChanged = false;
+    var nextState = {};
 
-var _memoize = _interopRequireWildcard(__webpack_require__(614));
+    for (var _i = 0; _i < finalReducerKeys.length; _i++) {
+      var _key = finalReducerKeys[_i];
+      var reducer = finalReducers[_key];
+      var previousStateForKey = state[_key];
+      var nextStateForKey = reducer(previousStateForKey, action);
 
-function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
+      if (typeof nextStateForKey === 'undefined') {
+        var actionType = action && action.type;
+        throw new Error( false ? undefined : "When called with an action of type " + (actionType ? "\"" + String(actionType) + "\"" : '(unknown type)') + ", the slice reducer for key \"" + _key + "\" returned undefined. " + "To ignore an action, you must explicitly return the previous state. " + "If you want this reducer to hold no value, you can return null instead of undefined.");
+      }
 
-function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+      nextState[_key] = nextStateForKey;
+      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;
+    }
 
-function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+    hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;
+    return hasChanged ? nextState : state;
+  };
+}
 
+function bindActionCreator(actionCreator, dispatch) {
+  return function () {
+    return dispatch(actionCreator.apply(this, arguments));
+  };
+}
 /**
- * Get Icon source Url
+ * Turns an object whose values are action creators, into an object with the
+ * same keys, but with every function wrapped into a `dispatch` call so they
+ * may be invoked directly. This is just a convenience method, as you can call
+ * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.
  *
- * @param  {object}  app - Apps data - io.cozy.apps
- * @param  {string}  slug - Slug - string
- * @param  {string|undefined} domain - Host to use in the origin (e.g. cozy.tools)
- * @param  {string} protocol - Url protocol (e.g. http / https)
- * @returns {string}  Source Url of icon
- * @private
- * @throws {Error} When cannot fetch or get icon source
+ * For convenience, you can also pass an action creator as the first argument,
+ * and get a dispatch wrapped function in return.
+ *
+ * @param {Function|Object} actionCreators An object whose values are action
+ * creator functions. One handy way to obtain it is to use ES6 `import * as`
+ * syntax. You may also pass a single function.
+ *
+ * @param {Function} dispatch The `dispatch` function available on your Redux
+ * store.
+ *
+ * @returns {Function|Object} The object mimicking the original object, but with
+ * every action creator wrapped into the `dispatch` call. If you passed a
+ * function as `actionCreators`, the return value will also be a single
+ * function.
  */
-var loadIcon = function loadIcon(app, slug, domain, protocol) {
-  if (!domain) throw new Error('Cannot fetch icon: missing domain');
 
-  var source = _getAppIconURL(app, slug, domain, protocol);
 
-  if (!source) {
-    throw new Error("Cannot get icon source for app ".concat(app.name));
+function bindActionCreators(actionCreators, dispatch) {
+  if (typeof actionCreators === 'function') {
+    return bindActionCreator(actionCreators, dispatch);
   }
 
-  return source;
-};
-/**
- * Get App Icon URL
- *
- * @param  {object}  app - Apps data - io.cozy.apps or Slug - string
- * @param  {string}  slug - Slug - string
- * @param  {string|undefined} domain - Host to use in the origin (e.g. cozy.tools)
- * @param  {string} protocol - Url protocol (e.g. http / https)
- * @private
- * @returns {string|null}  App Icon URL
- */
+  if (typeof actionCreators !== 'object' || actionCreators === null) {
+    throw new Error( false ? undefined : "bindActionCreators expected an object or a function, but instead received: '" + kindOf(actionCreators) + "'. " + "Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?");
+  }
 
+  var boundActionCreators = {};
 
-var _getAppIconURL = function _getAppIconURL(app, slug, domain, protocol) {
-  var path = app && app.links && app.links.icon || _getRegistryIconPath(app, slug);
+  for (var key in actionCreators) {
+    var actionCreator = actionCreators[key];
+
+    if (typeof actionCreator === 'function') {
+      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);
+    }
+  }
+
+  return boundActionCreators;
+}
 
-  return path ? "".concat(protocol, "//").concat(domain).concat(path) : null;
-};
 /**
- * Get Registry Icon Path
+ * Composes single-argument functions from right to left. The rightmost
+ * function can take multiple arguments as it provides the signature for
+ * the resulting composite function.
  *
- * @param  {object}  app - Apps data - io.cozy.apps or Slug - string
- * @param  {string}  slug - Slug - string
- * @returns {string|undefined}  Registry icon path
- * @private
+ * @param {...Function} funcs The functions to compose.
+ * @returns {Function} A function obtained by composing the argument functions
+ * from right to left. For example, compose(f, g, h) is identical to doing
+ * (...args) => f(g(h(...args))).
  */
+function compose() {
+  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {
+    funcs[_key] = arguments[_key];
+  }
 
+  if (funcs.length === 0) {
+    return function (arg) {
+      return arg;
+    };
+  }
 
-var _getRegistryIconPath = function _getRegistryIconPath(app, slug) {
-  if (slug) {
-    return "/registry/".concat(slug, "/icon");
+  if (funcs.length === 1) {
+    return funcs[0];
   }
 
-  return app && app.latest_version && app.latest_version.version && "/registry/".concat(app.slug, "/").concat(app.latest_version.version, "/icon");
-};
+  return funcs.reduce(function (a, b) {
+    return function () {
+      return a(b.apply(void 0, arguments));
+    };
+  });
+}
 
-var mimeTypes = {
-  gif: 'image/gif',
-  ico: 'image/vnd.microsoft.icon',
-  jpeg: 'image/jpeg',
-  jpg: 'image/jpeg',
-  png: 'image/png',
-  svg: 'image/svg+xml'
-};
 /**
- * Get icon extension
+ * Creates a store enhancer that applies middleware to the dispatch method
+ * of the Redux store. This is handy for a variety of tasks, such as expressing
+ * asynchronous actions in a concise manner, or logging every action payload.
  *
- * @param {object} app io.cozy.apps or io.cozy.konnectors document
- * @param  {string} app.icon - App Icon
- * @param  {string} app.name - App Name
- * @returns {string}  icon extension
- * @private
- * @throws {Error} When problem while detecting icon mime type
+ * See `redux-thunk` package as an example of the Redux middleware.
+ *
+ * Because middleware is potentially asynchronous, this should be the first
+ * store enhancer in the composition chain.
+ *
+ * Note that each middleware will be given the `dispatch` and `getState` functions
+ * as named arguments.
+ *
+ * @param {...Function} middlewares The middleware chain to be applied.
+ * @returns {Function} A store enhancer applying the middleware.
  */
 
-var getIconExtensionFromApp = function getIconExtensionFromApp(app) {
-  if (!app.icon) {
-    throw new Error("".concat(app.name, ": Cannot detect icon mime type since app has no icon"));
+function applyMiddleware() {
+  for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {
+    middlewares[_key] = arguments[_key];
   }
 
-  var extension = app.icon.split('.').pop();
+  return function (createStore) {
+    return function () {
+      var store = createStore.apply(void 0, arguments);
 
-  if (!extension) {
-    throw new Error("".concat(app.name, ": Unable to detect icon mime type from extension (").concat(app.icon, ")"));
-  }
+      var _dispatch = function dispatch() {
+        throw new Error( false ? undefined : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');
+      };
 
-  return extension;
-};
+      var middlewareAPI = {
+        getState: store.getState,
+        dispatch: function dispatch() {
+          return _dispatch.apply(void 0, arguments);
+        }
+      };
+      var chain = middlewares.map(function (middleware) {
+        return middleware(middlewareAPI);
+      });
+      _dispatch = compose.apply(void 0, chain)(store.dispatch);
+      return Object(_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__["default"])(Object(_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__["default"])({}, store), {}, {
+        dispatch: _dispatch
+      });
+    };
+  };
+}
 
-var fallbacks = /*#__PURE__*/function () {
-  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(tries, check) {
-    var err, _iterator, _step, _try, res;
+/*
+ * This is a dummy function to check if the function name has been altered by minification.
+ * If the function has been minified and NODE_ENV !== 'production', warn the user.
+ */
 
-    return _regenerator.default.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            _iterator = _createForOfIteratorHelper(tries);
-            _context.prev = 1;
+function isCrushed() {}
 
-            _iterator.s();
+if ( true && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {
+  warning('You are currently using minified code outside of NODE_ENV === "production". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');
+}
 
-          case 3:
-            if ((_step = _iterator.n()).done) {
-              _context.next = 18;
-              break;
-            }
 
-            _try = _step.value;
-            _context.prev = 5;
-            _context.next = 8;
-            return _try();
 
-          case 8:
-            res = _context.sent;
-            check && check(res);
-            return _context.abrupt("return", res);
-
-          case 13:
-            _context.prev = 13;
-            _context.t0 = _context["catch"](5);
-            err = _context.t0;
 
-          case 16:
-            _context.next = 3;
-            break;
-
-          case 18:
-            _context.next = 23;
-            break;
+/***/ }),
+/* 629 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
-          case 20:
-            _context.prev = 20;
-            _context.t1 = _context["catch"](1);
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _objectSpread2; });
+/* harmony import */ var _defineProperty_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(630);
 
-            _iterator.e(_context.t1);
 
-          case 23:
-            _context.prev = 23;
+function ownKeys(object, enumerableOnly) {
+  var keys = Object.keys(object);
 
-            _iterator.f();
+  if (Object.getOwnPropertySymbols) {
+    var symbols = Object.getOwnPropertySymbols(object);
+    enumerableOnly && (symbols = symbols.filter(function (sym) {
+      return Object.getOwnPropertyDescriptor(object, sym).enumerable;
+    })), keys.push.apply(keys, symbols);
+  }
 
-            return _context.finish(23);
+  return keys;
+}
 
-          case 26:
-            throw err;
+function _objectSpread2(target) {
+  for (var i = 1; i < arguments.length; i++) {
+    var source = null != arguments[i] ? arguments[i] : {};
+    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
+      Object(_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__["default"])(target, key, source[key]);
+    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
+      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
+    });
+  }
 
-          case 27:
-          case "end":
-            return _context.stop();
-        }
-      }
-    }, _callee, null, [[1, 20, 23, 26], [5, 13]]);
-  }));
+  return target;
+}
 
-  return function fallbacks(_x, _x2) {
-    return _ref.apply(this, arguments);
-  };
-}();
-/**
- * Fetch application/konnector that is installed
- *
- * @private
- */
+/***/ }),
+/* 630 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _defineProperty; });
+function _defineProperty(obj, key, value) {
+  if (key in obj) {
+    Object.defineProperty(obj, key, {
+      value: value,
+      enumerable: true,
+      configurable: true,
+      writable: true
+    });
+  } else {
+    obj[key] = value;
+  }
 
-var fetchAppOrKonnector = function fetchAppOrKonnector(stackClient, type, slug) {
-  return stackClient.fetchJSON('GET', "/".concat(type, "s/").concat(slug)).then(function (x) {
-    return x.data.attributes;
-  });
-};
-/**
- * Fetch application/konnector from the registry
- *
- * @private
- */
+  return obj;
+}
 
+/***/ }),
+/* 631 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
-var fetchAppOrKonnectorViaRegistry = function fetchAppOrKonnectorViaRegistry(stackClient, type, slug) {
-  return stackClient.fetchJSON('GET', "/registry/".concat(slug)).then(function (x) {
-    return x.latest_version.manifest;
-  });
-};
-/**
- * Get Icon URL using blob mechanism if OAuth connected
- * or using preloaded url when blob not needed
- *
- * @param  {CozyStackClient}  stackClient - CozyStackClient
- * @param  {object} opts - Options
- * @param  {string} opts.type - Options type
- * @param  {string|undefined} opts.slug - Options slug
- * @param  {object|string|undefined}  opts.appData - Apps data - io.cozy.apps
- * @param  {string} [opts.priority='stack'] - Options priority
- * @returns {Promise<string>} DOMString containing URL source or a URL representing the Blob .
- * @private
- * @throws {Error} while fetching icon, or unknown image extension
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/** A function that accepts a potential "extra argument" value to be injected later,
+ * and returns an instance of the thunk middleware that uses that value
  */
+function createThunkMiddleware(extraArgument) {
+  // Standard Redux middleware definition pattern:
+  // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware
+  var middleware = function middleware(_ref) {
+    var dispatch = _ref.dispatch,
+        getState = _ref.getState;
+    return function (next) {
+      return function (action) {
+        // The thunk middleware looks for any functions that were passed to `store.dispatch`.
+        // If this "action" is really a function, call it and return the result.
+        if (typeof action === 'function') {
+          // Inject the store's `dispatch` and `getState` methods, as well as any "extra arg"
+          return action(dispatch, getState, extraArgument);
+        } // Otherwise, pass the action down the middleware chain as usual
 
 
-var _getIconURL = /*#__PURE__*/function () {
-  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(stackClient, opts) {
-    var type, slug, appData, _opts$priority, priority, iconDataFetchers, resp, icon, app, appDataFetchers, ext, _URL, domain, protocol;
-
-    return _regenerator.default.wrap(function _callee2$(_context2) {
-      while (1) {
-        switch (_context2.prev = _context2.next) {
-          case 0:
-            type = opts.type, slug = opts.slug, appData = opts.appData, _opts$priority = opts.priority, priority = _opts$priority === void 0 ? 'stack' : _opts$priority;
-
-            if (!stackClient.oauthOptions) {
-              _context2.next = 29;
-              break;
-            }
-
-            iconDataFetchers = [function () {
-              return stackClient.fetch('GET', "/".concat(type, "s/").concat(slug, "/icon"));
-            }, function () {
-              return stackClient.fetch('GET', "/registry/".concat(slug, "/icon"));
-            }];
+        return next(action);
+      };
+    };
+  };
 
-            if (priority === 'registry') {
-              iconDataFetchers.reverse();
-            }
+  return middleware;
+}
 
-            _context2.next = 6;
-            return fallbacks(iconDataFetchers, function (resp) {
-              if (!resp.ok) {
-                throw new Error("Error while fetching icon ".concat(resp.statusText));
-              }
-            });
+var thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version
+// with whatever "extra arg" they want to inject into their thunks
 
-          case 6:
-            resp = _context2.sent;
-            _context2.next = 9;
-            return resp.blob();
+thunk.withExtraArgument = createThunkMiddleware;
+/* harmony default export */ __webpack_exports__["default"] = (thunk);
 
-          case 9:
-            icon = _context2.sent;
+/***/ }),
+/* 632 */
+/***/ (function(module, exports, __webpack_require__) {
 
-            if (icon.type) {
-              _context2.next = 26;
-              break;
-            }
+"use strict";
 
-            // iOS10 does not set correctly mime type for images, so we assume
-            // that an empty mime type could mean that the app is running on iOS10.
-            // For regular images like jpeg, png or gif it still works well in the
-            // Safari browser but not for SVG.
-            // So let's set a mime type manually. We cannot always set it to
-            // image/svg+xml and must guess the mime type based on the icon attribute
-            // from app/manifest
-            // See https://stackoverflow.com/questions/38318411/uiwebview-on-ios-10-beta-not-loading-any-svg-images
-            appDataFetchers = [function () {
-              return fetchAppOrKonnector(stackClient, type, slug);
-            }, function () {
-              return fetchAppOrKonnectorViaRegistry(stackClient, type, slug);
-            }];
 
-            if (priority === 'registry') {
-              appDataFetchers.reverse();
-            }
+var _interopRequireDefault = __webpack_require__(1);
 
-            _context2.t1 = appData;
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.extractAndMergeDocument = exports.getCollectionFromSlice = exports.getDocumentFromSlice = exports.default = exports.mergeDocumentsWithRelationships = void 0;
 
-            if (_context2.t1) {
-              _context2.next = 18;
-              break;
-            }
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-            _context2.next = 17;
-            return fallbacks(appDataFetchers);
+var _keyBy = _interopRequireDefault(__webpack_require__(633));
 
-          case 17:
-            _context2.t1 = _context2.sent;
+var _get = _interopRequireDefault(__webpack_require__(399));
 
-          case 18:
-            _context2.t0 = _context2.t1;
+var _isEqual = _interopRequireDefault(__webpack_require__(577));
 
-            if (_context2.t0) {
-              _context2.next = 21;
-              break;
-            }
+var _omit = _interopRequireDefault(__webpack_require__(523));
 
-            _context2.t0 = {};
+var _merge = _interopRequireDefault(__webpack_require__(532));
 
-          case 21:
-            app = _context2.t0;
-            ext = getIconExtensionFromApp(app);
+var _logger = _interopRequireDefault(__webpack_require__(498));
 
-            if (mimeTypes[ext]) {
-              _context2.next = 25;
-              break;
-            }
+var _queries = __webpack_require__(637);
 
-            throw new Error("Unknown image extension \"".concat(ext, "\" for app ").concat(app.name));
+var _dsl = __webpack_require__(495);
 
-          case 25:
-            icon = new Blob([icon], {
-              type: mimeTypes[ext]
-            });
+var _mutations = __webpack_require__(653);
 
-          case 26:
-            return _context2.abrupt("return", URL.createObjectURL(icon));
+var _helpers = __webpack_require__(654);
 
-          case 29:
-            _context2.prev = 29;
-            _URL = new URL(stackClient.uri), domain = _URL.host, protocol = _URL.protocol;
-            return _context2.abrupt("return", loadIcon(appData, slug, domain, protocol));
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-          case 34:
-            _context2.prev = 34;
-            _context2.t2 = _context2["catch"](29);
-            throw new Error("Cannot fetch icon: invalid stackClient.uri: ".concat(_context2.t2.message));
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-          case 37:
-          case "end":
-            return _context2.stop();
-        }
-      }
-    }, _callee2, null, [[29, 34]]);
-  }));
+var storeDocument = function storeDocument(state, document) {
+  var type = document._type;
 
-  return function _getIconURL(_x3, _x4) {
-    return _ref2.apply(this, arguments);
-  };
-}();
-/**
- * Get Icon URL using blob mechanism if OAuth connected
- * or using preloaded url when blob not needed
- *
- */
+  if (!type) {
+    if (true) {
+      _logger.default.info('Document without _type', document);
+    }
 
+    throw new Error('Document without _type');
+  }
 
-exports._getIconURL = _getIconURL;
+  if (!(0, _helpers.properId)(document)) {
+    if (true) {
+      _logger.default.info('Document without id', document);
+    }
 
-var getIconURL = function getIconURL() {
-  return _getIconURL.apply(this, arguments).catch(function () {
-    return new _memoize.ErrorReturned();
-  });
-};
+    throw new Error('Document without id');
+  }
 
-exports.getIconURL = getIconURL;
+  var existingDoc = (0, _get.default)(state, [type, (0, _helpers.properId)(document)]);
 
-var _default = (0, _memoize.default)(getIconURL, {
-  maxDuration: 300 * 1000,
-  key: function key(stackClient, opts) {
-    var type = opts.type,
-        slug = opts.slug,
-        priority = opts.priority;
-    return stackClient.uri + +':' + type + ':' + slug + ':' + priority;
+  if ((0, _isEqual.default)(existingDoc, document)) {
+    return state;
+  } else {
+    return _objectSpread(_objectSpread({}, state), {}, (0, _defineProperty2.default)({}, type, _objectSpread(_objectSpread({}, state[type]), {}, (0, _defineProperty2.default)({}, (0, _helpers.properId)(document), mergeDocumentsWithRelationships(existingDoc, document)))));
   }
-});
-
-exports.default = _default;
+};
 
-/***/ }),
-/* 614 */
-/***/ (function(module, exports, __webpack_require__) {
+var mergeDocumentsWithRelationships = function mergeDocumentsWithRelationships() {
+  var prevDocument = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+  var nextDocument = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
 
-"use strict";
+  /**
+   * @type {import("../types").CozyClientDocument}
+   */
+  var merged = _objectSpread(_objectSpread({}, prevDocument), nextDocument);
 
+  if (prevDocument.relationships || nextDocument.relationships) merged.relationships = _objectSpread(_objectSpread({}, prevDocument.relationships), nextDocument.relationships);
+  return merged;
+}; // reducer
 
-var _interopRequireDefault = __webpack_require__(1);
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.ErrorReturned = exports.default = void 0;
+exports.mergeDocumentsWithRelationships = mergeDocumentsWithRelationships;
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+var documents = function documents() {
+  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+  var action = arguments.length > 1 ? arguments[1] : undefined;
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+  if (!(0, _queries.isReceivingData)(action) && !(0, _mutations.isReceivingMutationResult)(action)) {
+    return state;
+  }
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+  if (action && action.definition && action.definition.mutationType === _dsl.MutationTypes.DELETE_DOCUMENT) {
+    var docId = action.definition.document._id;
+    var _type = action.definition.document._type;
+    return _objectSpread(_objectSpread({}, state), {}, (0, _defineProperty2.default)({}, _type, (0, _omit.default)(state[_type], docId)));
+  }
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+  var _action$response = action.response,
+      data = _action$response.data,
+      included = _action$response.included;
+  if (!data || Array.isArray(data) && data.length === 0) return state;
+  var updatedStateWithIncluded = included ? included.reduce(storeDocument, state) : state;
 
-var _wrapNativeSuper2 = _interopRequireDefault(__webpack_require__(583));
+  if (!Array.isArray(data)) {
+    return storeDocument(updatedStateWithIncluded, data);
+  }
 
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+  return extractAndMergeDocument(data, updatedStateWithIncluded);
+};
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+var _default = documents; // selector
 
-var ErrorReturned = /*#__PURE__*/function (_String) {
-  (0, _inherits2.default)(ErrorReturned, _String);
+exports.default = _default;
 
-  var _super = _createSuper(ErrorReturned);
+var getDocumentFromSlice = function getDocumentFromSlice() {
+  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+  var doctype = arguments.length > 1 ? arguments[1] : undefined;
+  var id = arguments.length > 2 ? arguments[2] : undefined;
 
-  function ErrorReturned() {
-    (0, _classCallCheck2.default)(this, ErrorReturned);
-    return _super.apply(this, arguments);
+  if (!doctype) {
+    throw new Error('getDocumentFromSlice: Cannot retrieve document with undefined doctype');
   }
 
-  return ErrorReturned;
-}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(String));
-/**
- * Delete outdated results from cache
- */
-
-
-exports.ErrorReturned = ErrorReturned;
-
-var garbageCollect = function garbageCollect(cache, maxDuration) {
-  var now = Date.now();
+  if (!id) {
+    throw new Error('getDocumentFromSlice: Cannot retrieve document with undefined id');
+  }
 
-  for (var _i = 0, _Object$keys = Object.keys(cache); _i < _Object$keys.length; _i++) {
-    var key = _Object$keys[_i];
-    var delta = now - cache[key].date;
+  if (!state[doctype]) {
+    if (true) {
+      _logger.default.info("getDocumentFromSlice: ".concat(doctype, " is absent from the store's documents. State is"), state);
+    }
 
-    if (delta > maxDuration) {
-      delete cache[key];
+    return null;
+  } else if (!state[doctype][id]) {
+    if (true) {
+      _logger.default.info("getDocumentFromSlice: ".concat(doctype, ":").concat(id, " is absent from the store documents. State is"), state);
     }
+
+    return null;
   }
-};
 
-var isPromise = function isPromise(maybePromise) {
-  return typeof maybePromise === 'object' && typeof maybePromise.then === 'function';
+  return state[doctype][id];
 };
-/**
- * Memoize with maxDuration and custom key
- */
-
 
-var memoize = function memoize(fn, options) {
-  var cache = {};
-  return function () {
-    var key = options.key.apply(null, arguments);
-    garbageCollect(cache, options.maxDuration);
-    var existing = cache[key];
+exports.getDocumentFromSlice = getDocumentFromSlice;
 
-    if (existing) {
-      return existing.result;
-    } else {
-      var result = fn.apply(this, arguments);
-      cache[key] = {
-        result: result,
-        date: Date.now()
-      };
-      /**
-       * If the result is a promise and this promise
-       * failed or resolved with a specific error (aka ErrorReturned),
-       * let's remove the result from the cache since we don't want to
-       * memoize error
-       */
+var getCollectionFromSlice = function getCollectionFromSlice() {
+  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+  var doctype = arguments.length > 1 ? arguments[1] : undefined;
 
-      if (isPromise(result)) {
-        result.then(function (v) {
-          if (v instanceof ErrorReturned) {
-            delete cache[key];
-          }
-        }).catch(function (e) {
-          delete cache[key];
-        });
-      }
+  if (!doctype) {
+    throw new Error('getDocumentFromSlice: Cannot retrieve document with undefined doctype');
+  }
 
-      return result;
+  if (!state[doctype]) {
+    if (true) {
+      _logger.default.info("getCollectionFromSlice: ".concat(doctype, " is absent from the store documents. State is"), state);
     }
-  };
+
+    return null;
+  }
+
+  return Object.values(state[doctype]);
 };
+/*
+  This method has been created in order to get a returned object
+  in `data` with the full set on information coming potentially from
+  `included`
 
-var _default = memoize;
-exports.default = _default;
+  This method should be somewhere else. The `document` shall not be
+  dealt with included / data and so on.
 
-/***/ }),
-/* 615 */
-/***/ (function(module, exports, __webpack_require__) {
+  This method takes `data` and `included` and merge both sources
+  together. It should be always up-to-date. The returned object
+  will be as full of information as it can be.
+*/
 
-"use strict";
 
+exports.getCollectionFromSlice = getCollectionFromSlice;
 
-var _interopRequireDefault = __webpack_require__(1);
+var extractAndMergeDocument = function extractAndMergeDocument(data, updatedStateWithIncluded) {
+  var doctype = data[0]._type;
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
+  if (!doctype) {
+    _logger.default.info('Document without _type', data[0]);
 
-var _logger = _interopRequireDefault(__webpack_require__(587));
+    throw new Error('Document without _type');
+  }
 
-var logDeprecate = function logDeprecate() {
-  if (false) {}
+  var sortedData = (0, _keyBy.default)(data, _helpers.properId);
+  var mergedData = Object.assign({}, updatedStateWithIncluded);
+  mergedData[doctype] = Object.assign({}, updatedStateWithIncluded[doctype]);
+  Object.values(sortedData).map(function (data) {
+    var id = (0, _helpers.properId)(data);
 
-  _logger.default.warn.apply(_logger.default, arguments);
+    if (mergedData[doctype][id]) {
+      mergedData[doctype][id] = (0, _merge.default)({}, mergedData[doctype][id], data);
+    } else {
+      mergedData[doctype][id] = data;
+    }
+  });
+  return mergedData;
 };
 
-var _default = logDeprecate;
-exports.default = _default;
+exports.extractAndMergeDocument = extractAndMergeDocument;
 
 /***/ }),
-/* 616 */
+/* 633 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
+var baseAssignValue = __webpack_require__(299),
+    createAggregator = __webpack_require__(634);
 
-
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
+/**
+ * Creates an object composed of keys generated from the results of running
+ * each element of `collection` thru `iteratee`. The corresponding value of
+ * each key is the last element responsible for generating the key. The
+ * iteratee is invoked with one argument: (value).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Collection
+ * @param {Array|Object} collection The collection to iterate over.
+ * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
+ * @returns {Object} Returns the composed aggregate object.
+ * @example
+ *
+ * var array = [
+ *   { 'dir': 'left', 'code': 97 },
+ *   { 'dir': 'right', 'code': 100 }
+ * ];
+ *
+ * _.keyBy(array, function(o) {
+ *   return String.fromCharCode(o.code);
+ * });
+ * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
+ *
+ * _.keyBy(array, 'dir');
+ * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
+ */
+var keyBy = createAggregator(function(result, value, key) {
+  baseAssignValue(result, key, value);
 });
-exports.shouldXMLHTTPRequestBeUsed = exports.fetchWithXMLHttpRequest = void 0;
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+module.exports = keyBy;
 
-var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+/***/ }),
+/* 634 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _memoize = _interopRequireDefault(__webpack_require__(406));
+var arrayAggregator = __webpack_require__(635),
+    baseAggregator = __webpack_require__(636),
+    baseIteratee = __webpack_require__(338),
+    isArray = __webpack_require__(324);
 
-var headersFromString = function headersFromString(headerString) {
-  return new Headers(headerString.split('\r\n').map(function (x) {
-    return x.split(':', 2);
-  }).filter(function (x) {
-    return x.length == 2;
-  }));
-};
 /**
- * Returns a `fetch()` like response but uses XHR.
- * XMLHTTPRequest provides upload progress events unlike fetch.
+ * Creates a function like `_.groupBy`.
  *
  * @private
- * @param {string} fullpath - Route path
- * @param {object} options - Fetch options
- * @param {Function} options.onUploadProgress - Callback to receive upload progress events
+ * @param {Function} setter The function to set accumulator values.
+ * @param {Function} [initializer] The accumulator object initializer.
+ * @returns {Function} Returns the new aggregator function.
  */
+function createAggregator(setter, initializer) {
+  return function(collection, iteratee) {
+    var func = isArray(collection) ? arrayAggregator : baseAggregator,
+        accumulator = initializer ? initializer() : {};
 
+    return func(collection, setter, baseIteratee(iteratee, 2), accumulator);
+  };
+}
 
-var fetchWithXMLHttpRequest = /*#__PURE__*/function () {
-  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(fullpath, options) {
-    var response;
-    return _regenerator.default.wrap(function _callee3$(_context3) {
-      while (1) {
-        switch (_context3.prev = _context3.next) {
-          case 0:
-            _context3.next = 2;
-            return new Promise(function (resolve, reject) {
-              var xhr = new XMLHttpRequest();
-
-              if (options.onUploadProgress && xhr.upload) {
-                xhr.upload.addEventListener('progress', options.onUploadProgress, false);
-              }
-
-              xhr.onload = function () {
-                if (this.readyState == 4) {
-                  resolve(this);
-                } else {
-                  reject(this);
-                }
-              };
-
-              xhr.onerror = function (err) {
-                reject(err);
-              };
-
-              xhr.open(options.method, fullpath, true);
-              xhr.withCredentials = true;
-
-              for (var _i = 0, _Object$entries = Object.entries(options.headers); _i < _Object$entries.length; _i++) {
-                var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
-                    headerName = _Object$entries$_i[0],
-                    headerValue = _Object$entries$_i[1];
-
-                xhr.setRequestHeader(headerName, headerValue);
-              }
-
-              xhr.send(options.body);
-            });
-
-          case 2:
-            response = _context3.sent;
-            return _context3.abrupt("return", {
-              headers: headersFromString(response.getAllResponseHeaders()),
-              ok: response.status >= 200 && response.status < 300,
-              text: function () {
-                var _text = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
-                  return _regenerator.default.wrap(function _callee$(_context) {
-                    while (1) {
-                      switch (_context.prev = _context.next) {
-                        case 0:
-                          return _context.abrupt("return", response.responseText);
+module.exports = createAggregator;
 
-                        case 1:
-                        case "end":
-                          return _context.stop();
-                      }
-                    }
-                  }, _callee);
-                }));
 
-                function text() {
-                  return _text.apply(this, arguments);
-                }
+/***/ }),
+/* 635 */
+/***/ (function(module, exports) {
 
-                return text;
-              }(),
-              json: function () {
-                var _json = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
-                  return _regenerator.default.wrap(function _callee2$(_context2) {
-                    while (1) {
-                      switch (_context2.prev = _context2.next) {
-                        case 0:
-                          return _context2.abrupt("return", JSON.parse(response.responseText));
+/**
+ * A specialized version of `baseAggregator` for arrays.
+ *
+ * @private
+ * @param {Array} [array] The array to iterate over.
+ * @param {Function} setter The function to set `accumulator` values.
+ * @param {Function} iteratee The iteratee to transform keys.
+ * @param {Object} accumulator The initial aggregated object.
+ * @returns {Function} Returns `accumulator`.
+ */
+function arrayAggregator(array, setter, iteratee, accumulator) {
+  var index = -1,
+      length = array == null ? 0 : array.length;
 
-                        case 1:
-                        case "end":
-                          return _context2.stop();
-                      }
-                    }
-                  }, _callee2);
-                }));
+  while (++index < length) {
+    var value = array[index];
+    setter(accumulator, value, iteratee(value), array);
+  }
+  return accumulator;
+}
 
-                function json() {
-                  return _json.apply(this, arguments);
-                }
+module.exports = arrayAggregator;
 
-                return json;
-              }(),
-              status: response.status,
-              statusText: response.statusText
-            });
 
-          case 4:
-          case "end":
-            return _context3.stop();
-        }
-      }
-    }, _callee3);
-  }));
+/***/ }),
+/* 636 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  return function fetchWithXMLHttpRequest(_x, _x2) {
-    return _ref.apply(this, arguments);
-  };
-}();
+var baseEach = __webpack_require__(444);
 
-exports.fetchWithXMLHttpRequest = fetchWithXMLHttpRequest;
-var doesXHRSupportLoadAndProgress = (0, _memoize.default)(function () {
-  var xhr = new XMLHttpRequest();
-  return 'onload' in xhr && 'onprogress' in xhr;
-});
+/**
+ * Aggregates elements of `collection` on `accumulator` with keys transformed
+ * by `iteratee` and values set by `setter`.
+ *
+ * @private
+ * @param {Array|Object} collection The collection to iterate over.
+ * @param {Function} setter The function to set `accumulator` values.
+ * @param {Function} iteratee The iteratee to transform keys.
+ * @param {Object} accumulator The initial aggregated object.
+ * @returns {Function} Returns `accumulator`.
+ */
+function baseAggregator(collection, setter, iteratee, accumulator) {
+  baseEach(collection, function(value, key, collection) {
+    setter(accumulator, value, iteratee(value), collection);
+  });
+  return accumulator;
+}
 
-var shouldXMLHTTPRequestBeUsed = function shouldXMLHTTPRequestBeUsed(method, path, options) {
-  return Boolean(options.onUploadProgress) && doesXHRSupportLoadAndProgress();
-};
+module.exports = baseAggregator;
 
-exports.shouldXMLHTTPRequestBeUsed = shouldXMLHTTPRequestBeUsed;
 
 /***/ }),
-/* 617 */
+/* 637 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -99663,3195 +95129,2813 @@ var _interopRequireDefault = __webpack_require__(1);
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.default = void 0;
-
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
-
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+exports.QueryIDGenerator = exports.getQueryFromSlice = exports.receiveQueryError = exports.receiveQueryResult = exports.loadQuery = exports.initQuery = exports.default = exports.updateData = exports.makeSorterFromDefinition = exports.mergeSelectorAndPartialIndex = exports.convert$gtNullSelectors = exports.sortAndLimitDocsIds = exports.isReceivingData = exports.isQueryAction = void 0;
 
 var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-/**
- * Caches promises while they are pending
- * Serves to dedupe equal queries requested at the same time
- */
-var PromiseCache = /*#__PURE__*/function () {
-  function PromiseCache() {
-    (0, _classCallCheck2.default)(this, PromiseCache);
-
-    /**
-     * Holds pending promises
-     *
-     * @type {Object.<string, Promise>}
-     */
-    this.pending = {};
-  }
-  /**
-   * Tries to find a pending promise corresponding to the result of keyFunc
-   * - If not found, promiseFunc is executed and the resulting promise is stored while it's pending
-   * - If found, it is immediately returned
-   *
-   * @template T
-   * @param  {function(): Promise<T>} promiseFunc - Not executed only if an "equal" promise is already pending.
-   * @param  {function(): string} keyFunc - Returns a key to find in cache to find a pending promise.
-   * @returns {Promise<T>}
-   */
-
+var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
 
-  (0, _createClass2.default)(PromiseCache, [{
-    key: "exec",
-    value: function () {
-      var _exec = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(promiseFunc, keyFunc) {
-        var key, already, prom, response;
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                key = keyFunc();
-                already = this.pending[key];
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-                if (already) {
-                  prom = already;
-                } else {
-                  prom = promiseFunc();
-                  this.pending[key] = prom;
-                }
+var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
 
-                _context.prev = 3;
-                _context.next = 6;
-                return prom;
+var _mapValues = _interopRequireDefault(__webpack_require__(298));
 
-              case 6:
-                response = _context.sent;
-                return _context.abrupt("return", response);
+var _groupBy = _interopRequireDefault(__webpack_require__(638));
 
-              case 8:
-                _context.prev = 8;
-                this.pending[key] = null;
-                return _context.finish(8);
+var _difference = _interopRequireDefault(__webpack_require__(639));
 
-              case 11:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee, this, [[3,, 8, 11]]);
-      }));
+var _intersection = _interopRequireDefault(__webpack_require__(641));
 
-      function exec(_x, _x2) {
-        return _exec.apply(this, arguments);
-      }
+var _concat = _interopRequireDefault(__webpack_require__(644));
 
-      return exec;
-    }()
-    /**
-     *
-     * @param {function(): string} keyFunc - Returns a key to find in cache to find a pending promise.
-     * @returns {Promise | null}
-     */
+var _isPlainObject = _interopRequireDefault(__webpack_require__(529));
 
-  }, {
-    key: "get",
-    value: function get(keyFunc) {
-      var key = keyFunc();
-      var already = this.pending[key];
-      if (already) return already;
-      return null;
-    }
-  }]);
-  return PromiseCache;
-}();
+var _uniq = _interopRequireDefault(__webpack_require__(522));
 
-var _default = PromiseCache;
-exports.default = _default;
+var _orderBy = _interopRequireDefault(__webpack_require__(645));
 
-/***/ }),
-/* 618 */
-/***/ (function(module, exports, __webpack_require__) {
+var _isString = _interopRequireDefault(__webpack_require__(651));
 
-"use strict";
+var _get = _interopRequireDefault(__webpack_require__(399));
 
+var _sift = _interopRequireDefault(__webpack_require__(652));
 
-var _interopRequireDefault = __webpack_require__(1);
+var _cozyFlags = _interopRequireDefault(__webpack_require__(493));
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
+var _documents = __webpack_require__(632);
 
-var _wrapNativeSuper2 = _interopRequireDefault(__webpack_require__(583));
+var _mutations = __webpack_require__(653);
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+var _helpers = __webpack_require__(654);
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+var _dsl = __webpack_require__(495);
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+var _logger = _interopRequireDefault(__webpack_require__(498));
 
-var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(291));
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+var INIT_QUERY = 'INIT_QUERY';
+var LOAD_QUERY = 'LOAD_QUERY';
+var RECEIVE_QUERY_RESULT = 'RECEIVE_QUERY_RESULT';
+var RECEIVE_QUERY_ERROR = 'RECEIVE_QUERY_ERROR'; // Read if the devtools are open to store the execution time
+// This is done at runtime to not read the value everytime
+// we receive a result. So you have to refresh your page
+// in order to get the stats
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+var executionStatsEnabled = (0, _cozyFlags.default)('debug');
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+var isQueryAction = function isQueryAction(action) {
+  return [INIT_QUERY, LOAD_QUERY, RECEIVE_QUERY_RESULT, RECEIVE_QUERY_ERROR].indexOf(action.type) !== -1;
+};
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+exports.isQueryAction = isQueryAction;
 
-var _CozyStackClient2 = _interopRequireDefault(__webpack_require__(449));
+var isReceivingData = function isReceivingData(action) {
+  return action.type === RECEIVE_QUERY_RESULT;
+};
+/** @type {import("../types").QueryState} */
 
-var _AccessToken = _interopRequireDefault(__webpack_require__(589));
 
-var _logDeprecate = _interopRequireDefault(__webpack_require__(615));
+exports.isReceivingData = isReceivingData;
+var queryInitialState = {
+  id: null,
+  definition: null,
+  fetchStatus: 'pending',
+  isFetching: null,
+  lastFetch: null,
+  lastUpdate: null,
+  lastErrorUpdate: null,
+  lastError: null,
+  hasMore: false,
+  count: 0,
+  fetchedPagesCount: 0,
+  data: [],
+  bookmark: null
+};
+/**
+ * Return the docs ids accordingly to the given sort and fetched docs
+ *
+ * @param {import("../types").QueryState} queryState - Current state
+ * @param {import("../types").DocumentsStateSlice} documents - Reference to the documents slice
+ * @param {Array<string>} ids - The updated ids after query
+ * @param {object} params - The additional params
+ * @param {number} params.count - The count of retrieved docs
+ * @param {number} params.fetchedPagesCount - The number of pages already fetched
+ * @returns {Array<string>} The list of sorted ids
+ */
 
-var _errors = _interopRequireDefault(__webpack_require__(582));
+var sortAndLimitDocsIds = function sortAndLimitDocsIds(queryState, documents, ids, _ref) {
+  var count = _ref.count,
+      fetchedPagesCount = _ref.fetchedPagesCount;
+  var evaluatedIds = (0, _toConsumableArray2.default)(ids);
 
-var _logger = _interopRequireDefault(__webpack_require__(587));
+  if (queryState.definition.sort && documents) {
+    var sorter = makeSorterFromDefinition(queryState.definition);
+    var allDocs = documents[queryState.definition.doctype];
+    var docs = allDocs ? evaluatedIds.map(function (_id) {
+      return allDocs[_id];
+    }).filter(Boolean) : [];
+    evaluatedIds = sorter(docs).map(_helpers.properId);
+  }
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+  var limit = queryState.definition.limit;
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+  if (limit) {
+    var sliceCount;
 
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+    if (count < limit) {
+      // When there are less results than the limit, this is either the first
+      // or last paginated query.
+      sliceCount = fetchedPagesCount > 1 ? limit * (fetchedPagesCount - 1) + count : count;
+    } else {
+      sliceCount = limit * fetchedPagesCount;
+    }
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+    evaluatedIds = evaluatedIds.slice(0, sliceCount);
+  }
 
+  return evaluatedIds;
+};
 /**
- * @typedef {string} SessionCode
+ * Return the query docs ids, taken from the action response and the documents' slice
+ *
+ * @param {import("../types").QueryState} queryState - Current state
+ * @param {object} response - The action response
+ * @param {import("../types").DocumentsStateSlice} documents - Reference to the documents slice
+ * @param {object} params - The additional params
+ * @param {number} params.count - The count of retrieved docs
+ * @param {number} params.fetchedPagesCount - The number of pages already fetched
+ * @returns {Array<string>} The list of sorted ids
  */
-var defaultoauthOptions = {
-  clientID: '',
-  clientName: '',
-  clientKind: '',
-  clientSecret: '',
-  clientURI: '',
-  registrationAccessToken: '',
-  redirectURI: '',
-  softwareID: '',
-  softwareVersion: '',
-  logoURI: '',
-  policyURI: '',
-  notificationPlatform: '',
-  notificationDeviceToken: ''
+
+
+exports.sortAndLimitDocsIds = sortAndLimitDocsIds;
+
+var updateQueryDataFromResponse = function updateQueryDataFromResponse(queryState, response, documents, _ref2) {
+  var count = _ref2.count,
+      fetchedPagesCount = _ref2.fetchedPagesCount;
+  var updatedIds = (0, _uniq.default)([].concat((0, _toConsumableArray2.default)(queryState.data), (0, _toConsumableArray2.default)(response.data.map(_helpers.properId))));
+  return sortAndLimitDocsIds(queryState, documents, updatedIds, {
+    count: count,
+    fetchedPagesCount: fetchedPagesCount
+  });
 };
 /**
- * Specialized `CozyStackClient` for mobile, implementing stack registration
- * through OAuth.
+ * Reducer for a query slice
+ *
+ * @param  {import("../types").QueryState} state - Current state
+ * @param  {any} action - Redux action
+ * @param  {import("../types").DocumentsStateSlice} documents - Reference to the next documents slice
+ * @returns {import("../types").QueryState} - Next state
  */
 
-var OAuthClient = /*#__PURE__*/function (_CozyStackClient) {
-  (0, _inherits2.default)(OAuthClient, _CozyStackClient);
 
-  var _super = _createSuper(OAuthClient);
+var query = function query() {
+  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : queryInitialState;
+  var action = arguments.length > 1 ? arguments[1] : undefined;
+  var documents = arguments.length > 2 ? arguments[2] : undefined;
 
-  function OAuthClient(_ref) {
-    var _this;
+  switch (action.type) {
+    case INIT_QUERY:
+      if (state.lastUpdate && state.id === action.queryId && state.definition === action.queryDefinition) {
+        return state;
+      }
 
-    var oauth = _ref.oauth,
-        _ref$scope = _ref.scope,
-        scope = _ref$scope === void 0 ? [] : _ref$scope,
-        onTokenRefresh = _ref.onTokenRefresh,
-        options = (0, _objectWithoutProperties2.default)(_ref, ["oauth", "scope", "onTokenRefresh"]);
-    (0, _classCallCheck2.default)(this, OAuthClient);
-    _this = _super.call(this, options);
+      return _objectSpread(_objectSpread({}, state), {}, {
+        id: action.queryId,
+        definition: action.queryDefinition,
+        options: action.options,
+        fetchStatus: state.lastUpdate ? state.fetchStatus : 'pending'
+      });
 
-    _this.setOAuthOptions(_objectSpread(_objectSpread({}, defaultoauthOptions), oauth));
+    case LOAD_QUERY:
+      if (state.fetchStatus === 'loading') {
+        return state;
+      }
 
-    if (oauth.token) {
-      _this.setToken(oauth.token);
-    }
-
-    _this.scope = scope;
-    _this.onTokenRefresh = onTokenRefresh;
-    return _this;
-  }
-  /**
-   * Checks if the client has his registration information from the server
-   *
-   * @returns {boolean} true if registered, false otherwise
-   * @private
-   */
-
-
-  (0, _createClass2.default)(OAuthClient, [{
-    key: "isRegistered",
-    value: function isRegistered() {
-      return this.oauthOptions.clientID !== '';
-    }
-    /**
-     * Converts a camel-cased data set to snake case, suitable for sending to the OAuth server
-     *
-     * @param   {object} data Initial data
-     * @returns {object} Formatted data
-     * @private
-     */
-
-  }, {
-    key: "snakeCaseOAuthData",
-    value: function snakeCaseOAuthData(data) {
-      var mappedFields = {
-        softwareID: 'software_id',
-        softwareVersion: 'software_version',
-        clientID: 'client_id',
-        clientName: 'client_name',
-        clientKind: 'client_kind',
-        clientURI: 'client_uri',
-        logoURI: 'logo_uri',
-        policyURI: 'policy_uri',
-        notificationPlatform: 'notification_platform',
-        notificationDeviceToken: 'notification_device_token',
-        redirectURI: 'redirect_uris'
-      };
-      var result = {};
-      Object.keys(data).forEach(function (fieldName) {
-        var key = mappedFields[fieldName] || fieldName;
-        var value = data[fieldName];
-        result[key] = value;
-      }); // special case: turn redirect_uris into an array
-
-      if (result['redirect_uris'] && result['redirect_uris'] instanceof Array === false) result['redirect_uris'] = [result['redirect_uris']];
-      return result;
-    }
-    /**
-     * Converts a snake-cased data set to camel case, suitable for internal use
-     *
-     * @param   {object} data Initial data
-     * @returns {object} Formatted data
-     * @private
-     */
+      if (state.fetchStatus === 'loaded' && action.backgroundFetching) {
+        return _objectSpread(_objectSpread({}, state), {}, {
+          fetchStatus: 'loaded',
+          isFetching: true
+        });
+      }
 
-  }, {
-    key: "camelCaseOAuthData",
-    value: function camelCaseOAuthData(data) {
-      var mappedFields = {
-        client_id: 'clientID',
-        client_name: 'clientName',
-        client_secret: 'clientSecret',
-        registration_access_token: 'registrationAccessToken',
-        software_id: 'softwareID',
-        redirect_uris: 'redirectURI'
-      };
-      var result = {};
-      Object.keys(data).forEach(function (fieldName) {
-        var key = mappedFields[fieldName] || fieldName;
-        var value = data[fieldName];
-        result[key] = value;
+      return _objectSpread(_objectSpread({}, state), {}, {
+        fetchStatus: 'loading'
       });
-      return result;
-    }
-    /** Performs the HTTP call to register the client to the server */
-
-  }, {
-    key: "doRegistration",
-    value: function doRegistration() {
-      return this.fetchJSON('POST', '/auth/register', this.snakeCaseOAuthData({
-        redirectURI: this.oauthOptions.redirectURI,
-        clientName: this.oauthOptions.clientName,
-        softwareID: this.oauthOptions.softwareID,
-        clientKind: this.oauthOptions.clientKind,
-        clientURI: this.oauthOptions.clientURI,
-        logoURI: this.oauthOptions.logoURI,
-        policyURI: this.oauthOptions.policyURI,
-        softwareVersion: this.oauthOptions.softwareVersion,
-        notificationPlatform: this.oauthOptions.notificationPlatform,
-        notificationDeviceToken: this.oauthOptions.notificationDeviceToken
-      }));
-    }
-    /**
-     * Registers the currenly configured client with the OAuth server and
-     * sets internal information from the server response
-     *
-     * @throws {Error} When the client is already registered
-     * @returns {Promise} A promise that resolves with a complete list of client information, including client ID and client secret.
-     */
-
-  }, {
-    key: "register",
-    value: function () {
-      var _register = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
-        var mandatoryFields, fields, missingMandatoryFields, data;
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                if (!this.isRegistered()) {
-                  _context.next = 2;
-                  break;
-                }
 
-                throw new Error('Client already registered');
+    case RECEIVE_QUERY_RESULT:
+      {
+        var response = action.response; // Data can be null when we get a 404 not found
+        // see Collection.get()
+        // but we still need to update the fetchStatus.
 
-              case 2:
-                mandatoryFields = ['redirectURI'];
-                fields = Object.keys(this.oauthOptions);
-                missingMandatoryFields = mandatoryFields.filter(function (fieldName) {
-                  return fields[fieldName];
-                });
+        if (!response.data) {
+          return _objectSpread(_objectSpread({}, state), {}, {
+            fetchStatus: 'loaded',
+            isFetching: action.backgroundFetching ? false : null,
+            lastFetch: Date.now(),
+            lastUpdate: Date.now()
+          });
+        }
+        /** @type {Partial<import("../types").QueryState>} */
 
-                if (!(missingMandatoryFields.length > 0)) {
-                  _context.next = 7;
-                  break;
-                }
 
-                throw new Error("Can't register client : missing ".concat(missingMandatoryFields, " fields"));
+        var common = _objectSpread({
+          fetchStatus: 'loaded',
+          isFetching: action.backgroundFetching ? false : null,
+          lastFetch: Date.now(),
+          lastUpdate: Date.now()
+        }, executionStatsEnabled && {
+          execution_stats: response.execution_stats
+        });
 
-              case 7:
-                _context.next = 9;
-                return this.doRegistration();
+        if (!Array.isArray(response.data)) {
+          return _objectSpread(_objectSpread(_objectSpread({}, state), common), {}, {
+            hasMore: false,
+            count: 1,
+            data: [(0, _helpers.properId)(response.data)]
+          });
+        }
 
-              case 9:
-                data = _context.sent;
-                this.setOAuthOptions(_objectSpread(_objectSpread({}, this.oauthOptions), {}, {
-                  client_id: data.client_id,
-                  client_name: data.client_name,
-                  client_secret: data.client_secret,
-                  registration_access_token: data.registration_access_token,
-                  software_id: data.software_id
-                }));
-                return _context.abrupt("return", this.oauthOptions);
+        var count = response.meta && response.meta.count ? response.meta.count : response.data.length;
 
-              case 12:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee, this);
-      }));
+        if (action.backgroundFetching) {
+          return _objectSpread(_objectSpread(_objectSpread({}, state), common), {}, {
+            bookmark: response.bookmark || null,
+            hasMore: response.next !== undefined ? response.next : state.hasMore,
+            count: count,
+            data: response.data.map(_helpers.properId)
+          });
+        }
 
-      function register() {
-        return _register.apply(this, arguments);
+        var fetchedPagesCount = state.fetchedPagesCount + 1;
+        var data = updateQueryDataFromResponse(state, response, documents, {
+          count: count,
+          fetchedPagesCount: fetchedPagesCount
+        });
+        return _objectSpread(_objectSpread(_objectSpread({}, state), common), {}, {
+          bookmark: response.bookmark || null,
+          hasMore: response.next !== undefined ? response.next : state.hasMore,
+          count: count,
+          fetchedPagesCount: fetchedPagesCount,
+          data: data
+        });
       }
 
-      return register;
-    }()
-    /**
-     * Unregisters the currenly configured client with the OAuth server.
-     *
-     * @throws {NotRegisteredException} When the client doesn't have it's registration information
-     * @returns {Promise}
-     */
+    case RECEIVE_QUERY_ERROR:
+      return _objectSpread(_objectSpread({}, state), {}, {
+        id: action.queryId,
+        fetchStatus: 'failed',
+        isFetching: action.backgroundFetching ? false : null,
+        lastError: action.error,
+        lastErrorUpdate: Date.now()
+      });
 
-  }, {
-    key: "unregister",
-    value: function () {
-      var _unregister = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
-        var clientID;
-        return _regenerator.default.wrap(function _callee2$(_context2) {
-          while (1) {
-            switch (_context2.prev = _context2.next) {
-              case 0:
-                if (this.isRegistered()) {
-                  _context2.next = 2;
-                  break;
-                }
+    default:
+      return state;
+  }
+};
+/**
+ * Normalize sift selector
+ *
+ * @returns {object}
+ */
 
-                throw new NotRegisteredException();
 
-              case 2:
-                clientID = this.oauthOptions.clientID;
-                this.oauthOptions.clientID = '';
-                return _context2.abrupt("return", this.fetchJSON('DELETE', "/auth/register/".concat(clientID), null, {
-                  headers: {
-                    Authorization: this.registrationAccessTokenToAuthHeader()
-                  }
-                }));
+var convert$gtNullSelectors = function convert$gtNullSelectors(selector) {
+  var result = {};
 
-              case 5:
-              case "end":
-                return _context2.stop();
-            }
-          }
-        }, _callee2, this);
-      }));
+  for (var _i = 0, _Object$entries = Object.entries(selector); _i < _Object$entries.length; _i++) {
+    var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
+        key = _Object$entries$_i[0],
+        value = _Object$entries$_i[1];
 
-      function unregister() {
-        return _unregister.apply(this, arguments);
-      }
+    var convertedValue = (0, _isPlainObject.default)(value) ? convert$gtNullSelectors(value) : value;
+    var convertedKey = key === '$gt' && convertedValue === null ? '$gtnull' : key;
+    result[convertedKey] = convertedValue;
+  }
 
-      return unregister;
-    }()
-    /**
-     * Fetches the complete set of client information from the server after it has been registered.
-     *
-     * @throws {NotRegisteredException} When the client doesn't have it's registration information
-     * @returns {Promise}
-     */
+  return result;
+};
+/**
+ * Merges query selectors with query partial indexes
+ *
+ * @param {object} queryDefinition - A query definition
+ * @returns {object} A query definition selector
+ */
 
-  }, {
-    key: "fetchInformation",
-    value: function () {
-      var _fetchInformation = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
-        return _regenerator.default.wrap(function _callee3$(_context3) {
-          while (1) {
-            switch (_context3.prev = _context3.next) {
-              case 0:
-                if (this.isRegistered()) {
-                  _context3.next = 2;
-                  break;
-                }
 
-                throw new NotRegisteredException();
+exports.convert$gtNullSelectors = convert$gtNullSelectors;
 
-              case 2:
-                return _context3.abrupt("return", this.fetchJSON('GET', "/auth/register/".concat(this.oauthOptions.clientID), null, {
-                  headers: {
-                    Authorization: this.registrationAccessTokenToAuthHeader()
-                  }
-                }));
+var mergeSelectorAndPartialIndex = function mergeSelectorAndPartialIndex(queryDefinition) {
+  return _objectSpread(_objectSpread({}, (0, _get.default)(queryDefinition, 'selector')), (0, _get.default)(queryDefinition, 'partialFilter'));
+};
+/**
+ * @param  {QueryDefinition} queryDefinition - A query definition
+ * @returns {function(import("../types").CozyClientDocument): boolean}
+ */
 
-              case 3:
-              case "end":
-                return _context3.stop();
-            }
-          }
-        }, _callee3, this);
-      }));
 
-      function fetchInformation() {
-        return _fetchInformation.apply(this, arguments);
-      }
+exports.mergeSelectorAndPartialIndex = mergeSelectorAndPartialIndex;
 
-      return fetchInformation;
-    }()
-    /**
-     * Overwrites the client own information. This method will update both the local information and the remote information on the OAuth server.
-     *
-     * @throws {NotRegisteredException} When the client doesn't have it's registration information
-     * @param   {object} information Set of information to update. Note that some fields such as `clientID` can't be updated.
-     * @param   {boolean} resetSecret = false Optionnal, whether to reset the client secret or not
-     * @returns {Promise} Resolves to a complete, updated list of client information
-     */
+var getSelectorFilterFn = function getSelectorFilterFn(queryDefinition) {
+  if (queryDefinition.selector || queryDefinition.partialFilter) {
+    var selectors = mergeSelectorAndPartialIndex(queryDefinition); // sift does not work like couchdb when using { $gt: null } as a selector, so we use a custom operator
 
-  }, {
-    key: "updateInformation",
-    value: function () {
-      var _updateInformation = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(information) {
-        var resetSecret,
-            mandatoryFields,
-            data,
-            result,
-            _args4 = arguments;
-        return _regenerator.default.wrap(function _callee4$(_context4) {
-          while (1) {
-            switch (_context4.prev = _context4.next) {
-              case 0:
-                resetSecret = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : false;
+    _sift.default.use({
+      $gtnull: function $gtnull(_selectorValue, actualValue) {
+        return !!actualValue;
+      }
+    });
 
-                if (this.isRegistered()) {
-                  _context4.next = 3;
-                  break;
-                }
+    return (0, _sift.default)(convert$gtNullSelectors(selectors));
+  } else if (queryDefinition.id) {
+    /** @type {object} */
+    var siftQuery = {
+      _id: queryDefinition.id
+    };
+    return (0, _sift.default)(siftQuery);
+  } else if (queryDefinition.ids) {
+    /** @type {object} */
+    var _siftQuery = {
+      _id: {
+        $in: queryDefinition.ids
+      }
+    };
+    return (0, _sift.default)(_siftQuery);
+  } else {
+    return null;
+  }
+};
+/**
+ *
+ * Returns a predicate function that checks if a document should be
+ * included in the result of the query.
+ *
+ * @param  {import("../types").QueryState} query - Definition of the query
+ * @returns {function(import("../types").CozyClientDocument): boolean} Predicate function
+ */
 
-                throw new NotRegisteredException();
 
-              case 3:
-                mandatoryFields = {
-                  clientID: this.oauthOptions.clientID,
-                  clientName: this.oauthOptions.clientName,
-                  redirectURI: this.oauthOptions.redirectURI,
-                  softwareID: this.oauthOptions.softwareID
-                };
-                data = this.snakeCaseOAuthData(_objectSpread(_objectSpread({}, mandatoryFields), information));
-                if (resetSecret) data['client_secret'] = this.oauthOptions.clientSecret;
-                _context4.next = 8;
-                return this.fetchJSON('PUT', "/auth/register/".concat(this.oauthOptions.clientID), data, {
-                  headers: {
-                    Authorization: this.registrationAccessTokenToAuthHeader()
-                  }
-                });
+var getQueryDocumentsChecker = function getQueryDocumentsChecker(query) {
+  var qdoctype = query.definition.doctype;
+  var selectorFilterFn = getSelectorFilterFn(query.definition);
+  return function (datum) {
+    var ddoctype = datum._type;
+    if (ddoctype !== qdoctype) return false;
+    if (datum._deleted) return false;
+    if (!selectorFilterFn) return true;
+    return !!selectorFilterFn(datum);
+  };
+};
 
-              case 8:
-                result = _context4.sent;
-                this.setOAuthOptions(_objectSpread(_objectSpread({}, data), result));
-                return _context4.abrupt("return", this.oauthOptions);
+var makeCaseInsensitiveStringSorter = function makeCaseInsensitiveStringSorter(attrName) {
+  return function (item) {
+    var attrValue = (0, _get.default)(item, attrName);
+    return (0, _isString.default)(attrValue) ? attrValue.toLowerCase() : attrValue;
+  };
+};
+/**
+ * Creates a sort function from a definition.
+ *
+ * Used to sort query results inside the store when creating a file or
+ * receiving updates.
+ *
+ * @param {QueryDefinition} definition - A query definition
+ * @returns {function(Array<import("../types").CozyClientDocument>): Array<import("../types").CozyClientDocument>}
+ *
+ * @private
+ */
 
-              case 11:
-              case "end":
-                return _context4.stop();
-            }
-          }
-        }, _callee4, this);
-      }));
 
-      function updateInformation(_x) {
-        return _updateInformation.apply(this, arguments);
-      }
+var makeSorterFromDefinition = function makeSorterFromDefinition(definition) {
+  var sort = definition.sort;
 
-      return updateInformation;
-    }()
-    /**
-     * Generates a random state code to be used during the OAuth process
-     *
-     * @returns {string}
-     */
+  if (!sort) {
+    return function (docs) {
+      return docs;
+    };
+  } else if (!Array.isArray(definition.sort)) {
+    _logger.default.warn('Correct update of queries with a sort that is not an array is not supported. Use an array as argument of QueryDefinition::sort');
 
-  }, {
-    key: "generateStateCode",
-    value: function generateStateCode() {
-      var STATE_SIZE = 16;
-      var hasCrypto = typeof window !== 'undefined' && typeof window.crypto !== 'undefined' && typeof window.crypto.getRandomValues === 'function';
-      var buffer;
+    return function (docs) {
+      return docs;
+    };
+  } else {
+    var attributeOrders = sort.map(function (x) {
+      return Object.entries(x)[0];
+    });
+    var attrs = attributeOrders.map(function (x) {
+      return x[0];
+    }).map(makeCaseInsensitiveStringSorter);
+    var orders = attributeOrders.map(function (x) {
+      return x[1];
+    });
+    return function (docs) {
+      return (0, _orderBy.default)(docs, attrs, orders);
+    };
+  }
+};
+/**
+ * Updates query state when new data comes in
+ *
+ * @param  {import("../types").QueryState} query - Current query state
+ * @param  {Array<import("../types").CozyClientDocument>} newData - New documents (in most case from the server)
+ * @param  {import("../types").DocumentsStateSlice} documents - A reference to the documents slice
+ * @returns {import("../types").QueryState} - Updated query state
+ */
 
-      if (hasCrypto) {
-        buffer = new Uint8Array(STATE_SIZE);
-        window.crypto.getRandomValues(buffer);
-      } else {
-        buffer = new Array(STATE_SIZE);
 
-        for (var i = 0; i < buffer.length; i++) {
-          buffer[i] = Math.floor(Math.random() * 255);
-        }
-      }
+exports.makeSorterFromDefinition = makeSorterFromDefinition;
 
-      return btoa(String.fromCharCode.apply(null, buffer)).replace(/=+$/, '').replace(/\//g, '_').replace(/\+/g, '-');
-    }
-    /**
-     * Generates the URL that the user should be sent to in order to accept the app's permissions.
-     *
-     * @throws {NotRegisteredException} When the client doesn't have it's registration information
-     * @param {object} options - URL generation options
-     * @param {string} options.stateCode - A random code to be included in the URl for security. Can be generated with `client.generateStateCode()`
-     * @param {Array} [options.scopes] - An array of permission scopes for the token.
-     * @param {SessionCode} [options.sessionCode] - A session code that can be used to create a session.
-     * @param {string} [options.codeChallenge] - A code challenge that can be used in a PKCE verification process.
-     * @returns {string} The URL
-     */
+var updateData = function updateData(query, newData, documents) {
+  var belongsToQuery = getQueryDocumentsChecker(query);
+  var res = (0, _mapValues.default)((0, _groupBy.default)(newData, belongsToQuery), function (docs) {
+    return docs.map(_helpers.properId);
+  });
+  var _res$true = res.true,
+      matchedIds = _res$true === void 0 ? [] : _res$true,
+      _res$false = res.false,
+      unmatchedIds = _res$false === void 0 ? [] : _res$false;
+  var originalIds = query.data;
+  var autoUpdate = query.options && query.options.autoUpdate;
+  var shouldRemove = !autoUpdate || autoUpdate.remove !== false;
+  var shouldAdd = !autoUpdate || autoUpdate.add !== false;
+  var shouldUpdate = !autoUpdate || autoUpdate.update !== false;
+  var toRemove = shouldRemove ? (0, _intersection.default)(originalIds, unmatchedIds) : [];
+  var toAdd = shouldAdd ? (0, _difference.default)(matchedIds, originalIds) : [];
+  var toUpdate = shouldUpdate ? (0, _intersection.default)(originalIds, matchedIds) : [];
+  var changed = toRemove.length || toAdd.length || toUpdate.length; // concat doesn't check duplicates (contrarily to union), which is ok as
+  // toAdd does not contain any id present in originalIds, by construction.
+  // It is also faster than union.
 
-  }, {
-    key: "getAuthCodeURL",
-    value: function getAuthCodeURL(_ref2) {
-      var stateCode = _ref2.stateCode,
-          _ref2$scopes = _ref2.scopes,
-          scopes = _ref2$scopes === void 0 ? this.scope : _ref2$scopes,
-          _ref2$sessionCode = _ref2.sessionCode,
-          sessionCode = _ref2$sessionCode === void 0 ? undefined : _ref2$sessionCode,
-          _ref2$codeChallenge = _ref2.codeChallenge,
-          codeChallenge = _ref2$codeChallenge === void 0 ? undefined : _ref2$codeChallenge;
-      if (!this.isRegistered()) throw new NotRegisteredException();
-      var query = {
-        client_id: this.oauthOptions.clientID,
-        redirect_uri: this.oauthOptions.redirectURI,
-        state: stateCode,
-        response_type: 'code',
-        scope: scopes.join(' ')
-      };
+  var updatedData = (0, _difference.default)((0, _concat.default)(originalIds, toAdd), toRemove);
+  var fetchedPagesCount = query.fetchedPagesCount;
+  var docsIds = sortAndLimitDocsIds(query, documents, updatedData, {
+    count: updatedData.length,
+    fetchedPagesCount: fetchedPagesCount
+  });
+  return _objectSpread(_objectSpread({}, query), {}, {
+    data: docsIds,
+    count: docsIds.length,
+    fetchedPagesCount: fetchedPagesCount,
+    lastUpdate: changed ? Date.now() : query.lastUpdate
+  });
+};
+/**
+ * Creates a function that returns an updated query state
+ * from an action
+ *
+ * @param  {object} action - A redux action
+ * @param  {import("../types").DocumentsStateSlice} documents - Reference to documents slice
+ * @returns {function(import("../types").QueryState): import("../types").QueryState} - Updater query state
+ */
 
-      if (this.oauthOptions.registerToken) {
-        query = _objectSpread(_objectSpread({}, query), {}, {
-          registerToken: this.oauthOptions.registerToken
-        });
-      }
 
-      if (sessionCode) {
-        query = _objectSpread(_objectSpread({}, query), {}, {
-          session_code: sessionCode
-        });
-      }
+exports.updateData = updateData;
 
-      if (codeChallenge) {
-        query = _objectSpread(_objectSpread({}, query), {}, {
-          code_challenge: codeChallenge,
-          code_challenge_method: 'S256'
-        });
-      }
+var autoQueryUpdater = function autoQueryUpdater(action, documents) {
+  return function (query) {
+    var data = (0, _get.default)(action, 'response.data') || (0, _get.default)(action, 'definition.document');
+    if (!data) return query;
 
-      return "".concat(this.uri, "/auth/authorize?").concat(this.dataToQueryString(query));
+    if (!Array.isArray(data)) {
+      data = [data];
     }
-  }, {
-    key: "dataToQueryString",
-    value: function dataToQueryString(data) {
-      return Object.keys(data).map(function (param) {
-        return "".concat(param, "=").concat(encodeURIComponent(data[param]));
-      }).join('&');
+
+    if (!data.length) {
+      return query;
     }
-    /**
-     * Retrieves the access code contained in the URL to which the user is redirected after accepting the app's permissions (the `redirectURI`).
-     *
-     * @throws {Error} The URL should contain the same state code as the one generated with `client.getAuthCodeURL()`. If not, it will throw an error
-     * @param   {string} pageURL The redirected page URL, containing the state code and the access code
-     * @param   {string} stateCode The state code that was contained in the original URL the user was sent to (see `client.getAuthCodeURL()`)
-     * @returns {string} The access code
-     */
 
-  }, {
-    key: "getAccessCodeFromURL",
-    value: function getAccessCodeFromURL(pageURL, stateCode) {
-      if (!stateCode) throw new Error('Missing state code');
-      var params = new URL(pageURL).searchParams;
-      var urlStateCode = params.get('state');
-      var urlAccessCode = params.get('access_code');
-      if (stateCode !== urlStateCode) throw new Error('Given state does not match url query state');
-      return urlAccessCode;
+    if (query.definition.doctype !== data[0]._type) {
+      return query;
     }
-    /**
-     * Exchanges an access code for an access token. This function does **not** update the client's token.
-     *
-     * @throws {NotRegisteredException} When the client doesn't have it's registration information
-     * @param   {string} accessCode - The access code contained in the redirection URL — see `client.getAccessCodeFromURL()`
-     * @param   {object} oauthOptionsArg — To use when OAuthClient is not yet registered (during login process)
-     * @param   {string} uri — To use when OAuthClient is not yet registered (during login process)
-     * @param   {string} codeVerifier — The PKCE code verifier (see https://docs.cozy.io/en/cozy-stack/auth/#pkce-extension)
-     * @returns {Promise} A promise that resolves with an AccessToken object.
-     */
 
-  }, {
-    key: "fetchAccessToken",
-    value: function () {
-      var _fetchAccessToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(accessCode, oauthOptionsArg, uri, codeVerifier) {
-        var oauthOptions, data, result;
-        return _regenerator.default.wrap(function _callee5$(_context5) {
-          while (1) {
-            switch (_context5.prev = _context5.next) {
-              case 0:
-                if (!(!this.isRegistered() && !oauthOptionsArg)) {
-                  _context5.next = 2;
-                  break;
-                }
+    return updateData(query, data, documents);
+  };
+};
+/**
+ * Creates a function that returns an updated query state
+ * from an action
+ *
+ * @param  {object} action - A redux action
+ * @param  {import("../types").DocumentsStateSlice} documents - Reference to documents slice
+ * @returns {function(import("../types").QueryState): import("../types").QueryState} - Updater query state
+ */
 
-                throw new NotRegisteredException();
 
-              case 2:
-                oauthOptions = oauthOptionsArg || this.oauthOptions;
-                data = {
-                  grant_type: 'authorization_code',
-                  code: accessCode,
-                  client_id: oauthOptions.clientID,
-                  client_secret: oauthOptions.clientSecret
-                };
+var manualQueryUpdater = function manualQueryUpdater(action, documents) {
+  return function (query) {
+    var updateQueries = action.updateQueries;
+    var response = action.response;
+    var updater = updateQueries[query.id];
 
-                if (codeVerifier) {
-                  data = _objectSpread(_objectSpread({}, data), {}, {
-                    code_verifier: codeVerifier
-                  });
-                }
+    if (!updater) {
+      return query;
+    }
 
-                _context5.next = 7;
-                return this.fetchJSON('POST', (uri || '') + '/auth/access_token', this.dataToQueryString(data), {
-                  headers: {
-                    'Content-Type': 'application/x-www-form-urlencoded'
-                  }
-                });
+    var doctype = query.definition.doctype;
+    var oldData = query.data;
+    var oldDocs = mapIdsToDocuments(documents, doctype, oldData);
+    var newData = updater(oldDocs, response);
+    var newDataIds = newData.map(_helpers.properId);
+    return _objectSpread(_objectSpread({}, query), {}, {
+      data: newDataIds,
+      count: newDataIds.length,
+      lastUpdate: Date.now()
+    });
+  };
+};
+/**
+ * @param  {import("../types").QueriesStateSlice}  state - Redux slice containing all the query states indexed by name
+ * @param  {object}  action - Income redux action
+ * @param  {import("../types").DocumentsStateSlice}  documents - Reference to documents slice
+ * @param  {boolean} haveDocumentsChanged - Has the document slice changed with current action
+ * @returns {import("../types").QueriesStateSlice}
+ */
 
-              case 7:
-                result = _context5.sent;
-                return _context5.abrupt("return", new _AccessToken.default(result));
 
-              case 9:
-              case "end":
-                return _context5.stop();
-            }
-          }
-        }, _callee5, this);
-      }));
+var queries = function queries() {
+  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+  var action = arguments.length > 1 ? arguments[1] : undefined;
+  var documents = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+  var haveDocumentsChanged = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
 
-      function fetchAccessToken(_x2, _x3, _x4, _x5) {
-        return _fetchAccessToken.apply(this, arguments);
-      }
+  if (action.type == INIT_QUERY) {
+    var newQueryState = query(state[action.queryId], action, documents); // Do not create new object unnecessarily
 
-      return fetchAccessToken;
-    }()
-    /**
-     * Used by the flagship application in order to create a token for the konnector with the given slug.
-     * This token can then be used by the client-side konnector to make requests to cozy-stack.
-     * The flagship app will need to use its own access token to request the konnector token.
-     *
-     * @param {string} slug - The slug of the konnector
-     * @returns {Promise<string>} - A promise that resolves with a new token
-     */
+    if (newQueryState === state[action.queryId]) {
+      return state;
+    }
 
-  }, {
-    key: "fetchKonnectorToken",
-    value: function () {
-      var _fetchKonnectorToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(slug) {
-        return _regenerator.default.wrap(function _callee6$(_context6) {
-          while (1) {
-            switch (_context6.prev = _context6.next) {
-              case 0:
-                _context6.prev = 0;
-                _context6.next = 3;
-                return this.fetchJSON('POST', "/auth/tokens/konnectors/".concat(slug));
+    return _objectSpread(_objectSpread({}, state), {}, (0, _defineProperty2.default)({}, action.queryId, newQueryState));
+  }
 
-              case 3:
-                return _context6.abrupt("return", _context6.sent);
+  if (isQueryAction(action)) {
+    var updater = autoQueryUpdater(action, documents);
+    return (0, _mapValues.default)(state, function (queryState) {
+      if (queryState.id == action.queryId) {
+        return query(queryState, action, documents);
+      } else if (haveDocumentsChanged) {
+        return updater(queryState);
+      } else {
+        return queryState;
+      }
+    });
+  }
 
-              case 6:
-                _context6.prev = 6;
-                _context6.t0 = _context6["catch"](0);
-                throw new Error("oAuthClient.fetchKonnectorToken(): Could not create a token for the konnector with slug \"".concat(slug, "\". \n\n").concat(_context6.t0));
+  if ((0, _mutations.isReceivingMutationResult)(action)) {
+    var _updater = action.updateQueries ? manualQueryUpdater(action, documents) : autoQueryUpdater(action, documents);
 
-              case 9:
-              case "end":
-                return _context6.stop();
-            }
-          }
-        }, _callee6, this, [[0, 6]]);
-      }));
+    return (0, _mapValues.default)(state, _updater);
+  }
 
-      function fetchKonnectorToken(_x6) {
-        return _fetchKonnectorToken.apply(this, arguments);
-      }
+  return state;
+};
 
-      return fetchKonnectorToken;
-    }()
-    /**
-     * @typedef SessionCodeRes
-     * @property {string} session_code The value of the session code
-     */
+var _default = queries;
+/**
+ * Create the query states in the store. Queries are indexed
+ * in the store by queryId
+ *
+ * @param  {string} queryId  Name/id of the query
+ * @param  {QueryDefinition} queryDefinition - Definition of the created query
+ * @param  {import("../types").QueryOptions} [options] - Options for the created query
+ * @returns {object} Redux action to dispatch
+ */
 
-    /**
-     * Fetches a new session code. Only usable by the Flagship application
-     *
-     * @throws {NotRegisteredException} When the client isn't certified to be the Flagship application
-     * @returns {Promise<SessionCodeRes>} A promise that resolves with a new session_code
-     */
+exports.default = _default;
 
-  }, {
-    key: "fetchSessionCode",
-    value: function () {
-      var _fetchSessionCode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
-        return _regenerator.default.wrap(function _callee7$(_context7) {
-          while (1) {
-            switch (_context7.prev = _context7.next) {
-              case 0:
-                return _context7.abrupt("return", this.fetchJSON('POST', '/auth/session_code'));
+var initQuery = function initQuery(queryId, queryDefinition) {
+  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
 
-              case 1:
-              case "end":
-                return _context7.stop();
-            }
-          }
-        }, _callee7, this);
-      }));
+  if (!queryDefinition.doctype) {
+    throw new Error('Cannot init query with no doctype');
+  }
 
-      function fetchSessionCode() {
-        return _fetchSessionCode.apply(this, arguments);
-      }
+  return {
+    type: INIT_QUERY,
+    queryId: queryId,
+    queryDefinition: queryDefinition,
+    options: options
+  };
+};
+/**
+ * Update the fetchStatus when the query is loading
+ *
+ * @param  {string} queryId - id of the query
+ * @param  {import("../types").QueryOptions} [options] - Options for the created query
+ * @returns {object} Redux action to dispatch
+ */
 
-      return fetchSessionCode;
-    }()
-    /**
-     * Fetches a new session code. Only usable by the Flagship application
-     *
-     * @throws {NotRegisteredException} When the client isn't certified to be the Flagship application
-     * @returns {Promise<SessionCodeRes>} A promise that resolves with a new session_code
-     */
 
-  }, {
-    key: "fetchSessionCodeWithPassword",
-    value: function () {
-      var _fetchSessionCodeWithPassword = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(_ref3) {
-        var passwordHash, _ref3$twoFactorToken, twoFactorToken, _ref3$twoFactorPassco, twoFactorPasscode;
+exports.initQuery = initQuery;
 
-        return _regenerator.default.wrap(function _callee8$(_context8) {
-          while (1) {
-            switch (_context8.prev = _context8.next) {
-              case 0:
-                passwordHash = _ref3.passwordHash, _ref3$twoFactorToken = _ref3.twoFactorToken, twoFactorToken = _ref3$twoFactorToken === void 0 ? undefined : _ref3$twoFactorToken, _ref3$twoFactorPassco = _ref3.twoFactorPasscode, twoFactorPasscode = _ref3$twoFactorPassco === void 0 ? undefined : _ref3$twoFactorPassco;
-                return _context8.abrupt("return", this.fetchJSON('POST', '/auth/session_code', {
-                  passphrase: passwordHash,
-                  two_factor_token: twoFactorToken,
-                  two_factor_passcode: twoFactorPasscode
-                }));
+var loadQuery = function loadQuery(queryId, options) {
+  return _objectSpread({
+    type: LOAD_QUERY,
+    queryId: queryId
+  }, options);
+};
+/**
+ * Update the fetchStatus when the query is loading
+ *
+ * @param  {string} queryId - id of the query
+ * @param {object} response - The action response
+ * @param  {import("../types").QueryOptions} [options] - Options for the created query
+ * @returns {object} Redux action to dispatch
+ */
 
-              case 2:
-              case "end":
-                return _context8.stop();
-            }
-          }
-        }, _callee8, this);
-      }));
 
-      function fetchSessionCodeWithPassword(_x7) {
-        return _fetchSessionCodeWithPassword.apply(this, arguments);
-      }
+exports.loadQuery = loadQuery;
 
-      return fetchSessionCodeWithPassword;
-    }()
-    /**
-     * @typedef AccessTokenRes
-     * @property {string} access_token The OAuth access token
-     * @property {string} refresh_token The OAuth refresh token
-     * @property {string} token_type The OAuth token type
-     * @property {string} scope The OAuth scope
-     */
+var receiveQueryResult = function receiveQueryResult(queryId, response) {
+  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+  return _objectSpread({
+    type: RECEIVE_QUERY_RESULT,
+    queryId: queryId,
+    response: response
+  }, options);
+};
+/**
+ * Update the fetchStatus when the query is loading
+ *
+ * @param  {string} queryId - id of the query
+ * @param {object} error - The action error
+ * @param  {import("../types").QueryOptions} [options] - Options for the created query
+ * @returns {object} Redux action to dispatch
+ */
 
-    /**
-     * @typedef TwoFactorNeededRes
-     * @property {string} two_factor_token The 2FA token
-     */
 
-    /**
-     * Get OAuth access and register tokens without having to make OAuth dance
-     *
-     * This endpoint returns registration tokens only from a Flagship app,
-     * otherwise it returns a session_code that should be used in an OAuth dance
-     *
-     * More info: https://docs.cozy.io/en/cozy-stack/flagship/
-     * More info: https://docs.cozy.io/en/cozy-stack/auth/#post-authloginflagship
-     *
-     * @returns {Promise<AccessTokenRes|TwoFactorNeededRes|SessionCodeRes>} A promise that resolves with an access token, a session_code or a 2FA code
-     */
+exports.receiveQueryResult = receiveQueryResult;
 
-  }, {
-    key: "loginFlagship",
-    value: function () {
-      var _loginFlagship = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(_ref4) {
-        var passwordHash, _ref4$twoFactorToken, twoFactorToken, _ref4$twoFactorPassco, twoFactorPasscode;
+var receiveQueryError = function receiveQueryError(queryId, error) {
+  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+  return _objectSpread({
+    type: RECEIVE_QUERY_ERROR,
+    queryId: queryId,
+    error: error
+  }, options);
+}; // selectors
 
-        return _regenerator.default.wrap(function _callee9$(_context9) {
-          while (1) {
-            switch (_context9.prev = _context9.next) {
-              case 0:
-                passwordHash = _ref4.passwordHash, _ref4$twoFactorToken = _ref4.twoFactorToken, twoFactorToken = _ref4$twoFactorToken === void 0 ? undefined : _ref4$twoFactorToken, _ref4$twoFactorPassco = _ref4.twoFactorPasscode, twoFactorPasscode = _ref4$twoFactorPassco === void 0 ? undefined : _ref4$twoFactorPassco;
-                return _context9.abrupt("return", this.fetchJSON('POST', '/auth/login/flagship', {
-                  client_id: this.oauthOptions.clientID,
-                  client_secret: this.oauthOptions.clientSecret,
-                  passphrase: passwordHash,
-                  two_factor_token: twoFactorToken,
-                  two_factor_passcode: twoFactorPasscode
-                }));
 
-              case 2:
-              case "end":
-                return _context9.stop();
-            }
-          }
-        }, _callee9, this);
-      }));
+exports.receiveQueryError = receiveQueryError;
 
-      function loginFlagship(_x8) {
-        return _loginFlagship.apply(this, arguments);
-      }
+var mapIdsToDocuments = function mapIdsToDocuments(documents, doctype, ids) {
+  return ids.map(function (id) {
+    return (0, _documents.getDocumentFromSlice)(documents, doctype, id);
+  });
+};
 
-      return loginFlagship;
-    }()
-    /**
-     * Retrieves a new access token by refreshing the currently used token.
-     *
-     * @throws {NotRegisteredException} When the client doesn't have it's registration information
-     * @throws {Error} The client should already have an access token to use this function
-     * @returns {Promise} A promise that resolves with a new AccessToken object
-     */
+var getQueryFromSlice = function getQueryFromSlice(state, queryId, documents) {
+  if (!state || !state[queryId]) {
+    return _objectSpread(_objectSpread({}, queryInitialState), {}, {
+      id: queryId,
+      data: null
+    });
+  }
 
-  }, {
-    key: "refreshToken",
-    value: function () {
-      var _refreshToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() {
-        var data, result, newToken, revoked;
-        return _regenerator.default.wrap(function _callee10$(_context10) {
-          while (1) {
-            switch (_context10.prev = _context10.next) {
-              case 0:
-                if (this.isRegistered()) {
-                  _context10.next = 2;
-                  break;
-                }
+  var query = state[queryId];
+  return documents ? _objectSpread(_objectSpread({}, query), {}, {
+    data: mapIdsToDocuments(documents, query.definition.doctype, query.data)
+  }) : query;
+};
 
-                throw new NotRegisteredException();
+exports.getQueryFromSlice = getQueryFromSlice;
 
-              case 2:
-                if (this.token) {
-                  _context10.next = 4;
-                  break;
-                }
-
-                throw new Error('No token to refresh');
-
-              case 4:
-                data = {
-                  grant_type: 'refresh_token',
-                  refresh_token: this.token.refreshToken,
-                  client_id: this.oauthOptions.clientID,
-                  client_secret: this.oauthOptions.clientSecret
-                };
-                _context10.prev = 5;
-                _context10.next = 8;
-                return this.fetchJSONWithCurrentToken('POST', '/auth/access_token', this.dataToQueryString(data), {
-                  headers: {
-                    'Content-Type': 'application/x-www-form-urlencoded'
-                  }
-                });
-
-              case 8:
-                result = _context10.sent;
-                newToken = new _AccessToken.default(_objectSpread({
-                  refresh_token: this.token.refreshToken
-                }, result));
-                this.setToken(newToken);
-
-                if (this.onTokenRefresh && typeof this.onTokenRefresh === 'function') {
-                  this.onTokenRefresh(newToken);
-                }
-
-                return _context10.abrupt("return", newToken);
-
-              case 15:
-                _context10.prev = 15;
-                _context10.t0 = _context10["catch"](5);
-
-                if (!this.isRevocationError(_context10.t0)) {
-                  _context10.next = 21;
-                  break;
-                }
-
-                this.onRevocationChange(true);
-
-                _logger.default.warn('Client has been revoked. Please authenticate again.');
-
-                throw _context10.t0;
-
-              case 21:
-                if (!(_errors.default.EXPIRED_TOKEN.test(_context10.t0.message) || _errors.default.INVALID_TOKEN.test(_context10.t0.message) || _errors.default.INVALID_TOKEN_ALT.test(_context10.t0.message))) {
-                  _context10.next = 28;
-                  break;
-                }
-
-                _context10.next = 24;
-                return this.checkForRevocation();
-
-              case 24:
-                revoked = _context10.sent;
-
-                if (!revoked) {
-                  _context10.next = 28;
-                  break;
-                }
-
-                _logger.default.warn('Client has been revoked. Please authenticate again.');
-
-                throw _context10.t0;
-
-              case 28:
-                throw _context10.t0;
-
-              case 29:
-              case "end":
-                return _context10.stop();
-            }
-          }
-        }, _callee10, this, [[5, 15]]);
-      }));
-
-      function refreshToken() {
-        return _refreshToken.apply(this, arguments);
-      }
+var QueryIDGenerator = /*#__PURE__*/function () {
+  function QueryIDGenerator() {
+    (0, _classCallCheck2.default)(this, QueryIDGenerator);
+    this.idCounter = 1;
+  }
+  /**
+   * Generates a random id for unamed queries
+   */
 
-      return refreshToken;
-    }()
-  }, {
-    key: "exchangeOAuthSecret",
-    value: function exchangeOAuthSecret(uri, secret) {
-      return this.fetchJSON('POST', uri + '/auth/secret_exchange', {
-        secret: secret
-      });
-    }
-    /**
-     * Updates the client's stored token
-     *
-     * @param {string} token = null The new token to use — can be a string, a json object or an AccessToken instance.
-     */
 
-  }, {
-    key: "setToken",
-    value: function setToken(token) {
-      if (token) {
-        this.token = token instanceof _AccessToken.default ? token : new _AccessToken.default(token);
-      } else {
-        this.token = null;
-      }
-    }
-  }, {
-    key: "setCredentials",
-    value: function setCredentials(token) {
-      (0, _logDeprecate.default)('setCredentials is deprecated, please replace by setToken');
-      return this.setToken(token);
+  (0, _createClass2.default)(QueryIDGenerator, [{
+    key: "generateRandomId",
+    value: function generateRandomId() {
+      var id = this.idCounter;
+      this.idCounter++;
+      return id.toString();
     }
     /**
-     * Updates the OAuth informations
+     * Generates an id for queries
+     * If the query is a getById only query,
+     * we can generate a name for it.
      *
-     * @param {object} options Map of OAuth options
-     */
-
-  }, {
-    key: "setOAuthOptions",
-    value: function setOAuthOptions(options) {
-      this.oauthOptions = this.camelCaseOAuthData(options);
-    }
-  }, {
-    key: "resetClientId",
-    value: function resetClientId() {
-      this.oauthOptions.clientID = '';
-    }
-    /**
-     * Reset the current OAuth client
-     */
-
-  }, {
-    key: "resetClient",
-    value: function resetClient() {
-      this.resetClientId();
-      this.setUri(null);
-      this.setToken(null);
-    }
-    /**
-     * Turns the client's registration access token into a header suitable for HTTP requests. Used in some queries to manipulate the client on the server side.
+     * If not, let's generate a random id
      *
+     * @param {QueryDefinition} queryDefinition The query definition
      * @returns {string}
-     * @private
      */
 
   }, {
-    key: "registrationAccessTokenToAuthHeader",
-    value: function registrationAccessTokenToAuthHeader() {
-      if (!this.oauthOptions.registrationAccessToken) {
-        throw new Error('No registration access token');
+    key: "generateId",
+    value: function generateId(queryDefinition) {
+      if (!(0, _dsl.isAGetByIdQuery)(queryDefinition)) {
+        return this.generateRandomId();
+      } else {
+        var id = queryDefinition.id,
+            doctype = queryDefinition.doctype;
+        return "".concat(doctype, "/").concat(id);
       }
-
-      return 'Bearer ' + this.oauthOptions.registrationAccessToken;
-    }
-    /**
-     * This method should be used in flagship app onboarding process to finalize the
-     * cozy creation by setting the user password into the cozy-stack
-     *
-     * More info: https://docs.cozy.io/en/cozy-stack/settings/#post-settingspassphraseflagship
-     *
-     * @param {object} params - parameters needed to set passphrase
-     * @param {string} params.registerToken - registration token provided by the onboarding link
-     * @param {string} params.passwordHash - hash of the master password
-     * @param {string} params.hint - hint for the master password
-     * @param {string} params.key - key (crypted) used for the vault encryption
-     * @param {string} params.publicKey - public key used for sharing ciphers from the vault
-     * @param {string} params.privateKey - private key (crypted) used for sharing ciphers from the vault
-     * @param {string} params.iterations - number of KDF iterations applied when hashing the master password
-     * @returns {object} token - The OAauth token
-     */
-
-  }, {
-    key: "setPassphraseFlagship",
-    value: function setPassphraseFlagship(_ref5) {
-      var registerToken = _ref5.registerToken,
-          passwordHash = _ref5.passwordHash,
-          hint = _ref5.hint,
-          key = _ref5.key,
-          publicKey = _ref5.publicKey,
-          privateKey = _ref5.privateKey,
-          iterations = _ref5.iterations;
-      return this.fetchJSON('POST', '/settings/passphrase/flagship', {
-        register_token: registerToken,
-        passphrase: passwordHash,
-        hint: hint,
-        key: key,
-        public_key: publicKey,
-        private_key: privateKey,
-        iterations: iterations,
-        client_id: this.oauthOptions.clientID,
-        client_secret: this.oauthOptions.clientSecret
-      }, {
-        // TODO: faut il mettre le header?
-        headers: {
-          Authorization: this.registrationAccessTokenToAuthHeader()
-        }
-      });
     }
-    /**
-     * Check if the OAuth client's has been revoked.
-     * If this is the case, call the onRevocationChange callback
-     *
-     * @async
-     * @returns {Promise<boolean>} A Promise that resolves to `false` if client is still valid, or `true` if it has been revoked.
-     */
-
-  }, {
-    key: "checkForRevocation",
-    value: function () {
-      var _checkForRevocation = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {
-        return _regenerator.default.wrap(function _callee11$(_context11) {
-          while (1) {
-            switch (_context11.prev = _context11.next) {
-              case 0:
-                _context11.prev = 0;
-                _context11.next = 3;
-                return this.fetchInformation();
-
-              case 3:
-                return _context11.abrupt("return", false);
-
-              case 6:
-                _context11.prev = 6;
-                _context11.t0 = _context11["catch"](0);
-
-                if (!this.isRevocationError(_context11.t0)) {
-                  _context11.next = 11;
-                  break;
-                }
-
-                this.onRevocationChange(true);
-                return _context11.abrupt("return", true);
-
-              case 11:
-                return _context11.abrupt("return", false);
-
-              case 12:
-              case "end":
-                return _context11.stop();
-            }
-          }
-        }, _callee11, this, [[0, 6]]);
-      }));
-
-      function checkForRevocation() {
-        return _checkForRevocation.apply(this, arguments);
-      }
-
-      return checkForRevocation;
-    }()
   }]);
-  return OAuthClient;
-}(_CozyStackClient2.default);
-
-var NotRegisteredException = /*#__PURE__*/function (_Error) {
-  (0, _inherits2.default)(NotRegisteredException, _Error);
-
-  var _super2 = _createSuper(NotRegisteredException);
-
-  function NotRegisteredException() {
-    var _this2;
-
-    var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Client not registered or missing OAuth information';
-    (0, _classCallCheck2.default)(this, NotRegisteredException);
-    _this2 = _super2.call(this, message);
-    _this2.message = message;
-    _this2.name = 'NotRegisteredException';
-    return _this2;
-  }
-
-  return NotRegisteredException;
-}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
+  return QueryIDGenerator;
+}();
 
-var _default = OAuthClient;
-exports.default = _default;
+exports.QueryIDGenerator = QueryIDGenerator;
+QueryIDGenerator.UNNAMED = 'unnamed';
 
 /***/ }),
-/* 619 */
+/* 638 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
+var baseAssignValue = __webpack_require__(299),
+    createAggregator = __webpack_require__(634);
 
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * Creates an object composed of keys generated from the results of running
+ * each element of `collection` thru `iteratee`. The order of grouped values
+ * is determined by the order they occur in `collection`. The corresponding
+ * value of each key is an array of elements responsible for generating the
+ * key. The iteratee is invoked with one argument: (value).
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Collection
+ * @param {Array|Object} collection The collection to iterate over.
+ * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
+ * @returns {Object} Returns the composed aggregate object.
+ * @example
+ *
+ * _.groupBy([6.1, 4.2, 6.3], Math.floor);
+ * // => { '4': [4.2], '6': [6.1, 6.3] }
+ *
+ * // The `_.property` iteratee shorthand.
+ * _.groupBy(['one', 'two', 'three'], 'length');
+ * // => { '3': ['one', 'two'], '5': ['three'] }
+ */
+var groupBy = createAggregator(function(result, value, key) {
+  if (hasOwnProperty.call(result, key)) {
+    result[key].push(value);
+  } else {
+    baseAssignValue(result, key, [value]);
+  }
 });
-exports.DOCTYPE_PERMISSIONS = exports.DOCTYPE_FILES = exports.REGISTRATION_ABORT = void 0;
-var REGISTRATION_ABORT = 'REGISTRATION_ABORT';
-exports.REGISTRATION_ABORT = REGISTRATION_ABORT;
-var DOCTYPE_FILES = 'io.cozy.files';
-exports.DOCTYPE_FILES = DOCTYPE_FILES;
-var DOCTYPE_PERMISSIONS = 'io.cozy.permissions';
-exports.DOCTYPE_PERMISSIONS = DOCTYPE_PERMISSIONS;
 
-/***/ }),
-/* 620 */
-/***/ (function(module, exports, __webpack_require__) {
+module.exports = groupBy;
 
-"use strict";
 
+/***/ }),
+/* 639 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _interopRequireDefault = __webpack_require__(1);
+var baseDifference = __webpack_require__(640),
+    baseFlatten = __webpack_require__(420),
+    baseRest = __webpack_require__(433),
+    isArrayLikeObject = __webpack_require__(441);
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
+/**
+ * Creates an array of `array` values not included in the other given arrays
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+ * for equality comparisons. The order and references of result values are
+ * determined by the first array.
+ *
+ * **Note:** Unlike `_.pullAll`, this method returns a new array.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Array
+ * @param {Array} array The array to inspect.
+ * @param {...Array} [values] The values to exclude.
+ * @returns {Array} Returns the new array of filtered values.
+ * @see _.without, _.xor
+ * @example
+ *
+ * _.difference([2, 1], [2, 3]);
+ * // => [1]
+ */
+var difference = baseRest(function(array, values) {
+  return isArrayLikeObject(array)
+    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))
+    : [];
 });
-exports.default = exports.transformBulkDocsResponse = void 0;
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
-
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+module.exports = difference;
 
-var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(291));
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+/***/ }),
+/* 640 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+var SetCache = __webpack_require__(374),
+    arrayIncludes = __webpack_require__(424),
+    arrayIncludesWith = __webpack_require__(429),
+    arrayMap = __webpack_require__(409),
+    baseUnary = __webpack_require__(331),
+    cacheHas = __webpack_require__(378);
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+/** Used as the size to enable large array optimizations. */
+var LARGE_ARRAY_SIZE = 200;
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+/**
+ * The base implementation of methods like `_.difference` without support
+ * for excluding multiple arrays or iteratee shorthands.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {Array} values The values to exclude.
+ * @param {Function} [iteratee] The iteratee invoked per element.
+ * @param {Function} [comparator] The comparator invoked per element.
+ * @returns {Array} Returns the new array of filtered values.
+ */
+function baseDifference(array, values, iteratee, comparator) {
+  var index = -1,
+      includes = arrayIncludes,
+      isCommon = true,
+      length = array.length,
+      result = [],
+      valuesLength = values.length;
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+  if (!length) {
+    return result;
+  }
+  if (iteratee) {
+    values = arrayMap(values, baseUnary(iteratee));
+  }
+  if (comparator) {
+    includes = arrayIncludesWith;
+    isCommon = false;
+  }
+  else if (values.length >= LARGE_ARRAY_SIZE) {
+    includes = cacheHas;
+    isCommon = false;
+    values = new SetCache(values);
+  }
+  outer:
+  while (++index < length) {
+    var value = array[index],
+        computed = iteratee == null ? value : iteratee(value);
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+    value = (comparator || value !== 0) ? value : 0;
+    if (isCommon && computed === computed) {
+      var valuesIndex = valuesLength;
+      while (valuesIndex--) {
+        if (values[valuesIndex] === computed) {
+          continue outer;
+        }
+      }
+      result.push(value);
+    }
+    else if (!includes(values, computed, comparator)) {
+      result.push(value);
+    }
+  }
+  return result;
+}
 
-var _zipWith = _interopRequireDefault(__webpack_require__(621));
+module.exports = baseDifference;
 
-var _dsl = __webpack_require__(495);
 
-var _CozyLink2 = _interopRequireDefault(__webpack_require__(623));
+/***/ }),
+/* 641 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _const = __webpack_require__(619);
+var arrayMap = __webpack_require__(409),
+    baseIntersection = __webpack_require__(642),
+    baseRest = __webpack_require__(433),
+    castArrayLikeObject = __webpack_require__(643);
 
-var _errors = __webpack_require__(624);
+/**
+ * Creates an array of unique values that are included in all given arrays
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+ * for equality comparisons. The order and references of result values are
+ * determined by the first array.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Array
+ * @param {...Array} [arrays] The arrays to inspect.
+ * @returns {Array} Returns the new array of intersecting values.
+ * @example
+ *
+ * _.intersection([2, 1], [2, 3]);
+ * // => [2]
+ */
+var intersection = baseRest(function(arrays) {
+  var mapped = arrayMap(arrays, castArrayLikeObject);
+  return (mapped.length && mapped[0] === arrays[0])
+    ? baseIntersection(mapped)
+    : [];
+});
 
-var _logger = _interopRequireDefault(__webpack_require__(498));
+module.exports = intersection;
 
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+/***/ }),
+/* 642 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+var SetCache = __webpack_require__(374),
+    arrayIncludes = __webpack_require__(424),
+    arrayIncludesWith = __webpack_require__(429),
+    arrayMap = __webpack_require__(409),
+    baseUnary = __webpack_require__(331),
+    cacheHas = __webpack_require__(378);
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeMin = Math.min;
 
 /**
- *
- * To know if cozy-client should use Document.find()
- * or Document.all()
- * Similar to what is done in CozyPouchLink executeQuery()
- *
- * @param {QueryDefinition} queryDefinition - QueryDefinition to check
- * @returns {boolean} If has find options
- *
- */
-var hasFindOptions = function hasFindOptions(queryDefinition) {
-  var selector = queryDefinition.selector,
-      partialFilter = queryDefinition.partialFilter,
-      sort = queryDefinition.sort,
-      fields = queryDefinition.fields;
-  if (selector || partialFilter || sort || fields) return true;
-  return false;
-};
-/**
- * Returns full documents after a bulk update
+ * The base implementation of methods like `_.intersection`, without support
+ * for iteratee shorthands, that accepts an array of arrays to inspect.
  *
  * @private
- *
- * @param  {import("./types").CouchDBBulkResult[]} bulkResponse - Response from bulk docs
- * @param  {import("./types").CozyClientDocument[]} originalDocuments - Documents that were updated
- * @returns {{ data: import("./types").CozyClientDocument[] }} - Full documents with updated _id and _rev
- */
-
-
-var transformBulkDocsResponse = function transformBulkDocsResponse(bulkResponse, originalDocuments) {
-  var updatedDocs = (0, _zipWith.default)(bulkResponse, originalDocuments, function (result, od) {
-    return result.ok ? _objectSpread(_objectSpread({}, od), {}, {
-      _id: result.id,
-      _rev: result.rev
-    }) : od;
-  });
-
-  if (bulkResponse.find(function (x) {
-    return !x.ok;
-  })) {
-    throw new _errors.BulkEditError(bulkResponse, updatedDocs);
-  }
-
-  return {
-    data: updatedDocs
-  };
-};
-/**
- * Transfers queries and mutations to a remote stack
+ * @param {Array} arrays The arrays to inspect.
+ * @param {Function} [iteratee] The iteratee invoked per element.
+ * @param {Function} [comparator] The comparator invoked per element.
+ * @returns {Array} Returns the new array of shared values.
  */
+function baseIntersection(arrays, iteratee, comparator) {
+  var includes = comparator ? arrayIncludesWith : arrayIncludes,
+      length = arrays[0].length,
+      othLength = arrays.length,
+      othIndex = othLength,
+      caches = Array(othLength),
+      maxLength = Infinity,
+      result = [];
 
-
-exports.transformBulkDocsResponse = transformBulkDocsResponse;
-
-var StackLink = /*#__PURE__*/function (_CozyLink) {
-  (0, _inherits2.default)(StackLink, _CozyLink);
-
-  var _super = _createSuper(StackLink);
-
-  /**
-   * @param {object} [options] - Options
-   * @param  {object} [options.stackClient] - A StackClient
-   * @param  {object} [options.client] - A StackClient (deprecated)
-   */
-  function StackLink() {
-    var _this;
-
-    var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
-        client = _ref.client,
-        stackClient = _ref.stackClient;
-
-    (0, _classCallCheck2.default)(this, StackLink);
-    _this = _super.call(this);
-
-    if (client) {
-      _logger.default.warn('Using options.client is deprecated, prefer options.stackClient');
+  while (othIndex--) {
+    var array = arrays[othIndex];
+    if (othIndex && iteratee) {
+      array = arrayMap(array, baseUnary(iteratee));
     }
-
-    _this.stackClient = stackClient || client;
-    return _this;
+    maxLength = nativeMin(array.length, maxLength);
+    caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))
+      ? new SetCache(othIndex && array)
+      : undefined;
   }
+  array = arrays[0];
 
-  (0, _createClass2.default)(StackLink, [{
-    key: "registerClient",
-    value: function registerClient(client) {
-      this.stackClient = client.stackClient || client.client;
-    }
-  }, {
-    key: "reset",
-    value: function reset() {
-      this.stackClient = null;
-    }
-  }, {
-    key: "request",
-    value: function request(operation, result, forward) {
-      if (operation.mutationType) {
-        return this.executeMutation(operation, result, forward);
-      }
-
-      return this.executeQuery(operation);
-    }
-    /**
-     *
-     * @param {QueryDefinition} query - Query to execute
-     * @returns {Promise<import("./types").ClientResponse>}
-     */
-
-  }, {
-    key: "executeQuery",
-    value: function executeQuery(query) {
-      var doctype = query.doctype,
-          selector = query.selector,
-          id = query.id,
-          ids = query.ids,
-          referenced = query.referenced,
-          options = (0, _objectWithoutProperties2.default)(query, ["doctype", "selector", "id", "ids", "referenced"]);
-
-      if (!doctype) {
-        _logger.default.warn('Bad query', query);
-
-        throw new Error('No doctype found in a query definition');
-      }
-
-      var collection = this.stackClient.collection(doctype);
-
-      if (id) {
-        return collection.get(id, query);
-      }
+  var index = -1,
+      seen = caches[0];
 
-      if (ids) {
-        return collection.getAll(ids);
-      }
+  outer:
+  while (++index < length && result.length < maxLength) {
+    var value = array[index],
+        computed = iteratee ? iteratee(value) : value;
 
-      if (referenced) {
-        return collection.findReferencedBy(referenced, options);
+    value = (comparator || value !== 0) ? value : 0;
+    if (!(seen
+          ? cacheHas(seen, computed)
+          : includes(result, computed, comparator)
+        )) {
+      othIndex = othLength;
+      while (--othIndex) {
+        var cache = caches[othIndex];
+        if (!(cache
+              ? cacheHas(cache, computed)
+              : includes(arrays[othIndex], computed, comparator))
+            ) {
+          continue outer;
+        }
       }
-
-      if (hasFindOptions(query)) {
-        return collection.find(selector, options);
-      } else {
-        return collection.all(options);
+      if (seen) {
+        seen.push(computed);
       }
+      result.push(value);
     }
-  }, {
-    key: "executeMutation",
-    value: function () {
-      var _executeMutation = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(mutation, result, forward) {
-        var mutationType, doc, docs, props, updateAllResp;
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                mutationType = mutation.mutationType, doc = mutation.document, docs = mutation.documents, props = (0, _objectWithoutProperties2.default)(mutation, ["mutationType", "document", "documents"]);
-                _context.t0 = mutationType;
-                _context.next = _context.t0 === _dsl.MutationTypes.CREATE_DOCUMENT ? 4 : _context.t0 === _dsl.MutationTypes.UPDATE_DOCUMENTS ? 5 : _context.t0 === _dsl.MutationTypes.UPDATE_DOCUMENT ? 9 : _context.t0 === _dsl.MutationTypes.DELETE_DOCUMENT ? 10 : _context.t0 === _dsl.MutationTypes.ADD_REFERENCES_TO ? 11 : _context.t0 === _dsl.MutationTypes.REMOVE_REFERENCES_TO ? 12 : _context.t0 === _dsl.MutationTypes.ADD_REFERENCED_BY ? 13 : _context.t0 === _dsl.MutationTypes.REMOVE_REFERENCED_BY ? 18 : _context.t0 === _dsl.MutationTypes.UPLOAD_FILE ? 23 : 24;
-                break;
-
-              case 4:
-                return _context.abrupt("return", this.stackClient.collection(doc._type).create(doc));
-
-              case 5:
-                _context.next = 7;
-                return this.stackClient.collection(docs[0]._type).updateAll(docs);
-
-              case 7:
-                updateAllResp = _context.sent;
-                return _context.abrupt("return", transformBulkDocsResponse(updateAllResp, docs));
-
-              case 9:
-                return _context.abrupt("return", this.stackClient.collection(doc._type).update(doc));
-
-              case 10:
-                return _context.abrupt("return", this.stackClient.collection(doc._type).destroy(doc));
-
-              case 11:
-                return _context.abrupt("return", this.stackClient.collection(props.referencedDocuments[0]._type).addReferencesTo(doc, props.referencedDocuments));
-
-              case 12:
-                return _context.abrupt("return", this.stackClient.collection(props.referencedDocuments[0]._type).removeReferencesTo(doc, props.referencedDocuments));
-
-              case 13:
-                if (!(doc._type === _const.DOCTYPE_FILES)) {
-                  _context.next = 17;
-                  break;
-                }
-
-                return _context.abrupt("return", this.stackClient.collection(_const.DOCTYPE_FILES).addReferencedBy(doc, props.referencedDocuments));
-
-              case 17:
-                throw new Error('The document type should be io.cozy.files');
-
-              case 18:
-                if (!(doc._type === _const.DOCTYPE_FILES)) {
-                  _context.next = 22;
-                  break;
-                }
-
-                return _context.abrupt("return", this.stackClient.collection(_const.DOCTYPE_FILES).removeReferencedBy(doc, props.referencedDocuments));
+  }
+  return result;
+}
 
-              case 22:
-                throw new Error('The document type should be io.cozy.files');
+module.exports = baseIntersection;
 
-              case 23:
-                return _context.abrupt("return", this.stackClient.collection(_const.DOCTYPE_FILES).upload(props.file, props.dirPath));
 
-              case 24:
-                return _context.abrupt("return", forward(mutation, result));
+/***/ }),
+/* 643 */
+/***/ (function(module, exports, __webpack_require__) {
 
-              case 25:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee, this);
-      }));
+var isArrayLikeObject = __webpack_require__(441);
 
-      function executeMutation(_x, _x2, _x3) {
-        return _executeMutation.apply(this, arguments);
-      }
+/**
+ * Casts `value` to an empty array if it's not an array like object.
+ *
+ * @private
+ * @param {*} value The value to inspect.
+ * @returns {Array|Object} Returns the cast array-like object.
+ */
+function castArrayLikeObject(value) {
+  return isArrayLikeObject(value) ? value : [];
+}
 
-      return executeMutation;
-    }()
-  }]);
-  return StackLink;
-}(_CozyLink2.default);
+module.exports = castArrayLikeObject;
 
-exports.default = StackLink;
 
 /***/ }),
-/* 621 */
+/* 644 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseRest = __webpack_require__(433),
-    unzipWith = __webpack_require__(622);
+var arrayPush = __webpack_require__(386),
+    baseFlatten = __webpack_require__(420),
+    copyArray = __webpack_require__(460),
+    isArray = __webpack_require__(324);
 
 /**
- * This method is like `_.zip` except that it accepts `iteratee` to specify
- * how grouped values should be combined. The iteratee is invoked with the
- * elements of each group: (...group).
+ * Creates a new array concatenating `array` with any additional arrays
+ * and/or values.
  *
  * @static
  * @memberOf _
- * @since 3.8.0
+ * @since 4.0.0
  * @category Array
- * @param {...Array} [arrays] The arrays to process.
- * @param {Function} [iteratee=_.identity] The function to combine
- *  grouped values.
- * @returns {Array} Returns the new array of grouped elements.
+ * @param {Array} array The array to concatenate.
+ * @param {...*} [values] The values to concatenate.
+ * @returns {Array} Returns the new concatenated array.
  * @example
  *
- * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {
- *   return a + b + c;
- * });
- * // => [111, 222]
+ * var array = [1];
+ * var other = _.concat(array, 2, [3], [[4]]);
+ *
+ * console.log(other);
+ * // => [1, 2, 3, [4]]
+ *
+ * console.log(array);
+ * // => [1]
  */
-var zipWith = baseRest(function(arrays) {
-  var length = arrays.length,
-      iteratee = length > 1 ? arrays[length - 1] : undefined;
+function concat() {
+  var length = arguments.length;
+  if (!length) {
+    return [];
+  }
+  var args = Array(length - 1),
+      array = arguments[0],
+      index = length;
 
-  iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;
-  return unzipWith(arrays, iteratee);
-});
+  while (index--) {
+    args[index - 1] = arguments[index];
+  }
+  return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
+}
 
-module.exports = zipWith;
+module.exports = concat;
 
 
 /***/ }),
-/* 622 */
+/* 645 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var apply = __webpack_require__(435),
-    arrayMap = __webpack_require__(409),
-    unzip = __webpack_require__(440);
+var baseOrderBy = __webpack_require__(646),
+    isArray = __webpack_require__(324);
 
 /**
- * This method is like `_.unzip` except that it accepts `iteratee` to specify
- * how regrouped values should be combined. The iteratee is invoked with the
- * elements of each group: (...group).
+ * This method is like `_.sortBy` except that it allows specifying the sort
+ * orders of the iteratees to sort by. If `orders` is unspecified, all values
+ * are sorted in ascending order. Otherwise, specify an order of "desc" for
+ * descending or "asc" for ascending sort order of corresponding values.
  *
  * @static
  * @memberOf _
- * @since 3.8.0
- * @category Array
- * @param {Array} array The array of grouped elements to process.
- * @param {Function} [iteratee=_.identity] The function to combine
- *  regrouped values.
- * @returns {Array} Returns the new array of regrouped elements.
+ * @since 4.0.0
+ * @category Collection
+ * @param {Array|Object} collection The collection to iterate over.
+ * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]
+ *  The iteratees to sort by.
+ * @param {string[]} [orders] The sort orders of `iteratees`.
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
+ * @returns {Array} Returns the new sorted array.
  * @example
  *
- * var zipped = _.zip([1, 2], [10, 20], [100, 200]);
- * // => [[1, 10, 100], [2, 20, 200]]
+ * var users = [
+ *   { 'user': 'fred',   'age': 48 },
+ *   { 'user': 'barney', 'age': 34 },
+ *   { 'user': 'fred',   'age': 40 },
+ *   { 'user': 'barney', 'age': 36 }
+ * ];
  *
- * _.unzipWith(zipped, _.add);
- * // => [3, 30, 300]
+ * // Sort by `user` in ascending order and by `age` in descending order.
+ * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
+ * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
  */
-function unzipWith(array, iteratee) {
-  if (!(array && array.length)) {
+function orderBy(collection, iteratees, orders, guard) {
+  if (collection == null) {
     return [];
   }
-  var result = unzip(array);
-  if (iteratee == null) {
-    return result;
+  if (!isArray(iteratees)) {
+    iteratees = iteratees == null ? [] : [iteratees];
   }
-  return arrayMap(result, function(group) {
-    return apply(iteratee, undefined, group);
-  });
+  orders = guard ? undefined : orders;
+  if (!isArray(orders)) {
+    orders = orders == null ? [] : [orders];
+  }
+  return baseOrderBy(collection, iteratees, orders);
 }
 
-module.exports = unzipWith;
+module.exports = orderBy;
 
 
 /***/ }),
-/* 623 */
+/* 646 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
-
-
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.chain = exports.default = void 0;
-
-var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
-
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
-
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
-
-var CozyLink = /*#__PURE__*/function () {
-  function CozyLink(requestHandler) {
-    (0, _classCallCheck2.default)(this, CozyLink);
+var arrayMap = __webpack_require__(409),
+    baseGet = __webpack_require__(400),
+    baseIteratee = __webpack_require__(338),
+    baseMap = __webpack_require__(647),
+    baseSortBy = __webpack_require__(648),
+    baseUnary = __webpack_require__(331),
+    compareMultiple = __webpack_require__(649),
+    identity = __webpack_require__(414),
+    isArray = __webpack_require__(324);
 
-    if (typeof requestHandler === 'function') {
-      this.request = requestHandler;
-    }
+/**
+ * The base implementation of `_.orderBy` without param guards.
+ *
+ * @private
+ * @param {Array|Object} collection The collection to iterate over.
+ * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
+ * @param {string[]} orders The sort orders of `iteratees`.
+ * @returns {Array} Returns the new sorted array.
+ */
+function baseOrderBy(collection, iteratees, orders) {
+  if (iteratees.length) {
+    iteratees = arrayMap(iteratees, function(iteratee) {
+      if (isArray(iteratee)) {
+        return function(value) {
+          return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);
+        }
+      }
+      return iteratee;
+    });
+  } else {
+    iteratees = [identity];
   }
 
-  (0, _createClass2.default)(CozyLink, [{
-    key: "request",
-    value: function request(operation, result, forward) {
-      throw new Error('request is not implemented');
-    }
-  }]);
-  return CozyLink;
-}();
-
-exports.default = CozyLink;
-
-var toLink = function toLink(handler) {
-  return typeof handler === 'function' ? new CozyLink(handler) : handler;
-};
-
-var defaultLinkHandler = function defaultLinkHandler(operation, result) {
-  if (result) return result;else if (operation.execute) return operation.execute();else throw new Error("No link could handle operation ".concat(JSON.stringify(operation)));
-};
+  var index = -1;
+  iteratees = arrayMap(iteratees, baseUnary(baseIteratee));
 
-var chain = function chain(links) {
-  return [].concat((0, _toConsumableArray2.default)(links), [defaultLinkHandler]).map(toLink).reduce(concat);
-};
+  var result = baseMap(collection, function(value, key, collection) {
+    var criteria = arrayMap(iteratees, function(iteratee) {
+      return iteratee(value);
+    });
+    return { 'criteria': criteria, 'index': ++index, 'value': value };
+  });
 
-exports.chain = chain;
+  return baseSortBy(result, function(object, other) {
+    return compareMultiple(object, other, orders);
+  });
+}
 
-var concat = function concat(firstLink, nextLink) {
-  return new CozyLink(function (operation, result, forward) {
-    var nextForward = function nextForward(op, res) {
-      return nextLink.request(op, res, forward);
-    };
+module.exports = baseOrderBy;
 
-    return firstLink.request(operation, result, nextForward);
-  });
-};
 
 /***/ }),
-/* 624 */
+/* 647 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
+var baseEach = __webpack_require__(444),
+    isArrayLike = __webpack_require__(337);
 
+/**
+ * The base implementation of `_.map` without support for iteratee shorthands.
+ *
+ * @private
+ * @param {Array|Object} collection The collection to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array} Returns the new mapped array.
+ */
+function baseMap(collection, iteratee) {
+  var index = -1,
+      result = isArrayLike(collection) ? Array(collection.length) : [];
 
-var _interopRequireDefault = __webpack_require__(1);
+  baseEach(collection, function(value, key, collection) {
+    result[++index] = iteratee(value, key, collection);
+  });
+  return result;
+}
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.BulkEditError = void 0;
+module.exports = baseMap;
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+/***/ }),
+/* 648 */
+/***/ (function(module, exports) {
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+/**
+ * The base implementation of `_.sortBy` which uses `comparer` to define the
+ * sort order of `array` and replaces criteria objects with their corresponding
+ * values.
+ *
+ * @private
+ * @param {Array} array The array to sort.
+ * @param {Function} comparer The function to define sort order.
+ * @returns {Array} Returns `array`.
+ */
+function baseSortBy(array, comparer) {
+  var length = array.length;
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+  array.sort(comparer);
+  while (length--) {
+    array[length] = array[length].value;
+  }
+  return array;
+}
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+module.exports = baseSortBy;
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
-var _wrapNativeSuper2 = _interopRequireDefault(__webpack_require__(583));
+/***/ }),
+/* 649 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _zipWith = _interopRequireDefault(__webpack_require__(621));
+var compareAscending = __webpack_require__(650);
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+/**
+ * Used by `_.orderBy` to compare multiple properties of a value to another
+ * and stable sort them.
+ *
+ * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
+ * specify an order of "desc" for descending or "asc" for ascending sort order
+ * of corresponding values.
+ *
+ * @private
+ * @param {Object} object The object to compare.
+ * @param {Object} other The other object to compare.
+ * @param {boolean[]|string[]} orders The order to sort by for each property.
+ * @returns {number} Returns the sort order indicator for `object`.
+ */
+function compareMultiple(object, other, orders) {
+  var index = -1,
+      objCriteria = object.criteria,
+      othCriteria = other.criteria,
+      length = objCriteria.length,
+      ordersLength = orders.length;
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+  while (++index < length) {
+    var result = compareAscending(objCriteria[index], othCriteria[index]);
+    if (result) {
+      if (index >= ordersLength) {
+        return result;
+      }
+      var order = orders[index];
+      return result * (order == 'desc' ? -1 : 1);
+    }
+  }
+  // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
+  // that causes it, under certain circumstances, to provide the same value for
+  // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
+  // for more details.
+  //
+  // This also ensures a stable sort in V8 and other engines.
+  // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
+  return object.index - other.index;
+}
 
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+module.exports = compareMultiple;
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-var BulkEditError = /*#__PURE__*/function (_Error) {
-  (0, _inherits2.default)(BulkEditError, _Error);
+/***/ }),
+/* 650 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  var _super = _createSuper(BulkEditError);
+var isSymbol = __webpack_require__(403);
 
-  /**
-   * Indicates that a bulk edit has (potentially partially) failed
-   *
-   * @param  {import("./types").CouchDBBulkResult[]} bulkResponse - CouchDB Bulk response
-   * @param  {import("./types").CozyClientDocument[]} updatedDocs - Docs with updated _id and _rev
-   */
-  function BulkEditError(bulkResponse, updatedDocs) {
-    var _this;
+/**
+ * Compares values to sort them in ascending order.
+ *
+ * @private
+ * @param {*} value The value to compare.
+ * @param {*} other The other value to compare.
+ * @returns {number} Returns the sort order indicator for `value`.
+ */
+function compareAscending(value, other) {
+  if (value !== other) {
+    var valIsDefined = value !== undefined,
+        valIsNull = value === null,
+        valIsReflexive = value === value,
+        valIsSymbol = isSymbol(value);
 
-    (0, _classCallCheck2.default)(this, BulkEditError);
-    _this = _super.call(this, 'Error while bulk saving');
-    _this.name = 'BulkEditError';
-    _this.results = (0, _zipWith.default)(bulkResponse, updatedDocs, function (result, doc) {
-      return _objectSpread(_objectSpread({}, result), {}, {
-        doc: doc
-      });
-    });
-    return _this;
+    var othIsDefined = other !== undefined,
+        othIsNull = other === null,
+        othIsReflexive = other === other,
+        othIsSymbol = isSymbol(other);
+
+    if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
+        (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
+        (valIsNull && othIsDefined && othIsReflexive) ||
+        (!valIsDefined && othIsReflexive) ||
+        !valIsReflexive) {
+      return 1;
+    }
+    if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
+        (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
+        (othIsNull && valIsDefined && valIsReflexive) ||
+        (!othIsDefined && valIsReflexive) ||
+        !othIsReflexive) {
+      return -1;
+    }
   }
-  /**
-   * Get documents that have been correctly updated
-   *
-   * @returns {import("./types").CozyClientDocument[]}
-   */
+  return 0;
+}
 
+module.exports = compareAscending;
 
-  (0, _createClass2.default)(BulkEditError, [{
-    key: "getUpdatedDocuments",
-    value: function getUpdatedDocuments() {
-      return this.results.filter(function (r) {
-        return r.ok;
-      }).map(function (r) {
-        return r.doc;
-      });
-    }
-    /**
-     * Get bulk errors results
-     *
-     * @returns {Array<import("./types").CouchDBBulkResult & { doc: import("./types").CozyClientDocument }>}
-     */
 
-  }, {
-    key: "getErrors",
-    value: function getErrors() {
-      return this.results.filter(function (r) {
-        return !r.ok;
-      });
-    }
-  }]);
-  return BulkEditError;
-}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
+/***/ }),
+/* 651 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGetTag = __webpack_require__(304),
+    isArray = __webpack_require__(324),
+    isObjectLike = __webpack_require__(323);
+
+/** `Object#toString` result references. */
+var stringTag = '[object String]';
+
+/**
+ * Checks if `value` is classified as a `String` primitive or object.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a string, else `false`.
+ * @example
+ *
+ * _.isString('abc');
+ * // => true
+ *
+ * _.isString(1);
+ * // => false
+ */
+function isString(value) {
+  return typeof value == 'string' ||
+    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
+}
+
+module.exports = isString;
 
-exports.BulkEditError = BulkEditError;
 
 /***/ }),
-/* 625 */
+/* 652 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
+/*
+ * Sift 3.x
+ *
+ * Copryright 2015, Craig Condon
+ * Licensed under MIT
+ *
+ * Filter JavaScript objects with mongodb queries
+ */
 
+(function() {
 
-var _interopRequireDefault = __webpack_require__(1);
+  'use strict';
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-Object.defineProperty(exports, "HasManyFiles", {
-  enumerable: true,
-  get: function get() {
-    return _HasManyFiles.default;
-  }
-});
-Object.defineProperty(exports, "HasMany", {
-  enumerable: true,
-  get: function get() {
-    return _HasMany.default;
-  }
-});
-Object.defineProperty(exports, "HasOne", {
-  enumerable: true,
-  get: function get() {
-    return _HasOne.default;
-  }
-});
-Object.defineProperty(exports, "HasOneInPlace", {
-  enumerable: true,
-  get: function get() {
-    return _HasOneInPlace.default;
-  }
-});
-Object.defineProperty(exports, "HasManyInPlace", {
-  enumerable: true,
-  get: function get() {
-    return _HasManyInPlace.default;
-  }
-});
-Object.defineProperty(exports, "HasManyTriggers", {
-  enumerable: true,
-  get: function get() {
-    return _HasManyTriggers.default;
-  }
-});
-Object.defineProperty(exports, "Association", {
-  enumerable: true,
-  get: function get() {
-    return _Association.default;
+  /**
+   */
+
+  function isFunction(value) {
+    return typeof value === 'function';
   }
-});
-Object.defineProperty(exports, "resolveClass", {
-  enumerable: true,
-  get: function get() {
-    return _helpers.resolveClass;
+
+  /**
+   */
+
+  function isArray(value) {
+    return Object.prototype.toString.call(value) === '[object Array]';
   }
-});
-Object.defineProperty(exports, "create", {
-  enumerable: true,
-  get: function get() {
-    return _helpers.create;
+
+  /**
+   */
+
+  function comparable(value) {
+    if (value instanceof Date) {
+      return value.getTime();
+    } else if (isArray(value)) {
+      return value.map(comparable);
+    } else if (value && typeof value.toJSON === 'function') {
+      return value.toJSON();
+    } else {
+      return value;
+    }
   }
-});
-Object.defineProperty(exports, "isReferencedBy", {
-  enumerable: true,
-  get: function get() {
-    return _helpers.isReferencedBy;
+
+  function get(obj, key) {
+    return isFunction(obj.get) ? obj.get(key) : obj[key];
   }
-});
-Object.defineProperty(exports, "isReferencedById", {
-  enumerable: true,
-  get: function get() {
-    return _helpers.isReferencedById;
+
+  /**
+   */
+
+  function or(validator) {
+    return function(a, b) {
+      if (!isArray(b) || !b.length) {
+        return validator(a, b);
+      }
+      for (var i = 0, n = b.length; i < n; i++) {
+        if (validator(a, get(b,i))) return true;
+      }
+      return false;
+    }
   }
-});
-Object.defineProperty(exports, "getReferencedBy", {
-  enumerable: true,
-  get: function get() {
-    return _helpers.getReferencedBy;
+
+  /**
+   */
+
+  function and(validator) {
+    return function(a, b) {
+      if (!isArray(b) || !b.length) {
+        return validator(a, b);
+      }
+      for (var i = 0, n = b.length; i < n; i++) {
+        if (!validator(a, get(b, i))) return false;
+      }
+      return true;
+    };
   }
-});
-Object.defineProperty(exports, "getReferencedById", {
-  enumerable: true,
-  get: function get() {
-    return _helpers.getReferencedById;
+
+  function validate(validator, b, k, o) {
+    return validator.v(validator.a, b, k, o);
   }
-});
 
-var _HasManyFiles = _interopRequireDefault(__webpack_require__(626));
+  var OPERATORS = {
 
-var _HasMany = _interopRequireDefault(__webpack_require__(656));
+    /**
+     */
 
-var _HasOne = _interopRequireDefault(__webpack_require__(657));
+    $eq: or(function(a, b) {
+      return a(b);
+    }),
 
-var _HasOneInPlace = _interopRequireDefault(__webpack_require__(659));
+    /**
+     */
 
-var _HasManyInPlace = _interopRequireDefault(__webpack_require__(660));
+    $ne: and(function(a, b) {
+      return !a(b);
+    }),
 
-var _HasManyTriggers = _interopRequireDefault(__webpack_require__(661));
+    /**
+     */
 
-var _Association = _interopRequireDefault(__webpack_require__(655));
+    $gt: or(function(a, b) {
+      return sift.compare(comparable(b), a) > 0;
+    }),
 
-var _helpers = __webpack_require__(662);
+    /**
+     */
 
-/***/ }),
-/* 626 */
-/***/ (function(module, exports, __webpack_require__) {
+    $gte: or(function(a, b) {
+      return sift.compare(comparable(b), a) >= 0;
+    }),
 
-"use strict";
+    /**
+     */
 
+    $lt: or(function(a, b) {
+      return sift.compare(comparable(b), a) < 0;
+    }),
 
-var _interopRequireDefault = __webpack_require__(1);
+    /**
+     */
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = exports.getFileDatetime = void 0;
+    $lte: or(function(a, b) {
+      return sift.compare(comparable(b), a) <= 0;
+    }),
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+    /**
+     */
 
-var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
+    $mod: or(function(a, b) {
+      return b % a[0] == a[1];
+    }),
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+    /**
+     */
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+    $in: function(a, b) {
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+      if (b instanceof Array) {
+        for (var i = b.length; i--;) {
+          if (~a.indexOf(comparable(get(b, i)))) {
+            return true;
+          }
+        }
+      } else {
+        var comparableB = comparable(b);
+        if (comparableB === b && typeof b === 'object') {
+          for (var i = a.length; i--;) {
+            if (String(a[i]) === String(b) && String(b) !== '[object Object]') {
+              return true;
+            }
+          }
+        }
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+        /*
+          Handles documents that are undefined, whilst also
+          having a 'null' element in the parameters to $in.
+        */
+        if (typeof comparableB == 'undefined') {
+          for (var i = a.length; i--;) {
+            if (a[i] == null) {
+              return true;
+            }
+          }
+        }
 
-var _get3 = _interopRequireDefault(__webpack_require__(602));
+        /*
+          Handles the case of {'field': {$in: [/regexp1/, /regexp2/, ...]}}
+        */
+        for (var i = a.length; i--;) {
+          var validator = createRootValidator(get(a, i), undefined);
+          var result = validate(validator, b, i, a);
+          if ((result) && (String(result) !== '[object Object]') && (String(b) !== '[object Object]')) {
+            return true;
+          }
+        }
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+        return !!~a.indexOf(comparableB);
+      }
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+      return false;
+    },
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+    /**
+     */
 
-var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
+    $nin: function(a, b, k, o) {
+      return !OPERATORS.$in(a, b, k, o);
+    },
 
-var _get4 = _interopRequireDefault(__webpack_require__(399));
+    /**
+     */
 
-var _omit = _interopRequireDefault(__webpack_require__(523));
+    $not: function(a, b, k, o) {
+      return !validate(a, b, k, o);
+    },
 
-var _uniq = _interopRequireDefault(__webpack_require__(522));
+    /**
+     */
 
-var _dsl = __webpack_require__(495);
+    $type: function(a, b) {
+      return b != void 0 ? b instanceof a || b.constructor == a : false;
+     },
 
-var _store = __webpack_require__(627);
+    /**
+     */
 
-var _const = __webpack_require__(619);
+    $all: function(a, b, k, o) {
+      return OPERATORS.$and(a, b, k, o);
+    },
 
-var _Association = _interopRequireDefault(__webpack_require__(655));
+    /**
+     */
 
-var _HasMany2 = _interopRequireDefault(__webpack_require__(656));
+    $size: function(a, b) {
+      return b ? a === b.length : false;
+    },
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+    /**
+     */
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+    $or: function(a, b, k, o) {
+      for (var i = 0, n = a.length; i < n; i++) if (validate(get(a, i), b, k, o)) return true;
+      return false;
+    },
 
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+    /**
+     */
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+    $nor: function(a, b, k, o) {
+      return !OPERATORS.$or(a, b, k, o);
+    },
 
-/**
- * newCursor - Returns a CouchDB view Cursor for cursor-based pagination
- *
- * @param {import("../types").ViewKey} key - The CouchDB key of the view which will be requested
- * @param {import("../types").DocId} startDocId - The first doc _id to return from the view
- *
- * @returns {import("../types").CouchDBViewCursor}
- */
-var newCursor = function newCursor(_ref, startDocId) {
-  var _ref2 = (0, _slicedToArray2.default)(_ref, 3),
-      doctype = _ref2[0],
-      id = _ref2[1],
-      lastDatetime = _ref2[2];
+    /**
+     */
 
-  var cursorKey = lastDatetime ? [doctype, id, lastDatetime] : [doctype, id];
-  return [cursorKey, startDocId];
-};
-/**
- * Get the file datetime
- *
- * @param  {import('../types').IOCozyFile} file - io.cozy.files document
- * @returns {string} The file datetime
- */
+    $and: function(a, b, k, o) {
+      for (var i = 0, n = a.length; i < n; i++) {
+        if (!validate(get(a, i), b, k, o)) {
+          return false;
+        }
+      }
+      return true;
+    },
 
+    /**
+     */
 
-var getFileDatetime = function getFileDatetime(file) {
-  var _file$metadata;
+    $regex: or(function(a, b) {
+      return typeof b === 'string' && a.test(b);
+    }),
 
-  // Some files do not have any metadata, e.g. bitmap files.
-  return ((_file$metadata = file.metadata) === null || _file$metadata === void 0 ? void 0 : _file$metadata.datetime) || file.created_at;
-};
-/**
- *  This class is only used for photos albums relationships.
- *  Behind the hood, the queries uses a view returning the files sorted
- *  by datetime, with a cursor-based pagination.
- */
+    /**
+     */
 
+    $where: function(a, b, k, o) {
+      return a.call(b, b, k, o);
+    },
 
-exports.getFileDatetime = getFileDatetime;
+    /**
+     */
 
-var HasManyFiles = /*#__PURE__*/function (_HasMany) {
-  (0, _inherits2.default)(HasManyFiles, _HasMany);
+    $elemMatch: function(a, b, k, o) {
+      if (isArray(b)) {
+        return !!~search(b, a);
+      }
+      return validate(a, b, k, o);
+    },
 
-  var _super = _createSuper(HasManyFiles);
+    /**
+     */
 
-  function HasManyFiles() {
-    (0, _classCallCheck2.default)(this, HasManyFiles);
-    return _super.apply(this, arguments);
-  }
+    $exists: function(a, b, k, o) {
+      return o.hasOwnProperty(k) === a;
+    }
+  };
 
-  (0, _createClass2.default)(HasManyFiles, [{
-    key: "fetchMore",
-    value: function () {
-      var _fetchMore = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
-        var _this = this;
+  /**
+   */
 
-        var queryDef, relationships, lastRelationship;
-        return _regenerator.default.wrap(function _callee2$(_context2) {
-          while (1) {
-            switch (_context2.prev = _context2.next) {
-              case 0:
-                queryDef = new _dsl.QueryDefinition({
-                  doctype: _const.DOCTYPE_FILES
-                });
-                relationships = this.getRelationship().data; // Get last datetime for cursor
+  var prepare = {
 
-                lastRelationship = relationships[relationships.length - 1];
-                _context2.next = 5;
-                return this.dispatch( /*#__PURE__*/function () {
-                  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(dispatch, getState) {
-                    var lastRelDoc, lastDatetime, cursor, response;
-                    return _regenerator.default.wrap(function _callee$(_context) {
-                      while (1) {
-                        switch (_context.prev = _context.next) {
-                          case 0:
-                            lastRelDoc = (0, _store.getDocumentFromState)(getState(), lastRelationship._type, lastRelationship._id);
-                            lastDatetime = getFileDatetime(lastRelDoc.attributes); // cursor-based pagination
+    /**
+     */
 
-                            cursor = newCursor([_this.target._type, _this.target._id, lastDatetime], relationships[relationships.length - 1]._id);
-                            _context.next = 5;
-                            return _this.query(queryDef.referencedBy(_this.target).offsetCursor(cursor));
+    $eq: function(a) {
 
-                          case 5:
-                            response = _context.sent;
-                            // Remove first returned element, used as starting point for the query
-                            response.data.shift();
-                            _context.next = 9;
-                            return _this.dispatch(_this.updateRelationshipData(function (previousRelationshipData) {
-                              return _objectSpread(_objectSpread({}, previousRelationshipData), {}, {
-                                data: [].concat((0, _toConsumableArray2.default)(previousRelationshipData.data), (0, _toConsumableArray2.default)(response.data)),
-                                next: response.next
-                              });
-                            }));
+      if (a instanceof RegExp) {
+        return function(b) {
+          return typeof b === 'string' && a.test(b);
+        };
+      } else if (a instanceof Function) {
+        return a;
+      } else if (isArray(a) && !a.length) {
+        // Special case of a == []
+        return function(b) {
+          return (isArray(b) && !b.length);
+        };
+      } else if (a === null){
+        return function(b){
+          //will match both null and undefined
+          return b == null;
+        }
+      }
 
-                          case 9:
-                          case "end":
-                            return _context.stop();
-                        }
-                      }
-                    }, _callee);
-                  }));
+      return function(b) {
+        return sift.compare(comparable(b), a) === 0;
+      };
+    },
 
-                  return function (_x, _x2) {
-                    return _ref3.apply(this, arguments);
-                  };
-                }());
+    /**
+     */
 
-              case 5:
-              case "end":
-                return _context2.stop();
-            }
-          }
-        }, _callee2, this);
-      }));
+    $ne: function(a) {
+      return prepare.$eq(a);
+    },
 
-      function fetchMore() {
-        return _fetchMore.apply(this, arguments);
-      }
+    /**
+     */
 
-      return fetchMore;
-    }()
-  }, {
-    key: "addById",
-    value: function () {
-      var _addById = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(idsArg) {
-        var _this2 = this;
+    $and: function(a) {
+      return a.map(parse);
+    },
 
-        var ids, relations;
-        return _regenerator.default.wrap(function _callee3$(_context3) {
-          while (1) {
-            switch (_context3.prev = _context3.next) {
-              case 0:
-                ids = Array.isArray(idsArg) ? idsArg : [idsArg];
-                this.addTargetRelationships(ids);
-                relations = ids.map(function (id) {
-                  return {
-                    _id: id,
-                    _type: _this2.doctype
-                  };
-                });
-                _context3.next = 5;
-                return this.mutate(this.addReferences(relations));
+    /**
+     */
 
-              case 5:
-              case "end":
-                return _context3.stop();
-            }
-          }
-        }, _callee3, this);
-      }));
+    $all: function(a) {
+      return prepare.$and(a);
+    },
 
-      function addById(_x3) {
-        return _addById.apply(this, arguments);
-      }
+    /**
+     */
 
-      return addById;
-    }()
-  }, {
-    key: "removeById",
-    value: function () {
-      var _removeById = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(idsArg) {
-        var _this3 = this;
+    $or: function(a) {
+      return a.map(parse);
+    },
 
-        var ids, references;
-        return _regenerator.default.wrap(function _callee4$(_context4) {
-          while (1) {
-            switch (_context4.prev = _context4.next) {
-              case 0:
-                ids = Array.isArray(idsArg) ? idsArg : [idsArg];
-                this.removeTargetRelationships(idsArg);
-                references = ids.map(function (id) {
-                  return {
-                    _id: id,
-                    _type: _this3.doctype
-                  };
-                });
-                _context4.next = 5;
-                return this.mutate(this.removeReferences(references));
+    /**
+     */
 
-              case 5:
-              case "end":
-                return _context4.stop();
-            }
-          }
-        }, _callee4, this);
-      }));
+    $nor: function(a) {
+      return a.map(parse);
+    },
 
-      function removeById(_x4) {
-        return _removeById.apply(this, arguments);
-      }
+    /**
+     */
+
+    $not: function(a) {
+      return parse(a);
+    },
 
-      return removeById;
-    }()
-  }, {
-    key: "addReferences",
-    value: function addReferences(referencedDocs) {
-      if (this.target._type === _const.DOCTYPE_FILES) {
-        return _dsl.Mutations.addReferencedBy(this.target, referencedDocs);
-      } else if (referencedDocs[0]._type === _const.DOCTYPE_FILES) {
-        return _dsl.Mutations.addReferencesTo(this.target, referencedDocs);
-      } else {
-        throw new Error('Either the document or the references should be io.cozy.files');
-      }
-    }
-  }, {
-    key: "removeReferences",
-    value: function removeReferences(referencedDocs) {
-      if (this.target._type === _const.DOCTYPE_FILES) {
-        return _dsl.Mutations.removeReferencedBy(this.target, referencedDocs);
-      } else if (referencedDocs[0]._type === _const.DOCTYPE_FILES) {
-        return _dsl.Mutations.removeReferencesTo(this.target, referencedDocs);
-      } else {
-        throw new Error('Either the document or the references should be io.cozy.files');
-      }
-    }
-  }, {
-    key: "dehydrate",
-    value: function dehydrate(doc) {
-      // HasManyFiles relationships are stored on the file doctype, not the document the files are related to
-      return (0, _omit.default)(doc, [this.name, "relationships.".concat(this.name)]);
-    }
     /**
-     * @param {import("../types").CozyClientDocument} document - Document to query
-     * @param {object} client - The CozyClient instance
-     * @param {Association} assoc - The query params
-     *
-     * @returns {import("../types").CozyClientDocument | QueryDefinition}
      */
 
-  }, {
-    key: "data",
-    get: function get() {
-      var _this4 = this;
+    $regex: function(a, query) {
+      return new RegExp(a, query.$options);
+    },
 
-      if (this.target._type === _const.DOCTYPE_FILES) {
-        var refs = (0, _get4.default)(this.target, 'referenced_by', []);
-        return refs.map(function (_ref4) {
-          var id = _ref4.id,
-              type = _ref4.type;
-          return _this4.get(type, id);
-        }).filter(Boolean);
-      } else {
-        return (0, _get3.default)((0, _getPrototypeOf2.default)(HasManyFiles.prototype), "data", this);
-      }
+    /**
+     */
+
+    $where: function(a) {
+      return typeof a === 'string' ? new Function('obj', 'return ' + a) : a;
+    },
+
+    /**
+     */
+
+    $elemMatch: function(a) {
+      return parse(a);
+    },
+
+    /**
+     */
+
+    $exists: function(a) {
+      return !!a;
     }
-  }], [{
-    key: "query",
-    value: function query(document, client, assoc) {
-      if (document._type === _const.DOCTYPE_FILES) {
-        var refs = (0, _get4.default)(document, "relationships.referenced_by.data", []);
-        var ids = (0, _uniq.default)(refs.filter(function (ref) {
-          return ref.type === assoc.doctype;
-        }).map(function (ref) {
-          return ref.id;
-        }));
-        return ids.length > 0 ? (0, _dsl.Q)(assoc.doctype).getByIds(ids) : null;
-      } else {
-        var cursor = newCursor([document._type, document._id], '');
-        return (0, _dsl.Q)(assoc.doctype).referencedBy(document).offsetCursor(cursor);
+  };
+
+  /**
+   */
+
+  function search(array, validator) {
+
+    for (var i = 0; i < array.length; i++) {
+      var result = get(array, i);
+      if (validate(validator, get(array, i))) {
+        return i;
       }
     }
-  }]);
-  return HasManyFiles;
-}(_HasMany2.default);
 
-exports.default = HasManyFiles;
+    return -1;
+  }
 
-/***/ }),
-/* 627 */
-/***/ (function(module, exports, __webpack_require__) {
+  /**
+   */
 
-"use strict";
+  function createValidator(a, validate) {
+    return { a: a, v: validate };
+  }
 
+  /**
+   */
 
-var _interopRequireWildcard = __webpack_require__(277);
+  function nestedValidator(a, b) {
+    var values  = [];
+    findValues(b, a.k, 0, b, values);
 
-var _interopRequireDefault = __webpack_require__(1);
+    if (values.length === 1) {
+      var first = values[0];
+      return validate(a.nv, first[0], first[1], first[2]);
+    }
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-Object.defineProperty(exports, "initQuery", {
-  enumerable: true,
-  get: function get() {
-    return _queries.initQuery;
-  }
-});
-Object.defineProperty(exports, "loadQuery", {
-  enumerable: true,
-  get: function get() {
-    return _queries.loadQuery;
-  }
-});
-Object.defineProperty(exports, "receiveQueryResult", {
-  enumerable: true,
-  get: function get() {
-    return _queries.receiveQueryResult;
-  }
-});
-Object.defineProperty(exports, "receiveQueryError", {
-  enumerable: true,
-  get: function get() {
-    return _queries.receiveQueryError;
-  }
-});
-Object.defineProperty(exports, "initMutation", {
-  enumerable: true,
-  get: function get() {
-    return _mutations.initMutation;
-  }
-});
-Object.defineProperty(exports, "receiveMutationResult", {
-  enumerable: true,
-  get: function get() {
-    return _mutations.receiveMutationResult;
-  }
-});
-Object.defineProperty(exports, "receiveMutationError", {
-  enumerable: true,
-  get: function get() {
-    return _mutations.receiveMutationError;
+    // If the query contains $ne, need to test all elements ANDed together
+    var inclusive = a && a.q && typeof a.q.$ne !== 'undefined';
+    var allValid = inclusive;
+    for (var i = 0; i < values.length; i++) {
+      var result = values[i];
+      var isValid = validate(a.nv, result[0], result[1], result[2]);
+      if (inclusive) {
+        allValid &= isValid;
+      } else {
+        allValid |= isValid;
+      }
+    }
+    return allValid;
   }
-});
-exports.resetState = exports.getRawQueryFromState = exports.getQueryFromState = exports.getQueryFromStore = exports.getDocumentFromState = exports.getCollectionFromState = exports.getStateRoot = exports.createStore = exports.default = exports.StoreProxy = void 0;
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+  /**
+   */
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+  function findValues(current, keypath, index, object, values) {
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+    if (index === keypath.length || current == void 0) {
 
-var _cozyFlags = _interopRequireDefault(__webpack_require__(493));
+      values.push([current, keypath[index - 1], object]);
+      return;
+    }
 
-var _redux = __webpack_require__(628);
+    var k = get(keypath, index);
 
-var _reduxThunk = _interopRequireDefault(__webpack_require__(631));
+    // ensure that if current is an array, that the current key
+    // is NOT an array index. This sort of thing needs to work:
+    // sift({'foo.0':42}, [{foo: [42]}]);
+    if (isArray(current) && isNaN(Number(k))) {
+      for (var i = 0, n = current.length; i < n; i++) {
+        findValues(get(current, i), keypath, index, current, values);
+      }
+    } else {
+      findValues(get(current, k), keypath, index + 1, current, values);
+    }
+  }
 
-var _documents = _interopRequireWildcard(__webpack_require__(632));
+  /**
+   */
 
-var _queries = _interopRequireWildcard(__webpack_require__(637));
+  function createNestedValidator(keypath, a, q) {
+    return { a: { k: keypath, nv: a, q: q }, v: nestedValidator };
+  }
 
-var _mutations = __webpack_require__(653);
+  /**
+   * flatten the query
+   */
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+  function isVanillaObject(value) {
+    return value && value.constructor === Object;
+  }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+  function parse(query) {
+    query = comparable(query);
 
-var RESET_ACTION_TYPE = 'COZY_CLIENT.RESET_STATE';
+    if (!query || !isVanillaObject(query)) { // cross browser support
+      query = { $eq: query };
+    }
 
-var resetState = function resetState() {
-  return {
-    type: RESET_ACTION_TYPE
-  };
-};
+    var validators = [];
 
-exports.resetState = resetState;
+    for (var key in query) {
+      var a = query[key];
 
-var StoreProxy = /*#__PURE__*/function () {
-  function StoreProxy(state) {
-    (0, _classCallCheck2.default)(this, StoreProxy);
-    this.state = state;
-  }
+      if (key === '$options') {
+        continue;
+      }
 
-  (0, _createClass2.default)(StoreProxy, [{
-    key: "readDocument",
-    value: function readDocument(doctype, id) {
-      return this.state.documents[doctype][id];
+      if (OPERATORS[key]) {
+        if (prepare[key]) a = prepare[key](a, query);
+        validators.push(createValidator(comparable(a), OPERATORS[key]));
+      } else {
+
+        if (key.charCodeAt(0) === 36) {
+          throw new Error('Unknown operation ' + key);
+        }
+        validators.push(createNestedValidator(key.split('.'), parse(a), a));
+      }
     }
-  }, {
-    key: "writeDocument",
-    value: function writeDocument(document) {
-      this.setState(function (state) {
-        return _objectSpread(_objectSpread({}, state), {}, {
-          documents: _objectSpread(_objectSpread({}, state.documents), {}, (0, _defineProperty2.default)({}, document._type, _objectSpread(_objectSpread({}, state.documents[document._type]), {}, (0, _defineProperty2.default)({}, document._id, document))))
-        });
-      });
-    }
-  }, {
-    key: "setState",
-    value: function setState(updaterFn) {
-      this.state = updaterFn(this.state);
+
+    return validators.length === 1 ? validators[0] : createValidator(validators, OPERATORS.$and);
+  }
+
+  /**
+   */
+
+  function createRootValidator(query, getter) {
+    var validator = parse(query);
+    if (getter) {
+      validator = {
+        a: validator,
+        v: function(a, b, k, o) {
+          return validate(a, getter(b), k, o);
+        }
+      };
     }
-  }, {
-    key: "getState",
-    value: function getState() {
-      return this.state;
+    return validator;
+  }
+
+  /**
+   */
+
+  function sift(query, array, getter) {
+
+    if (isFunction(array)) {
+      getter = array;
+      array  = void 0;
     }
-  }]);
-  return StoreProxy;
-}();
 
-exports.StoreProxy = StoreProxy;
-var initialState = {
-  documents: {},
-  queries: {}
-};
+    var validator = createRootValidator(query, getter);
 
-var combinedReducer = function combinedReducer() {
-  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
-  var action = arguments.length > 1 ? arguments[1] : undefined;
+    function filter(b, k, o) {
+      return validate(validator, b, k, o);
+    }
 
-  if (action.type == RESET_ACTION_TYPE) {
-    return initialState;
-  }
+    if (array) {
+      return array.filter(filter);
+    }
 
-  if (!(0, _queries.isQueryAction)(action) && !(0, _mutations.isMutationAction)(action)) {
-    return state;
+    return filter;
   }
 
-  if (action.update) {
-    var proxy = new StoreProxy(state);
-    action.update(proxy, action.response);
-    return {
-      documents: proxy.getState().documents,
-      queries: (0, _queries.default)(proxy.getState().queries, action, proxy.getState().documents)
-    };
-  }
+  /**
+   */
 
-  var nextDocuments = (0, _documents.default)(state.documents, action);
-  var haveDocumentsChanged = nextDocuments !== state.documents;
-  return {
-    documents: nextDocuments,
-    queries: (0, _queries.default)(state.queries, action, nextDocuments, haveDocumentsChanged)
+  sift.use = function(plugin) {
+    if (isFunction(plugin)) return plugin(sift);
+    for (var key in plugin) {
+      /* istanbul ignore else */
+      if (key.charCodeAt(0) === 36) {
+        OPERATORS[key] = plugin[key];
+      }
+    }
   };
-};
 
-var _default = combinedReducer;
-exports.default = _default;
+  /**
+   */
 
-var composedEnhancer = // @ts-ignore '__REDUX_DEVTOOLS_EXTENSION_COMPOSE__' doesn't exist 'Window & typeof globalThis'.ts(2339)
-// should be (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ in ts file
-// see https://github.com/reduxjs/redux-devtools/tree/main/extension#11-basic-store
-(0, _cozyFlags.default)('debug') && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || _redux.compose;
+  sift.indexOf = function(query, array, getter) {
+    return search(array, createRootValidator(query, getter));
+  };
 
-var createStore = function createStore() {
-  return (0, _redux.createStore)((0, _redux.combineReducers)({
-    cozy: combinedReducer
-  }), composedEnhancer((0, _redux.applyMiddleware)(_reduxThunk.default)));
-};
+  /**
+   */
 
-exports.createStore = createStore;
+  sift.compare = function(a, b) {
+    if(a===b) return 0;
+    if(typeof a === typeof b) {
+      if (a > b) {
+        return 1;
+      }
+      if (a < b) {
+        return -1;
+      }
+    }
+  };
 
-var getStateRoot = function getStateRoot(state) {
-  return state.cozy || {};
-};
+  /* istanbul ignore next */
+  if ( true && typeof module.exports !== 'undefined') {
+    Object.defineProperty(exports, "__esModule", {
+      value: true
+    });
 
-exports.getStateRoot = getStateRoot;
+    module.exports = sift;
+    exports['default'] = module.exports.default = sift;
+  }
 
-var getCollectionFromState = function getCollectionFromState(state, doctype) {
-  return (0, _documents.getCollectionFromSlice)(getStateRoot(state).documents, doctype);
-};
+  /* istanbul ignore next */
+  if (typeof window !== 'undefined') {
+    window.sift = sift;
+  }
+})();
 
-exports.getCollectionFromState = getCollectionFromState;
 
-var getDocumentFromState = function getDocumentFromState(state, doctype, id) {
-  return (0, _documents.getDocumentFromSlice)(getStateRoot(state).documents, doctype, id);
-};
+/***/ }),
+/* 653 */
+/***/ (function(module, exports, __webpack_require__) {
 
-exports.getDocumentFromState = getDocumentFromState;
+"use strict";
 
-var getQueryFromStore = function getQueryFromStore(store, queryId) {
-  return getQueryFromState(store.getState(), queryId);
-};
 
-exports.getQueryFromStore = getQueryFromStore;
+var _interopRequireDefault = __webpack_require__(1);
 
-var getQueryFromState = function getQueryFromState(state, queryId) {
-  return (0, _queries.getQueryFromSlice)(getStateRoot(state).queries, queryId, getStateRoot(state).documents);
-};
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.receiveMutationError = exports.receiveMutationResult = exports.initMutation = exports.isReceivingMutationResult = exports.isMutationAction = void 0;
 
-exports.getQueryFromState = getQueryFromState;
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-var getRawQueryFromState = function getRawQueryFromState(state, queryId) {
-  return (0, _queries.getQueryFromSlice)(getStateRoot(state).queries, queryId);
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+var INIT_MUTATION = 'INIT_MUTATION';
+var RECEIVE_MUTATION_RESULT = 'RECEIVE_MUTATION_RESULT';
+var RECEIVE_MUTATION_ERROR = 'RECEIVE_MUTATION_ERROR';
+
+var isMutationAction = function isMutationAction(action) {
+  return [INIT_MUTATION, RECEIVE_MUTATION_RESULT, RECEIVE_MUTATION_ERROR].indexOf(action.type) !== -1;
 };
 
-exports.getRawQueryFromState = getRawQueryFromState;
+exports.isMutationAction = isMutationAction;
 
-/***/ }),
-/* 628 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+var isReceivingMutationResult = function isReceivingMutationResult(action) {
+  return action.type === RECEIVE_MUTATION_RESULT;
+}; // actions
 
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__DO_NOT_USE__ActionTypes", function() { return ActionTypes; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "applyMiddleware", function() { return applyMiddleware; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindActionCreators", function() { return bindActionCreators; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineReducers", function() { return combineReducers; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return compose; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createStore", function() { return createStore; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "legacy_createStore", function() { return legacy_createStore; });
-/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(629);
 
+exports.isReceivingMutationResult = isReceivingMutationResult;
 
-/**
- * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js
- *
- * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes
- * during build.
- * @param {number} code
- */
-function formatProdErrorMessage(code) {
-  return "Minified Redux error #" + code + "; visit https://redux.js.org/Errors?code=" + code + " for the full message or " + 'use the non-minified dev environment for full errors. ';
-}
+var initMutation = function initMutation(mutationId, definition) {
+  return {
+    type: INIT_MUTATION,
+    mutationId: mutationId,
+    definition: definition
+  };
+};
 
-// Inlined version of the `symbol-observable` polyfill
-var $$observable = (function () {
-  return typeof Symbol === 'function' && Symbol.observable || '@@observable';
-})();
+exports.initMutation = initMutation;
 
-/**
- * These are private action types reserved by Redux.
- * For any unknown actions, you must return the current state.
- * If the current state is undefined, you must return the initial state.
- * Do not reference these action types directly in your code.
- */
-var randomString = function randomString() {
-  return Math.random().toString(36).substring(7).split('').join('.');
+var receiveMutationResult = function receiveMutationResult(mutationId, response) {
+  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+  var definition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
+  return _objectSpread(_objectSpread({
+    type: RECEIVE_MUTATION_RESULT,
+    mutationId: mutationId,
+    response: response
+  }, options), {}, {
+    definition: definition
+  });
 };
 
-var ActionTypes = {
-  INIT: "@@redux/INIT" + randomString(),
-  REPLACE: "@@redux/REPLACE" + randomString(),
-  PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {
-    return "@@redux/PROBE_UNKNOWN_ACTION" + randomString();
-  }
+exports.receiveMutationResult = receiveMutationResult;
+
+var receiveMutationError = function receiveMutationError(mutationId, error) {
+  var definition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+  return {
+    type: RECEIVE_MUTATION_ERROR,
+    mutationId: mutationId,
+    error: error,
+    definition: definition
+  };
 };
 
-/**
- * @param {any} obj The object to inspect.
- * @returns {boolean} True if the argument appears to be a plain object.
- */
-function isPlainObject(obj) {
-  if (typeof obj !== 'object' || obj === null) return false;
-  var proto = obj;
+exports.receiveMutationError = receiveMutationError;
 
-  while (Object.getPrototypeOf(proto) !== null) {
-    proto = Object.getPrototypeOf(proto);
-  }
+/***/ }),
+/* 654 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  return Object.getPrototypeOf(obj) === proto;
-}
+"use strict";
 
-// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of
-function miniKindOf(val) {
-  if (val === void 0) return 'undefined';
-  if (val === null) return 'null';
-  var type = typeof val;
 
-  switch (type) {
-    case 'boolean':
-    case 'string':
-    case 'number':
-    case 'symbol':
-    case 'function':
-      {
-        return type;
-      }
-  }
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.properId = void 0;
 
-  if (Array.isArray(val)) return 'array';
-  if (isDate(val)) return 'date';
-  if (isError(val)) return 'error';
-  var constructorName = ctorName(val);
+var properId = function properId(doc) {
+  return doc.id || doc._id;
+};
 
-  switch (constructorName) {
-    case 'Symbol':
-    case 'Promise':
-    case 'WeakMap':
-    case 'WeakSet':
-    case 'Map':
-    case 'Set':
-      return constructorName;
-  } // other
+exports.properId = properId;
 
+/***/ }),
+/* 655 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  return type.slice(8, -1).toLowerCase().replace(/\s/g, '');
-}
+"use strict";
 
-function ctorName(val) {
-  return typeof val.constructor === 'function' ? val.constructor.name : null;
-}
 
-function isError(val) {
-  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';
-}
+var _interopRequireDefault = __webpack_require__(1);
 
-function isDate(val) {
-  if (val instanceof Date) return true;
-  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';
-}
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
 
-function kindOf(val) {
-  var typeOfVal = typeof val;
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-  if (true) {
-    typeOfVal = miniKindOf(val);
-  }
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-  return typeOfVal;
-}
+var _dsl = __webpack_require__(495);
 
 /**
- * @deprecated
+ * Associations are used by components to access related store documents that are
+ * linked in a document. They are also responsible for building the `QueryDefinition` that is
+ * used by the client to automatically fetch relationship data.
  *
- * **We recommend using the `configureStore` method
- * of the `@reduxjs/toolkit` package**, which replaces `createStore`.
+ * Hydrated documents used by components come with Association instances.
  *
- * Redux Toolkit is our recommended approach for writing Redux logic today,
- * including store setup, reducers, data fetching, and more.
+ * @interface
  *
- * **For more details, please read this Redux docs page:**
- * **https://redux.js.org/introduction/why-rtk-is-redux-today**
+ * @description
+ * Example: The schema defines an `author` relationship :
  *
- * `configureStore` from Redux Toolkit is an improved version of `createStore` that
- * simplifies setup and helps avoid common bugs.
+ * ```js
+ * const BOOK_SCHEMA = {
+ *   relationships: {
+ *      author: 'has-one'
+ *   }
+ * }
+ * ```
  *
- * You should not be using the `redux` core package by itself today, except for learning purposes.
- * The `createStore` method from the core `redux` package will not be removed, but we encourage
- * all users to migrate to using Redux Toolkit for all Redux code.
+ * Hydrated `books` will have the `author` association instance under the `author` key.
+ * Accessing `hydratedBook.author.data` gives you the author from the store, for example :
  *
- * If you want to use `createStore` without this visual deprecation warning, use
- * the `legacy_createStore` import instead:
+ * ```json
+ * {
+ *   "name": "St-Exupery",
+ *   "firstName": "Antoine",
+ *   "_id": "antoine"
+ * }
+ * ```
  *
- * `import { legacy_createStore as createStore} from 'redux'`
+ * It is the responsibility of the relationship to decide how the relationship data is stored.
+ * For example, here since we use the default `has-one` relationship, the relationship data
+ * is stored in the `relationships` attribute of the original document (in our case here, our book
+ * would be
+ *
+ * ```json
+ * {
+ *   "title": "Le petit prince",
+ *   "relationships": {
+ *     "author": {
+ *       "data": {
+ *         "doctype": "io.cozy.authors",
+ *         "_id": "antoine"
+ *       }
+ *     }
+ *   }
+ * }
+ * ```
+ *
+ * In the case of an "in-place" relationship, the relationship data is stored directly under the attribute named
+ * by the relationship (in our case `author`). Our book would be
+ *
+ * ```json
+ * {
+ *     "title": "Le petit prince",
+ *     "author": "antoine"
+ * }
+ * ```
+ *
+ * ---
+ *
+ * Each different type of Association may change:
+ *
+ * - `get raw`: how the relationship data is stored (either as per the JSON API spec or
+ *  in a custom way)
+ * - `get data`: how the store documents are then fetched from the store to be added to
+ * the hydrated document (.data method). View components will access
+ * `hydratedDoc[relationshipName].data`.
+ * - `get query`: how to build the query to fetch related documents
  *
  */
+var Association = /*#__PURE__*/function () {
+  /**
+   * @param  {object} target - Original object containing raw data
+   * @param  {string} name - Attribute under which the association is stored
+   * @param  {string} doctype - Doctype of the documents managed by the association
+   * @param {object} options - Options passed from the client
+   * @param {Function} options.get - Get a document from the store
+   * @param {Function} options.query - Execute client query
+   * @param {Function} options.mutate - Execute client mutate
+   * @param {Function} options.save - Execute client save
+   * @param  {Function} options.dispatch - Store's dispatch, comes from the client
+   */
+  function Association(target, name, doctype, options) {
+    (0, _classCallCheck2.default)(this, Association);
+    var dispatch = options.dispatch,
+        get = options.get,
+        query = options.query,
+        mutate = options.mutate,
+        save = options.save;
+    /**
+     * The original document declaring the relationship
+     *
+     * @type {object}
+     */
 
-function createStore(reducer, preloadedState, enhancer) {
-  var _ref2;
+    this.target = target;
+    /**
+     * The name of the relationship.
+     *
+     * @type {string}
+     * @example 'author'
+     */
 
-  if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {
-    throw new Error( false ? undefined : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');
-  }
+    this.name = name;
+    /**
+     * Doctype of the relationship
+     *
+     * @type {string}
+     * @example 'io.cozy.authors'
+     */
 
-  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {
-    enhancer = preloadedState;
-    preloadedState = undefined;
-  }
+    this.doctype = doctype;
+    /**
+     * Returns the document from the store
+     *
+     * @type {Function}
+     */
 
-  if (typeof enhancer !== 'undefined') {
-    if (typeof enhancer !== 'function') {
-      throw new Error( false ? undefined : "Expected the enhancer to be a function. Instead, received: '" + kindOf(enhancer) + "'");
-    }
+    this.get = get;
+    /**
+     * Performs a query to retrieve relationship documents.
+     *
+     * @param {QueryDefinition} queryDefinition
+     * @function
+     */
 
-    return enhancer(createStore)(reducer, preloadedState);
-  }
+    this.query = query;
+    /**
+     * Performs a mutation on the relationship.
+     *
+     * @function
+     */
 
-  if (typeof reducer !== 'function') {
-    throw new Error( false ? undefined : "Expected the root reducer to be a function. Instead, received: '" + kindOf(reducer) + "'");
-  }
+    this.mutate = mutate;
+    /**
+     * Saves the relationship in store.
+     *
+     * @type {Function}
+     */
 
-  var currentReducer = reducer;
-  var currentState = preloadedState;
-  var currentListeners = [];
-  var nextListeners = currentListeners;
-  var isDispatching = false;
-  /**
-   * This makes a shallow copy of currentListeners so we can use
-   * nextListeners as a temporary list while dispatching.
-   *
-   * This prevents any bugs around consumers calling
-   * subscribe/unsubscribe in the middle of a dispatch.
-   */
+    this.save = save;
+    /**
+     * Dispatch an action on the store.
+     *
+     * @type {Function}
+     */
 
-  function ensureCanMutateNextListeners() {
-    if (nextListeners === currentListeners) {
-      nextListeners = currentListeners.slice();
-    }
+    this.dispatch = dispatch;
   }
   /**
-   * Reads the state tree managed by the store.
    *
-   * @returns {any} The current state tree of your application.
-   */
-
-
-  function getState() {
-    if (isDispatching) {
-      throw new Error( false ? undefined : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');
-    }
-
-    return currentState;
-  }
-  /**
-   * Adds a change listener. It will be called any time an action is dispatched,
-   * and some part of the state tree may potentially have changed. You may then
-   * call `getState()` to read the current state tree inside the callback.
-   *
-   * You may call `dispatch()` from a change listener, with the following
-   * caveats:
-   *
-   * 1. The subscriptions are snapshotted just before every `dispatch()` call.
-   * If you subscribe or unsubscribe while the listeners are being invoked, this
-   * will not have any effect on the `dispatch()` that is currently in progress.
-   * However, the next `dispatch()` call, whether nested or not, will use a more
-   * recent snapshot of the subscription list.
-   *
-   * 2. The listener should not expect to see all state changes, as the state
-   * might have been updated multiple times during a nested `dispatch()` before
-   * the listener is called. It is, however, guaranteed that all subscribers
-   * registered before the `dispatch()` started will be called with the latest
-   * state by the time it exits.
+   * Returns the raw relationship data as stored in the original document
    *
-   * @param {Function} listener A callback to be invoked on every dispatch.
-   * @returns {Function} A function to remove this change listener.
-   */
-
-
-  function subscribe(listener) {
-    if (typeof listener !== 'function') {
-      throw new Error( false ? undefined : "Expected the listener to be a function. Instead, received: '" + kindOf(listener) + "'");
-    }
-
-    if (isDispatching) {
-      throw new Error( false ? undefined : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');
-    }
-
-    var isSubscribed = true;
-    ensureCanMutateNextListeners();
-    nextListeners.push(listener);
-    return function unsubscribe() {
-      if (!isSubscribed) {
-        return;
-      }
-
-      if (isDispatching) {
-        throw new Error( false ? undefined : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');
-      }
-
-      isSubscribed = false;
-      ensureCanMutateNextListeners();
-      var index = nextListeners.indexOf(listener);
-      nextListeners.splice(index, 1);
-      currentListeners = null;
-    };
-  }
-  /**
-   * Dispatches an action. It is the only way to trigger a state change.
+   * For a document with relationships stored as JSON API spec:
    *
-   * The `reducer` function, used to create the store, will be called with the
-   * current state tree and the given `action`. Its return value will
-   * be considered the **next** state of the tree, and the change listeners
-   * will be notified.
+   * ```js
+   * const book = {
+   *   title: 'Moby Dick',
+   *   relationships: {
+   *     author: {
+   *       data: {
+   *         doctype: 'io.cozy.authors',
+   *         id: 'herman'
+   *       }
+   *     }
+   *   }
+   *  }
+   * ```
    *
-   * The base implementation only supports plain object actions. If you want to
-   * dispatch a Promise, an Observable, a thunk, or something else, you need to
-   * wrap your store creating function into the corresponding middleware. For
-   * example, see the documentation for the `redux-thunk` package. Even the
-   * middleware will eventually dispatch plain object actions using this method.
+   * Raw value will be
    *
-   * @param {Object} action A plain object representing “what changed”. It is
-   * a good idea to keep actions serializable so you can record and replay user
-   * sessions, or use the time travelling `redux-devtools`. An action must have
-   * a `type` property which may not be `undefined`. It is a good idea to use
-   * string constants for action types.
+   * ```json
+   * {
+   *   "doctype": "io.cozy.authors",
+   *   "id": "herman"
+   * }
+   * ```
    *
-   * @returns {Object} For convenience, the same action object you dispatched.
+   * Derived `Association`s need to implement this method.
    *
-   * Note that, if you use a custom middleware, it may wrap `dispatch()` to
-   * return something else (for example, a Promise you can await).
+   * @returns {object}
    */
 
 
-  function dispatch(action) {
-    if (!isPlainObject(action)) {
-      throw new Error( false ? undefined : "Actions must be plain objects. Instead, the actual type was: '" + kindOf(action) + "'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.");
-    }
-
-    if (typeof action.type === 'undefined') {
-      throw new Error( false ? undefined : 'Actions may not have an undefined "type" property. You may have misspelled an action type string constant.');
+  (0, _createClass2.default)(Association, [{
+    key: "raw",
+    get: function get() {
+      throw new Error('A relationship must define its raw getter');
     }
+    /**
+     * Returns the document(s) from the store
+     *
+     * For document with relationships stored as JSON API spec :
+     *
+     * ```js
+     * const book = {
+     *   title: 'Moby Dick',
+     *   relationships: {
+     *     author: {
+     *       data: {
+     *         doctype: 'io.cozy.authors',
+     *         id: 'herman'
+     *       }
+     *     }
+     *   }
+     *  }
+     * ```
+     *
+     * `data` will be
+     *
+     * ```json
+     * {
+     *   "_id": "herman"
+     *   "_type": "io.cozy.authors",
+     *   "firstName": "herman",
+     *   "name": "Melville"
+     * }
+     * ```
+     *
+     * Derived `Association`s need to implement this method.
+     *
+     * @returns {object}
+     */
 
-    if (isDispatching) {
-      throw new Error( false ? undefined : 'Reducers may not dispatch actions.');
+  }, {
+    key: "data",
+    get: function get() {
+      throw new Error('A relationship must define its data getter');
     }
+    /**
+     * Derived `Association`s need to implement this method.
+     *
+     * @param {import("../types").CozyClientDocument} document - Document to query
+     * @param {object} client - The CozyClient instance
+     * @param {Association} assoc - Association containing info on how to build the query to fetch related documents
+     *
+     * @returns {import("../types").CozyClientDocument | QueryDefinition }
+     */
 
-    try {
-      isDispatching = true;
-      currentState = currentReducer(currentState, action);
-    } finally {
-      isDispatching = false;
+  }], [{
+    key: "query",
+    value: function query(document, client, assoc) {
+      throw new Error('A custom relationship must define its query() function');
     }
+  }]);
+  return Association;
+}();
 
-    var listeners = currentListeners = nextListeners;
+var _default = Association;
+exports.default = _default;
 
-    for (var i = 0; i < listeners.length; i++) {
-      var listener = listeners[i];
-      listener();
-    }
+/***/ }),
+/* 656 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    return action;
-  }
-  /**
-   * Replaces the reducer currently used by the store to calculate the state.
-   *
-   * You might need this if your app implements code splitting and you want to
-   * load some of the reducers dynamically. You might also need this if you
-   * implement a hot reloading mechanism for Redux.
-   *
-   * @param {Function} nextReducer The reducer for the store to use instead.
-   * @returns {void}
-   */
+"use strict";
 
 
-  function replaceReducer(nextReducer) {
-    if (typeof nextReducer !== 'function') {
-      throw new Error( false ? undefined : "Expected the nextReducer to be a function. Instead, received: '" + kindOf(nextReducer));
-    }
+var _interopRequireDefault = __webpack_require__(1);
 
-    currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.
-    // Any reducers that existed in both the new and old rootReducer
-    // will receive the previous state. This effectively populates
-    // the new state tree with any relevant data from the old one.
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.updateRelationship = exports.updateHasManyItem = exports.removeHasManyItem = exports.setHasManyItem = exports.getHasManyItems = exports.getHasManyItem = void 0;
 
-    dispatch({
-      type: ActionTypes.REPLACE
-    });
-  }
-  /**
-   * Interoperability point for observable/reactive libraries.
-   * @returns {observable} A minimal observable of state changes.
-   * For more information, see the observable proposal:
-   * https://github.com/tc39/proposal-observable
-   */
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-  function observable() {
-    var _ref;
+var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(483));
 
-    var outerSubscribe = subscribe;
-    return _ref = {
-      /**
-       * The minimal observable subscription method.
-       * @param {Object} observer Any object that can be used as an observer.
-       * The observer object should have a `next` method.
-       * @returns {subscription} An object with an `unsubscribe` method that can
-       * be used to unsubscribe the observable from the store, and prevent further
-       * emission of values from the observable.
-       */
-      subscribe: function subscribe(observer) {
-        if (typeof observer !== 'object' || observer === null) {
-          throw new Error( false ? undefined : "Expected the observer to be an object. Instead, received: '" + kindOf(observer) + "'");
-        }
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
-        function observeState() {
-          if (observer.next) {
-            observer.next(getState());
-          }
-        }
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
-        observeState();
-        var unsubscribe = outerSubscribe(observeState);
-        return {
-          unsubscribe: unsubscribe
-        };
-      }
-    }, _ref[$$observable] = function () {
-      return this;
-    }, _ref;
-  } // When a store is created, an "INIT" action is dispatched so that every
-  // reducer returns their initial state. This effectively populates
-  // the initial state tree.
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-  dispatch({
-    type: ActionTypes.INIT
-  });
-  return _ref2 = {
-    dispatch: dispatch,
-    subscribe: subscribe,
-    getState: getState,
-    replaceReducer: replaceReducer
-  }, _ref2[$$observable] = observable, _ref2;
-}
-/**
- * Creates a Redux store that holds the state tree.
- *
- * **We recommend using `configureStore` from the
- * `@reduxjs/toolkit` package**, which replaces `createStore`:
- * **https://redux.js.org/introduction/why-rtk-is-redux-today**
- *
- * The only way to change the data in the store is to call `dispatch()` on it.
- *
- * There should only be a single store in your app. To specify how different
- * parts of the state tree respond to actions, you may combine several reducers
- * into a single reducer function by using `combineReducers`.
- *
- * @param {Function} reducer A function that returns the next state tree, given
- * the current state tree and the action to handle.
- *
- * @param {any} [preloadedState] The initial state. You may optionally specify it
- * to hydrate the state from the server in universal apps, or to restore a
- * previously serialized user session.
- * If you use `combineReducers` to produce the root reducer function, this must be
- * an object with the same shape as `combineReducers` keys.
- *
- * @param {Function} [enhancer] The store enhancer. You may optionally specify it
- * to enhance the store with third-party capabilities such as middleware,
- * time travel, persistence, etc. The only store enhancer that ships with Redux
- * is `applyMiddleware()`.
- *
- * @returns {Store} A Redux store that lets you read the state, dispatch actions
- * and subscribe to changes.
- */
+var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
 
-var legacy_createStore = createStore;
+var _get = _interopRequireDefault(__webpack_require__(399));
 
-/**
- * Prints a warning in the console if it exists.
- *
- * @param {String} message The warning message.
- * @returns {void}
- */
-function warning(message) {
-  /* eslint-disable no-console */
-  if (typeof console !== 'undefined' && typeof console.error === 'function') {
-    console.error(message);
-  }
-  /* eslint-enable no-console */
+var _merge = _interopRequireDefault(__webpack_require__(532));
 
+var _dsl = __webpack_require__(495);
 
-  try {
-    // This error was thrown as a convenience so that if you enable
-    // "break on all exceptions" in your console,
-    // it would pause the execution at this line.
-    throw new Error(message);
-  } catch (e) {} // eslint-disable-line no-empty
+var _store = __webpack_require__(627);
 
-}
+var _Association2 = _interopRequireDefault(__webpack_require__(655));
 
-function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {
-  var reducerKeys = Object.keys(reducers);
-  var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';
+var _logger = _interopRequireDefault(__webpack_require__(498));
 
-  if (reducerKeys.length === 0) {
-    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';
-  }
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-  if (!isPlainObject(inputState)) {
-    return "The " + argumentName + " has unexpected type of \"" + kindOf(inputState) + "\". Expected argument to be an object with the following " + ("keys: \"" + reducerKeys.join('", "') + "\"");
-  }
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-  var unexpectedKeys = Object.keys(inputState).filter(function (key) {
-    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];
-  });
-  unexpectedKeys.forEach(function (key) {
-    unexpectedKeyCache[key] = true;
-  });
-  if (action && action.type === ActionTypes.REPLACE) return;
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
-  if (unexpectedKeys.length > 0) {
-    return "Unexpected " + (unexpectedKeys.length > 1 ? 'keys' : 'key') + " " + ("\"" + unexpectedKeys.join('", "') + "\" found in " + argumentName + ". ") + "Expected to find one of the known reducer keys instead: " + ("\"" + reducerKeys.join('", "') + "\". Unexpected keys will be ignored.");
-  }
-}
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-function assertReducerShape(reducers) {
-  Object.keys(reducers).forEach(function (key) {
-    var reducer = reducers[key];
-    var initialState = reducer(undefined, {
-      type: ActionTypes.INIT
-    });
+/**
+ * @typedef {object} Relationship
+ * @property {string} relName - name of the relationship
+ * @property {string} relItemId - id of the relation
+ * @property {Relation} relItemAttrs - Attributes to be set (at least _id and _type)
+ */
 
-    if (typeof initialState === 'undefined') {
-      throw new Error( false ? undefined : "The slice reducer for key \"" + key + "\" returned undefined during initialization. " + "If the state passed to the reducer is undefined, you must " + "explicitly return the initial state. The initial state may " + "not be undefined. If you don't want to set a value for this reducer, " + "you can use null instead of undefined.");
+/**
+ * @typedef {object} Relation
+ * @property {string} _id - id of the relation
+ * @property {string} _type - doctype of the relation
+ */
+var empty = function empty() {
+  return {
+    data: [],
+    next: true,
+    meta: {
+      count: 0
     }
+  };
+};
 
-    if (typeof reducer(undefined, {
-      type: ActionTypes.PROBE_UNKNOWN_ACTION()
-    }) === 'undefined') {
-      throw new Error( false ? undefined : "The slice reducer for key \"" + key + "\" returned undefined when probed with a random type. " + ("Don't try to handle '" + ActionTypes.INIT + "' or other actions in \"redux/*\" ") + "namespace. They are considered private. Instead, you must return the " + "current state for any unknown actions, unless it is undefined, " + "in which case you must return the initial state, regardless of the " + "action type. The initial state may not be undefined, but can be null.");
-    }
-  });
-}
+var updateArray = function updateArray(array, indexArg, el) {
+  var index = indexArg === -1 ? array.length : indexArg;
+  return [].concat((0, _toConsumableArray2.default)(array.slice(0, index)), [el], (0, _toConsumableArray2.default)(array.slice(index + 1)));
+};
 /**
- * Turns an object whose values are different reducer functions, into a single
- * reducer function. It will call every child reducer, and gather their results
- * into a single state object, whose keys correspond to the keys of the passed
- * reducer functions.
+ * Related documents are stored in the relationships attribute of the object,
+ * following the JSON API spec.
  *
- * @param {Object} reducers An object whose values correspond to different
- * reducer functions that need to be combined into one. One handy way to obtain
- * it is to use ES6 `import * as reducers` syntax. The reducers may never return
- * undefined for any action. Instead, they should return their initial state
- * if the state passed to them was undefined, and the current state for any
- * unrecognized action.
+ * Responsible for
  *
- * @returns {Function} A reducer function that invokes every reducer inside the
- * passed object, and builds a state object with the same shape.
+ * - Creating relationships
+ * - Removing relationships
+ *
+ * @description
+ *
+ * ```
+ * const schema = {
+ *   todos: {
+ *      doctype: 'io.cozy.todos',
+ *      relationships: {
+ *        tasks: {
+ *          doctype: 'io.cozy.tasks',
+ *          type: 'has-many'
+ *        }
+ *      }
+ *    }
+ * }
+ *
+ * const todo = {
+ *   label: "Protect people's privacy",
+ *   relationships: {
+ *     tasks: {
+ *       data: [
+ *         {_id: 1, _type: 'io.cozy.tasks'},
+ *         {_id: 2, _type: 'io.cozy.tasks'}
+ *       ]
+ *     }
+ *   }
+ * }
+ * ```
  */
 
 
-function combineReducers(reducers) {
-  var reducerKeys = Object.keys(reducers);
-  var finalReducers = {};
-
-  for (var i = 0; i < reducerKeys.length; i++) {
-    var key = reducerKeys[i];
-
-    if (true) {
-      if (typeof reducers[key] === 'undefined') {
-        warning("No reducer provided for key \"" + key + "\"");
-      }
-    }
-
-    if (typeof reducers[key] === 'function') {
-      finalReducers[key] = reducers[key];
-    }
-  }
+var HasMany = /*#__PURE__*/function (_Association) {
+  (0, _inherits2.default)(HasMany, _Association);
 
-  var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same
-  // keys multiple times.
+  var _super = _createSuper(HasMany);
 
-  var unexpectedKeyCache;
+  function HasMany() {
+    var _this;
 
-  if (true) {
-    unexpectedKeyCache = {};
-  }
+    (0, _classCallCheck2.default)(this, HasMany);
 
-  var shapeAssertionError;
+    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+      args[_key] = arguments[_key];
+    }
 
-  try {
-    assertReducerShape(finalReducers);
-  } catch (e) {
-    shapeAssertionError = e;
+    _this = _super.call.apply(_super, [this].concat(args));
+    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateRelationshipData", function (getUpdatedRelationshipData) {
+      return function (dispatch, getState) {
+        var previousRelationship = (0, _store.getDocumentFromState)(getState(), _this.target._type, _this.target._id);
+        dispatch((0, _store.receiveQueryResult)(null, {
+          data: _objectSpread(_objectSpread({}, previousRelationship), {}, {
+            relationships: _objectSpread(_objectSpread({}, previousRelationship.relationships), {}, (0, _defineProperty2.default)({}, _this.name, getUpdatedRelationshipData(previousRelationship.relationships[_this.name])))
+          })
+        }));
+      };
+    });
+    return _this;
   }
 
-  return function combination(state, action) {
-    if (state === void 0) {
-      state = {};
-    }
-
-    if (shapeAssertionError) {
-      throw shapeAssertionError;
+  (0, _createClass2.default)(HasMany, [{
+    key: "fetchMore",
+    value: function fetchMore() {
+      throw 'Not implemented';
     }
-
-    if (true) {
-      var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);
-
-      if (warningMessage) {
-        warning(warningMessage);
-      }
+  }, {
+    key: "exists",
+    value: function exists(document) {
+      return this.existsById(document._id);
     }
-
-    var hasChanged = false;
-    var nextState = {};
-
-    for (var _i = 0; _i < finalReducerKeys.length; _i++) {
-      var _key = finalReducerKeys[_i];
-      var reducer = finalReducers[_key];
-      var previousStateForKey = state[_key];
-      var nextStateForKey = reducer(previousStateForKey, action);
-
-      if (typeof nextStateForKey === 'undefined') {
-        var actionType = action && action.type;
-        throw new Error( false ? undefined : "When called with an action of type " + (actionType ? "\"" + String(actionType) + "\"" : '(unknown type)') + ", the slice reducer for key \"" + _key + "\" returned undefined. " + "To ignore an action, you must explicitly return the previous state. " + "If you want this reducer to hold no value, you can return null instead of undefined.");
-      }
-
-      nextState[_key] = nextStateForKey;
-      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;
+  }, {
+    key: "containsById",
+    value: function containsById(id) {
+      return this.getRelationship().data.find(function (_ref) {
+        var _id = _ref._id;
+        return id === _id;
+      }) !== undefined;
+    }
+  }, {
+    key: "existsById",
+    value: function existsById(id) {
+      return Boolean(this.containsById(id) && this.get(this.doctype, id));
     }
+    /**
+     * Add the relationships to the target document
+     *
+     * @param {import("../types").CozyClientDocument[]} docsArg - Documents to add as relationships
+     * @returns {import("../types").CozyClientDocument} The saved target document
+     */
 
-    hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;
-    return hasChanged ? nextState : state;
-  };
-}
+  }, {
+    key: "add",
+    value: function add(docsArg) {
+      var docs = Array.isArray(docsArg) ? docsArg : [docsArg];
+      var ids = docs.map(function (doc) {
+        return doc._id;
+      });
+      return this.addById(ids);
+    }
+    /**
+     * Remove the relationships from the target document
+     *
+     * @param {import("../types").CozyClientDocument[]} docsArg - Documents to remove as relationships
+     * @returns {import("../types").CozyClientDocument} The saved target document
+     */
 
-function bindActionCreator(actionCreator, dispatch) {
-  return function () {
-    return dispatch(actionCreator.apply(this, arguments));
-  };
-}
-/**
- * Turns an object whose values are action creators, into an object with the
- * same keys, but with every function wrapped into a `dispatch` call so they
- * may be invoked directly. This is just a convenience method, as you can call
- * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.
- *
- * For convenience, you can also pass an action creator as the first argument,
- * and get a dispatch wrapped function in return.
- *
- * @param {Function|Object} actionCreators An object whose values are action
- * creator functions. One handy way to obtain it is to use ES6 `import * as`
- * syntax. You may also pass a single function.
- *
- * @param {Function} dispatch The `dispatch` function available on your Redux
- * store.
- *
- * @returns {Function|Object} The object mimicking the original object, but with
- * every action creator wrapped into the `dispatch` call. If you passed a
- * function as `actionCreators`, the return value will also be a single
- * function.
- */
+  }, {
+    key: "remove",
+    value: function remove(docsArg) {
+      var docs = Array.isArray(docsArg) ? docsArg : [docsArg];
+      var ids = docs.map(function (doc) {
+        return doc._id;
+      });
+      return this.removeById(ids);
+    }
+    /**
+     * Update target document with relationships
+     *
+     * @param {string[]} idsArg - The ids to add as a relationship
+     */
 
+  }, {
+    key: "addTargetRelationships",
+    value: function addTargetRelationships(idsArg) {
+      var _this2 = this,
+          _this$target$relation;
 
-function bindActionCreators(actionCreators, dispatch) {
-  if (typeof actionCreators === 'function') {
-    return bindActionCreator(actionCreators, dispatch);
-  }
+      if (!this.target.relationships) this.target.relationships = {};
 
-  if (typeof actionCreators !== 'object' || actionCreators === null) {
-    throw new Error( false ? undefined : "bindActionCreators expected an object or a function, but instead received: '" + kindOf(actionCreators) + "'. " + "Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?");
-  }
+      if (!this.target.relationships[this.name]) {
+        this.target.relationships[this.name] = {
+          data: []
+        };
+      }
 
-  var boundActionCreators = {};
+      var ids = Array.isArray(idsArg) ? idsArg : [idsArg];
+      var newRelations = ids.filter(function (id) {
+        return !_this2.existsById(id);
+      }).map(function (id) {
+        return {
+          _id: id,
+          _type: _this2.doctype
+        };
+      });
 
-  for (var key in actionCreators) {
-    var actionCreator = actionCreators[key];
+      (_this$target$relation = this.target.relationships[this.name].data).push.apply(_this$target$relation, (0, _toConsumableArray2.default)(newRelations));
 
-    if (typeof actionCreator === 'function') {
-      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);
+      this.updateMetaCount();
     }
-  }
-
-  return boundActionCreators;
-}
+    /**
+     * Add a referenced document by id. You need to call save()
+     * in order to synchronize your document with the store.
+     *
+     * @todo We shouldn't create the array of relationship manually since
+     * it'll not be present in the store as well.
+     * We certainly should use something like `updateRelationship`
+     *
+     */
 
-/**
- * Composes single-argument functions from right to left. The rightmost
- * function can take multiple arguments as it provides the signature for
- * the resulting composite function.
- *
- * @param {...Function} funcs The functions to compose.
- * @returns {Function} A function obtained by composing the argument functions
- * from right to left. For example, compose(f, g, h) is identical to doing
- * (...args) => f(g(h(...args))).
- */
-function compose() {
-  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {
-    funcs[_key] = arguments[_key];
-  }
+  }, {
+    key: "addById",
+    value: function addById(idsArg) {
+      this.addTargetRelationships(idsArg);
+      return this.save(this.target);
+    }
+    /**
+     * Remove relationships from target document
+     *
+     * @param {string[]} idsArg - The ids to remove from the target relationships
+     */
 
-  if (funcs.length === 0) {
-    return function (arg) {
-      return arg;
-    };
-  }
+  }, {
+    key: "removeTargetRelationships",
+    value: function removeTargetRelationships(idsArg) {
+      var ids = Array.isArray(idsArg) ? idsArg : [idsArg];
+      this.target.relationships[this.name].data = this.target.relationships[this.name].data.filter(function (_ref2) {
+        var _id = _ref2._id;
+        return !ids.includes(_id);
+      });
+      this.updateMetaCount();
+    }
+  }, {
+    key: "removeById",
+    value: function removeById(idsArg) {
+      this.removeTargetRelationships(idsArg);
+      return this.save(this.target);
+    }
+  }, {
+    key: "updateMetaCount",
+    value: function updateMetaCount() {
+      if ((0, _get.default)(this.target.relationships[this.name], 'meta.count') !== undefined) {
+        this.target.relationships[this.name].meta = _objectSpread(_objectSpread({}, this.target.relationships[this.name].meta), {}, {
+          count: this.target.relationships[this.name].data.length
+        });
+      }
+    }
+  }, {
+    key: "getRelationship",
+    value: function getRelationship() {
+      var rawData = this.target[this.name];
+      var relationship = (0, _get.default)(this.target, "relationships.".concat(this.name));
 
-  if (funcs.length === 1) {
-    return funcs[0];
-  }
+      if (!relationship) {
+        if (rawData && rawData.length) {
+          _logger.default.warn("You're trying to access data on a relationship that appear to not be loaded yet. You may want to use 'include()' on your query");
+        }
 
-  return funcs.reduce(function (a, b) {
-    return function () {
-      return a(b.apply(void 0, arguments));
-    };
-  });
-}
+        return empty();
+      }
 
-/**
- * Creates a store enhancer that applies middleware to the dispatch method
- * of the Redux store. This is handy for a variety of tasks, such as expressing
- * asynchronous actions in a concise manner, or logging every action payload.
- *
- * See `redux-thunk` package as an example of the Redux middleware.
- *
- * Because middleware is potentially asynchronous, this should be the first
- * store enhancer in the composition chain.
- *
- * Note that each middleware will be given the `dispatch` and `getState` functions
- * as named arguments.
- *
- * @param {...Function} middlewares The middleware chain to be applied.
- * @returns {Function} A store enhancer applying the middleware.
- */
+      return relationship;
+    }
+  }, {
+    key: "updateTargetRelationship",
+    value: function updateTargetRelationship(store, updateFn) {
+      // TODO See if updateTargetRelationship is still used, removing it would enable us
+      // to remove store.readDocument and store.writeDocument and the StoreProxy
+      var prevTarget = store.readDocument(this.target._type, this.target._id);
+      store.writeDocument(this.updateRelationship(prevTarget, updateFn));
+    }
+  }, {
+    key: "updateRelationship",
+    value: function updateRelationship(target, updateFn) {
+      return HasMany.updateRelationship(target, this.name, updateFn);
+    }
+  }, {
+    key: "dehydrate",
+    value: function dehydrate(doc) {
+      return _objectSpread(_objectSpread({}, doc), {}, {
+        relationships: _objectSpread(_objectSpread({}, doc.relationships), {}, (0, _defineProperty2.default)({}, this.name, {
+          data: this.raw
+        }))
+      });
+    }
+    /**
+     * @param {import("../types").CozyClientDocument} document - Document to query
+     * @param {object} client - The CozyClient instance
+     * @param {Association} assoc - The query params
+     *
+     * @returns {import("../types").CozyClientDocument | QueryDefinition}
+     */
 
-function applyMiddleware() {
-  for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {
-    middlewares[_key] = arguments[_key];
-  }
+  }, {
+    key: "raw",
+    get: function get() {
+      return this.getRelationship().data;
+    }
+    /**
+     * Returns store documents
+     */
 
-  return function (createStore) {
-    return function () {
-      var store = createStore.apply(void 0, arguments);
+  }, {
+    key: "data",
+    get: function get() {
+      var _this3 = this;
 
-      var _dispatch = function dispatch() {
-        throw new Error( false ? undefined : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');
-      };
+      return this.getRelationship().data.map(function (_ref3) {
+        var _id = _ref3._id,
+            _type = _ref3._type;
+        return _this3.get(_type, _id);
+      }).filter(Boolean);
+    }
+  }, {
+    key: "hasMore",
+    get: function get() {
+      return this.getRelationship().next;
+    }
+    /**
+     * Returns the total number of documents in the relationship.
+     * Does not handle documents absent from the store. If you want
+     * to do that, you can use .data.length.
+     *
+     * @returns {number} - Total number of documents in the relationships
+     */
 
-      var middlewareAPI = {
-        getState: store.getState,
-        dispatch: function dispatch() {
-          return _dispatch.apply(void 0, arguments);
-        }
-      };
-      var chain = middlewares.map(function (middleware) {
-        return middleware(middlewareAPI);
+  }, {
+    key: "count",
+    get: function get() {
+      var relationship = this.getRelationship();
+      return relationship.meta ? relationship.meta.count : relationship.data.length;
+    }
+  }], [{
+    key: "query",
+    value: function query(document, client, assoc) {
+      var relationships = (0, _get.default)(document, "relationships.".concat(assoc.name, ".data"), []);
+      var ids = relationships.map(function (assoc) {
+        return assoc._id;
       });
-      _dispatch = compose.apply(void 0, chain)(store.dispatch);
-      return Object(_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__["default"])(Object(_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__["default"])({}, store), {}, {
-        dispatch: _dispatch
+      return new _dsl.QueryDefinition({
+        doctype: assoc.doctype,
+        ids: ids
       });
-    };
-  };
-}
-
-/*
- * This is a dummy function to check if the function name has been altered by minification.
- * If the function has been minified and NODE_ENV !== 'production', warn the user.
+    }
+  }]);
+  return HasMany;
+}(_Association2.default);
+/**
+ * Gets a relationship item with the relationship name and id
+ *
+ * @param {object} doc - Document to be updated
+ * @param {string} relName - Name of the relationship
+ * @param {string} relItemId - Id of the relationship item
  */
 
-function isCrushed() {}
-
-if ( true && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {
-  warning('You are currently using minified code outside of NODE_ENV === "production". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');
-}
-
-
-
-
-/***/ }),
-/* 629 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _objectSpread2; });
-/* harmony import */ var _defineProperty_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(630);
-
 
-function ownKeys(object, enumerableOnly) {
-  var keys = Object.keys(object);
-
-  if (Object.getOwnPropertySymbols) {
-    var symbols = Object.getOwnPropertySymbols(object);
-    enumerableOnly && (symbols = symbols.filter(function (sym) {
-      return Object.getOwnPropertyDescriptor(object, sym).enumerable;
-    })), keys.push.apply(keys, symbols);
-  }
+var getHasManyItem = HasMany.getHasManyItem = function (doc, relName, relItemId) {
+  var relData = (0, _get.default)(doc, "relationships.".concat(relName, ".data"), []);
+  return relData.find(function (rel) {
+    return rel._id == relItemId;
+  });
+};
 
-  return keys;
-}
+exports.getHasManyItem = getHasManyItem;
 
-function _objectSpread2(target) {
-  for (var i = 1; i < arguments.length; i++) {
-    var source = null != arguments[i] ? arguments[i] : {};
-    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
-      Object(_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__["default"])(target, key, source[key]);
-    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
-      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
-    });
-  }
+var getHasManyItems = HasMany.getHasManyItems = function (doc, relName) {
+  return (0, _get.default)(doc, "relationships.".concat(relName, ".data"), []);
+};
+/**
+ * Sets a relationship item with the relationship name and id
+ *
+ * @param {object} doc - Document to be updated
+ * @param {string} relName - Name of the relationship
+ * @param {string} relItemId - Id of the relationship item
+ * @param {object} relItemAttrs - Attributes to be set (at least _id and _type)
+ */
 
-  return target;
-}
 
-/***/ }),
-/* 630 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+exports.getHasManyItems = getHasManyItems;
 
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _defineProperty; });
-function _defineProperty(obj, key, value) {
-  if (key in obj) {
-    Object.defineProperty(obj, key, {
-      value: value,
-      enumerable: true,
-      configurable: true,
-      writable: true
+var setHasManyItem = HasMany.setHasManyItem = function (doc, relName, relItemId, relItemAttrs) {
+  var relData = HasMany.getHasManyItems(doc, relName);
+  var relIndex = relData.findIndex(function (rel) {
+    return rel._id === relItemId;
+  });
+  var updatedRelItem = (0, _merge.default)({}, relData[relIndex], relItemAttrs);
+  var updatedRelData = updateArray(relData, relIndex, updatedRelItem);
+  var updatedDocument = HasMany.updateRelationship(doc, relName, function (relationship) {
+    return (0, _merge.default)({}, relationship, {
+      data: updatedRelData
     });
-  } else {
-    obj[key] = value;
-  }
+  });
+  return updatedDocument;
+};
+/**
+ * Remove one relationship item
+ *
+ * @param {object} doc - Document to be updated
+ * @param {string} relName - Name of the relationship
+ * @param {string} relItemId - Id of the relationship item
+ */
 
-  return obj;
-}
 
-/***/ }),
-/* 631 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+exports.setHasManyItem = setHasManyItem;
 
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/** A function that accepts a potential "extra argument" value to be injected later,
- * and returns an instance of the thunk middleware that uses that value
+var removeHasManyItem = HasMany.removeHasManyItem = function (doc, relName, relItemId) {
+  var relData = HasMany.getHasManyItems(doc, relName);
+  var updatedRelData = relData.filter(function (rel) {
+    return rel._id !== relItemId;
+  });
+  var updatedDocument = HasMany.updateRelationship(doc, relName, function () {
+    return {
+      data: updatedRelData
+    };
+  });
+  return updatedDocument;
+};
+/**
+ * Updates a relationship item with the relationship name and id
+ *
+ * @param {object} doc - Document to be updated
+ * @param {string} relName - Name of the relationship
+ * @param {string} relItemId - Id of the relationship item
+ * @param {Function} updater - receives the current relationship item and should
+ * return an updated version. Merge should be used in the updater
+ * if previous relationship item fields are to be kept.
  */
-function createThunkMiddleware(extraArgument) {
-  // Standard Redux middleware definition pattern:
-  // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware
-  var middleware = function middleware(_ref) {
-    var dispatch = _ref.dispatch,
-        getState = _ref.getState;
-    return function (next) {
-      return function (action) {
-        // The thunk middleware looks for any functions that were passed to `store.dispatch`.
-        // If this "action" is really a function, call it and return the result.
-        if (typeof action === 'function') {
-          // Inject the store's `dispatch` and `getState` methods, as well as any "extra arg"
-          return action(dispatch, getState, extraArgument);
-        } // Otherwise, pass the action down the middleware chain as usual
 
 
-        return next(action);
-      };
-    };
-  };
+exports.removeHasManyItem = removeHasManyItem;
 
-  return middleware;
-}
+var updateHasManyItem = HasMany.updateHasManyItem = function (doc, relName, relItemId, updater) {
+  var relItem = HasMany.getHasManyItem(doc, relName, relItemId);
+  var updatedRelItem = updater(relItem);
+  return HasMany.setHasManyItem(doc, relName, relItemId, updatedRelItem);
+};
 
-var thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version
-// with whatever "extra arg" they want to inject into their thunks
+exports.updateHasManyItem = updateHasManyItem;
 
-thunk.withExtraArgument = createThunkMiddleware;
-/* harmony default export */ __webpack_exports__["default"] = (thunk);
+var updateRelationship = HasMany.updateRelationship = function (doc, relName, updateFn) {
+  return _objectSpread(_objectSpread({}, doc), {}, {
+    relationships: _objectSpread(_objectSpread({}, doc.relationships), {}, (0, _defineProperty2.default)({}, relName, _objectSpread(_objectSpread({}, doc.relationships ? doc.relationships[relName] : {}), updateFn(doc.relationships ? doc.relationships[relName] : {}))))
+  });
+};
+
+exports.updateRelationship = updateRelationship;
+var _default = HasMany;
+exports.default = _default;
 
 /***/ }),
-/* 632 */
+/* 657 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -102862,329 +97946,289 @@ var _interopRequireDefault = __webpack_require__(1);
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.extractAndMergeDocument = exports.getCollectionFromSlice = exports.getDocumentFromSlice = exports.default = exports.mergeDocumentsWithRelationships = void 0;
+exports.default = void 0;
 
 var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-var _keyBy = _interopRequireDefault(__webpack_require__(633));
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-var _get = _interopRequireDefault(__webpack_require__(399));
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-var _isEqual = _interopRequireDefault(__webpack_require__(577));
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
-var _omit = _interopRequireDefault(__webpack_require__(523));
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
-var _merge = _interopRequireDefault(__webpack_require__(532));
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
-var _logger = _interopRequireDefault(__webpack_require__(498));
+var _get2 = _interopRequireDefault(__webpack_require__(399));
 
-var _queries = __webpack_require__(637);
+var _set = _interopRequireDefault(__webpack_require__(658));
 
 var _dsl = __webpack_require__(495);
 
-var _mutations = __webpack_require__(653);
+var _Association2 = _interopRequireDefault(__webpack_require__(655));
 
-var _helpers = __webpack_require__(654);
+var _logger = _interopRequireDefault(__webpack_require__(498));
 
 function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
 function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-var storeDocument = function storeDocument(state, document) {
-  var type = document._type;
-
-  if (!type) {
-    if (true) {
-      _logger.default.info('Document without _type', document);
-    }
-
-    throw new Error('Document without _type');
-  }
-
-  if (!(0, _helpers.properId)(document)) {
-    if (true) {
-      _logger.default.info('Document without id', document);
-    }
-
-    throw new Error('Document without id');
-  }
-
-  var existingDoc = (0, _get.default)(state, [type, (0, _helpers.properId)(document)]);
-
-  if ((0, _isEqual.default)(existingDoc, document)) {
-    return state;
-  } else {
-    return _objectSpread(_objectSpread({}, state), {}, (0, _defineProperty2.default)({}, type, _objectSpread(_objectSpread({}, state[type]), {}, (0, _defineProperty2.default)({}, (0, _helpers.properId)(document), mergeDocumentsWithRelationships(existingDoc, document)))));
-  }
-};
-
-var mergeDocumentsWithRelationships = function mergeDocumentsWithRelationships() {
-  var prevDocument = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-  var nextDocument = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
-  /**
-   * @type {import("../types").CozyClientDocument}
-   */
-  var merged = _objectSpread(_objectSpread({}, prevDocument), nextDocument);
-
-  if (prevDocument.relationships || nextDocument.relationships) merged.relationships = _objectSpread(_objectSpread({}, prevDocument.relationships), nextDocument.relationships);
-  return merged;
-}; // reducer
-
-
-exports.mergeDocumentsWithRelationships = mergeDocumentsWithRelationships;
-
-var documents = function documents() {
-  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-  var action = arguments.length > 1 ? arguments[1] : undefined;
-
-  if (!(0, _queries.isReceivingData)(action) && !(0, _mutations.isReceivingMutationResult)(action)) {
-    return state;
-  }
-
-  if (action && action.definition && action.definition.mutationType === _dsl.MutationTypes.DELETE_DOCUMENT) {
-    var docId = action.definition.document._id;
-    var _type = action.definition.document._type;
-    return _objectSpread(_objectSpread({}, state), {}, (0, _defineProperty2.default)({}, _type, (0, _omit.default)(state[_type], docId)));
-  }
-
-  var _action$response = action.response,
-      data = _action$response.data,
-      included = _action$response.included;
-  if (!data || Array.isArray(data) && data.length === 0) return state;
-  var updatedStateWithIncluded = included ? included.reduce(storeDocument, state) : state;
-
-  if (!Array.isArray(data)) {
-    return storeDocument(updatedStateWithIncluded, data);
-  }
-
-  return extractAndMergeDocument(data, updatedStateWithIncluded);
-};
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
-var _default = documents; // selector
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-exports.default = _default;
+var HasOne = /*#__PURE__*/function (_Association) {
+  (0, _inherits2.default)(HasOne, _Association);
 
-var getDocumentFromSlice = function getDocumentFromSlice() {
-  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-  var doctype = arguments.length > 1 ? arguments[1] : undefined;
-  var id = arguments.length > 2 ? arguments[2] : undefined;
+  var _super = _createSuper(HasOne);
 
-  if (!doctype) {
-    throw new Error('getDocumentFromSlice: Cannot retrieve document with undefined doctype');
+  function HasOne() {
+    (0, _classCallCheck2.default)(this, HasOne);
+    return _super.apply(this, arguments);
   }
 
-  if (!id) {
-    throw new Error('getDocumentFromSlice: Cannot retrieve document with undefined id');
-  }
+  (0, _createClass2.default)(HasOne, [{
+    key: "add",
 
-  if (!state[doctype]) {
-    if (true) {
-      _logger.default.info("getDocumentFromSlice: ".concat(doctype, " is absent from the store's documents. State is"), state);
+    /**
+     * Add the relationship to the target document
+     *
+     * @param {import("../types").CozyClientDocument} doc - Document to add as a relationship
+     * @returns {import("../types").CozyClientDocument} The saved target document
+     */
+    value: function add(doc) {
+      this.setRelationship(doc);
+      return this.save(this.target);
     }
+    /**
+     * Remove the relationship from the target document
+     *
+     * @returns {import("../types").CozyClientDocument} The saved target document
+     */
 
-    return null;
-  } else if (!state[doctype][id]) {
-    if (true) {
-      _logger.default.info("getDocumentFromSlice: ".concat(doctype, ":").concat(id, " is absent from the store documents. State is"), state);
+  }, {
+    key: "remove",
+    value: function remove() {
+      this.setRelationship(undefined);
+      return this.save(this.target);
     }
+  }, {
+    key: "setRelationship",
+    value: function setRelationship(doc) {
+      if (doc && doc._type !== this.doctype) {
+        throw new Error("Tried to associate a ".concat(doc._type, " document to a HasOne relationship on ").concat(this.doctype, " document"));
+      }
 
-    return null;
-  }
-
-  return state[doctype][id];
-};
-
-exports.getDocumentFromSlice = getDocumentFromSlice;
-
-var getCollectionFromSlice = function getCollectionFromSlice() {
-  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-  var doctype = arguments.length > 1 ? arguments[1] : undefined;
-
-  if (!doctype) {
-    throw new Error('getDocumentFromSlice: Cannot retrieve document with undefined doctype');
-  }
+      var path = "relationships[".concat(this.name, "].data");
 
-  if (!state[doctype]) {
-    if (true) {
-      _logger.default.info("getCollectionFromSlice: ".concat(doctype, " is absent from the store documents. State is"), state);
+      if (doc) {
+        (0, _set.default)(this.target, path, {
+          _id: doc._id,
+          _type: doc._type
+        });
+      } else {
+        (0, _set.default)(this.target, path, undefined);
+      }
     }
+  }, {
+    key: "set",
+    value: function set(doc) {
+      _logger.default.warn('set is deprecated for has-one relationships. Use `add` instead.');
 
-    return null;
-  }
-
-  return Object.values(state[doctype]);
-};
-/*
-  This method has been created in order to get a returned object
-  in `data` with the full set on information coming potentially from
-  `included`
-
-  This method should be somewhere else. The `document` shall not be
-  dealt with included / data and so on.
-
-  This method takes `data` and `included` and merge both sources
-  together. It should be always up-to-date. The returned object
-  will be as full of information as it can be.
-*/
-
+      this.setRelationship(doc);
+    }
+  }, {
+    key: "unset",
+    value: function unset() {
+      _logger.default.warn('unset is deprecated for has-one relationships. Use `remove` instead.');
 
-exports.getCollectionFromSlice = getCollectionFromSlice;
+      this.setRelationship(undefined);
+    }
+  }, {
+    key: "dehydrate",
+    value: function dehydrate(doc) {
+      if (!this.raw) {
+        return doc;
+      }
 
-var extractAndMergeDocument = function extractAndMergeDocument(data, updatedStateWithIncluded) {
-  var doctype = data[0]._type;
+      return _objectSpread(_objectSpread({}, doc), {}, {
+        relationships: _objectSpread(_objectSpread({}, doc.relationships), {}, (0, _defineProperty2.default)({}, this.name, {
+          data: this.raw
+        }))
+      });
+    }
+  }, {
+    key: "raw",
+    get: function get() {
+      return (0, _get2.default)(this.target, "relationships[".concat(this.name, "].data"), null);
+    }
+  }, {
+    key: "data",
+    get: function get() {
+      if (!this.raw) {
+        return null;
+      }
 
-  if (!doctype) {
-    _logger.default.info('Document without _type', data[0]);
+      return this.get(this.doctype, this.raw._id);
+    }
+    /**
+     * @param {import("../types").CozyClientDocument} document - Document to query
+     * @param {object} client - The CozyClient instance
+     * @param {Association} assoc - The query params
+     *
+     * @returns {import("../types").CozyClientDocument | QueryDefinition}
+     */
 
-    throw new Error('Document without _type');
-  }
+  }], [{
+    key: "query",
+    value: function query(document, client, assoc) {
+      var relationship = (0, _get2.default)(document, "relationships.".concat(assoc.name, ".data"), {});
 
-  var sortedData = (0, _keyBy.default)(data, _helpers.properId);
-  var mergedData = Object.assign({}, updatedStateWithIncluded);
-  mergedData[doctype] = Object.assign({}, updatedStateWithIncluded[doctype]);
-  Object.values(sortedData).map(function (data) {
-    var id = (0, _helpers.properId)(data);
+      if (!relationship || !relationship._id) {
+        return null;
+      }
 
-    if (mergedData[doctype][id]) {
-      mergedData[doctype][id] = (0, _merge.default)({}, mergedData[doctype][id], data);
-    } else {
-      mergedData[doctype][id] = data;
+      return (0, _dsl.Q)(assoc.doctype).getById(relationship._id);
     }
-  });
-  return mergedData;
-};
+  }]);
+  return HasOne;
+}(_Association2.default);
 
-exports.extractAndMergeDocument = extractAndMergeDocument;
+exports.default = HasOne;
 
 /***/ }),
-/* 633 */
+/* 658 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseAssignValue = __webpack_require__(299),
-    createAggregator = __webpack_require__(634);
+var baseSet = __webpack_require__(581);
 
 /**
- * Creates an object composed of keys generated from the results of running
- * each element of `collection` thru `iteratee`. The corresponding value of
- * each key is the last element responsible for generating the key. The
- * iteratee is invoked with one argument: (value).
+ * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
+ * it's created. Arrays are created for missing index properties while objects
+ * are created for all other missing properties. Use `_.setWith` to customize
+ * `path` creation.
+ *
+ * **Note:** This method mutates `object`.
  *
  * @static
  * @memberOf _
- * @since 4.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
- * @returns {Object} Returns the composed aggregate object.
+ * @since 3.7.0
+ * @category Object
+ * @param {Object} object The object to modify.
+ * @param {Array|string} path The path of the property to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns `object`.
  * @example
  *
- * var array = [
- *   { 'dir': 'left', 'code': 97 },
- *   { 'dir': 'right', 'code': 100 }
- * ];
+ * var object = { 'a': [{ 'b': { 'c': 3 } }] };
  *
- * _.keyBy(array, function(o) {
- *   return String.fromCharCode(o.code);
- * });
- * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
+ * _.set(object, 'a[0].b.c', 4);
+ * console.log(object.a[0].b.c);
+ * // => 4
  *
- * _.keyBy(array, 'dir');
- * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
+ * _.set(object, ['x', '0', 'y', 'z'], 5);
+ * console.log(object.x[0].y.z);
+ * // => 5
  */
-var keyBy = createAggregator(function(result, value, key) {
-  baseAssignValue(result, key, value);
-});
+function set(object, path, value) {
+  return object == null ? object : baseSet(object, path, value);
+}
 
-module.exports = keyBy;
+module.exports = set;
 
 
 /***/ }),
-/* 634 */
+/* 659 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var arrayAggregator = __webpack_require__(635),
-    baseAggregator = __webpack_require__(636),
-    baseIteratee = __webpack_require__(338),
-    isArray = __webpack_require__(324);
+"use strict";
 
-/**
- * Creates a function like `_.groupBy`.
- *
- * @private
- * @param {Function} setter The function to set accumulator values.
- * @param {Function} [initializer] The accumulator object initializer.
- * @returns {Function} Returns the new aggregator function.
- */
-function createAggregator(setter, initializer) {
-  return function(collection, iteratee) {
-    var func = isArray(collection) ? arrayAggregator : baseAggregator,
-        accumulator = initializer ? initializer() : {};
 
-    return func(collection, setter, baseIteratee(iteratee, 2), accumulator);
-  };
-}
+var _interopRequireDefault = __webpack_require__(1);
 
-module.exports = createAggregator;
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.BelongsToInPlace = exports.default = void 0;
 
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-/***/ }),
-/* 635 */
-/***/ (function(module, exports) {
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-/**
- * A specialized version of `baseAggregator` for arrays.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} setter The function to set `accumulator` values.
- * @param {Function} iteratee The iteratee to transform keys.
- * @param {Object} accumulator The initial aggregated object.
- * @returns {Function} Returns `accumulator`.
- */
-function arrayAggregator(array, setter, iteratee, accumulator) {
-  var index = -1,
-      length = array == null ? 0 : array.length;
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-  while (++index < length) {
-    var value = array[index];
-    setter(accumulator, value, iteratee(value), array);
-  }
-  return accumulator;
-}
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
-module.exports = arrayAggregator;
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
-/***/ }),
-/* 636 */
-/***/ (function(module, exports, __webpack_require__) {
+var _Association2 = _interopRequireDefault(__webpack_require__(655));
 
-var baseEach = __webpack_require__(444);
+var _dsl = __webpack_require__(495);
+
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
 /**
- * Aggregates elements of `collection` on `accumulator` with keys transformed
- * by `iteratee` and values set by `setter`.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} setter The function to set `accumulator` values.
- * @param {Function} iteratee The iteratee to transform keys.
- * @param {Object} accumulator The initial aggregated object.
- * @returns {Function} Returns `accumulator`.
+ * Here the id of the document is directly set in the attribute
+ * of the document, not in the relationships attribute
  */
-function baseAggregator(collection, setter, iteratee, accumulator) {
-  baseEach(collection, function(value, key, collection) {
-    setter(accumulator, value, iteratee(value), collection);
-  });
-  return accumulator;
-}
+var HasOneInPlace = /*#__PURE__*/function (_Association) {
+  (0, _inherits2.default)(HasOneInPlace, _Association);
 
-module.exports = baseAggregator;
+  var _super = _createSuper(HasOneInPlace);
+
+  function HasOneInPlace() {
+    (0, _classCallCheck2.default)(this, HasOneInPlace);
+    return _super.apply(this, arguments);
+  }
+
+  (0, _createClass2.default)(HasOneInPlace, [{
+    key: "dehydrate",
+    value: function dehydrate(doc) {
+      return _objectSpread(_objectSpread({}, doc), {}, (0, _defineProperty2.default)({}, this.name, this.raw || undefined));
+    }
+  }, {
+    key: "raw",
+    get: function get() {
+      return this.target[this.name];
+    }
+  }, {
+    key: "data",
+    get: function get() {
+      return this.get(this.doctype, this.raw);
+    }
+    /**
+     * @param {import("../types").CozyClientDocument} document - Document to query
+     * @param {object} client - The CozyClient instance
+     * @param {Association} assoc - The query params
+     *
+     * @returns {import("../types").CozyClientDocument | QueryDefinition}
+     */
+
+  }], [{
+    key: "query",
+    value: function query(document, client, assoc) {
+      var id = document[assoc.name];
+      return client.getDocumentFromState(assoc.doctype, id) || (0, _dsl.Q)(assoc.doctype).getById(id);
+    }
+  }]);
+  return HasOneInPlace;
+}(_Association2.default);
 
+exports.default = HasOneInPlace;
+var BelongsToInPlace = HasOneInPlace;
+exports.BelongsToInPlace = BelongsToInPlace;
 
 /***/ }),
-/* 637 */
+/* 660 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -103195,2059 +98239,1905 @@ var _interopRequireDefault = __webpack_require__(1);
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.QueryIDGenerator = exports.getQueryFromSlice = exports.receiveQueryError = exports.receiveQueryResult = exports.loadQuery = exports.initQuery = exports.default = exports.updateData = exports.makeSorterFromDefinition = exports.mergeSelectorAndPartialIndex = exports.convert$gtNullSelectors = exports.sortAndLimitDocsIds = exports.isReceivingData = exports.isQueryAction = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
-
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
-
-var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
+exports.default = void 0;
 
 var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
-
-var _mapValues = _interopRequireDefault(__webpack_require__(298));
-
-var _groupBy = _interopRequireDefault(__webpack_require__(638));
-
-var _difference = _interopRequireDefault(__webpack_require__(639));
-
-var _intersection = _interopRequireDefault(__webpack_require__(641));
-
-var _concat = _interopRequireDefault(__webpack_require__(644));
-
-var _isPlainObject = _interopRequireDefault(__webpack_require__(529));
-
-var _uniq = _interopRequireDefault(__webpack_require__(522));
-
-var _orderBy = _interopRequireDefault(__webpack_require__(645));
-
-var _isString = _interopRequireDefault(__webpack_require__(651));
-
-var _get = _interopRequireDefault(__webpack_require__(399));
-
-var _sift = _interopRequireDefault(__webpack_require__(652));
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-var _cozyFlags = _interopRequireDefault(__webpack_require__(493));
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-var _documents = __webpack_require__(632);
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
-var _mutations = __webpack_require__(653);
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
-var _helpers = __webpack_require__(654);
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
 var _dsl = __webpack_require__(495);
 
-var _logger = _interopRequireDefault(__webpack_require__(498));
+var _Association2 = _interopRequireDefault(__webpack_require__(655));
 
 function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
 function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-var INIT_QUERY = 'INIT_QUERY';
-var LOAD_QUERY = 'LOAD_QUERY';
-var RECEIVE_QUERY_RESULT = 'RECEIVE_QUERY_RESULT';
-var RECEIVE_QUERY_ERROR = 'RECEIVE_QUERY_ERROR'; // Read if the devtools are open to store the execution time
-// This is done at runtime to not read the value everytime
-// we receive a result. So you have to refresh your page
-// in order to get the stats
-
-var executionStatsEnabled = (0, _cozyFlags.default)('debug');
-
-var isQueryAction = function isQueryAction(action) {
-  return [INIT_QUERY, LOAD_QUERY, RECEIVE_QUERY_RESULT, RECEIVE_QUERY_ERROR].indexOf(action.type) !== -1;
-};
-
-exports.isQueryAction = isQueryAction;
-
-var isReceivingData = function isReceivingData(action) {
-  return action.type === RECEIVE_QUERY_RESULT;
-};
-/** @type {import("../types").QueryState} */
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-exports.isReceivingData = isReceivingData;
-var queryInitialState = {
-  id: null,
-  definition: null,
-  fetchStatus: 'pending',
-  isFetching: null,
-  lastFetch: null,
-  lastUpdate: null,
-  lastErrorUpdate: null,
-  lastError: null,
-  hasMore: false,
-  count: 0,
-  fetchedPagesCount: 0,
-  data: [],
-  bookmark: null
-};
 /**
- * Return the docs ids accordingly to the given sort and fetched docs
  *
- * @param {import("../types").QueryState} queryState - Current state
- * @param {import("../types").DocumentsStateSlice} documents - Reference to the documents slice
- * @param {Array<string>} ids - The updated ids after query
- * @param {object} params - The additional params
- * @param {number} params.count - The count of retrieved docs
- * @param {number} params.fetchedPagesCount - The number of pages already fetched
- * @returns {Array<string>} The list of sorted ids
+ * Used when related documents are stored directly under the attribute with
+ * only the ids.
+ *
+ * @property {Function} get
+ *
+ * @description
+ *
+ * An example document representing a TODO. See as the related
+ * tasks are represented via ids.
+ *
+ * ```js
+ * const todo = {
+ *   label: "Protect people's privacy",
+ *   tasks: [1, 2]
+ * }
+ * ```
+ *
+ * Here is the `Schema` that would represent this kind of document.
+ * Components receiving todos via `Query`s would have an instance of `HasManyInPlace`
+ * as their `tasks` attribute.
+ *
+ * ```js
+ * const schema = {
+ *   todos: {
+ *      doctype: 'io.cozy.todos',
+ *      relationships: {
+ *        tasks: {
+ *          doctype: 'io.cozy.tasks',
+ *          type: 'has-many-in-place'
+ *        }
+ *      }
+ *    }
+ * }
+ *
+ * const todo = {
+ *   label: "Get rich",
+ *   tasks: [1, 2]
+ * }
+ * ```
+ *
  */
+var HasManyInPlace = /*#__PURE__*/function (_Association) {
+  (0, _inherits2.default)(HasManyInPlace, _Association);
 
-var sortAndLimitDocsIds = function sortAndLimitDocsIds(queryState, documents, ids, _ref) {
-  var count = _ref.count,
-      fetchedPagesCount = _ref.fetchedPagesCount;
-  var evaluatedIds = (0, _toConsumableArray2.default)(ids);
+  var _super = _createSuper(HasManyInPlace);
 
-  if (queryState.definition.sort && documents) {
-    var sorter = makeSorterFromDefinition(queryState.definition);
-    var allDocs = documents[queryState.definition.doctype];
-    var docs = allDocs ? evaluatedIds.map(function (_id) {
-      return allDocs[_id];
-    }).filter(Boolean) : [];
-    evaluatedIds = sorter(docs).map(_helpers.properId);
+  function HasManyInPlace() {
+    (0, _classCallCheck2.default)(this, HasManyInPlace);
+    return _super.apply(this, arguments);
   }
 
-  var limit = queryState.definition.limit;
+  (0, _createClass2.default)(HasManyInPlace, [{
+    key: "addById",
+    value: function addById(id) {
+      var rel = this.getRelationship();
+      rel.push(id);
+    }
+  }, {
+    key: "removeById",
+    value: function removeById(id) {
+      var rel = this.getRelationship();
+      var index = rel.indexOf(id);
 
-  if (limit) {
-    var sliceCount;
+      if (index !== -1) {
+        rel.splice(index, 1);
+      }
+    }
+  }, {
+    key: "existsById",
+    value: function existsById(id) {
+      var rel = this.getRelationship();
+      return rel.indexOf(id) !== -1;
+    }
+  }, {
+    key: "getRelationship",
+    value: function getRelationship() {
+      this.target[this.name] = this.target[this.name] || [];
+      return this.target[this.name];
+    }
+  }, {
+    key: "dehydrate",
+    value: function dehydrate(doc) {
+      return _objectSpread(_objectSpread({}, doc), {}, (0, _defineProperty2.default)({}, this.name, this.raw || []));
+    }
+  }, {
+    key: "raw",
 
-    if (count < limit) {
-      // When there are less results than the limit, this is either the first
-      // or last paginated query.
-      sliceCount = fetchedPagesCount > 1 ? limit * (fetchedPagesCount - 1) + count : count;
-    } else {
-      sliceCount = limit * fetchedPagesCount;
+    /**
+     * Raw property
+     *
+     * @type {Array<string>}
+     */
+    get: function get() {
+      return this.target[this.name];
     }
+  }, {
+    key: "data",
+    get: function get() {
+      var _this = this;
 
-    evaluatedIds = evaluatedIds.slice(0, sliceCount);
-  }
+      var doctype = this.doctype;
+      return (this.raw || []).map(function (_id) {
+        return _this.get(doctype, _id);
+      });
+    }
+    /**
+     * @param {import("../types").CozyClientDocument} document - Document to query
+     * @param {object} client - The CozyClient instance
+     * @param {Association} assoc - The query params
+     *
+     * @returns {import("../types").CozyClientDocument | QueryDefinition}
+     */
 
-  return evaluatedIds;
-};
-/**
- * Return the query docs ids, taken from the action response and the documents' slice
- *
- * @param {import("../types").QueryState} queryState - Current state
- * @param {object} response - The action response
- * @param {import("../types").DocumentsStateSlice} documents - Reference to the documents slice
- * @param {object} params - The additional params
- * @param {number} params.count - The count of retrieved docs
- * @param {number} params.fetchedPagesCount - The number of pages already fetched
- * @returns {Array<string>} The list of sorted ids
- */
+  }], [{
+    key: "query",
+    value: function query(document, client, assoc) {
+      var ids = document[assoc.name];
 
+      if (ids && ids > 0) {
+        return (0, _dsl.Q)(assoc.doctype).getByIds(ids);
+      } else {
+        return null;
+      }
+    }
+  }]);
+  return HasManyInPlace;
+}(_Association2.default);
 
-exports.sortAndLimitDocsIds = sortAndLimitDocsIds;
+var _default = HasManyInPlace;
+exports.default = _default;
 
-var updateQueryDataFromResponse = function updateQueryDataFromResponse(queryState, response, documents, _ref2) {
-  var count = _ref2.count,
-      fetchedPagesCount = _ref2.fetchedPagesCount;
-  var updatedIds = (0, _uniq.default)([].concat((0, _toConsumableArray2.default)(queryState.data), (0, _toConsumableArray2.default)(response.data.map(_helpers.properId))));
-  return sortAndLimitDocsIds(queryState, documents, updatedIds, {
-    count: count,
-    fetchedPagesCount: fetchedPagesCount
-  });
-};
+/***/ }),
+/* 661 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _interopRequireDefault = __webpack_require__(1);
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+
+var _get2 = _interopRequireDefault(__webpack_require__(602));
+
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+
+var _HasMany2 = _interopRequireDefault(__webpack_require__(656));
+
+var _dsl = __webpack_require__(495);
+
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var TRIGGERS_DOCTYPE = 'io.cozy.triggers';
 /**
- * Reducer for a query slice
+ * Association used for konnectors to retrieve all their related triggers.
  *
- * @param  {import("../types").QueryState} state - Current state
- * @param  {any} action - Redux action
- * @param  {import("../types").DocumentsStateSlice} documents - Reference to the next documents slice
- * @returns {import("../types").QueryState} - Next state
+ * @augments HasMany
  */
 
+var HasManyTriggers = /*#__PURE__*/function (_HasMany) {
+  (0, _inherits2.default)(HasManyTriggers, _HasMany);
 
-var query = function query() {
-  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : queryInitialState;
-  var action = arguments.length > 1 ? arguments[1] : undefined;
-  var documents = arguments.length > 2 ? arguments[2] : undefined;
+  var _super = _createSuper(HasManyTriggers);
 
-  switch (action.type) {
-    case INIT_QUERY:
-      if (state.lastUpdate && state.id === action.queryId && state.definition === action.queryDefinition) {
-        return state;
-      }
+  function HasManyTriggers() {
+    (0, _classCallCheck2.default)(this, HasManyTriggers);
+    return _super.apply(this, arguments);
+  }
 
-      return _objectSpread(_objectSpread({}, state), {}, {
-        id: action.queryId,
-        definition: action.queryDefinition,
-        options: action.options,
-        fetchStatus: state.lastUpdate ? state.fetchStatus : 'pending'
+  (0, _createClass2.default)(HasManyTriggers, [{
+    key: "data",
+    get: function get() {
+      var _this = this;
+
+      return (0, _get2.default)((0, _getPrototypeOf2.default)(HasManyTriggers.prototype), "data", this).filter(function (_ref) {
+        var slug = _ref.slug;
+        return slug === _this.target.slug;
       });
+    }
+    /**
+     * In this association the query is special, we need to fetch all the triggers
+     * having for the 'konnector' worker, and then filter them based on their
+     * `message.konnector` attribute
+     */
 
-    case LOAD_QUERY:
-      if (state.fetchStatus === 'loading') {
-        return state;
-      }
+  }], [{
+    key: "query",
+    value: function query(doc, client) {
+      return (0, _dsl.Q)(TRIGGERS_DOCTYPE).where({
+        worker: 'konnector'
+      });
+    }
+  }]);
+  return HasManyTriggers;
+}(_HasMany2.default);
 
-      if (state.fetchStatus === 'loaded' && action.backgroundFetching) {
-        return _objectSpread(_objectSpread({}, state), {}, {
-          fetchStatus: 'loaded',
-          isFetching: true
-        });
-      }
+var _default = HasManyTriggers;
+exports.default = _default;
 
-      return _objectSpread(_objectSpread({}, state), {}, {
-        fetchStatus: 'loading'
-      });
+/***/ }),
+/* 662 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    case RECEIVE_QUERY_RESULT:
-      {
-        var response = action.response; // Data can be null when we get a 404 not found
-        // see Collection.get()
-        // but we still need to update the fetchStatus.
+"use strict";
 
-        if (!response.data) {
-          return _objectSpread(_objectSpread({}, state), {}, {
-            fetchStatus: 'loaded',
-            isFetching: action.backgroundFetching ? false : null,
-            lastFetch: Date.now(),
-            lastUpdate: Date.now()
-          });
-        }
-        /** @type {Partial<import("../types").QueryState>} */
 
+var _interopRequireDefault = __webpack_require__(1);
 
-        var common = _objectSpread({
-          fetchStatus: 'loaded',
-          isFetching: action.backgroundFetching ? false : null,
-          lastFetch: Date.now(),
-          lastUpdate: Date.now()
-        }, executionStatsEnabled && {
-          execution_stats: response.execution_stats
-        });
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.getReferencedById = exports.getReferencedBy = exports.isReferencedById = exports.isReferencedBy = exports.create = exports.resolveClass = exports.attachRelationships = exports.responseToRelationship = exports.pickTypeAndId = void 0;
 
-        if (!Array.isArray(response.data)) {
-          return _objectSpread(_objectSpread(_objectSpread({}, state), common), {}, {
-            hasMore: false,
-            count: 1,
-            data: [(0, _helpers.properId)(response.data)]
-          });
-        }
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-        var count = response.meta && response.meta.count ? response.meta.count : response.data.length;
+var _pick = _interopRequireDefault(__webpack_require__(596));
 
-        if (action.backgroundFetching) {
-          return _objectSpread(_objectSpread(_objectSpread({}, state), common), {}, {
-            bookmark: response.bookmark || null,
-            hasMore: response.next !== undefined ? response.next : state.hasMore,
-            count: count,
-            data: response.data.map(_helpers.properId)
-          });
-        }
+var _pickBy = _interopRequireDefault(__webpack_require__(579));
 
-        var fetchedPagesCount = state.fetchedPagesCount + 1;
-        var data = updateQueryDataFromResponse(state, response, documents, {
-          count: count,
-          fetchedPagesCount: fetchedPagesCount
-        });
-        return _objectSpread(_objectSpread(_objectSpread({}, state), common), {}, {
-          bookmark: response.bookmark || null,
-          hasMore: response.next !== undefined ? response.next : state.hasMore,
-          count: count,
-          fetchedPagesCount: fetchedPagesCount,
-          data: data
-        });
-      }
+var _Association = _interopRequireDefault(__webpack_require__(655));
 
-    case RECEIVE_QUERY_ERROR:
-      return _objectSpread(_objectSpread({}, state), {}, {
-        id: action.queryId,
-        fetchStatus: 'failed',
-        isFetching: action.backgroundFetching ? false : null,
-        lastError: action.error,
-        lastErrorUpdate: Date.now()
-      });
+var _HasOne = _interopRequireDefault(__webpack_require__(657));
 
-    default:
-      return state;
-  }
-};
-/**
- * Normalize sift selector
- *
- * @returns {object}
- */
+var _HasOneInPlace = _interopRequireDefault(__webpack_require__(659));
 
+var _HasMany = _interopRequireDefault(__webpack_require__(656));
 
-var convert$gtNullSelectors = function convert$gtNullSelectors(selector) {
-  var result = {};
+var _HasManyInPlace = _interopRequireDefault(__webpack_require__(660));
 
-  for (var _i = 0, _Object$entries = Object.entries(selector); _i < _Object$entries.length; _i++) {
-    var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
-        key = _Object$entries$_i[0],
-        value = _Object$entries$_i[1];
+var _HasManyFiles = _interopRequireDefault(__webpack_require__(626));
 
-    var convertedValue = (0, _isPlainObject.default)(value) ? convert$gtNullSelectors(value) : value;
-    var convertedKey = key === '$gt' && convertedValue === null ? '$gtnull' : key;
-    result[convertedKey] = convertedValue;
-  }
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-  return result;
-};
-/**
- * Merges query selectors with query partial indexes
- *
- * @param {object} queryDefinition - A query definition
- * @returns {object} A query definition selector
- */
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
+var pickTypeAndId = function pickTypeAndId(x) {
+  return (0, _pick.default)(x, '_type', '_id');
+};
 
-exports.convert$gtNullSelectors = convert$gtNullSelectors;
+exports.pickTypeAndId = pickTypeAndId;
 
-var mergeSelectorAndPartialIndex = function mergeSelectorAndPartialIndex(queryDefinition) {
-  return _objectSpread(_objectSpread({}, (0, _get.default)(queryDefinition, 'selector')), (0, _get.default)(queryDefinition, 'partialFilter'));
+var applyHelper = function applyHelper(fn, objOrArr) {
+  return Array.isArray(objOrArr) ? objOrArr.map(fn) : fn(objOrArr);
 };
-/**
- * @param  {QueryDefinition} queryDefinition - A query definition
- * @returns {function(import("../types").CozyClientDocument): boolean}
- */
 
+var responseToRelationship = function responseToRelationship(response) {
+  return (0, _pickBy.default)({
+    data: applyHelper(pickTypeAndId, response.data),
+    meta: response.meta,
+    next: response.next,
+    skip: response.skip,
+    bookmark: response.bookmark
+  });
+};
 
-exports.mergeSelectorAndPartialIndex = mergeSelectorAndPartialIndex;
+exports.responseToRelationship = responseToRelationship;
 
-var getSelectorFilterFn = function getSelectorFilterFn(queryDefinition) {
-  if (queryDefinition.selector || queryDefinition.partialFilter) {
-    var selectors = mergeSelectorAndPartialIndex(queryDefinition); // sift does not work like couchdb when using { $gt: null } as a selector, so we use a custom operator
+var attachRelationship = function attachRelationship(doc, relationships) {
+  return _objectSpread(_objectSpread({}, doc), {}, {
+    relationships: _objectSpread(_objectSpread({}, doc.relationships), relationships)
+  });
+};
 
-    _sift.default.use({
-      $gtnull: function $gtnull(_selectorValue, actualValue) {
-        return !!actualValue;
-      }
+var attachRelationships = function attachRelationships(response, relationshipsByDocId) {
+  if (Array.isArray(response.data)) {
+    return _objectSpread(_objectSpread({}, response), {}, {
+      data: response.data.map(function (doc) {
+        return attachRelationship(doc, relationshipsByDocId[doc._id]);
+      })
     });
-
-    return (0, _sift.default)(convert$gtNullSelectors(selectors));
-  } else if (queryDefinition.id) {
-    /** @type {object} */
-    var siftQuery = {
-      _id: queryDefinition.id
-    };
-    return (0, _sift.default)(siftQuery);
-  } else if (queryDefinition.ids) {
-    /** @type {object} */
-    var _siftQuery = {
-      _id: {
-        $in: queryDefinition.ids
-      }
-    };
-    return (0, _sift.default)(_siftQuery);
   } else {
-    return null;
+    var doc = response.data;
+    return _objectSpread(_objectSpread({}, response), {}, {
+      data: attachRelationship(doc, relationshipsByDocId[doc._id])
+    });
   }
 };
-/**
- *
- * Returns a predicate function that checks if a document should be
- * included in the result of the query.
- *
- * @param  {import("../types").QueryState} query - Definition of the query
- * @returns {function(import("../types").CozyClientDocument): boolean} Predicate function
- */
-
-
-var getQueryDocumentsChecker = function getQueryDocumentsChecker(query) {
-  var qdoctype = query.definition.doctype;
-  var selectorFilterFn = getSelectorFilterFn(query.definition);
-  return function (datum) {
-    var ddoctype = datum._type;
-    if (ddoctype !== qdoctype) return false;
-    if (datum._deleted) return false;
-    if (!selectorFilterFn) return true;
-    return !!selectorFilterFn(datum);
-  };
-};
 
-var makeCaseInsensitiveStringSorter = function makeCaseInsensitiveStringSorter(attrName) {
-  return function (item) {
-    var attrValue = (0, _get.default)(item, attrName);
-    return (0, _isString.default)(attrValue) ? attrValue.toLowerCase() : attrValue;
-  };
+exports.attachRelationships = attachRelationships;
+var aliases = {
+  'io.cozy.files:has-many': _HasManyFiles.default,
+  'has-many': _HasMany.default,
+  'belongs-to-in-place': _HasOneInPlace.default,
+  'has-one': _HasOne.default,
+  'has-one-in-place': _HasOneInPlace.default,
+  'has-many-in-place': _HasManyInPlace.default
 };
 /**
- * Creates a sort function from a definition.
+ * Returns the relationship class for a given doctype/type.
  *
- * Used to sort query results inside the store when creating a file or
- * receiving updates.
+ * In the schema definition, some classes have string aliases
+ * so you do not have to import directly the association.
  *
- * @param {QueryDefinition} definition - A query definition
- * @returns {function(Array<import("../types").CozyClientDocument>): Array<import("../types").CozyClientDocument>}
+ * Some doctypes can have built-in overriden relationships.
  *
  * @private
  */
 
+var resolveClass = function resolveClass(doctype, type) {
+  if (type === undefined) {
+    throw new Error('Undefined type for ' + doctype);
+  }
 
-var makeSorterFromDefinition = function makeSorterFromDefinition(definition) {
-  var sort = definition.sort;
+  if (typeof type !== 'string') {
+    return type;
+  } else {
+    var qualified = "".concat(doctype, ":").concat(type);
+    var cls = aliases[qualified] || aliases[type];
 
-  if (!sort) {
-    return function (docs) {
-      return docs;
-    };
-  } else if (!Array.isArray(definition.sort)) {
-    _logger.default.warn('Correct update of queries with a sort that is not an array is not supported. Use an array as argument of QueryDefinition::sort');
+    if (!cls) {
+      throw new Error("Unknown association '".concat(type, "'"));
+    } else {
+      return cls;
+    }
+  }
+};
 
-    return function (docs) {
-      return docs;
-    };
-  } else {
-    var attributeOrders = sort.map(function (x) {
-      return Object.entries(x)[0];
-    });
-    var attrs = attributeOrders.map(function (x) {
-      return x[0];
-    }).map(makeCaseInsensitiveStringSorter);
-    var orders = attributeOrders.map(function (x) {
-      return x[1];
-    });
-    return function (docs) {
-      return (0, _orderBy.default)(docs, attrs, orders);
-    };
+exports.resolveClass = resolveClass;
+
+var create = function create(target, _ref, accessors) {
+  var name = _ref.name,
+      type = _ref.type,
+      doctype = _ref.doctype;
+
+  if (target[name] instanceof _Association.default) {
+    throw new Error("Association ".concat(name, " already exists"));
   }
+
+  return new type(target, name, doctype, accessors);
 };
 /**
- * Updates query state when new data comes in
+ * Checks if the file is referenced by a specific doctype
  *
- * @param  {import("../types").QueryState} query - Current query state
- * @param  {Array<import("../types").CozyClientDocument>} newData - New documents (in most case from the server)
- * @param  {import("../types").DocumentsStateSlice} documents - A reference to the documents slice
- * @returns {import("../types").QueryState} - Updated query state
+ * @param {import("../types").IOCozyFile} file - io.cozy.files document
+ * @param {import("../types").Doctype} referencedBy - Doctype where document is referenced
+ * @returns {boolean} If a reference is found
  */
 
 
-exports.makeSorterFromDefinition = makeSorterFromDefinition;
+exports.create = create;
 
-var updateData = function updateData(query, newData, documents) {
-  var belongsToQuery = getQueryDocumentsChecker(query);
-  var res = (0, _mapValues.default)((0, _groupBy.default)(newData, belongsToQuery), function (docs) {
-    return docs.map(_helpers.properId);
-  });
-  var _res$true = res.true,
-      matchedIds = _res$true === void 0 ? [] : _res$true,
-      _res$false = res.false,
-      unmatchedIds = _res$false === void 0 ? [] : _res$false;
-  var originalIds = query.data;
-  var autoUpdate = query.options && query.options.autoUpdate;
-  var shouldRemove = !autoUpdate || autoUpdate.remove !== false;
-  var shouldAdd = !autoUpdate || autoUpdate.add !== false;
-  var shouldUpdate = !autoUpdate || autoUpdate.update !== false;
-  var toRemove = shouldRemove ? (0, _intersection.default)(originalIds, unmatchedIds) : [];
-  var toAdd = shouldAdd ? (0, _difference.default)(matchedIds, originalIds) : [];
-  var toUpdate = shouldUpdate ? (0, _intersection.default)(originalIds, matchedIds) : [];
-  var changed = toRemove.length || toAdd.length || toUpdate.length; // concat doesn't check duplicates (contrarily to union), which is ok as
-  // toAdd does not contain any id present in originalIds, by construction.
-  // It is also faster than union.
+var isReferencedBy = function isReferencedBy(file, referencedBy) {
+  var _file$relationships, _file$relationships$r;
 
-  var updatedData = (0, _difference.default)((0, _concat.default)(originalIds, toAdd), toRemove);
-  var fetchedPagesCount = query.fetchedPagesCount;
-  var docsIds = sortAndLimitDocsIds(query, documents, updatedData, {
-    count: updatedData.length,
-    fetchedPagesCount: fetchedPagesCount
-  });
-  return _objectSpread(_objectSpread({}, query), {}, {
-    data: docsIds,
-    count: docsIds.length,
-    fetchedPagesCount: fetchedPagesCount,
-    lastUpdate: changed ? Date.now() : query.lastUpdate
+  var references = (file === null || file === void 0 ? void 0 : (_file$relationships = file.relationships) === null || _file$relationships === void 0 ? void 0 : (_file$relationships$r = _file$relationships.referenced_by) === null || _file$relationships$r === void 0 ? void 0 : _file$relationships$r.data) || (file === null || file === void 0 ? void 0 : file.referenced_by) || [];
+  return references.some(function (reference) {
+    return reference.type === referencedBy;
   });
 };
 /**
- * Creates a function that returns an updated query state
- * from an action
+ * Checks if the file is referenced by a specific doctype and a specific Id of that reference
  *
- * @param  {object} action - A redux action
- * @param  {import("../types").DocumentsStateSlice} documents - Reference to documents slice
- * @returns {function(import("../types").QueryState): import("../types").QueryState} - Updater query state
+ * @param {import("../types").IOCozyFile} file - io.cozy.files document
+ * @param {import("../types").Doctype} referencedBy - Doctype where document is referenced
+ * @param {string} referencedId - Id of the referenced document
+ * @returns {boolean} If a reference is found
  */
 
 
-exports.updateData = updateData;
+exports.isReferencedBy = isReferencedBy;
 
-var autoQueryUpdater = function autoQueryUpdater(action, documents) {
-  return function (query) {
-    var data = (0, _get.default)(action, 'response.data') || (0, _get.default)(action, 'definition.document');
-    if (!data) return query;
+var isReferencedById = function isReferencedById(file, referencedBy, referencedId) {
+  var _file$relationships2, _file$relationships2$;
 
-    if (!Array.isArray(data)) {
-      data = [data];
-    }
+  var references = (file === null || file === void 0 ? void 0 : (_file$relationships2 = file.relationships) === null || _file$relationships2 === void 0 ? void 0 : (_file$relationships2$ = _file$relationships2.referenced_by) === null || _file$relationships2$ === void 0 ? void 0 : _file$relationships2$.data) || (file === null || file === void 0 ? void 0 : file.referenced_by) || [];
+  return references.some(function (reference) {
+    return reference.type === referencedBy && reference.id === referencedId;
+  });
+};
+/**
+ * Get array of reference by an specific doctype
+ *
+ * @param {import("../types").IOCozyFile} file - io.cozy.files document
+ * @param {import("../types").Doctype} referencedBy - Doctype where document is referenced
+ * @returns {import("../types").Reference[]} Array of references found
+ */
 
-    if (!data.length) {
-      return query;
-    }
 
-    if (query.definition.doctype !== data[0]._type) {
-      return query;
-    }
+exports.isReferencedById = isReferencedById;
 
-    return updateData(query, data, documents);
-  };
+var getReferencedBy = function getReferencedBy(file, referencedBy) {
+  var _file$relationships3, _file$relationships3$;
+
+  var references = (file === null || file === void 0 ? void 0 : (_file$relationships3 = file.relationships) === null || _file$relationships3 === void 0 ? void 0 : (_file$relationships3$ = _file$relationships3.referenced_by) === null || _file$relationships3$ === void 0 ? void 0 : _file$relationships3$.data) || (file === null || file === void 0 ? void 0 : file.referenced_by) || [];
+  return references.filter(function (reference) {
+    return reference.type === referencedBy;
+  });
 };
 /**
- * Creates a function that returns an updated query state
- * from an action
+ * Get array of reference by an specific doctype and a specific Id of that reference
  *
- * @param  {object} action - A redux action
- * @param  {import("../types").DocumentsStateSlice} documents - Reference to documents slice
- * @returns {function(import("../types").QueryState): import("../types").QueryState} - Updater query state
+ * @param {import("../types").IOCozyFile} file - io.cozy.files document
+ * @param {import("../types").Doctype} referencedBy - Doctype where document is referenced
+ * @param {string} referencedId - Id of the referenced document
+ * @returns {import("../types").Reference[]} Array of the reference found
  */
 
 
-var manualQueryUpdater = function manualQueryUpdater(action, documents) {
-  return function (query) {
-    var updateQueries = action.updateQueries;
-    var response = action.response;
-    var updater = updateQueries[query.id];
+exports.getReferencedBy = getReferencedBy;
 
-    if (!updater) {
-      return query;
-    }
+var getReferencedById = function getReferencedById(file, referencedBy, referencedId) {
+  var _file$relationships4, _file$relationships4$;
 
-    var doctype = query.definition.doctype;
-    var oldData = query.data;
-    var oldDocs = mapIdsToDocuments(documents, doctype, oldData);
-    var newData = updater(oldDocs, response);
-    var newDataIds = newData.map(_helpers.properId);
-    return _objectSpread(_objectSpread({}, query), {}, {
-      data: newDataIds,
-      count: newDataIds.length,
-      lastUpdate: Date.now()
-    });
-  };
+  var references = (file === null || file === void 0 ? void 0 : (_file$relationships4 = file.relationships) === null || _file$relationships4 === void 0 ? void 0 : (_file$relationships4$ = _file$relationships4.referenced_by) === null || _file$relationships4$ === void 0 ? void 0 : _file$relationships4$.data) || (file === null || file === void 0 ? void 0 : file.referenced_by) || [];
+  return references.filter(function (reference) {
+    return reference.type === referencedBy && reference.id === referencedId;
+  });
 };
-/**
- * @param  {import("../types").QueriesStateSlice}  state - Redux slice containing all the query states indexed by name
- * @param  {object}  action - Income redux action
- * @param  {import("../types").DocumentsStateSlice}  documents - Reference to documents slice
- * @param  {boolean} haveDocumentsChanged - Has the document slice changed with current action
- * @returns {import("../types").QueriesStateSlice}
- */
 
+exports.getReferencedById = getReferencedById;
 
-var queries = function queries() {
-  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-  var action = arguments.length > 1 ? arguments[1] : undefined;
-  var documents = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-  var haveDocumentsChanged = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
+/***/ }),
+/* 663 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  if (action.type == INIT_QUERY) {
-    var newQueryState = query(state[action.queryId], action, documents); // Do not create new object unnecessarily
+"use strict";
 
-    if (newQueryState === state[action.queryId]) {
-      return state;
-    }
 
-    return _objectSpread(_objectSpread({}, state), {}, (0, _defineProperty2.default)({}, action.queryId, newQueryState));
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+Object.defineProperty(exports, "deconstructCozyWebLinkWithSlug", {
+  enumerable: true,
+  get: function get() {
+    return _urlHelper.deconstructCozyWebLinkWithSlug;
   }
-
-  if (isQueryAction(action)) {
-    var updater = autoQueryUpdater(action, documents);
-    return (0, _mapValues.default)(state, function (queryState) {
-      if (queryState.id == action.queryId) {
-        return query(queryState, action, documents);
-      } else if (haveDocumentsChanged) {
-        return updater(queryState);
-      } else {
-        return queryState;
-      }
-    });
+});
+Object.defineProperty(exports, "deconstructRedirectLink", {
+  enumerable: true,
+  get: function get() {
+    return _urlHelper.deconstructRedirectLink;
+  }
+});
+Object.defineProperty(exports, "generateWebLink", {
+  enumerable: true,
+  get: function get() {
+    return _urlHelper.generateWebLink;
+  }
+});
+Object.defineProperty(exports, "ensureFirstSlash", {
+  enumerable: true,
+  get: function get() {
+    return _urlHelper.ensureFirstSlash;
+  }
+});
+Object.defineProperty(exports, "rootCozyUrl", {
+  enumerable: true,
+  get: function get() {
+    return _urlHelper.rootCozyUrl;
+  }
+});
+Object.defineProperty(exports, "InvalidRedirectLinkError", {
+  enumerable: true,
+  get: function get() {
+    return _urlHelper.InvalidRedirectLinkError;
+  }
+});
+Object.defineProperty(exports, "InvalidCozyUrlError", {
+  enumerable: true,
+  get: function get() {
+    return _urlHelper.InvalidCozyUrlError;
+  }
+});
+Object.defineProperty(exports, "InvalidProtocolError", {
+  enumerable: true,
+  get: function get() {
+    return _urlHelper.InvalidProtocolError;
+  }
+});
+Object.defineProperty(exports, "BlockedCozyError", {
+  enumerable: true,
+  get: function get() {
+    return _urlHelper.BlockedCozyError;
+  }
+});
+Object.defineProperty(exports, "dehydrate", {
+  enumerable: true,
+  get: function get() {
+    return _dehydrateHelper.dehydrate;
   }
+});
 
-  if ((0, _mutations.isReceivingMutationResult)(action)) {
-    var _updater = action.updateQueries ? manualQueryUpdater(action, documents) : autoQueryUpdater(action, documents);
+var _urlHelper = __webpack_require__(664);
 
-    return (0, _mapValues.default)(state, _updater);
-  }
+var _dehydrateHelper = __webpack_require__(665);
 
-  return state;
-};
+/***/ }),
+/* 664 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _default = queries;
-/**
- * Create the query states in the store. Queries are indexed
- * in the store by queryId
- *
- * @param  {string} queryId  Name/id of the query
- * @param  {QueryDefinition} queryDefinition - Definition of the created query
- * @param  {import("../types").QueryOptions} [options] - Options for the created query
- * @returns {object} Redux action to dispatch
- */
+"use strict";
 
-exports.default = _default;
 
-var initQuery = function initQuery(queryId, queryDefinition) {
-  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+var _interopRequireDefault = __webpack_require__(1);
 
-  if (!queryDefinition.doctype) {
-    throw new Error('Cannot init query with no doctype');
-  }
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.rootCozyUrl = exports.InvalidCozyUrlError = exports.BlockedCozyError = exports.InvalidProtocolError = exports.InvalidRedirectLinkError = exports.deconstructRedirectLink = exports.deconstructCozyWebLinkWithSlug = exports.generateWebLink = exports.ensureFirstSlash = void 0;
 
-  return {
-    type: INIT_QUERY,
-    queryId: queryId,
-    queryDefinition: queryDefinition,
-    options: options
-  };
+var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
+
+var _toArray2 = _interopRequireDefault(__webpack_require__(280));
+
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
+
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+
+var _wrapNativeSuper2 = _interopRequireDefault(__webpack_require__(583));
+
+var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
+
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
+
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+
+var ensureFirstSlash = function ensureFirstSlash(path) {
+  if (!path) {
+    return '/';
+  } else {
+    return path.startsWith('/') ? path : '/' + path;
+  }
 };
 /**
- * Update the fetchStatus when the query is loading
+ * generateWebLink - Construct a link to a web app
  *
- * @param  {string} queryId - id of the query
- * @param  {import("../types").QueryOptions} [options] - Options for the created query
- * @returns {object} Redux action to dispatch
+ * This function does not get its cozy url from a CozyClient instance so it can
+ * be used to build urls that point to other Cozies than the user's own Cozy.
+ * This is useful when pointing to the Cozy of the owner of a shared note for
+ * example.
+ *
+ * @param {object} options               Object of options
+ * @param {string}   options.cozyUrl       Base URL of the cozy, eg. cozy.tools or test.mycozy.cloud
+ * @param {Array}    [options.searchParams]  Array of search parameters as [key, value] arrays, eg. ['username', 'bob']
+ * @param {string}   [options.pathname]      Path to a specific part of the app, eg. /public
+ * @param {string}   [options.hash]          Path inside the app, eg. /files/test.jpg
+ * @param {string}   [options.slug]          Slug of the app
+ * @param {string}   [options.subDomainType] Whether the cozy is using flat or nested subdomains. Defaults to flat.
+ *
+ * @returns {string} Generated URL
  */
 
 
-exports.initQuery = initQuery;
+exports.ensureFirstSlash = ensureFirstSlash;
 
-var loadQuery = function loadQuery(queryId, options) {
-  return _objectSpread({
-    type: LOAD_QUERY,
-    queryId: queryId
-  }, options);
+var generateWebLink = function generateWebLink(_ref) {
+  var cozyUrl = _ref.cozyUrl,
+      searchParamsOption = _ref.searchParams,
+      pathname = _ref.pathname,
+      hash = _ref.hash,
+      slug = _ref.slug,
+      subDomainType = _ref.subDomainType;
+  var searchParams = searchParamsOption || [];
+  var url = new URL(cozyUrl);
+  url.host = subDomainType === 'nested' ? "".concat(slug, ".").concat(url.host) : url.host.split('.').map(function (x, i) {
+    return i === 0 ? x + '-' + slug : x;
+  }).join('.');
+  url.pathname = ensureFirstSlash(pathname);
+  url.hash = ensureFirstSlash(hash);
+
+  var _iterator = _createForOfIteratorHelper(searchParams),
+      _step;
+
+  try {
+    for (_iterator.s(); !(_step = _iterator.n()).done;) {
+      var _step$value = (0, _slicedToArray2.default)(_step.value, 2),
+          param = _step$value[0],
+          value = _step$value[1];
+
+      url.searchParams.set(param, value);
+    }
+  } catch (err) {
+    _iterator.e(err);
+  } finally {
+    _iterator.f();
+  }
+
+  return url.toString();
 };
 /**
- * Update the fetchStatus when the query is loading
+ * Deconstruct the given link in order to retrieve useful data like Cozy's name, domain, or slug
  *
- * @param  {string} queryId - id of the query
- * @param {object} response - The action response
- * @param  {import("../types").QueryOptions} [options] - Options for the created query
- * @returns {object} Redux action to dispatch
+ * The given link MUST contain a slug
+ *
+ * @param {string} webLink - link to deconstruct. It should be a link from a Cozy and containing a slug
+ * @param {import("../types").SubdomainType} [subDomainType=flat] - whether the cozy is using flat or nested subdomains.
+ * @returns {import("../types").CozyLinkData} Deconstructed link
  */
 
 
-exports.loadQuery = loadQuery;
+exports.generateWebLink = generateWebLink;
 
-var receiveQueryResult = function receiveQueryResult(queryId, response) {
-  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-  return _objectSpread({
-    type: RECEIVE_QUERY_RESULT,
-    queryId: queryId,
-    response: response
-  }, options);
+var deconstructCozyWebLinkWithSlug = function deconstructCozyWebLinkWithSlug(webLink) {
+  var subDomainType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'flat';
+  var url = new URL(webLink);
+  var slug = subDomainType === 'nested' ? url.host.split('.')[0] : url.host.split('.')[0].split('-')[1];
+  var cozyName = subDomainType === 'nested' ? url.host.split('.')[1] : url.host.split('.')[0].split('-')[0];
+  var cozyBaseDomain = url.host.split('.').slice(subDomainType === 'nested' ? 2 : 1).join('.');
+  return {
+    cozyBaseDomain: cozyBaseDomain,
+    cozyName: cozyName,
+    pathname: url.pathname,
+    hash: url.hash,
+    protocol: url.protocol,
+    searchParams: url.searchParams.toString(),
+    slug: slug
+  };
+};
+
+exports.deconstructCozyWebLinkWithSlug = deconstructCozyWebLinkWithSlug;
+
+var isValidSlug = function isValidSlug(slug) {
+  return slug.match(/^[a-z0-9]+$/);
 };
 /**
- * Update the fetchStatus when the query is loading
+ * Deconstruct the given redirect link in order to retrieve slug, pathname and hash
  *
- * @param  {string} queryId - id of the query
- * @param {object} error - The action error
- * @param  {import("../types").QueryOptions} [options] - Options for the created query
- * @returns {object} Redux action to dispatch
+ * @param {string} redirectLink - redirect link to deconstruct (i.e. 'drive/public/#/folder/SOME_ID')
+ * @returns {import("../types").RedirectLinkData} Deconstructed link
+ * @throws {InvalidRedirectLinkError} Thrown when redirect link is invalid
  */
 
 
-exports.receiveQueryResult = receiveQueryResult;
-
-var receiveQueryError = function receiveQueryError(queryId, error) {
-  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-  return _objectSpread({
-    type: RECEIVE_QUERY_ERROR,
-    queryId: queryId,
-    error: error
-  }, options);
-}; // selectors
-
-
-exports.receiveQueryError = receiveQueryError;
+var deconstructRedirectLink = function deconstructRedirectLink(redirectLink) {
+  var _redirectLink$split = redirectLink.split('#'),
+      _redirectLink$split2 = (0, _slicedToArray2.default)(_redirectLink$split, 2),
+      splits = _redirectLink$split2[0],
+      hash = _redirectLink$split2[1];
 
-var mapIdsToDocuments = function mapIdsToDocuments(documents, doctype, ids) {
-  return ids.map(function (id) {
-    return (0, _documents.getDocumentFromSlice)(documents, doctype, id);
-  });
-};
+  var _splits$split = splits.split(/\/(.*)/),
+      _splits$split2 = (0, _slicedToArray2.default)(_splits$split, 2),
+      slug = _splits$split2[0],
+      pathname = _splits$split2[1];
 
-var getQueryFromSlice = function getQueryFromSlice(state, queryId, documents) {
-  if (!state || !state[queryId]) {
-    return _objectSpread(_objectSpread({}, queryInitialState), {}, {
-      id: queryId,
-      data: null
-    });
+  if (!isValidSlug(slug)) {
+    throw new InvalidRedirectLinkError(redirectLink);
   }
 
-  var query = state[queryId];
-  return documents ? _objectSpread(_objectSpread({}, query), {}, {
-    data: mapIdsToDocuments(documents, query.definition.doctype, query.data)
-  }) : query;
+  return {
+    slug: slug,
+    pathname: pathname,
+    hash: hash
+  };
 };
 
-exports.getQueryFromSlice = getQueryFromSlice;
+exports.deconstructRedirectLink = deconstructRedirectLink;
 
-var QueryIDGenerator = /*#__PURE__*/function () {
-  function QueryIDGenerator() {
-    (0, _classCallCheck2.default)(this, QueryIDGenerator);
-    this.idCounter = 1;
-  }
-  /**
-   * Generates a random id for unamed queries
-   */
+var InvalidRedirectLinkError = /*#__PURE__*/function (_Error) {
+  (0, _inherits2.default)(InvalidRedirectLinkError, _Error);
 
+  var _super = _createSuper(InvalidRedirectLinkError);
 
-  (0, _createClass2.default)(QueryIDGenerator, [{
-    key: "generateRandomId",
-    value: function generateRandomId() {
-      var id = this.idCounter;
-      this.idCounter++;
-      return id.toString();
-    }
-    /**
-     * Generates an id for queries
-     * If the query is a getById only query,
-     * we can generate a name for it.
-     *
-     * If not, let's generate a random id
-     *
-     * @param {QueryDefinition} queryDefinition The query definition
-     * @returns {string}
-     */
+  function InvalidRedirectLinkError(redirectLink) {
+    var _this;
 
-  }, {
-    key: "generateId",
-    value: function generateId(queryDefinition) {
-      if (!(0, _dsl.isAGetByIdQuery)(queryDefinition)) {
-        return this.generateRandomId();
-      } else {
-        var id = queryDefinition.id,
-            doctype = queryDefinition.doctype;
-        return "".concat(doctype, "/").concat(id);
-      }
-    }
-  }]);
-  return QueryIDGenerator;
-}();
+    (0, _classCallCheck2.default)(this, InvalidRedirectLinkError);
+    _this = _super.call(this, "Invalid redirect link ".concat(redirectLink));
+    _this.redirectLink = redirectLink;
+    return _this;
+  }
 
-exports.QueryIDGenerator = QueryIDGenerator;
-QueryIDGenerator.UNNAMED = 'unnamed';
+  return InvalidRedirectLinkError;
+}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
 
-/***/ }),
-/* 638 */
-/***/ (function(module, exports, __webpack_require__) {
+exports.InvalidRedirectLinkError = InvalidRedirectLinkError;
 
-var baseAssignValue = __webpack_require__(299),
-    createAggregator = __webpack_require__(634);
+var InvalidProtocolError = /*#__PURE__*/function (_Error2) {
+  (0, _inherits2.default)(InvalidProtocolError, _Error2);
 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+  var _super2 = _createSuper(InvalidProtocolError);
 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
+  function InvalidProtocolError(url) {
+    var _this2;
 
-/**
- * Creates an object composed of keys generated from the results of running
- * each element of `collection` thru `iteratee`. The order of grouped values
- * is determined by the order they occur in `collection`. The corresponding
- * value of each key is an array of elements responsible for generating the
- * key. The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
- * @returns {Object} Returns the composed aggregate object.
- * @example
- *
- * _.groupBy([6.1, 4.2, 6.3], Math.floor);
- * // => { '4': [4.2], '6': [6.1, 6.3] }
- *
- * // The `_.property` iteratee shorthand.
- * _.groupBy(['one', 'two', 'three'], 'length');
- * // => { '3': ['one', 'two'], '5': ['three'] }
- */
-var groupBy = createAggregator(function(result, value, key) {
-  if (hasOwnProperty.call(result, key)) {
-    result[key].push(value);
-  } else {
-    baseAssignValue(result, key, [value]);
+    (0, _classCallCheck2.default)(this, InvalidProtocolError);
+    _this2 = _super2.call(this, "Invalid URL protocol ".concat(url.protocol));
+    _this2.url = url;
+    return _this2;
   }
-});
 
-module.exports = groupBy;
+  return InvalidProtocolError;
+}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
 
+exports.InvalidProtocolError = InvalidProtocolError;
 
-/***/ }),
-/* 639 */
-/***/ (function(module, exports, __webpack_require__) {
+var BlockedCozyError = /*#__PURE__*/function (_Error3) {
+  (0, _inherits2.default)(BlockedCozyError, _Error3);
 
-var baseDifference = __webpack_require__(640),
-    baseFlatten = __webpack_require__(420),
-    baseRest = __webpack_require__(433),
-    isArrayLikeObject = __webpack_require__(441);
+  var _super3 = _createSuper(BlockedCozyError);
 
-/**
- * Creates an array of `array` values not included in the other given arrays
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons. The order and references of result values are
- * determined by the first array.
- *
- * **Note:** Unlike `_.pullAll`, this method returns a new array.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {...Array} [values] The values to exclude.
- * @returns {Array} Returns the new array of filtered values.
- * @see _.without, _.xor
- * @example
- *
- * _.difference([2, 1], [2, 3]);
- * // => [1]
- */
-var difference = baseRest(function(array, values) {
-  return isArrayLikeObject(array)
-    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))
-    : [];
-});
+  function BlockedCozyError(url) {
+    var _this3;
 
-module.exports = difference;
+    (0, _classCallCheck2.default)(this, BlockedCozyError);
+    _this3 = _super3.call(this, "Blocked cozy ".concat(url.toString()));
+    _this3.url = url;
+    return _this3;
+  }
 
+  return BlockedCozyError;
+}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
 
-/***/ }),
-/* 640 */
-/***/ (function(module, exports, __webpack_require__) {
+exports.BlockedCozyError = BlockedCozyError;
 
-var SetCache = __webpack_require__(374),
-    arrayIncludes = __webpack_require__(424),
-    arrayIncludesWith = __webpack_require__(429),
-    arrayMap = __webpack_require__(409),
-    baseUnary = __webpack_require__(331),
-    cacheHas = __webpack_require__(378);
+var InvalidCozyUrlError = /*#__PURE__*/function (_Error4) {
+  (0, _inherits2.default)(InvalidCozyUrlError, _Error4);
 
-/** Used as the size to enable large array optimizations. */
-var LARGE_ARRAY_SIZE = 200;
+  var _super4 = _createSuper(InvalidCozyUrlError);
 
-/**
- * The base implementation of methods like `_.difference` without support
- * for excluding multiple arrays or iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Array} values The values to exclude.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of filtered values.
- */
-function baseDifference(array, values, iteratee, comparator) {
-  var index = -1,
-      includes = arrayIncludes,
-      isCommon = true,
-      length = array.length,
-      result = [],
-      valuesLength = values.length;
+  function InvalidCozyUrlError(url) {
+    var _this4;
 
-  if (!length) {
-    return result;
-  }
-  if (iteratee) {
-    values = arrayMap(values, baseUnary(iteratee));
-  }
-  if (comparator) {
-    includes = arrayIncludesWith;
-    isCommon = false;
-  }
-  else if (values.length >= LARGE_ARRAY_SIZE) {
-    includes = cacheHas;
-    isCommon = false;
-    values = new SetCache(values);
+    (0, _classCallCheck2.default)(this, InvalidCozyUrlError);
+    _this4 = _super4.call(this, "URL ".concat(url.toString(), " does not seem to be a valid Cozy URL"));
+    _this4.url = url;
+    return _this4;
   }
-  outer:
-  while (++index < length) {
-    var value = array[index],
-        computed = iteratee == null ? value : iteratee(value);
 
-    value = (comparator || value !== 0) ? value : 0;
-    if (isCommon && computed === computed) {
-      var valuesIndex = valuesLength;
-      while (valuesIndex--) {
-        if (values[valuesIndex] === computed) {
-          continue outer;
-        }
-      }
-      result.push(value);
-    }
-    else if (!includes(values, computed, comparator)) {
-      result.push(value);
-    }
-  }
-  return result;
-}
+  return InvalidCozyUrlError;
+}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
+/* uri - Returns a well formed URL origin from a protocol, a hostname and a port
+ *
+ * If the protocol and/or port are omitted from the argument, the function will
+ * default to HTTPS and omit the port in the returned origin.
+ *
+ * @param {object} url          Object of URL elements
+ * @param {string} url.protocol Protocol to use in the origin (e.g. http)
+ * @param {string} url.hostname Hostname to use in the origin (e.g. claude.mycozy.cloud)
+ * @param {string} url.port     Port to use in the origin (e.g. 8080)
+ *
+ * @returns {string} Generated URL origin
+ */
 
-module.exports = baseDifference;
 
+exports.InvalidCozyUrlError = InvalidCozyUrlError;
 
-/***/ }),
-/* 641 */
-/***/ (function(module, exports, __webpack_require__) {
+var uri = function uri(_ref2) {
+  var protocol = _ref2.protocol,
+      hostname = _ref2.hostname,
+      port = _ref2.port;
+  return (protocol !== '' ? "".concat(protocol, "//") : 'https://') + hostname + (port !== '' ? ":".concat(port) : '');
+};
+/* wellKnownUrl - Returns a valid URL string to a Well Known password change page
+ *
+ * The built URL will point to the origin generated from the given protocol,
+ * hostname and port.
+ *
+ * @param {object} url          Object of URL elements
+ * @param {string} url.protocol Protocol to use in the origin (e.g. http)
+ * @param {string} url.hostname Hostname to use in the origin (e.g. claude.mycozy.cloud)
+ * @param {string} url.port     Port to use in the origin (e.g. 8080)
+ *
+ * @returns {string} Generated Well Known password change URL string
+ */
 
-var arrayMap = __webpack_require__(409),
-    baseIntersection = __webpack_require__(642),
-    baseRest = __webpack_require__(433),
-    castArrayLikeObject = __webpack_require__(643);
 
-/**
- * Creates an array of unique values that are included in all given arrays
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons. The order and references of result values are
- * determined by the first array.
+var wellKnownUrl = function wellKnownUrl(url) {
+  return uri(url) + '/.well-known/change-password';
+};
+/* isValidOrigin - Checks whether a given URL is a valid Cozy origin
  *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @returns {Array} Returns the new array of intersecting values.
- * @example
+ * This method tries to fetch the Well Known change password page of the Cozy
+ * supposedly at the given origin. This allows us to determine whether the given
+ * origin is the root URL of a Cozy or not via the status of the response:
+ * - a 200 response status means there's an actual Well Known password change
+ *   page accessible from the given origin so we suppose it's a valid Cozy
+ *   origin (i.e. it could be another site altogether though)
+ * - a 401 response status means the pointed page requires authentication so the
+ *   origin is probably pointing to a cozy-app. In that case we should consider this
+ *   URL to be invalid
+ * - a 503 response status with a "Blocked" reason means the pointed page is a Cozy
+ *   but it is blocked. In that case we consider that the url is a valid Cozy origin
+ *   but we want the method to throw as we cannot verify if the URL points to the
+ *   Cozy's root or to a specifc slug. The caller is responsible to handle that exception
+ * - another status means there aren't any Cozy behind to the given origin
  *
- * _.intersection([2, 1], [2, 3]);
- * // => [2]
+ * @param {object} url          Object of URL elements
+ * @param {string} url.protocol Protocol to use in the origin (e.g. http)
+ * @param {string} url.hostname Hostname to use in the origin (e.g. claude.mycozy.cloud)
+ * @param {string} url.port     Port to use in the origin (e.g. 8080)
+ *
+ * @returns {Promise<boolean>} True if we believe there's a Cozy behind the given origin
+ * @throws {InvalidCozyUrlError} Thrown when we know for sure there aren't any Cozy behind the given origin
+ * @throws {BlockedCozyError} Thrown when we know for sure there is Cozy behind the given origin but it is in a "Blocked" state
  */
-var intersection = baseRest(function(arrays) {
-  var mapped = arrayMap(arrays, castArrayLikeObject);
-  return (mapped.length && mapped[0] === arrays[0])
-    ? baseIntersection(mapped)
-    : [];
-});
 
-module.exports = intersection;
 
+var isValidOrigin = /*#__PURE__*/function () {
+  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(url) {
+    var response, status;
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            _context.next = 2;
+            return fetch(wellKnownUrl(url));
 
-/***/ }),
-/* 642 */
-/***/ (function(module, exports, __webpack_require__) {
+          case 2:
+            response = _context.sent;
+            status = response.status;
 
-var SetCache = __webpack_require__(374),
-    arrayIncludes = __webpack_require__(424),
-    arrayIncludesWith = __webpack_require__(429),
-    arrayMap = __webpack_require__(409),
-    baseUnary = __webpack_require__(331),
-    cacheHas = __webpack_require__(378);
+            if (!(status === 404)) {
+              _context.next = 6;
+              break;
+            }
 
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMin = Math.min;
+            throw new InvalidCozyUrlError(url);
 
-/**
- * The base implementation of methods like `_.intersection`, without support
- * for iteratee shorthands, that accepts an array of arrays to inspect.
- *
- * @private
- * @param {Array} arrays The arrays to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of shared values.
- */
-function baseIntersection(arrays, iteratee, comparator) {
-  var includes = comparator ? arrayIncludesWith : arrayIncludes,
-      length = arrays[0].length,
-      othLength = arrays.length,
-      othIndex = othLength,
-      caches = Array(othLength),
-      maxLength = Infinity,
-      result = [];
+          case 6:
+            _context.next = 8;
+            return isResponseAboutBlockedCozy(response);
 
-  while (othIndex--) {
-    var array = arrays[othIndex];
-    if (othIndex && iteratee) {
-      array = arrayMap(array, baseUnary(iteratee));
-    }
-    maxLength = nativeMin(array.length, maxLength);
-    caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))
-      ? new SetCache(othIndex && array)
-      : undefined;
-  }
-  array = arrays[0];
+          case 8:
+            if (!_context.sent) {
+              _context.next = 10;
+              break;
+            }
 
-  var index = -1,
-      seen = caches[0];
+            throw new BlockedCozyError(url);
 
-  outer:
-  while (++index < length && result.length < maxLength) {
-    var value = array[index],
-        computed = iteratee ? iteratee(value) : value;
+          case 10:
+            return _context.abrupt("return", status === 200);
 
-    value = (comparator || value !== 0) ? value : 0;
-    if (!(seen
-          ? cacheHas(seen, computed)
-          : includes(result, computed, comparator)
-        )) {
-      othIndex = othLength;
-      while (--othIndex) {
-        var cache = caches[othIndex];
-        if (!(cache
-              ? cacheHas(cache, computed)
-              : includes(arrays[othIndex], computed, comparator))
-            ) {
-          continue outer;
+          case 11:
+          case "end":
+            return _context.stop();
         }
       }
-      if (seen) {
-        seen.push(computed);
-      }
-      result.push(value);
-    }
-  }
-  return result;
-}
-
-module.exports = baseIntersection;
-
-
-/***/ }),
-/* 643 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var isArrayLikeObject = __webpack_require__(441);
+    }, _callee);
+  }));
 
+  return function isValidOrigin(_x) {
+    return _ref3.apply(this, arguments);
+  };
+}();
 /**
- * Casts `value` to an empty array if it's not an array like object.
+ * rootCozyUrl - Get the root URL of a Cozy from more precise ones
  *
- * @private
- * @param {*} value The value to inspect.
- * @returns {Array|Object} Returns the cast array-like object.
- */
-function castArrayLikeObject(value) {
-  return isArrayLikeObject(value) ? value : [];
-}
-
-module.exports = castArrayLikeObject;
-
-
-/***/ }),
-/* 644 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var arrayPush = __webpack_require__(386),
-    baseFlatten = __webpack_require__(420),
-    copyArray = __webpack_require__(460),
-    isArray = __webpack_require__(324);
-
-/**
- * Creates a new array concatenating `array` with any additional arrays
- * and/or values.
+ * The goal is to allow users to use any URL copied from their browser as their
+ * Cozy URL rather than trying to explain to them what we expect (e.g. when
+ * requesting the Cozy URL to connect an app).
+ * If we can't get the root URL either because there's no Cozy or the domain
+ * does not exist or anything else, we'll throw an InvalidCozyUrlError.
+ * Also, since we communicate only via HTTP or HTTPS, we'll throw an
+ * InvalidProtocolError if any other protocol is used.
  *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to concatenate.
- * @param {...*} [values] The values to concatenate.
- * @returns {Array} Returns the new concatenated array.
- * @example
+ * This function expects a fully qualified URL thus with a protocol and a valid
+ * hostname. If your application accepts Cozy intances as input (e.g. `claude`
+ * when the Cozy can be found at `https://claude.mycozy.cloud`), it is your
+ * responsibility to add the appropriate domain to the hostname before calling
+ * this function.
  *
- * var array = [1];
- * var other = _.concat(array, 2, [3], [[4]]);
+ * Examples:
  *
- * console.log(other);
- * // => [1, 2, 3, [4]]
+ * 1. getting the root URL when your user gives you its instance name
  *
- * console.log(array);
- * // => [1]
+ *   const userInput = 'claude'
+ *   const rootUrl = await rootCozyUrl(new URL(`https://${userInput}.mycozy.cloud`))
+ *   // → returns new URL('https://claude.mycozy.cloud')
+ *
+ * 2. getting the root URL when your user gives you a Cozy Drive URL
+ *
+ *   const userInput = 'https://claude-drive.mycozy.cloud/#/folder/io.cozy.files.root-dir'
+ *   const rootUrl = await rootCozyUrl(new URL(userInput))
+ *   // → returns new URL('https://claude.mycozy.cloud')
+ *
+ * 3. getting the root URL when the Cozy uses nested sub-domains
+ *
+ *   const userInput = 'http://photos.camille.nimbus.com:8080/#/album/1234567890'
+ *   const rootCozyUrl = await rootCozyUrl(new URL(userInput))
+ *   // → returns new URL('http://camille.nimbus.com:8080')
+ *
+ * @param {URL} url The URL from which we'll try to get the root Cozy URL
+ *
+ * @returns {Promise<URL>} The root Cozy URL
  */
-function concat() {
-  var length = arguments.length;
-  if (!length) {
-    return [];
-  }
-  var args = Array(length - 1),
-      array = arguments[0],
-      index = length;
 
-  while (index--) {
-    args[index - 1] = arguments[index];
-  }
-  return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
-}
 
-module.exports = concat;
+var rootCozyUrl = /*#__PURE__*/function () {
+  var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(url) {
+    var _url$hostname$split, _url$hostname$split2, subDomain, domain, _hostname, hostname;
 
+    return _regenerator.default.wrap(function _callee2$(_context2) {
+      while (1) {
+        switch (_context2.prev = _context2.next) {
+          case 0:
+            if (['http:', 'https:'].includes(url.protocol)) {
+              _context2.next = 2;
+              break;
+            }
 
-/***/ }),
-/* 645 */
-/***/ (function(module, exports, __webpack_require__) {
+            throw new InvalidProtocolError(url);
 
-var baseOrderBy = __webpack_require__(646),
-    isArray = __webpack_require__(324);
-
-/**
- * This method is like `_.sortBy` except that it allows specifying the sort
- * orders of the iteratees to sort by. If `orders` is unspecified, all values
- * are sorted in ascending order. Otherwise, specify an order of "desc" for
- * descending or "asc" for ascending sort order of corresponding values.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]
- *  The iteratees to sort by.
- * @param {string[]} [orders] The sort orders of `iteratees`.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
- * @returns {Array} Returns the new sorted array.
- * @example
- *
- * var users = [
- *   { 'user': 'fred',   'age': 48 },
- *   { 'user': 'barney', 'age': 34 },
- *   { 'user': 'fred',   'age': 40 },
- *   { 'user': 'barney', 'age': 36 }
- * ];
- *
- * // Sort by `user` in ascending order and by `age` in descending order.
- * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
- * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
- */
-function orderBy(collection, iteratees, orders, guard) {
-  if (collection == null) {
-    return [];
-  }
-  if (!isArray(iteratees)) {
-    iteratees = iteratees == null ? [] : [iteratees];
-  }
-  orders = guard ? undefined : orders;
-  if (!isArray(orders)) {
-    orders = orders == null ? [] : [orders];
-  }
-  return baseOrderBy(collection, iteratees, orders);
-}
-
-module.exports = orderBy;
+          case 2:
+            _context2.next = 4;
+            return isValidOrigin(url);
 
+          case 4:
+            if (!_context2.sent) {
+              _context2.next = 6;
+              break;
+            }
 
-/***/ }),
-/* 646 */
-/***/ (function(module, exports, __webpack_require__) {
+            return _context2.abrupt("return", url);
 
-var arrayMap = __webpack_require__(409),
-    baseGet = __webpack_require__(400),
-    baseIteratee = __webpack_require__(338),
-    baseMap = __webpack_require__(647),
-    baseSortBy = __webpack_require__(648),
-    baseUnary = __webpack_require__(331),
-    compareMultiple = __webpack_require__(649),
-    identity = __webpack_require__(414),
-    isArray = __webpack_require__(324);
+          case 6:
+            if (!/^[^.-][^.]+-[^.-]+\./.test(url.hostname)) {
+              _context2.next = 13;
+              break;
+            }
 
-/**
- * The base implementation of `_.orderBy` without param guards.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
- * @param {string[]} orders The sort orders of `iteratees`.
- * @returns {Array} Returns the new sorted array.
- */
-function baseOrderBy(collection, iteratees, orders) {
-  if (iteratees.length) {
-    iteratees = arrayMap(iteratees, function(iteratee) {
-      if (isArray(iteratee)) {
-        return function(value) {
-          return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);
-        }
-      }
-      return iteratee;
-    });
-  } else {
-    iteratees = [identity];
-  }
+            _url$hostname$split = url.hostname.split('.'), _url$hostname$split2 = (0, _toArray2.default)(_url$hostname$split), subDomain = _url$hostname$split2[0], domain = _url$hostname$split2.slice(1);
+            _hostname = [subDomain.replace(/-.+/, '')].concat((0, _toConsumableArray2.default)(domain)).join('.');
+            _context2.next = 11;
+            return isValidOrigin({
+              protocol: url.protocol,
+              hostname: _hostname,
+              port: url.port
+            });
 
-  var index = -1;
-  iteratees = arrayMap(iteratees, baseUnary(baseIteratee));
+          case 11:
+            if (!_context2.sent) {
+              _context2.next = 13;
+              break;
+            }
 
-  var result = baseMap(collection, function(value, key, collection) {
-    var criteria = arrayMap(iteratees, function(iteratee) {
-      return iteratee(value);
-    });
-    return { 'criteria': criteria, 'index': ++index, 'value': value };
-  });
+            return _context2.abrupt("return", new URL(uri({
+              protocol: url.protocol,
+              hostname: _hostname,
+              port: url.port
+            })));
 
-  return baseSortBy(result, function(object, other) {
-    return compareMultiple(object, other, orders);
-  });
-}
+          case 13:
+            // Try to remove the first sub-domain in case its a nested app name
+            // eslint-disable-next-line no-unused-vars
+            hostname = url.hostname.split('.').splice(1).join('.');
+            _context2.next = 16;
+            return isValidOrigin({
+              protocol: url.protocol,
+              hostname: hostname,
+              port: url.port
+            });
 
-module.exports = baseOrderBy;
+          case 16:
+            if (!_context2.sent) {
+              _context2.next = 18;
+              break;
+            }
 
+            return _context2.abrupt("return", new URL(uri({
+              protocol: url.protocol,
+              hostname: hostname,
+              port: url.port
+            })));
 
-/***/ }),
-/* 647 */
-/***/ (function(module, exports, __webpack_require__) {
+          case 18:
+            throw new InvalidCozyUrlError(url);
 
-var baseEach = __webpack_require__(444),
-    isArrayLike = __webpack_require__(337);
+          case 19:
+          case "end":
+            return _context2.stop();
+        }
+      }
+    }, _callee2);
+  }));
 
+  return function rootCozyUrl(_x2) {
+    return _ref4.apply(this, arguments);
+  };
+}();
 /**
- * The base implementation of `_.map` without support for iteratee shorthands.
+ * Check if the given response is about a Cozy being blocked
  *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the new mapped array.
+ * @param {Response} response - Fetch API response
+ * @returns {Promise<boolean>} true if the response is about a Cozy being blocked, false otherwize
  */
-function baseMap(collection, iteratee) {
-  var index = -1,
-      result = isArrayLike(collection) ? Array(collection.length) : [];
-
-  baseEach(collection, function(value, key, collection) {
-    result[++index] = iteratee(value, key, collection);
-  });
-  return result;
-}
 
-module.exports = baseMap;
 
+exports.rootCozyUrl = rootCozyUrl;
 
-/***/ }),
-/* 648 */
-/***/ (function(module, exports) {
+var isResponseAboutBlockedCozy = /*#__PURE__*/function () {
+  var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(response) {
+    var _data$some;
 
-/**
- * The base implementation of `_.sortBy` which uses `comparer` to define the
- * sort order of `array` and replaces criteria objects with their corresponding
- * values.
- *
- * @private
- * @param {Array} array The array to sort.
- * @param {Function} comparer The function to define sort order.
- * @returns {Array} Returns `array`.
- */
-function baseSortBy(array, comparer) {
-  var length = array.length;
+    var contentType, isJson, data;
+    return _regenerator.default.wrap(function _callee3$(_context3) {
+      while (1) {
+        switch (_context3.prev = _context3.next) {
+          case 0:
+            if (!(response.status !== 503)) {
+              _context3.next = 2;
+              break;
+            }
 
-  array.sort(comparer);
-  while (length--) {
-    array[length] = array[length].value;
-  }
-  return array;
-}
+            return _context3.abrupt("return", false);
 
-module.exports = baseSortBy;
+          case 2:
+            contentType = response.headers.get('content-type');
+            isJson = contentType && contentType.indexOf('json') >= 0;
+            _context3.next = 6;
+            return isJson ? response.json() : response.text();
 
+          case 6:
+            data = _context3.sent;
 
-/***/ }),
-/* 649 */
-/***/ (function(module, exports, __webpack_require__) {
+            if (!(data !== null && data !== void 0 && (_data$some = data.some) !== null && _data$some !== void 0 && _data$some.call(data, function (reason) {
+              return reason.title === 'Blocked';
+            }))) {
+              _context3.next = 9;
+              break;
+            }
 
-var compareAscending = __webpack_require__(650);
+            return _context3.abrupt("return", true);
 
-/**
- * Used by `_.orderBy` to compare multiple properties of a value to another
- * and stable sort them.
- *
- * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
- * specify an order of "desc" for descending or "asc" for ascending sort order
- * of corresponding values.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {boolean[]|string[]} orders The order to sort by for each property.
- * @returns {number} Returns the sort order indicator for `object`.
- */
-function compareMultiple(object, other, orders) {
-  var index = -1,
-      objCriteria = object.criteria,
-      othCriteria = other.criteria,
-      length = objCriteria.length,
-      ordersLength = orders.length;
+          case 9:
+            return _context3.abrupt("return", false);
 
-  while (++index < length) {
-    var result = compareAscending(objCriteria[index], othCriteria[index]);
-    if (result) {
-      if (index >= ordersLength) {
-        return result;
+          case 10:
+          case "end":
+            return _context3.stop();
+        }
       }
-      var order = orders[index];
-      return result * (order == 'desc' ? -1 : 1);
-    }
-  }
-  // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
-  // that causes it, under certain circumstances, to provide the same value for
-  // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
-  // for more details.
-  //
-  // This also ensures a stable sort in V8 and other engines.
-  // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
-  return object.index - other.index;
-}
-
-module.exports = compareMultiple;
+    }, _callee3);
+  }));
 
+  return function isResponseAboutBlockedCozy(_x3) {
+    return _ref5.apply(this, arguments);
+  };
+}();
 
 /***/ }),
-/* 650 */
+/* 665 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var isSymbol = __webpack_require__(403);
-
-/**
- * Compares values to sort them in ascending order.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {number} Returns the sort order indicator for `value`.
- */
-function compareAscending(value, other) {
-  if (value !== other) {
-    var valIsDefined = value !== undefined,
-        valIsNull = value === null,
-        valIsReflexive = value === value,
-        valIsSymbol = isSymbol(value);
+"use strict";
 
-    var othIsDefined = other !== undefined,
-        othIsNull = other === null,
-        othIsReflexive = other === other,
-        othIsSymbol = isSymbol(other);
 
-    if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
-        (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
-        (valIsNull && othIsDefined && othIsReflexive) ||
-        (!valIsDefined && othIsReflexive) ||
-        !valIsReflexive) {
-      return 1;
-    }
-    if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
-        (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
-        (othIsNull && valIsDefined && valIsReflexive) ||
-        (!othIsDefined && valIsReflexive) ||
-        !othIsReflexive) {
-      return -1;
-    }
-  }
-  return 0;
-}
+var _interopRequireDefault = __webpack_require__(1);
 
-module.exports = compareAscending;
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.dehydrate = void 0;
 
+var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
 
-/***/ }),
-/* 651 */
-/***/ (function(module, exports, __webpack_require__) {
+var _associations = __webpack_require__(625);
 
-var baseGetTag = __webpack_require__(304),
-    isArray = __webpack_require__(324),
-    isObjectLike = __webpack_require__(323);
+var dehydrate = function dehydrate(document) {
+  var dehydrated = Object.entries(document).reduce(function (documentArg, _ref) {
+    var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
+        key = _ref2[0],
+        value = _ref2[1];
 
-/** `Object#toString` result references. */
-var stringTag = '[object String]';
+    var document = documentArg;
 
-/**
- * Checks if `value` is classified as a `String` primitive or object.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a string, else `false`.
- * @example
- *
- * _.isString('abc');
- * // => true
- *
- * _.isString(1);
- * // => false
- */
-function isString(value) {
-  return typeof value == 'string' ||
-    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
-}
+    if (!(value instanceof _associations.Association)) {
+      document[key] = value; // @ts-ignore
+    } else if (value.dehydrate) {
+      // @ts-ignore
+      document = value.dehydrate(document);
+    } else {
+      throw new Error("Association on key ".concat(key, " should have a dehydrate method"));
+    }
 
-module.exports = isString;
+    return document;
+  }, {});
+  return dehydrated;
+};
 
+exports.dehydrate = dehydrate;
 
 /***/ }),
-/* 652 */
+/* 666 */
 /***/ (function(module, exports, __webpack_require__) {
 
-/*
- * Sift 3.x
- *
- * Copryright 2015, Craig Condon
- * Licensed under MIT
- *
- * Filter JavaScript objects with mongodb queries
- */
+"use strict";
 
-(function() {
 
-  'use strict';
+var _interopRequireDefault = __webpack_require__(1);
 
-  /**
-   */
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.authFunction = exports.authenticateWithCordova = void 0;
 
-  function isFunction(value) {
-    return typeof value === 'function';
-  }
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-  /**
-   */
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-  function isArray(value) {
-    return Object.prototype.toString.call(value) === '[object Array]';
-  }
+var _const = __webpack_require__(619);
 
-  /**
-   */
+var _cozyDeviceHelper = __webpack_require__(667);
 
-  function comparable(value) {
-    if (value instanceof Date) {
-      return value.getTime();
-    } else if (isArray(value)) {
-      return value.map(comparable);
-    } else if (value && typeof value.toJSON === 'function') {
-      return value.toJSON();
-    } else {
-      return value;
-    }
-  }
+/* global prompt */
 
-  function get(obj, key) {
-    return isFunction(obj.get) ? obj.get(key) : obj[key];
-  }
+/**
+ * @type {import("../types").CordovaWindow}
+ */
+// @ts-ignore
+var win = typeof window !== 'undefined' ? window : null;
+/**
+ * Open a SafariView Controller and resolve with the URL containing the token
+ *
+ * @param {string} url - Url containing access_code and state
+ * @returns {Promise}
+ */
 
-  /**
-   */
+var authenticateWithSafari = function authenticateWithSafari(url) {
+  return new Promise(function (resolve, reject) {
+    win.SafariViewController.show({
+      url: url,
+      transition: 'curl' // (this only works in iOS 9.1/9.2 and lower) unless animated is false you can choose from: curl, flip, fade, slide (default)
+      // enterReaderModeIfAvailable: readerMode, // default false
+      // tintColor: "#00ffff", // default is ios blue
+      // barColor: "#0000ff", // on iOS 10+ you can change the background color as well
+      // controlTintColor: "#ffffff" // on iOS 10+ you can override the default tintColor
 
-  function or(validator) {
-    return function(a, b) {
-      if (!isArray(b) || !b.length) {
-        return validator(a, b);
-      }
-      for (var i = 0, n = b.length; i < n; i++) {
-        if (validator(a, get(b,i))) return true;
+    }, // this success handler will be invoked for the lifecycle events 'opened', 'loaded' and 'closed'
+    function (result) {
+      if (result.event === 'closed') {
+        reject(new Error(_const.REGISTRATION_ABORT));
       }
-      return false;
-    }
-  }
+    }, function (error) {
+      console.log('KO: ' + error);
+      reject(new Error(_const.REGISTRATION_ABORT));
+    });
+    var handle = win.handleOpenURL;
 
-  /**
-   */
+    win.handleOpenURL = function (url) {
+      win.SafariViewController.hide();
+      resolve(url);
 
-  function and(validator) {
-    return function(a, b) {
-      if (!isArray(b) || !b.length) {
-        return validator(a, b);
-      }
-      for (var i = 0, n = b.length; i < n; i++) {
-        if (!validator(a, get(b, i))) return false;
+      if (handle) {
+        win.handleOpenURL = handle;
       }
-      return true;
     };
-  }
-
-  function validate(validator, b, k, o) {
-    return validator.v(validator.a, b, k, o);
-  }
+  });
+};
+/**
+ * Opens an InAppBrowser and resolves with the URL containing the token
+ *
+ * @param {string} url - Url containing access_code and state
+ * @returns {Promise}
+ */
 
-  var OPERATORS = {
 
-    /**
-     */
+var authenticateWithInAppBrowser = function authenticateWithInAppBrowser(url) {
+  return new Promise(function (resolve, reject) {
+    var target = '_blank';
+    var options = 'clearcache=yes,zoom=no';
+    var inAppBrowser = win.cordova.InAppBrowser.open(url, target, options);
 
-    $eq: or(function(a, b) {
-      return a(b);
-    }),
+    var removeListener = function removeListener() {
+      inAppBrowser.removeEventListener('loadstart', onLoadStart);
+      inAppBrowser.removeEventListener('exit', onExit);
+    };
 
-    /**
-     */
+    var onLoadStart = function onLoadStart(_ref) {
+      var url = _ref.url;
+      var accessCode = /\?access_code=(.+)$/.test(url);
+      var state = /\?state=(.+)$/.test(url);
 
-    $ne: and(function(a, b) {
-      return !a(b);
-    }),
+      if (accessCode || state) {
+        resolve(url);
+        removeListener();
+        inAppBrowser.close();
+      }
+    };
 
-    /**
-     */
+    var onExit = function onExit() {
+      reject(new Error(_const.REGISTRATION_ABORT));
+      removeListener();
+      inAppBrowser.close();
+    };
 
-    $gt: or(function(a, b) {
-      return sift.compare(comparable(b), a) > 0;
-    }),
+    inAppBrowser.addEventListener('loadstart', onLoadStart);
+    inAppBrowser.addEventListener('exit', onExit);
+  });
+};
 
-    /**
-     */
+var authenticateWithCordova = /*#__PURE__*/function () {
+  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(url) {
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            _context.t0 = (0, _cozyDeviceHelper.isIOSApp)();
 
-    $gte: or(function(a, b) {
-      return sift.compare(comparable(b), a) >= 0;
-    }),
+            if (!_context.t0) {
+              _context.next = 5;
+              break;
+            }
 
-    /**
-     */
+            _context.next = 4;
+            return (0, _cozyDeviceHelper.hasSafariPlugin)();
 
-    $lt: or(function(a, b) {
-      return sift.compare(comparable(b), a) < 0;
-    }),
+          case 4:
+            _context.t0 = _context.sent;
 
-    /**
-     */
+          case 5:
+            if (!_context.t0) {
+              _context.next = 9;
+              break;
+            }
 
-    $lte: or(function(a, b) {
-      return sift.compare(comparable(b), a) <= 0;
-    }),
+            return _context.abrupt("return", authenticateWithSafari(url));
 
-    /**
-     */
+          case 9:
+            if (!(0, _cozyDeviceHelper.hasInAppBrowserPlugin)()) {
+              _context.next = 13;
+              break;
+            }
 
-    $mod: or(function(a, b) {
-      return b % a[0] == a[1];
-    }),
+            return _context.abrupt("return", authenticateWithInAppBrowser(url));
 
-    /**
-     */
+          case 13:
+            /**
+             * for dev purpose:
+             * In oauth workflow, the server displays an authorization page
+             * User must accept to give permission then the server gives an url
+             * with query parameters used by cozy-client-js to initialize itself.
+             *
+             * This hack let developers open the authorization page in a new tab
+             * then get the "access_code" url and paste it in the prompt to let the
+             * application initialize and redirect to other pages.
+             */
+            console.log(url); // Useful for dev (see above).
 
-    $in: function(a, b) {
+            return _context.abrupt("return", new Promise(function (resolve) {
+              setTimeout(function () {
+                var token = prompt('Paste the url here:');
+                resolve(token);
+              }, 5000);
+            }));
 
-      if (b instanceof Array) {
-        for (var i = b.length; i--;) {
-          if (~a.indexOf(comparable(get(b, i)))) {
-            return true;
-          }
-        }
-      } else {
-        var comparableB = comparable(b);
-        if (comparableB === b && typeof b === 'object') {
-          for (var i = a.length; i--;) {
-            if (String(a[i]) === String(b) && String(b) !== '[object Object]') {
-              return true;
-            }
-          }
+          case 15:
+          case "end":
+            return _context.stop();
         }
+      }
+    }, _callee);
+  }));
 
-        /*
-          Handles documents that are undefined, whilst also
-          having a 'null' element in the parameters to $in.
-        */
-        if (typeof comparableB == 'undefined') {
-          for (var i = a.length; i--;) {
-            if (a[i] == null) {
-              return true;
-            }
-          }
-        }
+  return function authenticateWithCordova(_x) {
+    return _ref2.apply(this, arguments);
+  };
+}();
 
-        /*
-          Handles the case of {'field': {$in: [/regexp1/, /regexp2/, ...]}}
-        */
-        for (var i = a.length; i--;) {
-          var validator = createRootValidator(get(a, i), undefined);
-          var result = validate(validator, b, i, a);
-          if ((result) && (String(result) !== '[object Object]') && (String(b) !== '[object Object]')) {
-            return true;
-          }
-        }
+exports.authenticateWithCordova = authenticateWithCordova;
+var authFunction = authenticateWithCordova;
+exports.authFunction = authFunction;
 
-        return !!~a.indexOf(comparableB);
-      }
+/***/ }),
+/* 667 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      return false;
-    },
+"use strict";
 
-    /**
-     */
 
-    $nin: function(a, b, k, o) {
-      return !OPERATORS.$in(a, b, k, o);
-    },
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+Object.defineProperty(exports, "checkApp", {
+  enumerable: true,
+  get: function get() {
+    return _apps.checkApp;
+  }
+});
+Object.defineProperty(exports, "getDeviceName", {
+  enumerable: true,
+  get: function get() {
+    return _device.getDeviceName;
+  }
+});
+Object.defineProperty(exports, "getFlagshipMetadata", {
+  enumerable: true,
+  get: function get() {
+    return _flagship.getFlagshipMetadata;
+  }
+});
+Object.defineProperty(exports, "getPlatform", {
+  enumerable: true,
+  get: function get() {
+    return _platform.getPlatform;
+  }
+});
+Object.defineProperty(exports, "hasDevicePlugin", {
+  enumerable: true,
+  get: function get() {
+    return _plugins.hasDevicePlugin;
+  }
+});
+Object.defineProperty(exports, "hasInAppBrowserPlugin", {
+  enumerable: true,
+  get: function get() {
+    return _plugins.hasInAppBrowserPlugin;
+  }
+});
+Object.defineProperty(exports, "hasNetworkInformationPlugin", {
+  enumerable: true,
+  get: function get() {
+    return _plugins.hasNetworkInformationPlugin;
+  }
+});
+Object.defineProperty(exports, "hasSafariPlugin", {
+  enumerable: true,
+  get: function get() {
+    return _plugins.hasSafariPlugin;
+  }
+});
+Object.defineProperty(exports, "isAndroid", {
+  enumerable: true,
+  get: function get() {
+    return _platform.isAndroid;
+  }
+});
+Object.defineProperty(exports, "isAndroidApp", {
+  enumerable: true,
+  get: function get() {
+    return _platform.isAndroidApp;
+  }
+});
+Object.defineProperty(exports, "isCordova", {
+  enumerable: true,
+  get: function get() {
+    return _cordova.isCordova;
+  }
+});
+Object.defineProperty(exports, "isFlagshipApp", {
+  enumerable: true,
+  get: function get() {
+    return _flagship.isFlagshipApp;
+  }
+});
+Object.defineProperty(exports, "isIOS", {
+  enumerable: true,
+  get: function get() {
+    return _platform.isIOS;
+  }
+});
+Object.defineProperty(exports, "isIOSApp", {
+  enumerable: true,
+  get: function get() {
+    return _platform.isIOSApp;
+  }
+});
+Object.defineProperty(exports, "isMobile", {
+  enumerable: true,
+  get: function get() {
+    return _platform.isMobile;
+  }
+});
+Object.defineProperty(exports, "isMobileApp", {
+  enumerable: true,
+  get: function get() {
+    return _platform.isMobileApp;
+  }
+});
+Object.defineProperty(exports, "isWebApp", {
+  enumerable: true,
+  get: function get() {
+    return _platform.isWebApp;
+  }
+});
+Object.defineProperty(exports, "nativeLinkOpen", {
+  enumerable: true,
+  get: function get() {
+    return _link.nativeLinkOpen;
+  }
+});
+Object.defineProperty(exports, "openDeeplinkOrRedirect", {
+  enumerable: true,
+  get: function get() {
+    return _deeplink.openDeeplinkOrRedirect;
+  }
+});
+Object.defineProperty(exports, "startApp", {
+  enumerable: true,
+  get: function get() {
+    return _apps.startApp;
+  }
+});
 
-    /**
-     */
+var _platform = __webpack_require__(668);
 
-    $not: function(a, b, k, o) {
-      return !validate(a, b, k, o);
-    },
+var _device = __webpack_require__(670);
 
-    /**
-     */
+var _apps = __webpack_require__(680);
 
-    $type: function(a, b) {
-      return b != void 0 ? b instanceof a || b.constructor == a : false;
-     },
+var _plugins = __webpack_require__(679);
 
-    /**
-     */
+var _cordova = __webpack_require__(669);
 
-    $all: function(a, b, k, o) {
-      return OPERATORS.$and(a, b, k, o);
-    },
+var _link = __webpack_require__(681);
 
-    /**
-     */
+var _deeplink = __webpack_require__(682);
 
-    $size: function(a, b) {
-      return b ? a === b.length : false;
-    },
+var _flagship = __webpack_require__(683);
 
-    /**
-     */
+/***/ }),
+/* 668 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    $or: function(a, b, k, o) {
-      for (var i = 0, n = a.length; i < n; i++) if (validate(get(a, i), b, k, o)) return true;
-      return false;
-    },
+"use strict";
 
-    /**
-     */
 
-    $nor: function(a, b, k, o) {
-      return !OPERATORS.$or(a, b, k, o);
-    },
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.isWebApp = exports.isMobileApp = exports.isMobile = exports.isIOSApp = exports.isIOS = exports.isAndroidApp = exports.isAndroid = exports.getPlatform = void 0;
 
-    /**
-     */
+var _cordova = __webpack_require__(669);
 
-    $and: function(a, b, k, o) {
-      for (var i = 0, n = a.length; i < n; i++) {
-        if (!validate(get(a, i), b, k, o)) {
-          return false;
-        }
-      }
-      return true;
-    },
+var ANDROID_PLATFORM = 'android';
+var IOS_PLATFORM = 'ios';
+var WEB_PLATFORM = 'web';
 
-    /**
-     */
+var getPlatform = function getPlatform() {
+  return (0, _cordova.isCordova)() ? window.cordova.platformId : WEB_PLATFORM;
+};
 
-    $regex: or(function(a, b) {
-      return typeof b === 'string' && a.test(b);
-    }),
+exports.getPlatform = getPlatform;
 
-    /**
-     */
+var isPlatform = function isPlatform(platform) {
+  return getPlatform() === platform;
+};
 
-    $where: function(a, b, k, o) {
-      return a.call(b, b, k, o);
-    },
+var isIOSApp = function isIOSApp() {
+  return isPlatform(IOS_PLATFORM);
+};
 
-    /**
-     */
+exports.isIOSApp = isIOSApp;
 
-    $elemMatch: function(a, b, k, o) {
-      if (isArray(b)) {
-        return !!~search(b, a);
-      }
-      return validate(a, b, k, o);
-    },
+var isAndroidApp = function isAndroidApp() {
+  return isPlatform(ANDROID_PLATFORM);
+};
 
-    /**
-     */
+exports.isAndroidApp = isAndroidApp;
 
-    $exists: function(a, b, k, o) {
-      return o.hasOwnProperty(k) === a;
-    }
-  };
+var isWebApp = function isWebApp() {
+  return isPlatform(WEB_PLATFORM);
+};
 
-  /**
-   */
+exports.isWebApp = isWebApp;
 
-  var prepare = {
+var isMobileApp = function isMobileApp() {
+  return (0, _cordova.isCordova)();
+}; // return if is on an Android Device (native or browser)
 
-    /**
-     */
 
-    $eq: function(a) {
+exports.isMobileApp = isMobileApp;
 
-      if (a instanceof RegExp) {
-        return function(b) {
-          return typeof b === 'string' && a.test(b);
-        };
-      } else if (a instanceof Function) {
-        return a;
-      } else if (isArray(a) && !a.length) {
-        // Special case of a == []
-        return function(b) {
-          return (isArray(b) && !b.length);
-        };
-      } else if (a === null){
-        return function(b){
-          //will match both null and undefined
-          return b == null;
-        }
-      }
+var isAndroid = function isAndroid() {
+  return window.navigator.userAgent && window.navigator.userAgent.indexOf('Android') >= 0;
+}; // return if is on an iOS Device (native or browser)
 
-      return function(b) {
-        return sift.compare(comparable(b), a) === 0;
-      };
-    },
 
-    /**
-     */
+exports.isAndroid = isAndroid;
 
-    $ne: function(a) {
-      return prepare.$eq(a);
-    },
+var isIOS = function isIOS() {
+  return window.navigator.userAgent && /iPad|iPhone|iPod/.test(window.navigator.userAgent);
+}; // isMobile checks if the user is on a smartphone : native app or browser
 
-    /**
-     */
 
-    $and: function(a) {
-      return a.map(parse);
-    },
+exports.isIOS = isIOS;
 
-    /**
-     */
+var isMobile = function isMobile() {
+  return isAndroid() || isIOS();
+};
 
-    $all: function(a) {
-      return prepare.$and(a);
-    },
+exports.isMobile = isMobile;
 
-    /**
-     */
+/***/ }),
+/* 669 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    $or: function(a) {
-      return a.map(parse);
-    },
+"use strict";
 
-    /**
-     */
 
-    $nor: function(a) {
-      return a.map(parse);
-    },
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.isCordova = void 0;
 
-    /**
-     */
+// cordova
+var isCordova = function isCordova() {
+  return typeof window !== 'undefined' && window.cordova !== undefined;
+};
 
-    $not: function(a) {
-      return parse(a);
-    },
+exports.isCordova = isCordova;
 
-    /**
-     */
+/***/ }),
+/* 670 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    $regex: function(a, query) {
-      return new RegExp(a, query.$options);
-    },
+"use strict";
 
-    /**
-     */
 
-    $where: function(a) {
-      return typeof a === 'string' ? new Function('obj', 'return ' + a) : a;
-    },
+var _interopRequireDefault = __webpack_require__(1);
 
-    /**
-     */
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.getDeviceName = void 0;
 
-    $elemMatch: function(a) {
-      return parse(a);
-    },
+var _capitalize = _interopRequireDefault(__webpack_require__(671));
 
-    /**
-     */
+var _cordova = __webpack_require__(669);
 
-    $exists: function(a) {
-      return !!a;
-    }
-  };
+var _plugins = __webpack_require__(679);
 
-  /**
-   */
-
-  function search(array, validator) {
+var _platform = __webpack_require__(668);
 
-    for (var i = 0; i < array.length; i++) {
-      var result = get(array, i);
-      if (validate(validator, get(array, i))) {
-        return i;
-      }
-    }
+var DEFAULT_DEVICE = 'Device';
 
-    return -1;
-  }
+// device
+var getAppleModel = function getAppleModel(identifier) {
+  var devices = ['iPhone', 'iPad', 'Watch', 'AppleTV'];
 
-  /**
-   */
+  for (var _i = 0, _devices = devices; _i < _devices.length; _i++) {
+    var _device = _devices[_i];
 
-  function createValidator(a, validate) {
-    return { a: a, v: validate };
+    if (identifier.match(new RegExp(_device))) {
+      return _device;
+    }
   }
 
-  /**
-   */
-
-  function nestedValidator(a, b) {
-    var values  = [];
-    findValues(b, a.k, 0, b, values);
+  return DEFAULT_DEVICE;
+};
 
-    if (values.length === 1) {
-      var first = values[0];
-      return validate(a.nv, first[0], first[1], first[2]);
+var getDeviceName = function getDeviceName() {
+  if (!(0, _plugins.hasDevicePlugin)()) {
+    if ((0, _cordova.isCordova)()) {
+      console.warn('You should install `cordova-plugin-device`.'); // eslint-disable-line no-console
     }
 
-    // If the query contains $ne, need to test all elements ANDed together
-    var inclusive = a && a.q && typeof a.q.$ne !== 'undefined';
-    var allValid = inclusive;
-    for (var i = 0; i < values.length; i++) {
-      var result = values[i];
-      var isValid = validate(a.nv, result[0], result[1], result[2]);
-      if (inclusive) {
-        allValid &= isValid;
-      } else {
-        allValid |= isValid;
-      }
-    }
-    return allValid;
+    return DEFAULT_DEVICE;
   }
 
-  /**
-   */
+  var _window$device = window.device,
+      manufacturer = _window$device.manufacturer,
+      originalModel = _window$device.model;
+  var model = (0, _platform.isIOSApp)() ? getAppleModel(originalModel) : originalModel;
+  return "".concat((0, _capitalize.default)(manufacturer), " ").concat(model);
+};
 
-  function findValues(current, keypath, index, object, values) {
+exports.getDeviceName = getDeviceName;
 
-    if (index === keypath.length || current == void 0) {
+/***/ }),
+/* 671 */
+/***/ (function(module, exports, __webpack_require__) {
 
-      values.push([current, keypath[index - 1], object]);
-      return;
-    }
+var toString = __webpack_require__(407),
+    upperFirst = __webpack_require__(672);
 
-    var k = get(keypath, index);
+/**
+ * Converts the first character of `string` to upper case and the remaining
+ * to lower case.
+ *
+ * @static
+ * @memberOf _
+ * @since 3.0.0
+ * @category String
+ * @param {string} [string=''] The string to capitalize.
+ * @returns {string} Returns the capitalized string.
+ * @example
+ *
+ * _.capitalize('FRED');
+ * // => 'Fred'
+ */
+function capitalize(string) {
+  return upperFirst(toString(string).toLowerCase());
+}
 
-    // ensure that if current is an array, that the current key
-    // is NOT an array index. This sort of thing needs to work:
-    // sift({'foo.0':42}, [{foo: [42]}]);
-    if (isArray(current) && isNaN(Number(k))) {
-      for (var i = 0, n = current.length; i < n; i++) {
-        findValues(get(current, i), keypath, index, current, values);
-      }
-    } else {
-      findValues(get(current, k), keypath, index + 1, current, values);
-    }
-  }
+module.exports = capitalize;
 
-  /**
-   */
 
-  function createNestedValidator(keypath, a, q) {
-    return { a: { k: keypath, nv: a, q: q }, v: nestedValidator };
-  }
+/***/ }),
+/* 672 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  /**
-   * flatten the query
-   */
+var createCaseFirst = __webpack_require__(673);
 
-  function isVanillaObject(value) {
-    return value && value.constructor === Object;
-  }
+/**
+ * Converts the first character of `string` to upper case.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category String
+ * @param {string} [string=''] The string to convert.
+ * @returns {string} Returns the converted string.
+ * @example
+ *
+ * _.upperFirst('fred');
+ * // => 'Fred'
+ *
+ * _.upperFirst('FRED');
+ * // => 'FRED'
+ */
+var upperFirst = createCaseFirst('toUpperCase');
 
-  function parse(query) {
-    query = comparable(query);
+module.exports = upperFirst;
 
-    if (!query || !isVanillaObject(query)) { // cross browser support
-      query = { $eq: query };
-    }
 
-    var validators = [];
+/***/ }),
+/* 673 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    for (var key in query) {
-      var a = query[key];
+var castSlice = __webpack_require__(674),
+    hasUnicode = __webpack_require__(675),
+    stringToArray = __webpack_require__(676),
+    toString = __webpack_require__(407);
 
-      if (key === '$options') {
-        continue;
-      }
+/**
+ * Creates a function like `_.lowerFirst`.
+ *
+ * @private
+ * @param {string} methodName The name of the `String` case method to use.
+ * @returns {Function} Returns the new case function.
+ */
+function createCaseFirst(methodName) {
+  return function(string) {
+    string = toString(string);
 
-      if (OPERATORS[key]) {
-        if (prepare[key]) a = prepare[key](a, query);
-        validators.push(createValidator(comparable(a), OPERATORS[key]));
-      } else {
+    var strSymbols = hasUnicode(string)
+      ? stringToArray(string)
+      : undefined;
 
-        if (key.charCodeAt(0) === 36) {
-          throw new Error('Unknown operation ' + key);
-        }
-        validators.push(createNestedValidator(key.split('.'), parse(a), a));
-      }
-    }
+    var chr = strSymbols
+      ? strSymbols[0]
+      : string.charAt(0);
 
-    return validators.length === 1 ? validators[0] : createValidator(validators, OPERATORS.$and);
-  }
+    var trailing = strSymbols
+      ? castSlice(strSymbols, 1).join('')
+      : string.slice(1);
 
-  /**
-   */
+    return chr[methodName]() + trailing;
+  };
+}
 
-  function createRootValidator(query, getter) {
-    var validator = parse(query);
-    if (getter) {
-      validator = {
-        a: validator,
-        v: function(a, b, k, o) {
-          return validate(a, getter(b), k, o);
-        }
-      };
-    }
-    return validator;
-  }
+module.exports = createCaseFirst;
 
-  /**
-   */
 
-  function sift(query, array, getter) {
+/***/ }),
+/* 674 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    if (isFunction(array)) {
-      getter = array;
-      array  = void 0;
-    }
+var baseSlice = __webpack_require__(527);
 
-    var validator = createRootValidator(query, getter);
+/**
+ * Casts `array` to a slice if it's needed.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {number} start The start position.
+ * @param {number} [end=array.length] The end position.
+ * @returns {Array} Returns the cast slice.
+ */
+function castSlice(array, start, end) {
+  var length = array.length;
+  end = end === undefined ? length : end;
+  return (!start && end >= length) ? array : baseSlice(array, start, end);
+}
 
-    function filter(b, k, o) {
-      return validate(validator, b, k, o);
-    }
+module.exports = castSlice;
 
-    if (array) {
-      return array.filter(filter);
-    }
 
-    return filter;
-  }
+/***/ }),
+/* 675 */
+/***/ (function(module, exports) {
 
-  /**
-   */
+/** Used to compose unicode character classes. */
+var rsAstralRange = '\\ud800-\\udfff',
+    rsComboMarksRange = '\\u0300-\\u036f',
+    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
+    rsComboSymbolsRange = '\\u20d0-\\u20ff',
+    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
+    rsVarRange = '\\ufe0e\\ufe0f';
 
-  sift.use = function(plugin) {
-    if (isFunction(plugin)) return plugin(sift);
-    for (var key in plugin) {
-      /* istanbul ignore else */
-      if (key.charCodeAt(0) === 36) {
-        OPERATORS[key] = plugin[key];
-      }
-    }
-  };
+/** Used to compose unicode capture groups. */
+var rsZWJ = '\\u200d';
 
-  /**
-   */
+/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
+var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');
 
-  sift.indexOf = function(query, array, getter) {
-    return search(array, createRootValidator(query, getter));
-  };
+/**
+ * Checks if `string` contains Unicode symbols.
+ *
+ * @private
+ * @param {string} string The string to inspect.
+ * @returns {boolean} Returns `true` if a symbol is found, else `false`.
+ */
+function hasUnicode(string) {
+  return reHasUnicode.test(string);
+}
 
-  /**
-   */
+module.exports = hasUnicode;
 
-  sift.compare = function(a, b) {
-    if(a===b) return 0;
-    if(typeof a === typeof b) {
-      if (a > b) {
-        return 1;
-      }
-      if (a < b) {
-        return -1;
-      }
-    }
-  };
 
-  /* istanbul ignore next */
-  if ( true && typeof module.exports !== 'undefined') {
-    Object.defineProperty(exports, "__esModule", {
-      value: true
-    });
+/***/ }),
+/* 676 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    module.exports = sift;
-    exports['default'] = module.exports.default = sift;
-  }
+var asciiToArray = __webpack_require__(677),
+    hasUnicode = __webpack_require__(675),
+    unicodeToArray = __webpack_require__(678);
 
-  /* istanbul ignore next */
-  if (typeof window !== 'undefined') {
-    window.sift = sift;
-  }
-})();
+/**
+ * Converts `string` to an array.
+ *
+ * @private
+ * @param {string} string The string to convert.
+ * @returns {Array} Returns the converted array.
+ */
+function stringToArray(string) {
+  return hasUnicode(string)
+    ? unicodeToArray(string)
+    : asciiToArray(string);
+}
+
+module.exports = stringToArray;
 
 
 /***/ }),
-/* 653 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 677 */
+/***/ (function(module, exports) {
 
-"use strict";
+/**
+ * Converts an ASCII `string` to an array.
+ *
+ * @private
+ * @param {string} string The string to convert.
+ * @returns {Array} Returns the converted array.
+ */
+function asciiToArray(string) {
+  return string.split('');
+}
 
+module.exports = asciiToArray;
 
-var _interopRequireDefault = __webpack_require__(1);
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.receiveMutationError = exports.receiveMutationResult = exports.initMutation = exports.isReceivingMutationResult = exports.isMutationAction = void 0;
+/***/ }),
+/* 678 */
+/***/ (function(module, exports) {
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+/** Used to compose unicode character classes. */
+var rsAstralRange = '\\ud800-\\udfff',
+    rsComboMarksRange = '\\u0300-\\u036f',
+    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
+    rsComboSymbolsRange = '\\u20d0-\\u20ff',
+    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
+    rsVarRange = '\\ufe0e\\ufe0f';
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+/** Used to compose unicode capture groups. */
+var rsAstral = '[' + rsAstralRange + ']',
+    rsCombo = '[' + rsComboRange + ']',
+    rsFitz = '\\ud83c[\\udffb-\\udfff]',
+    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
+    rsNonAstral = '[^' + rsAstralRange + ']',
+    rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
+    rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
+    rsZWJ = '\\u200d';
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+/** Used to compose unicode regexes. */
+var reOptMod = rsModifier + '?',
+    rsOptVar = '[' + rsVarRange + ']?',
+    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
+    rsSeq = rsOptVar + reOptMod + rsOptJoin,
+    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
 
-var INIT_MUTATION = 'INIT_MUTATION';
-var RECEIVE_MUTATION_RESULT = 'RECEIVE_MUTATION_RESULT';
-var RECEIVE_MUTATION_ERROR = 'RECEIVE_MUTATION_ERROR';
+/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
+var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
 
-var isMutationAction = function isMutationAction(action) {
-  return [INIT_MUTATION, RECEIVE_MUTATION_RESULT, RECEIVE_MUTATION_ERROR].indexOf(action.type) !== -1;
-};
+/**
+ * Converts a Unicode `string` to an array.
+ *
+ * @private
+ * @param {string} string The string to convert.
+ * @returns {Array} Returns the converted array.
+ */
+function unicodeToArray(string) {
+  return string.match(reUnicode) || [];
+}
 
-exports.isMutationAction = isMutationAction;
+module.exports = unicodeToArray;
 
-var isReceivingMutationResult = function isReceivingMutationResult(action) {
-  return action.type === RECEIVE_MUTATION_RESULT;
-}; // actions
 
+/***/ }),
+/* 679 */
+/***/ (function(module, exports, __webpack_require__) {
 
-exports.isReceivingMutationResult = isReceivingMutationResult;
+"use strict";
 
-var initMutation = function initMutation(mutationId, definition) {
-  return {
-    type: INIT_MUTATION,
-    mutationId: mutationId,
-    definition: definition
-  };
-};
 
-exports.initMutation = initMutation;
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.hasSafariPlugin = exports.hasNetworkInformationPlugin = exports.hasInAppBrowserPlugin = exports.hasDevicePlugin = void 0;
 
-var receiveMutationResult = function receiveMutationResult(mutationId, response) {
-  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-  var definition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
-  return _objectSpread(_objectSpread({
-    type: RECEIVE_MUTATION_RESULT,
-    mutationId: mutationId,
-    response: response
-  }, options), {}, {
-    definition: definition
-  });
+var _cordova = __webpack_require__(669);
+
+var hasDevicePlugin = function hasDevicePlugin() {
+  return (0, _cordova.isCordova)() && window.device !== undefined;
 };
 
-exports.receiveMutationResult = receiveMutationResult;
+exports.hasDevicePlugin = hasDevicePlugin;
 
-var receiveMutationError = function receiveMutationError(mutationId, error) {
-  var definition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-  return {
-    type: RECEIVE_MUTATION_ERROR,
-    mutationId: mutationId,
-    error: error,
-    definition: definition
-  };
+var hasInAppBrowserPlugin = function hasInAppBrowserPlugin() {
+  return (0, _cordova.isCordova)() && window.cordova.InAppBrowser !== undefined;
 };
 
-exports.receiveMutationError = receiveMutationError;
+exports.hasInAppBrowserPlugin = hasInAppBrowserPlugin;
 
-/***/ }),
-/* 654 */
-/***/ (function(module, exports, __webpack_require__) {
+var hasSafariPlugin = function hasSafariPlugin() {
+  return new Promise(function (resolve) {
+    if (!(0, _cordova.isCordova)() || window.SafariViewController === undefined) {
+      resolve(false);
+      return;
+    }
 
-"use strict";
+    window.SafariViewController.isAvailable(function (available) {
+      return resolve(available);
+    });
+  });
+};
+/**
+ * Check if the Cordova's cordova-plugin-network-information plugin is installed
+ * @see https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-network-information/
+ * @returns {boolean}
+ */
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.properId = void 0;
+exports.hasSafariPlugin = hasSafariPlugin;
 
-var properId = function properId(doc) {
-  return doc.id || doc._id;
+var hasNetworkInformationPlugin = function hasNetworkInformationPlugin() {
+  return (0, _cordova.isCordova)() && window.navigator.connection !== undefined;
 };
 
-exports.properId = properId;
+exports.hasNetworkInformationPlugin = hasNetworkInformationPlugin;
 
 /***/ }),
-/* 655 */
+/* 680 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -105258,269 +100148,149 @@ var _interopRequireDefault = __webpack_require__(1);
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.default = void 0;
+exports.startApp = exports.default = exports.checkApp = void 0;
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-var _dsl = __webpack_require__(495);
+var _platform = __webpack_require__(668);
+
+var cordovaPluginIsInstalled = function cordovaPluginIsInstalled() {
+  return window.startApp;
+};
 
 /**
- * Associations are used by components to access related store documents that are
- * linked in a document. They are also responsible for building the `QueryDefinition` that is
- * used by the client to automatically fetch relationship data.
- *
- * Hydrated documents used by components come with Association instances.
- *
- * @interface
- *
- * @description
- * Example: The schema defines an `author` relationship :
- *
- * ```js
- * const BOOK_SCHEMA = {
- *   relationships: {
- *      author: 'has-one'
- *   }
- * }
- * ```
- *
- * Hydrated `books` will have the `author` association instance under the `author` key.
- * Accessing `hydratedBook.author.data` gives you the author from the store, for example :
- *
- * ```json
- * {
- *   "name": "St-Exupery",
- *   "firstName": "Antoine",
- *   "_id": "antoine"
- * }
- * ```
- *
- * It is the responsibility of the relationship to decide how the relationship data is stored.
- * For example, here since we use the default `has-one` relationship, the relationship data
- * is stored in the `relationships` attribute of the original document (in our case here, our book
- * would be
- *
- * ```json
- * {
- *   "title": "Le petit prince",
- *   "relationships": {
- *     "author": {
- *       "data": {
- *         "doctype": "io.cozy.authors",
- *         "_id": "antoine"
- *       }
- *     }
- *   }
- * }
- * ```
- *
- * In the case of an "in-place" relationship, the relationship data is stored directly under the attribute named
- * by the relationship (in our case `author`). Our book would be
- *
- * ```json
- * {
- *     "title": "Le petit prince",
- *     "author": "antoine"
- * }
- * ```
- *
- * ---
- *
- * Each different type of Association may change:
- *
- * - `get raw`: how the relationship data is stored (either as per the JSON API spec or
- *  in a custom way)
- * - `get data`: how the store documents are then fetched from the store to be added to
- * the hydrated document (.data method). View components will access
- * `hydratedDoc[relationshipName].data`.
- * - `get query`: how to build the query to fetch related documents
- *
+ * Normalize startApp params for Android and iOS
  */
-var Association = /*#__PURE__*/function () {
-  /**
-   * @param  {object} target - Original object containing raw data
-   * @param  {string} name - Attribute under which the association is stored
-   * @param  {string} doctype - Doctype of the documents managed by the association
-   * @param {object} options - Options passed from the client
-   * @param {Function} options.get - Get a document from the store
-   * @param {Function} options.query - Execute client query
-   * @param {Function} options.mutate - Execute client mutate
-   * @param {Function} options.save - Execute client save
-   * @param  {Function} options.dispatch - Store's dispatch, comes from the client
-   */
-  function Association(target, name, doctype, options) {
-    (0, _classCallCheck2.default)(this, Association);
-    var dispatch = options.dispatch,
-        get = options.get,
-        query = options.query,
-        mutate = options.mutate,
-        save = options.save;
-    /**
-     * The original document declaring the relationship
-     *
-     * @type {object}
-     */
+var getParams = function getParams(_ref) {
+  var appId = _ref.appId,
+      uri = _ref.uri;
 
-    this.target = target;
-    /**
-     * The name of the relationship.
-     *
-     * @type {string}
-     * @example 'author'
-     */
+  if ((0, _platform.isAndroidApp)()) {
+    return {
+      package: appId
+    };
+  } else {
+    return uri;
+  }
+};
 
-    this.name = name;
-    /**
-     * Doctype of the relationship
-     *
-     * @type {string}
-     * @example 'io.cozy.authors'
-     */
+var exported = {};
+/**
+ * Start an application if it is installed on the phone
+ * @returns Promise - False if the application was not able to be started
+ */
 
-    this.doctype = doctype;
-    /**
-     * Returns the document from the store
-     *
-     * @type {Function}
-     */
+var startApp = exported.startApp = /*#__PURE__*/function () {
+  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(appInfo) {
+    var startAppPlugin, isAppInstalled, params;
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            startAppPlugin = window.startApp;
+            _context.next = 3;
+            return exported.checkApp(appInfo);
 
-    this.get = get;
-    /**
-     * Performs a query to retrieve relationship documents.
-     *
-     * @param {QueryDefinition} queryDefinition
-     * @function
-     */
+          case 3:
+            isAppInstalled = _context.sent;
 
-    this.query = query;
-    /**
-     * Performs a mutation on the relationship.
-     *
-     * @function
-     */
+            if (!isAppInstalled) {
+              _context.next = 9;
+              break;
+            }
 
-    this.mutate = mutate;
-    /**
-     * Saves the relationship in store.
-     *
-     * @type {Function}
-     */
+            params = getParams(appInfo);
+            return _context.abrupt("return", new Promise(function (resolve, reject) {
+              if (!cordovaPluginIsInstalled()) {
+                reject(new Error("Cordova plugin 'com.lampa.startapp' is not installed. This plugin is needed to start a native app. Required by cozy-bar"));
+                return;
+              }
 
-    this.save = save;
-    /**
-     * Dispatch an action on the store.
-     *
-     * @type {Function}
-     */
+              startAppPlugin.set(params).start(resolve, reject);
+            }));
 
-    this.dispatch = dispatch;
-  }
-  /**
-   *
-   * Returns the raw relationship data as stored in the original document
-   *
-   * For a document with relationships stored as JSON API spec:
-   *
-   * ```js
-   * const book = {
-   *   title: 'Moby Dick',
-   *   relationships: {
-   *     author: {
-   *       data: {
-   *         doctype: 'io.cozy.authors',
-   *         id: 'herman'
-   *       }
-   *     }
-   *   }
-   *  }
-   * ```
-   *
-   * Raw value will be
-   *
-   * ```json
-   * {
-   *   "doctype": "io.cozy.authors",
-   *   "id": "herman"
-   * }
-   * ```
-   *
-   * Derived `Association`s need to implement this method.
-   *
-   * @returns {object}
-   */
+          case 9:
+            return _context.abrupt("return", false);
 
+          case 10:
+          case "end":
+            return _context.stop();
+        }
+      }
+    }, _callee);
+  }));
 
-  (0, _createClass2.default)(Association, [{
-    key: "raw",
-    get: function get() {
-      throw new Error('A relationship must define its raw getter');
-    }
-    /**
-     * Returns the document(s) from the store
-     *
-     * For document with relationships stored as JSON API spec :
-     *
-     * ```js
-     * const book = {
-     *   title: 'Moby Dick',
-     *   relationships: {
-     *     author: {
-     *       data: {
-     *         doctype: 'io.cozy.authors',
-     *         id: 'herman'
-     *       }
-     *     }
-     *   }
-     *  }
-     * ```
-     *
-     * `data` will be
-     *
-     * ```json
-     * {
-     *   "_id": "herman"
-     *   "_type": "io.cozy.authors",
-     *   "firstName": "herman",
-     *   "name": "Melville"
-     * }
-     * ```
-     *
-     * Derived `Association`s need to implement this method.
-     *
-     * @returns {object}
-     */
+  return function (_x) {
+    return _ref2.apply(this, arguments);
+  };
+}();
+/**
+ * Check that an application is installed on the phone
+ * @returns Promise - Promise containing information on the application
+ *
+ * @example
+ * > checkApp({ appId: 'io.cozy.drive.mobile', uri: 'cozydrive://' })
+ * Promise.resolve({
+ *  versionName: "0.9.2",
+ *  packageName: "io.cozy.drive.mobile",
+ *  versionCode: 902,
+ *  applicationInfo: "ApplicationInfo{70aa0ef io.cozy.drive.mobile}"
+ * })
+ */
 
-  }, {
-    key: "data",
-    get: function get() {
-      throw new Error('A relationship must define its data getter');
-    }
-    /**
-     * Derived `Association`s need to implement this method.
-     *
-     * @param {import("../types").CozyClientDocument} document - Document to query
-     * @param {object} client - The CozyClient instance
-     * @param {Association} assoc - Association containing info on how to build the query to fetch related documents
-     *
-     * @returns {import("../types").CozyClientDocument | QueryDefinition }
-     */
 
-  }], [{
-    key: "query",
-    value: function query(document, client, assoc) {
-      throw new Error('A custom relationship must define its query() function');
-    }
-  }]);
-  return Association;
+exports.startApp = startApp;
+
+var checkApp = exported.checkApp = /*#__PURE__*/function () {
+  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(appInfo) {
+    var startAppPlugin, params;
+    return _regenerator.default.wrap(function _callee2$(_context2) {
+      while (1) {
+        switch (_context2.prev = _context2.next) {
+          case 0:
+            startAppPlugin = window.startApp;
+            params = getParams(appInfo);
+            return _context2.abrupt("return", new Promise(function (resolve, reject) {
+              if (!cordovaPluginIsInstalled()) {
+                reject(new Error("Cordova plugin 'com.lampa.startapp' is not installed."));
+                return;
+              }
+
+              startAppPlugin.set(params).check(function (infos) {
+                return resolve(infos === 'OK' ? true : infos);
+              }, function (error) {
+                if (error === false || error.indexOf('NameNotFoundException') === 0) {
+                  // Plugin returns an error 'NameNotFoundException' on Android and
+                  // false on iOS when an application is not found.
+                  // We prefer to always return false
+                  resolve(false);
+                } else {
+                  reject(error);
+                }
+              });
+            }));
+
+          case 3:
+          case "end":
+            return _context2.stop();
+        }
+      }
+    }, _callee2);
+  }));
+
+  return function (_x2) {
+    return _ref3.apply(this, arguments);
+  };
 }();
 
-var _default = Association;
+exports.checkApp = checkApp;
+var _default = exported;
 exports.default = _default;
 
 /***/ }),
-/* 656 */
+/* 681 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -105531,477 +100301,249 @@ var _interopRequireDefault = __webpack_require__(1);
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.default = exports.updateRelationship = exports.updateHasManyItem = exports.removeHasManyItem = exports.setHasManyItem = exports.getHasManyItems = exports.getHasManyItem = void 0;
-
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
-
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
-
-var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(483));
+exports.nativeLinkOpen = void 0;
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+var _plugins = __webpack_require__(679);
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+var nativeLinkOpen = /*#__PURE__*/function () {
+  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
+    var url, target, options;
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            url = _ref.url;
+            _context.next = 3;
+            return (0, _plugins.hasSafariPlugin)();
 
-var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
+          case 3:
+            _context.t0 = _context.sent;
 
-var _get = _interopRequireDefault(__webpack_require__(399));
+            if (!_context.t0) {
+              _context.next = 6;
+              break;
+            }
 
-var _merge = _interopRequireDefault(__webpack_require__(532));
+            _context.t0 = window.SafariViewController;
 
-var _dsl = __webpack_require__(495);
+          case 6:
+            if (!_context.t0) {
+              _context.next = 10;
+              break;
+            }
 
-var _store = __webpack_require__(627);
+            window.SafariViewController.show({
+              url: url,
+              transition: 'curl'
+            }, function (result) {
+              if (result.event === 'closed') {
+                window.SafariViewController.hide();
+              }
+            }, function () {
+              window.SafariViewController.hide();
+            });
+            _context.next = 11;
+            break;
 
-var _Association2 = _interopRequireDefault(__webpack_require__(655));
+          case 10:
+            if ((0, _plugins.hasInAppBrowserPlugin)()) {
+              target = '_blank';
+              options = 'clearcache=yes,zoom=no';
+              window.cordova.InAppBrowser.open(url, target, options);
+            } else {
+              window.location = url;
+            }
 
-var _logger = _interopRequireDefault(__webpack_require__(498));
+          case 11:
+          case "end":
+            return _context.stop();
+        }
+      }
+    }, _callee);
+  }));
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+  return function nativeLinkOpen(_x) {
+    return _ref2.apply(this, arguments);
+  };
+}();
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+exports.nativeLinkOpen = nativeLinkOpen;
 
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+/***/ }),
+/* 682 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+"use strict";
 
-/**
- * @typedef {object} Relationship
- * @property {string} relName - name of the relationship
- * @property {string} relItemId - id of the relation
- * @property {Relation} relItemAttrs - Attributes to be set (at least _id and _type)
- */
 
-/**
- * @typedef {object} Relation
- * @property {string} _id - id of the relation
- * @property {string} _type - doctype of the relation
- */
-var empty = function empty() {
-  return {
-    data: [],
-    next: true,
-    meta: {
-      count: 0
-    }
-  };
-};
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.openDeeplinkOrRedirect = void 0;
 
-var updateArray = function updateArray(array, indexArg, el) {
-  var index = indexArg === -1 ? array.length : indexArg;
-  return [].concat((0, _toConsumableArray2.default)(array.slice(0, index)), [el], (0, _toConsumableArray2.default)(array.slice(index + 1)));
-};
 /**
- * Related documents are stored in the relationships attribute of the object,
- * following the JSON API spec.
- *
- * Responsible for
- *
- * - Creating relationships
- * - Removing relationships
- *
- * @description
+ * This file is used to open the native app from a webapp
+ * if this native app is installed
  *
- * ```
- * const schema = {
- *   todos: {
- *      doctype: 'io.cozy.todos',
- *      relationships: {
- *        tasks: {
- *          doctype: 'io.cozy.tasks',
- *          type: 'has-many'
- *        }
- *      }
- *    }
- * }
+ * From a webapp, we don't have any clue if a native app is installed.
+ * The only way to know that, is to try to open the custom link
+ * (aka cozydrive://) and if nothing happens (no blur) we redirect to
+ * the callback
  *
- * const todo = {
- *   label: "Protect people's privacy",
- *   relationships: {
- *     tasks: {
- *       data: [
- *         {_id: 1, _type: 'io.cozy.tasks'},
- *         {_id: 2, _type: 'io.cozy.tasks'}
- *       ]
- *     }
- *   }
- * }
- * ```
+ * Firefox tries to open custom link, so we need to create an iframe
+ * to detect if this is supported or not
  */
+var _createHiddenIframe = function _createHiddenIframe(target, uri, randomId) {
+  var iframe = document.createElement('iframe');
+  iframe.src = uri;
+  iframe.id = "hiddenIframe_".concat(randomId);
+  iframe.style.display = 'none';
+  target.appendChild(iframe);
+  return iframe;
+};
 
+var openUriWithHiddenFrame = function openUriWithHiddenFrame(uri, failCb) {
+  var randomId = Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5);
+  window.addEventListener('blur', onBlur);
 
-var HasMany = /*#__PURE__*/function (_Association) {
-  (0, _inherits2.default)(HasMany, _Association);
-
-  var _super = _createSuper(HasMany);
+  var iframe = _createHiddenIframe(document.body, 'about:blank', randomId);
 
-  function HasMany() {
-    var _this;
+  var timeout = setTimeout(function () {
+    failCb();
+    window.removeEventListener('blur', onBlur);
+    iframe.parentElement.removeChild(iframe);
+  }, 500);
 
-    (0, _classCallCheck2.default)(this, HasMany);
+  function onBlur() {
+    clearTimeout(timeout);
+    window.removeEventListener('blur', onBlur);
+    iframe.parentElement.removeChild(iframe);
+  }
 
-    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
+  iframe.contentWindow.location.href = uri;
+};
 
-    _this = _super.call.apply(_super, [this].concat(args));
-    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateRelationshipData", function (getUpdatedRelationshipData) {
-      return function (dispatch, getState) {
-        var previousRelationship = (0, _store.getDocumentFromState)(getState(), _this.target._type, _this.target._id);
-        dispatch((0, _store.receiveQueryResult)(null, {
-          data: _objectSpread(_objectSpread({}, previousRelationship), {}, {
-            relationships: _objectSpread(_objectSpread({}, previousRelationship.relationships), {}, (0, _defineProperty2.default)({}, _this.name, getUpdatedRelationshipData(previousRelationship.relationships[_this.name])))
-          })
-        }));
-      };
-    });
-    return _this;
-  }
-
-  (0, _createClass2.default)(HasMany, [{
-    key: "fetchMore",
-    value: function fetchMore() {
-      throw 'Not implemented';
-    }
-  }, {
-    key: "exists",
-    value: function exists(document) {
-      return this.existsById(document._id);
-    }
-  }, {
-    key: "containsById",
-    value: function containsById(id) {
-      return this.getRelationship().data.find(function (_ref) {
-        var _id = _ref._id;
-        return id === _id;
-      }) !== undefined;
-    }
-  }, {
-    key: "existsById",
-    value: function existsById(id) {
-      return Boolean(this.containsById(id) && this.get(this.doctype, id));
-    }
-    /**
-     * Add the relationships to the target document
-     *
-     * @param {import("../types").CozyClientDocument[]} docsArg - Documents to add as relationships
-     * @returns {import("../types").CozyClientDocument} The saved target document
-     */
-
-  }, {
-    key: "add",
-    value: function add(docsArg) {
-      var docs = Array.isArray(docsArg) ? docsArg : [docsArg];
-      var ids = docs.map(function (doc) {
-        return doc._id;
-      });
-      return this.addById(ids);
-    }
-    /**
-     * Remove the relationships from the target document
-     *
-     * @param {import("../types").CozyClientDocument[]} docsArg - Documents to remove as relationships
-     * @returns {import("../types").CozyClientDocument} The saved target document
-     */
-
-  }, {
-    key: "remove",
-    value: function remove(docsArg) {
-      var docs = Array.isArray(docsArg) ? docsArg : [docsArg];
-      var ids = docs.map(function (doc) {
-        return doc._id;
-      });
-      return this.removeById(ids);
-    }
-    /**
-     * Update target document with relationships
-     *
-     * @param {string[]} idsArg - The ids to add as a relationship
-     */
-
-  }, {
-    key: "addTargetRelationships",
-    value: function addTargetRelationships(idsArg) {
-      var _this2 = this,
-          _this$target$relation;
+var openUriWithTimeoutHack = function openUriWithTimeoutHack(uri, failCb) {
+  var timeout = setTimeout(function () {
+    failCb();
+    target.removeEventListener('blur', onBlur);
+  }, 500); // handle page running in an iframe (blur must be registered with top level window)
 
-      if (!this.target.relationships) this.target.relationships = {};
+  var target = window;
 
-      if (!this.target.relationships[this.name]) {
-        this.target.relationships[this.name] = {
-          data: []
-        };
-      }
+  while (target != target.parent) {
+    target = target.parent;
+  }
 
-      var ids = Array.isArray(idsArg) ? idsArg : [idsArg];
-      var newRelations = ids.filter(function (id) {
-        return !_this2.existsById(id);
-      }).map(function (id) {
-        return {
-          _id: id,
-          _type: _this2.doctype
-        };
-      });
+  target.addEventListener('blur', onBlur);
 
-      (_this$target$relation = this.target.relationships[this.name].data).push.apply(_this$target$relation, (0, _toConsumableArray2.default)(newRelations));
+  function onBlur() {
+    clearTimeout(timeout);
+    target.removeEventListener('blur', onBlur);
+  } // Why is an uri assigned to location object?
 
-      this.updateMetaCount();
-    }
-    /**
-     * Add a referenced document by id. You need to call save()
-     * in order to synchronize your document with the store.
-     *
-     * @todo We shouldn't create the array of relationship manually since
-     * it'll not be present in the store as well.
-     * We certainly should use something like `updateRelationship`
-     *
-     */
 
-  }, {
-    key: "addById",
-    value: function addById(idsArg) {
-      this.addTargetRelationships(idsArg);
-      return this.save(this.target);
-    }
-    /**
-     * Remove relationships from target document
-     *
-     * @param {string[]} idsArg - The ids to remove from the target relationships
-     */
+  window.location = uri;
+};
 
-  }, {
-    key: "removeTargetRelationships",
-    value: function removeTargetRelationships(idsArg) {
-      var ids = Array.isArray(idsArg) ? idsArg : [idsArg];
-      this.target.relationships[this.name].data = this.target.relationships[this.name].data.filter(function (_ref2) {
-        var _id = _ref2._id;
-        return !ids.includes(_id);
-      });
-      this.updateMetaCount();
-    }
-  }, {
-    key: "removeById",
-    value: function removeById(idsArg) {
-      this.removeTargetRelationships(idsArg);
-      return this.save(this.target);
-    }
-  }, {
-    key: "updateMetaCount",
-    value: function updateMetaCount() {
-      if ((0, _get.default)(this.target.relationships[this.name], 'meta.count') !== undefined) {
-        this.target.relationships[this.name].meta = _objectSpread(_objectSpread({}, this.target.relationships[this.name].meta), {}, {
-          count: this.target.relationships[this.name].data.length
-        });
-      }
-    }
-  }, {
-    key: "getRelationship",
-    value: function getRelationship() {
-      var rawData = this.target[this.name];
-      var relationship = (0, _get.default)(this.target, "relationships.".concat(this.name));
+var openUriWithMsLaunchUri = function openUriWithMsLaunchUri(uri, failCb) {
+  navigator.msLaunchUri(uri, undefined, failCb);
+};
 
-      if (!relationship) {
-        if (rawData && rawData.length) {
-          _logger.default.warn("You're trying to access data on a relationship that appear to not be loaded yet. You may want to use 'include()' on your query");
-        }
+var checkBrowser = function checkBrowser() {
+  var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
+  var ua = navigator.userAgent.toLowerCase();
+  var isSafari = ua.includes('safari') && !ua.includes('chrome') || Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
+  var isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
+  var isIOS122 = isIOS && (ua.includes('os 12_2') || ua.includes('os 12_3'));
+  return {
+    isOpera: isOpera,
+    isFirefox: typeof window.InstallTrigger !== 'undefined',
+    isSafari: isSafari,
+    isChrome: !!window.chrome && !isOpera,
+    isIOS122: isIOS122,
+    isIOS: isIOS
+  };
+};
+/**
+ *
+ * @param {String} deeplink (cozydrive://)
+ * @param {String} failCb (http://drive.cozy.ios)
+ */
 
-        return empty();
-      }
 
-      return relationship;
-    }
-  }, {
-    key: "updateTargetRelationship",
-    value: function updateTargetRelationship(store, updateFn) {
-      // TODO See if updateTargetRelationship is still used, removing it would enable us
-      // to remove store.readDocument and store.writeDocument and the StoreProxy
-      var prevTarget = store.readDocument(this.target._type, this.target._id);
-      store.writeDocument(this.updateRelationship(prevTarget, updateFn));
-    }
-  }, {
-    key: "updateRelationship",
-    value: function updateRelationship(target, updateFn) {
-      return HasMany.updateRelationship(target, this.name, updateFn);
-    }
-  }, {
-    key: "dehydrate",
-    value: function dehydrate(doc) {
-      return _objectSpread(_objectSpread({}, doc), {}, {
-        relationships: _objectSpread(_objectSpread({}, doc.relationships), {}, (0, _defineProperty2.default)({}, this.name, {
-          data: this.raw
-        }))
-      });
-    }
-    /**
-     * @param {import("../types").CozyClientDocument} document - Document to query
-     * @param {object} client - The CozyClient instance
-     * @param {Association} assoc - The query params
-     *
-     * @returns {import("../types").CozyClientDocument | QueryDefinition}
-     */
+var openDeeplinkOrRedirect = function openDeeplinkOrRedirect(deeplink, failCb) {
+  if (navigator.msLaunchUri) {
+    // for IE and Edge in Win 8 and Win 10
+    openUriWithMsLaunchUri(deeplink, failCb);
+  } else {
+    var browser = checkBrowser();
 
-  }, {
-    key: "raw",
-    get: function get() {
-      return this.getRelationship().data;
+    if (browser.isChrome || browser.isIOS && !browser.isIOS122) {
+      openUriWithTimeoutHack(deeplink, failCb);
+    } else if (browser.isSafari && !browser.isIOS122 || browser.isFirefox) {
+      openUriWithHiddenFrame(deeplink, failCb);
+    } else {
+      failCb();
     }
-    /**
-     * Returns store documents
-     */
+  }
+};
 
-  }, {
-    key: "data",
-    get: function get() {
-      var _this3 = this;
+exports.openDeeplinkOrRedirect = openDeeplinkOrRedirect;
 
-      return this.getRelationship().data.map(function (_ref3) {
-        var _id = _ref3._id,
-            _type = _ref3._type;
-        return _this3.get(_type, _id);
-      }).filter(Boolean);
-    }
-  }, {
-    key: "hasMore",
-    get: function get() {
-      return this.getRelationship().next;
-    }
-    /**
-     * Returns the total number of documents in the relationship.
-     * Does not handle documents absent from the store. If you want
-     * to do that, you can use .data.length.
-     *
-     * @returns {number} - Total number of documents in the relationships
-     */
+/***/ }),
+/* 683 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  }, {
-    key: "count",
-    get: function get() {
-      var relationship = this.getRelationship();
-      return relationship.meta ? relationship.meta.count : relationship.data.length;
-    }
-  }], [{
-    key: "query",
-    value: function query(document, client, assoc) {
-      var relationships = (0, _get.default)(document, "relationships.".concat(assoc.name, ".data"), []);
-      var ids = relationships.map(function (assoc) {
-        return assoc._id;
-      });
-      return new _dsl.QueryDefinition({
-        doctype: assoc.doctype,
-        ids: ids
-      });
-    }
-  }]);
-  return HasMany;
-}(_Association2.default);
-/**
- * Gets a relationship item with the relationship name and id
- *
- * @param {object} doc - Document to be updated
- * @param {string} relName - Name of the relationship
- * @param {string} relItemId - Id of the relationship item
- */
+"use strict";
 
 
-var getHasManyItem = HasMany.getHasManyItem = function (doc, relName, relItemId) {
-  var relData = (0, _get.default)(doc, "relationships.".concat(relName, ".data"), []);
-  return relData.find(function (rel) {
-    return rel._id == relItemId;
-  });
-};
+var _interopRequireDefault = __webpack_require__(1);
 
-exports.getHasManyItem = getHasManyItem;
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.isFlagshipApp = exports.getFlagshipMetadata = exports.FlagshipRoutes = void 0;
 
-var getHasManyItems = HasMany.getHasManyItems = function (doc, relName) {
-  return (0, _get.default)(doc, "relationships.".concat(relName, ".data"), []);
-};
-/**
- * Sets a relationship item with the relationship name and id
- *
- * @param {object} doc - Document to be updated
- * @param {string} relName - Name of the relationship
- * @param {string} relItemId - Id of the relationship item
- * @param {object} relItemAttrs - Attributes to be set (at least _id and _type)
- */
+var _cozyLogger = _interopRequireDefault(__webpack_require__(211));
 
+var FlagshipRoutes;
+exports.FlagshipRoutes = FlagshipRoutes;
 
-exports.getHasManyItems = getHasManyItems;
+(function (FlagshipRoutes) {
+  FlagshipRoutes["Home"] = "home";
+  FlagshipRoutes["Cozyapp"] = "cozyapp";
+  FlagshipRoutes["Authenticate"] = "authenticate";
+  FlagshipRoutes["Onboarding"] = "onboarding";
+  FlagshipRoutes["Stack"] = "stack";
+})(FlagshipRoutes || (exports.FlagshipRoutes = FlagshipRoutes = {}));
 
-var setHasManyItem = HasMany.setHasManyItem = function (doc, relName, relItemId, relItemAttrs) {
-  var relData = HasMany.getHasManyItems(doc, relName);
-  var relIndex = relData.findIndex(function (rel) {
-    return rel._id === relItemId;
-  });
-  var updatedRelItem = (0, _merge.default)({}, relData[relIndex], relItemAttrs);
-  var updatedRelData = updateArray(relData, relIndex, updatedRelItem);
-  var updatedDocument = HasMany.updateRelationship(doc, relName, function (relationship) {
-    return (0, _merge.default)({}, relationship, {
-      data: updatedRelData
-    });
-  });
-  return updatedDocument;
+var getGlobalWindow = function getGlobalWindow() {
+  return typeof window !== 'undefined' ? window : ((0, _cozyLogger.default)('error', "\"window\" is not defined. This means that getGlobalWindow() shouldn't have been called and investigation should be done to prevent this call"), undefined);
 };
-/**
- * Remove one relationship item
- *
- * @param {object} doc - Document to be updated
- * @param {string} relName - Name of the relationship
- * @param {string} relItemId - Id of the relationship item
- */
-
 
-exports.setHasManyItem = setHasManyItem;
+var getFlagshipMetadata = function getFlagshipMetadata() {
+  var _getGlobalWindow$cozy, _getGlobalWindow, _getGlobalWindow$cozy2;
 
-var removeHasManyItem = HasMany.removeHasManyItem = function (doc, relName, relItemId) {
-  var relData = HasMany.getHasManyItems(doc, relName);
-  var updatedRelData = relData.filter(function (rel) {
-    return rel._id !== relItemId;
-  });
-  var updatedDocument = HasMany.updateRelationship(doc, relName, function () {
-    return {
-      data: updatedRelData
-    };
-  });
-  return updatedDocument;
+  return (_getGlobalWindow$cozy = (_getGlobalWindow = getGlobalWindow()) === null || _getGlobalWindow === void 0 ? void 0 : (_getGlobalWindow$cozy2 = _getGlobalWindow.cozy) === null || _getGlobalWindow$cozy2 === void 0 ? void 0 : _getGlobalWindow$cozy2.flagship) !== null && _getGlobalWindow$cozy !== void 0 ? _getGlobalWindow$cozy : {};
 };
-/**
- * Updates a relationship item with the relationship name and id
- *
- * @param {object} doc - Document to be updated
- * @param {string} relName - Name of the relationship
- * @param {string} relItemId - Id of the relationship item
- * @param {Function} updater - receives the current relationship item and should
- * return an updated version. Merge should be used in the updater
- * if previous relationship item fields are to be kept.
- */
-
-
-exports.removeHasManyItem = removeHasManyItem;
 
-var updateHasManyItem = HasMany.updateHasManyItem = function (doc, relName, relItemId, updater) {
-  var relItem = HasMany.getHasManyItem(doc, relName, relItemId);
-  var updatedRelItem = updater(relItem);
-  return HasMany.setHasManyItem(doc, relName, relItemId, updatedRelItem);
-};
+exports.getFlagshipMetadata = getFlagshipMetadata;
 
-exports.updateHasManyItem = updateHasManyItem;
+var isFlagshipApp = function isFlagshipApp() {
+  var _getGlobalWindow2, _getGlobalWindow2$coz;
 
-var updateRelationship = HasMany.updateRelationship = function (doc, relName, updateFn) {
-  return _objectSpread(_objectSpread({}, doc), {}, {
-    relationships: _objectSpread(_objectSpread({}, doc.relationships), {}, (0, _defineProperty2.default)({}, relName, _objectSpread(_objectSpread({}, doc.relationships ? doc.relationships[relName] : {}), updateFn(doc.relationships ? doc.relationships[relName] : {}))))
-  });
+  return ((_getGlobalWindow2 = getGlobalWindow()) === null || _getGlobalWindow2 === void 0 ? void 0 : (_getGlobalWindow2$coz = _getGlobalWindow2.cozy) === null || _getGlobalWindow2$coz === void 0 ? void 0 : _getGlobalWindow2$coz.flagship) !== undefined;
 };
 
-exports.updateRelationship = updateRelationship;
-var _default = HasMany;
-exports.default = _default;
+exports.isFlagshipApp = isFlagshipApp;
 
 /***/ }),
-/* 657 */
+/* 684 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -106014,287 +100556,159 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+var _mapValues = _interopRequireDefault(__webpack_require__(298));
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+var _groupBy2 = _interopRequireDefault(__webpack_require__(638));
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+var _flatten = _interopRequireDefault(__webpack_require__(419));
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+var _isEqual = _interopRequireDefault(__webpack_require__(577));
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+var _uniq = _interopRequireDefault(__webpack_require__(522));
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+var _uniqWith = _interopRequireDefault(__webpack_require__(685));
 
-var _get2 = _interopRequireDefault(__webpack_require__(399));
+var _dsl = __webpack_require__(495);
 
-var _set = _interopRequireDefault(__webpack_require__(658));
+var isIdQuery = function isIdQuery(query) {
+  return query.id || query.ids;
+};
+/**
+ * Optimize queries on a single doctype
+ *
+ * @param  {QueryDefinition[]} queries - Queries of a same doctype
+ * @returns {QueryDefinition[]} Optimized queries
+ * @private
+ */
 
-var _dsl = __webpack_require__(495);
 
-var _Association2 = _interopRequireDefault(__webpack_require__(655));
+var optimizeDoctypeQueries = function optimizeDoctypeQueries(queries) {
+  var _groupBy = (0, _groupBy2.default)(queries, function (q) {
+    return isIdQuery(q) ? 'idQueries' : 'others';
+  }),
+      _groupBy$idQueries = _groupBy.idQueries,
+      idQueries = _groupBy$idQueries === void 0 ? [] : _groupBy$idQueries,
+      _groupBy$others = _groupBy.others,
+      others = _groupBy$others === void 0 ? [] : _groupBy$others;
 
-var _logger = _interopRequireDefault(__webpack_require__(498));
+  var groupedIdQueries = idQueries.length > 0 ? new _dsl.QueryDefinition({
+    doctype: queries[0].doctype,
+    ids: (0, _uniq.default)((0, _flatten.default)(idQueries.map(function (q) {
+      return q.id || q.ids;
+    })))
+  }) : []; // Deduplicate before concataining
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+  return (0, _uniqWith.default)(others, _isEqual.default).concat(groupedIdQueries);
+};
+/**
+ * Reduce the number of queries used to fetch documents.
+ *
+ * - Deduplication of queries
+ * - Groups id queries
+ *
+ * @param  {QueryDefinition[]} queries - Queries to optimized
+ * @returns {QueryDefinition[]} Optimized queries
+ * @private
+ */
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+var optimizeQueries = function optimizeQueries(queries) {
+  var byDoctype = (0, _groupBy2.default)(queries, function (q) {
+    return q.doctype;
+  });
+  return (0, _flatten.default)(Object.values((0, _mapValues.default)(byDoctype, optimizeDoctypeQueries)));
+};
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+var _default = optimizeQueries;
+exports.default = _default;
 
-var HasOne = /*#__PURE__*/function (_Association) {
-  (0, _inherits2.default)(HasOne, _Association);
+/***/ }),
+/* 685 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  var _super = _createSuper(HasOne);
+var baseUniq = __webpack_require__(423);
 
-  function HasOne() {
-    (0, _classCallCheck2.default)(this, HasOne);
-    return _super.apply(this, arguments);
-  }
+/**
+ * This method is like `_.uniq` except that it accepts `comparator` which
+ * is invoked to compare elements of `array`. The order of result values is
+ * determined by the order they occur in the array.The comparator is invoked
+ * with two arguments: (arrVal, othVal).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Array
+ * @param {Array} array The array to inspect.
+ * @param {Function} [comparator] The comparator invoked per element.
+ * @returns {Array} Returns the new duplicate free array.
+ * @example
+ *
+ * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
+ *
+ * _.uniqWith(objects, _.isEqual);
+ * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
+ */
+function uniqWith(array, comparator) {
+  comparator = typeof comparator == 'function' ? comparator : undefined;
+  return (array && array.length) ? baseUniq(array, undefined, comparator) : [];
+}
 
-  (0, _createClass2.default)(HasOne, [{
-    key: "add",
-
-    /**
-     * Add the relationship to the target document
-     *
-     * @param {import("../types").CozyClientDocument} doc - Document to add as a relationship
-     * @returns {import("../types").CozyClientDocument} The saved target document
-     */
-    value: function add(doc) {
-      this.setRelationship(doc);
-      return this.save(this.target);
-    }
-    /**
-     * Remove the relationship from the target document
-     *
-     * @returns {import("../types").CozyClientDocument} The saved target document
-     */
-
-  }, {
-    key: "remove",
-    value: function remove() {
-      this.setRelationship(undefined);
-      return this.save(this.target);
-    }
-  }, {
-    key: "setRelationship",
-    value: function setRelationship(doc) {
-      if (doc && doc._type !== this.doctype) {
-        throw new Error("Tried to associate a ".concat(doc._type, " document to a HasOne relationship on ").concat(this.doctype, " document"));
-      }
-
-      var path = "relationships[".concat(this.name, "].data");
-
-      if (doc) {
-        (0, _set.default)(this.target, path, {
-          _id: doc._id,
-          _type: doc._type
-        });
-      } else {
-        (0, _set.default)(this.target, path, undefined);
-      }
-    }
-  }, {
-    key: "set",
-    value: function set(doc) {
-      _logger.default.warn('set is deprecated for has-one relationships. Use `add` instead.');
-
-      this.setRelationship(doc);
-    }
-  }, {
-    key: "unset",
-    value: function unset() {
-      _logger.default.warn('unset is deprecated for has-one relationships. Use `remove` instead.');
-
-      this.setRelationship(undefined);
-    }
-  }, {
-    key: "dehydrate",
-    value: function dehydrate(doc) {
-      if (!this.raw) {
-        return doc;
-      }
-
-      return _objectSpread(_objectSpread({}, doc), {}, {
-        relationships: _objectSpread(_objectSpread({}, doc.relationships), {}, (0, _defineProperty2.default)({}, this.name, {
-          data: this.raw
-        }))
-      });
-    }
-  }, {
-    key: "raw",
-    get: function get() {
-      return (0, _get2.default)(this.target, "relationships[".concat(this.name, "].data"), null);
-    }
-  }, {
-    key: "data",
-    get: function get() {
-      if (!this.raw) {
-        return null;
-      }
-
-      return this.get(this.doctype, this.raw._id);
-    }
-    /**
-     * @param {import("../types").CozyClientDocument} document - Document to query
-     * @param {object} client - The CozyClient instance
-     * @param {Association} assoc - The query params
-     *
-     * @returns {import("../types").CozyClientDocument | QueryDefinition}
-     */
-
-  }], [{
-    key: "query",
-    value: function query(document, client, assoc) {
-      var relationship = (0, _get2.default)(document, "relationships.".concat(assoc.name, ".data"), {});
-
-      if (!relationship || !relationship._id) {
-        return null;
-      }
-
-      return (0, _dsl.Q)(assoc.doctype).getById(relationship._id);
-    }
-  }]);
-  return HasOne;
-}(_Association2.default);
-
-exports.default = HasOne;
-
-/***/ }),
-/* 658 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseSet = __webpack_require__(581);
-
-/**
- * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
- * it's created. Arrays are created for missing index properties while objects
- * are created for all other missing properties. Use `_.setWith` to customize
- * `path` creation.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Object
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }] };
- *
- * _.set(object, 'a[0].b.c', 4);
- * console.log(object.a[0].b.c);
- * // => 4
- *
- * _.set(object, ['x', '0', 'y', 'z'], 5);
- * console.log(object.x[0].y.z);
- * // => 5
- */
-function set(object, path, value) {
-  return object == null ? object : baseSet(object, path, value);
-}
-
-module.exports = set;
+module.exports = uniqWith;
 
 
 /***/ }),
-/* 659 */
+/* 686 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _interopRequireDefault = __webpack_require__(1);
-
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.BelongsToInPlace = exports.default = void 0;
-
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
-
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
-
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
-
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
-
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
-
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
-
-var _Association2 = _interopRequireDefault(__webpack_require__(655));
-
-var _dsl = __webpack_require__(495);
-
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
-
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+exports.default = void 0;
 
 /**
- * Here the id of the document is directly set in the attribute
- * of the document, not in the relationships attribute
+ * Use those fetch policies with `<Query />` to limit the number of re-fetch.
+ *
+ * @example
+ * ```
+ * import { fetchPolicies } from 'cozy-client'
+ * const olderThan30s = fetchPolicies.olderThan(30 * 1000)
+ * <Query fetchPolicy={olderThan30s} />
+ * ```
  */
-var HasOneInPlace = /*#__PURE__*/function (_Association) {
-  (0, _inherits2.default)(HasOneInPlace, _Association);
-
-  var _super = _createSuper(HasOneInPlace);
+var fetchPolicies = {
+  /**
+   * Returns a fetchPolicy that will only re-fetch queries that are older
+   * than `<delay>` ms.
+   *
+   * @param  {number} delay - Milliseconds since the query has been fetched
+   * @returns {Function} Fetch policy to be used with `<Query />`
+   */
+  olderThan: function olderThan(delay) {
+    return function (queryState) {
+      if (!queryState || !queryState.lastUpdate) {
+        return true;
+      } else {
+        var elapsed = Date.now() - queryState.lastUpdate;
+        return elapsed > delay;
+      }
+    };
+  },
 
-  function HasOneInPlace() {
-    (0, _classCallCheck2.default)(this, HasOneInPlace);
-    return _super.apply(this, arguments);
+  /**
+   * Fetch policy that deactivates any fetching.
+   */
+  noFetch: function noFetch() {
+    return false;
   }
-
-  (0, _createClass2.default)(HasOneInPlace, [{
-    key: "dehydrate",
-    value: function dehydrate(doc) {
-      return _objectSpread(_objectSpread({}, doc), {}, (0, _defineProperty2.default)({}, this.name, this.raw || undefined));
-    }
-  }, {
-    key: "raw",
-    get: function get() {
-      return this.target[this.name];
-    }
-  }, {
-    key: "data",
-    get: function get() {
-      return this.get(this.doctype, this.raw);
-    }
-    /**
-     * @param {import("../types").CozyClientDocument} document - Document to query
-     * @param {object} client - The CozyClient instance
-     * @param {Association} assoc - The query params
-     *
-     * @returns {import("../types").CozyClientDocument | QueryDefinition}
-     */
-
-  }], [{
-    key: "query",
-    value: function query(document, client, assoc) {
-      var id = document[assoc.name];
-      return client.getDocumentFromState(assoc.doctype, id) || (0, _dsl.Q)(assoc.doctype).getById(id);
-    }
-  }]);
-  return HasOneInPlace;
-}(_Association2.default);
-
-exports.default = HasOneInPlace;
-var BelongsToInPlace = HasOneInPlace;
-exports.BelongsToInPlace = BelongsToInPlace;
+};
+var _default = fetchPolicies;
+exports.default = _default;
 
 /***/ }),
-/* 660 */
+/* 687 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -106307,1133 +100721,1405 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
+
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
 var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+var _keyBy = _interopRequireDefault(__webpack_require__(633));
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+var _mapValues = _interopRequireDefault(__webpack_require__(298));
 
-var _dsl = __webpack_require__(495);
+var _merge = _interopRequireDefault(__webpack_require__(532));
 
-var _Association2 = _interopRequireDefault(__webpack_require__(655));
+var _size = _interopRequireDefault(__webpack_require__(688));
+
+var _intersectionBy = _interopRequireDefault(__webpack_require__(692));
+
+var _associations = __webpack_require__(625);
 
 function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
 function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+/**
+ * @typedef {object} DoctypeSchema
+ */
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+/**
+ * @typedef {Record<string, DoctypeSchema>} SchemaDefinition
+ */
 
 /**
+ * Returns a normalized schema object from the schema definition.
  *
- * Used when related documents are stored directly under the attribute with
- * only the ids.
- *
- * @property {Function} get
- *
- * @description
- *
- * An example document representing a TODO. See as the related
- * tasks are represented via ids.
+ * - Relationships are resolved to classes if needed
+ * - The name of the relationship (its key in the schema definition)
+ *   is included in the relationship
+ * - Empty relationships are nulled
  *
- * ```js
- * const todo = {
- *   label: "Protect people's privacy",
- *   tasks: [1, 2]
- * }
- * ```
+ * @private
+ */
+var normalizeDoctypeSchema = function normalizeDoctypeSchema(doctypeSchema) {
+  var relationships = (0, _mapValues.default)(doctypeSchema.relationships || {}, function (v, k) {
+    return _objectSpread(_objectSpread({}, v), {}, {
+      name: k,
+      type: (0, _associations.resolveClass)(v.doctype, v.type)
+    });
+  });
+  return _objectSpread(_objectSpread({}, doctypeSchema), {}, {
+    relationships: (0, _size.default)(relationships) > 0 ? (0, _keyBy.default)(relationships, 'name') : null
+  });
+};
+
+var assert = function assert(predicate, errorMessage) {
+  if (!predicate) throw new Error(errorMessage);
+};
+
+var ensureCanBeAdded = function ensureCanBeAdded(newSchemas, existingSchemas) {
+  var sameNames = (0, _intersectionBy.default)(newSchemas, existingSchemas, function (x) {
+    return x.name;
+  });
+  assert(sameNames.length === 0, "Duplicated names in schemas being added: ".concat(sameNames.map(function (x) {
+    return x.name;
+  }).join(', ')));
+  var sameDoctypes = (0, _intersectionBy.default)(newSchemas, existingSchemas, function (x) {
+    return x.doctype;
+  });
+  assert(sameDoctypes.length === 0, "Duplicated doctypes in schemas being added: ".concat(sameDoctypes.map(function (x) {
+    return x.name;
+  }).join(', ')));
+};
+/**
+ * Stores information on a particular doctype.
  *
- * Here is the `Schema` that would represent this kind of document.
- * Components receiving todos via `Query`s would have an instance of `HasManyInPlace`
- * as their `tasks` attribute.
+ * - Attribute validation
+ * - Relationship access
  *
  * ```js
- * const schema = {
+ * const schema = new Schema({
  *   todos: {
- *      doctype: 'io.cozy.todos',
- *      relationships: {
- *        tasks: {
- *          doctype: 'io.cozy.tasks',
- *          type: 'has-many-in-place'
- *        }
- *      }
- *    }
- * }
- *
- * const todo = {
- *   label: "Get rich",
- *   tasks: [1, 2]
- * }
+ *     attributes: {
+ *       label: {
+ *         unique: true
+ *       }
+ *     },
+ *     relationships: {
+ *       author: 'has-one-in-place'
+ *     }
+ *   }
+ * }, cozyStackClient)
  * ```
- *
  */
-var HasManyInPlace = /*#__PURE__*/function (_Association) {
-  (0, _inherits2.default)(HasManyInPlace, _Association);
 
-  var _super = _createSuper(HasManyInPlace);
 
-  function HasManyInPlace() {
-    (0, _classCallCheck2.default)(this, HasManyInPlace);
-    return _super.apply(this, arguments);
+var Schema = /*#__PURE__*/function () {
+  /**
+   * @param  {SchemaDefinition} schemaDefinition - Schema for the application documents
+   * @param  {object} client - An instance of cozy client (optional)
+   */
+  function Schema() {
+    var schemaDefinition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+    var client = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+    (0, _classCallCheck2.default)(this, Schema);
+    this.byDoctype = {};
+    this.add(schemaDefinition);
+    this.client = client;
   }
+  /**
+   * @param {SchemaDefinition} schemaDefinition - Additional schema to merge to current schema
+   */
 
-  (0, _createClass2.default)(HasManyInPlace, [{
-    key: "addById",
-    value: function addById(id) {
-      var rel = this.getRelationship();
-      rel.push(id);
-    }
-  }, {
-    key: "removeById",
-    value: function removeById(id) {
-      var rel = this.getRelationship();
-      var index = rel.indexOf(id);
 
-      if (index !== -1) {
-        rel.splice(index, 1);
-      }
-    }
-  }, {
-    key: "existsById",
-    value: function existsById(id) {
-      var rel = this.getRelationship();
-      return rel.indexOf(id) !== -1;
-    }
-  }, {
-    key: "getRelationship",
-    value: function getRelationship() {
-      this.target[this.name] = this.target[this.name] || [];
-      return this.target[this.name];
-    }
-  }, {
-    key: "dehydrate",
-    value: function dehydrate(doc) {
-      return _objectSpread(_objectSpread({}, doc), {}, (0, _defineProperty2.default)({}, this.name, this.raw || []));
+  (0, _createClass2.default)(Schema, [{
+    key: "add",
+    value: function add() {
+      var schemaDefinition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+      var normalizedSchemaDefinition = (0, _mapValues.default)(schemaDefinition, function (obj, name) {
+        return _objectSpread({
+          name: name
+        }, normalizeDoctypeSchema(obj));
+      });
+      ensureCanBeAdded(Object.values(normalizedSchemaDefinition), Object.values(this.byDoctype));
+      (0, _merge.default)(this.byDoctype, (0, _keyBy.default)(normalizedSchemaDefinition, function (x) {
+        return x.doctype;
+      }));
     }
-  }, {
-    key: "raw",
-
     /**
-     * Raw property
+     * Returns the schema for a doctype
      *
-     * @type {Array<string>}
+     * Creates an empty schema implicitly if it does not exist
+     *
+     * @param {string} doctype - Doctype
      */
-    get: function get() {
-      return this.target[this.name];
-    }
+
   }, {
-    key: "data",
-    get: function get() {
-      var _this = this;
+    key: "getDoctypeSchema",
+    value: function getDoctypeSchema(doctype) {
+      var schema = this.byDoctype[doctype];
 
-      var doctype = this.doctype;
-      return (this.raw || []).map(function (_id) {
-        return _this.get(doctype, _id);
-      });
+      if (!schema) {
+        schema = normalizeDoctypeSchema({
+          name: doctype,
+          doctype: doctype
+        });
+        this.byDoctype[doctype] = schema;
+      }
+
+      return schema;
     }
     /**
-     * @param {import("../types").CozyClientDocument} document - Document to query
-     * @param {object} client - The CozyClient instance
-     * @param {Association} assoc - The query params
+     * Returns the relationship for a given doctype/name
      *
-     * @returns {import("../types").CozyClientDocument | QueryDefinition}
+     * @param {string} doctype - Doctype
+     * @param {string} relationshipName - Relationship name
      */
 
-  }], [{
-    key: "query",
-    value: function query(document, client, assoc) {
-      var ids = document[assoc.name];
-
-      if (ids && ids > 0) {
-        return (0, _dsl.Q)(assoc.doctype).getByIds(ids);
-      } else {
-        return null;
+  }, {
+    key: "getRelationship",
+    value: function getRelationship(doctype, relationshipName) {
+      if (!doctype) {
+        throw new TypeError("Invalid doctype ".concat(doctype));
       }
-    }
-  }]);
-  return HasManyInPlace;
-}(_Association2.default);
 
-var _default = HasManyInPlace;
-exports.default = _default;
-
-/***/ }),
-/* 661 */
-/***/ (function(module, exports, __webpack_require__) {
+      var schema = this.getDoctypeSchema(doctype);
 
-"use strict";
+      if (!schema) {
+        throw new Error("Cannot find doctype ".concat(doctype, " in schema"));
+      }
 
+      if (!schema.relationships) {
+        throw new Error("Schema for doctype ".concat(doctype, " has no relationships"));
+      }
 
-var _interopRequireDefault = __webpack_require__(1);
+      return schema.relationships[relationshipName];
+    }
+    /**
+     * Validates a document considering the descriptions in schema.attributes.
+     */
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
+  }, {
+    key: "validate",
+    value: function () {
+      var _validate = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(document) {
+        var errors, schema, n, ret;
+        return _regenerator.default.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                errors = {};
+                schema = this.byDoctype[document._type];
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+                if (schema) {
+                  _context.next = 4;
+                  break;
+                }
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+                return _context.abrupt("return", true);
 
-var _get2 = _interopRequireDefault(__webpack_require__(602));
+              case 4:
+                if (schema.attributes) {
+                  _context.next = 6;
+                  break;
+                }
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+                return _context.abrupt("return", true);
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+              case 6:
+                _context.t0 = _regenerator.default.keys(schema.attributes);
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+              case 7:
+                if ((_context.t1 = _context.t0()).done) {
+                  _context.next = 15;
+                  break;
+                }
 
-var _HasMany2 = _interopRequireDefault(__webpack_require__(656));
+                n = _context.t1.value;
+                _context.next = 11;
+                return this.validateAttribute(document, n, schema.attributes[n]);
 
-var _dsl = __webpack_require__(495);
+              case 11:
+                ret = _context.sent;
+                if (ret !== true) errors[n] = ret;
+                _context.next = 7;
+                break;
 
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+              case 15:
+                if (!(Object.keys(errors).length === 0)) {
+                  _context.next = 17;
+                  break;
+                }
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+                return _context.abrupt("return", true);
 
-var TRIGGERS_DOCTYPE = 'io.cozy.triggers';
-/**
- * Association used for konnectors to retrieve all their related triggers.
- *
- * @augments HasMany
- */
+              case 17:
+                return _context.abrupt("return", errors);
 
-var HasManyTriggers = /*#__PURE__*/function (_HasMany) {
-  (0, _inherits2.default)(HasManyTriggers, _HasMany);
+              case 18:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this);
+      }));
 
-  var _super = _createSuper(HasManyTriggers);
+      function validate(_x) {
+        return _validate.apply(this, arguments);
+      }
 
-  function HasManyTriggers() {
-    (0, _classCallCheck2.default)(this, HasManyTriggers);
-    return _super.apply(this, arguments);
-  }
+      return validate;
+    }()
+  }, {
+    key: "validateAttribute",
+    value: function () {
+      var _validateAttribute = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(document, attrName, attrProps) {
+        var ret;
+        return _regenerator.default.wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                if (!(attrProps.unique && this.client)) {
+                  _context2.next = 6;
+                  break;
+                }
 
-  (0, _createClass2.default)(HasManyTriggers, [{
-    key: "data",
-    get: function get() {
-      var _this = this;
+                _context2.next = 3;
+                return this.client.collection(document._type).checkUniquenessOf(attrName, document[attrName]);
 
-      return (0, _get2.default)((0, _getPrototypeOf2.default)(HasManyTriggers.prototype), "data", this).filter(function (_ref) {
-        var slug = _ref.slug;
-        return slug === _this.target.slug;
-      });
-    }
-    /**
-     * In this association the query is special, we need to fetch all the triggers
-     * having for the 'konnector' worker, and then filter them based on their
-     * `message.konnector` attribute
-     */
+              case 3:
+                ret = _context2.sent;
 
-  }], [{
-    key: "query",
-    value: function query(doc, client) {
-      return (0, _dsl.Q)(TRIGGERS_DOCTYPE).where({
-        worker: 'konnector'
-      });
-    }
+                if (!(ret !== true)) {
+                  _context2.next = 6;
+                  break;
+                }
+
+                return _context2.abrupt("return", 'must be unique');
+
+              case 6:
+                return _context2.abrupt("return", true);
+
+              case 7:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2, this);
+      }));
+
+      function validateAttribute(_x2, _x3, _x4) {
+        return _validateAttribute.apply(this, arguments);
+      }
+
+      return validateAttribute;
+    }()
   }]);
-  return HasManyTriggers;
-}(_HasMany2.default);
+  return Schema;
+}();
 
-var _default = HasManyTriggers;
+var _default = Schema;
 exports.default = _default;
 
 /***/ }),
-/* 662 */
+/* 688 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
-
-
-var _interopRequireDefault = __webpack_require__(1);
+var baseKeys = __webpack_require__(333),
+    getTag = __webpack_require__(390),
+    isArrayLike = __webpack_require__(337),
+    isString = __webpack_require__(651),
+    stringSize = __webpack_require__(689);
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.getReferencedById = exports.getReferencedBy = exports.isReferencedById = exports.isReferencedBy = exports.create = exports.resolveClass = exports.attachRelationships = exports.responseToRelationship = exports.pickTypeAndId = void 0;
+/** `Object#toString` result references. */
+var mapTag = '[object Map]',
+    setTag = '[object Set]';
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+/**
+ * Gets the size of `collection` by returning its length for array-like
+ * values or the number of own enumerable string keyed properties for objects.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Collection
+ * @param {Array|Object|string} collection The collection to inspect.
+ * @returns {number} Returns the collection size.
+ * @example
+ *
+ * _.size([1, 2, 3]);
+ * // => 3
+ *
+ * _.size({ 'a': 1, 'b': 2 });
+ * // => 2
+ *
+ * _.size('pebbles');
+ * // => 7
+ */
+function size(collection) {
+  if (collection == null) {
+    return 0;
+  }
+  if (isArrayLike(collection)) {
+    return isString(collection) ? stringSize(collection) : collection.length;
+  }
+  var tag = getTag(collection);
+  if (tag == mapTag || tag == setTag) {
+    return collection.size;
+  }
+  return baseKeys(collection).length;
+}
 
-var _pick = _interopRequireDefault(__webpack_require__(596));
+module.exports = size;
 
-var _pickBy = _interopRequireDefault(__webpack_require__(579));
 
-var _Association = _interopRequireDefault(__webpack_require__(655));
+/***/ }),
+/* 689 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _HasOne = _interopRequireDefault(__webpack_require__(657));
+var asciiSize = __webpack_require__(690),
+    hasUnicode = __webpack_require__(675),
+    unicodeSize = __webpack_require__(691);
 
-var _HasOneInPlace = _interopRequireDefault(__webpack_require__(659));
+/**
+ * Gets the number of symbols in `string`.
+ *
+ * @private
+ * @param {string} string The string to inspect.
+ * @returns {number} Returns the string size.
+ */
+function stringSize(string) {
+  return hasUnicode(string)
+    ? unicodeSize(string)
+    : asciiSize(string);
+}
 
-var _HasMany = _interopRequireDefault(__webpack_require__(656));
+module.exports = stringSize;
 
-var _HasManyInPlace = _interopRequireDefault(__webpack_require__(660));
 
-var _HasManyFiles = _interopRequireDefault(__webpack_require__(626));
+/***/ }),
+/* 690 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+var baseProperty = __webpack_require__(416);
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+/**
+ * Gets the size of an ASCII `string`.
+ *
+ * @private
+ * @param {string} string The string inspect.
+ * @returns {number} Returns the string size.
+ */
+var asciiSize = baseProperty('length');
 
-var pickTypeAndId = function pickTypeAndId(x) {
-  return (0, _pick.default)(x, '_type', '_id');
-};
+module.exports = asciiSize;
 
-exports.pickTypeAndId = pickTypeAndId;
 
-var applyHelper = function applyHelper(fn, objOrArr) {
-  return Array.isArray(objOrArr) ? objOrArr.map(fn) : fn(objOrArr);
-};
+/***/ }),
+/* 691 */
+/***/ (function(module, exports) {
 
-var responseToRelationship = function responseToRelationship(response) {
-  return (0, _pickBy.default)({
-    data: applyHelper(pickTypeAndId, response.data),
-    meta: response.meta,
-    next: response.next,
-    skip: response.skip,
-    bookmark: response.bookmark
-  });
-};
+/** Used to compose unicode character classes. */
+var rsAstralRange = '\\ud800-\\udfff',
+    rsComboMarksRange = '\\u0300-\\u036f',
+    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
+    rsComboSymbolsRange = '\\u20d0-\\u20ff',
+    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
+    rsVarRange = '\\ufe0e\\ufe0f';
 
-exports.responseToRelationship = responseToRelationship;
+/** Used to compose unicode capture groups. */
+var rsAstral = '[' + rsAstralRange + ']',
+    rsCombo = '[' + rsComboRange + ']',
+    rsFitz = '\\ud83c[\\udffb-\\udfff]',
+    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
+    rsNonAstral = '[^' + rsAstralRange + ']',
+    rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
+    rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
+    rsZWJ = '\\u200d';
 
-var attachRelationship = function attachRelationship(doc, relationships) {
-  return _objectSpread(_objectSpread({}, doc), {}, {
-    relationships: _objectSpread(_objectSpread({}, doc.relationships), relationships)
-  });
-};
+/** Used to compose unicode regexes. */
+var reOptMod = rsModifier + '?',
+    rsOptVar = '[' + rsVarRange + ']?',
+    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
+    rsSeq = rsOptVar + reOptMod + rsOptJoin,
+    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
 
-var attachRelationships = function attachRelationships(response, relationshipsByDocId) {
-  if (Array.isArray(response.data)) {
-    return _objectSpread(_objectSpread({}, response), {}, {
-      data: response.data.map(function (doc) {
-        return attachRelationship(doc, relationshipsByDocId[doc._id]);
-      })
-    });
-  } else {
-    var doc = response.data;
-    return _objectSpread(_objectSpread({}, response), {}, {
-      data: attachRelationship(doc, relationshipsByDocId[doc._id])
-    });
-  }
-};
+/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
+var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
 
-exports.attachRelationships = attachRelationships;
-var aliases = {
-  'io.cozy.files:has-many': _HasManyFiles.default,
-  'has-many': _HasMany.default,
-  'belongs-to-in-place': _HasOneInPlace.default,
-  'has-one': _HasOne.default,
-  'has-one-in-place': _HasOneInPlace.default,
-  'has-many-in-place': _HasManyInPlace.default
-};
 /**
- * Returns the relationship class for a given doctype/type.
- *
- * In the schema definition, some classes have string aliases
- * so you do not have to import directly the association.
- *
- * Some doctypes can have built-in overriden relationships.
+ * Gets the size of a Unicode `string`.
  *
  * @private
+ * @param {string} string The string inspect.
+ * @returns {number} Returns the string size.
  */
-
-var resolveClass = function resolveClass(doctype, type) {
-  if (type === undefined) {
-    throw new Error('Undefined type for ' + doctype);
+function unicodeSize(string) {
+  var result = reUnicode.lastIndex = 0;
+  while (reUnicode.test(string)) {
+    ++result;
   }
+  return result;
+}
 
-  if (typeof type !== 'string') {
-    return type;
-  } else {
-    var qualified = "".concat(doctype, ":").concat(type);
-    var cls = aliases[qualified] || aliases[type];
-
-    if (!cls) {
-      throw new Error("Unknown association '".concat(type, "'"));
-    } else {
-      return cls;
-    }
-  }
-};
+module.exports = unicodeSize;
 
-exports.resolveClass = resolveClass;
 
-var create = function create(target, _ref, accessors) {
-  var name = _ref.name,
-      type = _ref.type,
-      doctype = _ref.doctype;
+/***/ }),
+/* 692 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  if (target[name] instanceof _Association.default) {
-    throw new Error("Association ".concat(name, " already exists"));
-  }
+var arrayMap = __webpack_require__(409),
+    baseIntersection = __webpack_require__(642),
+    baseIteratee = __webpack_require__(338),
+    baseRest = __webpack_require__(433),
+    castArrayLikeObject = __webpack_require__(643),
+    last = __webpack_require__(525);
 
-  return new type(target, name, doctype, accessors);
-};
 /**
- * Checks if the file is referenced by a specific doctype
+ * This method is like `_.intersection` except that it accepts `iteratee`
+ * which is invoked for each element of each `arrays` to generate the criterion
+ * by which they're compared. The order and references of result values are
+ * determined by the first array. The iteratee is invoked with one argument:
+ * (value).
  *
- * @param {import("../types").IOCozyFile} file - io.cozy.files document
- * @param {import("../types").Doctype} referencedBy - Doctype where document is referenced
- * @returns {boolean} If a reference is found
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Array
+ * @param {...Array} [arrays] The arrays to inspect.
+ * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
+ * @returns {Array} Returns the new array of intersecting values.
+ * @example
+ *
+ * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);
+ * // => [2.1]
+ *
+ * // The `_.property` iteratee shorthand.
+ * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
+ * // => [{ 'x': 1 }]
  */
+var intersectionBy = baseRest(function(arrays) {
+  var iteratee = last(arrays),
+      mapped = arrayMap(arrays, castArrayLikeObject);
 
+  if (iteratee === last(mapped)) {
+    iteratee = undefined;
+  } else {
+    mapped.pop();
+  }
+  return (mapped.length && mapped[0] === arrays[0])
+    ? baseIntersection(mapped, baseIteratee(iteratee, 2))
+    : [];
+});
 
-exports.create = create;
+module.exports = intersectionBy;
 
-var isReferencedBy = function isReferencedBy(file, referencedBy) {
-  var _file$relationships, _file$relationships$r;
 
-  var references = (file === null || file === void 0 ? void 0 : (_file$relationships = file.relationships) === null || _file$relationships === void 0 ? void 0 : (_file$relationships$r = _file$relationships.referenced_by) === null || _file$relationships$r === void 0 ? void 0 : _file$relationships$r.data) || (file === null || file === void 0 ? void 0 : file.referenced_by) || [];
-  return references.some(function (reference) {
-    return reference.type === referencedBy;
-  });
-};
-/**
- * Checks if the file is referenced by a specific doctype and a specific Id of that reference
- *
- * @param {import("../types").IOCozyFile} file - io.cozy.files document
- * @param {import("../types").Doctype} referencedBy - Doctype where document is referenced
- * @param {string} referencedId - Id of the referenced document
- * @returns {boolean} If a reference is found
- */
+/***/ }),
+/* 693 */
+/***/ (function(module, exports, __webpack_require__) {
 
+"use strict";
 
-exports.isReferencedBy = isReferencedBy;
 
-var isReferencedById = function isReferencedById(file, referencedBy, referencedId) {
-  var _file$relationships2, _file$relationships2$;
+var _interopRequireDefault = __webpack_require__(1);
 
-  var references = (file === null || file === void 0 ? void 0 : (_file$relationships2 = file.relationships) === null || _file$relationships2 === void 0 ? void 0 : (_file$relationships2$ = _file$relationships2.referenced_by) === null || _file$relationships2$ === void 0 ? void 0 : _file$relationships2$.data) || (file === null || file === void 0 ? void 0 : file.referenced_by) || [];
-  return references.some(function (reference) {
-    return reference.type === referencedBy && reference.id === referencedId;
-  });
-};
-/**
- * Get array of reference by an specific doctype
- *
- * @param {import("../types").IOCozyFile} file - io.cozy.files document
- * @param {import("../types").Doctype} referencedBy - Doctype where document is referenced
- * @returns {import("../types").Reference[]} Array of references found
- */
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
 
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-exports.isReferencedById = isReferencedById;
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-var getReferencedBy = function getReferencedBy(file, referencedBy) {
-  var _file$relationships3, _file$relationships3$;
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+
+var _get = _interopRequireDefault(__webpack_require__(399));
+
+var _store = __webpack_require__(627);
 
-  var references = (file === null || file === void 0 ? void 0 : (_file$relationships3 = file.relationships) === null || _file$relationships3 === void 0 ? void 0 : (_file$relationships3$ = _file$relationships3.referenced_by) === null || _file$relationships3$ === void 0 ? void 0 : _file$relationships3$.data) || (file === null || file === void 0 ? void 0 : file.referenced_by) || [];
-  return references.filter(function (reference) {
-    return reference.type === referencedBy;
-  });
-};
 /**
- * Get array of reference by an specific doctype and a specific Id of that reference
- *
- * @param {import("../types").IOCozyFile} file - io.cozy.files document
- * @param {import("../types").Doctype} referencedBy - Doctype where document is referenced
- * @param {string} referencedId - Id of the referenced document
- * @returns {import("../types").Reference[]} Array of the reference found
+ * ObservableQueries are the glue between the store and observers
+ * of the store. They have the responsibility to hydrate the documents
+ * before passing them to the React component.
  */
+var hasOwn = Object.prototype.hasOwnProperty;
 
+var ObservableQuery = /*#__PURE__*/function () {
+  function ObservableQuery(queryId, definition, client, options) {
+    var _this = this;
 
-exports.getReferencedBy = getReferencedBy;
-
-var getReferencedById = function getReferencedById(file, referencedBy, referencedId) {
-  var _file$relationships4, _file$relationships4$;
+    (0, _classCallCheck2.default)(this, ObservableQuery);
+    (0, _defineProperty2.default)(this, "handleStoreChange", function () {
+      var nextResult = _this.currentRawResult();
 
-  var references = (file === null || file === void 0 ? void 0 : (_file$relationships4 = file.relationships) === null || _file$relationships4 === void 0 ? void 0 : (_file$relationships4$ = _file$relationships4.referenced_by) === null || _file$relationships4$ === void 0 ? void 0 : _file$relationships4$.data) || (file === null || file === void 0 ? void 0 : file.referenced_by) || [];
-  return references.filter(function (reference) {
-    return reference.type === referencedBy && reference.id === referencedId;
-  });
-};
+      if (!shallowEqual(nextResult, _this.lastResult)) {
+        _this.lastResult = nextResult;
 
-exports.getReferencedById = getReferencedById;
+        _this.notifyObservers();
+      }
+    });
 
-/***/ }),
-/* 663 */
-/***/ (function(module, exports, __webpack_require__) {
+    if (!queryId || !definition || !client) {
+      throw new Error('ObservableQuery takes 3 arguments: queryId, definition and client');
+    }
 
-"use strict";
+    this.queryId = queryId;
+    this.definition = definition;
+    this.client = client;
+    this.observers = {};
+    this.idCounter = 1;
+    this.lastResult = this.currentRawResult();
+    this.options = options;
+  }
 
+  (0, _createClass2.default)(ObservableQuery, [{
+    key: "currentResult",
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-Object.defineProperty(exports, "deconstructCozyWebLinkWithSlug", {
-  enumerable: true,
-  get: function get() {
-    return _urlHelper.deconstructCozyWebLinkWithSlug;
-  }
-});
-Object.defineProperty(exports, "deconstructRedirectLink", {
-  enumerable: true,
-  get: function get() {
-    return _urlHelper.deconstructRedirectLink;
-  }
-});
-Object.defineProperty(exports, "generateWebLink", {
-  enumerable: true,
-  get: function get() {
-    return _urlHelper.generateWebLink;
-  }
-});
-Object.defineProperty(exports, "ensureFirstSlash", {
-  enumerable: true,
-  get: function get() {
-    return _urlHelper.ensureFirstSlash;
-  }
-});
-Object.defineProperty(exports, "rootCozyUrl", {
-  enumerable: true,
-  get: function get() {
-    return _urlHelper.rootCozyUrl;
-  }
-});
-Object.defineProperty(exports, "InvalidRedirectLinkError", {
-  enumerable: true,
-  get: function get() {
-    return _urlHelper.InvalidRedirectLinkError;
-  }
-});
-Object.defineProperty(exports, "InvalidCozyUrlError", {
-  enumerable: true,
-  get: function get() {
-    return _urlHelper.InvalidCozyUrlError;
-  }
-});
-Object.defineProperty(exports, "InvalidProtocolError", {
-  enumerable: true,
-  get: function get() {
-    return _urlHelper.InvalidProtocolError;
-  }
-});
-Object.defineProperty(exports, "BlockedCozyError", {
-  enumerable: true,
-  get: function get() {
-    return _urlHelper.BlockedCozyError;
-  }
-});
-Object.defineProperty(exports, "dehydrate", {
-  enumerable: true,
-  get: function get() {
-    return _dehydrateHelper.dehydrate;
-  }
-});
-
-var _urlHelper = __webpack_require__(664);
-
-var _dehydrateHelper = __webpack_require__(665);
-
-/***/ }),
-/* 664 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.rootCozyUrl = exports.InvalidCozyUrlError = exports.BlockedCozyError = exports.InvalidProtocolError = exports.InvalidRedirectLinkError = exports.deconstructRedirectLink = exports.deconstructCozyWebLinkWithSlug = exports.generateWebLink = exports.ensureFirstSlash = void 0;
-
-var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
-
-var _toArray2 = _interopRequireDefault(__webpack_require__(280));
-
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
-
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
-
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+    /**
+     * Returns the query from the store with hydrated documents.
+     *
+     * @typedef {object} HydratedQueryState
+     *
+     * @returns {HydratedQueryState}
+     */
+    value: function currentResult() {
+      return this.client.getQueryFromState(this.queryId, {
+        hydrated: (0, _get.default)(this.options, 'hydrated', true),
+        singleDocData: true
+      });
+    }
+  }, {
+    key: "fetch",
+    value: function fetch() {
+      return this.client.query(this.definition, {
+        as: this.queryId
+      });
+    }
+    /**
+     * Generates and executes a query that is offsetted by the number of documents
+     * we have in the store.
+     */
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+  }, {
+    key: "fetchMore",
+    value: function fetchMore() {
+      var rawResult = this.currentRawResult();
+      return rawResult.bookmark ? this.client.query(this.definition.offsetBookmark(rawResult.bookmark), {
+        as: this.queryId
+      }) : this.client.query(this.definition.offset(rawResult.data.length), {
+        as: this.queryId
+      });
+    }
+  }, {
+    key: "currentRawResult",
+    value: function currentRawResult() {
+      return (0, _store.getRawQueryFromState)(this.getStore().getState(), this.queryId);
+    }
+  }, {
+    key: "notifyObservers",
+    value: function notifyObservers() {
+      var _this2 = this;
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+      Object.keys(this.observers).forEach(function (id) {
+        return _this2.observers[id]();
+      });
+    }
+  }, {
+    key: "subscribeToStore",
+    value: function subscribeToStore() {
+      if (this._unsubscribeStore) {
+        throw new Error('ObservableQuery instance is already subscribed to store.');
+      }
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+      this._unsubscribeStore = this.getStore().subscribe(this.handleStoreChange);
+    }
+  }, {
+    key: "unsubscribeFromStore",
+    value: function unsubscribeFromStore() {
+      if (!this._unsubscribeStore) {
+        throw new Error('ObservableQuery instance is not subscribed to store');
+      }
 
-var _wrapNativeSuper2 = _interopRequireDefault(__webpack_require__(583));
+      this._unsubscribeStore();
+    }
+  }, {
+    key: "subscribe",
+    value: function subscribe(callback) {
+      var _this3 = this;
 
-var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
+      var callbackId = this.idCounter;
+      this.idCounter++;
+      this.observers[callbackId] = callback;
 
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+      if (Object.keys(this.observers).length === 1) {
+        this.subscribeToStore();
+      }
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+      return function () {
+        return _this3.unsubscribe(callbackId);
+      };
+    }
+  }, {
+    key: "unsubscribe",
+    value: function unsubscribe(callbackId) {
+      if (!this.observers[callbackId]) {
+        throw new Error("Cannot unsubscribe unknown callbackId ".concat(callbackId));
+      }
 
-function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
+      delete this.observers[callbackId];
 
-function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+      if (Object.keys(this.observers).length === 0) {
+        this.unsubscribeFromStore();
+        this._unsubscribeStore = null;
+      }
+    }
+  }, {
+    key: "getStore",
+    value: function getStore() {
+      return this.client.store;
+    }
+  }]);
+  return ObservableQuery;
+}();
 
-function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+exports.default = ObservableQuery;
 
-var ensureFirstSlash = function ensureFirstSlash(path) {
-  if (!path) {
-    return '/';
+function is(x, y) {
+  if (x === y) {
+    return x !== 0 || y !== 0 || 1 / x === 1 / y;
   } else {
-    return path.startsWith('/') ? path : '/' + path;
+    return x !== x && y !== y;
   }
-};
-/**
- * generateWebLink - Construct a link to a web app
- *
- * This function does not get its cozy url from a CozyClient instance so it can
- * be used to build urls that point to other Cozies than the user's own Cozy.
- * This is useful when pointing to the Cozy of the owner of a shared note for
- * example.
- *
- * @param {object} options               Object of options
- * @param {string}   options.cozyUrl       Base URL of the cozy, eg. cozy.tools or test.mycozy.cloud
- * @param {Array}    [options.searchParams]  Array of search parameters as [key, value] arrays, eg. ['username', 'bob']
- * @param {string}   [options.pathname]      Path to a specific part of the app, eg. /public
- * @param {string}   [options.hash]          Path inside the app, eg. /files/test.jpg
- * @param {string}   [options.slug]          Slug of the app
- * @param {string}   [options.subDomainType] Whether the cozy is using flat or nested subdomains. Defaults to flat.
- *
- * @returns {string} Generated URL
- */
-
-
-exports.ensureFirstSlash = ensureFirstSlash;
+}
 
-var generateWebLink = function generateWebLink(_ref) {
-  var cozyUrl = _ref.cozyUrl,
-      searchParamsOption = _ref.searchParams,
-      pathname = _ref.pathname,
-      hash = _ref.hash,
-      slug = _ref.slug,
-      subDomainType = _ref.subDomainType;
-  var searchParams = searchParamsOption || [];
-  var url = new URL(cozyUrl);
-  url.host = subDomainType === 'nested' ? "".concat(slug, ".").concat(url.host) : url.host.split('.').map(function (x, i) {
-    return i === 0 ? x + '-' + slug : x;
-  }).join('.');
-  url.pathname = ensureFirstSlash(pathname);
-  url.hash = ensureFirstSlash(hash);
+function shallowEqual(objA, objB) {
+  if (is(objA, objB)) return true;
 
-  var _iterator = _createForOfIteratorHelper(searchParams),
-      _step;
+  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
+    return false;
+  }
 
-  try {
-    for (_iterator.s(); !(_step = _iterator.n()).done;) {
-      var _step$value = (0, _slicedToArray2.default)(_step.value, 2),
-          param = _step$value[0],
-          value = _step$value[1];
+  var keysA = Object.keys(objA);
+  var keysB = Object.keys(objB);
+  if (keysA.length !== keysB.length) return false;
 
-      url.searchParams.set(param, value);
+  for (var i = 0; i < keysA.length; i++) {
+    if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
+      return false;
     }
-  } catch (err) {
-    _iterator.e(err);
-  } finally {
-    _iterator.f();
   }
 
-  return url.toString();
-};
-/**
- * Deconstruct the given link in order to retrieve useful data like Cozy's name, domain, or slug
- *
- * The given link MUST contain a slug
- *
- * @param {string} webLink - link to deconstruct. It should be a link from a Cozy and containing a slug
- * @param {import("../types").SubdomainType} [subDomainType=flat] - whether the cozy is using flat or nested subdomains.
- * @returns {import("../types").CozyLinkData} Deconstructed link
- */
+  return true;
+}
 
+/***/ }),
+/* 694 */
+/***/ (function(module, exports, __webpack_require__) {
 
-exports.generateWebLink = generateWebLink;
+"use strict";
 
-var deconstructCozyWebLinkWithSlug = function deconstructCozyWebLinkWithSlug(webLink) {
-  var subDomainType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'flat';
-  var url = new URL(webLink);
-  var slug = subDomainType === 'nested' ? url.host.split('.')[0] : url.host.split('.')[0].split('-')[1];
-  var cozyName = subDomainType === 'nested' ? url.host.split('.')[1] : url.host.split('.')[0].split('-')[0];
-  var cozyBaseDomain = url.host.split('.').slice(subDomainType === 'nested' ? 2 : 1).join('.');
-  return {
-    cozyBaseDomain: cozyBaseDomain,
-    cozyName: cozyName,
-    pathname: url.pathname,
-    hash: url.hash,
-    protocol: url.protocol,
-    searchParams: url.searchParams.toString(),
-    slug: slug
-  };
-};
 
-exports.deconstructCozyWebLinkWithSlug = deconstructCozyWebLinkWithSlug;
+var _interopRequireDefault = __webpack_require__(1);
 
-var isValidSlug = function isValidSlug(slug) {
-  return slug.match(/^[a-z0-9]+$/);
-};
-/**
- * Deconstruct the given redirect link in order to retrieve slug, pathname and hash
- *
- * @param {string} redirectLink - redirect link to deconstruct (i.e. 'drive/public/#/folder/SOME_ID')
- * @returns {import("../types").RedirectLinkData} Deconstructed link
- * @throws {InvalidRedirectLinkError} Thrown when redirect link is invalid
- */
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.CozyClient = void 0;
 
+var _inherits2 = _interopRequireDefault(__webpack_require__(480));
 
-var deconstructRedirectLink = function deconstructRedirectLink(redirectLink) {
-  var _redirectLink$split = redirectLink.split('#'),
-      _redirectLink$split2 = (0, _slicedToArray2.default)(_redirectLink$split, 2),
-      splits = _redirectLink$split2[0],
-      hash = _redirectLink$split2[1];
+var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
 
-  var _splits$split = splits.split(/\/(.*)/),
-      _splits$split2 = (0, _slicedToArray2.default)(_splits$split, 2),
-      slug = _splits$split2[0],
-      pathname = _splits$split2[1];
+var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
 
-  if (!isValidSlug(slug)) {
-    throw new InvalidRedirectLinkError(redirectLink);
-  }
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-  return {
-    slug: slug,
-    pathname: pathname,
-    hash: hash
-  };
-};
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
 
-exports.deconstructRedirectLink = deconstructRedirectLink;
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
 
-var InvalidRedirectLinkError = /*#__PURE__*/function (_Error) {
-  (0, _inherits2.default)(InvalidRedirectLinkError, _Error);
+var SnapshotObject = function SnapshotObject(attrs) {
+  (0, _classCallCheck2.default)(this, SnapshotObject);
+  Object.assign(this, attrs);
+};
 
-  var _super = _createSuper(InvalidRedirectLinkError);
+var CozyClient = /*#__PURE__*/function (_SnapshotObject) {
+  (0, _inherits2.default)(CozyClient, _SnapshotObject);
 
-  function InvalidRedirectLinkError(redirectLink) {
-    var _this;
+  var _super = _createSuper(CozyClient);
 
-    (0, _classCallCheck2.default)(this, InvalidRedirectLinkError);
-    _this = _super.call(this, "Invalid redirect link ".concat(redirectLink));
-    _this.redirectLink = redirectLink;
-    return _this;
+  function CozyClient() {
+    (0, _classCallCheck2.default)(this, CozyClient);
+    return _super.apply(this, arguments);
   }
 
-  return InvalidRedirectLinkError;
-}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
+  return CozyClient;
+}(SnapshotObject);
 
-exports.InvalidRedirectLinkError = InvalidRedirectLinkError;
+exports.CozyClient = CozyClient;
 
-var InvalidProtocolError = /*#__PURE__*/function (_Error2) {
-  (0, _inherits2.default)(InvalidProtocolError, _Error2);
+/***/ }),
+/* 695 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  var _super2 = _createSuper(InvalidProtocolError);
+var json = typeof JSON !== 'undefined' ? JSON : __webpack_require__(696);
 
-  function InvalidProtocolError(url) {
-    var _this2;
+module.exports = function (obj, opts) {
+    if (!opts) opts = {};
+    if (typeof opts === 'function') opts = { cmp: opts };
+    var space = opts.space || '';
+    if (typeof space === 'number') space = Array(space+1).join(' ');
+    var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;
+    var replacer = opts.replacer || function(key, value) { return value; };
 
-    (0, _classCallCheck2.default)(this, InvalidProtocolError);
-    _this2 = _super2.call(this, "Invalid URL protocol ".concat(url.protocol));
-    _this2.url = url;
-    return _this2;
-  }
+    var cmp = opts.cmp && (function (f) {
+        return function (node) {
+            return function (a, b) {
+                var aobj = { key: a, value: node[a] };
+                var bobj = { key: b, value: node[b] };
+                return f(aobj, bobj);
+            };
+        };
+    })(opts.cmp);
 
-  return InvalidProtocolError;
-}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
+    var seen = [];
+    return (function stringify (parent, key, node, level) {
+        var indent = space ? ('\n' + new Array(level + 1).join(space)) : '';
+        var colonSeparator = space ? ': ' : ':';
 
-exports.InvalidProtocolError = InvalidProtocolError;
+        if (node && node.toJSON && typeof node.toJSON === 'function') {
+            node = node.toJSON();
+        }
 
-var BlockedCozyError = /*#__PURE__*/function (_Error3) {
-  (0, _inherits2.default)(BlockedCozyError, _Error3);
+        node = replacer.call(parent, key, node);
 
-  var _super3 = _createSuper(BlockedCozyError);
+        if (node === undefined) {
+            return;
+        }
+        if (typeof node !== 'object' || node === null) {
+            return json.stringify(node);
+        }
+        if (isArray(node)) {
+            var out = [];
+            for (var i = 0; i < node.length; i++) {
+                var item = stringify(node, i, node[i], level+1) || json.stringify(null);
+                out.push(indent + space + item);
+            }
+            return '[' + out.join(',') + indent + ']';
+        }
+        else {
+            if (seen.indexOf(node) !== -1) {
+                if (cycles) return json.stringify('__cycle__');
+                throw new TypeError('Converting circular structure to JSON');
+            }
+            else seen.push(node);
 
-  function BlockedCozyError(url) {
-    var _this3;
+            var keys = objectKeys(node).sort(cmp && cmp(node));
+            var out = [];
+            for (var i = 0; i < keys.length; i++) {
+                var key = keys[i];
+                var value = stringify(node, key, node[key], level+1);
 
-    (0, _classCallCheck2.default)(this, BlockedCozyError);
-    _this3 = _super3.call(this, "Blocked cozy ".concat(url.toString()));
-    _this3.url = url;
-    return _this3;
-  }
+                if(!value) continue;
 
-  return BlockedCozyError;
-}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
+                var keyValue = json.stringify(key)
+                    + colonSeparator
+                    + value;
+                ;
+                out.push(indent + space + keyValue);
+            }
+            seen.splice(seen.indexOf(node), 1);
+            return '{' + out.join(',') + indent + '}';
+        }
+    })({ '': obj }, '', obj, 0);
+};
 
-exports.BlockedCozyError = BlockedCozyError;
+var isArray = Array.isArray || function (x) {
+    return {}.toString.call(x) === '[object Array]';
+};
 
-var InvalidCozyUrlError = /*#__PURE__*/function (_Error4) {
-  (0, _inherits2.default)(InvalidCozyUrlError, _Error4);
+var objectKeys = Object.keys || function (obj) {
+    var has = Object.prototype.hasOwnProperty || function () { return true };
+    var keys = [];
+    for (var key in obj) {
+        if (has.call(obj, key)) keys.push(key);
+    }
+    return keys;
+};
 
-  var _super4 = _createSuper(InvalidCozyUrlError);
 
-  function InvalidCozyUrlError(url) {
-    var _this4;
+/***/ }),
+/* 696 */
+/***/ (function(module, exports, __webpack_require__) {
 
-    (0, _classCallCheck2.default)(this, InvalidCozyUrlError);
-    _this4 = _super4.call(this, "URL ".concat(url.toString(), " does not seem to be a valid Cozy URL"));
-    _this4.url = url;
-    return _this4;
-  }
+exports.parse = __webpack_require__(697);
+exports.stringify = __webpack_require__(698);
 
-  return InvalidCozyUrlError;
-}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
-/* uri - Returns a well formed URL origin from a protocol, a hostname and a port
- *
- * If the protocol and/or port are omitted from the argument, the function will
- * default to HTTPS and omit the port in the returned origin.
- *
- * @param {object} url          Object of URL elements
- * @param {string} url.protocol Protocol to use in the origin (e.g. http)
- * @param {string} url.hostname Hostname to use in the origin (e.g. claude.mycozy.cloud)
- * @param {string} url.port     Port to use in the origin (e.g. 8080)
- *
- * @returns {string} Generated URL origin
- */
 
+/***/ }),
+/* 697 */
+/***/ (function(module, exports) {
 
-exports.InvalidCozyUrlError = InvalidCozyUrlError;
+var at, // The index of the current character
+    ch, // The current character
+    escapee = {
+        '"':  '"',
+        '\\': '\\',
+        '/':  '/',
+        b:    '\b',
+        f:    '\f',
+        n:    '\n',
+        r:    '\r',
+        t:    '\t'
+    },
+    text,
 
-var uri = function uri(_ref2) {
-  var protocol = _ref2.protocol,
-      hostname = _ref2.hostname,
-      port = _ref2.port;
-  return (protocol !== '' ? "".concat(protocol, "//") : 'https://') + hostname + (port !== '' ? ":".concat(port) : '');
-};
-/* wellKnownUrl - Returns a valid URL string to a Well Known password change page
- *
- * The built URL will point to the origin generated from the given protocol,
- * hostname and port.
- *
- * @param {object} url          Object of URL elements
- * @param {string} url.protocol Protocol to use in the origin (e.g. http)
- * @param {string} url.hostname Hostname to use in the origin (e.g. claude.mycozy.cloud)
- * @param {string} url.port     Port to use in the origin (e.g. 8080)
- *
- * @returns {string} Generated Well Known password change URL string
- */
-
-
-var wellKnownUrl = function wellKnownUrl(url) {
-  return uri(url) + '/.well-known/change-password';
-};
-/* isValidOrigin - Checks whether a given URL is a valid Cozy origin
- *
- * This method tries to fetch the Well Known change password page of the Cozy
- * supposedly at the given origin. This allows us to determine whether the given
- * origin is the root URL of a Cozy or not via the status of the response:
- * - a 200 response status means there's an actual Well Known password change
- *   page accessible from the given origin so we suppose it's a valid Cozy
- *   origin (i.e. it could be another site altogether though)
- * - a 401 response status means the pointed page requires authentication so the
- *   origin is probably pointing to a cozy-app. In that case we should consider this
- *   URL to be invalid
- * - a 503 response status with a "Blocked" reason means the pointed page is a Cozy
- *   but it is blocked. In that case we consider that the url is a valid Cozy origin
- *   but we want the method to throw as we cannot verify if the URL points to the
- *   Cozy's root or to a specifc slug. The caller is responsible to handle that exception
- * - another status means there aren't any Cozy behind to the given origin
- *
- * @param {object} url          Object of URL elements
- * @param {string} url.protocol Protocol to use in the origin (e.g. http)
- * @param {string} url.hostname Hostname to use in the origin (e.g. claude.mycozy.cloud)
- * @param {string} url.port     Port to use in the origin (e.g. 8080)
- *
- * @returns {Promise<boolean>} True if we believe there's a Cozy behind the given origin
- * @throws {InvalidCozyUrlError} Thrown when we know for sure there aren't any Cozy behind the given origin
- * @throws {BlockedCozyError} Thrown when we know for sure there is Cozy behind the given origin but it is in a "Blocked" state
- */
-
-
-var isValidOrigin = /*#__PURE__*/function () {
-  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(url) {
-    var response, status;
-    return _regenerator.default.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            _context.next = 2;
-            return fetch(wellKnownUrl(url));
-
-          case 2:
-            response = _context.sent;
-            status = response.status;
-
-            if (!(status === 404)) {
-              _context.next = 6;
-              break;
+    error = function (m) {
+        // Call error when something is wrong.
+        throw {
+            name:    'SyntaxError',
+            message: m,
+            at:      at,
+            text:    text
+        };
+    },
+    
+    next = function (c) {
+        // If a c parameter is provided, verify that it matches the current character.
+        if (c && c !== ch) {
+            error("Expected '" + c + "' instead of '" + ch + "'");
+        }
+        
+        // Get the next character. When there are no more characters,
+        // return the empty string.
+        
+        ch = text.charAt(at);
+        at += 1;
+        return ch;
+    },
+    
+    number = function () {
+        // Parse a number value.
+        var number,
+            string = '';
+        
+        if (ch === '-') {
+            string = '-';
+            next('-');
+        }
+        while (ch >= '0' && ch <= '9') {
+            string += ch;
+            next();
+        }
+        if (ch === '.') {
+            string += '.';
+            while (next() && ch >= '0' && ch <= '9') {
+                string += ch;
             }
-
-            throw new InvalidCozyUrlError(url);
-
-          case 6:
-            _context.next = 8;
-            return isResponseAboutBlockedCozy(response);
-
-          case 8:
-            if (!_context.sent) {
-              _context.next = 10;
-              break;
+        }
+        if (ch === 'e' || ch === 'E') {
+            string += ch;
+            next();
+            if (ch === '-' || ch === '+') {
+                string += ch;
+                next();
+            }
+            while (ch >= '0' && ch <= '9') {
+                string += ch;
+                next();
             }
-
-            throw new BlockedCozyError(url);
-
-          case 10:
-            return _context.abrupt("return", status === 200);
-
-          case 11:
-          case "end":
-            return _context.stop();
         }
-      }
-    }, _callee);
-  }));
+        number = +string;
+        if (!isFinite(number)) {
+            error("Bad number");
+        } else {
+            return number;
+        }
+    },
+    
+    string = function () {
+        // Parse a string value.
+        var hex,
+            i,
+            string = '',
+            uffff;
+        
+        // When parsing for string values, we must look for " and \ characters.
+        if (ch === '"') {
+            while (next()) {
+                if (ch === '"') {
+                    next();
+                    return string;
+                } else if (ch === '\\') {
+                    next();
+                    if (ch === 'u') {
+                        uffff = 0;
+                        for (i = 0; i < 4; i += 1) {
+                            hex = parseInt(next(), 16);
+                            if (!isFinite(hex)) {
+                                break;
+                            }
+                            uffff = uffff * 16 + hex;
+                        }
+                        string += String.fromCharCode(uffff);
+                    } else if (typeof escapee[ch] === 'string') {
+                        string += escapee[ch];
+                    } else {
+                        break;
+                    }
+                } else {
+                    string += ch;
+                }
+            }
+        }
+        error("Bad string");
+    },
 
-  return function isValidOrigin(_x) {
-    return _ref3.apply(this, arguments);
-  };
-}();
-/**
- * rootCozyUrl - Get the root URL of a Cozy from more precise ones
- *
- * The goal is to allow users to use any URL copied from their browser as their
- * Cozy URL rather than trying to explain to them what we expect (e.g. when
- * requesting the Cozy URL to connect an app).
- * If we can't get the root URL either because there's no Cozy or the domain
- * does not exist or anything else, we'll throw an InvalidCozyUrlError.
- * Also, since we communicate only via HTTP or HTTPS, we'll throw an
- * InvalidProtocolError if any other protocol is used.
- *
- * This function expects a fully qualified URL thus with a protocol and a valid
- * hostname. If your application accepts Cozy intances as input (e.g. `claude`
- * when the Cozy can be found at `https://claude.mycozy.cloud`), it is your
- * responsibility to add the appropriate domain to the hostname before calling
- * this function.
- *
- * Examples:
- *
- * 1. getting the root URL when your user gives you its instance name
- *
- *   const userInput = 'claude'
- *   const rootUrl = await rootCozyUrl(new URL(`https://${userInput}.mycozy.cloud`))
- *   // → returns new URL('https://claude.mycozy.cloud')
- *
- * 2. getting the root URL when your user gives you a Cozy Drive URL
- *
- *   const userInput = 'https://claude-drive.mycozy.cloud/#/folder/io.cozy.files.root-dir'
- *   const rootUrl = await rootCozyUrl(new URL(userInput))
- *   // → returns new URL('https://claude.mycozy.cloud')
- *
- * 3. getting the root URL when the Cozy uses nested sub-domains
- *
- *   const userInput = 'http://photos.camille.nimbus.com:8080/#/album/1234567890'
- *   const rootCozyUrl = await rootCozyUrl(new URL(userInput))
- *   // → returns new URL('http://camille.nimbus.com:8080')
- *
- * @param {URL} url The URL from which we'll try to get the root Cozy URL
- *
- * @returns {Promise<URL>} The root Cozy URL
- */
+    white = function () {
 
+// Skip whitespace.
 
-var rootCozyUrl = /*#__PURE__*/function () {
-  var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(url) {
-    var _url$hostname$split, _url$hostname$split2, subDomain, domain, _hostname, hostname;
+        while (ch && ch <= ' ') {
+            next();
+        }
+    },
 
-    return _regenerator.default.wrap(function _callee2$(_context2) {
-      while (1) {
-        switch (_context2.prev = _context2.next) {
-          case 0:
-            if (['http:', 'https:'].includes(url.protocol)) {
-              _context2.next = 2;
-              break;
-            }
+    word = function () {
 
-            throw new InvalidProtocolError(url);
+// true, false, or null.
 
-          case 2:
-            _context2.next = 4;
-            return isValidOrigin(url);
+        switch (ch) {
+        case 't':
+            next('t');
+            next('r');
+            next('u');
+            next('e');
+            return true;
+        case 'f':
+            next('f');
+            next('a');
+            next('l');
+            next('s');
+            next('e');
+            return false;
+        case 'n':
+            next('n');
+            next('u');
+            next('l');
+            next('l');
+            return null;
+        }
+        error("Unexpected '" + ch + "'");
+    },
 
-          case 4:
-            if (!_context2.sent) {
-              _context2.next = 6;
-              break;
-            }
+    value,  // Place holder for the value function.
 
-            return _context2.abrupt("return", url);
+    array = function () {
 
-          case 6:
-            if (!/^[^.-][^.]+-[^.-]+\./.test(url.hostname)) {
-              _context2.next = 13;
-              break;
-            }
+// Parse an array value.
 
-            _url$hostname$split = url.hostname.split('.'), _url$hostname$split2 = (0, _toArray2.default)(_url$hostname$split), subDomain = _url$hostname$split2[0], domain = _url$hostname$split2.slice(1);
-            _hostname = [subDomain.replace(/-.+/, '')].concat((0, _toConsumableArray2.default)(domain)).join('.');
-            _context2.next = 11;
-            return isValidOrigin({
-              protocol: url.protocol,
-              hostname: _hostname,
-              port: url.port
-            });
+        var array = [];
 
-          case 11:
-            if (!_context2.sent) {
-              _context2.next = 13;
-              break;
+        if (ch === '[') {
+            next('[');
+            white();
+            if (ch === ']') {
+                next(']');
+                return array;   // empty array
             }
-
-            return _context2.abrupt("return", new URL(uri({
-              protocol: url.protocol,
-              hostname: _hostname,
-              port: url.port
-            })));
-
-          case 13:
-            // Try to remove the first sub-domain in case its a nested app name
-            // eslint-disable-next-line no-unused-vars
-            hostname = url.hostname.split('.').splice(1).join('.');
-            _context2.next = 16;
-            return isValidOrigin({
-              protocol: url.protocol,
-              hostname: hostname,
-              port: url.port
-            });
-
-          case 16:
-            if (!_context2.sent) {
-              _context2.next = 18;
-              break;
+            while (ch) {
+                array.push(value());
+                white();
+                if (ch === ']') {
+                    next(']');
+                    return array;
+                }
+                next(',');
+                white();
             }
-
-            return _context2.abrupt("return", new URL(uri({
-              protocol: url.protocol,
-              hostname: hostname,
-              port: url.port
-            })));
-
-          case 18:
-            throw new InvalidCozyUrlError(url);
-
-          case 19:
-          case "end":
-            return _context2.stop();
         }
-      }
-    }, _callee2);
-  }));
-
-  return function rootCozyUrl(_x2) {
-    return _ref4.apply(this, arguments);
-  };
-}();
-/**
- * Check if the given response is about a Cozy being blocked
- *
- * @param {Response} response - Fetch API response
- * @returns {Promise<boolean>} true if the response is about a Cozy being blocked, false otherwize
- */
+        error("Bad array");
+    },
 
+    object = function () {
 
-exports.rootCozyUrl = rootCozyUrl;
+// Parse an object value.
 
-var isResponseAboutBlockedCozy = /*#__PURE__*/function () {
-  var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(response) {
-    var _data$some;
+        var key,
+            object = {};
 
-    var contentType, isJson, data;
-    return _regenerator.default.wrap(function _callee3$(_context3) {
-      while (1) {
-        switch (_context3.prev = _context3.next) {
-          case 0:
-            if (!(response.status !== 503)) {
-              _context3.next = 2;
-              break;
+        if (ch === '{') {
+            next('{');
+            white();
+            if (ch === '}') {
+                next('}');
+                return object;   // empty object
+            }
+            while (ch) {
+                key = string();
+                white();
+                next(':');
+                if (Object.hasOwnProperty.call(object, key)) {
+                    error('Duplicate key "' + key + '"');
+                }
+                object[key] = value();
+                white();
+                if (ch === '}') {
+                    next('}');
+                    return object;
+                }
+                next(',');
+                white();
             }
+        }
+        error("Bad object");
+    };
 
-            return _context3.abrupt("return", false);
+value = function () {
 
-          case 2:
-            contentType = response.headers.get('content-type');
-            isJson = contentType && contentType.indexOf('json') >= 0;
-            _context3.next = 6;
-            return isJson ? response.json() : response.text();
+// Parse a JSON value. It could be an object, an array, a string, a number,
+// or a word.
 
-          case 6:
-            data = _context3.sent;
+    white();
+    switch (ch) {
+    case '{':
+        return object();
+    case '[':
+        return array();
+    case '"':
+        return string();
+    case '-':
+        return number();
+    default:
+        return ch >= '0' && ch <= '9' ? number() : word();
+    }
+};
 
-            if (!(data !== null && data !== void 0 && (_data$some = data.some) !== null && _data$some !== void 0 && _data$some.call(data, function (reason) {
-              return reason.title === 'Blocked';
-            }))) {
-              _context3.next = 9;
-              break;
-            }
+// Return the json_parse function. It will have access to all of the above
+// functions and variables.
 
-            return _context3.abrupt("return", true);
+module.exports = function (source, reviver) {
+    var result;
+    
+    text = source;
+    at = 0;
+    ch = ' ';
+    result = value();
+    white();
+    if (ch) {
+        error("Syntax error");
+    }
 
-          case 9:
-            return _context3.abrupt("return", false);
+    // If there is a reviver function, we recursively walk the new structure,
+    // passing each name/value pair to the reviver function for possible
+    // transformation, starting with a temporary root object that holds the result
+    // in an empty key. If there is not a reviver function, we simply return the
+    // result.
 
-          case 10:
-          case "end":
-            return _context3.stop();
+    return typeof reviver === 'function' ? (function walk(holder, key) {
+        var k, v, value = holder[key];
+        if (value && typeof value === 'object') {
+            for (k in value) {
+                if (Object.prototype.hasOwnProperty.call(value, k)) {
+                    v = walk(value, k);
+                    if (v !== undefined) {
+                        value[k] = v;
+                    } else {
+                        delete value[k];
+                    }
+                }
+            }
         }
-      }
-    }, _callee3);
-  }));
+        return reviver.call(holder, key, value);
+    }({'': result}, '')) : result;
+};
 
-  return function isResponseAboutBlockedCozy(_x3) {
-    return _ref5.apply(this, arguments);
-  };
-}();
 
 /***/ }),
-/* 665 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
+/* 698 */
+/***/ (function(module, exports) {
 
-var _interopRequireDefault = __webpack_require__(1);
+var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+    escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+    gap,
+    indent,
+    meta = {    // table of character substitutions
+        '\b': '\\b',
+        '\t': '\\t',
+        '\n': '\\n',
+        '\f': '\\f',
+        '\r': '\\r',
+        '"' : '\\"',
+        '\\': '\\\\'
+    },
+    rep;
+
+function quote(string) {
+    // If the string contains no control characters, no quote characters, and no
+    // backslash characters, then we can safely slap some quotes around it.
+    // Otherwise we must also replace the offending characters with safe escape
+    // sequences.
+    
+    escapable.lastIndex = 0;
+    return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
+        var c = meta[a];
+        return typeof c === 'string' ? c :
+            '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+    }) + '"' : '"' + string + '"';
+}
+
+function str(key, holder) {
+    // Produce a string from holder[key].
+    var i,          // The loop counter.
+        k,          // The member key.
+        v,          // The member value.
+        length,
+        mind = gap,
+        partial,
+        value = holder[key];
+    
+    // If the value has a toJSON method, call it to obtain a replacement value.
+    if (value && typeof value === 'object' &&
+            typeof value.toJSON === 'function') {
+        value = value.toJSON(key);
+    }
+    
+    // If we were called with a replacer function, then call the replacer to
+    // obtain a replacement value.
+    if (typeof rep === 'function') {
+        value = rep.call(holder, key, value);
+    }
+    
+    // What happens next depends on the value's type.
+    switch (typeof value) {
+        case 'string':
+            return quote(value);
+        
+        case 'number':
+            // JSON numbers must be finite. Encode non-finite numbers as null.
+            return isFinite(value) ? String(value) : 'null';
+        
+        case 'boolean':
+        case 'null':
+            // If the value is a boolean or null, convert it to a string. Note:
+            // typeof null does not produce 'null'. The case is included here in
+            // the remote chance that this gets fixed someday.
+            return String(value);
+            
+        case 'object':
+            if (!value) return 'null';
+            gap += indent;
+            partial = [];
+            
+            // Array.isArray
+            if (Object.prototype.toString.apply(value) === '[object Array]') {
+                length = value.length;
+                for (i = 0; i < length; i += 1) {
+                    partial[i] = str(i, value) || 'null';
+                }
+                
+                // Join all of the elements together, separated with commas, and
+                // wrap them in brackets.
+                v = partial.length === 0 ? '[]' : gap ?
+                    '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' :
+                    '[' + partial.join(',') + ']';
+                gap = mind;
+                return v;
+            }
+            
+            // If the replacer is an array, use it to select the members to be
+            // stringified.
+            if (rep && typeof rep === 'object') {
+                length = rep.length;
+                for (i = 0; i < length; i += 1) {
+                    k = rep[i];
+                    if (typeof k === 'string') {
+                        v = str(k, value);
+                        if (v) {
+                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
+                        }
+                    }
+                }
+            }
+            else {
+                // Otherwise, iterate through all of the keys in the object.
+                for (k in value) {
+                    if (Object.prototype.hasOwnProperty.call(value, k)) {
+                        v = str(k, value);
+                        if (v) {
+                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
+                        }
+                    }
+                }
+            }
+            
+        // Join all of the member texts together, separated with commas,
+        // and wrap them in braces.
+
+        v = partial.length === 0 ? '{}' : gap ?
+            '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' :
+            '{' + partial.join(',') + '}';
+        gap = mind;
+        return v;
+    }
+}
+
+module.exports = function (value, replacer, space) {
+    var i;
+    gap = '';
+    indent = '';
+    
+    // If the space parameter is a number, make an indent string containing that
+    // many spaces.
+    if (typeof space === 'number') {
+        for (i = 0; i < space; i += 1) {
+            indent += ' ';
+        }
+    }
+    // If the space parameter is a string, it will be used as the indent string.
+    else if (typeof space === 'string') {
+        indent = space;
+    }
+
+    // If there is a replacer, it must be a function or an array.
+    // Otherwise, throw an error.
+    rep = replacer;
+    if (replacer && typeof replacer !== 'function'
+    && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) {
+        throw new Error('JSON.stringify');
+    }
+    
+    // Make a fake root object containing our value under the key of ''.
+    // Return the result of stringifying the value.
+    return str('', {'': value});
+};
+
+
+/***/ }),
+/* 699 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _interopRequireDefault = __webpack_require__(1);
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.dehydrate = void 0;
+exports.default = void 0;
 
-var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-var _associations = __webpack_require__(625);
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-var dehydrate = function dehydrate(document) {
-  var dehydrated = Object.entries(document).reduce(function (documentArg, _ref) {
-    var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
-        key = _ref2[0],
-        value = _ref2[1];
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-    var document = documentArg;
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-    if (!(value instanceof _associations.Association)) {
-      document[key] = value; // @ts-ignore
-    } else if (value.dehydrate) {
-      // @ts-ignore
-      document = value.dehydrate(document);
-    } else {
-      throw new Error("Association on key ".concat(key, " should have a dehydrate method"));
-    }
+/**
+ * Caches promises while they are pending
+ * Serves to dedupe equal queries requested at the same time
+ */
+var PromiseCache = /*#__PURE__*/function () {
+  function PromiseCache() {
+    (0, _classCallCheck2.default)(this, PromiseCache);
 
-    return document;
-  }, {});
-  return dehydrated;
-};
+    /**
+     * Holds pending promises
+     *
+     * @type {Object.<string, Promise>}
+     */
+    this.pending = {};
+  }
+  /**
+   * Tries to find a pending promise corresponding to the result of keyFunc
+   * - If not found, promiseFunc is executed and the resulting promise is stored while it's pending
+   * - If found, it is immediately returned
+   *
+   * @template T
+   * @param  {function(): Promise<T>} promiseFunc - Not executed only if an "equal" promise is already pending.
+   * @param  {function(): string} keyFunc - Returns a key to find in cache to find a pending promise.
+   * @returns {Promise<T>}
+   */
 
-exports.dehydrate = dehydrate;
+
+  (0, _createClass2.default)(PromiseCache, [{
+    key: "exec",
+    value: function () {
+      var _exec = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(promiseFunc, keyFunc) {
+        var key, already, prom, response;
+        return _regenerator.default.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                key = keyFunc();
+                already = this.pending[key];
+
+                if (already) {
+                  prom = already;
+                } else {
+                  prom = promiseFunc();
+                  this.pending[key] = prom;
+                }
+
+                _context.prev = 3;
+                _context.next = 6;
+                return prom;
+
+              case 6:
+                response = _context.sent;
+                return _context.abrupt("return", response);
+
+              case 8:
+                _context.prev = 8;
+                this.pending[key] = null;
+                return _context.finish(8);
+
+              case 11:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this, [[3,, 8, 11]]);
+      }));
+
+      function exec(_x, _x2) {
+        return _exec.apply(this, arguments);
+      }
+
+      return exec;
+    }()
+    /**
+     *
+     * @param {function(): string} keyFunc - Returns a key to find in cache to find a pending promise.
+     * @returns {Promise | null}
+     */
+
+  }, {
+    key: "get",
+    value: function get(keyFunc) {
+      var key = keyFunc();
+      var already = this.pending[key];
+      if (already) return already;
+      return null;
+    }
+  }]);
+  return PromiseCache;
+}();
+
+var _default = PromiseCache;
+exports.default = _default;
 
 /***/ }),
-/* 666 */
+/* 700 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -107444,12018 +102130,5796 @@ var _interopRequireDefault = __webpack_require__(1);
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.authFunction = exports.authenticateWithCordova = void 0;
+exports.certifyFlagship = void 0;
 
 var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-var _const = __webpack_require__(619);
-
-var _cozyDeviceHelper = __webpack_require__(667);
+var _CozyClient = _interopRequireDefault(__webpack_require__(279));
 
-/* global prompt */
+var _storeAttestation = __webpack_require__(701);
 
 /**
- * @type {import("../types").CordovaWindow}
- */
-// @ts-ignore
-var win = typeof window !== 'undefined' ? window : null;
-/**
- * Open a SafariView Controller and resolve with the URL containing the token
+ * Request a challenge from the Stack that can be used to request the app attestation from the app store
  *
- * @param {string} url - Url containing access_code and state
- * @returns {Promise}
+ * @param {CozyClient} client - the CozyClient instance
+ * @returns {Promise<string>} - the Nonce string returned by the stack
  */
+var getStackChallenge = /*#__PURE__*/function () {
+  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client) {
+    var stackClient, result;
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            _context.prev = 0;
+            stackClient = client.getStackClient();
+            _context.next = 4;
+            return stackClient.fetchJSON('POST', "/auth/clients/".concat(stackClient.oauthOptions.clientID, "/challenge"), null, {
+              headers: {
+                Authorization: stackClient.registrationAccessTokenToAuthHeader()
+              }
+            });
 
-var authenticateWithSafari = function authenticateWithSafari(url) {
-  return new Promise(function (resolve, reject) {
-    win.SafariViewController.show({
-      url: url,
-      transition: 'curl' // (this only works in iOS 9.1/9.2 and lower) unless animated is false you can choose from: curl, flip, fade, slide (default)
-      // enterReaderModeIfAvailable: readerMode, // default false
-      // tintColor: "#00ffff", // default is ios blue
-      // barColor: "#0000ff", // on iOS 10+ you can change the background color as well
-      // controlTintColor: "#ffffff" // on iOS 10+ you can override the default tintColor
-
-    }, // this success handler will be invoked for the lifecycle events 'opened', 'loaded' and 'closed'
-    function (result) {
-      if (result.event === 'closed') {
-        reject(new Error(_const.REGISTRATION_ABORT));
-      }
-    }, function (error) {
-      console.log('KO: ' + error);
-      reject(new Error(_const.REGISTRATION_ABORT));
-    });
-    var handle = win.handleOpenURL;
+          case 4:
+            result = _context.sent;
+            return _context.abrupt("return", result.nonce);
 
-    win.handleOpenURL = function (url) {
-      win.SafariViewController.hide();
-      resolve(url);
+          case 8:
+            _context.prev = 8;
+            _context.t0 = _context["catch"](0);
+            throw new Error('[FLAGSHIP_CERTIFICATION] Something went wrong while requesting a challenge from CozyStack:\n' + _context.t0.message);
 
-      if (handle) {
-        win.handleOpenURL = handle;
+          case 11:
+          case "end":
+            return _context.stop();
+        }
       }
-    };
-  });
-};
+    }, _callee, null, [[0, 8]]);
+  }));
+
+  return function getStackChallenge(_x) {
+    return _ref.apply(this, arguments);
+  };
+}();
 /**
- * Opens an InAppBrowser and resolves with the URL containing the token
+ * Give the app attestation to the Stack
  *
- * @param {string} url - Url containing access_code and state
- * @returns {Promise}
+ * @param {import("./typedefs").AttestationResult} appAttestation - the app attestation that was returned by the app store
+ * @param {string} nonce - the Nonce string retrieved from the stack
+ * @param {CozyClient} client - the CozyClient instance
  */
 
 
-var authenticateWithInAppBrowser = function authenticateWithInAppBrowser(url) {
-  return new Promise(function (resolve, reject) {
-    var target = '_blank';
-    var options = 'clearcache=yes,zoom=no';
-    var inAppBrowser = win.cordova.InAppBrowser.open(url, target, options);
+var giveAppAttestationToStack = /*#__PURE__*/function () {
+  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(appAttestation, nonce, client) {
+    var platform, attestation, keyId, stackClient;
+    return _regenerator.default.wrap(function _callee2$(_context2) {
+      while (1) {
+        switch (_context2.prev = _context2.next) {
+          case 0:
+            _context2.prev = 0;
+            platform = appAttestation.platform, attestation = appAttestation.attestation, keyId = appAttestation.keyId;
+            stackClient = client.getStackClient();
+            _context2.next = 5;
+            return stackClient.fetchJSON('POST', "/auth/clients/".concat(stackClient.oauthOptions.clientID, "/attestation"), {
+              platform: platform,
+              attestation: attestation,
+              challenge: nonce,
+              keyId: keyId
+            }, {
+              headers: {
+                Authorization: stackClient.registrationAccessTokenToAuthHeader()
+              }
+            });
 
-    var removeListener = function removeListener() {
-      inAppBrowser.removeEventListener('loadstart', onLoadStart);
-      inAppBrowser.removeEventListener('exit', onExit);
-    };
+          case 5:
+            _context2.next = 10;
+            break;
 
-    var onLoadStart = function onLoadStart(_ref) {
-      var url = _ref.url;
-      var accessCode = /\?access_code=(.+)$/.test(url);
-      var state = /\?state=(.+)$/.test(url);
+          case 7:
+            _context2.prev = 7;
+            _context2.t0 = _context2["catch"](0);
+            throw new Error('[FLAGSHIP_CERTIFICATION] Something went wrong while giving attestation to CozyStack:\n' + _context2.t0.message);
 
-      if (accessCode || state) {
-        resolve(url);
-        removeListener();
-        inAppBrowser.close();
+          case 10:
+          case "end":
+            return _context2.stop();
+        }
       }
-    };
+    }, _callee2, null, [[0, 7]]);
+  }));
 
-    var onExit = function onExit() {
-      reject(new Error(_const.REGISTRATION_ABORT));
-      removeListener();
-      inAppBrowser.close();
-    };
+  return function giveAppAttestationToStack(_x2, _x3, _x4) {
+    return _ref2.apply(this, arguments);
+  };
+}();
+/**
+ * Verify app's identity and integrity so the Stack can trust it
+ * Verification is done on Stack side by using information from the app's store (Google Play or Apple AppStore)
+ *
+ * @param {import("./typedefs").CertificationConfig} certificationConfig - the required configuration to access the stores API
+ * @param {CozyClient} client - the CozyClient instance
+ */
 
-    inAppBrowser.addEventListener('loadstart', onLoadStart);
-    inAppBrowser.addEventListener('exit', onExit);
-  });
-};
 
-var authenticateWithCordova = /*#__PURE__*/function () {
-  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(url) {
-    return _regenerator.default.wrap(function _callee$(_context) {
+var certifyFlagship = /*#__PURE__*/function () {
+  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(certificationConfig, client) {
+    var stackChallengeNonce, appAttestation;
+    return _regenerator.default.wrap(function _callee3$(_context3) {
       while (1) {
-        switch (_context.prev = _context.next) {
+        switch (_context3.prev = _context3.next) {
           case 0:
-            _context.t0 = (0, _cozyDeviceHelper.isIOSApp)();
-
-            if (!_context.t0) {
-              _context.next = 5;
+            if (certificationConfig) {
+              _context3.next = 2;
               break;
             }
 
-            _context.next = 4;
-            return (0, _cozyDeviceHelper.hasSafariPlugin)();
+            throw new Error('[FLAGSHIP_CERTIFICATION] Certification configuration is not set');
 
-          case 4:
-            _context.t0 = _context.sent;
+          case 2:
+            _context3.prev = 2;
+            _context3.next = 5;
+            return getStackChallenge(client);
 
           case 5:
-            if (!_context.t0) {
-              _context.next = 9;
-              break;
-            }
-
-            return _context.abrupt("return", authenticateWithSafari(url));
+            stackChallengeNonce = _context3.sent;
+            _context3.next = 8;
+            return (0, _storeAttestation.getAppAttestationFromStore)(stackChallengeNonce, certificationConfig);
 
-          case 9:
-            if (!(0, _cozyDeviceHelper.hasInAppBrowserPlugin)()) {
-              _context.next = 13;
-              break;
-            }
+          case 8:
+            appAttestation = _context3.sent;
+            _context3.next = 11;
+            return giveAppAttestationToStack(appAttestation, stackChallengeNonce, client);
 
-            return _context.abrupt("return", authenticateWithInAppBrowser(url));
+          case 11:
+            _context3.next = 17;
+            break;
 
           case 13:
-            /**
-             * for dev purpose:
-             * In oauth workflow, the server displays an authorization page
-             * User must accept to give permission then the server gives an url
-             * with query parameters used by cozy-client-js to initialize itself.
-             *
-             * This hack let developers open the authorization page in a new tab
-             * then get the "access_code" url and paste it in the prompt to let the
-             * application initialize and redirect to other pages.
-             */
-            console.log(url); // Useful for dev (see above).
-
-            return _context.abrupt("return", new Promise(function (resolve) {
-              setTimeout(function () {
-                var token = prompt('Paste the url here:');
-                resolve(token);
-              }, 5000);
-            }));
+            _context3.prev = 13;
+            _context3.t0 = _context3["catch"](2);
+            console.warn("[FLAGSHIP_CERTIFICATION] Certification for URI \"".concat(client.stackClient.uri, "\" failed but the cozy-stack will continue with 2FA certification"));
+            console.warn(_context3.t0.message);
 
-          case 15:
+          case 17:
           case "end":
-            return _context.stop();
+            return _context3.stop();
         }
       }
-    }, _callee);
+    }, _callee3, null, [[2, 13]]);
   }));
 
-  return function authenticateWithCordova(_x) {
-    return _ref2.apply(this, arguments);
+  return function certifyFlagship(_x5, _x6) {
+    return _ref3.apply(this, arguments);
   };
 }();
 
-exports.authenticateWithCordova = authenticateWithCordova;
-var authFunction = authenticateWithCordova;
-exports.authFunction = authFunction;
+exports.certifyFlagship = certifyFlagship;
 
 /***/ }),
-/* 667 */
+/* 701 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
+var _interopRequireDefault = __webpack_require__(1);
+
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-Object.defineProperty(exports, "checkApp", {
-  enumerable: true,
-  get: function get() {
-    return _apps.checkApp;
-  }
-});
-Object.defineProperty(exports, "getDeviceName", {
-  enumerable: true,
-  get: function get() {
-    return _device.getDeviceName;
-  }
-});
-Object.defineProperty(exports, "getFlagshipMetadata", {
-  enumerable: true,
-  get: function get() {
-    return _flagship.getFlagshipMetadata;
-  }
-});
-Object.defineProperty(exports, "getPlatform", {
-  enumerable: true,
-  get: function get() {
-    return _platform.getPlatform;
-  }
-});
-Object.defineProperty(exports, "hasDevicePlugin", {
-  enumerable: true,
-  get: function get() {
-    return _plugins.hasDevicePlugin;
-  }
-});
-Object.defineProperty(exports, "hasInAppBrowserPlugin", {
-  enumerable: true,
-  get: function get() {
-    return _plugins.hasInAppBrowserPlugin;
-  }
-});
-Object.defineProperty(exports, "hasNetworkInformationPlugin", {
-  enumerable: true,
-  get: function get() {
-    return _plugins.hasNetworkInformationPlugin;
-  }
-});
-Object.defineProperty(exports, "hasSafariPlugin", {
-  enumerable: true,
-  get: function get() {
-    return _plugins.hasSafariPlugin;
-  }
-});
-Object.defineProperty(exports, "isAndroid", {
-  enumerable: true,
-  get: function get() {
-    return _platform.isAndroid;
-  }
-});
-Object.defineProperty(exports, "isAndroidApp", {
-  enumerable: true,
-  get: function get() {
-    return _platform.isAndroidApp;
-  }
-});
-Object.defineProperty(exports, "isCordova", {
-  enumerable: true,
-  get: function get() {
-    return _cordova.isCordova;
-  }
-});
-Object.defineProperty(exports, "isFlagshipApp", {
-  enumerable: true,
-  get: function get() {
-    return _flagship.isFlagshipApp;
-  }
-});
-Object.defineProperty(exports, "isIOS", {
-  enumerable: true,
-  get: function get() {
-    return _platform.isIOS;
-  }
-});
-Object.defineProperty(exports, "isIOSApp", {
-  enumerable: true,
-  get: function get() {
-    return _platform.isIOSApp;
-  }
-});
-Object.defineProperty(exports, "isMobile", {
-  enumerable: true,
-  get: function get() {
-    return _platform.isMobile;
-  }
-});
-Object.defineProperty(exports, "isMobileApp", {
-  enumerable: true,
-  get: function get() {
-    return _platform.isMobileApp;
-  }
-});
-Object.defineProperty(exports, "isWebApp", {
-  enumerable: true,
-  get: function get() {
-    return _platform.isWebApp;
-  }
-});
-Object.defineProperty(exports, "nativeLinkOpen", {
-  enumerable: true,
-  get: function get() {
-    return _link.nativeLinkOpen;
-  }
-});
-Object.defineProperty(exports, "openDeeplinkOrRedirect", {
-  enumerable: true,
-  get: function get() {
-    return _deeplink.openDeeplinkOrRedirect;
-  }
-});
-Object.defineProperty(exports, "startApp", {
-  enumerable: true,
-  get: function get() {
-    return _apps.startApp;
-  }
-});
-
-var _platform = __webpack_require__(668);
-
-var _device = __webpack_require__(670);
+exports.getAppAttestationFromStore = void 0;
 
-var _apps = __webpack_require__(680);
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-var _plugins = __webpack_require__(679);
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-var _cordova = __webpack_require__(669);
+/**
+ * Retrieve the app's attestation from the app's store
+ * /!\ This is a mock implementation that should never be called
+ *
+ * @param {string} nonce - the Nonce string retrieved from the stack
+ * @param {import("./typedefs").CertificationConfig} certificationConfig - Configuration to access the stores certification API
+ * @returns {Promise<import("./typedefs").AttestationResult>} the app's attestation
+ */
+var validateAppMock = /*#__PURE__*/function () {
+  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(nonce, certificationConfig) {
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            throw new Error("getAppAttestationFromStore can only be called from a React Native container");
 
-var _link = __webpack_require__(681);
+          case 1:
+          case "end":
+            return _context.stop();
+        }
+      }
+    }, _callee);
+  }));
 
-var _deeplink = __webpack_require__(682);
+  return function validateAppMock(_x, _x2) {
+    return _ref.apply(this, arguments);
+  };
+}();
 
-var _flagship = __webpack_require__(683);
+var getAppAttestationFromStore = validateAppMock;
+exports.getAppAttestationFromStore = getAppAttestationFromStore;
 
 /***/ }),
-/* 668 */
+/* 702 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
+var createFlow = __webpack_require__(703);
 
+/**
+ * Creates a function that returns the result of invoking the given functions
+ * with the `this` binding of the created function, where each successive
+ * invocation is supplied the return value of the previous.
+ *
+ * @static
+ * @memberOf _
+ * @since 3.0.0
+ * @category Util
+ * @param {...(Function|Function[])} [funcs] The functions to invoke.
+ * @returns {Function} Returns the new composite function.
+ * @see _.flowRight
+ * @example
+ *
+ * function square(n) {
+ *   return n * n;
+ * }
+ *
+ * var addSquare = _.flow([_.add, square]);
+ * addSquare(1, 2);
+ * // => 9
+ */
+var flow = createFlow();
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.isWebApp = exports.isMobileApp = exports.isMobile = exports.isIOSApp = exports.isIOS = exports.isAndroidApp = exports.isAndroid = exports.getPlatform = void 0;
+module.exports = flow;
 
-var _cordova = __webpack_require__(669);
 
-var ANDROID_PLATFORM = 'android';
-var IOS_PLATFORM = 'ios';
-var WEB_PLATFORM = 'web';
+/***/ }),
+/* 703 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var getPlatform = function getPlatform() {
-  return (0, _cordova.isCordova)() ? window.cordova.platformId : WEB_PLATFORM;
-};
+var LodashWrapper = __webpack_require__(704),
+    flatRest = __webpack_require__(530),
+    getData = __webpack_require__(706),
+    getFuncName = __webpack_require__(708),
+    isArray = __webpack_require__(324),
+    isLaziable = __webpack_require__(710);
 
-exports.getPlatform = getPlatform;
+/** Error message constants. */
+var FUNC_ERROR_TEXT = 'Expected a function';
 
-var isPlatform = function isPlatform(platform) {
-  return getPlatform() === platform;
-};
+/** Used to compose bitmasks for function metadata. */
+var WRAP_CURRY_FLAG = 8,
+    WRAP_PARTIAL_FLAG = 32,
+    WRAP_ARY_FLAG = 128,
+    WRAP_REARG_FLAG = 256;
 
-var isIOSApp = function isIOSApp() {
-  return isPlatform(IOS_PLATFORM);
-};
+/**
+ * Creates a `_.flow` or `_.flowRight` function.
+ *
+ * @private
+ * @param {boolean} [fromRight] Specify iterating from right to left.
+ * @returns {Function} Returns the new flow function.
+ */
+function createFlow(fromRight) {
+  return flatRest(function(funcs) {
+    var length = funcs.length,
+        index = length,
+        prereq = LodashWrapper.prototype.thru;
 
-exports.isIOSApp = isIOSApp;
+    if (fromRight) {
+      funcs.reverse();
+    }
+    while (index--) {
+      var func = funcs[index];
+      if (typeof func != 'function') {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
+        var wrapper = new LodashWrapper([], true);
+      }
+    }
+    index = wrapper ? index : length;
+    while (++index < length) {
+      func = funcs[index];
 
-var isAndroidApp = function isAndroidApp() {
-  return isPlatform(ANDROID_PLATFORM);
-};
+      var funcName = getFuncName(func),
+          data = funcName == 'wrapper' ? getData(func) : undefined;
 
-exports.isAndroidApp = isAndroidApp;
+      if (data && isLaziable(data[0]) &&
+            data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
+            !data[4].length && data[9] == 1
+          ) {
+        wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
+      } else {
+        wrapper = (func.length == 1 && isLaziable(func))
+          ? wrapper[funcName]()
+          : wrapper.thru(func);
+      }
+    }
+    return function() {
+      var args = arguments,
+          value = args[0];
 
-var isWebApp = function isWebApp() {
-  return isPlatform(WEB_PLATFORM);
-};
+      if (wrapper && args.length == 1 && isArray(value)) {
+        return wrapper.plant(value).value();
+      }
+      var index = 0,
+          result = length ? funcs[index].apply(this, args) : value;
 
-exports.isWebApp = isWebApp;
+      while (++index < length) {
+        result = funcs[index].call(this, result);
+      }
+      return result;
+    };
+  });
+}
 
-var isMobileApp = function isMobileApp() {
-  return (0, _cordova.isCordova)();
-}; // return if is on an Android Device (native or browser)
+module.exports = createFlow;
 
 
-exports.isMobileApp = isMobileApp;
+/***/ }),
+/* 704 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var isAndroid = function isAndroid() {
-  return window.navigator.userAgent && window.navigator.userAgent.indexOf('Android') >= 0;
-}; // return if is on an iOS Device (native or browser)
+var baseCreate = __webpack_require__(474),
+    baseLodash = __webpack_require__(705);
 
+/**
+ * The base constructor for creating `lodash` wrapper objects.
+ *
+ * @private
+ * @param {*} value The value to wrap.
+ * @param {boolean} [chainAll] Enable explicit method chain sequences.
+ */
+function LodashWrapper(value, chainAll) {
+  this.__wrapped__ = value;
+  this.__actions__ = [];
+  this.__chain__ = !!chainAll;
+  this.__index__ = 0;
+  this.__values__ = undefined;
+}
 
-exports.isAndroid = isAndroid;
+LodashWrapper.prototype = baseCreate(baseLodash.prototype);
+LodashWrapper.prototype.constructor = LodashWrapper;
 
-var isIOS = function isIOS() {
-  return window.navigator.userAgent && /iPad|iPhone|iPod/.test(window.navigator.userAgent);
-}; // isMobile checks if the user is on a smartphone : native app or browser
+module.exports = LodashWrapper;
 
 
-exports.isIOS = isIOS;
+/***/ }),
+/* 705 */
+/***/ (function(module, exports) {
 
-var isMobile = function isMobile() {
-  return isAndroid() || isIOS();
-};
+/**
+ * The function whose prototype chain sequence wrappers inherit from.
+ *
+ * @private
+ */
+function baseLodash() {
+  // No operation performed.
+}
+
+module.exports = baseLodash;
 
-exports.isMobile = isMobile;
 
 /***/ }),
-/* 669 */
+/* 706 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.isCordova = void 0;
+var metaMap = __webpack_require__(707),
+    noop = __webpack_require__(431);
 
-// cordova
-var isCordova = function isCordova() {
-  return typeof window !== 'undefined' && window.cordova !== undefined;
+/**
+ * Gets metadata for `func`.
+ *
+ * @private
+ * @param {Function} func The function to query.
+ * @returns {*} Returns the metadata for `func`.
+ */
+var getData = !metaMap ? noop : function(func) {
+  return metaMap.get(func);
 };
 
-exports.isCordova = isCordova;
+module.exports = getData;
+
 
 /***/ }),
-/* 670 */
+/* 707 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
-
-
-var _interopRequireDefault = __webpack_require__(1);
+var WeakMap = __webpack_require__(394);
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.getDeviceName = void 0;
+/** Used to store function metadata. */
+var metaMap = WeakMap && new WeakMap;
 
-var _capitalize = _interopRequireDefault(__webpack_require__(671));
+module.exports = metaMap;
 
-var _cordova = __webpack_require__(669);
 
-var _plugins = __webpack_require__(679);
+/***/ }),
+/* 708 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _platform = __webpack_require__(668);
+var realNames = __webpack_require__(709);
 
-var DEFAULT_DEVICE = 'Device';
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
 
-// device
-var getAppleModel = function getAppleModel(identifier) {
-  var devices = ['iPhone', 'iPad', 'Watch', 'AppleTV'];
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
 
-  for (var _i = 0, _devices = devices; _i < _devices.length; _i++) {
-    var _device = _devices[_i];
+/**
+ * Gets the name of `func`.
+ *
+ * @private
+ * @param {Function} func The function to query.
+ * @returns {string} Returns the function name.
+ */
+function getFuncName(func) {
+  var result = (func.name + ''),
+      array = realNames[result],
+      length = hasOwnProperty.call(realNames, result) ? array.length : 0;
 
-    if (identifier.match(new RegExp(_device))) {
-      return _device;
+  while (length--) {
+    var data = array[length],
+        otherFunc = data.func;
+    if (otherFunc == null || otherFunc == func) {
+      return data.name;
     }
   }
+  return result;
+}
 
-  return DEFAULT_DEVICE;
-};
+module.exports = getFuncName;
 
-var getDeviceName = function getDeviceName() {
-  if (!(0, _plugins.hasDevicePlugin)()) {
-    if ((0, _cordova.isCordova)()) {
-      console.warn('You should install `cordova-plugin-device`.'); // eslint-disable-line no-console
-    }
 
-    return DEFAULT_DEVICE;
-  }
+/***/ }),
+/* 709 */
+/***/ (function(module, exports) {
 
-  var _window$device = window.device,
-      manufacturer = _window$device.manufacturer,
-      originalModel = _window$device.model;
-  var model = (0, _platform.isIOSApp)() ? getAppleModel(originalModel) : originalModel;
-  return "".concat((0, _capitalize.default)(manufacturer), " ").concat(model);
-};
+/** Used to lookup unminified function names. */
+var realNames = {};
+
+module.exports = realNames;
 
-exports.getDeviceName = getDeviceName;
 
 /***/ }),
-/* 671 */
+/* 710 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var toString = __webpack_require__(407),
-    upperFirst = __webpack_require__(672);
+var LazyWrapper = __webpack_require__(711),
+    getData = __webpack_require__(706),
+    getFuncName = __webpack_require__(708),
+    lodash = __webpack_require__(712);
 
 /**
- * Converts the first character of `string` to upper case and the remaining
- * to lower case.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to capitalize.
- * @returns {string} Returns the capitalized string.
- * @example
+ * Checks if `func` has a lazy counterpart.
  *
- * _.capitalize('FRED');
- * // => 'Fred'
+ * @private
+ * @param {Function} func The function to check.
+ * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
+ *  else `false`.
  */
-function capitalize(string) {
-  return upperFirst(toString(string).toLowerCase());
+function isLaziable(func) {
+  var funcName = getFuncName(func),
+      other = lodash[funcName];
+
+  if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
+    return false;
+  }
+  if (func === other) {
+    return true;
+  }
+  var data = getData(other);
+  return !!data && func === data[0];
 }
 
-module.exports = capitalize;
+module.exports = isLaziable;
 
 
 /***/ }),
-/* 672 */
+/* 711 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var createCaseFirst = __webpack_require__(673);
+var baseCreate = __webpack_require__(474),
+    baseLodash = __webpack_require__(705);
+
+/** Used as references for the maximum length and index of an array. */
+var MAX_ARRAY_LENGTH = 4294967295;
 
 /**
- * Converts the first character of `string` to upper case.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the converted string.
- * @example
- *
- * _.upperFirst('fred');
- * // => 'Fred'
+ * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
  *
- * _.upperFirst('FRED');
- * // => 'FRED'
+ * @private
+ * @constructor
+ * @param {*} value The value to wrap.
  */
-var upperFirst = createCaseFirst('toUpperCase');
+function LazyWrapper(value) {
+  this.__wrapped__ = value;
+  this.__actions__ = [];
+  this.__dir__ = 1;
+  this.__filtered__ = false;
+  this.__iteratees__ = [];
+  this.__takeCount__ = MAX_ARRAY_LENGTH;
+  this.__views__ = [];
+}
 
-module.exports = upperFirst;
+// Ensure `LazyWrapper` is an instance of `baseLodash`.
+LazyWrapper.prototype = baseCreate(baseLodash.prototype);
+LazyWrapper.prototype.constructor = LazyWrapper;
+
+module.exports = LazyWrapper;
 
 
 /***/ }),
-/* 673 */
+/* 712 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var castSlice = __webpack_require__(674),
-    hasUnicode = __webpack_require__(675),
-    stringToArray = __webpack_require__(676),
-    toString = __webpack_require__(407);
+var LazyWrapper = __webpack_require__(711),
+    LodashWrapper = __webpack_require__(704),
+    baseLodash = __webpack_require__(705),
+    isArray = __webpack_require__(324),
+    isObjectLike = __webpack_require__(323),
+    wrapperClone = __webpack_require__(713);
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
 
 /**
- * Creates a function like `_.lowerFirst`.
+ * Creates a `lodash` object which wraps `value` to enable implicit method
+ * chain sequences. Methods that operate on and return arrays, collections,
+ * and functions can be chained together. Methods that retrieve a single value
+ * or may return a primitive value will automatically end the chain sequence
+ * and return the unwrapped value. Otherwise, the value must be unwrapped
+ * with `_#value`.
  *
- * @private
- * @param {string} methodName The name of the `String` case method to use.
- * @returns {Function} Returns the new case function.
+ * Explicit chain sequences, which must be unwrapped with `_#value`, may be
+ * enabled using `_.chain`.
+ *
+ * The execution of chained methods is lazy, that is, it's deferred until
+ * `_#value` is implicitly or explicitly called.
+ *
+ * Lazy evaluation allows several methods to support shortcut fusion.
+ * Shortcut fusion is an optimization to merge iteratee calls; this avoids
+ * the creation of intermediate arrays and can greatly reduce the number of
+ * iteratee executions. Sections of a chain sequence qualify for shortcut
+ * fusion if the section is applied to an array and iteratees accept only
+ * one argument. The heuristic for whether a section qualifies for shortcut
+ * fusion is subject to change.
+ *
+ * Chaining is supported in custom builds as long as the `_#value` method is
+ * directly or indirectly included in the build.
+ *
+ * In addition to lodash methods, wrappers have `Array` and `String` methods.
+ *
+ * The wrapper `Array` methods are:
+ * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
+ *
+ * The wrapper `String` methods are:
+ * `replace` and `split`
+ *
+ * The wrapper methods that support shortcut fusion are:
+ * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
+ * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
+ * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
+ *
+ * The chainable wrapper methods are:
+ * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
+ * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
+ * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
+ * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
+ * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
+ * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
+ * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
+ * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
+ * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
+ * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
+ * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
+ * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
+ * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
+ * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
+ * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
+ * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
+ * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
+ * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
+ * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
+ * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
+ * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
+ * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
+ * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
+ * `zipObject`, `zipObjectDeep`, and `zipWith`
+ *
+ * The wrapper methods that are **not** chainable by default are:
+ * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
+ * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
+ * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
+ * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
+ * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
+ * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
+ * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
+ * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
+ * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
+ * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
+ * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
+ * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
+ * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
+ * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
+ * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
+ * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
+ * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
+ * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
+ * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
+ * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
+ * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
+ * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
+ * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
+ * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
+ * `upperFirst`, `value`, and `words`
+ *
+ * @name _
+ * @constructor
+ * @category Seq
+ * @param {*} value The value to wrap in a `lodash` instance.
+ * @returns {Object} Returns the new `lodash` wrapper instance.
+ * @example
+ *
+ * function square(n) {
+ *   return n * n;
+ * }
+ *
+ * var wrapped = _([1, 2, 3]);
+ *
+ * // Returns an unwrapped value.
+ * wrapped.reduce(_.add);
+ * // => 6
+ *
+ * // Returns a wrapped value.
+ * var squares = wrapped.map(square);
+ *
+ * _.isArray(squares);
+ * // => false
+ *
+ * _.isArray(squares.value());
+ * // => true
  */
-function createCaseFirst(methodName) {
-  return function(string) {
-    string = toString(string);
-
-    var strSymbols = hasUnicode(string)
-      ? stringToArray(string)
-      : undefined;
-
-    var chr = strSymbols
-      ? strSymbols[0]
-      : string.charAt(0);
-
-    var trailing = strSymbols
-      ? castSlice(strSymbols, 1).join('')
-      : string.slice(1);
-
-    return chr[methodName]() + trailing;
-  };
+function lodash(value) {
+  if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
+    if (value instanceof LodashWrapper) {
+      return value;
+    }
+    if (hasOwnProperty.call(value, '__wrapped__')) {
+      return wrapperClone(value);
+    }
+  }
+  return new LodashWrapper(value);
 }
 
-module.exports = createCaseFirst;
+// Ensure wrappers are instances of `baseLodash`.
+lodash.prototype = baseLodash.prototype;
+lodash.prototype.constructor = lodash;
+
+module.exports = lodash;
 
 
 /***/ }),
-/* 674 */
+/* 713 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseSlice = __webpack_require__(527);
+var LazyWrapper = __webpack_require__(711),
+    LodashWrapper = __webpack_require__(704),
+    copyArray = __webpack_require__(460);
 
 /**
- * Casts `array` to a slice if it's needed.
+ * Creates a clone of `wrapper`.
  *
  * @private
- * @param {Array} array The array to inspect.
- * @param {number} start The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns the cast slice.
+ * @param {Object} wrapper The wrapper to clone.
+ * @returns {Object} Returns the cloned wrapper.
  */
-function castSlice(array, start, end) {
-  var length = array.length;
-  end = end === undefined ? length : end;
-  return (!start && end >= length) ? array : baseSlice(array, start, end);
+function wrapperClone(wrapper) {
+  if (wrapper instanceof LazyWrapper) {
+    return wrapper.clone();
+  }
+  var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
+  result.__actions__ = copyArray(wrapper.__actions__);
+  result.__index__  = wrapper.__index__;
+  result.__values__ = wrapper.__values__;
+  return result;
 }
 
-module.exports = castSlice;
+module.exports = wrapperClone;
 
 
 /***/ }),
-/* 675 */
-/***/ (function(module, exports) {
-
-/** Used to compose unicode character classes. */
-var rsAstralRange = '\\ud800-\\udfff',
-    rsComboMarksRange = '\\u0300-\\u036f',
-    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
-    rsComboSymbolsRange = '\\u20d0-\\u20ff',
-    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
-    rsVarRange = '\\ufe0e\\ufe0f';
-
-/** Used to compose unicode capture groups. */
-var rsZWJ = '\\u200d';
-
-/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
-var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');
+/* 714 */
+/***/ (function(module, exports, __webpack_require__) {
 
-/**
- * Checks if `string` contains Unicode symbols.
- *
- * @private
- * @param {string} string The string to inspect.
- * @returns {boolean} Returns `true` if a symbol is found, else `false`.
- */
-function hasUnicode(string) {
-  return reHasUnicode.test(string);
-}
+"use strict";
 
-module.exports = hasUnicode;
 
+var _interopRequireDefault = __webpack_require__(1);
 
-/***/ }),
-/* 676 */
-/***/ (function(module, exports, __webpack_require__) {
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.hasQueryBeenLoaded = exports.isQueryLoading = exports.cancelable = void 0;
 
-var asciiToArray = __webpack_require__(677),
-    hasUnicode = __webpack_require__(675),
-    unicodeToArray = __webpack_require__(678);
+var _logger = _interopRequireDefault(__webpack_require__(498));
 
 /**
- * Converts `string` to an array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the converted array.
+ * @typedef {Promise} CancelablePromise
+ * @property {Function} cancel - Cancel the promise
  */
-function stringToArray(string) {
-  return hasUnicode(string)
-    ? unicodeToArray(string)
-    : asciiToArray(string);
-}
-
-module.exports = stringToArray;
-
-
-/***/ }),
-/* 677 */
-/***/ (function(module, exports) {
 
 /**
- * Converts an ASCII `string` to an array.
+ * Wraps a promise so that it can be canceled
  *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the converted array.
+ * Rejects with canceled: true as soon as cancel is called
+ *
+ * @param  {Promise} promise  - Promise
+ * @returns {CancelablePromise} - Promise with .cancel method
  */
-function asciiToArray(string) {
-  return string.split('');
-}
-
-module.exports = asciiToArray;
+var cancelable = function cancelable(promise) {
+  var _reject;
 
+  var wrapped = new Promise(function (resolve, reject) {
+    _reject = reject;
+    promise.then(resolve);
+    promise.catch(reject);
+  }); // @ts-ignore
 
-/***/ }),
-/* 678 */
-/***/ (function(module, exports) {
+  wrapped.cancel = function () {
+    _reject({
+      canceled: true
+    });
+  };
 
-/** Used to compose unicode character classes. */
-var rsAstralRange = '\\ud800-\\udfff',
-    rsComboMarksRange = '\\u0300-\\u036f',
-    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
-    rsComboSymbolsRange = '\\u20d0-\\u20ff',
-    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
-    rsVarRange = '\\ufe0e\\ufe0f';
+  return wrapped;
+};
 
-/** Used to compose unicode capture groups. */
-var rsAstral = '[' + rsAstralRange + ']',
-    rsCombo = '[' + rsComboRange + ']',
-    rsFitz = '\\ud83c[\\udffb-\\udfff]',
-    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
-    rsNonAstral = '[^' + rsAstralRange + ']',
-    rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
-    rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
-    rsZWJ = '\\u200d';
+exports.cancelable = cancelable;
 
-/** Used to compose unicode regexes. */
-var reOptMod = rsModifier + '?',
-    rsOptVar = '[' + rsVarRange + ']?',
-    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
-    rsSeq = rsOptVar + reOptMod + rsOptJoin,
-    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
+/**
+ * Returns whether the result of a query (given via queryConnect or Query)
+ * is loading.
+ */
+var isQueryLoading = function isQueryLoading(col) {
+  if (!col) {
+    _logger.default.warn('isQueryLoading called on falsy value.');
 
-/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
-var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
+    return false;
+  }
 
+  return col.fetchStatus === 'loading' || col.fetchStatus === 'pending';
+};
 /**
- * Converts a Unicode `string` to an array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the converted array.
+ * Returns whether a query has been loaded at least once
  */
-function unicodeToArray(string) {
-  return string.match(reUnicode) || [];
-}
 
-module.exports = unicodeToArray;
 
+exports.isQueryLoading = isQueryLoading;
+
+var hasQueryBeenLoaded = function hasQueryBeenLoaded(col) {
+  return col.lastFetch;
+};
+
+exports.hasQueryBeenLoaded = hasQueryBeenLoaded;
 
 /***/ }),
-/* 679 */
+/* 715 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
+var _interopRequireDefault = __webpack_require__(1);
+
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.hasSafariPlugin = exports.hasNetworkInformationPlugin = exports.hasInAppBrowserPlugin = exports.hasDevicePlugin = void 0;
+exports.sanitizeCategories = sanitizeCategories;
+exports.areTermsValid = areTermsValid;
+exports.isPartnershipValid = isPartnershipValid;
+exports.sanitize = sanitize;
+exports.getIdentifier = exports.sanitizeIdentifier = exports.legacyLoginFields = exports.ROLE_IDENTIFIER = void 0;
 
-var _cordova = __webpack_require__(669);
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-var hasDevicePlugin = function hasDevicePlugin() {
-  return (0, _cordova.isCordova)() && window.device !== undefined;
-};
+var _flow2 = _interopRequireDefault(__webpack_require__(702));
 
-exports.hasDevicePlugin = hasDevicePlugin;
+var _cloneDeep2 = _interopRequireDefault(__webpack_require__(450));
 
-var hasInAppBrowserPlugin = function hasInAppBrowserPlugin() {
-  return (0, _cordova.isCordova)() && window.cordova.InAppBrowser !== undefined;
-};
+var _findKey = _interopRequireDefault(__webpack_require__(496));
 
-exports.hasInAppBrowserPlugin = hasInAppBrowserPlugin;
+function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
 
-var hasSafariPlugin = function hasSafariPlugin() {
-  return new Promise(function (resolve) {
-    if (!(0, _cordova.isCordova)() || window.SafariViewController === undefined) {
-      resolve(false);
-      return;
-    }
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
 
-    window.SafariViewController.isAvailable(function (available) {
-      return resolve(available);
-    });
-  });
-};
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+var ROLE_IDENTIFIER = 'identifier';
 /**
- * Check if the Cordova's cordova-plugin-network-information plugin is installed
- * @see https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-network-information/
- * @returns {boolean}
+ * Legacy login fields declared by some konnectors
  */
 
+exports.ROLE_IDENTIFIER = ROLE_IDENTIFIER;
+var legacyLoginFields = ['login', 'identifier', 'new_identifier', 'email'];
+exports.legacyLoginFields = legacyLoginFields;
+var legacyEncryptedFields = ['secret', 'dob', 'code', 'answer', 'access_token', 'refresh_token', 'appSecret'];
+var APP_CATEGORIES = ['banking', 'cozy', 'energy', 'health', 'host_provider', 'insurance', 'isp', 'mes_infos', 'online_services', 'others', 'partners', 'press', 'productivity', 'ptnb', 'public_service', 'shopping', 'social', 'telecom', 'transport'];
+/**
+ * Filters unauthorized categories. Defaults to ['others'] if no suitable category.
+ *
+ * @param {Array<Object>} categories - Array of categories
+ * @returns {Array<Object>} sanitized categories
+ */
 
-exports.hasSafariPlugin = hasSafariPlugin;
+function sanitizeCategories(categories) {
+  if (!categories) return ['others'];
+  var filteredList = categories.filter(function (c) {
+    return APP_CATEGORIES.includes(c);
+  });
+  if (!filteredList.length) return ['others'];
+  return filteredList;
+}
 
-var hasNetworkInformationPlugin = function hasNetworkInformationPlugin() {
-  return (0, _cordova.isCordova)() && window.navigator.connection !== undefined;
-};
+function areTermsValid(terms) {
+  return Boolean(terms && terms.id && terms.url && terms.version);
+}
 
-exports.hasNetworkInformationPlugin = hasNetworkInformationPlugin;
+function isPartnershipValid(partnership) {
+  return Boolean(partnership && partnership.description);
+}
+/**
+ * Normalize app manifest, retro-compatibility for old manifests
+ *
+ * @param  {import('../types').Manifest} manifest - app manifest to normalize
+ * @returns {import('../types').SanitizedManifest}
+ */
 
-/***/ }),
-/* 680 */
-/***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
+function sanitize(manifest) {
+  var sanitized = _objectSpread({}, manifest); // Make categories an array and delete category attribute if it exists
 
 
-var _interopRequireDefault = __webpack_require__(1);
+  if (!manifest.categories && manifest.category && typeof manifest.category === 'string') {
+    sanitized.categories = [manifest.category];
+    delete sanitized.category;
+  }
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.startApp = exports.default = exports.checkApp = void 0;
+  sanitized.categories = sanitizeCategories(sanitized.categories); // manifest name is not an object
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+  if (typeof manifest.name === 'object') sanitized.name = manifest.name.en; // Fix camelCase from cozy-stack
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+  if (manifest.available_version) {
+    sanitized.availableVersion = manifest.available_version;
+    delete sanitized.available_version;
+  } // Fix camelCase from cozy-stack
 
-var _platform = __webpack_require__(668);
 
-var cordovaPluginIsInstalled = function cordovaPluginIsInstalled() {
-  return window.startApp;
-};
+  if (manifest.latest_version) {
+    sanitized.latestVersion = manifest.latestVersion;
+    delete sanitized.latest_version;
+  } // Remove invalid terms
 
-/**
- * Normalize startApp params for Android and iOS
- */
-var getParams = function getParams(_ref) {
-  var appId = _ref.appId,
-      uri = _ref.uri;
 
-  if ((0, _platform.isAndroidApp)()) {
-    return {
-      package: appId
-    };
-  } else {
-    return uri;
+  if (sanitized.terms && !areTermsValid(sanitized.terms)) {
+    delete sanitized.terms;
+  } // Remove invalid partnership
+
+
+  if (sanitized.partnership && !isPartnershipValid(sanitized.partnership)) {
+    delete sanitized.partnership;
   }
-};
 
-var exported = {};
+  if (sanitized.fields) {
+    sanitized.fields = sanitizeFields(manifest.fields);
+  }
+
+  return sanitized;
+}
 /**
- * Start an application if it is installed on the phone
- * @returns Promise - False if the application was not able to be started
+ * Ensures that fields has at least one field with the role 'identifier'
+ *
+ * @param  {import('../types').ManifestFields} fields - Manifest fields
+ * @returns {import('../types').ManifestFields} - Sanitized manifest fields
  */
 
-var startApp = exported.startApp = /*#__PURE__*/function () {
-  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(appInfo) {
-    var startAppPlugin, isAppInstalled, params;
-    return _regenerator.default.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            startAppPlugin = window.startApp;
-            _context.next = 3;
-            return exported.checkApp(appInfo);
 
-          case 3:
-            isAppInstalled = _context.sent;
+var sanitizeIdentifier = function sanitizeIdentifier(fields) {
+  var sanitized = (0, _cloneDeep2.default)(fields);
+  var hasIdentifier = false;
 
-            if (!isAppInstalled) {
-              _context.next = 9;
-              break;
-            }
+  for (var fieldName in sanitized) {
+    if (sanitized[fieldName].role === ROLE_IDENTIFIER) {
+      if (hasIdentifier) delete sanitized[fieldName].role;else hasIdentifier = true;
+    }
+  }
 
-            params = getParams(appInfo);
-            return _context.abrupt("return", new Promise(function (resolve, reject) {
-              if (!cordovaPluginIsInstalled()) {
-                reject(new Error("Cordova plugin 'com.lampa.startapp' is not installed. This plugin is needed to start a native app. Required by cozy-bar"));
-                return;
-              }
+  if (hasIdentifier) return sanitized;
 
-              startAppPlugin.set(params).start(resolve, reject);
-            }));
+  var _iterator = _createForOfIteratorHelper(legacyLoginFields),
+      _step;
 
-          case 9:
-            return _context.abrupt("return", false);
+  try {
+    for (_iterator.s(); !(_step = _iterator.n()).done;) {
+      var name = _step.value;
 
-          case 10:
-          case "end":
-            return _context.stop();
-        }
+      if (sanitized[name]) {
+        sanitized[name].role = ROLE_IDENTIFIER;
+        return sanitized;
       }
-    }, _callee);
-  }));
+    }
+  } catch (err) {
+    _iterator.e(err);
+  } finally {
+    _iterator.f();
+  }
 
-  return function (_x) {
-    return _ref2.apply(this, arguments);
-  };
-}();
+  for (var _fieldName in sanitized) {
+    if (sanitized[_fieldName].type !== 'password') {
+      sanitized[_fieldName].role = ROLE_IDENTIFIER;
+      return sanitized;
+    }
+  }
+
+  return sanitized;
+};
 /**
- * Check that an application is installed on the phone
- * @returns Promise - Promise containing information on the application
+ * Returns the key for the field having the role=identifier attribute
  *
- * @example
- * > checkApp({ appId: 'io.cozy.drive.mobile', uri: 'cozydrive://' })
- * Promise.resolve({
- *  versionName: "0.9.2",
- *  packageName: "io.cozy.drive.mobile",
- *  versionCode: 902,
- *  applicationInfo: "ApplicationInfo{70aa0ef io.cozy.drive.mobile}"
- * })
+ * @param  {import('../types').ManifestFields} fields Konnector fields
+ * @returns {String|null}  The key for the identifier field, example 'login'
  */
 
 
-exports.startApp = startApp;
-
-var checkApp = exported.checkApp = /*#__PURE__*/function () {
-  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(appInfo) {
-    var startAppPlugin, params;
-    return _regenerator.default.wrap(function _callee2$(_context2) {
-      while (1) {
-        switch (_context2.prev = _context2.next) {
-          case 0:
-            startAppPlugin = window.startApp;
-            params = getParams(appInfo);
-            return _context2.abrupt("return", new Promise(function (resolve, reject) {
-              if (!cordovaPluginIsInstalled()) {
-                reject(new Error("Cordova plugin 'com.lampa.startapp' is not installed."));
-                return;
-              }
-
-              startAppPlugin.set(params).check(function (infos) {
-                return resolve(infos === 'OK' ? true : infos);
-              }, function (error) {
-                if (error === false || error.indexOf('NameNotFoundException') === 0) {
-                  // Plugin returns an error 'NameNotFoundException' on Android and
-                  // false on iOS when an application is not found.
-                  // We prefer to always return false
-                  resolve(false);
-                } else {
-                  reject(error);
-                }
-              });
-            }));
-
-          case 3:
-          case "end":
-            return _context2.stop();
-        }
-      }
-    }, _callee2);
-  }));
-
-  return function (_x2) {
-    return _ref3.apply(this, arguments);
-  };
-}();
-
-exports.checkApp = checkApp;
-var _default = exported;
-exports.default = _default;
-
-/***/ }),
-/* 681 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
+exports.sanitizeIdentifier = sanitizeIdentifier;
 
-var _interopRequireDefault = __webpack_require__(1);
+var getIdentifier = function getIdentifier() {
+  var fields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+  return (0, _findKey.default)(sanitizeIdentifier(fields), function (field) {
+    return field.role === ROLE_IDENTIFIER;
+  }) || null;
+};
+/**
+ * Ensures old fields are removed
+ *
+ * @param  {Object} fields Manifest fields
+ * @returns {Object}        Sanitized manifest fields
+ */
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.nativeLinkOpen = void 0;
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+exports.getIdentifier = getIdentifier;
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+var removeOldFields = function removeOldFields(fields) {
+  var sanitized = (0, _cloneDeep2.default)(fields);
+  delete sanitized.advancedFields;
+  return sanitized;
+};
+/**
+ * Ensures every field not explicitely tagged as not required is required
+ *
+ * @param  {import('../types').ManifestFields} [fields={}] Manifest fields
+ * @returns {import('../types').ManifestFields}            Sanitized manifest fields
+ */
 
-var _plugins = __webpack_require__(679);
 
-var nativeLinkOpen = /*#__PURE__*/function () {
-  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
-    var url, target, options;
-    return _regenerator.default.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            url = _ref.url;
-            _context.next = 3;
-            return (0, _plugins.hasSafariPlugin)();
+var sanitizeRequired = function sanitizeRequired(fields) {
+  var sanitized = (0, _cloneDeep2.default)(fields);
 
-          case 3:
-            _context.t0 = _context.sent;
+  for (var fieldName in sanitized) {
+    var field = sanitized[fieldName]; // Ensure legacy for field isRequired
 
-            if (!_context.t0) {
-              _context.next = 6;
-              break;
-            }
+    var required = typeof field.required === 'undefined' ? field.isRequired : field.required;
+    sanitized[fieldName].required = typeof required === 'boolean' ? required : true;
+  }
 
-            _context.t0 = window.SafariViewController;
+  return sanitized;
+};
+/**
+ * Ensures:
+ * * any field flagged as encrypted keeps its flag
+ * * any legacy encrypted field is tagged as encrypted
+ *
+ * @param  {import('../types').ManifestFields} [fields={}] Manifest fields
+ * @returns {import('../types').ManifestFields}             Sanitized Manifest fields
+ */
 
-          case 6:
-            if (!_context.t0) {
-              _context.next = 10;
-              break;
-            }
 
-            window.SafariViewController.show({
-              url: url,
-              transition: 'curl'
-            }, function (result) {
-              if (result.event === 'closed') {
-                window.SafariViewController.hide();
-              }
-            }, function () {
-              window.SafariViewController.hide();
-            });
-            _context.next = 11;
-            break;
+var sanitizeEncrypted = function sanitizeEncrypted(fields) {
+  var sanitized = (0, _cloneDeep2.default)(fields);
 
-          case 10:
-            if ((0, _plugins.hasInAppBrowserPlugin)()) {
-              target = '_blank';
-              options = 'clearcache=yes,zoom=no';
-              window.cordova.InAppBrowser.open(url, target, options);
-            } else {
-              window.location = url;
-            }
+  for (var fieldName in sanitized) {
+    var field = sanitized[fieldName];
+    if (typeof field.encrypted !== 'boolean') field.encrypted = field.type === 'password' || legacyEncryptedFields.includes(fieldName);
+  }
 
-          case 11:
-          case "end":
-            return _context.stop();
-        }
-      }
-    }, _callee);
-  }));
+  return sanitized;
+};
+/**
+ * Sanitizes manifest fields with multiple rules
+ *
+ * @param  {import('../types').ManifestFields} [fields={}] Manifest fields
+ * @returns {import('../types').ManifestFields}            Sanitized manifest fields
+ */
 
-  return function nativeLinkOpen(_x) {
-    return _ref2.apply(this, arguments);
-  };
-}();
 
-exports.nativeLinkOpen = nativeLinkOpen;
+var sanitizeFields = (0, _flow2.default)([removeOldFields, sanitizeIdentifier, sanitizeRequired, sanitizeEncrypted]);
 
 /***/ }),
-/* 682 */
+/* 716 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
+var _interopRequireDefault = __webpack_require__(1);
+
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.openDeeplinkOrRedirect = void 0;
-
-/**
- * This file is used to open the native app from a webapp
- * if this native app is installed
- *
- * From a webapp, we don't have any clue if a native app is installed.
- * The only way to know that, is to try to open the custom link
- * (aka cozydrive://) and if nothing happens (no blur) we redirect to
- * the callback
- *
- * Firefox tries to open custom link, so we need to create an iframe
- * to detect if this is supported or not
- */
-var _createHiddenIframe = function _createHiddenIframe(target, uri, randomId) {
-  var iframe = document.createElement('iframe');
-  iframe.src = uri;
-  iframe.id = "hiddenIframe_".concat(randomId);
-  iframe.style.display = 'none';
-  target.appendChild(iframe);
-  return iframe;
-};
-
-var openUriWithHiddenFrame = function openUriWithHiddenFrame(uri, failCb) {
-  var randomId = Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5);
-  window.addEventListener('blur', onBlur);
-
-  var iframe = _createHiddenIframe(document.body, 'about:blank', randomId);
+exports.createMockClient = void 0;
 
-  var timeout = setTimeout(function () {
-    failCb();
-    window.removeEventListener('blur', onBlur);
-    iframe.parentElement.removeChild(iframe);
-  }, 500);
+var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
 
-  function onBlur() {
-    clearTimeout(timeout);
-    window.removeEventListener('blur', onBlur);
-    iframe.parentElement.removeChild(iframe);
-  }
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-  iframe.contentWindow.location.href = uri;
-};
+var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(291));
 
-var openUriWithTimeoutHack = function openUriWithTimeoutHack(uri, failCb) {
-  var timeout = setTimeout(function () {
-    failCb();
-    target.removeEventListener('blur', onBlur);
-  }, 500); // handle page running in an iframe (blur must be registered with top level window)
+var _CozyClient = _interopRequireDefault(__webpack_require__(279));
 
-  var target = window;
+var _store = __webpack_require__(627);
 
-  while (target != target.parent) {
-    target = target.parent;
-  }
+var _cozyStackClient = __webpack_require__(448);
 
-  target.addEventListener('blur', onBlur);
+var _dsl = __webpack_require__(495);
 
-  function onBlur() {
-    clearTimeout(timeout);
-    target.removeEventListener('blur', onBlur);
-  } // Why is an uri assigned to location object?
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-  window.location = uri;
+var fillQueryInsideClient = function fillQueryInsideClient(client, queryName, queryOptions) {
+  var definition = queryOptions.definition,
+      doctype = queryOptions.doctype,
+      data = queryOptions.data,
+      queryResult = (0, _objectWithoutProperties2.default)(queryOptions, ["definition", "doctype", "data"]);
+  client.store.dispatch((0, _store.initQuery)(queryName, definition || (0, _dsl.Q)(doctype)));
+  client.store.dispatch((0, _store.receiveQueryResult)(queryName, _objectSpread({
+    data: data ? data.map(function (doc) {
+      return (0, _cozyStackClient.normalizeDoc)(doc, doctype);
+    }) : data
+  }, queryResult)));
 };
 
-var openUriWithMsLaunchUri = function openUriWithMsLaunchUri(uri, failCb) {
-  navigator.msLaunchUri(uri, undefined, failCb);
-};
+var mockedQueryFromMockedRemoteData = function mockedQueryFromMockedRemoteData(remoteData) {
+  return function (qdef) {
+    if (!remoteData) {
+      return {
+        data: null
+      };
+    }
 
-var checkBrowser = function checkBrowser() {
-  var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
-  var ua = navigator.userAgent.toLowerCase();
-  var isSafari = ua.includes('safari') && !ua.includes('chrome') || Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
-  var isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
-  var isIOS122 = isIOS && (ua.includes('os 12_2') || ua.includes('os 12_3'));
-  return {
-    isOpera: isOpera,
-    isFirefox: typeof window.InstallTrigger !== 'undefined',
-    isSafari: isSafari,
-    isChrome: !!window.chrome && !isOpera,
-    isIOS122: isIOS122,
-    isIOS: isIOS
+    if (remoteData[qdef.doctype]) {
+      return {
+        data: remoteData[qdef.doctype]
+      };
+    } else {
+      return {
+        data: []
+      };
+    }
   };
 };
 /**
+ * Creates a client suitable for use in tests
  *
- * @param {String} deeplink (cozydrive://)
- * @param {String} failCb (http://drive.cozy.ios)
+ * - client.{query,save} are mocked
+ * - client.stackClient.fetchJSON is mocked
+ *
+ * @param  {object} options Options
+ * @param  {object} [options.queries] Prefill queries inside the store
+ * @param  {object} [options.remote] Mock data from the server
+ * @param  {object} [options.clientOptions] Options passed to the client
+ * @returns {CozyClient}
  */
 
 
-var openDeeplinkOrRedirect = function openDeeplinkOrRedirect(deeplink, failCb) {
-  if (navigator.msLaunchUri) {
-    // for IE and Edge in Win 8 and Win 10
-    openUriWithMsLaunchUri(deeplink, failCb);
-  } else {
-    var browser = checkBrowser();
+var createMockClient = function createMockClient(_ref) {
+  var queries = _ref.queries,
+      remote = _ref.remote,
+      clientOptions = _ref.clientOptions;
+  var client = new _CozyClient.default(clientOptions || {});
+  client.ensureStore();
 
-    if (browser.isChrome || browser.isIOS && !browser.isIOS122) {
-      openUriWithTimeoutHack(deeplink, failCb);
-    } else if (browser.isSafari && !browser.isIOS122 || browser.isFirefox) {
-      openUriWithHiddenFrame(deeplink, failCb);
-    } else {
-      failCb();
-    }
+  for (var _i = 0, _Object$entries = Object.entries(queries || {}); _i < _Object$entries.length; _i++) {
+    var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
+        queryName = _Object$entries$_i[0],
+        queryOptions = _Object$entries$_i[1];
+
+    fillQueryInsideClient(client, queryName, queryOptions);
   }
+
+  client.query = jest.fn().mockImplementation(mockedQueryFromMockedRemoteData(remote));
+  client.save = jest.fn();
+  client.saveAll = jest.fn();
+  client.stackClient.fetchJSON = jest.fn();
+  return client;
 };
 
-exports.openDeeplinkOrRedirect = openDeeplinkOrRedirect;
+exports.createMockClient = createMockClient;
 
 /***/ }),
-/* 683 */
+/* 717 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-
+/* WEBPACK VAR INJECTION */(function(module) {
 
 var _interopRequireDefault = __webpack_require__(1);
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.isFlagshipApp = exports.getFlagshipMetadata = exports.FlagshipRoutes = void 0;
-
-var _cozyLogger = _interopRequireDefault(__webpack_require__(211));
-
-var FlagshipRoutes;
-exports.FlagshipRoutes = FlagshipRoutes;
-
-(function (FlagshipRoutes) {
-  FlagshipRoutes["Home"] = "home";
-  FlagshipRoutes["Cozyapp"] = "cozyapp";
-  FlagshipRoutes["Authenticate"] = "authenticate";
-  FlagshipRoutes["Onboarding"] = "onboarding";
-  FlagshipRoutes["Stack"] = "stack";
-})(FlagshipRoutes || (exports.FlagshipRoutes = FlagshipRoutes = {}));
-
-var getGlobalWindow = function getGlobalWindow() {
-  return typeof window !== 'undefined' ? window : ((0, _cozyLogger.default)('error', "\"window\" is not defined. This means that getGlobalWindow() shouldn't have been called and investigation should be done to prevent this call"), undefined);
-};
-
-var getFlagshipMetadata = function getFlagshipMetadata() {
-  var _getGlobalWindow$cozy, _getGlobalWindow, _getGlobalWindow$cozy2;
-
-  return (_getGlobalWindow$cozy = (_getGlobalWindow = getGlobalWindow()) === null || _getGlobalWindow === void 0 ? void 0 : (_getGlobalWindow$cozy2 = _getGlobalWindow.cozy) === null || _getGlobalWindow$cozy2 === void 0 ? void 0 : _getGlobalWindow$cozy2.flagship) !== null && _getGlobalWindow$cozy !== void 0 ? _getGlobalWindow$cozy : {};
-};
-
-exports.getFlagshipMetadata = getFlagshipMetadata;
-
-var isFlagshipApp = function isFlagshipApp() {
-  var _getGlobalWindow2, _getGlobalWindow2$coz;
+exports.createClientInteractive = void 0;
 
-  return ((_getGlobalWindow2 = getGlobalWindow()) === null || _getGlobalWindow2 === void 0 ? void 0 : (_getGlobalWindow2$coz = _getGlobalWindow2.cozy) === null || _getGlobalWindow2$coz === void 0 ? void 0 : _getGlobalWindow2$coz.flagship) !== undefined;
-};
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-exports.isFlagshipApp = isFlagshipApp;
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-/***/ }),
-/* 684 */
-/***/ (function(module, exports, __webpack_require__) {
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-"use strict";
+var _http = _interopRequireDefault(__webpack_require__(718));
 
+var _open = _interopRequireDefault(__webpack_require__(719));
 
-var _interopRequireDefault = __webpack_require__(1);
+var _fs = _interopRequireDefault(__webpack_require__(722));
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
+var _merge = _interopRequireDefault(__webpack_require__(532));
 
-var _mapValues = _interopRequireDefault(__webpack_require__(298));
+var _serverDestroy = _interopRequireDefault(__webpack_require__(725));
 
-var _groupBy2 = _interopRequireDefault(__webpack_require__(638));
+var _CozyClient = _interopRequireDefault(__webpack_require__(279));
 
-var _flatten = _interopRequireDefault(__webpack_require__(419));
+var _cozyLogger = _interopRequireDefault(__webpack_require__(211));
 
-var _isEqual = _interopRequireDefault(__webpack_require__(577));
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-var _uniq = _interopRequireDefault(__webpack_require__(522));
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-var _uniqWith = _interopRequireDefault(__webpack_require__(685));
+var log = _cozyLogger.default.namespace('create-cli-client');
 
-var _dsl = __webpack_require__(495);
+var nodeFetch = __webpack_require__(726);
 
-var isIdQuery = function isIdQuery(query) {
-  return query.id || query.ids;
-};
+var btoa = __webpack_require__(739);
 /**
- * Optimize queries on a single doctype
+ * Creates and starts and HTTP server suitable for OAuth authentication
+ *
+ * @param  {object} serverOptions - OAuth callback server options
+ * @param  {Function} serverOptions.onAuthentication - Additional callback called
+ * when the user authenticates
+ * @param  {string} serverOptions.route - Route used for authentication
+ * @param  {number} serverOptions.port - Port on which the server will listen
+ * @param  {Function} serverOptions.onListen - Callback called when the
+ * server starts
+ *
+ * @typedef {object} DestroyableServer
+ * @function destroy
+ *
+ * @returns {DestroyableServer}
  *
- * @param  {QueryDefinition[]} queries - Queries of a same doctype
- * @returns {QueryDefinition[]} Optimized queries
  * @private
  */
 
 
-var optimizeDoctypeQueries = function optimizeDoctypeQueries(queries) {
-  var _groupBy = (0, _groupBy2.default)(queries, function (q) {
-    return isIdQuery(q) ? 'idQueries' : 'others';
-  }),
-      _groupBy$idQueries = _groupBy.idQueries,
-      idQueries = _groupBy$idQueries === void 0 ? [] : _groupBy$idQueries,
-      _groupBy$others = _groupBy.others,
-      others = _groupBy$others === void 0 ? [] : _groupBy$others;
-
-  var groupedIdQueries = idQueries.length > 0 ? new _dsl.QueryDefinition({
-    doctype: queries[0].doctype,
-    ids: (0, _uniq.default)((0, _flatten.default)(idQueries.map(function (q) {
-      return q.id || q.ids;
-    })))
-  }) : []; // Deduplicate before concataining
+var createCallbackServer = function createCallbackServer(serverOptions) {
+  var route = serverOptions.route,
+      onListen = serverOptions.onListen,
+      onAuthentication = serverOptions.onAuthentication,
+      port = serverOptions.port;
 
-  return (0, _uniqWith.default)(others, _isEqual.default).concat(groupedIdQueries);
+  var server = _http.default.createServer(function (request, response) {
+    if (request.url.indexOf(route) === 0) {
+      onAuthentication(request.url);
+      response.write('Authentication successful, you can close this page.');
+      response.end();
+    }
+  });
+
+  server.listen(port, function () {
+    onListen();
+  });
+  (0, _serverDestroy.default)(server);
+  return server;
 };
 /**
- * Reduce the number of queries used to fetch documents.
+ * Creates a function suitable for usage with CozyClient::startOAuthFlow
  *
- * - Deduplication of queries
- * - Groups id queries
+ * Starts a local server. The stack upon user authentication will
+ * redirect to this local server with a URL containing credentials.
+ * The callback resolves with this authenticationURL which continues
+ * the authentication flow inside startOAuthFlow.
+ *
+ * When the server is started, the authentication page is opened on the
+ * desktop browser of the user.
+ *
+ * @param {object} serverOptions - Options for the OAuth callback server
+ * @param {number} serverOptions.port - Port used for the OAuth callback server
+ * @param {Function} serverOptions.onAuthentication - Callback when the user authenticates
+ * @param {Function} serverOptions.onListen - Callback called with the authentication URL
+ * @param {string} serverOptions.route - Route used for authentication
+ * @param {boolean} serverOptions.shouldOpenAuthenticationPage - Whether the authentication
+ * page should be automatically opened (default: true)
  *
- * @param  {QueryDefinition[]} queries - Queries to optimized
- * @returns {QueryDefinition[]} Optimized queries
  * @private
  */
 
 
-var optimizeQueries = function optimizeQueries(queries) {
-  var byDoctype = (0, _groupBy2.default)(queries, function (q) {
-    return q.doctype;
-  });
-  return (0, _flatten.default)(Object.values((0, _mapValues.default)(byDoctype, optimizeDoctypeQueries)));
+var mkServerFlowCallback = function mkServerFlowCallback(serverOptions) {
+  return function (authenticationURL) {
+    return new Promise(function (resolve, reject) {
+      var rejectTimeout, successTimeout;
+      var server = createCallbackServer(_objectSpread(_objectSpread({}, serverOptions), {}, {
+        onAuthentication: function onAuthentication(callbackURL) {
+          log('debug', 'Authenticated, Shutting server down');
+          successTimeout = setTimeout(function () {
+            // Is there a way to call destroy only after all requests have
+            // been completely served ? Otherwise we close the server while
+            // the successful oauth page is being served and the page does
+            // not get loaded on the client side.
+            server.destroy();
+            resolve('http://localhost:8000/' + callbackURL);
+            clearTimeout(rejectTimeout);
+          }, 300);
+        },
+        onListen: function onListen() {
+          log('debug', 'OAuth callback server started, waiting for authentication');
+
+          if (serverOptions.shouldOpenAuthenticationPage !== false) {
+            (0, _open.default)(authenticationURL, {
+              wait: false
+            });
+          }
+
+          if (serverOptions.onListen) {
+            serverOptions.onListen({
+              authenticationURL: authenticationURL
+            });
+          }
+        }
+      }));
+      rejectTimeout = setTimeout(function () {
+        clearTimeout(successTimeout);
+        server.destroy();
+        reject('Timeout for authentication');
+      }, 30 * 1000);
+    });
+  };
 };
 
-var _default = optimizeQueries;
-exports.default = _default;
+var hashCode = function hashCode(str) {
+  var hash = 0,
+      i,
+      chr;
+  if (str.length === 0) return hash;
 
-/***/ }),
-/* 685 */
-/***/ (function(module, exports, __webpack_require__) {
+  for (i = 0; i < str.length; i++) {
+    chr = str.charCodeAt(i);
+    hash = (hash << 5) - hash + chr;
+    hash |= 0; // Convert to 32bit integer
+  }
 
-var baseUniq = __webpack_require__(423);
+  return hash;
+};
+
+var DEFAULT_SERVER_OPTIONS = {
+  port: 3333,
+  route: '/do_access',
+  getSavedCredentials: function getSavedCredentials(clientOptions) {
+    if (!clientOptions.oauth.softwareID) {
+      throw new Error('Please provide oauth.softwareID in your clientOptions.');
+    }
+
+    var doctypeHash = Math.abs(hashCode(JSON.stringify(clientOptions.scope)));
+    var sluggedURI = clientOptions.uri.replace(/https?:\/\//, '').replace(/\./g, '-');
+    return "/tmp/cozy-client-oauth-".concat(sluggedURI, "-").concat(clientOptions.oauth.softwareID, "-").concat(doctypeHash, ".json");
+  }
+};
 
+var writeJSON = function writeJSON(fs, filename, data) {
+  fs.writeFileSync(filename, JSON.stringify(data));
+};
 /**
- * This method is like `_.uniq` except that it accepts `comparator` which
- * is invoked to compare elements of `array`. The order of result values is
- * determined by the order they occur in the array.The comparator is invoked
- * with two arguments: (arrVal, othVal).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
+ * Parses a JSON from a file
+ * Returns null in case of error
  *
- * _.uniqWith(objects, _.isEqual);
- * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
+ * @private
  */
-function uniqWith(array, comparator) {
-  comparator = typeof comparator == 'function' ? comparator : undefined;
-  return (array && array.length) ? baseUniq(array, undefined, comparator) : [];
-}
-
-module.exports = uniqWith;
-
-
-/***/ }),
-/* 686 */
-/***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
 
+var readJSON = function readJSON(fs, filename) {
+  try {
+    if (!fs.existsSync(filename)) {
+      return null;
+    }
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
+    var res = JSON.parse(fs.readFileSync(filename).toString());
+    return res;
+  } catch (e) {
+    _cozyLogger.default.warn("Could not load ".concat(filename, " (").concat(e.message, ")"));
 
+    return null;
+  }
+};
 /**
- * Use those fetch policies with `<Query />` to limit the number of re-fetch.
+ * Creates a client with interactive authentication.
+ *
+ * - Will start an OAuth flow and open an authentication page
+ * - Starts a local server to listen for the oauth callback
+ * - Resolves with the client after user authentication
+ *
+ * @param {object} clientOptions Same as CozyClient::constructor.
  *
  * @example
  * ```
- * import { fetchPolicies } from 'cozy-client'
- * const olderThan30s = fetchPolicies.olderThan(30 * 1000)
- * <Query fetchPolicy={olderThan30s} />
+ * import { createClientInteractive } from 'cozy-client/dist/cli'
+ * await createClientInteractive({
+ *   uri: 'http://cozy.tools:8080',
+ *   scope: ['io.cozy.bills'],
+ *   oauth: {
+ *     softwareID: 'my-cli-application-using-bills'
+ *   }
+ * })
  * ```
+ *
+ * @returns {Promise<CozyClient>} - A client that is ready with a token
  */
-var fetchPolicies = {
-  /**
-   * Returns a fetchPolicy that will only re-fetch queries that are older
-   * than `<delay>` ms.
-   *
-   * @param  {number} delay - Milliseconds since the query has been fetched
-   * @returns {Function} Fetch policy to be used with `<Query />`
-   */
-  olderThan: function olderThan(delay) {
-    return function (queryState) {
-      if (!queryState || !queryState.lastUpdate) {
-        return true;
-      } else {
-        var elapsed = Date.now() - queryState.lastUpdate;
-        return elapsed > delay;
-      }
-    };
-  },
-
-  /**
-   * Fetch policy that deactivates any fetching.
-   */
-  noFetch: function noFetch() {
-    return false;
-  }
-};
-var _default = fetchPolicies;
-exports.default = _default;
 
-/***/ }),
-/* 687 */
-/***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
+var createClientInteractive = function createClientInteractive(clientOptions, serverOpts) {
+  global.fetch = nodeFetch;
+  global.btoa = btoa;
+  var serverOptions = (0, _merge.default)(DEFAULT_SERVER_OPTIONS, serverOpts);
+  var createClientFS = serverOptions.fs || _fs.default;
+  var mergedClientOptions = (0, _merge.default)({
+    oauth: {
+      clientName: 'cli-client',
+      redirectURI: "http://localhost:".concat(serverOptions.port).concat(serverOptions.route)
+    }
+  }, clientOptions);
 
+  if (!clientOptions.scope) {
+    throw new Error('scope must be provided in client options');
+  }
 
-var _interopRequireDefault = __webpack_require__(1);
+  var getSavedCredentials = serverOptions.getSavedCredentials;
+  var savedCredentialsFilename = getSavedCredentials(mergedClientOptions);
+  var savedCredentials = readJSON(createClientFS, savedCredentialsFilename);
+  log('debug', "Starting OAuth flow");
+  return new Promise( /*#__PURE__*/function () {
+    var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(resolve, reject) {
+      var client;
+      return _regenerator.default.wrap(function _callee$(_context) {
+        while (1) {
+          switch (_context.prev = _context.next) {
+            case 0:
+              client = new _CozyClient.default(mergedClientOptions);
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
+              if (!savedCredentials) {
+                _context.next = 7;
+                break;
+              }
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+              log('debug', "Using saved credentials in ".concat(savedCredentialsFilename));
+              client.stackClient.setToken(savedCredentials.token);
+              client.stackClient.setOAuthOptions(savedCredentials.oauthOptions);
+              resolve(client);
+              return _context.abrupt("return");
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+            case 7:
+              _context.next = 9;
+              return client.startOAuthFlow(mkServerFlowCallback(serverOptions));
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+            case 9:
+              resolve(client);
+              log('debug', "Saving credentials to ".concat(savedCredentialsFilename));
+              writeJSON(createClientFS, savedCredentialsFilename, {
+                oauthOptions: client.stackClient.oauthOptions,
+                token: client.stackClient.token
+              });
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+            case 12:
+            case "end":
+              return _context.stop();
+          }
+        }
+      }, _callee);
+    }));
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+    return function (_x, _x2) {
+      return _ref.apply(this, arguments);
+    };
+  }());
+};
 
-var _keyBy = _interopRequireDefault(__webpack_require__(633));
+exports.createClientInteractive = createClientInteractive;
 
-var _mapValues = _interopRequireDefault(__webpack_require__(298));
+var main = /*#__PURE__*/function () {
+  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
+    var client;
+    return _regenerator.default.wrap(function _callee2$(_context2) {
+      while (1) {
+        switch (_context2.prev = _context2.next) {
+          case 0:
+            _context2.next = 2;
+            return createClientInteractive({
+              scope: ['io.cozy.files'],
+              uri: 'http://cozy.tools:8080',
+              oauth: {
+                softwareID: 'io.cozy.client.cli'
+              }
+            });
 
-var _merge = _interopRequireDefault(__webpack_require__(532));
+          case 2:
+            client = _context2.sent;
+            console.log(client.toJSON());
 
-var _size = _interopRequireDefault(__webpack_require__(688));
+          case 4:
+          case "end":
+            return _context2.stop();
+        }
+      }
+    }, _callee2);
+  }));
 
-var _intersectionBy = _interopRequireDefault(__webpack_require__(692));
+  return function main() {
+    return _ref2.apply(this, arguments);
+  };
+}();
 
-var _associations = __webpack_require__(625);
+if (__webpack_require__.c[__webpack_require__.s] === module) {
+  main().catch(function (e) {
+    console.error(e);
+    process.exit(1);
+  });
+}
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(197)(module)))
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+/***/ }),
+/* 718 */
+/***/ (function(module, exports) {
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+module.exports = require("http");
 
-/**
- * @typedef {object} DoctypeSchema
- */
+/***/ }),
+/* 719 */
+/***/ (function(module, exports, __webpack_require__) {
 
-/**
- * @typedef {Record<string, DoctypeSchema>} SchemaDefinition
- */
+"use strict";
+/* WEBPACK VAR INJECTION */(function(__dirname) {
+const {promisify} = __webpack_require__(218);
+const path = __webpack_require__(720);
+const childProcess = __webpack_require__(721);
+const fs = __webpack_require__(722);
+const isWsl = __webpack_require__(723);
+const isDocker = __webpack_require__(724);
 
-/**
- * Returns a normalized schema object from the schema definition.
- *
- * - Relationships are resolved to classes if needed
- * - The name of the relationship (its key in the schema definition)
- *   is included in the relationship
- * - Empty relationships are nulled
- *
- * @private
- */
-var normalizeDoctypeSchema = function normalizeDoctypeSchema(doctypeSchema) {
-  var relationships = (0, _mapValues.default)(doctypeSchema.relationships || {}, function (v, k) {
-    return _objectSpread(_objectSpread({}, v), {}, {
-      name: k,
-      type: (0, _associations.resolveClass)(v.doctype, v.type)
-    });
-  });
-  return _objectSpread(_objectSpread({}, doctypeSchema), {}, {
-    relationships: (0, _size.default)(relationships) > 0 ? (0, _keyBy.default)(relationships, 'name') : null
-  });
-};
+const pAccess = promisify(fs.access);
+const pReadFile = promisify(fs.readFile);
 
-var assert = function assert(predicate, errorMessage) {
-  if (!predicate) throw new Error(errorMessage);
-};
+// Path to included `xdg-open`.
+const localXdgOpenPath = path.join(__dirname, 'xdg-open');
 
-var ensureCanBeAdded = function ensureCanBeAdded(newSchemas, existingSchemas) {
-  var sameNames = (0, _intersectionBy.default)(newSchemas, existingSchemas, function (x) {
-    return x.name;
-  });
-  assert(sameNames.length === 0, "Duplicated names in schemas being added: ".concat(sameNames.map(function (x) {
-    return x.name;
-  }).join(', ')));
-  var sameDoctypes = (0, _intersectionBy.default)(newSchemas, existingSchemas, function (x) {
-    return x.doctype;
-  });
-  assert(sameDoctypes.length === 0, "Duplicated doctypes in schemas being added: ".concat(sameDoctypes.map(function (x) {
-    return x.name;
-  }).join(', ')));
-};
 /**
- * Stores information on a particular doctype.
- *
- * - Attribute validation
- * - Relationship access
- *
- * ```js
- * const schema = new Schema({
- *   todos: {
- *     attributes: {
- *       label: {
- *         unique: true
- *       }
- *     },
- *     relationships: {
- *       author: 'has-one-in-place'
- *     }
- *   }
- * }, cozyStackClient)
- * ```
- */
+Get the mount point for fixed drives in WSL.
 
+@inner
+@returns {string} The mount point.
+*/
+const getWslDrivesMountPoint = (() => {
+	// Default value for "root" param
+	// according to https://docs.microsoft.com/en-us/windows/wsl/wsl-config
+	const defaultMountPoint = '/mnt/';
 
-var Schema = /*#__PURE__*/function () {
-  /**
-   * @param  {SchemaDefinition} schemaDefinition - Schema for the application documents
-   * @param  {object} client - An instance of cozy client (optional)
-   */
-  function Schema() {
-    var schemaDefinition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-    var client = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
-    (0, _classCallCheck2.default)(this, Schema);
-    this.byDoctype = {};
-    this.add(schemaDefinition);
-    this.client = client;
-  }
-  /**
-   * @param {SchemaDefinition} schemaDefinition - Additional schema to merge to current schema
-   */
+	let mountPoint;
 
+	return async function () {
+		if (mountPoint) {
+			// Return memoized mount point value
+			return mountPoint;
+		}
 
-  (0, _createClass2.default)(Schema, [{
-    key: "add",
-    value: function add() {
-      var schemaDefinition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-      var normalizedSchemaDefinition = (0, _mapValues.default)(schemaDefinition, function (obj, name) {
-        return _objectSpread({
-          name: name
-        }, normalizeDoctypeSchema(obj));
-      });
-      ensureCanBeAdded(Object.values(normalizedSchemaDefinition), Object.values(this.byDoctype));
-      (0, _merge.default)(this.byDoctype, (0, _keyBy.default)(normalizedSchemaDefinition, function (x) {
-        return x.doctype;
-      }));
-    }
-    /**
-     * Returns the schema for a doctype
-     *
-     * Creates an empty schema implicitly if it does not exist
-     *
-     * @param {string} doctype - Doctype
-     */
+		const configFilePath = '/etc/wsl.conf';
 
-  }, {
-    key: "getDoctypeSchema",
-    value: function getDoctypeSchema(doctype) {
-      var schema = this.byDoctype[doctype];
+		let isConfigFileExists = false;
+		try {
+			await pAccess(configFilePath, fs.constants.F_OK);
+			isConfigFileExists = true;
+		} catch (_) {}
 
-      if (!schema) {
-        schema = normalizeDoctypeSchema({
-          name: doctype,
-          doctype: doctype
-        });
-        this.byDoctype[doctype] = schema;
-      }
+		if (!isConfigFileExists) {
+			return defaultMountPoint;
+		}
 
-      return schema;
-    }
-    /**
-     * Returns the relationship for a given doctype/name
-     *
-     * @param {string} doctype - Doctype
-     * @param {string} relationshipName - Relationship name
-     */
+		const configContent = await pReadFile(configFilePath, {encoding: 'utf8'});
+		const configMountPoint = /root\s*=\s*(.*)/g.exec(configContent);
 
-  }, {
-    key: "getRelationship",
-    value: function getRelationship(doctype, relationshipName) {
-      if (!doctype) {
-        throw new TypeError("Invalid doctype ".concat(doctype));
-      }
+		if (!configMountPoint) {
+			return defaultMountPoint;
+		}
 
-      var schema = this.getDoctypeSchema(doctype);
+		mountPoint = configMountPoint[1].trim();
+		mountPoint = mountPoint.endsWith('/') ? mountPoint : mountPoint + '/';
 
-      if (!schema) {
-        throw new Error("Cannot find doctype ".concat(doctype, " in schema"));
-      }
+		return mountPoint;
+	};
+})();
 
-      if (!schema.relationships) {
-        throw new Error("Schema for doctype ".concat(doctype, " has no relationships"));
-      }
+module.exports = async (target, options) => {
+	if (typeof target !== 'string') {
+		throw new TypeError('Expected a `target`');
+	}
 
-      return schema.relationships[relationshipName];
-    }
-    /**
-     * Validates a document considering the descriptions in schema.attributes.
-     */
+	options = {
+		wait: false,
+		background: false,
+		allowNonzeroExitCode: false,
+		...options
+	};
 
-  }, {
-    key: "validate",
-    value: function () {
-      var _validate = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(document) {
-        var errors, schema, n, ret;
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                errors = {};
-                schema = this.byDoctype[document._type];
+	let command;
+	let {app} = options;
+	let appArguments = [];
+	const cliArguments = [];
+	const childProcessOptions = {};
 
-                if (schema) {
-                  _context.next = 4;
-                  break;
-                }
+	if (Array.isArray(app)) {
+		appArguments = app.slice(1);
+		app = app[0];
+	}
 
-                return _context.abrupt("return", true);
+	if (process.platform === 'darwin') {
+		command = 'open';
 
-              case 4:
-                if (schema.attributes) {
-                  _context.next = 6;
-                  break;
-                }
+		if (options.wait) {
+			cliArguments.push('--wait-apps');
+		}
 
-                return _context.abrupt("return", true);
+		if (options.background) {
+			cliArguments.push('--background');
+		}
 
-              case 6:
-                _context.t0 = _regenerator.default.keys(schema.attributes);
+		if (app) {
+			cliArguments.push('-a', app);
+		}
+	} else if (process.platform === 'win32' || (isWsl && !isDocker())) {
+		const mountPoint = await getWslDrivesMountPoint();
 
-              case 7:
-                if ((_context.t1 = _context.t0()).done) {
-                  _context.next = 15;
-                  break;
-                }
+		command = isWsl ?
+			`${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe` :
+			`${process.env.SYSTEMROOT}\\System32\\WindowsPowerShell\\v1.0\\powershell`;
 
-                n = _context.t1.value;
-                _context.next = 11;
-                return this.validateAttribute(document, n, schema.attributes[n]);
+		cliArguments.push(
+			'-NoProfile',
+			'-NonInteractive',
+			'–ExecutionPolicy',
+			'Bypass',
+			'-EncodedCommand'
+		);
 
-              case 11:
-                ret = _context.sent;
-                if (ret !== true) errors[n] = ret;
-                _context.next = 7;
-                break;
+		if (!isWsl) {
+			childProcessOptions.windowsVerbatimArguments = true;
+		}
 
-              case 15:
-                if (!(Object.keys(errors).length === 0)) {
-                  _context.next = 17;
-                  break;
-                }
+		const encodedArguments = ['Start'];
 
-                return _context.abrupt("return", true);
+		if (options.wait) {
+			encodedArguments.push('-Wait');
+		}
 
-              case 17:
-                return _context.abrupt("return", errors);
+		if (app) {
+			// Double quote with double quotes to ensure the inner quotes are passed through.
+			// Inner quotes are delimited for PowerShell interpretation with backticks.
+			encodedArguments.push(`"\`"${app}\`""`, '-ArgumentList');
+			appArguments.unshift(target);
+		} else {
+			encodedArguments.push(`"${target}"`);
+		}
 
-              case 18:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee, this);
-      }));
+		if (appArguments.length > 0) {
+			appArguments = appArguments.map(arg => `"\`"${arg}\`""`);
+			encodedArguments.push(appArguments.join(','));
+		}
 
-      function validate(_x) {
-        return _validate.apply(this, arguments);
-      }
+		// Using Base64-encoded command, accepted by PowerShell, to allow special characters.
+		target = Buffer.from(encodedArguments.join(' '), 'utf16le').toString('base64');
+	} else {
+		if (app) {
+			command = app;
+		} else {
+			// When bundled by Webpack, there's no actual package file path and no local `xdg-open`.
+			const isBundled =  false || __dirname === '/';
 
-      return validate;
-    }()
-  }, {
-    key: "validateAttribute",
-    value: function () {
-      var _validateAttribute = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(document, attrName, attrProps) {
-        var ret;
-        return _regenerator.default.wrap(function _callee2$(_context2) {
-          while (1) {
-            switch (_context2.prev = _context2.next) {
-              case 0:
-                if (!(attrProps.unique && this.client)) {
-                  _context2.next = 6;
-                  break;
-                }
+			// Check if local `xdg-open` exists and is executable.
+			let exeLocalXdgOpen = false;
+			try {
+				await pAccess(localXdgOpenPath, fs.constants.X_OK);
+				exeLocalXdgOpen = true;
+			} catch (_) {}
 
-                _context2.next = 3;
-                return this.client.collection(document._type).checkUniquenessOf(attrName, document[attrName]);
+			const useSystemXdgOpen = process.versions.electron ||
+				process.platform === 'android' || isBundled || !exeLocalXdgOpen;
+			command = useSystemXdgOpen ? 'xdg-open' : localXdgOpenPath;
+		}
 
-              case 3:
-                ret = _context2.sent;
+		if (appArguments.length > 0) {
+			cliArguments.push(...appArguments);
+		}
 
-                if (!(ret !== true)) {
-                  _context2.next = 6;
-                  break;
-                }
+		if (!options.wait) {
+			// `xdg-open` will block the process unless stdio is ignored
+			// and it's detached from the parent even if it's unref'd.
+			childProcessOptions.stdio = 'ignore';
+			childProcessOptions.detached = true;
+		}
+	}
 
-                return _context2.abrupt("return", 'must be unique');
+	cliArguments.push(target);
 
-              case 6:
-                return _context2.abrupt("return", true);
+	if (process.platform === 'darwin' && appArguments.length > 0) {
+		cliArguments.push('--args', ...appArguments);
+	}
 
-              case 7:
-              case "end":
-                return _context2.stop();
-            }
-          }
-        }, _callee2, this);
-      }));
+	const subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);
 
-      function validateAttribute(_x2, _x3, _x4) {
-        return _validateAttribute.apply(this, arguments);
-      }
+	if (options.wait) {
+		return new Promise((resolve, reject) => {
+			subprocess.once('error', reject);
 
-      return validateAttribute;
-    }()
-  }]);
-  return Schema;
-}();
+			subprocess.once('close', exitCode => {
+				if (options.allowNonzeroExitCode && exitCode > 0) {
+					reject(new Error(`Exited with code ${exitCode}`));
+					return;
+				}
 
-var _default = Schema;
-exports.default = _default;
+				resolve(subprocess);
+			});
+		});
+	}
+
+	subprocess.unref();
+
+	return subprocess;
+};
+
+/* WEBPACK VAR INJECTION */}.call(this, "/"))
 
 /***/ }),
-/* 688 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 720 */
+/***/ (function(module, exports) {
 
-var baseKeys = __webpack_require__(333),
-    getTag = __webpack_require__(390),
-    isArrayLike = __webpack_require__(337),
-    isString = __webpack_require__(651),
-    stringSize = __webpack_require__(689);
+module.exports = require("path");
 
-/** `Object#toString` result references. */
-var mapTag = '[object Map]',
-    setTag = '[object Set]';
+/***/ }),
+/* 721 */
+/***/ (function(module, exports) {
 
-/**
- * Gets the size of `collection` by returning its length for array-like
- * values or the number of own enumerable string keyed properties for objects.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object|string} collection The collection to inspect.
- * @returns {number} Returns the collection size.
- * @example
- *
- * _.size([1, 2, 3]);
- * // => 3
- *
- * _.size({ 'a': 1, 'b': 2 });
- * // => 2
- *
- * _.size('pebbles');
- * // => 7
- */
-function size(collection) {
-  if (collection == null) {
-    return 0;
-  }
-  if (isArrayLike(collection)) {
-    return isString(collection) ? stringSize(collection) : collection.length;
-  }
-  var tag = getTag(collection);
-  if (tag == mapTag || tag == setTag) {
-    return collection.size;
-  }
-  return baseKeys(collection).length;
-}
+module.exports = require("child_process");
 
-module.exports = size;
+/***/ }),
+/* 722 */
+/***/ (function(module, exports) {
 
+module.exports = require("fs");
 
 /***/ }),
-/* 689 */
+/* 723 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var asciiSize = __webpack_require__(690),
-    hasUnicode = __webpack_require__(675),
-    unicodeSize = __webpack_require__(691);
-
-/**
- * Gets the number of symbols in `string`.
- *
- * @private
- * @param {string} string The string to inspect.
- * @returns {number} Returns the string size.
- */
-function stringSize(string) {
-  return hasUnicode(string)
-    ? unicodeSize(string)
-    : asciiSize(string);
-}
+"use strict";
 
-module.exports = stringSize;
+const os = __webpack_require__(227);
+const fs = __webpack_require__(722);
+const isDocker = __webpack_require__(724);
 
+const isWsl = () => {
+	if (process.platform !== 'linux') {
+		return false;
+	}
 
-/***/ }),
-/* 690 */
-/***/ (function(module, exports, __webpack_require__) {
+	if (os.release().toLowerCase().includes('microsoft')) {
+		if (isDocker()) {
+			return false;
+		}
 
-var baseProperty = __webpack_require__(416);
+		return true;
+	}
 
-/**
- * Gets the size of an ASCII `string`.
- *
- * @private
- * @param {string} string The string inspect.
- * @returns {number} Returns the string size.
- */
-var asciiSize = baseProperty('length');
+	try {
+		return fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft') ?
+			!isDocker() : false;
+	} catch (_) {
+		return false;
+	}
+};
 
-module.exports = asciiSize;
+if (process.env.__IS_WSL_TEST__) {
+	module.exports = isWsl;
+} else {
+	module.exports = isWsl();
+}
 
 
 /***/ }),
-/* 691 */
-/***/ (function(module, exports) {
+/* 724 */
+/***/ (function(module, exports, __webpack_require__) {
 
-/** Used to compose unicode character classes. */
-var rsAstralRange = '\\ud800-\\udfff',
-    rsComboMarksRange = '\\u0300-\\u036f',
-    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
-    rsComboSymbolsRange = '\\u20d0-\\u20ff',
-    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
-    rsVarRange = '\\ufe0e\\ufe0f';
+"use strict";
 
-/** Used to compose unicode capture groups. */
-var rsAstral = '[' + rsAstralRange + ']',
-    rsCombo = '[' + rsComboRange + ']',
-    rsFitz = '\\ud83c[\\udffb-\\udfff]',
-    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
-    rsNonAstral = '[^' + rsAstralRange + ']',
-    rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
-    rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
-    rsZWJ = '\\u200d';
+const fs = __webpack_require__(722);
 
-/** Used to compose unicode regexes. */
-var reOptMod = rsModifier + '?',
-    rsOptVar = '[' + rsVarRange + ']?',
-    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
-    rsSeq = rsOptVar + reOptMod + rsOptJoin,
-    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
+let isDocker;
 
-/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
-var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
+function hasDockerEnv() {
+	try {
+		fs.statSync('/.dockerenv');
+		return true;
+	} catch (_) {
+		return false;
+	}
+}
 
-/**
- * Gets the size of a Unicode `string`.
- *
- * @private
- * @param {string} string The string inspect.
- * @returns {number} Returns the string size.
- */
-function unicodeSize(string) {
-  var result = reUnicode.lastIndex = 0;
-  while (reUnicode.test(string)) {
-    ++result;
-  }
-  return result;
+function hasDockerCGroup() {
+	try {
+		return fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');
+	} catch (_) {
+		return false;
+	}
 }
 
-module.exports = unicodeSize;
+module.exports = () => {
+	if (isDocker === undefined) {
+		isDocker = hasDockerEnv() || hasDockerCGroup();
+	}
+
+	return isDocker;
+};
 
 
 /***/ }),
-/* 692 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 725 */
+/***/ (function(module, exports) {
 
-var arrayMap = __webpack_require__(409),
-    baseIntersection = __webpack_require__(642),
-    baseIteratee = __webpack_require__(338),
-    baseRest = __webpack_require__(433),
-    castArrayLikeObject = __webpack_require__(643),
-    last = __webpack_require__(525);
+module.exports = enableDestroy;
 
-/**
- * This method is like `_.intersection` except that it accepts `iteratee`
- * which is invoked for each element of each `arrays` to generate the criterion
- * by which they're compared. The order and references of result values are
- * determined by the first array. The iteratee is invoked with one argument:
- * (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns the new array of intersecting values.
- * @example
- *
- * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);
- * // => [2.1]
- *
- * // The `_.property` iteratee shorthand.
- * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
- * // => [{ 'x': 1 }]
- */
-var intersectionBy = baseRest(function(arrays) {
-  var iteratee = last(arrays),
-      mapped = arrayMap(arrays, castArrayLikeObject);
+function enableDestroy(server) {
+  var connections = {}
 
-  if (iteratee === last(mapped)) {
-    iteratee = undefined;
-  } else {
-    mapped.pop();
-  }
-  return (mapped.length && mapped[0] === arrays[0])
-    ? baseIntersection(mapped, baseIteratee(iteratee, 2))
-    : [];
-});
+  server.on('connection', function(conn) {
+    var key = conn.remoteAddress + ':' + conn.remotePort;
+    connections[key] = conn;
+    conn.on('close', function() {
+      delete connections[key];
+    });
+  });
 
-module.exports = intersectionBy;
+  server.destroy = function(cb) {
+    server.close(cb);
+    for (var key in connections)
+      connections[key].destroy();
+  };
+}
 
 
 /***/ }),
-/* 693 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 726 */
+/***/ (function(__webpack_module__, __webpack_exports__, __webpack_require__) {
 
 "use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Headers", function() { return Headers; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Request", function() { return Request; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Response", function() { return Response; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FetchError", function() { return FetchError; });
+/* harmony import */ var stream__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(517);
+/* harmony import */ var http__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(718);
+/* harmony import */ var url__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(727);
+/* harmony import */ var whatwg_url__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(728);
+/* harmony import */ var https__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(737);
+/* harmony import */ var zlib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(738);
 
 
-var _interopRequireDefault = __webpack_require__(1);
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-var _get = _interopRequireDefault(__webpack_require__(399));
+// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js
 
-var _store = __webpack_require__(627);
+// fix for "Readable" isn't a named export issue
+const Readable = stream__WEBPACK_IMPORTED_MODULE_0__.Readable;
 
-/**
- * ObservableQueries are the glue between the store and observers
- * of the store. They have the responsibility to hydrate the documents
- * before passing them to the React component.
- */
-var hasOwn = Object.prototype.hasOwnProperty;
+const BUFFER = Symbol('buffer');
+const TYPE = Symbol('type');
 
-var ObservableQuery = /*#__PURE__*/function () {
-  function ObservableQuery(queryId, definition, client, options) {
-    var _this = this;
+class Blob {
+	constructor() {
+		this[TYPE] = '';
 
-    (0, _classCallCheck2.default)(this, ObservableQuery);
-    (0, _defineProperty2.default)(this, "handleStoreChange", function () {
-      var nextResult = _this.currentRawResult();
+		const blobParts = arguments[0];
+		const options = arguments[1];
 
-      if (!shallowEqual(nextResult, _this.lastResult)) {
-        _this.lastResult = nextResult;
+		const buffers = [];
+		let size = 0;
 
-        _this.notifyObservers();
-      }
-    });
+		if (blobParts) {
+			const a = blobParts;
+			const length = Number(a.length);
+			for (let i = 0; i < length; i++) {
+				const element = a[i];
+				let buffer;
+				if (element instanceof Buffer) {
+					buffer = element;
+				} else if (ArrayBuffer.isView(element)) {
+					buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);
+				} else if (element instanceof ArrayBuffer) {
+					buffer = Buffer.from(element);
+				} else if (element instanceof Blob) {
+					buffer = element[BUFFER];
+				} else {
+					buffer = Buffer.from(typeof element === 'string' ? element : String(element));
+				}
+				size += buffer.length;
+				buffers.push(buffer);
+			}
+		}
 
-    if (!queryId || !definition || !client) {
-      throw new Error('ObservableQuery takes 3 arguments: queryId, definition and client');
-    }
+		this[BUFFER] = Buffer.concat(buffers);
 
-    this.queryId = queryId;
-    this.definition = definition;
-    this.client = client;
-    this.observers = {};
-    this.idCounter = 1;
-    this.lastResult = this.currentRawResult();
-    this.options = options;
-  }
+		let type = options && options.type !== undefined && String(options.type).toLowerCase();
+		if (type && !/[^\u0020-\u007E]/.test(type)) {
+			this[TYPE] = type;
+		}
+	}
+	get size() {
+		return this[BUFFER].length;
+	}
+	get type() {
+		return this[TYPE];
+	}
+	text() {
+		return Promise.resolve(this[BUFFER].toString());
+	}
+	arrayBuffer() {
+		const buf = this[BUFFER];
+		const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+		return Promise.resolve(ab);
+	}
+	stream() {
+		const readable = new Readable();
+		readable._read = function () {};
+		readable.push(this[BUFFER]);
+		readable.push(null);
+		return readable;
+	}
+	toString() {
+		return '[object Blob]';
+	}
+	slice() {
+		const size = this.size;
 
-  (0, _createClass2.default)(ObservableQuery, [{
-    key: "currentResult",
+		const start = arguments[0];
+		const end = arguments[1];
+		let relativeStart, relativeEnd;
+		if (start === undefined) {
+			relativeStart = 0;
+		} else if (start < 0) {
+			relativeStart = Math.max(size + start, 0);
+		} else {
+			relativeStart = Math.min(start, size);
+		}
+		if (end === undefined) {
+			relativeEnd = size;
+		} else if (end < 0) {
+			relativeEnd = Math.max(size + end, 0);
+		} else {
+			relativeEnd = Math.min(end, size);
+		}
+		const span = Math.max(relativeEnd - relativeStart, 0);
 
-    /**
-     * Returns the query from the store with hydrated documents.
-     *
-     * @typedef {object} HydratedQueryState
-     *
-     * @returns {HydratedQueryState}
-     */
-    value: function currentResult() {
-      return this.client.getQueryFromState(this.queryId, {
-        hydrated: (0, _get.default)(this.options, 'hydrated', true),
-        singleDocData: true
-      });
-    }
-  }, {
-    key: "fetch",
-    value: function fetch() {
-      return this.client.query(this.definition, {
-        as: this.queryId
-      });
-    }
-    /**
-     * Generates and executes a query that is offsetted by the number of documents
-     * we have in the store.
-     */
+		const buffer = this[BUFFER];
+		const slicedBuffer = buffer.slice(relativeStart, relativeStart + span);
+		const blob = new Blob([], { type: arguments[2] });
+		blob[BUFFER] = slicedBuffer;
+		return blob;
+	}
+}
 
-  }, {
-    key: "fetchMore",
-    value: function fetchMore() {
-      var rawResult = this.currentRawResult();
-      return rawResult.bookmark ? this.client.query(this.definition.offsetBookmark(rawResult.bookmark), {
-        as: this.queryId
-      }) : this.client.query(this.definition.offset(rawResult.data.length), {
-        as: this.queryId
-      });
-    }
-  }, {
-    key: "currentRawResult",
-    value: function currentRawResult() {
-      return (0, _store.getRawQueryFromState)(this.getStore().getState(), this.queryId);
-    }
-  }, {
-    key: "notifyObservers",
-    value: function notifyObservers() {
-      var _this2 = this;
+Object.defineProperties(Blob.prototype, {
+	size: { enumerable: true },
+	type: { enumerable: true },
+	slice: { enumerable: true }
+});
 
-      Object.keys(this.observers).forEach(function (id) {
-        return _this2.observers[id]();
-      });
-    }
-  }, {
-    key: "subscribeToStore",
-    value: function subscribeToStore() {
-      if (this._unsubscribeStore) {
-        throw new Error('ObservableQuery instance is already subscribed to store.');
-      }
+Object.defineProperty(Blob.prototype, Symbol.toStringTag, {
+	value: 'Blob',
+	writable: false,
+	enumerable: false,
+	configurable: true
+});
 
-      this._unsubscribeStore = this.getStore().subscribe(this.handleStoreChange);
-    }
-  }, {
-    key: "unsubscribeFromStore",
-    value: function unsubscribeFromStore() {
-      if (!this._unsubscribeStore) {
-        throw new Error('ObservableQuery instance is not subscribed to store');
-      }
+/**
+ * fetch-error.js
+ *
+ * FetchError interface for operational errors
+ */
 
-      this._unsubscribeStore();
-    }
-  }, {
-    key: "subscribe",
-    value: function subscribe(callback) {
-      var _this3 = this;
+/**
+ * Create FetchError instance
+ *
+ * @param   String      message      Error message for human
+ * @param   String      type         Error type for machine
+ * @param   String      systemError  For Node.js system error
+ * @return  FetchError
+ */
+function FetchError(message, type, systemError) {
+  Error.call(this, message);
 
-      var callbackId = this.idCounter;
-      this.idCounter++;
-      this.observers[callbackId] = callback;
+  this.message = message;
+  this.type = type;
 
-      if (Object.keys(this.observers).length === 1) {
-        this.subscribeToStore();
-      }
+  // when err.type is `system`, err.code contains system error code
+  if (systemError) {
+    this.code = this.errno = systemError.code;
+  }
 
-      return function () {
-        return _this3.unsubscribe(callbackId);
-      };
-    }
-  }, {
-    key: "unsubscribe",
-    value: function unsubscribe(callbackId) {
-      if (!this.observers[callbackId]) {
-        throw new Error("Cannot unsubscribe unknown callbackId ".concat(callbackId));
-      }
+  // hide custom error implementation details from end-users
+  Error.captureStackTrace(this, this.constructor);
+}
 
-      delete this.observers[callbackId];
+FetchError.prototype = Object.create(Error.prototype);
+FetchError.prototype.constructor = FetchError;
+FetchError.prototype.name = 'FetchError';
 
-      if (Object.keys(this.observers).length === 0) {
-        this.unsubscribeFromStore();
-        this._unsubscribeStore = null;
-      }
-    }
-  }, {
-    key: "getStore",
-    value: function getStore() {
-      return this.client.store;
-    }
-  }]);
-  return ObservableQuery;
-}();
+let convert;
+try {
+	convert = require('encoding').convert;
+} catch (e) {}
 
-exports.default = ObservableQuery;
+const INTERNALS = Symbol('Body internals');
 
-function is(x, y) {
-  if (x === y) {
-    return x !== 0 || y !== 0 || 1 / x === 1 / y;
-  } else {
-    return x !== x && y !== y;
-  }
-}
+// fix an issue where "PassThrough" isn't a named export for node <10
+const PassThrough = stream__WEBPACK_IMPORTED_MODULE_0__.PassThrough;
 
-function shallowEqual(objA, objB) {
-  if (is(objA, objB)) return true;
+/**
+ * Body mixin
+ *
+ * Ref: https://fetch.spec.whatwg.org/#body
+ *
+ * @param   Stream  body  Readable stream
+ * @param   Object  opts  Response options
+ * @return  Void
+ */
+function Body(body) {
+	var _this = this;
 
-  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
-    return false;
-  }
+	var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+	    _ref$size = _ref.size;
 
-  var keysA = Object.keys(objA);
-  var keysB = Object.keys(objB);
-  if (keysA.length !== keysB.length) return false;
+	let size = _ref$size === undefined ? 0 : _ref$size;
+	var _ref$timeout = _ref.timeout;
+	let timeout = _ref$timeout === undefined ? 0 : _ref$timeout;
 
-  for (var i = 0; i < keysA.length; i++) {
-    if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
-      return false;
-    }
-  }
+	if (body == null) {
+		// body is undefined or null
+		body = null;
+	} else if (isURLSearchParams(body)) {
+		// body is a URLSearchParams
+		body = Buffer.from(body.toString());
+	} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
+		// body is ArrayBuffer
+		body = Buffer.from(body);
+	} else if (ArrayBuffer.isView(body)) {
+		// body is ArrayBufferView
+		body = Buffer.from(body.buffer, body.byteOffset, body.byteLength);
+	} else if (body instanceof stream__WEBPACK_IMPORTED_MODULE_0__) ; else {
+		// none of the above
+		// coerce to string then buffer
+		body = Buffer.from(String(body));
+	}
+	this[INTERNALS] = {
+		body,
+		disturbed: false,
+		error: null
+	};
+	this.size = size;
+	this.timeout = timeout;
 
-  return true;
+	if (body instanceof stream__WEBPACK_IMPORTED_MODULE_0__) {
+		body.on('error', function (err) {
+			const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);
+			_this[INTERNALS].error = error;
+		});
+	}
 }
 
-/***/ }),
-/* 694 */
-/***/ (function(module, exports, __webpack_require__) {
+Body.prototype = {
+	get body() {
+		return this[INTERNALS].body;
+	},
 
-"use strict";
+	get bodyUsed() {
+		return this[INTERNALS].disturbed;
+	},
 
+	/**
+  * Decode response as ArrayBuffer
+  *
+  * @return  Promise
+  */
+	arrayBuffer() {
+		return consumeBody.call(this).then(function (buf) {
+			return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+		});
+	},
 
-var _interopRequireDefault = __webpack_require__(1);
+	/**
+  * Return raw response as Blob
+  *
+  * @return Promise
+  */
+	blob() {
+		let ct = this.headers && this.headers.get('content-type') || '';
+		return consumeBody.call(this).then(function (buf) {
+			return Object.assign(
+			// Prevent copying
+			new Blob([], {
+				type: ct.toLowerCase()
+			}), {
+				[BUFFER]: buf
+			});
+		});
+	},
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.CozyClient = void 0;
+	/**
+  * Decode response as json
+  *
+  * @return  Promise
+  */
+	json() {
+		var _this2 = this;
 
-var _inherits2 = _interopRequireDefault(__webpack_require__(480));
+		return consumeBody.call(this).then(function (buffer) {
+			try {
+				return JSON.parse(buffer.toString());
+			} catch (err) {
+				return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));
+			}
+		});
+	},
 
-var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(482));
+	/**
+  * Decode response as text
+  *
+  * @return  Promise
+  */
+	text() {
+		return consumeBody.call(this).then(function (buffer) {
+			return buffer.toString();
+		});
+	},
 
-var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(484));
+	/**
+  * Decode response as buffer (non-spec api)
+  *
+  * @return  Promise
+  */
+	buffer() {
+		return consumeBody.call(this);
+	},
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+	/**
+  * Decode response as text, while automatically detecting the encoding and
+  * trying to decode to UTF-8 (non-spec api)
+  *
+  * @return  Promise
+  */
+	textConverted() {
+		var _this3 = this;
 
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
+		return consumeBody.call(this).then(function (buffer) {
+			return convertBody(buffer, _this3.headers);
+		});
+	}
+};
 
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+// In browsers, all properties are enumerable.
+Object.defineProperties(Body.prototype, {
+	body: { enumerable: true },
+	bodyUsed: { enumerable: true },
+	arrayBuffer: { enumerable: true },
+	blob: { enumerable: true },
+	json: { enumerable: true },
+	text: { enumerable: true }
+});
 
-var SnapshotObject = function SnapshotObject(attrs) {
-  (0, _classCallCheck2.default)(this, SnapshotObject);
-  Object.assign(this, attrs);
+Body.mixIn = function (proto) {
+	for (const name of Object.getOwnPropertyNames(Body.prototype)) {
+		// istanbul ignore else: future proof
+		if (!(name in proto)) {
+			const desc = Object.getOwnPropertyDescriptor(Body.prototype, name);
+			Object.defineProperty(proto, name, desc);
+		}
+	}
 };
 
-var CozyClient = /*#__PURE__*/function (_SnapshotObject) {
-  (0, _inherits2.default)(CozyClient, _SnapshotObject);
+/**
+ * Consume and convert an entire Body to a Buffer.
+ *
+ * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body
+ *
+ * @return  Promise
+ */
+function consumeBody() {
+	var _this4 = this;
 
-  var _super = _createSuper(CozyClient);
+	if (this[INTERNALS].disturbed) {
+		return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));
+	}
 
-  function CozyClient() {
-    (0, _classCallCheck2.default)(this, CozyClient);
-    return _super.apply(this, arguments);
-  }
+	this[INTERNALS].disturbed = true;
 
-  return CozyClient;
-}(SnapshotObject);
+	if (this[INTERNALS].error) {
+		return Body.Promise.reject(this[INTERNALS].error);
+	}
 
-exports.CozyClient = CozyClient;
+	let body = this.body;
 
-/***/ }),
-/* 695 */
-/***/ (function(module, exports, __webpack_require__) {
+	// body is null
+	if (body === null) {
+		return Body.Promise.resolve(Buffer.alloc(0));
+	}
 
-var json = typeof JSON !== 'undefined' ? JSON : __webpack_require__(696);
+	// body is blob
+	if (isBlob(body)) {
+		body = body.stream();
+	}
 
-module.exports = function (obj, opts) {
-    if (!opts) opts = {};
-    if (typeof opts === 'function') opts = { cmp: opts };
-    var space = opts.space || '';
-    if (typeof space === 'number') space = Array(space+1).join(' ');
-    var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;
-    var replacer = opts.replacer || function(key, value) { return value; };
+	// body is buffer
+	if (Buffer.isBuffer(body)) {
+		return Body.Promise.resolve(body);
+	}
 
-    var cmp = opts.cmp && (function (f) {
-        return function (node) {
-            return function (a, b) {
-                var aobj = { key: a, value: node[a] };
-                var bobj = { key: b, value: node[b] };
-                return f(aobj, bobj);
-            };
-        };
-    })(opts.cmp);
+	// istanbul ignore if: should never happen
+	if (!(body instanceof stream__WEBPACK_IMPORTED_MODULE_0__)) {
+		return Body.Promise.resolve(Buffer.alloc(0));
+	}
 
-    var seen = [];
-    return (function stringify (parent, key, node, level) {
-        var indent = space ? ('\n' + new Array(level + 1).join(space)) : '';
-        var colonSeparator = space ? ': ' : ':';
+	// body is stream
+	// get ready to actually consume the body
+	let accum = [];
+	let accumBytes = 0;
+	let abort = false;
 
-        if (node && node.toJSON && typeof node.toJSON === 'function') {
-            node = node.toJSON();
-        }
+	return new Body.Promise(function (resolve, reject) {
+		let resTimeout;
 
-        node = replacer.call(parent, key, node);
+		// allow timeout on slow response body
+		if (_this4.timeout) {
+			resTimeout = setTimeout(function () {
+				abort = true;
+				reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));
+			}, _this4.timeout);
+		}
 
-        if (node === undefined) {
-            return;
-        }
-        if (typeof node !== 'object' || node === null) {
-            return json.stringify(node);
-        }
-        if (isArray(node)) {
-            var out = [];
-            for (var i = 0; i < node.length; i++) {
-                var item = stringify(node, i, node[i], level+1) || json.stringify(null);
-                out.push(indent + space + item);
-            }
-            return '[' + out.join(',') + indent + ']';
-        }
-        else {
-            if (seen.indexOf(node) !== -1) {
-                if (cycles) return json.stringify('__cycle__');
-                throw new TypeError('Converting circular structure to JSON');
-            }
-            else seen.push(node);
+		// handle stream errors
+		body.on('error', function (err) {
+			if (err.name === 'AbortError') {
+				// if the request was aborted, reject with this Error
+				abort = true;
+				reject(err);
+			} else {
+				// other errors, such as incorrect content-encoding
+				reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));
+			}
+		});
 
-            var keys = objectKeys(node).sort(cmp && cmp(node));
-            var out = [];
-            for (var i = 0; i < keys.length; i++) {
-                var key = keys[i];
-                var value = stringify(node, key, node[key], level+1);
+		body.on('data', function (chunk) {
+			if (abort || chunk === null) {
+				return;
+			}
 
-                if(!value) continue;
+			if (_this4.size && accumBytes + chunk.length > _this4.size) {
+				abort = true;
+				reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));
+				return;
+			}
 
-                var keyValue = json.stringify(key)
-                    + colonSeparator
-                    + value;
-                ;
-                out.push(indent + space + keyValue);
-            }
-            seen.splice(seen.indexOf(node), 1);
-            return '{' + out.join(',') + indent + '}';
-        }
-    })({ '': obj }, '', obj, 0);
-};
+			accumBytes += chunk.length;
+			accum.push(chunk);
+		});
 
-var isArray = Array.isArray || function (x) {
-    return {}.toString.call(x) === '[object Array]';
-};
+		body.on('end', function () {
+			if (abort) {
+				return;
+			}
 
-var objectKeys = Object.keys || function (obj) {
-    var has = Object.prototype.hasOwnProperty || function () { return true };
-    var keys = [];
-    for (var key in obj) {
-        if (has.call(obj, key)) keys.push(key);
-    }
-    return keys;
-};
+			clearTimeout(resTimeout);
 
+			try {
+				resolve(Buffer.concat(accum, accumBytes));
+			} catch (err) {
+				// handle streams that have accumulated too much data (issue #414)
+				reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));
+			}
+		});
+	});
+}
 
-/***/ }),
-/* 696 */
-/***/ (function(module, exports, __webpack_require__) {
+/**
+ * Detect buffer encoding and convert to target encoding
+ * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding
+ *
+ * @param   Buffer  buffer    Incoming buffer
+ * @param   String  encoding  Target encoding
+ * @return  String
+ */
+function convertBody(buffer, headers) {
+	if (typeof convert !== 'function') {
+		throw new Error('The package `encoding` must be installed to use the textConverted() function');
+	}
 
-exports.parse = __webpack_require__(697);
-exports.stringify = __webpack_require__(698);
+	const ct = headers.get('content-type');
+	let charset = 'utf-8';
+	let res, str;
 
+	// header
+	if (ct) {
+		res = /charset=([^;]*)/i.exec(ct);
+	}
 
-/***/ }),
-/* 697 */
-/***/ (function(module, exports) {
+	// no charset in content type, peek at response body for at most 1024 bytes
+	str = buffer.slice(0, 1024).toString();
 
-var at, // The index of the current character
-    ch, // The current character
-    escapee = {
-        '"':  '"',
-        '\\': '\\',
-        '/':  '/',
-        b:    '\b',
-        f:    '\f',
-        n:    '\n',
-        r:    '\r',
-        t:    '\t'
-    },
-    text,
+	// html5
+	if (!res && str) {
+		res = /<meta.+?charset=(['"])(.+?)\1/i.exec(str);
+	}
 
-    error = function (m) {
-        // Call error when something is wrong.
-        throw {
-            name:    'SyntaxError',
-            message: m,
-            at:      at,
-            text:    text
-        };
-    },
-    
-    next = function (c) {
-        // If a c parameter is provided, verify that it matches the current character.
-        if (c && c !== ch) {
-            error("Expected '" + c + "' instead of '" + ch + "'");
-        }
-        
-        // Get the next character. When there are no more characters,
-        // return the empty string.
-        
-        ch = text.charAt(at);
-        at += 1;
-        return ch;
-    },
-    
-    number = function () {
-        // Parse a number value.
-        var number,
-            string = '';
-        
-        if (ch === '-') {
-            string = '-';
-            next('-');
-        }
-        while (ch >= '0' && ch <= '9') {
-            string += ch;
-            next();
-        }
-        if (ch === '.') {
-            string += '.';
-            while (next() && ch >= '0' && ch <= '9') {
-                string += ch;
-            }
-        }
-        if (ch === 'e' || ch === 'E') {
-            string += ch;
-            next();
-            if (ch === '-' || ch === '+') {
-                string += ch;
-                next();
-            }
-            while (ch >= '0' && ch <= '9') {
-                string += ch;
-                next();
-            }
-        }
-        number = +string;
-        if (!isFinite(number)) {
-            error("Bad number");
-        } else {
-            return number;
-        }
-    },
-    
-    string = function () {
-        // Parse a string value.
-        var hex,
-            i,
-            string = '',
-            uffff;
-        
-        // When parsing for string values, we must look for " and \ characters.
-        if (ch === '"') {
-            while (next()) {
-                if (ch === '"') {
-                    next();
-                    return string;
-                } else if (ch === '\\') {
-                    next();
-                    if (ch === 'u') {
-                        uffff = 0;
-                        for (i = 0; i < 4; i += 1) {
-                            hex = parseInt(next(), 16);
-                            if (!isFinite(hex)) {
-                                break;
-                            }
-                            uffff = uffff * 16 + hex;
-                        }
-                        string += String.fromCharCode(uffff);
-                    } else if (typeof escapee[ch] === 'string') {
-                        string += escapee[ch];
-                    } else {
-                        break;
-                    }
-                } else {
-                    string += ch;
-                }
-            }
-        }
-        error("Bad string");
-    },
+	// html4
+	if (!res && str) {
+		res = /<meta[\s]+?http-equiv=(['"])content-type\1[\s]+?content=(['"])(.+?)\2/i.exec(str);
+		if (!res) {
+			res = /<meta[\s]+?content=(['"])(.+?)\1[\s]+?http-equiv=(['"])content-type\3/i.exec(str);
+			if (res) {
+				res.pop(); // drop last quote
+			}
+		}
 
-    white = function () {
+		if (res) {
+			res = /charset=(.*)/i.exec(res.pop());
+		}
+	}
 
-// Skip whitespace.
+	// xml
+	if (!res && str) {
+		res = /<\?xml.+?encoding=(['"])(.+?)\1/i.exec(str);
+	}
 
-        while (ch && ch <= ' ') {
-            next();
-        }
-    },
+	// found charset
+	if (res) {
+		charset = res.pop();
 
-    word = function () {
+		// prevent decode issues when sites use incorrect encoding
+		// ref: https://hsivonen.fi/encoding-menu/
+		if (charset === 'gb2312' || charset === 'gbk') {
+			charset = 'gb18030';
+		}
+	}
 
-// true, false, or null.
+	// turn raw buffers into a single utf-8 buffer
+	return convert(buffer, 'UTF-8', charset).toString();
+}
 
-        switch (ch) {
-        case 't':
-            next('t');
-            next('r');
-            next('u');
-            next('e');
-            return true;
-        case 'f':
-            next('f');
-            next('a');
-            next('l');
-            next('s');
-            next('e');
-            return false;
-        case 'n':
-            next('n');
-            next('u');
-            next('l');
-            next('l');
-            return null;
-        }
-        error("Unexpected '" + ch + "'");
-    },
+/**
+ * Detect a URLSearchParams object
+ * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143
+ *
+ * @param   Object  obj     Object to detect by type or brand
+ * @return  String
+ */
+function isURLSearchParams(obj) {
+	// Duck-typing as a necessary condition.
+	if (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {
+		return false;
+	}
 
-    value,  // Place holder for the value function.
+	// Brand-checking and more duck-typing as optional condition.
+	return obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';
+}
 
-    array = function () {
+/**
+ * Check if `obj` is a W3C `Blob` object (which `File` inherits from)
+ * @param  {*} obj
+ * @return {boolean}
+ */
+function isBlob(obj) {
+	return typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);
+}
 
-// Parse an array value.
+/**
+ * Clone body given Res/Req instance
+ *
+ * @param   Mixed  instance  Response or Request instance
+ * @return  Mixed
+ */
+function clone(instance) {
+	let p1, p2;
+	let body = instance.body;
 
-        var array = [];
+	// don't allow cloning a used body
+	if (instance.bodyUsed) {
+		throw new Error('cannot clone body after it is used');
+	}
 
-        if (ch === '[') {
-            next('[');
-            white();
-            if (ch === ']') {
-                next(']');
-                return array;   // empty array
-            }
-            while (ch) {
-                array.push(value());
-                white();
-                if (ch === ']') {
-                    next(']');
-                    return array;
-                }
-                next(',');
-                white();
-            }
-        }
-        error("Bad array");
-    },
+	// check that body is a stream and not form-data object
+	// note: we can't clone the form-data object without having it as a dependency
+	if (body instanceof stream__WEBPACK_IMPORTED_MODULE_0__ && typeof body.getBoundary !== 'function') {
+		// tee instance body
+		p1 = new PassThrough();
+		p2 = new PassThrough();
+		body.pipe(p1);
+		body.pipe(p2);
+		// set instance body to teed body and return the other teed body
+		instance[INTERNALS].body = p1;
+		body = p2;
+	}
 
-    object = function () {
+	return body;
+}
 
-// Parse an object value.
+/**
+ * Performs the operation "extract a `Content-Type` value from |object|" as
+ * specified in the specification:
+ * https://fetch.spec.whatwg.org/#concept-bodyinit-extract
+ *
+ * This function assumes that instance.body is present.
+ *
+ * @param   Mixed  instance  Any options.body input
+ */
+function extractContentType(body) {
+	if (body === null) {
+		// body is null
+		return null;
+	} else if (typeof body === 'string') {
+		// body is string
+		return 'text/plain;charset=UTF-8';
+	} else if (isURLSearchParams(body)) {
+		// body is a URLSearchParams
+		return 'application/x-www-form-urlencoded;charset=UTF-8';
+	} else if (isBlob(body)) {
+		// body is blob
+		return body.type || null;
+	} else if (Buffer.isBuffer(body)) {
+		// body is buffer
+		return null;
+	} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
+		// body is ArrayBuffer
+		return null;
+	} else if (ArrayBuffer.isView(body)) {
+		// body is ArrayBufferView
+		return null;
+	} else if (typeof body.getBoundary === 'function') {
+		// detect form data input from form-data module
+		return `multipart/form-data;boundary=${body.getBoundary()}`;
+	} else if (body instanceof stream__WEBPACK_IMPORTED_MODULE_0__) {
+		// body is stream
+		// can't really do much about this
+		return null;
+	} else {
+		// Body constructor defaults other things to string
+		return 'text/plain;charset=UTF-8';
+	}
+}
 
-        var key,
-            object = {};
+/**
+ * The Fetch Standard treats this as if "total bytes" is a property on the body.
+ * For us, we have to explicitly get it with a function.
+ *
+ * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes
+ *
+ * @param   Body    instance   Instance of Body
+ * @return  Number?            Number of bytes, or null if not possible
+ */
+function getTotalBytes(instance) {
+	const body = instance.body;
 
-        if (ch === '{') {
-            next('{');
-            white();
-            if (ch === '}') {
-                next('}');
-                return object;   // empty object
-            }
-            while (ch) {
-                key = string();
-                white();
-                next(':');
-                if (Object.hasOwnProperty.call(object, key)) {
-                    error('Duplicate key "' + key + '"');
-                }
-                object[key] = value();
-                white();
-                if (ch === '}') {
-                    next('}');
-                    return object;
-                }
-                next(',');
-                white();
-            }
-        }
-        error("Bad object");
-    };
 
-value = function () {
+	if (body === null) {
+		// body is null
+		return 0;
+	} else if (isBlob(body)) {
+		return body.size;
+	} else if (Buffer.isBuffer(body)) {
+		// body is buffer
+		return body.length;
+	} else if (body && typeof body.getLengthSync === 'function') {
+		// detect form data input from form-data module
+		if (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x
+		body.hasKnownLength && body.hasKnownLength()) {
+			// 2.x
+			return body.getLengthSync();
+		}
+		return null;
+	} else {
+		// body is stream
+		return null;
+	}
+}
 
-// Parse a JSON value. It could be an object, an array, a string, a number,
-// or a word.
+/**
+ * Write a Body to a Node.js WritableStream (e.g. http.Request) object.
+ *
+ * @param   Body    instance   Instance of Body
+ * @return  Void
+ */
+function writeToStream(dest, instance) {
+	const body = instance.body;
 
-    white();
-    switch (ch) {
-    case '{':
-        return object();
-    case '[':
-        return array();
-    case '"':
-        return string();
-    case '-':
-        return number();
-    default:
-        return ch >= '0' && ch <= '9' ? number() : word();
-    }
-};
 
-// Return the json_parse function. It will have access to all of the above
-// functions and variables.
-
-module.exports = function (source, reviver) {
-    var result;
-    
-    text = source;
-    at = 0;
-    ch = ' ';
-    result = value();
-    white();
-    if (ch) {
-        error("Syntax error");
-    }
-
-    // If there is a reviver function, we recursively walk the new structure,
-    // passing each name/value pair to the reviver function for possible
-    // transformation, starting with a temporary root object that holds the result
-    // in an empty key. If there is not a reviver function, we simply return the
-    // result.
-
-    return typeof reviver === 'function' ? (function walk(holder, key) {
-        var k, v, value = holder[key];
-        if (value && typeof value === 'object') {
-            for (k in value) {
-                if (Object.prototype.hasOwnProperty.call(value, k)) {
-                    v = walk(value, k);
-                    if (v !== undefined) {
-                        value[k] = v;
-                    } else {
-                        delete value[k];
-                    }
-                }
-            }
-        }
-        return reviver.call(holder, key, value);
-    }({'': result}, '')) : result;
-};
+	if (body === null) {
+		// body is null
+		dest.end();
+	} else if (isBlob(body)) {
+		body.stream().pipe(dest);
+	} else if (Buffer.isBuffer(body)) {
+		// body is buffer
+		dest.write(body);
+		dest.end();
+	} else {
+		// body is stream
+		body.pipe(dest);
+	}
+}
 
+// expose Promise
+Body.Promise = global.Promise;
 
-/***/ }),
-/* 698 */
-/***/ (function(module, exports) {
+/**
+ * headers.js
+ *
+ * Headers class offers convenient helpers
+ */
 
-var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
-    escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
-    gap,
-    indent,
-    meta = {    // table of character substitutions
-        '\b': '\\b',
-        '\t': '\\t',
-        '\n': '\\n',
-        '\f': '\\f',
-        '\r': '\\r',
-        '"' : '\\"',
-        '\\': '\\\\'
-    },
-    rep;
+const invalidTokenRegex = /[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/;
+const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/;
 
-function quote(string) {
-    // If the string contains no control characters, no quote characters, and no
-    // backslash characters, then we can safely slap some quotes around it.
-    // Otherwise we must also replace the offending characters with safe escape
-    // sequences.
-    
-    escapable.lastIndex = 0;
-    return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
-        var c = meta[a];
-        return typeof c === 'string' ? c :
-            '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
-    }) + '"' : '"' + string + '"';
+function validateName(name) {
+	name = `${name}`;
+	if (invalidTokenRegex.test(name) || name === '') {
+		throw new TypeError(`${name} is not a legal HTTP header name`);
+	}
 }
 
-function str(key, holder) {
-    // Produce a string from holder[key].
-    var i,          // The loop counter.
-        k,          // The member key.
-        v,          // The member value.
-        length,
-        mind = gap,
-        partial,
-        value = holder[key];
-    
-    // If the value has a toJSON method, call it to obtain a replacement value.
-    if (value && typeof value === 'object' &&
-            typeof value.toJSON === 'function') {
-        value = value.toJSON(key);
-    }
-    
-    // If we were called with a replacer function, then call the replacer to
-    // obtain a replacement value.
-    if (typeof rep === 'function') {
-        value = rep.call(holder, key, value);
-    }
-    
-    // What happens next depends on the value's type.
-    switch (typeof value) {
-        case 'string':
-            return quote(value);
-        
-        case 'number':
-            // JSON numbers must be finite. Encode non-finite numbers as null.
-            return isFinite(value) ? String(value) : 'null';
-        
-        case 'boolean':
-        case 'null':
-            // If the value is a boolean or null, convert it to a string. Note:
-            // typeof null does not produce 'null'. The case is included here in
-            // the remote chance that this gets fixed someday.
-            return String(value);
-            
-        case 'object':
-            if (!value) return 'null';
-            gap += indent;
-            partial = [];
-            
-            // Array.isArray
-            if (Object.prototype.toString.apply(value) === '[object Array]') {
-                length = value.length;
-                for (i = 0; i < length; i += 1) {
-                    partial[i] = str(i, value) || 'null';
-                }
-                
-                // Join all of the elements together, separated with commas, and
-                // wrap them in brackets.
-                v = partial.length === 0 ? '[]' : gap ?
-                    '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' :
-                    '[' + partial.join(',') + ']';
-                gap = mind;
-                return v;
-            }
-            
-            // If the replacer is an array, use it to select the members to be
-            // stringified.
-            if (rep && typeof rep === 'object') {
-                length = rep.length;
-                for (i = 0; i < length; i += 1) {
-                    k = rep[i];
-                    if (typeof k === 'string') {
-                        v = str(k, value);
-                        if (v) {
-                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
-                        }
-                    }
-                }
-            }
-            else {
-                // Otherwise, iterate through all of the keys in the object.
-                for (k in value) {
-                    if (Object.prototype.hasOwnProperty.call(value, k)) {
-                        v = str(k, value);
-                        if (v) {
-                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
-                        }
-                    }
-                }
-            }
-            
-        // Join all of the member texts together, separated with commas,
-        // and wrap them in braces.
-
-        v = partial.length === 0 ? '{}' : gap ?
-            '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' :
-            '{' + partial.join(',') + '}';
-        gap = mind;
-        return v;
-    }
+function validateValue(value) {
+	value = `${value}`;
+	if (invalidHeaderCharRegex.test(value)) {
+		throw new TypeError(`${value} is not a legal HTTP header value`);
+	}
 }
 
-module.exports = function (value, replacer, space) {
-    var i;
-    gap = '';
-    indent = '';
-    
-    // If the space parameter is a number, make an indent string containing that
-    // many spaces.
-    if (typeof space === 'number') {
-        for (i = 0; i < space; i += 1) {
-            indent += ' ';
-        }
-    }
-    // If the space parameter is a string, it will be used as the indent string.
-    else if (typeof space === 'string') {
-        indent = space;
-    }
+/**
+ * Find the key in the map object given a header name.
+ *
+ * Returns undefined if not found.
+ *
+ * @param   String  name  Header name
+ * @return  String|Undefined
+ */
+function find(map, name) {
+	name = name.toLowerCase();
+	for (const key in map) {
+		if (key.toLowerCase() === name) {
+			return key;
+		}
+	}
+	return undefined;
+}
 
-    // If there is a replacer, it must be a function or an array.
-    // Otherwise, throw an error.
-    rep = replacer;
-    if (replacer && typeof replacer !== 'function'
-    && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) {
-        throw new Error('JSON.stringify');
-    }
-    
-    // Make a fake root object containing our value under the key of ''.
-    // Return the result of stringifying the value.
-    return str('', {'': value});
-};
+const MAP = Symbol('map');
+class Headers {
+	/**
+  * Headers class
+  *
+  * @param   Object  headers  Response headers
+  * @return  Void
+  */
+	constructor() {
+		let init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
 
+		this[MAP] = Object.create(null);
 
-/***/ }),
-/* 699 */
-/***/ (function(module, exports, __webpack_require__) {
+		if (init instanceof Headers) {
+			const rawHeaders = init.raw();
+			const headerNames = Object.keys(rawHeaders);
 
-"use strict";
+			for (const headerName of headerNames) {
+				for (const value of rawHeaders[headerName]) {
+					this.append(headerName, value);
+				}
+			}
 
+			return;
+		}
 
-var _interopRequireDefault = __webpack_require__(1);
+		// We don't worry about converting prop to ByteString here as append()
+		// will handle it.
+		if (init == null) ; else if (typeof init === 'object') {
+			const method = init[Symbol.iterator];
+			if (method != null) {
+				if (typeof method !== 'function') {
+					throw new TypeError('Header pairs must be iterable');
+				}
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
+				// sequence<sequence<ByteString>>
+				// Note: per spec we have to first exhaust the lists then process them
+				const pairs = [];
+				for (const pair of init) {
+					if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {
+						throw new TypeError('Each header pair must be iterable');
+					}
+					pairs.push(Array.from(pair));
+				}
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+				for (const pair of pairs) {
+					if (pair.length !== 2) {
+						throw new TypeError('Each header pair must be a name/value tuple');
+					}
+					this.append(pair[0], pair[1]);
+				}
+			} else {
+				// record<ByteString, ByteString>
+				for (const key of Object.keys(init)) {
+					const value = init[key];
+					this.append(key, value);
+				}
+			}
+		} else {
+			throw new TypeError('Provided initializer must be an object');
+		}
+	}
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+	/**
+  * Return combined header value given name
+  *
+  * @param   String  name  Header name
+  * @return  Mixed
+  */
+	get(name) {
+		name = `${name}`;
+		validateName(name);
+		const key = find(this[MAP], name);
+		if (key === undefined) {
+			return null;
+		}
 
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
+		return this[MAP][key].join(', ');
+	}
 
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
+	/**
+  * Iterate over all headers
+  *
+  * @param   Function  callback  Executed for each item with parameters (value, name, thisArg)
+  * @param   Boolean   thisArg   `this` context for callback function
+  * @return  Void
+  */
+	forEach(callback) {
+		let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
 
-/**
- * Caches promises while they are pending
- * Serves to dedupe equal queries requested at the same time
- */
-var PromiseCache = /*#__PURE__*/function () {
-  function PromiseCache() {
-    (0, _classCallCheck2.default)(this, PromiseCache);
+		let pairs = getHeaders(this);
+		let i = 0;
+		while (i < pairs.length) {
+			var _pairs$i = pairs[i];
+			const name = _pairs$i[0],
+			      value = _pairs$i[1];
 
-    /**
-     * Holds pending promises
-     *
-     * @type {Object.<string, Promise>}
-     */
-    this.pending = {};
-  }
-  /**
-   * Tries to find a pending promise corresponding to the result of keyFunc
-   * - If not found, promiseFunc is executed and the resulting promise is stored while it's pending
-   * - If found, it is immediately returned
-   *
-   * @template T
-   * @param  {function(): Promise<T>} promiseFunc - Not executed only if an "equal" promise is already pending.
-   * @param  {function(): string} keyFunc - Returns a key to find in cache to find a pending promise.
-   * @returns {Promise<T>}
-   */
+			callback.call(thisArg, value, name, this);
+			pairs = getHeaders(this);
+			i++;
+		}
+	}
 
+	/**
+  * Overwrite header values given name
+  *
+  * @param   String  name   Header name
+  * @param   String  value  Header value
+  * @return  Void
+  */
+	set(name, value) {
+		name = `${name}`;
+		value = `${value}`;
+		validateName(name);
+		validateValue(value);
+		const key = find(this[MAP], name);
+		this[MAP][key !== undefined ? key : name] = [value];
+	}
 
-  (0, _createClass2.default)(PromiseCache, [{
-    key: "exec",
-    value: function () {
-      var _exec = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(promiseFunc, keyFunc) {
-        var key, already, prom, response;
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                key = keyFunc();
-                already = this.pending[key];
+	/**
+  * Append a value onto existing header
+  *
+  * @param   String  name   Header name
+  * @param   String  value  Header value
+  * @return  Void
+  */
+	append(name, value) {
+		name = `${name}`;
+		value = `${value}`;
+		validateName(name);
+		validateValue(value);
+		const key = find(this[MAP], name);
+		if (key !== undefined) {
+			this[MAP][key].push(value);
+		} else {
+			this[MAP][name] = [value];
+		}
+	}
 
-                if (already) {
-                  prom = already;
-                } else {
-                  prom = promiseFunc();
-                  this.pending[key] = prom;
-                }
+	/**
+  * Check for header name existence
+  *
+  * @param   String   name  Header name
+  * @return  Boolean
+  */
+	has(name) {
+		name = `${name}`;
+		validateName(name);
+		return find(this[MAP], name) !== undefined;
+	}
 
-                _context.prev = 3;
-                _context.next = 6;
-                return prom;
+	/**
+  * Delete all header values given name
+  *
+  * @param   String  name  Header name
+  * @return  Void
+  */
+	delete(name) {
+		name = `${name}`;
+		validateName(name);
+		const key = find(this[MAP], name);
+		if (key !== undefined) {
+			delete this[MAP][key];
+		}
+	}
 
-              case 6:
-                response = _context.sent;
-                return _context.abrupt("return", response);
+	/**
+  * Return raw headers (non-spec api)
+  *
+  * @return  Object
+  */
+	raw() {
+		return this[MAP];
+	}
 
-              case 8:
-                _context.prev = 8;
-                this.pending[key] = null;
-                return _context.finish(8);
+	/**
+  * Get an iterator on keys.
+  *
+  * @return  Iterator
+  */
+	keys() {
+		return createHeadersIterator(this, 'key');
+	}
 
-              case 11:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee, this, [[3,, 8, 11]]);
-      }));
+	/**
+  * Get an iterator on values.
+  *
+  * @return  Iterator
+  */
+	values() {
+		return createHeadersIterator(this, 'value');
+	}
 
-      function exec(_x, _x2) {
-        return _exec.apply(this, arguments);
-      }
+	/**
+  * Get an iterator on entries.
+  *
+  * This is the default iterator of the Headers object.
+  *
+  * @return  Iterator
+  */
+	[Symbol.iterator]() {
+		return createHeadersIterator(this, 'key+value');
+	}
+}
+Headers.prototype.entries = Headers.prototype[Symbol.iterator];
 
-      return exec;
-    }()
-    /**
-     *
-     * @param {function(): string} keyFunc - Returns a key to find in cache to find a pending promise.
-     * @returns {Promise | null}
-     */
+Object.defineProperty(Headers.prototype, Symbol.toStringTag, {
+	value: 'Headers',
+	writable: false,
+	enumerable: false,
+	configurable: true
+});
 
-  }, {
-    key: "get",
-    value: function get(keyFunc) {
-      var key = keyFunc();
-      var already = this.pending[key];
-      if (already) return already;
-      return null;
-    }
-  }]);
-  return PromiseCache;
-}();
+Object.defineProperties(Headers.prototype, {
+	get: { enumerable: true },
+	forEach: { enumerable: true },
+	set: { enumerable: true },
+	append: { enumerable: true },
+	has: { enumerable: true },
+	delete: { enumerable: true },
+	keys: { enumerable: true },
+	values: { enumerable: true },
+	entries: { enumerable: true }
+});
 
-var _default = PromiseCache;
-exports.default = _default;
+function getHeaders(headers) {
+	let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';
 
-/***/ }),
-/* 700 */
-/***/ (function(module, exports, __webpack_require__) {
+	const keys = Object.keys(headers[MAP]).sort();
+	return keys.map(kind === 'key' ? function (k) {
+		return k.toLowerCase();
+	} : kind === 'value' ? function (k) {
+		return headers[MAP][k].join(', ');
+	} : function (k) {
+		return [k.toLowerCase(), headers[MAP][k].join(', ')];
+	});
+}
 
-"use strict";
+const INTERNAL = Symbol('internal');
 
+function createHeadersIterator(target, kind) {
+	const iterator = Object.create(HeadersIteratorPrototype);
+	iterator[INTERNAL] = {
+		target,
+		kind,
+		index: 0
+	};
+	return iterator;
+}
 
-var _interopRequireDefault = __webpack_require__(1);
+const HeadersIteratorPrototype = Object.setPrototypeOf({
+	next() {
+		// istanbul ignore if
+		if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {
+			throw new TypeError('Value of `this` is not a HeadersIterator');
+		}
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.certifyFlagship = void 0;
+		var _INTERNAL = this[INTERNAL];
+		const target = _INTERNAL.target,
+		      kind = _INTERNAL.kind,
+		      index = _INTERNAL.index;
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+		const values = getHeaders(target, kind);
+		const len = values.length;
+		if (index >= len) {
+			return {
+				value: undefined,
+				done: true
+			};
+		}
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+		this[INTERNAL].index = index + 1;
 
-var _CozyClient = _interopRequireDefault(__webpack_require__(279));
+		return {
+			value: values[index],
+			done: false
+		};
+	}
+}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));
 
-var _storeAttestation = __webpack_require__(701);
+Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {
+	value: 'HeadersIterator',
+	writable: false,
+	enumerable: false,
+	configurable: true
+});
 
 /**
- * Request a challenge from the Stack that can be used to request the app attestation from the app store
+ * Export the Headers object in a form that Node.js can consume.
  *
- * @param {CozyClient} client - the CozyClient instance
- * @returns {Promise<string>} - the Nonce string returned by the stack
+ * @param   Headers  headers
+ * @return  Object
  */
-var getStackChallenge = /*#__PURE__*/function () {
-  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client) {
-    var stackClient, result;
-    return _regenerator.default.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            _context.prev = 0;
-            stackClient = client.getStackClient();
-            _context.next = 4;
-            return stackClient.fetchJSON('POST', "/auth/clients/".concat(stackClient.oauthOptions.clientID, "/challenge"), null, {
-              headers: {
-                Authorization: stackClient.registrationAccessTokenToAuthHeader()
-              }
-            });
-
-          case 4:
-            result = _context.sent;
-            return _context.abrupt("return", result.nonce);
+function exportNodeCompatibleHeaders(headers) {
+	const obj = Object.assign({ __proto__: null }, headers[MAP]);
 
-          case 8:
-            _context.prev = 8;
-            _context.t0 = _context["catch"](0);
-            throw new Error('[FLAGSHIP_CERTIFICATION] Something went wrong while requesting a challenge from CozyStack:\n' + _context.t0.message);
+	// http.request() only supports string as Host header. This hack makes
+	// specifying custom Host header possible.
+	const hostHeaderKey = find(headers[MAP], 'Host');
+	if (hostHeaderKey !== undefined) {
+		obj[hostHeaderKey] = obj[hostHeaderKey][0];
+	}
 
-          case 11:
-          case "end":
-            return _context.stop();
-        }
-      }
-    }, _callee, null, [[0, 8]]);
-  }));
+	return obj;
+}
 
-  return function getStackChallenge(_x) {
-    return _ref.apply(this, arguments);
-  };
-}();
 /**
- * Give the app attestation to the Stack
+ * Create a Headers object from an object of headers, ignoring those that do
+ * not conform to HTTP grammar productions.
  *
- * @param {import("./typedefs").AttestationResult} appAttestation - the app attestation that was returned by the app store
- * @param {string} nonce - the Nonce string retrieved from the stack
- * @param {CozyClient} client - the CozyClient instance
+ * @param   Object  obj  Object of headers
+ * @return  Headers
  */
+function createHeadersLenient(obj) {
+	const headers = new Headers();
+	for (const name of Object.keys(obj)) {
+		if (invalidTokenRegex.test(name)) {
+			continue;
+		}
+		if (Array.isArray(obj[name])) {
+			for (const val of obj[name]) {
+				if (invalidHeaderCharRegex.test(val)) {
+					continue;
+				}
+				if (headers[MAP][name] === undefined) {
+					headers[MAP][name] = [val];
+				} else {
+					headers[MAP][name].push(val);
+				}
+			}
+		} else if (!invalidHeaderCharRegex.test(obj[name])) {
+			headers[MAP][name] = [obj[name]];
+		}
+	}
+	return headers;
+}
 
+const INTERNALS$1 = Symbol('Response internals');
 
-var giveAppAttestationToStack = /*#__PURE__*/function () {
-  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(appAttestation, nonce, client) {
-    var platform, attestation, keyId, stackClient;
-    return _regenerator.default.wrap(function _callee2$(_context2) {
-      while (1) {
-        switch (_context2.prev = _context2.next) {
-          case 0:
-            _context2.prev = 0;
-            platform = appAttestation.platform, attestation = appAttestation.attestation, keyId = appAttestation.keyId;
-            stackClient = client.getStackClient();
-            _context2.next = 5;
-            return stackClient.fetchJSON('POST', "/auth/clients/".concat(stackClient.oauthOptions.clientID, "/attestation"), {
-              platform: platform,
-              attestation: attestation,
-              challenge: nonce,
-              keyId: keyId
-            }, {
-              headers: {
-                Authorization: stackClient.registrationAccessTokenToAuthHeader()
-              }
-            });
-
-          case 5:
-            _context2.next = 10;
-            break;
-
-          case 7:
-            _context2.prev = 7;
-            _context2.t0 = _context2["catch"](0);
-            throw new Error('[FLAGSHIP_CERTIFICATION] Something went wrong while giving attestation to CozyStack:\n' + _context2.t0.message);
-
-          case 10:
-          case "end":
-            return _context2.stop();
-        }
-      }
-    }, _callee2, null, [[0, 7]]);
-  }));
+// fix an issue where "STATUS_CODES" aren't a named export for node <10
+const STATUS_CODES = http__WEBPACK_IMPORTED_MODULE_1__.STATUS_CODES;
 
-  return function giveAppAttestationToStack(_x2, _x3, _x4) {
-    return _ref2.apply(this, arguments);
-  };
-}();
 /**
- * Verify app's identity and integrity so the Stack can trust it
- * Verification is done on Stack side by using information from the app's store (Google Play or Apple AppStore)
+ * Response class
  *
- * @param {import("./typedefs").CertificationConfig} certificationConfig - the required configuration to access the stores API
- * @param {CozyClient} client - the CozyClient instance
+ * @param   Stream  body  Readable stream
+ * @param   Object  opts  Response options
+ * @return  Void
  */
+class Response {
+	constructor() {
+		let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+		let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
 
+		Body.call(this, body, opts);
 
-var certifyFlagship = /*#__PURE__*/function () {
-  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(certificationConfig, client) {
-    var stackChallengeNonce, appAttestation;
-    return _regenerator.default.wrap(function _callee3$(_context3) {
-      while (1) {
-        switch (_context3.prev = _context3.next) {
-          case 0:
-            if (certificationConfig) {
-              _context3.next = 2;
-              break;
-            }
-
-            throw new Error('[FLAGSHIP_CERTIFICATION] Certification configuration is not set');
-
-          case 2:
-            _context3.prev = 2;
-            _context3.next = 5;
-            return getStackChallenge(client);
+		const status = opts.status || 200;
+		const headers = new Headers(opts.headers);
 
-          case 5:
-            stackChallengeNonce = _context3.sent;
-            _context3.next = 8;
-            return (0, _storeAttestation.getAppAttestationFromStore)(stackChallengeNonce, certificationConfig);
+		if (body != null && !headers.has('Content-Type')) {
+			const contentType = extractContentType(body);
+			if (contentType) {
+				headers.append('Content-Type', contentType);
+			}
+		}
 
-          case 8:
-            appAttestation = _context3.sent;
-            _context3.next = 11;
-            return giveAppAttestationToStack(appAttestation, stackChallengeNonce, client);
+		this[INTERNALS$1] = {
+			url: opts.url,
+			status,
+			statusText: opts.statusText || STATUS_CODES[status],
+			headers,
+			counter: opts.counter
+		};
+	}
 
-          case 11:
-            _context3.next = 17;
-            break;
+	get url() {
+		return this[INTERNALS$1].url || '';
+	}
 
-          case 13:
-            _context3.prev = 13;
-            _context3.t0 = _context3["catch"](2);
-            console.warn("[FLAGSHIP_CERTIFICATION] Certification for URI \"".concat(client.stackClient.uri, "\" failed but the cozy-stack will continue with 2FA certification"));
-            console.warn(_context3.t0.message);
+	get status() {
+		return this[INTERNALS$1].status;
+	}
 
-          case 17:
-          case "end":
-            return _context3.stop();
-        }
-      }
-    }, _callee3, null, [[2, 13]]);
-  }));
+	/**
+  * Convenience property representing if the request ended normally
+  */
+	get ok() {
+		return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;
+	}
 
-  return function certifyFlagship(_x5, _x6) {
-    return _ref3.apply(this, arguments);
-  };
-}();
+	get redirected() {
+		return this[INTERNALS$1].counter > 0;
+	}
 
-exports.certifyFlagship = certifyFlagship;
+	get statusText() {
+		return this[INTERNALS$1].statusText;
+	}
 
-/***/ }),
-/* 701 */
-/***/ (function(module, exports, __webpack_require__) {
+	get headers() {
+		return this[INTERNALS$1].headers;
+	}
 
-"use strict";
+	/**
+  * Clone this response
+  *
+  * @return  Response
+  */
+	clone() {
+		return new Response(clone(this), {
+			url: this.url,
+			status: this.status,
+			statusText: this.statusText,
+			headers: this.headers,
+			ok: this.ok,
+			redirected: this.redirected
+		});
+	}
+}
 
+Body.mixIn(Response.prototype);
 
-var _interopRequireDefault = __webpack_require__(1);
+Object.defineProperties(Response.prototype, {
+	url: { enumerable: true },
+	status: { enumerable: true },
+	ok: { enumerable: true },
+	redirected: { enumerable: true },
+	statusText: { enumerable: true },
+	headers: { enumerable: true },
+	clone: { enumerable: true }
+});
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
+Object.defineProperty(Response.prototype, Symbol.toStringTag, {
+	value: 'Response',
+	writable: false,
+	enumerable: false,
+	configurable: true
 });
-exports.getAppAttestationFromStore = void 0;
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+const INTERNALS$2 = Symbol('Request internals');
+const URL = url__WEBPACK_IMPORTED_MODULE_2__.URL || whatwg_url__WEBPACK_IMPORTED_MODULE_3__.URL;
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+// fix an issue where "format", "parse" aren't a named export for node <10
+const parse_url = url__WEBPACK_IMPORTED_MODULE_2__.parse;
+const format_url = url__WEBPACK_IMPORTED_MODULE_2__.format;
 
 /**
- * Retrieve the app's attestation from the app's store
- * /!\ This is a mock implementation that should never be called
+ * Wrapper around `new URL` to handle arbitrary URLs
  *
- * @param {string} nonce - the Nonce string retrieved from the stack
- * @param {import("./typedefs").CertificationConfig} certificationConfig - Configuration to access the stores certification API
- * @returns {Promise<import("./typedefs").AttestationResult>} the app's attestation
+ * @param  {string} urlStr
+ * @return {void}
  */
-var validateAppMock = /*#__PURE__*/function () {
-  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(nonce, certificationConfig) {
-    return _regenerator.default.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            throw new Error("getAppAttestationFromStore can only be called from a React Native container");
-
-          case 1:
-          case "end":
-            return _context.stop();
-        }
-      }
-    }, _callee);
-  }));
+function parseURL(urlStr) {
+	/*
+ 	Check whether the URL is absolute or not
+ 		Scheme: https://tools.ietf.org/html/rfc3986#section-3.1
+ 	Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3
+ */
+	if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) {
+		urlStr = new URL(urlStr).toString();
+	}
 
-  return function validateAppMock(_x, _x2) {
-    return _ref.apply(this, arguments);
-  };
-}();
+	// Fallback to old implementation for arbitrary URLs
+	return parse_url(urlStr);
+}
 
-var getAppAttestationFromStore = validateAppMock;
-exports.getAppAttestationFromStore = getAppAttestationFromStore;
+const streamDestructionSupported = 'destroy' in stream__WEBPACK_IMPORTED_MODULE_0__.Readable.prototype;
 
-/***/ }),
-/* 702 */
-/***/ (function(module, exports, __webpack_require__) {
+/**
+ * Check if a value is an instance of Request.
+ *
+ * @param   Mixed   input
+ * @return  Boolean
+ */
+function isRequest(input) {
+	return typeof input === 'object' && typeof input[INTERNALS$2] === 'object';
+}
 
-var createFlow = __webpack_require__(703);
+function isAbortSignal(signal) {
+	const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);
+	return !!(proto && proto.constructor.name === 'AbortSignal');
+}
 
 /**
- * Creates a function that returns the result of invoking the given functions
- * with the `this` binding of the created function, where each successive
- * invocation is supplied the return value of the previous.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Util
- * @param {...(Function|Function[])} [funcs] The functions to invoke.
- * @returns {Function} Returns the new composite function.
- * @see _.flowRight
- * @example
- *
- * function square(n) {
- *   return n * n;
- * }
+ * Request class
  *
- * var addSquare = _.flow([_.add, square]);
- * addSquare(1, 2);
- * // => 9
+ * @param   Mixed   input  Url or Request instance
+ * @param   Object  init   Custom options
+ * @return  Void
  */
-var flow = createFlow();
-
-module.exports = flow;
+class Request {
+	constructor(input) {
+		let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
 
+		let parsedURL;
 
-/***/ }),
-/* 703 */
-/***/ (function(module, exports, __webpack_require__) {
+		// normalize input
+		if (!isRequest(input)) {
+			if (input && input.href) {
+				// in order to support Node.js' Url objects; though WHATWG's URL objects
+				// will fall into this branch also (since their `toString()` will return
+				// `href` property anyway)
+				parsedURL = parseURL(input.href);
+			} else {
+				// coerce input to a string before attempting to parse
+				parsedURL = parseURL(`${input}`);
+			}
+			input = {};
+		} else {
+			parsedURL = parseURL(input.url);
+		}
 
-var LodashWrapper = __webpack_require__(704),
-    flatRest = __webpack_require__(530),
-    getData = __webpack_require__(706),
-    getFuncName = __webpack_require__(708),
-    isArray = __webpack_require__(324),
-    isLaziable = __webpack_require__(710);
+		let method = init.method || input.method || 'GET';
+		method = method.toUpperCase();
 
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
+		if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {
+			throw new TypeError('Request with GET/HEAD method cannot have body');
+		}
 
-/** Used to compose bitmasks for function metadata. */
-var WRAP_CURRY_FLAG = 8,
-    WRAP_PARTIAL_FLAG = 32,
-    WRAP_ARY_FLAG = 128,
-    WRAP_REARG_FLAG = 256;
+		let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;
 
-/**
- * Creates a `_.flow` or `_.flowRight` function.
- *
- * @private
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new flow function.
- */
-function createFlow(fromRight) {
-  return flatRest(function(funcs) {
-    var length = funcs.length,
-        index = length,
-        prereq = LodashWrapper.prototype.thru;
+		Body.call(this, inputBody, {
+			timeout: init.timeout || input.timeout || 0,
+			size: init.size || input.size || 0
+		});
 
-    if (fromRight) {
-      funcs.reverse();
-    }
-    while (index--) {
-      var func = funcs[index];
-      if (typeof func != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
-        var wrapper = new LodashWrapper([], true);
-      }
-    }
-    index = wrapper ? index : length;
-    while (++index < length) {
-      func = funcs[index];
+		const headers = new Headers(init.headers || input.headers || {});
 
-      var funcName = getFuncName(func),
-          data = funcName == 'wrapper' ? getData(func) : undefined;
+		if (inputBody != null && !headers.has('Content-Type')) {
+			const contentType = extractContentType(inputBody);
+			if (contentType) {
+				headers.append('Content-Type', contentType);
+			}
+		}
 
-      if (data && isLaziable(data[0]) &&
-            data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
-            !data[4].length && data[9] == 1
-          ) {
-        wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
-      } else {
-        wrapper = (func.length == 1 && isLaziable(func))
-          ? wrapper[funcName]()
-          : wrapper.thru(func);
-      }
-    }
-    return function() {
-      var args = arguments,
-          value = args[0];
-
-      if (wrapper && args.length == 1 && isArray(value)) {
-        return wrapper.plant(value).value();
-      }
-      var index = 0,
-          result = length ? funcs[index].apply(this, args) : value;
-
-      while (++index < length) {
-        result = funcs[index].call(this, result);
-      }
-      return result;
-    };
-  });
-}
-
-module.exports = createFlow;
+		let signal = isRequest(input) ? input.signal : null;
+		if ('signal' in init) signal = init.signal;
 
+		if (signal != null && !isAbortSignal(signal)) {
+			throw new TypeError('Expected signal to be an instanceof AbortSignal');
+		}
 
-/***/ }),
-/* 704 */
-/***/ (function(module, exports, __webpack_require__) {
+		this[INTERNALS$2] = {
+			method,
+			redirect: init.redirect || input.redirect || 'follow',
+			headers,
+			parsedURL,
+			signal
+		};
 
-var baseCreate = __webpack_require__(474),
-    baseLodash = __webpack_require__(705);
+		// node-fetch-only options
+		this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;
+		this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;
+		this.counter = init.counter || input.counter || 0;
+		this.agent = init.agent || input.agent;
+	}
 
-/**
- * The base constructor for creating `lodash` wrapper objects.
- *
- * @private
- * @param {*} value The value to wrap.
- * @param {boolean} [chainAll] Enable explicit method chain sequences.
- */
-function LodashWrapper(value, chainAll) {
-  this.__wrapped__ = value;
-  this.__actions__ = [];
-  this.__chain__ = !!chainAll;
-  this.__index__ = 0;
-  this.__values__ = undefined;
-}
+	get method() {
+		return this[INTERNALS$2].method;
+	}
 
-LodashWrapper.prototype = baseCreate(baseLodash.prototype);
-LodashWrapper.prototype.constructor = LodashWrapper;
+	get url() {
+		return format_url(this[INTERNALS$2].parsedURL);
+	}
 
-module.exports = LodashWrapper;
+	get headers() {
+		return this[INTERNALS$2].headers;
+	}
 
+	get redirect() {
+		return this[INTERNALS$2].redirect;
+	}
 
-/***/ }),
-/* 705 */
-/***/ (function(module, exports) {
+	get signal() {
+		return this[INTERNALS$2].signal;
+	}
 
-/**
- * The function whose prototype chain sequence wrappers inherit from.
- *
- * @private
- */
-function baseLodash() {
-  // No operation performed.
+	/**
+  * Clone this request
+  *
+  * @return  Request
+  */
+	clone() {
+		return new Request(this);
+	}
 }
 
-module.exports = baseLodash;
-
+Body.mixIn(Request.prototype);
 
-/***/ }),
-/* 706 */
-/***/ (function(module, exports, __webpack_require__) {
+Object.defineProperty(Request.prototype, Symbol.toStringTag, {
+	value: 'Request',
+	writable: false,
+	enumerable: false,
+	configurable: true
+});
 
-var metaMap = __webpack_require__(707),
-    noop = __webpack_require__(431);
+Object.defineProperties(Request.prototype, {
+	method: { enumerable: true },
+	url: { enumerable: true },
+	headers: { enumerable: true },
+	redirect: { enumerable: true },
+	clone: { enumerable: true },
+	signal: { enumerable: true }
+});
 
 /**
- * Gets metadata for `func`.
+ * Convert a Request to Node.js http request options.
  *
- * @private
- * @param {Function} func The function to query.
- * @returns {*} Returns the metadata for `func`.
+ * @param   Request  A Request instance
+ * @return  Object   The options object to be passed to http.request
  */
-var getData = !metaMap ? noop : function(func) {
-  return metaMap.get(func);
-};
+function getNodeRequestOptions(request) {
+	const parsedURL = request[INTERNALS$2].parsedURL;
+	const headers = new Headers(request[INTERNALS$2].headers);
 
-module.exports = getData;
+	// fetch step 1.3
+	if (!headers.has('Accept')) {
+		headers.set('Accept', '*/*');
+	}
 
+	// Basic fetch
+	if (!parsedURL.protocol || !parsedURL.hostname) {
+		throw new TypeError('Only absolute URLs are supported');
+	}
 
-/***/ }),
-/* 707 */
-/***/ (function(module, exports, __webpack_require__) {
+	if (!/^https?:$/.test(parsedURL.protocol)) {
+		throw new TypeError('Only HTTP(S) protocols are supported');
+	}
 
-var WeakMap = __webpack_require__(394);
+	if (request.signal && request.body instanceof stream__WEBPACK_IMPORTED_MODULE_0__.Readable && !streamDestructionSupported) {
+		throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');
+	}
 
-/** Used to store function metadata. */
-var metaMap = WeakMap && new WeakMap;
+	// HTTP-network-or-cache fetch steps 2.4-2.7
+	let contentLengthValue = null;
+	if (request.body == null && /^(POST|PUT)$/i.test(request.method)) {
+		contentLengthValue = '0';
+	}
+	if (request.body != null) {
+		const totalBytes = getTotalBytes(request);
+		if (typeof totalBytes === 'number') {
+			contentLengthValue = String(totalBytes);
+		}
+	}
+	if (contentLengthValue) {
+		headers.set('Content-Length', contentLengthValue);
+	}
 
-module.exports = metaMap;
+	// HTTP-network-or-cache fetch step 2.11
+	if (!headers.has('User-Agent')) {
+		headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');
+	}
 
+	// HTTP-network-or-cache fetch step 2.15
+	if (request.compress && !headers.has('Accept-Encoding')) {
+		headers.set('Accept-Encoding', 'gzip,deflate');
+	}
 
-/***/ }),
-/* 708 */
-/***/ (function(module, exports, __webpack_require__) {
+	let agent = request.agent;
+	if (typeof agent === 'function') {
+		agent = agent(parsedURL);
+	}
 
-var realNames = __webpack_require__(709);
+	if (!headers.has('Connection') && !agent) {
+		headers.set('Connection', 'close');
+	}
 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+	// HTTP-network fetch step 4.2
+	// chunked encoding is handled by Node.js
 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
+	return Object.assign({}, parsedURL, {
+		method: request.method,
+		headers: exportNodeCompatibleHeaders(headers),
+		agent
+	});
+}
 
 /**
- * Gets the name of `func`.
+ * abort-error.js
  *
- * @private
- * @param {Function} func The function to query.
- * @returns {string} Returns the function name.
+ * AbortError interface for cancelled requests
  */
-function getFuncName(func) {
-  var result = (func.name + ''),
-      array = realNames[result],
-      length = hasOwnProperty.call(realNames, result) ? array.length : 0;
-
-  while (length--) {
-    var data = array[length],
-        otherFunc = data.func;
-    if (otherFunc == null || otherFunc == func) {
-      return data.name;
-    }
-  }
-  return result;
-}
-
-module.exports = getFuncName;
-
-
-/***/ }),
-/* 709 */
-/***/ (function(module, exports) {
-
-/** Used to lookup unminified function names. */
-var realNames = {};
-
-module.exports = realNames;
-
-
-/***/ }),
-/* 710 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var LazyWrapper = __webpack_require__(711),
-    getData = __webpack_require__(706),
-    getFuncName = __webpack_require__(708),
-    lodash = __webpack_require__(712);
 
 /**
- * Checks if `func` has a lazy counterpart.
+ * Create AbortError instance
  *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
- *  else `false`.
+ * @param   String      message      Error message for human
+ * @return  AbortError
  */
-function isLaziable(func) {
-  var funcName = getFuncName(func),
-      other = lodash[funcName];
+function AbortError(message) {
+  Error.call(this, message);
 
-  if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
-    return false;
-  }
-  if (func === other) {
-    return true;
-  }
-  var data = getData(other);
-  return !!data && func === data[0];
+  this.type = 'aborted';
+  this.message = message;
+
+  // hide custom error implementation details from end-users
+  Error.captureStackTrace(this, this.constructor);
 }
 
-module.exports = isLaziable;
+AbortError.prototype = Object.create(Error.prototype);
+AbortError.prototype.constructor = AbortError;
+AbortError.prototype.name = 'AbortError';
 
+const URL$1 = url__WEBPACK_IMPORTED_MODULE_2__.URL || whatwg_url__WEBPACK_IMPORTED_MODULE_3__.URL;
 
-/***/ }),
-/* 711 */
-/***/ (function(module, exports, __webpack_require__) {
+// fix an issue where "PassThrough", "resolve" aren't a named export for node <10
+const PassThrough$1 = stream__WEBPACK_IMPORTED_MODULE_0__.PassThrough;
 
-var baseCreate = __webpack_require__(474),
-    baseLodash = __webpack_require__(705);
+const isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {
+	const orig = new URL$1(original).hostname;
+	const dest = new URL$1(destination).hostname;
 
-/** Used as references for the maximum length and index of an array. */
-var MAX_ARRAY_LENGTH = 4294967295;
+	return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);
+};
 
 /**
- * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
+ * Fetch function
  *
- * @private
- * @constructor
- * @param {*} value The value to wrap.
+ * @param   Mixed    url   Absolute url or Request instance
+ * @param   Object   opts  Fetch options
+ * @return  Promise
  */
-function LazyWrapper(value) {
-  this.__wrapped__ = value;
-  this.__actions__ = [];
-  this.__dir__ = 1;
-  this.__filtered__ = false;
-  this.__iteratees__ = [];
-  this.__takeCount__ = MAX_ARRAY_LENGTH;
-  this.__views__ = [];
-}
+function fetch(url, opts) {
 
-// Ensure `LazyWrapper` is an instance of `baseLodash`.
-LazyWrapper.prototype = baseCreate(baseLodash.prototype);
-LazyWrapper.prototype.constructor = LazyWrapper;
+	// allow custom promise
+	if (!fetch.Promise) {
+		throw new Error('native promise missing, set fetch.Promise to your favorite alternative');
+	}
 
-module.exports = LazyWrapper;
+	Body.Promise = fetch.Promise;
 
+	// wrap http.request into fetch
+	return new fetch.Promise(function (resolve, reject) {
+		// build request object
+		const request = new Request(url, opts);
+		const options = getNodeRequestOptions(request);
 
-/***/ }),
-/* 712 */
-/***/ (function(module, exports, __webpack_require__) {
+		const send = (options.protocol === 'https:' ? https__WEBPACK_IMPORTED_MODULE_4__ : http__WEBPACK_IMPORTED_MODULE_1__).request;
+		const signal = request.signal;
 
-var LazyWrapper = __webpack_require__(711),
-    LodashWrapper = __webpack_require__(704),
-    baseLodash = __webpack_require__(705),
-    isArray = __webpack_require__(324),
-    isObjectLike = __webpack_require__(323),
-    wrapperClone = __webpack_require__(713);
+		let response = null;
 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+		const abort = function abort() {
+			let error = new AbortError('The user aborted a request.');
+			reject(error);
+			if (request.body && request.body instanceof stream__WEBPACK_IMPORTED_MODULE_0__.Readable) {
+				request.body.destroy(error);
+			}
+			if (!response || !response.body) return;
+			response.body.emit('error', error);
+		};
 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
+		if (signal && signal.aborted) {
+			abort();
+			return;
+		}
 
-/**
- * Creates a `lodash` object which wraps `value` to enable implicit method
- * chain sequences. Methods that operate on and return arrays, collections,
- * and functions can be chained together. Methods that retrieve a single value
- * or may return a primitive value will automatically end the chain sequence
- * and return the unwrapped value. Otherwise, the value must be unwrapped
- * with `_#value`.
- *
- * Explicit chain sequences, which must be unwrapped with `_#value`, may be
- * enabled using `_.chain`.
- *
- * The execution of chained methods is lazy, that is, it's deferred until
- * `_#value` is implicitly or explicitly called.
- *
- * Lazy evaluation allows several methods to support shortcut fusion.
- * Shortcut fusion is an optimization to merge iteratee calls; this avoids
- * the creation of intermediate arrays and can greatly reduce the number of
- * iteratee executions. Sections of a chain sequence qualify for shortcut
- * fusion if the section is applied to an array and iteratees accept only
- * one argument. The heuristic for whether a section qualifies for shortcut
- * fusion is subject to change.
- *
- * Chaining is supported in custom builds as long as the `_#value` method is
- * directly or indirectly included in the build.
- *
- * In addition to lodash methods, wrappers have `Array` and `String` methods.
- *
- * The wrapper `Array` methods are:
- * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
- *
- * The wrapper `String` methods are:
- * `replace` and `split`
- *
- * The wrapper methods that support shortcut fusion are:
- * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
- * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
- * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
- *
- * The chainable wrapper methods are:
- * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
- * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
- * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
- * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
- * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
- * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
- * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
- * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
- * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
- * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
- * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
- * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
- * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
- * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
- * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
- * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
- * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
- * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
- * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
- * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
- * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
- * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
- * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
- * `zipObject`, `zipObjectDeep`, and `zipWith`
- *
- * The wrapper methods that are **not** chainable by default are:
- * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
- * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
- * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
- * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
- * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
- * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
- * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
- * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
- * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
- * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
- * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
- * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
- * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
- * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
- * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
- * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
- * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
- * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
- * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
- * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
- * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
- * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
- * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
- * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
- * `upperFirst`, `value`, and `words`
- *
- * @name _
- * @constructor
- * @category Seq
- * @param {*} value The value to wrap in a `lodash` instance.
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * function square(n) {
- *   return n * n;
- * }
- *
- * var wrapped = _([1, 2, 3]);
- *
- * // Returns an unwrapped value.
- * wrapped.reduce(_.add);
- * // => 6
- *
- * // Returns a wrapped value.
- * var squares = wrapped.map(square);
- *
- * _.isArray(squares);
- * // => false
- *
- * _.isArray(squares.value());
- * // => true
- */
-function lodash(value) {
-  if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
-    if (value instanceof LodashWrapper) {
-      return value;
-    }
-    if (hasOwnProperty.call(value, '__wrapped__')) {
-      return wrapperClone(value);
-    }
-  }
-  return new LodashWrapper(value);
-}
+		const abortAndFinalize = function abortAndFinalize() {
+			abort();
+			finalize();
+		};
 
-// Ensure wrappers are instances of `baseLodash`.
-lodash.prototype = baseLodash.prototype;
-lodash.prototype.constructor = lodash;
+		// send request
+		const req = send(options);
+		let reqTimeout;
 
-module.exports = lodash;
+		if (signal) {
+			signal.addEventListener('abort', abortAndFinalize);
+		}
 
+		function finalize() {
+			req.abort();
+			if (signal) signal.removeEventListener('abort', abortAndFinalize);
+			clearTimeout(reqTimeout);
+		}
 
-/***/ }),
-/* 713 */
-/***/ (function(module, exports, __webpack_require__) {
+		if (request.timeout) {
+			req.once('socket', function (socket) {
+				reqTimeout = setTimeout(function () {
+					reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));
+					finalize();
+				}, request.timeout);
+			});
+		}
 
-var LazyWrapper = __webpack_require__(711),
-    LodashWrapper = __webpack_require__(704),
-    copyArray = __webpack_require__(460);
+		req.on('error', function (err) {
+			reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
+			finalize();
+		});
 
-/**
- * Creates a clone of `wrapper`.
- *
- * @private
- * @param {Object} wrapper The wrapper to clone.
- * @returns {Object} Returns the cloned wrapper.
- */
-function wrapperClone(wrapper) {
-  if (wrapper instanceof LazyWrapper) {
-    return wrapper.clone();
-  }
-  var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
-  result.__actions__ = copyArray(wrapper.__actions__);
-  result.__index__  = wrapper.__index__;
-  result.__values__ = wrapper.__values__;
-  return result;
-}
+		req.on('response', function (res) {
+			clearTimeout(reqTimeout);
 
-module.exports = wrapperClone;
+			const headers = createHeadersLenient(res.headers);
 
+			// HTTP fetch step 5
+			if (fetch.isRedirect(res.statusCode)) {
+				// HTTP fetch step 5.2
+				const location = headers.get('Location');
 
-/***/ }),
-/* 714 */
-/***/ (function(module, exports, __webpack_require__) {
+				// HTTP fetch step 5.3
+				let locationURL = null;
+				try {
+					locationURL = location === null ? null : new URL$1(location, request.url).toString();
+				} catch (err) {
+					// error here can only be invalid URL in Location: header
+					// do not throw when options.redirect == manual
+					// let the user extract the errorneous redirect URL
+					if (request.redirect !== 'manual') {
+						reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));
+						finalize();
+						return;
+					}
+				}
 
-"use strict";
+				// HTTP fetch step 5.5
+				switch (request.redirect) {
+					case 'error':
+						reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));
+						finalize();
+						return;
+					case 'manual':
+						// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.
+						if (locationURL !== null) {
+							// handle corrupted header
+							try {
+								headers.set('Location', locationURL);
+							} catch (err) {
+								// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request
+								reject(err);
+							}
+						}
+						break;
+					case 'follow':
+						// HTTP-redirect fetch step 2
+						if (locationURL === null) {
+							break;
+						}
 
+						// HTTP-redirect fetch step 5
+						if (request.counter >= request.follow) {
+							reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));
+							finalize();
+							return;
+						}
 
-var _interopRequireDefault = __webpack_require__(1);
+						// HTTP-redirect fetch step 6 (counter increment)
+						// Create a new Request object.
+						const requestOpts = {
+							headers: new Headers(request.headers),
+							follow: request.follow,
+							counter: request.counter + 1,
+							agent: request.agent,
+							compress: request.compress,
+							method: request.method,
+							body: request.body,
+							signal: request.signal,
+							timeout: request.timeout,
+							size: request.size
+						};
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.hasQueryBeenLoaded = exports.isQueryLoading = exports.cancelable = void 0;
+						if (!isDomainOrSubdomain(request.url, locationURL)) {
+							for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {
+								requestOpts.headers.delete(name);
+							}
+						}
 
-var _logger = _interopRequireDefault(__webpack_require__(498));
+						// HTTP-redirect fetch step 9
+						if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {
+							reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));
+							finalize();
+							return;
+						}
 
-/**
- * @typedef {Promise} CancelablePromise
- * @property {Function} cancel - Cancel the promise
- */
+						// HTTP-redirect fetch step 11
+						if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {
+							requestOpts.method = 'GET';
+							requestOpts.body = undefined;
+							requestOpts.headers.delete('content-length');
+						}
 
-/**
- * Wraps a promise so that it can be canceled
- *
- * Rejects with canceled: true as soon as cancel is called
- *
- * @param  {Promise} promise  - Promise
- * @returns {CancelablePromise} - Promise with .cancel method
- */
-var cancelable = function cancelable(promise) {
-  var _reject;
+						// HTTP-redirect fetch step 15
+						resolve(fetch(new Request(locationURL, requestOpts)));
+						finalize();
+						return;
+				}
+			}
 
-  var wrapped = new Promise(function (resolve, reject) {
-    _reject = reject;
-    promise.then(resolve);
-    promise.catch(reject);
-  }); // @ts-ignore
+			// prepare response
+			res.once('end', function () {
+				if (signal) signal.removeEventListener('abort', abortAndFinalize);
+			});
+			let body = res.pipe(new PassThrough$1());
 
-  wrapped.cancel = function () {
-    _reject({
-      canceled: true
-    });
-  };
+			const response_options = {
+				url: request.url,
+				status: res.statusCode,
+				statusText: res.statusMessage,
+				headers: headers,
+				size: request.size,
+				timeout: request.timeout,
+				counter: request.counter
+			};
 
-  return wrapped;
-};
+			// HTTP-network fetch step 12.1.1.3
+			const codings = headers.get('Content-Encoding');
 
-exports.cancelable = cancelable;
+			// HTTP-network fetch step 12.1.1.4: handle content codings
 
-/**
- * Returns whether the result of a query (given via queryConnect or Query)
- * is loading.
- */
-var isQueryLoading = function isQueryLoading(col) {
-  if (!col) {
-    _logger.default.warn('isQueryLoading called on falsy value.');
+			// in following scenarios we ignore compression support
+			// 1. compression support is disabled
+			// 2. HEAD request
+			// 3. no Content-Encoding header
+			// 4. no content response (204)
+			// 5. content not modified response (304)
+			if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {
+				response = new Response(body, response_options);
+				resolve(response);
+				return;
+			}
 
-    return false;
-  }
+			// For Node v6+
+			// Be less strict when decoding compressed responses, since sometimes
+			// servers send slightly invalid responses that are still accepted
+			// by common browsers.
+			// Always using Z_SYNC_FLUSH is what cURL does.
+			const zlibOptions = {
+				flush: zlib__WEBPACK_IMPORTED_MODULE_5__.Z_SYNC_FLUSH,
+				finishFlush: zlib__WEBPACK_IMPORTED_MODULE_5__.Z_SYNC_FLUSH
+			};
 
-  return col.fetchStatus === 'loading' || col.fetchStatus === 'pending';
-};
+			// for gzip
+			if (codings == 'gzip' || codings == 'x-gzip') {
+				body = body.pipe(zlib__WEBPACK_IMPORTED_MODULE_5__.createGunzip(zlibOptions));
+				response = new Response(body, response_options);
+				resolve(response);
+				return;
+			}
+
+			// for deflate
+			if (codings == 'deflate' || codings == 'x-deflate') {
+				// handle the infamous raw deflate response from old servers
+				// a hack for old IIS and Apache servers
+				const raw = res.pipe(new PassThrough$1());
+				raw.once('data', function (chunk) {
+					// see http://stackoverflow.com/questions/37519828
+					if ((chunk[0] & 0x0F) === 0x08) {
+						body = body.pipe(zlib__WEBPACK_IMPORTED_MODULE_5__.createInflate());
+					} else {
+						body = body.pipe(zlib__WEBPACK_IMPORTED_MODULE_5__.createInflateRaw());
+					}
+					response = new Response(body, response_options);
+					resolve(response);
+				});
+				return;
+			}
+
+			// for br
+			if (codings == 'br' && typeof zlib__WEBPACK_IMPORTED_MODULE_5__.createBrotliDecompress === 'function') {
+				body = body.pipe(zlib__WEBPACK_IMPORTED_MODULE_5__.createBrotliDecompress());
+				response = new Response(body, response_options);
+				resolve(response);
+				return;
+			}
+
+			// otherwise, use response as-is
+			response = new Response(body, response_options);
+			resolve(response);
+		});
+
+		writeToStream(req, request);
+	});
+}
 /**
- * Returns whether a query has been loaded at least once
+ * Redirect code matching
+ *
+ * @param   Number   code  Status code
+ * @return  Boolean
  */
+fetch.isRedirect = function (code) {
+	return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
+};
 
+// expose Promise
+fetch.Promise = global.Promise;
 
-exports.isQueryLoading = isQueryLoading;
+/* harmony default export */ __webpack_exports__["default"] = (fetch);
 
-var hasQueryBeenLoaded = function hasQueryBeenLoaded(col) {
-  return col.lastFetch;
-};
 
-exports.hasQueryBeenLoaded = hasQueryBeenLoaded;
 
 /***/ }),
-/* 715 */
+/* 727 */
+/***/ (function(module, exports) {
+
+module.exports = require("url");
+
+/***/ }),
+/* 728 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _interopRequireDefault = __webpack_require__(1);
+exports.URL = __webpack_require__(729).interface;
+exports.serializeURL = __webpack_require__(733).serializeURL;
+exports.serializeURLOrigin = __webpack_require__(733).serializeURLOrigin;
+exports.basicURLParse = __webpack_require__(733).basicURLParse;
+exports.setTheUsername = __webpack_require__(733).setTheUsername;
+exports.setThePassword = __webpack_require__(733).setThePassword;
+exports.serializeHost = __webpack_require__(733).serializeHost;
+exports.serializeInteger = __webpack_require__(733).serializeInteger;
+exports.parseURL = __webpack_require__(733).parseURL;
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.sanitizeCategories = sanitizeCategories;
-exports.areTermsValid = areTermsValid;
-exports.isPartnershipValid = isPartnershipValid;
-exports.sanitize = sanitize;
-exports.getIdentifier = exports.sanitizeIdentifier = exports.legacyLoginFields = exports.ROLE_IDENTIFIER = void 0;
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+/***/ }),
+/* 729 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _flow2 = _interopRequireDefault(__webpack_require__(702));
+"use strict";
 
-var _cloneDeep2 = _interopRequireDefault(__webpack_require__(450));
 
-var _findKey = _interopRequireDefault(__webpack_require__(496));
+const conversions = __webpack_require__(730);
+const utils = __webpack_require__(731);
+const Impl = __webpack_require__(732);
 
-function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
+const impl = utils.implSymbol;
 
-function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+function URL(url) {
+  if (!this || this[impl] || !(this instanceof URL)) {
+    throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");
+  }
+  if (arguments.length < 1) {
+    throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + " present.");
+  }
+  const args = [];
+  for (let i = 0; i < arguments.length && i < 2; ++i) {
+    args[i] = arguments[i];
+  }
+  args[0] = conversions["USVString"](args[0]);
+  if (args[1] !== undefined) {
+  args[1] = conversions["USVString"](args[1]);
+  }
 
-function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+  module.exports.setup(this, args);
+}
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+URL.prototype.toJSON = function toJSON() {
+  if (!this || !module.exports.is(this)) {
+    throw new TypeError("Illegal invocation");
+  }
+  const args = [];
+  for (let i = 0; i < arguments.length && i < 0; ++i) {
+    args[i] = arguments[i];
+  }
+  return this[impl].toJSON.apply(this[impl], args);
+};
+Object.defineProperty(URL.prototype, "href", {
+  get() {
+    return this[impl].href;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].href = V;
+  },
+  enumerable: true,
+  configurable: true
+});
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+URL.prototype.toString = function () {
+  if (!this || !module.exports.is(this)) {
+    throw new TypeError("Illegal invocation");
+  }
+  return this.href;
+};
 
-var ROLE_IDENTIFIER = 'identifier';
-/**
- * Legacy login fields declared by some konnectors
- */
+Object.defineProperty(URL.prototype, "origin", {
+  get() {
+    return this[impl].origin;
+  },
+  enumerable: true,
+  configurable: true
+});
 
-exports.ROLE_IDENTIFIER = ROLE_IDENTIFIER;
-var legacyLoginFields = ['login', 'identifier', 'new_identifier', 'email'];
-exports.legacyLoginFields = legacyLoginFields;
-var legacyEncryptedFields = ['secret', 'dob', 'code', 'answer', 'access_token', 'refresh_token', 'appSecret'];
-var APP_CATEGORIES = ['banking', 'cozy', 'energy', 'health', 'host_provider', 'insurance', 'isp', 'mes_infos', 'online_services', 'others', 'partners', 'press', 'productivity', 'ptnb', 'public_service', 'shopping', 'social', 'telecom', 'transport'];
-/**
- * Filters unauthorized categories. Defaults to ['others'] if no suitable category.
- *
- * @param {Array<Object>} categories - Array of categories
- * @returns {Array<Object>} sanitized categories
- */
+Object.defineProperty(URL.prototype, "protocol", {
+  get() {
+    return this[impl].protocol;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].protocol = V;
+  },
+  enumerable: true,
+  configurable: true
+});
 
-function sanitizeCategories(categories) {
-  if (!categories) return ['others'];
-  var filteredList = categories.filter(function (c) {
-    return APP_CATEGORIES.includes(c);
-  });
-  if (!filteredList.length) return ['others'];
-  return filteredList;
-}
+Object.defineProperty(URL.prototype, "username", {
+  get() {
+    return this[impl].username;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].username = V;
+  },
+  enumerable: true,
+  configurable: true
+});
 
-function areTermsValid(terms) {
-  return Boolean(terms && terms.id && terms.url && terms.version);
-}
+Object.defineProperty(URL.prototype, "password", {
+  get() {
+    return this[impl].password;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].password = V;
+  },
+  enumerable: true,
+  configurable: true
+});
 
-function isPartnershipValid(partnership) {
-  return Boolean(partnership && partnership.description);
-}
-/**
- * Normalize app manifest, retro-compatibility for old manifests
- *
- * @param  {import('../types').Manifest} manifest - app manifest to normalize
- * @returns {import('../types').SanitizedManifest}
- */
+Object.defineProperty(URL.prototype, "host", {
+  get() {
+    return this[impl].host;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].host = V;
+  },
+  enumerable: true,
+  configurable: true
+});
 
+Object.defineProperty(URL.prototype, "hostname", {
+  get() {
+    return this[impl].hostname;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].hostname = V;
+  },
+  enumerable: true,
+  configurable: true
+});
 
-function sanitize(manifest) {
-  var sanitized = _objectSpread({}, manifest); // Make categories an array and delete category attribute if it exists
+Object.defineProperty(URL.prototype, "port", {
+  get() {
+    return this[impl].port;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].port = V;
+  },
+  enumerable: true,
+  configurable: true
+});
 
+Object.defineProperty(URL.prototype, "pathname", {
+  get() {
+    return this[impl].pathname;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].pathname = V;
+  },
+  enumerable: true,
+  configurable: true
+});
 
-  if (!manifest.categories && manifest.category && typeof manifest.category === 'string') {
-    sanitized.categories = [manifest.category];
-    delete sanitized.category;
-  }
+Object.defineProperty(URL.prototype, "search", {
+  get() {
+    return this[impl].search;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].search = V;
+  },
+  enumerable: true,
+  configurable: true
+});
 
-  sanitized.categories = sanitizeCategories(sanitized.categories); // manifest name is not an object
+Object.defineProperty(URL.prototype, "hash", {
+  get() {
+    return this[impl].hash;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].hash = V;
+  },
+  enumerable: true,
+  configurable: true
+});
 
-  if (typeof manifest.name === 'object') sanitized.name = manifest.name.en; // Fix camelCase from cozy-stack
 
-  if (manifest.available_version) {
-    sanitized.availableVersion = manifest.available_version;
-    delete sanitized.available_version;
-  } // Fix camelCase from cozy-stack
+module.exports = {
+  is(obj) {
+    return !!obj && obj[impl] instanceof Impl.implementation;
+  },
+  create(constructorArgs, privateData) {
+    let obj = Object.create(URL.prototype);
+    this.setup(obj, constructorArgs, privateData);
+    return obj;
+  },
+  setup(obj, constructorArgs, privateData) {
+    if (!privateData) privateData = {};
+    privateData.wrapper = obj;
 
+    obj[impl] = new Impl.implementation(constructorArgs, privateData);
+    obj[impl][utils.wrapperSymbol] = obj;
+  },
+  interface: URL,
+  expose: {
+    Window: { URL: URL },
+    Worker: { URL: URL }
+  }
+};
 
-  if (manifest.latest_version) {
-    sanitized.latestVersion = manifest.latestVersion;
-    delete sanitized.latest_version;
-  } // Remove invalid terms
 
 
-  if (sanitized.terms && !areTermsValid(sanitized.terms)) {
-    delete sanitized.terms;
-  } // Remove invalid partnership
+/***/ }),
+/* 730 */
+/***/ (function(module, exports, __webpack_require__) {
 
+"use strict";
 
-  if (sanitized.partnership && !isPartnershipValid(sanitized.partnership)) {
-    delete sanitized.partnership;
-  }
 
-  if (sanitized.fields) {
-    sanitized.fields = sanitizeFields(manifest.fields);
-  }
+var conversions = {};
+module.exports = conversions;
 
-  return sanitized;
+function sign(x) {
+    return x < 0 ? -1 : 1;
 }
-/**
- * Ensures that fields has at least one field with the role 'identifier'
- *
- * @param  {import('../types').ManifestFields} fields - Manifest fields
- * @returns {import('../types').ManifestFields} - Sanitized manifest fields
- */
 
+function evenRound(x) {
+    // Round x to the nearest integer, choosing the even integer if it lies halfway between two.
+    if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)
+        return Math.floor(x);
+    } else {
+        return Math.round(x);
+    }
+}
 
-var sanitizeIdentifier = function sanitizeIdentifier(fields) {
-  var sanitized = (0, _cloneDeep2.default)(fields);
-  var hasIdentifier = false;
-
-  for (var fieldName in sanitized) {
-    if (sanitized[fieldName].role === ROLE_IDENTIFIER) {
-      if (hasIdentifier) delete sanitized[fieldName].role;else hasIdentifier = true;
+function createNumberConversion(bitLength, typeOpts) {
+    if (!typeOpts.unsigned) {
+        --bitLength;
     }
-  }
+    const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);
+    const upperBound = Math.pow(2, bitLength) - 1;
 
-  if (hasIdentifier) return sanitized;
+    const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);
+    const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);
 
-  var _iterator = _createForOfIteratorHelper(legacyLoginFields),
-      _step;
+    return function(V, opts) {
+        if (!opts) opts = {};
 
-  try {
-    for (_iterator.s(); !(_step = _iterator.n()).done;) {
-      var name = _step.value;
+        let x = +V;
 
-      if (sanitized[name]) {
-        sanitized[name].role = ROLE_IDENTIFIER;
-        return sanitized;
-      }
-    }
-  } catch (err) {
-    _iterator.e(err);
-  } finally {
-    _iterator.f();
-  }
+        if (opts.enforceRange) {
+            if (!Number.isFinite(x)) {
+                throw new TypeError("Argument is not a finite number");
+            }
 
-  for (var _fieldName in sanitized) {
-    if (sanitized[_fieldName].type !== 'password') {
-      sanitized[_fieldName].role = ROLE_IDENTIFIER;
-      return sanitized;
+            x = sign(x) * Math.floor(Math.abs(x));
+            if (x < lowerBound || x > upperBound) {
+                throw new TypeError("Argument is not in byte range");
+            }
+
+            return x;
+        }
+
+        if (!isNaN(x) && opts.clamp) {
+            x = evenRound(x);
+
+            if (x < lowerBound) x = lowerBound;
+            if (x > upperBound) x = upperBound;
+            return x;
+        }
+
+        if (!Number.isFinite(x) || x === 0) {
+            return 0;
+        }
+
+        x = sign(x) * Math.floor(Math.abs(x));
+        x = x % moduloVal;
+
+        if (!typeOpts.unsigned && x >= moduloBound) {
+            return x - moduloVal;
+        } else if (typeOpts.unsigned) {
+            if (x < 0) {
+              x += moduloVal;
+            } else if (x === -0) { // don't return negative zero
+              return 0;
+            }
+        }
+
+        return x;
     }
-  }
+}
 
-  return sanitized;
+conversions["void"] = function () {
+    return undefined;
+};
+
+conversions["boolean"] = function (val) {
+    return !!val;
 };
-/**
- * Returns the key for the field having the role=identifier attribute
- *
- * @param  {import('../types').ManifestFields} fields Konnector fields
- * @returns {String|null}  The key for the identifier field, example 'login'
- */
 
+conversions["byte"] = createNumberConversion(8, { unsigned: false });
+conversions["octet"] = createNumberConversion(8, { unsigned: true });
 
-exports.sanitizeIdentifier = sanitizeIdentifier;
+conversions["short"] = createNumberConversion(16, { unsigned: false });
+conversions["unsigned short"] = createNumberConversion(16, { unsigned: true });
 
-var getIdentifier = function getIdentifier() {
-  var fields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-  return (0, _findKey.default)(sanitizeIdentifier(fields), function (field) {
-    return field.role === ROLE_IDENTIFIER;
-  }) || null;
+conversions["long"] = createNumberConversion(32, { unsigned: false });
+conversions["unsigned long"] = createNumberConversion(32, { unsigned: true });
+
+conversions["long long"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });
+conversions["unsigned long long"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });
+
+conversions["double"] = function (V) {
+    const x = +V;
+
+    if (!Number.isFinite(x)) {
+        throw new TypeError("Argument is not a finite floating-point value");
+    }
+
+    return x;
 };
-/**
- * Ensures old fields are removed
- *
- * @param  {Object} fields Manifest fields
- * @returns {Object}        Sanitized manifest fields
- */
 
+conversions["unrestricted double"] = function (V) {
+    const x = +V;
 
-exports.getIdentifier = getIdentifier;
+    if (isNaN(x)) {
+        throw new TypeError("Argument is NaN");
+    }
 
-var removeOldFields = function removeOldFields(fields) {
-  var sanitized = (0, _cloneDeep2.default)(fields);
-  delete sanitized.advancedFields;
-  return sanitized;
+    return x;
 };
-/**
- * Ensures every field not explicitely tagged as not required is required
- *
- * @param  {import('../types').ManifestFields} [fields={}] Manifest fields
- * @returns {import('../types').ManifestFields}            Sanitized manifest fields
- */
 
+// not quite valid, but good enough for JS
+conversions["float"] = conversions["double"];
+conversions["unrestricted float"] = conversions["unrestricted double"];
 
-var sanitizeRequired = function sanitizeRequired(fields) {
-  var sanitized = (0, _cloneDeep2.default)(fields);
+conversions["DOMString"] = function (V, opts) {
+    if (!opts) opts = {};
 
-  for (var fieldName in sanitized) {
-    var field = sanitized[fieldName]; // Ensure legacy for field isRequired
+    if (opts.treatNullAsEmptyString && V === null) {
+        return "";
+    }
 
-    var required = typeof field.required === 'undefined' ? field.isRequired : field.required;
-    sanitized[fieldName].required = typeof required === 'boolean' ? required : true;
-  }
+    return String(V);
+};
 
-  return sanitized;
+conversions["ByteString"] = function (V, opts) {
+    const x = String(V);
+    let c = undefined;
+    for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {
+        if (c > 255) {
+            throw new TypeError("Argument is not a valid bytestring");
+        }
+    }
+
+    return x;
 };
-/**
- * Ensures:
- * * any field flagged as encrypted keeps its flag
- * * any legacy encrypted field is tagged as encrypted
- *
- * @param  {import('../types').ManifestFields} [fields={}] Manifest fields
- * @returns {import('../types').ManifestFields}             Sanitized Manifest fields
- */
 
+conversions["USVString"] = function (V) {
+    const S = String(V);
+    const n = S.length;
+    const U = [];
+    for (let i = 0; i < n; ++i) {
+        const c = S.charCodeAt(i);
+        if (c < 0xD800 || c > 0xDFFF) {
+            U.push(String.fromCodePoint(c));
+        } else if (0xDC00 <= c && c <= 0xDFFF) {
+            U.push(String.fromCodePoint(0xFFFD));
+        } else {
+            if (i === n - 1) {
+                U.push(String.fromCodePoint(0xFFFD));
+            } else {
+                const d = S.charCodeAt(i + 1);
+                if (0xDC00 <= d && d <= 0xDFFF) {
+                    const a = c & 0x3FF;
+                    const b = d & 0x3FF;
+                    U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));
+                    ++i;
+                } else {
+                    U.push(String.fromCodePoint(0xFFFD));
+                }
+            }
+        }
+    }
 
-var sanitizeEncrypted = function sanitizeEncrypted(fields) {
-  var sanitized = (0, _cloneDeep2.default)(fields);
+    return U.join('');
+};
 
-  for (var fieldName in sanitized) {
-    var field = sanitized[fieldName];
-    if (typeof field.encrypted !== 'boolean') field.encrypted = field.type === 'password' || legacyEncryptedFields.includes(fieldName);
-  }
+conversions["Date"] = function (V, opts) {
+    if (!(V instanceof Date)) {
+        throw new TypeError("Argument is not a Date object");
+    }
+    if (isNaN(V)) {
+        return undefined;
+    }
 
-  return sanitized;
+    return V;
 };
-/**
- * Sanitizes manifest fields with multiple rules
- *
- * @param  {import('../types').ManifestFields} [fields={}] Manifest fields
- * @returns {import('../types').ManifestFields}            Sanitized manifest fields
- */
 
+conversions["RegExp"] = function (V, opts) {
+    if (!(V instanceof RegExp)) {
+        V = new RegExp(V);
+    }
+
+    return V;
+};
 
-var sanitizeFields = (0, _flow2.default)([removeOldFields, sanitizeIdentifier, sanitizeRequired, sanitizeEncrypted]);
 
 /***/ }),
-/* 716 */
+/* 731 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.createMockClient = void 0;
+module.exports.mixin = function mixin(target, source) {
+  const keys = Object.getOwnPropertyNames(source);
+  for (let i = 0; i < keys.length; ++i) {
+    Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));
+  }
+};
 
-var _slicedToArray2 = _interopRequireDefault(__webpack_require__(286));
+module.exports.wrapperSymbol = Symbol("wrapper");
+module.exports.implSymbol = Symbol("impl");
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+module.exports.wrapperForImpl = function (impl) {
+  return impl[module.exports.wrapperSymbol];
+};
 
-var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(291));
+module.exports.implForWrapper = function (wrapper) {
+  return wrapper[module.exports.implSymbol];
+};
 
-var _CozyClient = _interopRequireDefault(__webpack_require__(279));
 
-var _store = __webpack_require__(627);
 
-var _cozyStackClient = __webpack_require__(448);
+/***/ }),
+/* 732 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _dsl = __webpack_require__(495);
+"use strict";
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+const usm = __webpack_require__(733);
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+exports.implementation = class URLImpl {
+  constructor(constructorArgs) {
+    const url = constructorArgs[0];
+    const base = constructorArgs[1];
 
-var fillQueryInsideClient = function fillQueryInsideClient(client, queryName, queryOptions) {
-  var definition = queryOptions.definition,
-      doctype = queryOptions.doctype,
-      data = queryOptions.data,
-      queryResult = (0, _objectWithoutProperties2.default)(queryOptions, ["definition", "doctype", "data"]);
-  client.store.dispatch((0, _store.initQuery)(queryName, definition || (0, _dsl.Q)(doctype)));
-  client.store.dispatch((0, _store.receiveQueryResult)(queryName, _objectSpread({
-    data: data ? data.map(function (doc) {
-      return (0, _cozyStackClient.normalizeDoc)(doc, doctype);
-    }) : data
-  }, queryResult)));
-};
+    let parsedBase = null;
+    if (base !== undefined) {
+      parsedBase = usm.basicURLParse(base);
+      if (parsedBase === "failure") {
+        throw new TypeError("Invalid base URL");
+      }
+    }
 
-var mockedQueryFromMockedRemoteData = function mockedQueryFromMockedRemoteData(remoteData) {
-  return function (qdef) {
-    if (!remoteData) {
-      return {
-        data: null
-      };
+    const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });
+    if (parsedURL === "failure") {
+      throw new TypeError("Invalid URL");
     }
 
-    if (remoteData[qdef.doctype]) {
-      return {
-        data: remoteData[qdef.doctype]
-      };
-    } else {
-      return {
-        data: []
-      };
+    this._url = parsedURL;
+
+    // TODO: query stuff
+  }
+
+  get href() {
+    return usm.serializeURL(this._url);
+  }
+
+  set href(v) {
+    const parsedURL = usm.basicURLParse(v);
+    if (parsedURL === "failure") {
+      throw new TypeError("Invalid URL");
     }
-  };
-};
-/**
- * Creates a client suitable for use in tests
- *
- * - client.{query,save} are mocked
- * - client.stackClient.fetchJSON is mocked
- *
- * @param  {object} options Options
- * @param  {object} [options.queries] Prefill queries inside the store
- * @param  {object} [options.remote] Mock data from the server
- * @param  {object} [options.clientOptions] Options passed to the client
- * @returns {CozyClient}
- */
 
+    this._url = parsedURL;
+  }
 
-var createMockClient = function createMockClient(_ref) {
-  var queries = _ref.queries,
-      remote = _ref.remote,
-      clientOptions = _ref.clientOptions;
-  var client = new _CozyClient.default(clientOptions || {});
-  client.ensureStore();
+  get origin() {
+    return usm.serializeURLOrigin(this._url);
+  }
 
-  for (var _i = 0, _Object$entries = Object.entries(queries || {}); _i < _Object$entries.length; _i++) {
-    var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
-        queryName = _Object$entries$_i[0],
-        queryOptions = _Object$entries$_i[1];
+  get protocol() {
+    return this._url.scheme + ":";
+  }
 
-    fillQueryInsideClient(client, queryName, queryOptions);
+  set protocol(v) {
+    usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" });
   }
 
-  client.query = jest.fn().mockImplementation(mockedQueryFromMockedRemoteData(remote));
-  client.save = jest.fn();
-  client.saveAll = jest.fn();
-  client.stackClient.fetchJSON = jest.fn();
-  return client;
-};
+  get username() {
+    return this._url.username;
+  }
 
-exports.createMockClient = createMockClient;
+  set username(v) {
+    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
+      return;
+    }
 
-/***/ }),
-/* 717 */
-/***/ (function(module, exports, __webpack_require__) {
+    usm.setTheUsername(this._url, v);
+  }
 
-"use strict";
-/* WEBPACK VAR INJECTION */(function(module) {
+  get password() {
+    return this._url.password;
+  }
 
-var _interopRequireDefault = __webpack_require__(1);
+  set password(v) {
+    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
+      return;
+    }
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.createClientInteractive = void 0;
+    usm.setThePassword(this._url, v);
+  }
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+  get host() {
+    const url = this._url;
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+    if (url.host === null) {
+      return "";
+    }
 
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
+    if (url.port === null) {
+      return usm.serializeHost(url.host);
+    }
 
-var _http = _interopRequireDefault(__webpack_require__(718));
+    return usm.serializeHost(url.host) + ":" + usm.serializeInteger(url.port);
+  }
 
-var _open = _interopRequireDefault(__webpack_require__(719));
+  set host(v) {
+    if (this._url.cannotBeABaseURL) {
+      return;
+    }
 
-var _fs = _interopRequireDefault(__webpack_require__(722));
+    usm.basicURLParse(v, { url: this._url, stateOverride: "host" });
+  }
 
-var _merge = _interopRequireDefault(__webpack_require__(532));
+  get hostname() {
+    if (this._url.host === null) {
+      return "";
+    }
 
-var _serverDestroy = _interopRequireDefault(__webpack_require__(725));
+    return usm.serializeHost(this._url.host);
+  }
 
-var _CozyClient = _interopRequireDefault(__webpack_require__(279));
+  set hostname(v) {
+    if (this._url.cannotBeABaseURL) {
+      return;
+    }
 
-var _cozyLogger = _interopRequireDefault(__webpack_require__(211));
+    usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" });
+  }
 
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+  get port() {
+    if (this._url.port === null) {
+      return "";
+    }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+    return usm.serializeInteger(this._url.port);
+  }
 
-var log = _cozyLogger.default.namespace('create-cli-client');
+  set port(v) {
+    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
+      return;
+    }
 
-var nodeFetch = __webpack_require__(726);
+    if (v === "") {
+      this._url.port = null;
+    } else {
+      usm.basicURLParse(v, { url: this._url, stateOverride: "port" });
+    }
+  }
 
-var btoa = __webpack_require__(739);
-/**
- * Creates and starts and HTTP server suitable for OAuth authentication
- *
- * @param  {object} serverOptions - OAuth callback server options
- * @param  {Function} serverOptions.onAuthentication - Additional callback called
- * when the user authenticates
- * @param  {string} serverOptions.route - Route used for authentication
- * @param  {number} serverOptions.port - Port on which the server will listen
- * @param  {Function} serverOptions.onListen - Callback called when the
- * server starts
- *
- * @typedef {object} DestroyableServer
- * @function destroy
- *
- * @returns {DestroyableServer}
- *
- * @private
- */
+  get pathname() {
+    if (this._url.cannotBeABaseURL) {
+      return this._url.path[0];
+    }
 
+    if (this._url.path.length === 0) {
+      return "";
+    }
 
-var createCallbackServer = function createCallbackServer(serverOptions) {
-  var route = serverOptions.route,
-      onListen = serverOptions.onListen,
-      onAuthentication = serverOptions.onAuthentication,
-      port = serverOptions.port;
+    return "/" + this._url.path.join("/");
+  }
 
-  var server = _http.default.createServer(function (request, response) {
-    if (request.url.indexOf(route) === 0) {
-      onAuthentication(request.url);
-      response.write('Authentication successful, you can close this page.');
-      response.end();
+  set pathname(v) {
+    if (this._url.cannotBeABaseURL) {
+      return;
     }
-  });
 
-  server.listen(port, function () {
-    onListen();
-  });
-  (0, _serverDestroy.default)(server);
-  return server;
-};
-/**
- * Creates a function suitable for usage with CozyClient::startOAuthFlow
- *
- * Starts a local server. The stack upon user authentication will
- * redirect to this local server with a URL containing credentials.
- * The callback resolves with this authenticationURL which continues
- * the authentication flow inside startOAuthFlow.
- *
- * When the server is started, the authentication page is opened on the
- * desktop browser of the user.
- *
- * @param {object} serverOptions - Options for the OAuth callback server
- * @param {number} serverOptions.port - Port used for the OAuth callback server
- * @param {Function} serverOptions.onAuthentication - Callback when the user authenticates
- * @param {Function} serverOptions.onListen - Callback called with the authentication URL
- * @param {string} serverOptions.route - Route used for authentication
- * @param {boolean} serverOptions.shouldOpenAuthenticationPage - Whether the authentication
- * page should be automatically opened (default: true)
- *
- * @private
- */
-
-
-var mkServerFlowCallback = function mkServerFlowCallback(serverOptions) {
-  return function (authenticationURL) {
-    return new Promise(function (resolve, reject) {
-      var rejectTimeout, successTimeout;
-      var server = createCallbackServer(_objectSpread(_objectSpread({}, serverOptions), {}, {
-        onAuthentication: function onAuthentication(callbackURL) {
-          log('debug', 'Authenticated, Shutting server down');
-          successTimeout = setTimeout(function () {
-            // Is there a way to call destroy only after all requests have
-            // been completely served ? Otherwise we close the server while
-            // the successful oauth page is being served and the page does
-            // not get loaded on the client side.
-            server.destroy();
-            resolve('http://localhost:8000/' + callbackURL);
-            clearTimeout(rejectTimeout);
-          }, 300);
-        },
-        onListen: function onListen() {
-          log('debug', 'OAuth callback server started, waiting for authentication');
-
-          if (serverOptions.shouldOpenAuthenticationPage !== false) {
-            (0, _open.default)(authenticationURL, {
-              wait: false
-            });
-          }
-
-          if (serverOptions.onListen) {
-            serverOptions.onListen({
-              authenticationURL: authenticationURL
-            });
-          }
-        }
-      }));
-      rejectTimeout = setTimeout(function () {
-        clearTimeout(successTimeout);
-        server.destroy();
-        reject('Timeout for authentication');
-      }, 30 * 1000);
-    });
-  };
-};
-
-var hashCode = function hashCode(str) {
-  var hash = 0,
-      i,
-      chr;
-  if (str.length === 0) return hash;
-
-  for (i = 0; i < str.length; i++) {
-    chr = str.charCodeAt(i);
-    hash = (hash << 5) - hash + chr;
-    hash |= 0; // Convert to 32bit integer
+    this._url.path = [];
+    usm.basicURLParse(v, { url: this._url, stateOverride: "path start" });
   }
 
-  return hash;
-};
-
-var DEFAULT_SERVER_OPTIONS = {
-  port: 3333,
-  route: '/do_access',
-  getSavedCredentials: function getSavedCredentials(clientOptions) {
-    if (!clientOptions.oauth.softwareID) {
-      throw new Error('Please provide oauth.softwareID in your clientOptions.');
+  get search() {
+    if (this._url.query === null || this._url.query === "") {
+      return "";
     }
 
-    var doctypeHash = Math.abs(hashCode(JSON.stringify(clientOptions.scope)));
-    var sluggedURI = clientOptions.uri.replace(/https?:\/\//, '').replace(/\./g, '-');
-    return "/tmp/cozy-client-oauth-".concat(sluggedURI, "-").concat(clientOptions.oauth.softwareID, "-").concat(doctypeHash, ".json");
+    return "?" + this._url.query;
   }
-};
 
-var writeJSON = function writeJSON(fs, filename, data) {
-  fs.writeFileSync(filename, JSON.stringify(data));
-};
-/**
- * Parses a JSON from a file
- * Returns null in case of error
- *
- * @private
- */
+  set search(v) {
+    // TODO: query stuff
 
+    const url = this._url;
 
-var readJSON = function readJSON(fs, filename) {
-  try {
-    if (!fs.existsSync(filename)) {
-      return null;
+    if (v === "") {
+      url.query = null;
+      return;
     }
 
-    var res = JSON.parse(fs.readFileSync(filename).toString());
-    return res;
-  } catch (e) {
-    _cozyLogger.default.warn("Could not load ".concat(filename, " (").concat(e.message, ")"));
-
-    return null;
+    const input = v[0] === "?" ? v.substring(1) : v;
+    url.query = "";
+    usm.basicURLParse(input, { url, stateOverride: "query" });
   }
-};
-/**
- * Creates a client with interactive authentication.
- *
- * - Will start an OAuth flow and open an authentication page
- * - Starts a local server to listen for the oauth callback
- * - Resolves with the client after user authentication
- *
- * @param {object} clientOptions Same as CozyClient::constructor.
- *
- * @example
- * ```
- * import { createClientInteractive } from 'cozy-client/dist/cli'
- * await createClientInteractive({
- *   uri: 'http://cozy.tools:8080',
- *   scope: ['io.cozy.bills'],
- *   oauth: {
- *     softwareID: 'my-cli-application-using-bills'
- *   }
- * })
- * ```
- *
- * @returns {Promise<CozyClient>} - A client that is ready with a token
- */
 
-
-var createClientInteractive = function createClientInteractive(clientOptions, serverOpts) {
-  global.fetch = nodeFetch;
-  global.btoa = btoa;
-  var serverOptions = (0, _merge.default)(DEFAULT_SERVER_OPTIONS, serverOpts);
-  var createClientFS = serverOptions.fs || _fs.default;
-  var mergedClientOptions = (0, _merge.default)({
-    oauth: {
-      clientName: 'cli-client',
-      redirectURI: "http://localhost:".concat(serverOptions.port).concat(serverOptions.route)
+  get hash() {
+    if (this._url.fragment === null || this._url.fragment === "") {
+      return "";
     }
-  }, clientOptions);
 
-  if (!clientOptions.scope) {
-    throw new Error('scope must be provided in client options');
+    return "#" + this._url.fragment;
   }
 
-  var getSavedCredentials = serverOptions.getSavedCredentials;
-  var savedCredentialsFilename = getSavedCredentials(mergedClientOptions);
-  var savedCredentials = readJSON(createClientFS, savedCredentialsFilename);
-  log('debug', "Starting OAuth flow");
-  return new Promise( /*#__PURE__*/function () {
-    var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(resolve, reject) {
-      var client;
-      return _regenerator.default.wrap(function _callee$(_context) {
-        while (1) {
-          switch (_context.prev = _context.next) {
-            case 0:
-              client = new _CozyClient.default(mergedClientOptions);
-
-              if (!savedCredentials) {
-                _context.next = 7;
-                break;
-              }
-
-              log('debug', "Using saved credentials in ".concat(savedCredentialsFilename));
-              client.stackClient.setToken(savedCredentials.token);
-              client.stackClient.setOAuthOptions(savedCredentials.oauthOptions);
-              resolve(client);
-              return _context.abrupt("return");
-
-            case 7:
-              _context.next = 9;
-              return client.startOAuthFlow(mkServerFlowCallback(serverOptions));
-
-            case 9:
-              resolve(client);
-              log('debug', "Saving credentials to ".concat(savedCredentialsFilename));
-              writeJSON(createClientFS, savedCredentialsFilename, {
-                oauthOptions: client.stackClient.oauthOptions,
-                token: client.stackClient.token
-              });
-
-            case 12:
-            case "end":
-              return _context.stop();
-          }
-        }
-      }, _callee);
-    }));
-
-    return function (_x, _x2) {
-      return _ref.apply(this, arguments);
-    };
-  }());
-};
-
-exports.createClientInteractive = createClientInteractive;
-
-var main = /*#__PURE__*/function () {
-  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
-    var client;
-    return _regenerator.default.wrap(function _callee2$(_context2) {
-      while (1) {
-        switch (_context2.prev = _context2.next) {
-          case 0:
-            _context2.next = 2;
-            return createClientInteractive({
-              scope: ['io.cozy.files'],
-              uri: 'http://cozy.tools:8080',
-              oauth: {
-                softwareID: 'io.cozy.client.cli'
-              }
-            });
-
-          case 2:
-            client = _context2.sent;
-            console.log(client.toJSON());
-
-          case 4:
-          case "end":
-            return _context2.stop();
-        }
-      }
-    }, _callee2);
-  }));
-
-  return function main() {
-    return _ref2.apply(this, arguments);
-  };
-}();
-
-if (__webpack_require__.c[__webpack_require__.s] === module) {
-  main().catch(function (e) {
-    console.error(e);
-    process.exit(1);
-  });
-}
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(197)(module)))
-
-/***/ }),
-/* 718 */
-/***/ (function(module, exports) {
-
-module.exports = require("http");
-
-/***/ }),
-/* 719 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/* WEBPACK VAR INJECTION */(function(__dirname) {
-const {promisify} = __webpack_require__(218);
-const path = __webpack_require__(720);
-const childProcess = __webpack_require__(721);
-const fs = __webpack_require__(722);
-const isWsl = __webpack_require__(723);
-const isDocker = __webpack_require__(724);
-
-const pAccess = promisify(fs.access);
-const pReadFile = promisify(fs.readFile);
-
-// Path to included `xdg-open`.
-const localXdgOpenPath = path.join(__dirname, 'xdg-open');
-
-/**
-Get the mount point for fixed drives in WSL.
-
-@inner
-@returns {string} The mount point.
-*/
-const getWslDrivesMountPoint = (() => {
-	// Default value for "root" param
-	// according to https://docs.microsoft.com/en-us/windows/wsl/wsl-config
-	const defaultMountPoint = '/mnt/';
-
-	let mountPoint;
-
-	return async function () {
-		if (mountPoint) {
-			// Return memoized mount point value
-			return mountPoint;
-		}
-
-		const configFilePath = '/etc/wsl.conf';
-
-		let isConfigFileExists = false;
-		try {
-			await pAccess(configFilePath, fs.constants.F_OK);
-			isConfigFileExists = true;
-		} catch (_) {}
-
-		if (!isConfigFileExists) {
-			return defaultMountPoint;
-		}
-
-		const configContent = await pReadFile(configFilePath, {encoding: 'utf8'});
-		const configMountPoint = /root\s*=\s*(.*)/g.exec(configContent);
-
-		if (!configMountPoint) {
-			return defaultMountPoint;
-		}
-
-		mountPoint = configMountPoint[1].trim();
-		mountPoint = mountPoint.endsWith('/') ? mountPoint : mountPoint + '/';
-
-		return mountPoint;
-	};
-})();
-
-module.exports = async (target, options) => {
-	if (typeof target !== 'string') {
-		throw new TypeError('Expected a `target`');
-	}
-
-	options = {
-		wait: false,
-		background: false,
-		allowNonzeroExitCode: false,
-		...options
-	};
-
-	let command;
-	let {app} = options;
-	let appArguments = [];
-	const cliArguments = [];
-	const childProcessOptions = {};
-
-	if (Array.isArray(app)) {
-		appArguments = app.slice(1);
-		app = app[0];
-	}
-
-	if (process.platform === 'darwin') {
-		command = 'open';
-
-		if (options.wait) {
-			cliArguments.push('--wait-apps');
-		}
-
-		if (options.background) {
-			cliArguments.push('--background');
-		}
-
-		if (app) {
-			cliArguments.push('-a', app);
-		}
-	} else if (process.platform === 'win32' || (isWsl && !isDocker())) {
-		const mountPoint = await getWslDrivesMountPoint();
-
-		command = isWsl ?
-			`${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe` :
-			`${process.env.SYSTEMROOT}\\System32\\WindowsPowerShell\\v1.0\\powershell`;
-
-		cliArguments.push(
-			'-NoProfile',
-			'-NonInteractive',
-			'–ExecutionPolicy',
-			'Bypass',
-			'-EncodedCommand'
-		);
-
-		if (!isWsl) {
-			childProcessOptions.windowsVerbatimArguments = true;
-		}
-
-		const encodedArguments = ['Start'];
-
-		if (options.wait) {
-			encodedArguments.push('-Wait');
-		}
-
-		if (app) {
-			// Double quote with double quotes to ensure the inner quotes are passed through.
-			// Inner quotes are delimited for PowerShell interpretation with backticks.
-			encodedArguments.push(`"\`"${app}\`""`, '-ArgumentList');
-			appArguments.unshift(target);
-		} else {
-			encodedArguments.push(`"${target}"`);
-		}
-
-		if (appArguments.length > 0) {
-			appArguments = appArguments.map(arg => `"\`"${arg}\`""`);
-			encodedArguments.push(appArguments.join(','));
-		}
-
-		// Using Base64-encoded command, accepted by PowerShell, to allow special characters.
-		target = Buffer.from(encodedArguments.join(' '), 'utf16le').toString('base64');
-	} else {
-		if (app) {
-			command = app;
-		} else {
-			// When bundled by Webpack, there's no actual package file path and no local `xdg-open`.
-			const isBundled =  false || __dirname === '/';
-
-			// Check if local `xdg-open` exists and is executable.
-			let exeLocalXdgOpen = false;
-			try {
-				await pAccess(localXdgOpenPath, fs.constants.X_OK);
-				exeLocalXdgOpen = true;
-			} catch (_) {}
-
-			const useSystemXdgOpen = process.versions.electron ||
-				process.platform === 'android' || isBundled || !exeLocalXdgOpen;
-			command = useSystemXdgOpen ? 'xdg-open' : localXdgOpenPath;
-		}
-
-		if (appArguments.length > 0) {
-			cliArguments.push(...appArguments);
-		}
-
-		if (!options.wait) {
-			// `xdg-open` will block the process unless stdio is ignored
-			// and it's detached from the parent even if it's unref'd.
-			childProcessOptions.stdio = 'ignore';
-			childProcessOptions.detached = true;
-		}
-	}
-
-	cliArguments.push(target);
-
-	if (process.platform === 'darwin' && appArguments.length > 0) {
-		cliArguments.push('--args', ...appArguments);
-	}
-
-	const subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);
-
-	if (options.wait) {
-		return new Promise((resolve, reject) => {
-			subprocess.once('error', reject);
-
-			subprocess.once('close', exitCode => {
-				if (options.allowNonzeroExitCode && exitCode > 0) {
-					reject(new Error(`Exited with code ${exitCode}`));
-					return;
-				}
-
-				resolve(subprocess);
-			});
-		});
-	}
+  set hash(v) {
+    if (v === "") {
+      this._url.fragment = null;
+      return;
+    }
 
-	subprocess.unref();
+    const input = v[0] === "#" ? v.substring(1) : v;
+    this._url.fragment = "";
+    usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" });
+  }
 
-	return subprocess;
+  toJSON() {
+    return this.href;
+  }
 };
 
-/* WEBPACK VAR INJECTION */}.call(this, "/"))
-
-/***/ }),
-/* 720 */
-/***/ (function(module, exports) {
-
-module.exports = require("path");
-
-/***/ }),
-/* 721 */
-/***/ (function(module, exports) {
-
-module.exports = require("child_process");
-
-/***/ }),
-/* 722 */
-/***/ (function(module, exports) {
-
-module.exports = require("fs");
 
 /***/ }),
-/* 723 */
+/* 733 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
+
+const punycode = __webpack_require__(734);
+const tr46 = __webpack_require__(735);
+
+const specialSchemes = {
+  ftp: 21,
+  file: null,
+  gopher: 70,
+  http: 80,
+  https: 443,
+  ws: 80,
+  wss: 443
+};
+
+const failure = Symbol("failure");
+
+function countSymbols(str) {
+  return punycode.ucs2.decode(str).length;
+}
+
+function at(input, idx) {
+  const c = input[idx];
+  return isNaN(c) ? undefined : String.fromCodePoint(c);
+}
+
+function isASCIIDigit(c) {
+  return c >= 0x30 && c <= 0x39;
+}
+
+function isASCIIAlpha(c) {
+  return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);
+}
+
+function isASCIIAlphanumeric(c) {
+  return isASCIIAlpha(c) || isASCIIDigit(c);
+}
+
+function isASCIIHex(c) {
+  return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);
+}
+
+function isSingleDot(buffer) {
+  return buffer === "." || buffer.toLowerCase() === "%2e";
+}
+
+function isDoubleDot(buffer) {
+  buffer = buffer.toLowerCase();
+  return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e";
+}
+
+function isWindowsDriveLetterCodePoints(cp1, cp2) {
+  return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);
+}
+
+function isWindowsDriveLetterString(string) {
+  return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|");
+}
+
+function isNormalizedWindowsDriveLetterString(string) {
+  return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ":";
+}
+
+function containsForbiddenHostCodePoint(string) {
+  return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1;
+}
+
+function containsForbiddenHostCodePointExcludingPercent(string) {
+  return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1;
+}
+
+function isSpecialScheme(scheme) {
+  return specialSchemes[scheme] !== undefined;
+}
+
+function isSpecial(url) {
+  return isSpecialScheme(url.scheme);
+}
+
+function defaultPort(scheme) {
+  return specialSchemes[scheme];
+}
+
+function percentEncode(c) {
+  let hex = c.toString(16).toUpperCase();
+  if (hex.length === 1) {
+    hex = "0" + hex;
+  }
+
+  return "%" + hex;
+}
+
+function utf8PercentEncode(c) {
+  const buf = new Buffer(c);
+
+  let str = "";
+
+  for (let i = 0; i < buf.length; ++i) {
+    str += percentEncode(buf[i]);
+  }
+
+  return str;
+}
+
+function utf8PercentDecode(str) {
+  const input = new Buffer(str);
+  const output = [];
+  for (let i = 0; i < input.length; ++i) {
+    if (input[i] !== 37) {
+      output.push(input[i]);
+    } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {
+      output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));
+      i += 2;
+    } else {
+      output.push(input[i]);
+    }
+  }
+  return new Buffer(output).toString();
+}
+
+function isC0ControlPercentEncode(c) {
+  return c <= 0x1F || c > 0x7E;
+}
+
+const extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);
+function isPathPercentEncode(c) {
+  return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);
+}
+
+const extraUserinfoPercentEncodeSet =
+  new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);
+function isUserinfoPercentEncode(c) {
+  return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);
+}
+
+function percentEncodeChar(c, encodeSetPredicate) {
+  const cStr = String.fromCodePoint(c);
+
+  if (encodeSetPredicate(c)) {
+    return utf8PercentEncode(cStr);
+  }
+
+  return cStr;
+}
+
+function parseIPv4Number(input) {
+  let R = 10;
+
+  if (input.length >= 2 && input.charAt(0) === "0" && input.charAt(1).toLowerCase() === "x") {
+    input = input.substring(2);
+    R = 16;
+  } else if (input.length >= 2 && input.charAt(0) === "0") {
+    input = input.substring(1);
+    R = 8;
+  }
+
+  if (input === "") {
+    return 0;
+  }
+
+  const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);
+  if (regex.test(input)) {
+    return failure;
+  }
+
+  return parseInt(input, R);
+}
+
+function parseIPv4(input) {
+  const parts = input.split(".");
+  if (parts[parts.length - 1] === "") {
+    if (parts.length > 1) {
+      parts.pop();
+    }
+  }
+
+  if (parts.length > 4) {
+    return input;
+  }
+
+  const numbers = [];
+  for (const part of parts) {
+    if (part === "") {
+      return input;
+    }
+    const n = parseIPv4Number(part);
+    if (n === failure) {
+      return input;
+    }
+
+    numbers.push(n);
+  }
+
+  for (let i = 0; i < numbers.length - 1; ++i) {
+    if (numbers[i] > 255) {
+      return failure;
+    }
+  }
+  if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {
+    return failure;
+  }
+
+  let ipv4 = numbers.pop();
+  let counter = 0;
+
+  for (const n of numbers) {
+    ipv4 += n * Math.pow(256, 3 - counter);
+    ++counter;
+  }
+
+  return ipv4;
+}
+
+function serializeIPv4(address) {
+  let output = "";
+  let n = address;
+
+  for (let i = 1; i <= 4; ++i) {
+    output = String(n % 256) + output;
+    if (i !== 4) {
+      output = "." + output;
+    }
+    n = Math.floor(n / 256);
+  }
+
+  return output;
+}
+
+function parseIPv6(input) {
+  const address = [0, 0, 0, 0, 0, 0, 0, 0];
+  let pieceIndex = 0;
+  let compress = null;
+  let pointer = 0;
+
+  input = punycode.ucs2.decode(input);
+
+  if (input[pointer] === 58) {
+    if (input[pointer + 1] !== 58) {
+      return failure;
+    }
+
+    pointer += 2;
+    ++pieceIndex;
+    compress = pieceIndex;
+  }
+
+  while (pointer < input.length) {
+    if (pieceIndex === 8) {
+      return failure;
+    }
+
+    if (input[pointer] === 58) {
+      if (compress !== null) {
+        return failure;
+      }
+      ++pointer;
+      ++pieceIndex;
+      compress = pieceIndex;
+      continue;
+    }
+
+    let value = 0;
+    let length = 0;
+
+    while (length < 4 && isASCIIHex(input[pointer])) {
+      value = value * 0x10 + parseInt(at(input, pointer), 16);
+      ++pointer;
+      ++length;
+    }
+
+    if (input[pointer] === 46) {
+      if (length === 0) {
+        return failure;
+      }
+
+      pointer -= length;
+
+      if (pieceIndex > 6) {
+        return failure;
+      }
+
+      let numbersSeen = 0;
+
+      while (input[pointer] !== undefined) {
+        let ipv4Piece = null;
+
+        if (numbersSeen > 0) {
+          if (input[pointer] === 46 && numbersSeen < 4) {
+            ++pointer;
+          } else {
+            return failure;
+          }
+        }
+
+        if (!isASCIIDigit(input[pointer])) {
+          return failure;
+        }
+
+        while (isASCIIDigit(input[pointer])) {
+          const number = parseInt(at(input, pointer));
+          if (ipv4Piece === null) {
+            ipv4Piece = number;
+          } else if (ipv4Piece === 0) {
+            return failure;
+          } else {
+            ipv4Piece = ipv4Piece * 10 + number;
+          }
+          if (ipv4Piece > 255) {
+            return failure;
+          }
+          ++pointer;
+        }
+
+        address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;
+
+        ++numbersSeen;
+
+        if (numbersSeen === 2 || numbersSeen === 4) {
+          ++pieceIndex;
+        }
+      }
+
+      if (numbersSeen !== 4) {
+        return failure;
+      }
+
+      break;
+    } else if (input[pointer] === 58) {
+      ++pointer;
+      if (input[pointer] === undefined) {
+        return failure;
+      }
+    } else if (input[pointer] !== undefined) {
+      return failure;
+    }
+
+    address[pieceIndex] = value;
+    ++pieceIndex;
+  }
+
+  if (compress !== null) {
+    let swaps = pieceIndex - compress;
+    pieceIndex = 7;
+    while (pieceIndex !== 0 && swaps > 0) {
+      const temp = address[compress + swaps - 1];
+      address[compress + swaps - 1] = address[pieceIndex];
+      address[pieceIndex] = temp;
+      --pieceIndex;
+      --swaps;
+    }
+  } else if (compress === null && pieceIndex !== 8) {
+    return failure;
+  }
+
+  return address;
+}
+
+function serializeIPv6(address) {
+  let output = "";
+  const seqResult = findLongestZeroSequence(address);
+  const compress = seqResult.idx;
+  let ignore0 = false;
+
+  for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {
+    if (ignore0 && address[pieceIndex] === 0) {
+      continue;
+    } else if (ignore0) {
+      ignore0 = false;
+    }
+
+    if (compress === pieceIndex) {
+      const separator = pieceIndex === 0 ? "::" : ":";
+      output += separator;
+      ignore0 = true;
+      continue;
+    }
+
+    output += address[pieceIndex].toString(16);
+
+    if (pieceIndex !== 7) {
+      output += ":";
+    }
+  }
+
+  return output;
+}
+
+function parseHost(input, isSpecialArg) {
+  if (input[0] === "[") {
+    if (input[input.length - 1] !== "]") {
+      return failure;
+    }
+
+    return parseIPv6(input.substring(1, input.length - 1));
+  }
+
+  if (!isSpecialArg) {
+    return parseOpaqueHost(input);
+  }
+
+  const domain = utf8PercentDecode(input);
+  const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);
+  if (asciiDomain === null) {
+    return failure;
+  }
+
+  if (containsForbiddenHostCodePoint(asciiDomain)) {
+    return failure;
+  }
+
+  const ipv4Host = parseIPv4(asciiDomain);
+  if (typeof ipv4Host === "number" || ipv4Host === failure) {
+    return ipv4Host;
+  }
+
+  return asciiDomain;
+}
+
+function parseOpaqueHost(input) {
+  if (containsForbiddenHostCodePointExcludingPercent(input)) {
+    return failure;
+  }
+
+  let output = "";
+  const decoded = punycode.ucs2.decode(input);
+  for (let i = 0; i < decoded.length; ++i) {
+    output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);
+  }
+  return output;
+}
+
+function findLongestZeroSequence(arr) {
+  let maxIdx = null;
+  let maxLen = 1; // only find elements > 1
+  let currStart = null;
+  let currLen = 0;
+
+  for (let i = 0; i < arr.length; ++i) {
+    if (arr[i] !== 0) {
+      if (currLen > maxLen) {
+        maxIdx = currStart;
+        maxLen = currLen;
+      }
+
+      currStart = null;
+      currLen = 0;
+    } else {
+      if (currStart === null) {
+        currStart = i;
+      }
+      ++currLen;
+    }
+  }
+
+  // if trailing zeros
+  if (currLen > maxLen) {
+    maxIdx = currStart;
+    maxLen = currLen;
+  }
+
+  return {
+    idx: maxIdx,
+    len: maxLen
+  };
+}
+
+function serializeHost(host) {
+  if (typeof host === "number") {
+    return serializeIPv4(host);
+  }
+
+  // IPv6 serializer
+  if (host instanceof Array) {
+    return "[" + serializeIPv6(host) + "]";
+  }
+
+  return host;
+}
+
+function trimControlChars(url) {
+  return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, "");
+}
+
+function trimTabAndNewline(url) {
+  return url.replace(/\u0009|\u000A|\u000D/g, "");
+}
+
+function shortenPath(url) {
+  const path = url.path;
+  if (path.length === 0) {
+    return;
+  }
+  if (url.scheme === "file" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {
+    return;
+  }
+
+  path.pop();
+}
+
+function includesCredentials(url) {
+  return url.username !== "" || url.password !== "";
+}
+
+function cannotHaveAUsernamePasswordPort(url) {
+  return url.host === null || url.host === "" || url.cannotBeABaseURL || url.scheme === "file";
+}
+
+function isNormalizedWindowsDriveLetter(string) {
+  return /^[A-Za-z]:$/.test(string);
+}
+
+function URLStateMachine(input, base, encodingOverride, url, stateOverride) {
+  this.pointer = 0;
+  this.input = input;
+  this.base = base || null;
+  this.encodingOverride = encodingOverride || "utf-8";
+  this.stateOverride = stateOverride;
+  this.url = url;
+  this.failure = false;
+  this.parseError = false;
+
+  if (!this.url) {
+    this.url = {
+      scheme: "",
+      username: "",
+      password: "",
+      host: null,
+      port: null,
+      path: [],
+      query: null,
+      fragment: null,
+
+      cannotBeABaseURL: false
+    };
+
+    const res = trimControlChars(this.input);
+    if (res !== this.input) {
+      this.parseError = true;
+    }
+    this.input = res;
+  }
+
+  const res = trimTabAndNewline(this.input);
+  if (res !== this.input) {
+    this.parseError = true;
+  }
+  this.input = res;
+
+  this.state = stateOverride || "scheme start";
+
+  this.buffer = "";
+  this.atFlag = false;
+  this.arrFlag = false;
+  this.passwordTokenSeenFlag = false;
+
+  this.input = punycode.ucs2.decode(this.input);
+
+  for (; this.pointer <= this.input.length; ++this.pointer) {
+    const c = this.input[this.pointer];
+    const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);
+
+    // exec state machine
+    const ret = this["parse " + this.state](c, cStr);
+    if (!ret) {
+      break; // terminate algorithm
+    } else if (ret === failure) {
+      this.failure = true;
+      break;
+    }
+  }
+}
+
+URLStateMachine.prototype["parse scheme start"] = function parseSchemeStart(c, cStr) {
+  if (isASCIIAlpha(c)) {
+    this.buffer += cStr.toLowerCase();
+    this.state = "scheme";
+  } else if (!this.stateOverride) {
+    this.state = "no scheme";
+    --this.pointer;
+  } else {
+    this.parseError = true;
+    return failure;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse scheme"] = function parseScheme(c, cStr) {
+  if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {
+    this.buffer += cStr.toLowerCase();
+  } else if (c === 58) {
+    if (this.stateOverride) {
+      if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {
+        return false;
+      }
+
+      if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {
+        return false;
+      }
+
+      if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === "file") {
+        return false;
+      }
+
+      if (this.url.scheme === "file" && (this.url.host === "" || this.url.host === null)) {
+        return false;
+      }
+    }
+    this.url.scheme = this.buffer;
+    this.buffer = "";
+    if (this.stateOverride) {
+      return false;
+    }
+    if (this.url.scheme === "file") {
+      if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {
+        this.parseError = true;
+      }
+      this.state = "file";
+    } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {
+      this.state = "special relative or authority";
+    } else if (isSpecial(this.url)) {
+      this.state = "special authority slashes";
+    } else if (this.input[this.pointer + 1] === 47) {
+      this.state = "path or authority";
+      ++this.pointer;
+    } else {
+      this.url.cannotBeABaseURL = true;
+      this.url.path.push("");
+      this.state = "cannot-be-a-base-URL path";
+    }
+  } else if (!this.stateOverride) {
+    this.buffer = "";
+    this.state = "no scheme";
+    this.pointer = -1;
+  } else {
+    this.parseError = true;
+    return failure;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse no scheme"] = function parseNoScheme(c) {
+  if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {
+    return failure;
+  } else if (this.base.cannotBeABaseURL && c === 35) {
+    this.url.scheme = this.base.scheme;
+    this.url.path = this.base.path.slice();
+    this.url.query = this.base.query;
+    this.url.fragment = "";
+    this.url.cannotBeABaseURL = true;
+    this.state = "fragment";
+  } else if (this.base.scheme === "file") {
+    this.state = "file";
+    --this.pointer;
+  } else {
+    this.state = "relative";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse special relative or authority"] = function parseSpecialRelativeOrAuthority(c) {
+  if (c === 47 && this.input[this.pointer + 1] === 47) {
+    this.state = "special authority ignore slashes";
+    ++this.pointer;
+  } else {
+    this.parseError = true;
+    this.state = "relative";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) {
+  if (c === 47) {
+    this.state = "authority";
+  } else {
+    this.state = "path";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse relative"] = function parseRelative(c) {
+  this.url.scheme = this.base.scheme;
+  if (isNaN(c)) {
+    this.url.username = this.base.username;
+    this.url.password = this.base.password;
+    this.url.host = this.base.host;
+    this.url.port = this.base.port;
+    this.url.path = this.base.path.slice();
+    this.url.query = this.base.query;
+  } else if (c === 47) {
+    this.state = "relative slash";
+  } else if (c === 63) {
+    this.url.username = this.base.username;
+    this.url.password = this.base.password;
+    this.url.host = this.base.host;
+    this.url.port = this.base.port;
+    this.url.path = this.base.path.slice();
+    this.url.query = "";
+    this.state = "query";
+  } else if (c === 35) {
+    this.url.username = this.base.username;
+    this.url.password = this.base.password;
+    this.url.host = this.base.host;
+    this.url.port = this.base.port;
+    this.url.path = this.base.path.slice();
+    this.url.query = this.base.query;
+    this.url.fragment = "";
+    this.state = "fragment";
+  } else if (isSpecial(this.url) && c === 92) {
+    this.parseError = true;
+    this.state = "relative slash";
+  } else {
+    this.url.username = this.base.username;
+    this.url.password = this.base.password;
+    this.url.host = this.base.host;
+    this.url.port = this.base.port;
+    this.url.path = this.base.path.slice(0, this.base.path.length - 1);
+
+    this.state = "path";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse relative slash"] = function parseRelativeSlash(c) {
+  if (isSpecial(this.url) && (c === 47 || c === 92)) {
+    if (c === 92) {
+      this.parseError = true;
+    }
+    this.state = "special authority ignore slashes";
+  } else if (c === 47) {
+    this.state = "authority";
+  } else {
+    this.url.username = this.base.username;
+    this.url.password = this.base.password;
+    this.url.host = this.base.host;
+    this.url.port = this.base.port;
+    this.state = "path";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse special authority slashes"] = function parseSpecialAuthoritySlashes(c) {
+  if (c === 47 && this.input[this.pointer + 1] === 47) {
+    this.state = "special authority ignore slashes";
+    ++this.pointer;
+  } else {
+    this.parseError = true;
+    this.state = "special authority ignore slashes";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse special authority ignore slashes"] = function parseSpecialAuthorityIgnoreSlashes(c) {
+  if (c !== 47 && c !== 92) {
+    this.state = "authority";
+    --this.pointer;
+  } else {
+    this.parseError = true;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse authority"] = function parseAuthority(c, cStr) {
+  if (c === 64) {
+    this.parseError = true;
+    if (this.atFlag) {
+      this.buffer = "%40" + this.buffer;
+    }
+    this.atFlag = true;
+
+    // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars
+    const len = countSymbols(this.buffer);
+    for (let pointer = 0; pointer < len; ++pointer) {
+      const codePoint = this.buffer.codePointAt(pointer);
+
+      if (codePoint === 58 && !this.passwordTokenSeenFlag) {
+        this.passwordTokenSeenFlag = true;
+        continue;
+      }
+      const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);
+      if (this.passwordTokenSeenFlag) {
+        this.url.password += encodedCodePoints;
+      } else {
+        this.url.username += encodedCodePoints;
+      }
+    }
+    this.buffer = "";
+  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||
+             (isSpecial(this.url) && c === 92)) {
+    if (this.atFlag && this.buffer === "") {
+      this.parseError = true;
+      return failure;
+    }
+    this.pointer -= countSymbols(this.buffer) + 1;
+    this.buffer = "";
+    this.state = "host";
+  } else {
+    this.buffer += cStr;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse hostname"] =
+URLStateMachine.prototype["parse host"] = function parseHostName(c, cStr) {
+  if (this.stateOverride && this.url.scheme === "file") {
+    --this.pointer;
+    this.state = "file host";
+  } else if (c === 58 && !this.arrFlag) {
+    if (this.buffer === "") {
+      this.parseError = true;
+      return failure;
+    }
+
+    const host = parseHost(this.buffer, isSpecial(this.url));
+    if (host === failure) {
+      return failure;
+    }
+
+    this.url.host = host;
+    this.buffer = "";
+    this.state = "port";
+    if (this.stateOverride === "hostname") {
+      return false;
+    }
+  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||
+             (isSpecial(this.url) && c === 92)) {
+    --this.pointer;
+    if (isSpecial(this.url) && this.buffer === "") {
+      this.parseError = true;
+      return failure;
+    } else if (this.stateOverride && this.buffer === "" &&
+               (includesCredentials(this.url) || this.url.port !== null)) {
+      this.parseError = true;
+      return false;
+    }
+
+    const host = parseHost(this.buffer, isSpecial(this.url));
+    if (host === failure) {
+      return failure;
+    }
+
+    this.url.host = host;
+    this.buffer = "";
+    this.state = "path start";
+    if (this.stateOverride) {
+      return false;
+    }
+  } else {
+    if (c === 91) {
+      this.arrFlag = true;
+    } else if (c === 93) {
+      this.arrFlag = false;
+    }
+    this.buffer += cStr;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse port"] = function parsePort(c, cStr) {
+  if (isASCIIDigit(c)) {
+    this.buffer += cStr;
+  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||
+             (isSpecial(this.url) && c === 92) ||
+             this.stateOverride) {
+    if (this.buffer !== "") {
+      const port = parseInt(this.buffer);
+      if (port > Math.pow(2, 16) - 1) {
+        this.parseError = true;
+        return failure;
+      }
+      this.url.port = port === defaultPort(this.url.scheme) ? null : port;
+      this.buffer = "";
+    }
+    if (this.stateOverride) {
+      return false;
+    }
+    this.state = "path start";
+    --this.pointer;
+  } else {
+    this.parseError = true;
+    return failure;
+  }
+
+  return true;
+};
+
+const fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);
+
+URLStateMachine.prototype["parse file"] = function parseFile(c) {
+  this.url.scheme = "file";
+
+  if (c === 47 || c === 92) {
+    if (c === 92) {
+      this.parseError = true;
+    }
+    this.state = "file slash";
+  } else if (this.base !== null && this.base.scheme === "file") {
+    if (isNaN(c)) {
+      this.url.host = this.base.host;
+      this.url.path = this.base.path.slice();
+      this.url.query = this.base.query;
+    } else if (c === 63) {
+      this.url.host = this.base.host;
+      this.url.path = this.base.path.slice();
+      this.url.query = "";
+      this.state = "query";
+    } else if (c === 35) {
+      this.url.host = this.base.host;
+      this.url.path = this.base.path.slice();
+      this.url.query = this.base.query;
+      this.url.fragment = "";
+      this.state = "fragment";
+    } else {
+      if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points
+          !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||
+          (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points
+           !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {
+        this.url.host = this.base.host;
+        this.url.path = this.base.path.slice();
+        shortenPath(this.url);
+      } else {
+        this.parseError = true;
+      }
+
+      this.state = "path";
+      --this.pointer;
+    }
+  } else {
+    this.state = "path";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) {
+  if (c === 47 || c === 92) {
+    if (c === 92) {
+      this.parseError = true;
+    }
+    this.state = "file host";
+  } else {
+    if (this.base !== null && this.base.scheme === "file") {
+      if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {
+        this.url.path.push(this.base.path[0]);
+      } else {
+        this.url.host = this.base.host;
+      }
+    }
+    this.state = "path";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse file host"] = function parseFileHost(c, cStr) {
+  if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {
+    --this.pointer;
+    if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {
+      this.parseError = true;
+      this.state = "path";
+    } else if (this.buffer === "") {
+      this.url.host = "";
+      if (this.stateOverride) {
+        return false;
+      }
+      this.state = "path start";
+    } else {
+      let host = parseHost(this.buffer, isSpecial(this.url));
+      if (host === failure) {
+        return failure;
+      }
+      if (host === "localhost") {
+        host = "";
+      }
+      this.url.host = host;
+
+      if (this.stateOverride) {
+        return false;
+      }
+
+      this.buffer = "";
+      this.state = "path start";
+    }
+  } else {
+    this.buffer += cStr;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse path start"] = function parsePathStart(c) {
+  if (isSpecial(this.url)) {
+    if (c === 92) {
+      this.parseError = true;
+    }
+    this.state = "path";
+
+    if (c !== 47 && c !== 92) {
+      --this.pointer;
+    }
+  } else if (!this.stateOverride && c === 63) {
+    this.url.query = "";
+    this.state = "query";
+  } else if (!this.stateOverride && c === 35) {
+    this.url.fragment = "";
+    this.state = "fragment";
+  } else if (c !== undefined) {
+    this.state = "path";
+    if (c !== 47) {
+      --this.pointer;
+    }
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse path"] = function parsePath(c) {
+  if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||
+      (!this.stateOverride && (c === 63 || c === 35))) {
+    if (isSpecial(this.url) && c === 92) {
+      this.parseError = true;
+    }
+
+    if (isDoubleDot(this.buffer)) {
+      shortenPath(this.url);
+      if (c !== 47 && !(isSpecial(this.url) && c === 92)) {
+        this.url.path.push("");
+      }
+    } else if (isSingleDot(this.buffer) && c !== 47 &&
+               !(isSpecial(this.url) && c === 92)) {
+      this.url.path.push("");
+    } else if (!isSingleDot(this.buffer)) {
+      if (this.url.scheme === "file" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {
+        if (this.url.host !== "" && this.url.host !== null) {
+          this.parseError = true;
+          this.url.host = "";
+        }
+        this.buffer = this.buffer[0] + ":";
+      }
+      this.url.path.push(this.buffer);
+    }
+    this.buffer = "";
+    if (this.url.scheme === "file" && (c === undefined || c === 63 || c === 35)) {
+      while (this.url.path.length > 1 && this.url.path[0] === "") {
+        this.parseError = true;
+        this.url.path.shift();
+      }
+    }
+    if (c === 63) {
+      this.url.query = "";
+      this.state = "query";
+    }
+    if (c === 35) {
+      this.url.fragment = "";
+      this.state = "fragment";
+    }
+  } else {
+    // TODO: If c is not a URL code point and not "%", parse error.
+
+    if (c === 37 &&
+      (!isASCIIHex(this.input[this.pointer + 1]) ||
+        !isASCIIHex(this.input[this.pointer + 2]))) {
+      this.parseError = true;
+    }
+
+    this.buffer += percentEncodeChar(c, isPathPercentEncode);
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse cannot-be-a-base-URL path"] = function parseCannotBeABaseURLPath(c) {
+  if (c === 63) {
+    this.url.query = "";
+    this.state = "query";
+  } else if (c === 35) {
+    this.url.fragment = "";
+    this.state = "fragment";
+  } else {
+    // TODO: Add: not a URL code point
+    if (!isNaN(c) && c !== 37) {
+      this.parseError = true;
+    }
+
+    if (c === 37 &&
+        (!isASCIIHex(this.input[this.pointer + 1]) ||
+         !isASCIIHex(this.input[this.pointer + 2]))) {
+      this.parseError = true;
+    }
+
+    if (!isNaN(c)) {
+      this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);
+    }
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse query"] = function parseQuery(c, cStr) {
+  if (isNaN(c) || (!this.stateOverride && c === 35)) {
+    if (!isSpecial(this.url) || this.url.scheme === "ws" || this.url.scheme === "wss") {
+      this.encodingOverride = "utf-8";
+    }
+
+    const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead
+    for (let i = 0; i < buffer.length; ++i) {
+      if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||
+          buffer[i] === 0x3C || buffer[i] === 0x3E) {
+        this.url.query += percentEncode(buffer[i]);
+      } else {
+        this.url.query += String.fromCodePoint(buffer[i]);
+      }
+    }
+
+    this.buffer = "";
+    if (c === 35) {
+      this.url.fragment = "";
+      this.state = "fragment";
+    }
+  } else {
+    // TODO: If c is not a URL code point and not "%", parse error.
+    if (c === 37 &&
+      (!isASCIIHex(this.input[this.pointer + 1]) ||
+        !isASCIIHex(this.input[this.pointer + 2]))) {
+      this.parseError = true;
+    }
+
+    this.buffer += cStr;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse fragment"] = function parseFragment(c) {
+  if (isNaN(c)) { // do nothing
+  } else if (c === 0x0) {
+    this.parseError = true;
+  } else {
+    // TODO: If c is not a URL code point and not "%", parse error.
+    if (c === 37 &&
+      (!isASCIIHex(this.input[this.pointer + 1]) ||
+        !isASCIIHex(this.input[this.pointer + 2]))) {
+      this.parseError = true;
+    }
+
+    this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);
+  }
+
+  return true;
+};
+
+function serializeURL(url, excludeFragment) {
+  let output = url.scheme + ":";
+  if (url.host !== null) {
+    output += "//";
+
+    if (url.username !== "" || url.password !== "") {
+      output += url.username;
+      if (url.password !== "") {
+        output += ":" + url.password;
+      }
+      output += "@";
+    }
+
+    output += serializeHost(url.host);
+
+    if (url.port !== null) {
+      output += ":" + url.port;
+    }
+  } else if (url.host === null && url.scheme === "file") {
+    output += "//";
+  }
+
+  if (url.cannotBeABaseURL) {
+    output += url.path[0];
+  } else {
+    for (const string of url.path) {
+      output += "/" + string;
+    }
+  }
+
+  if (url.query !== null) {
+    output += "?" + url.query;
+  }
+
+  if (!excludeFragment && url.fragment !== null) {
+    output += "#" + url.fragment;
+  }
+
+  return output;
+}
+
+function serializeOrigin(tuple) {
+  let result = tuple.scheme + "://";
+  result += serializeHost(tuple.host);
+
+  if (tuple.port !== null) {
+    result += ":" + tuple.port;
+  }
+
+  return result;
+}
+
+module.exports.serializeURL = serializeURL;
+
+module.exports.serializeURLOrigin = function (url) {
+  // https://url.spec.whatwg.org/#concept-url-origin
+  switch (url.scheme) {
+    case "blob":
+      try {
+        return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));
+      } catch (e) {
+        // serializing an opaque origin returns "null"
+        return "null";
+      }
+    case "ftp":
+    case "gopher":
+    case "http":
+    case "https":
+    case "ws":
+    case "wss":
+      return serializeOrigin({
+        scheme: url.scheme,
+        host: url.host,
+        port: url.port
+      });
+    case "file":
+      // spec says "exercise to the reader", chrome says "file://"
+      return "file://";
+    default:
+      // serializing an opaque origin returns "null"
+      return "null";
+  }
+};
+
+module.exports.basicURLParse = function (input, options) {
+  if (options === undefined) {
+    options = {};
+  }
+
+  const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);
+  if (usm.failure) {
+    return "failure";
+  }
+
+  return usm.url;
+};
+
+module.exports.setTheUsername = function (url, username) {
+  url.username = "";
+  const decoded = punycode.ucs2.decode(username);
+  for (let i = 0; i < decoded.length; ++i) {
+    url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);
+  }
+};
+
+module.exports.setThePassword = function (url, password) {
+  url.password = "";
+  const decoded = punycode.ucs2.decode(password);
+  for (let i = 0; i < decoded.length; ++i) {
+    url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);
+  }
+};
+
+module.exports.serializeHost = serializeHost;
+
+module.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;
+
+module.exports.serializeInteger = function (integer) {
+  return String(integer);
+};
+
+module.exports.parseURL = function (input, options) {
+  if (options === undefined) {
+    options = {};
+  }
+
+  // We don't handle blobs, so this just delegates:
+  return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });
+};
 
-const os = __webpack_require__(227);
-const fs = __webpack_require__(722);
-const isDocker = __webpack_require__(724);
-
-const isWsl = () => {
-	if (process.platform !== 'linux') {
-		return false;
-	}
-
-	if (os.release().toLowerCase().includes('microsoft')) {
-		if (isDocker()) {
-			return false;
-		}
-
-		return true;
-	}
-
-	try {
-		return fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft') ?
-			!isDocker() : false;
-	} catch (_) {
-		return false;
-	}
-};
-
-if (process.env.__IS_WSL_TEST__) {
-	module.exports = isWsl;
-} else {
-	module.exports = isWsl();
-}
-
-
-/***/ }),
-/* 724 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-const fs = __webpack_require__(722);
-
-let isDocker;
-
-function hasDockerEnv() {
-	try {
-		fs.statSync('/.dockerenv');
-		return true;
-	} catch (_) {
-		return false;
-	}
-}
-
-function hasDockerCGroup() {
-	try {
-		return fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');
-	} catch (_) {
-		return false;
-	}
-}
-
-module.exports = () => {
-	if (isDocker === undefined) {
-		isDocker = hasDockerEnv() || hasDockerCGroup();
-	}
-
-	return isDocker;
-};
-
-
-/***/ }),
-/* 725 */
-/***/ (function(module, exports) {
-
-module.exports = enableDestroy;
-
-function enableDestroy(server) {
-  var connections = {}
-
-  server.on('connection', function(conn) {
-    var key = conn.remoteAddress + ':' + conn.remotePort;
-    connections[key] = conn;
-    conn.on('close', function() {
-      delete connections[key];
-    });
-  });
-
-  server.destroy = function(cb) {
-    server.close(cb);
-    for (var key in connections)
-      connections[key].destroy();
-  };
-}
-
-
-/***/ }),
-/* 726 */
-/***/ (function(__webpack_module__, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Headers", function() { return Headers; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Request", function() { return Request; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Response", function() { return Response; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FetchError", function() { return FetchError; });
-/* harmony import */ var stream__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(517);
-/* harmony import */ var http__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(718);
-/* harmony import */ var url__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(727);
-/* harmony import */ var whatwg_url__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(728);
-/* harmony import */ var https__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(737);
-/* harmony import */ var zlib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(738);
-
-
-
-
-
-
-
-// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js
-
-// fix for "Readable" isn't a named export issue
-const Readable = stream__WEBPACK_IMPORTED_MODULE_0__.Readable;
-
-const BUFFER = Symbol('buffer');
-const TYPE = Symbol('type');
-
-class Blob {
-	constructor() {
-		this[TYPE] = '';
-
-		const blobParts = arguments[0];
-		const options = arguments[1];
-
-		const buffers = [];
-		let size = 0;
-
-		if (blobParts) {
-			const a = blobParts;
-			const length = Number(a.length);
-			for (let i = 0; i < length; i++) {
-				const element = a[i];
-				let buffer;
-				if (element instanceof Buffer) {
-					buffer = element;
-				} else if (ArrayBuffer.isView(element)) {
-					buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);
-				} else if (element instanceof ArrayBuffer) {
-					buffer = Buffer.from(element);
-				} else if (element instanceof Blob) {
-					buffer = element[BUFFER];
-				} else {
-					buffer = Buffer.from(typeof element === 'string' ? element : String(element));
-				}
-				size += buffer.length;
-				buffers.push(buffer);
-			}
-		}
-
-		this[BUFFER] = Buffer.concat(buffers);
-
-		let type = options && options.type !== undefined && String(options.type).toLowerCase();
-		if (type && !/[^\u0020-\u007E]/.test(type)) {
-			this[TYPE] = type;
-		}
-	}
-	get size() {
-		return this[BUFFER].length;
-	}
-	get type() {
-		return this[TYPE];
-	}
-	text() {
-		return Promise.resolve(this[BUFFER].toString());
-	}
-	arrayBuffer() {
-		const buf = this[BUFFER];
-		const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
-		return Promise.resolve(ab);
-	}
-	stream() {
-		const readable = new Readable();
-		readable._read = function () {};
-		readable.push(this[BUFFER]);
-		readable.push(null);
-		return readable;
-	}
-	toString() {
-		return '[object Blob]';
-	}
-	slice() {
-		const size = this.size;
-
-		const start = arguments[0];
-		const end = arguments[1];
-		let relativeStart, relativeEnd;
-		if (start === undefined) {
-			relativeStart = 0;
-		} else if (start < 0) {
-			relativeStart = Math.max(size + start, 0);
-		} else {
-			relativeStart = Math.min(start, size);
-		}
-		if (end === undefined) {
-			relativeEnd = size;
-		} else if (end < 0) {
-			relativeEnd = Math.max(size + end, 0);
-		} else {
-			relativeEnd = Math.min(end, size);
-		}
-		const span = Math.max(relativeEnd - relativeStart, 0);
-
-		const buffer = this[BUFFER];
-		const slicedBuffer = buffer.slice(relativeStart, relativeStart + span);
-		const blob = new Blob([], { type: arguments[2] });
-		blob[BUFFER] = slicedBuffer;
-		return blob;
-	}
-}
-
-Object.defineProperties(Blob.prototype, {
-	size: { enumerable: true },
-	type: { enumerable: true },
-	slice: { enumerable: true }
-});
-
-Object.defineProperty(Blob.prototype, Symbol.toStringTag, {
-	value: 'Blob',
-	writable: false,
-	enumerable: false,
-	configurable: true
-});
-
-/**
- * fetch-error.js
- *
- * FetchError interface for operational errors
- */
-
-/**
- * Create FetchError instance
- *
- * @param   String      message      Error message for human
- * @param   String      type         Error type for machine
- * @param   String      systemError  For Node.js system error
- * @return  FetchError
- */
-function FetchError(message, type, systemError) {
-  Error.call(this, message);
-
-  this.message = message;
-  this.type = type;
-
-  // when err.type is `system`, err.code contains system error code
-  if (systemError) {
-    this.code = this.errno = systemError.code;
-  }
-
-  // hide custom error implementation details from end-users
-  Error.captureStackTrace(this, this.constructor);
-}
-
-FetchError.prototype = Object.create(Error.prototype);
-FetchError.prototype.constructor = FetchError;
-FetchError.prototype.name = 'FetchError';
-
-let convert;
-try {
-	convert = require('encoding').convert;
-} catch (e) {}
-
-const INTERNALS = Symbol('Body internals');
-
-// fix an issue where "PassThrough" isn't a named export for node <10
-const PassThrough = stream__WEBPACK_IMPORTED_MODULE_0__.PassThrough;
-
-/**
- * Body mixin
- *
- * Ref: https://fetch.spec.whatwg.org/#body
- *
- * @param   Stream  body  Readable stream
- * @param   Object  opts  Response options
- * @return  Void
- */
-function Body(body) {
-	var _this = this;
-
-	var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
-	    _ref$size = _ref.size;
-
-	let size = _ref$size === undefined ? 0 : _ref$size;
-	var _ref$timeout = _ref.timeout;
-	let timeout = _ref$timeout === undefined ? 0 : _ref$timeout;
-
-	if (body == null) {
-		// body is undefined or null
-		body = null;
-	} else if (isURLSearchParams(body)) {
-		// body is a URLSearchParams
-		body = Buffer.from(body.toString());
-	} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
-		// body is ArrayBuffer
-		body = Buffer.from(body);
-	} else if (ArrayBuffer.isView(body)) {
-		// body is ArrayBufferView
-		body = Buffer.from(body.buffer, body.byteOffset, body.byteLength);
-	} else if (body instanceof stream__WEBPACK_IMPORTED_MODULE_0__) ; else {
-		// none of the above
-		// coerce to string then buffer
-		body = Buffer.from(String(body));
-	}
-	this[INTERNALS] = {
-		body,
-		disturbed: false,
-		error: null
-	};
-	this.size = size;
-	this.timeout = timeout;
-
-	if (body instanceof stream__WEBPACK_IMPORTED_MODULE_0__) {
-		body.on('error', function (err) {
-			const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);
-			_this[INTERNALS].error = error;
-		});
-	}
-}
-
-Body.prototype = {
-	get body() {
-		return this[INTERNALS].body;
-	},
-
-	get bodyUsed() {
-		return this[INTERNALS].disturbed;
-	},
-
-	/**
-  * Decode response as ArrayBuffer
-  *
-  * @return  Promise
-  */
-	arrayBuffer() {
-		return consumeBody.call(this).then(function (buf) {
-			return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
-		});
-	},
-
-	/**
-  * Return raw response as Blob
-  *
-  * @return Promise
-  */
-	blob() {
-		let ct = this.headers && this.headers.get('content-type') || '';
-		return consumeBody.call(this).then(function (buf) {
-			return Object.assign(
-			// Prevent copying
-			new Blob([], {
-				type: ct.toLowerCase()
-			}), {
-				[BUFFER]: buf
-			});
-		});
-	},
-
-	/**
-  * Decode response as json
-  *
-  * @return  Promise
-  */
-	json() {
-		var _this2 = this;
-
-		return consumeBody.call(this).then(function (buffer) {
-			try {
-				return JSON.parse(buffer.toString());
-			} catch (err) {
-				return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));
-			}
-		});
-	},
-
-	/**
-  * Decode response as text
-  *
-  * @return  Promise
-  */
-	text() {
-		return consumeBody.call(this).then(function (buffer) {
-			return buffer.toString();
-		});
-	},
-
-	/**
-  * Decode response as buffer (non-spec api)
-  *
-  * @return  Promise
-  */
-	buffer() {
-		return consumeBody.call(this);
-	},
-
-	/**
-  * Decode response as text, while automatically detecting the encoding and
-  * trying to decode to UTF-8 (non-spec api)
-  *
-  * @return  Promise
-  */
-	textConverted() {
-		var _this3 = this;
-
-		return consumeBody.call(this).then(function (buffer) {
-			return convertBody(buffer, _this3.headers);
-		});
-	}
-};
-
-// In browsers, all properties are enumerable.
-Object.defineProperties(Body.prototype, {
-	body: { enumerable: true },
-	bodyUsed: { enumerable: true },
-	arrayBuffer: { enumerable: true },
-	blob: { enumerable: true },
-	json: { enumerable: true },
-	text: { enumerable: true }
-});
-
-Body.mixIn = function (proto) {
-	for (const name of Object.getOwnPropertyNames(Body.prototype)) {
-		// istanbul ignore else: future proof
-		if (!(name in proto)) {
-			const desc = Object.getOwnPropertyDescriptor(Body.prototype, name);
-			Object.defineProperty(proto, name, desc);
-		}
-	}
-};
-
-/**
- * Consume and convert an entire Body to a Buffer.
- *
- * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body
- *
- * @return  Promise
- */
-function consumeBody() {
-	var _this4 = this;
-
-	if (this[INTERNALS].disturbed) {
-		return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));
-	}
-
-	this[INTERNALS].disturbed = true;
-
-	if (this[INTERNALS].error) {
-		return Body.Promise.reject(this[INTERNALS].error);
-	}
-
-	let body = this.body;
-
-	// body is null
-	if (body === null) {
-		return Body.Promise.resolve(Buffer.alloc(0));
-	}
-
-	// body is blob
-	if (isBlob(body)) {
-		body = body.stream();
-	}
-
-	// body is buffer
-	if (Buffer.isBuffer(body)) {
-		return Body.Promise.resolve(body);
-	}
-
-	// istanbul ignore if: should never happen
-	if (!(body instanceof stream__WEBPACK_IMPORTED_MODULE_0__)) {
-		return Body.Promise.resolve(Buffer.alloc(0));
-	}
-
-	// body is stream
-	// get ready to actually consume the body
-	let accum = [];
-	let accumBytes = 0;
-	let abort = false;
-
-	return new Body.Promise(function (resolve, reject) {
-		let resTimeout;
-
-		// allow timeout on slow response body
-		if (_this4.timeout) {
-			resTimeout = setTimeout(function () {
-				abort = true;
-				reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));
-			}, _this4.timeout);
-		}
-
-		// handle stream errors
-		body.on('error', function (err) {
-			if (err.name === 'AbortError') {
-				// if the request was aborted, reject with this Error
-				abort = true;
-				reject(err);
-			} else {
-				// other errors, such as incorrect content-encoding
-				reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));
-			}
-		});
-
-		body.on('data', function (chunk) {
-			if (abort || chunk === null) {
-				return;
-			}
-
-			if (_this4.size && accumBytes + chunk.length > _this4.size) {
-				abort = true;
-				reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));
-				return;
-			}
-
-			accumBytes += chunk.length;
-			accum.push(chunk);
-		});
-
-		body.on('end', function () {
-			if (abort) {
-				return;
-			}
-
-			clearTimeout(resTimeout);
-
-			try {
-				resolve(Buffer.concat(accum, accumBytes));
-			} catch (err) {
-				// handle streams that have accumulated too much data (issue #414)
-				reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));
-			}
-		});
-	});
-}
-
-/**
- * Detect buffer encoding and convert to target encoding
- * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding
- *
- * @param   Buffer  buffer    Incoming buffer
- * @param   String  encoding  Target encoding
- * @return  String
- */
-function convertBody(buffer, headers) {
-	if (typeof convert !== 'function') {
-		throw new Error('The package `encoding` must be installed to use the textConverted() function');
-	}
-
-	const ct = headers.get('content-type');
-	let charset = 'utf-8';
-	let res, str;
-
-	// header
-	if (ct) {
-		res = /charset=([^;]*)/i.exec(ct);
-	}
-
-	// no charset in content type, peek at response body for at most 1024 bytes
-	str = buffer.slice(0, 1024).toString();
-
-	// html5
-	if (!res && str) {
-		res = /<meta.+?charset=(['"])(.+?)\1/i.exec(str);
-	}
-
-	// html4
-	if (!res && str) {
-		res = /<meta[\s]+?http-equiv=(['"])content-type\1[\s]+?content=(['"])(.+?)\2/i.exec(str);
-		if (!res) {
-			res = /<meta[\s]+?content=(['"])(.+?)\1[\s]+?http-equiv=(['"])content-type\3/i.exec(str);
-			if (res) {
-				res.pop(); // drop last quote
-			}
-		}
-
-		if (res) {
-			res = /charset=(.*)/i.exec(res.pop());
-		}
-	}
-
-	// xml
-	if (!res && str) {
-		res = /<\?xml.+?encoding=(['"])(.+?)\1/i.exec(str);
-	}
-
-	// found charset
-	if (res) {
-		charset = res.pop();
-
-		// prevent decode issues when sites use incorrect encoding
-		// ref: https://hsivonen.fi/encoding-menu/
-		if (charset === 'gb2312' || charset === 'gbk') {
-			charset = 'gb18030';
-		}
-	}
-
-	// turn raw buffers into a single utf-8 buffer
-	return convert(buffer, 'UTF-8', charset).toString();
-}
-
-/**
- * Detect a URLSearchParams object
- * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143
- *
- * @param   Object  obj     Object to detect by type or brand
- * @return  String
- */
-function isURLSearchParams(obj) {
-	// Duck-typing as a necessary condition.
-	if (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {
-		return false;
-	}
-
-	// Brand-checking and more duck-typing as optional condition.
-	return obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';
-}
-
-/**
- * Check if `obj` is a W3C `Blob` object (which `File` inherits from)
- * @param  {*} obj
- * @return {boolean}
- */
-function isBlob(obj) {
-	return typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);
-}
-
-/**
- * Clone body given Res/Req instance
- *
- * @param   Mixed  instance  Response or Request instance
- * @return  Mixed
- */
-function clone(instance) {
-	let p1, p2;
-	let body = instance.body;
-
-	// don't allow cloning a used body
-	if (instance.bodyUsed) {
-		throw new Error('cannot clone body after it is used');
-	}
-
-	// check that body is a stream and not form-data object
-	// note: we can't clone the form-data object without having it as a dependency
-	if (body instanceof stream__WEBPACK_IMPORTED_MODULE_0__ && typeof body.getBoundary !== 'function') {
-		// tee instance body
-		p1 = new PassThrough();
-		p2 = new PassThrough();
-		body.pipe(p1);
-		body.pipe(p2);
-		// set instance body to teed body and return the other teed body
-		instance[INTERNALS].body = p1;
-		body = p2;
-	}
-
-	return body;
-}
-
-/**
- * Performs the operation "extract a `Content-Type` value from |object|" as
- * specified in the specification:
- * https://fetch.spec.whatwg.org/#concept-bodyinit-extract
- *
- * This function assumes that instance.body is present.
- *
- * @param   Mixed  instance  Any options.body input
- */
-function extractContentType(body) {
-	if (body === null) {
-		// body is null
-		return null;
-	} else if (typeof body === 'string') {
-		// body is string
-		return 'text/plain;charset=UTF-8';
-	} else if (isURLSearchParams(body)) {
-		// body is a URLSearchParams
-		return 'application/x-www-form-urlencoded;charset=UTF-8';
-	} else if (isBlob(body)) {
-		// body is blob
-		return body.type || null;
-	} else if (Buffer.isBuffer(body)) {
-		// body is buffer
-		return null;
-	} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
-		// body is ArrayBuffer
-		return null;
-	} else if (ArrayBuffer.isView(body)) {
-		// body is ArrayBufferView
-		return null;
-	} else if (typeof body.getBoundary === 'function') {
-		// detect form data input from form-data module
-		return `multipart/form-data;boundary=${body.getBoundary()}`;
-	} else if (body instanceof stream__WEBPACK_IMPORTED_MODULE_0__) {
-		// body is stream
-		// can't really do much about this
-		return null;
-	} else {
-		// Body constructor defaults other things to string
-		return 'text/plain;charset=UTF-8';
-	}
-}
-
-/**
- * The Fetch Standard treats this as if "total bytes" is a property on the body.
- * For us, we have to explicitly get it with a function.
- *
- * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes
- *
- * @param   Body    instance   Instance of Body
- * @return  Number?            Number of bytes, or null if not possible
- */
-function getTotalBytes(instance) {
-	const body = instance.body;
-
-
-	if (body === null) {
-		// body is null
-		return 0;
-	} else if (isBlob(body)) {
-		return body.size;
-	} else if (Buffer.isBuffer(body)) {
-		// body is buffer
-		return body.length;
-	} else if (body && typeof body.getLengthSync === 'function') {
-		// detect form data input from form-data module
-		if (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x
-		body.hasKnownLength && body.hasKnownLength()) {
-			// 2.x
-			return body.getLengthSync();
-		}
-		return null;
-	} else {
-		// body is stream
-		return null;
-	}
-}
-
-/**
- * Write a Body to a Node.js WritableStream (e.g. http.Request) object.
- *
- * @param   Body    instance   Instance of Body
- * @return  Void
- */
-function writeToStream(dest, instance) {
-	const body = instance.body;
-
-
-	if (body === null) {
-		// body is null
-		dest.end();
-	} else if (isBlob(body)) {
-		body.stream().pipe(dest);
-	} else if (Buffer.isBuffer(body)) {
-		// body is buffer
-		dest.write(body);
-		dest.end();
-	} else {
-		// body is stream
-		body.pipe(dest);
-	}
-}
-
-// expose Promise
-Body.Promise = global.Promise;
-
-/**
- * headers.js
- *
- * Headers class offers convenient helpers
- */
-
-const invalidTokenRegex = /[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/;
-const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/;
-
-function validateName(name) {
-	name = `${name}`;
-	if (invalidTokenRegex.test(name) || name === '') {
-		throw new TypeError(`${name} is not a legal HTTP header name`);
-	}
-}
-
-function validateValue(value) {
-	value = `${value}`;
-	if (invalidHeaderCharRegex.test(value)) {
-		throw new TypeError(`${value} is not a legal HTTP header value`);
-	}
-}
-
-/**
- * Find the key in the map object given a header name.
- *
- * Returns undefined if not found.
- *
- * @param   String  name  Header name
- * @return  String|Undefined
- */
-function find(map, name) {
-	name = name.toLowerCase();
-	for (const key in map) {
-		if (key.toLowerCase() === name) {
-			return key;
-		}
-	}
-	return undefined;
-}
-
-const MAP = Symbol('map');
-class Headers {
-	/**
-  * Headers class
-  *
-  * @param   Object  headers  Response headers
-  * @return  Void
-  */
-	constructor() {
-		let init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
-
-		this[MAP] = Object.create(null);
-
-		if (init instanceof Headers) {
-			const rawHeaders = init.raw();
-			const headerNames = Object.keys(rawHeaders);
-
-			for (const headerName of headerNames) {
-				for (const value of rawHeaders[headerName]) {
-					this.append(headerName, value);
-				}
-			}
-
-			return;
-		}
-
-		// We don't worry about converting prop to ByteString here as append()
-		// will handle it.
-		if (init == null) ; else if (typeof init === 'object') {
-			const method = init[Symbol.iterator];
-			if (method != null) {
-				if (typeof method !== 'function') {
-					throw new TypeError('Header pairs must be iterable');
-				}
-
-				// sequence<sequence<ByteString>>
-				// Note: per spec we have to first exhaust the lists then process them
-				const pairs = [];
-				for (const pair of init) {
-					if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {
-						throw new TypeError('Each header pair must be iterable');
-					}
-					pairs.push(Array.from(pair));
-				}
-
-				for (const pair of pairs) {
-					if (pair.length !== 2) {
-						throw new TypeError('Each header pair must be a name/value tuple');
-					}
-					this.append(pair[0], pair[1]);
-				}
-			} else {
-				// record<ByteString, ByteString>
-				for (const key of Object.keys(init)) {
-					const value = init[key];
-					this.append(key, value);
-				}
-			}
-		} else {
-			throw new TypeError('Provided initializer must be an object');
-		}
-	}
-
-	/**
-  * Return combined header value given name
-  *
-  * @param   String  name  Header name
-  * @return  Mixed
-  */
-	get(name) {
-		name = `${name}`;
-		validateName(name);
-		const key = find(this[MAP], name);
-		if (key === undefined) {
-			return null;
-		}
-
-		return this[MAP][key].join(', ');
-	}
-
-	/**
-  * Iterate over all headers
-  *
-  * @param   Function  callback  Executed for each item with parameters (value, name, thisArg)
-  * @param   Boolean   thisArg   `this` context for callback function
-  * @return  Void
-  */
-	forEach(callback) {
-		let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
-
-		let pairs = getHeaders(this);
-		let i = 0;
-		while (i < pairs.length) {
-			var _pairs$i = pairs[i];
-			const name = _pairs$i[0],
-			      value = _pairs$i[1];
-
-			callback.call(thisArg, value, name, this);
-			pairs = getHeaders(this);
-			i++;
-		}
-	}
-
-	/**
-  * Overwrite header values given name
-  *
-  * @param   String  name   Header name
-  * @param   String  value  Header value
-  * @return  Void
-  */
-	set(name, value) {
-		name = `${name}`;
-		value = `${value}`;
-		validateName(name);
-		validateValue(value);
-		const key = find(this[MAP], name);
-		this[MAP][key !== undefined ? key : name] = [value];
-	}
-
-	/**
-  * Append a value onto existing header
-  *
-  * @param   String  name   Header name
-  * @param   String  value  Header value
-  * @return  Void
-  */
-	append(name, value) {
-		name = `${name}`;
-		value = `${value}`;
-		validateName(name);
-		validateValue(value);
-		const key = find(this[MAP], name);
-		if (key !== undefined) {
-			this[MAP][key].push(value);
-		} else {
-			this[MAP][name] = [value];
-		}
-	}
-
-	/**
-  * Check for header name existence
-  *
-  * @param   String   name  Header name
-  * @return  Boolean
-  */
-	has(name) {
-		name = `${name}`;
-		validateName(name);
-		return find(this[MAP], name) !== undefined;
-	}
-
-	/**
-  * Delete all header values given name
-  *
-  * @param   String  name  Header name
-  * @return  Void
-  */
-	delete(name) {
-		name = `${name}`;
-		validateName(name);
-		const key = find(this[MAP], name);
-		if (key !== undefined) {
-			delete this[MAP][key];
-		}
-	}
-
-	/**
-  * Return raw headers (non-spec api)
-  *
-  * @return  Object
-  */
-	raw() {
-		return this[MAP];
-	}
-
-	/**
-  * Get an iterator on keys.
-  *
-  * @return  Iterator
-  */
-	keys() {
-		return createHeadersIterator(this, 'key');
-	}
-
-	/**
-  * Get an iterator on values.
-  *
-  * @return  Iterator
-  */
-	values() {
-		return createHeadersIterator(this, 'value');
-	}
-
-	/**
-  * Get an iterator on entries.
-  *
-  * This is the default iterator of the Headers object.
-  *
-  * @return  Iterator
-  */
-	[Symbol.iterator]() {
-		return createHeadersIterator(this, 'key+value');
-	}
-}
-Headers.prototype.entries = Headers.prototype[Symbol.iterator];
-
-Object.defineProperty(Headers.prototype, Symbol.toStringTag, {
-	value: 'Headers',
-	writable: false,
-	enumerable: false,
-	configurable: true
-});
-
-Object.defineProperties(Headers.prototype, {
-	get: { enumerable: true },
-	forEach: { enumerable: true },
-	set: { enumerable: true },
-	append: { enumerable: true },
-	has: { enumerable: true },
-	delete: { enumerable: true },
-	keys: { enumerable: true },
-	values: { enumerable: true },
-	entries: { enumerable: true }
-});
-
-function getHeaders(headers) {
-	let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';
-
-	const keys = Object.keys(headers[MAP]).sort();
-	return keys.map(kind === 'key' ? function (k) {
-		return k.toLowerCase();
-	} : kind === 'value' ? function (k) {
-		return headers[MAP][k].join(', ');
-	} : function (k) {
-		return [k.toLowerCase(), headers[MAP][k].join(', ')];
-	});
-}
-
-const INTERNAL = Symbol('internal');
-
-function createHeadersIterator(target, kind) {
-	const iterator = Object.create(HeadersIteratorPrototype);
-	iterator[INTERNAL] = {
-		target,
-		kind,
-		index: 0
-	};
-	return iterator;
-}
-
-const HeadersIteratorPrototype = Object.setPrototypeOf({
-	next() {
-		// istanbul ignore if
-		if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {
-			throw new TypeError('Value of `this` is not a HeadersIterator');
-		}
-
-		var _INTERNAL = this[INTERNAL];
-		const target = _INTERNAL.target,
-		      kind = _INTERNAL.kind,
-		      index = _INTERNAL.index;
-
-		const values = getHeaders(target, kind);
-		const len = values.length;
-		if (index >= len) {
-			return {
-				value: undefined,
-				done: true
-			};
-		}
-
-		this[INTERNAL].index = index + 1;
-
-		return {
-			value: values[index],
-			done: false
-		};
-	}
-}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));
-
-Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {
-	value: 'HeadersIterator',
-	writable: false,
-	enumerable: false,
-	configurable: true
-});
-
-/**
- * Export the Headers object in a form that Node.js can consume.
- *
- * @param   Headers  headers
- * @return  Object
- */
-function exportNodeCompatibleHeaders(headers) {
-	const obj = Object.assign({ __proto__: null }, headers[MAP]);
-
-	// http.request() only supports string as Host header. This hack makes
-	// specifying custom Host header possible.
-	const hostHeaderKey = find(headers[MAP], 'Host');
-	if (hostHeaderKey !== undefined) {
-		obj[hostHeaderKey] = obj[hostHeaderKey][0];
-	}
-
-	return obj;
-}
-
-/**
- * Create a Headers object from an object of headers, ignoring those that do
- * not conform to HTTP grammar productions.
- *
- * @param   Object  obj  Object of headers
- * @return  Headers
- */
-function createHeadersLenient(obj) {
-	const headers = new Headers();
-	for (const name of Object.keys(obj)) {
-		if (invalidTokenRegex.test(name)) {
-			continue;
-		}
-		if (Array.isArray(obj[name])) {
-			for (const val of obj[name]) {
-				if (invalidHeaderCharRegex.test(val)) {
-					continue;
-				}
-				if (headers[MAP][name] === undefined) {
-					headers[MAP][name] = [val];
-				} else {
-					headers[MAP][name].push(val);
-				}
-			}
-		} else if (!invalidHeaderCharRegex.test(obj[name])) {
-			headers[MAP][name] = [obj[name]];
-		}
-	}
-	return headers;
-}
-
-const INTERNALS$1 = Symbol('Response internals');
-
-// fix an issue where "STATUS_CODES" aren't a named export for node <10
-const STATUS_CODES = http__WEBPACK_IMPORTED_MODULE_1__.STATUS_CODES;
-
-/**
- * Response class
- *
- * @param   Stream  body  Readable stream
- * @param   Object  opts  Response options
- * @return  Void
- */
-class Response {
-	constructor() {
-		let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
-		let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
-		Body.call(this, body, opts);
-
-		const status = opts.status || 200;
-		const headers = new Headers(opts.headers);
-
-		if (body != null && !headers.has('Content-Type')) {
-			const contentType = extractContentType(body);
-			if (contentType) {
-				headers.append('Content-Type', contentType);
-			}
-		}
-
-		this[INTERNALS$1] = {
-			url: opts.url,
-			status,
-			statusText: opts.statusText || STATUS_CODES[status],
-			headers,
-			counter: opts.counter
-		};
-	}
-
-	get url() {
-		return this[INTERNALS$1].url || '';
-	}
-
-	get status() {
-		return this[INTERNALS$1].status;
-	}
-
-	/**
-  * Convenience property representing if the request ended normally
-  */
-	get ok() {
-		return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;
-	}
-
-	get redirected() {
-		return this[INTERNALS$1].counter > 0;
-	}
-
-	get statusText() {
-		return this[INTERNALS$1].statusText;
-	}
-
-	get headers() {
-		return this[INTERNALS$1].headers;
-	}
-
-	/**
-  * Clone this response
-  *
-  * @return  Response
-  */
-	clone() {
-		return new Response(clone(this), {
-			url: this.url,
-			status: this.status,
-			statusText: this.statusText,
-			headers: this.headers,
-			ok: this.ok,
-			redirected: this.redirected
-		});
-	}
-}
-
-Body.mixIn(Response.prototype);
-
-Object.defineProperties(Response.prototype, {
-	url: { enumerable: true },
-	status: { enumerable: true },
-	ok: { enumerable: true },
-	redirected: { enumerable: true },
-	statusText: { enumerable: true },
-	headers: { enumerable: true },
-	clone: { enumerable: true }
-});
-
-Object.defineProperty(Response.prototype, Symbol.toStringTag, {
-	value: 'Response',
-	writable: false,
-	enumerable: false,
-	configurable: true
-});
-
-const INTERNALS$2 = Symbol('Request internals');
-const URL = url__WEBPACK_IMPORTED_MODULE_2__.URL || whatwg_url__WEBPACK_IMPORTED_MODULE_3__.URL;
-
-// fix an issue where "format", "parse" aren't a named export for node <10
-const parse_url = url__WEBPACK_IMPORTED_MODULE_2__.parse;
-const format_url = url__WEBPACK_IMPORTED_MODULE_2__.format;
-
-/**
- * Wrapper around `new URL` to handle arbitrary URLs
- *
- * @param  {string} urlStr
- * @return {void}
- */
-function parseURL(urlStr) {
-	/*
- 	Check whether the URL is absolute or not
- 		Scheme: https://tools.ietf.org/html/rfc3986#section-3.1
- 	Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3
- */
-	if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) {
-		urlStr = new URL(urlStr).toString();
-	}
-
-	// Fallback to old implementation for arbitrary URLs
-	return parse_url(urlStr);
-}
-
-const streamDestructionSupported = 'destroy' in stream__WEBPACK_IMPORTED_MODULE_0__.Readable.prototype;
-
-/**
- * Check if a value is an instance of Request.
- *
- * @param   Mixed   input
- * @return  Boolean
- */
-function isRequest(input) {
-	return typeof input === 'object' && typeof input[INTERNALS$2] === 'object';
-}
-
-function isAbortSignal(signal) {
-	const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);
-	return !!(proto && proto.constructor.name === 'AbortSignal');
-}
-
-/**
- * Request class
- *
- * @param   Mixed   input  Url or Request instance
- * @param   Object  init   Custom options
- * @return  Void
- */
-class Request {
-	constructor(input) {
-		let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
-		let parsedURL;
-
-		// normalize input
-		if (!isRequest(input)) {
-			if (input && input.href) {
-				// in order to support Node.js' Url objects; though WHATWG's URL objects
-				// will fall into this branch also (since their `toString()` will return
-				// `href` property anyway)
-				parsedURL = parseURL(input.href);
-			} else {
-				// coerce input to a string before attempting to parse
-				parsedURL = parseURL(`${input}`);
-			}
-			input = {};
-		} else {
-			parsedURL = parseURL(input.url);
-		}
-
-		let method = init.method || input.method || 'GET';
-		method = method.toUpperCase();
-
-		if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {
-			throw new TypeError('Request with GET/HEAD method cannot have body');
-		}
-
-		let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;
-
-		Body.call(this, inputBody, {
-			timeout: init.timeout || input.timeout || 0,
-			size: init.size || input.size || 0
-		});
-
-		const headers = new Headers(init.headers || input.headers || {});
-
-		if (inputBody != null && !headers.has('Content-Type')) {
-			const contentType = extractContentType(inputBody);
-			if (contentType) {
-				headers.append('Content-Type', contentType);
-			}
-		}
-
-		let signal = isRequest(input) ? input.signal : null;
-		if ('signal' in init) signal = init.signal;
-
-		if (signal != null && !isAbortSignal(signal)) {
-			throw new TypeError('Expected signal to be an instanceof AbortSignal');
-		}
-
-		this[INTERNALS$2] = {
-			method,
-			redirect: init.redirect || input.redirect || 'follow',
-			headers,
-			parsedURL,
-			signal
-		};
-
-		// node-fetch-only options
-		this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;
-		this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;
-		this.counter = init.counter || input.counter || 0;
-		this.agent = init.agent || input.agent;
-	}
-
-	get method() {
-		return this[INTERNALS$2].method;
-	}
-
-	get url() {
-		return format_url(this[INTERNALS$2].parsedURL);
-	}
-
-	get headers() {
-		return this[INTERNALS$2].headers;
-	}
-
-	get redirect() {
-		return this[INTERNALS$2].redirect;
-	}
-
-	get signal() {
-		return this[INTERNALS$2].signal;
-	}
-
-	/**
-  * Clone this request
-  *
-  * @return  Request
-  */
-	clone() {
-		return new Request(this);
-	}
-}
-
-Body.mixIn(Request.prototype);
-
-Object.defineProperty(Request.prototype, Symbol.toStringTag, {
-	value: 'Request',
-	writable: false,
-	enumerable: false,
-	configurable: true
-});
-
-Object.defineProperties(Request.prototype, {
-	method: { enumerable: true },
-	url: { enumerable: true },
-	headers: { enumerable: true },
-	redirect: { enumerable: true },
-	clone: { enumerable: true },
-	signal: { enumerable: true }
-});
-
-/**
- * Convert a Request to Node.js http request options.
- *
- * @param   Request  A Request instance
- * @return  Object   The options object to be passed to http.request
- */
-function getNodeRequestOptions(request) {
-	const parsedURL = request[INTERNALS$2].parsedURL;
-	const headers = new Headers(request[INTERNALS$2].headers);
-
-	// fetch step 1.3
-	if (!headers.has('Accept')) {
-		headers.set('Accept', '*/*');
-	}
-
-	// Basic fetch
-	if (!parsedURL.protocol || !parsedURL.hostname) {
-		throw new TypeError('Only absolute URLs are supported');
-	}
-
-	if (!/^https?:$/.test(parsedURL.protocol)) {
-		throw new TypeError('Only HTTP(S) protocols are supported');
-	}
-
-	if (request.signal && request.body instanceof stream__WEBPACK_IMPORTED_MODULE_0__.Readable && !streamDestructionSupported) {
-		throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');
-	}
-
-	// HTTP-network-or-cache fetch steps 2.4-2.7
-	let contentLengthValue = null;
-	if (request.body == null && /^(POST|PUT)$/i.test(request.method)) {
-		contentLengthValue = '0';
-	}
-	if (request.body != null) {
-		const totalBytes = getTotalBytes(request);
-		if (typeof totalBytes === 'number') {
-			contentLengthValue = String(totalBytes);
-		}
-	}
-	if (contentLengthValue) {
-		headers.set('Content-Length', contentLengthValue);
-	}
-
-	// HTTP-network-or-cache fetch step 2.11
-	if (!headers.has('User-Agent')) {
-		headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');
-	}
-
-	// HTTP-network-or-cache fetch step 2.15
-	if (request.compress && !headers.has('Accept-Encoding')) {
-		headers.set('Accept-Encoding', 'gzip,deflate');
-	}
-
-	let agent = request.agent;
-	if (typeof agent === 'function') {
-		agent = agent(parsedURL);
-	}
-
-	if (!headers.has('Connection') && !agent) {
-		headers.set('Connection', 'close');
-	}
-
-	// HTTP-network fetch step 4.2
-	// chunked encoding is handled by Node.js
-
-	return Object.assign({}, parsedURL, {
-		method: request.method,
-		headers: exportNodeCompatibleHeaders(headers),
-		agent
-	});
-}
-
-/**
- * abort-error.js
- *
- * AbortError interface for cancelled requests
- */
-
-/**
- * Create AbortError instance
- *
- * @param   String      message      Error message for human
- * @return  AbortError
- */
-function AbortError(message) {
-  Error.call(this, message);
-
-  this.type = 'aborted';
-  this.message = message;
-
-  // hide custom error implementation details from end-users
-  Error.captureStackTrace(this, this.constructor);
-}
-
-AbortError.prototype = Object.create(Error.prototype);
-AbortError.prototype.constructor = AbortError;
-AbortError.prototype.name = 'AbortError';
-
-const URL$1 = url__WEBPACK_IMPORTED_MODULE_2__.URL || whatwg_url__WEBPACK_IMPORTED_MODULE_3__.URL;
-
-// fix an issue where "PassThrough", "resolve" aren't a named export for node <10
-const PassThrough$1 = stream__WEBPACK_IMPORTED_MODULE_0__.PassThrough;
-
-const isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {
-	const orig = new URL$1(original).hostname;
-	const dest = new URL$1(destination).hostname;
-
-	return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);
-};
-
-/**
- * Fetch function
- *
- * @param   Mixed    url   Absolute url or Request instance
- * @param   Object   opts  Fetch options
- * @return  Promise
- */
-function fetch(url, opts) {
-
-	// allow custom promise
-	if (!fetch.Promise) {
-		throw new Error('native promise missing, set fetch.Promise to your favorite alternative');
-	}
-
-	Body.Promise = fetch.Promise;
-
-	// wrap http.request into fetch
-	return new fetch.Promise(function (resolve, reject) {
-		// build request object
-		const request = new Request(url, opts);
-		const options = getNodeRequestOptions(request);
-
-		const send = (options.protocol === 'https:' ? https__WEBPACK_IMPORTED_MODULE_4__ : http__WEBPACK_IMPORTED_MODULE_1__).request;
-		const signal = request.signal;
-
-		let response = null;
-
-		const abort = function abort() {
-			let error = new AbortError('The user aborted a request.');
-			reject(error);
-			if (request.body && request.body instanceof stream__WEBPACK_IMPORTED_MODULE_0__.Readable) {
-				request.body.destroy(error);
-			}
-			if (!response || !response.body) return;
-			response.body.emit('error', error);
-		};
-
-		if (signal && signal.aborted) {
-			abort();
-			return;
-		}
-
-		const abortAndFinalize = function abortAndFinalize() {
-			abort();
-			finalize();
-		};
-
-		// send request
-		const req = send(options);
-		let reqTimeout;
-
-		if (signal) {
-			signal.addEventListener('abort', abortAndFinalize);
-		}
-
-		function finalize() {
-			req.abort();
-			if (signal) signal.removeEventListener('abort', abortAndFinalize);
-			clearTimeout(reqTimeout);
-		}
-
-		if (request.timeout) {
-			req.once('socket', function (socket) {
-				reqTimeout = setTimeout(function () {
-					reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));
-					finalize();
-				}, request.timeout);
-			});
-		}
-
-		req.on('error', function (err) {
-			reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
-			finalize();
-		});
-
-		req.on('response', function (res) {
-			clearTimeout(reqTimeout);
-
-			const headers = createHeadersLenient(res.headers);
-
-			// HTTP fetch step 5
-			if (fetch.isRedirect(res.statusCode)) {
-				// HTTP fetch step 5.2
-				const location = headers.get('Location');
-
-				// HTTP fetch step 5.3
-				let locationURL = null;
-				try {
-					locationURL = location === null ? null : new URL$1(location, request.url).toString();
-				} catch (err) {
-					// error here can only be invalid URL in Location: header
-					// do not throw when options.redirect == manual
-					// let the user extract the errorneous redirect URL
-					if (request.redirect !== 'manual') {
-						reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));
-						finalize();
-						return;
-					}
-				}
-
-				// HTTP fetch step 5.5
-				switch (request.redirect) {
-					case 'error':
-						reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));
-						finalize();
-						return;
-					case 'manual':
-						// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.
-						if (locationURL !== null) {
-							// handle corrupted header
-							try {
-								headers.set('Location', locationURL);
-							} catch (err) {
-								// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request
-								reject(err);
-							}
-						}
-						break;
-					case 'follow':
-						// HTTP-redirect fetch step 2
-						if (locationURL === null) {
-							break;
-						}
-
-						// HTTP-redirect fetch step 5
-						if (request.counter >= request.follow) {
-							reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));
-							finalize();
-							return;
-						}
-
-						// HTTP-redirect fetch step 6 (counter increment)
-						// Create a new Request object.
-						const requestOpts = {
-							headers: new Headers(request.headers),
-							follow: request.follow,
-							counter: request.counter + 1,
-							agent: request.agent,
-							compress: request.compress,
-							method: request.method,
-							body: request.body,
-							signal: request.signal,
-							timeout: request.timeout,
-							size: request.size
-						};
-
-						if (!isDomainOrSubdomain(request.url, locationURL)) {
-							for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {
-								requestOpts.headers.delete(name);
-							}
-						}
-
-						// HTTP-redirect fetch step 9
-						if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {
-							reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));
-							finalize();
-							return;
-						}
-
-						// HTTP-redirect fetch step 11
-						if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {
-							requestOpts.method = 'GET';
-							requestOpts.body = undefined;
-							requestOpts.headers.delete('content-length');
-						}
-
-						// HTTP-redirect fetch step 15
-						resolve(fetch(new Request(locationURL, requestOpts)));
-						finalize();
-						return;
-				}
-			}
-
-			// prepare response
-			res.once('end', function () {
-				if (signal) signal.removeEventListener('abort', abortAndFinalize);
-			});
-			let body = res.pipe(new PassThrough$1());
-
-			const response_options = {
-				url: request.url,
-				status: res.statusCode,
-				statusText: res.statusMessage,
-				headers: headers,
-				size: request.size,
-				timeout: request.timeout,
-				counter: request.counter
-			};
-
-			// HTTP-network fetch step 12.1.1.3
-			const codings = headers.get('Content-Encoding');
-
-			// HTTP-network fetch step 12.1.1.4: handle content codings
-
-			// in following scenarios we ignore compression support
-			// 1. compression support is disabled
-			// 2. HEAD request
-			// 3. no Content-Encoding header
-			// 4. no content response (204)
-			// 5. content not modified response (304)
-			if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {
-				response = new Response(body, response_options);
-				resolve(response);
-				return;
-			}
-
-			// For Node v6+
-			// Be less strict when decoding compressed responses, since sometimes
-			// servers send slightly invalid responses that are still accepted
-			// by common browsers.
-			// Always using Z_SYNC_FLUSH is what cURL does.
-			const zlibOptions = {
-				flush: zlib__WEBPACK_IMPORTED_MODULE_5__.Z_SYNC_FLUSH,
-				finishFlush: zlib__WEBPACK_IMPORTED_MODULE_5__.Z_SYNC_FLUSH
-			};
-
-			// for gzip
-			if (codings == 'gzip' || codings == 'x-gzip') {
-				body = body.pipe(zlib__WEBPACK_IMPORTED_MODULE_5__.createGunzip(zlibOptions));
-				response = new Response(body, response_options);
-				resolve(response);
-				return;
-			}
-
-			// for deflate
-			if (codings == 'deflate' || codings == 'x-deflate') {
-				// handle the infamous raw deflate response from old servers
-				// a hack for old IIS and Apache servers
-				const raw = res.pipe(new PassThrough$1());
-				raw.once('data', function (chunk) {
-					// see http://stackoverflow.com/questions/37519828
-					if ((chunk[0] & 0x0F) === 0x08) {
-						body = body.pipe(zlib__WEBPACK_IMPORTED_MODULE_5__.createInflate());
-					} else {
-						body = body.pipe(zlib__WEBPACK_IMPORTED_MODULE_5__.createInflateRaw());
-					}
-					response = new Response(body, response_options);
-					resolve(response);
-				});
-				return;
-			}
-
-			// for br
-			if (codings == 'br' && typeof zlib__WEBPACK_IMPORTED_MODULE_5__.createBrotliDecompress === 'function') {
-				body = body.pipe(zlib__WEBPACK_IMPORTED_MODULE_5__.createBrotliDecompress());
-				response = new Response(body, response_options);
-				resolve(response);
-				return;
-			}
-
-			// otherwise, use response as-is
-			response = new Response(body, response_options);
-			resolve(response);
-		});
-
-		writeToStream(req, request);
-	});
-}
-/**
- * Redirect code matching
- *
- * @param   Number   code  Status code
- * @return  Boolean
- */
-fetch.isRedirect = function (code) {
-	return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
-};
-
-// expose Promise
-fetch.Promise = global.Promise;
-
-/* harmony default export */ __webpack_exports__["default"] = (fetch);
-
-
-
-/***/ }),
-/* 727 */
-/***/ (function(module, exports) {
-
-module.exports = require("url");
-
-/***/ }),
-/* 728 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-exports.URL = __webpack_require__(729).interface;
-exports.serializeURL = __webpack_require__(733).serializeURL;
-exports.serializeURLOrigin = __webpack_require__(733).serializeURLOrigin;
-exports.basicURLParse = __webpack_require__(733).basicURLParse;
-exports.setTheUsername = __webpack_require__(733).setTheUsername;
-exports.setThePassword = __webpack_require__(733).setThePassword;
-exports.serializeHost = __webpack_require__(733).serializeHost;
-exports.serializeInteger = __webpack_require__(733).serializeInteger;
-exports.parseURL = __webpack_require__(733).parseURL;
-
-
-/***/ }),
-/* 729 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-const conversions = __webpack_require__(730);
-const utils = __webpack_require__(731);
-const Impl = __webpack_require__(732);
-
-const impl = utils.implSymbol;
-
-function URL(url) {
-  if (!this || this[impl] || !(this instanceof URL)) {
-    throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");
-  }
-  if (arguments.length < 1) {
-    throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + " present.");
-  }
-  const args = [];
-  for (let i = 0; i < arguments.length && i < 2; ++i) {
-    args[i] = arguments[i];
-  }
-  args[0] = conversions["USVString"](args[0]);
-  if (args[1] !== undefined) {
-  args[1] = conversions["USVString"](args[1]);
-  }
-
-  module.exports.setup(this, args);
-}
-
-URL.prototype.toJSON = function toJSON() {
-  if (!this || !module.exports.is(this)) {
-    throw new TypeError("Illegal invocation");
-  }
-  const args = [];
-  for (let i = 0; i < arguments.length && i < 0; ++i) {
-    args[i] = arguments[i];
-  }
-  return this[impl].toJSON.apply(this[impl], args);
-};
-Object.defineProperty(URL.prototype, "href", {
-  get() {
-    return this[impl].href;
-  },
-  set(V) {
-    V = conversions["USVString"](V);
-    this[impl].href = V;
-  },
-  enumerable: true,
-  configurable: true
-});
-
-URL.prototype.toString = function () {
-  if (!this || !module.exports.is(this)) {
-    throw new TypeError("Illegal invocation");
-  }
-  return this.href;
-};
-
-Object.defineProperty(URL.prototype, "origin", {
-  get() {
-    return this[impl].origin;
-  },
-  enumerable: true,
-  configurable: true
-});
-
-Object.defineProperty(URL.prototype, "protocol", {
-  get() {
-    return this[impl].protocol;
-  },
-  set(V) {
-    V = conversions["USVString"](V);
-    this[impl].protocol = V;
-  },
-  enumerable: true,
-  configurable: true
-});
-
-Object.defineProperty(URL.prototype, "username", {
-  get() {
-    return this[impl].username;
-  },
-  set(V) {
-    V = conversions["USVString"](V);
-    this[impl].username = V;
-  },
-  enumerable: true,
-  configurable: true
-});
-
-Object.defineProperty(URL.prototype, "password", {
-  get() {
-    return this[impl].password;
-  },
-  set(V) {
-    V = conversions["USVString"](V);
-    this[impl].password = V;
-  },
-  enumerable: true,
-  configurable: true
-});
-
-Object.defineProperty(URL.prototype, "host", {
-  get() {
-    return this[impl].host;
-  },
-  set(V) {
-    V = conversions["USVString"](V);
-    this[impl].host = V;
-  },
-  enumerable: true,
-  configurable: true
-});
-
-Object.defineProperty(URL.prototype, "hostname", {
-  get() {
-    return this[impl].hostname;
-  },
-  set(V) {
-    V = conversions["USVString"](V);
-    this[impl].hostname = V;
-  },
-  enumerable: true,
-  configurable: true
-});
-
-Object.defineProperty(URL.prototype, "port", {
-  get() {
-    return this[impl].port;
-  },
-  set(V) {
-    V = conversions["USVString"](V);
-    this[impl].port = V;
-  },
-  enumerable: true,
-  configurable: true
-});
-
-Object.defineProperty(URL.prototype, "pathname", {
-  get() {
-    return this[impl].pathname;
-  },
-  set(V) {
-    V = conversions["USVString"](V);
-    this[impl].pathname = V;
-  },
-  enumerable: true,
-  configurable: true
-});
-
-Object.defineProperty(URL.prototype, "search", {
-  get() {
-    return this[impl].search;
-  },
-  set(V) {
-    V = conversions["USVString"](V);
-    this[impl].search = V;
-  },
-  enumerable: true,
-  configurable: true
-});
-
-Object.defineProperty(URL.prototype, "hash", {
-  get() {
-    return this[impl].hash;
-  },
-  set(V) {
-    V = conversions["USVString"](V);
-    this[impl].hash = V;
-  },
-  enumerable: true,
-  configurable: true
-});
-
-
-module.exports = {
-  is(obj) {
-    return !!obj && obj[impl] instanceof Impl.implementation;
-  },
-  create(constructorArgs, privateData) {
-    let obj = Object.create(URL.prototype);
-    this.setup(obj, constructorArgs, privateData);
-    return obj;
-  },
-  setup(obj, constructorArgs, privateData) {
-    if (!privateData) privateData = {};
-    privateData.wrapper = obj;
-
-    obj[impl] = new Impl.implementation(constructorArgs, privateData);
-    obj[impl][utils.wrapperSymbol] = obj;
-  },
-  interface: URL,
-  expose: {
-    Window: { URL: URL },
-    Worker: { URL: URL }
-  }
-};
-
-
-
-/***/ }),
-/* 730 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var conversions = {};
-module.exports = conversions;
-
-function sign(x) {
-    return x < 0 ? -1 : 1;
-}
-
-function evenRound(x) {
-    // Round x to the nearest integer, choosing the even integer if it lies halfway between two.
-    if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)
-        return Math.floor(x);
-    } else {
-        return Math.round(x);
-    }
-}
-
-function createNumberConversion(bitLength, typeOpts) {
-    if (!typeOpts.unsigned) {
-        --bitLength;
-    }
-    const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);
-    const upperBound = Math.pow(2, bitLength) - 1;
-
-    const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);
-    const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);
-
-    return function(V, opts) {
-        if (!opts) opts = {};
-
-        let x = +V;
-
-        if (opts.enforceRange) {
-            if (!Number.isFinite(x)) {
-                throw new TypeError("Argument is not a finite number");
-            }
-
-            x = sign(x) * Math.floor(Math.abs(x));
-            if (x < lowerBound || x > upperBound) {
-                throw new TypeError("Argument is not in byte range");
-            }
-
-            return x;
-        }
-
-        if (!isNaN(x) && opts.clamp) {
-            x = evenRound(x);
-
-            if (x < lowerBound) x = lowerBound;
-            if (x > upperBound) x = upperBound;
-            return x;
-        }
-
-        if (!Number.isFinite(x) || x === 0) {
-            return 0;
-        }
-
-        x = sign(x) * Math.floor(Math.abs(x));
-        x = x % moduloVal;
-
-        if (!typeOpts.unsigned && x >= moduloBound) {
-            return x - moduloVal;
-        } else if (typeOpts.unsigned) {
-            if (x < 0) {
-              x += moduloVal;
-            } else if (x === -0) { // don't return negative zero
-              return 0;
-            }
-        }
-
-        return x;
-    }
-}
-
-conversions["void"] = function () {
-    return undefined;
-};
-
-conversions["boolean"] = function (val) {
-    return !!val;
-};
-
-conversions["byte"] = createNumberConversion(8, { unsigned: false });
-conversions["octet"] = createNumberConversion(8, { unsigned: true });
-
-conversions["short"] = createNumberConversion(16, { unsigned: false });
-conversions["unsigned short"] = createNumberConversion(16, { unsigned: true });
-
-conversions["long"] = createNumberConversion(32, { unsigned: false });
-conversions["unsigned long"] = createNumberConversion(32, { unsigned: true });
-
-conversions["long long"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });
-conversions["unsigned long long"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });
-
-conversions["double"] = function (V) {
-    const x = +V;
-
-    if (!Number.isFinite(x)) {
-        throw new TypeError("Argument is not a finite floating-point value");
-    }
-
-    return x;
-};
-
-conversions["unrestricted double"] = function (V) {
-    const x = +V;
-
-    if (isNaN(x)) {
-        throw new TypeError("Argument is NaN");
-    }
-
-    return x;
-};
-
-// not quite valid, but good enough for JS
-conversions["float"] = conversions["double"];
-conversions["unrestricted float"] = conversions["unrestricted double"];
-
-conversions["DOMString"] = function (V, opts) {
-    if (!opts) opts = {};
-
-    if (opts.treatNullAsEmptyString && V === null) {
-        return "";
-    }
-
-    return String(V);
-};
-
-conversions["ByteString"] = function (V, opts) {
-    const x = String(V);
-    let c = undefined;
-    for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {
-        if (c > 255) {
-            throw new TypeError("Argument is not a valid bytestring");
-        }
-    }
-
-    return x;
-};
-
-conversions["USVString"] = function (V) {
-    const S = String(V);
-    const n = S.length;
-    const U = [];
-    for (let i = 0; i < n; ++i) {
-        const c = S.charCodeAt(i);
-        if (c < 0xD800 || c > 0xDFFF) {
-            U.push(String.fromCodePoint(c));
-        } else if (0xDC00 <= c && c <= 0xDFFF) {
-            U.push(String.fromCodePoint(0xFFFD));
-        } else {
-            if (i === n - 1) {
-                U.push(String.fromCodePoint(0xFFFD));
-            } else {
-                const d = S.charCodeAt(i + 1);
-                if (0xDC00 <= d && d <= 0xDFFF) {
-                    const a = c & 0x3FF;
-                    const b = d & 0x3FF;
-                    U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));
-                    ++i;
-                } else {
-                    U.push(String.fromCodePoint(0xFFFD));
-                }
-            }
-        }
-    }
-
-    return U.join('');
-};
-
-conversions["Date"] = function (V, opts) {
-    if (!(V instanceof Date)) {
-        throw new TypeError("Argument is not a Date object");
-    }
-    if (isNaN(V)) {
-        return undefined;
-    }
-
-    return V;
-};
-
-conversions["RegExp"] = function (V, opts) {
-    if (!(V instanceof RegExp)) {
-        V = new RegExp(V);
-    }
-
-    return V;
-};
-
-
-/***/ }),
-/* 731 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-module.exports.mixin = function mixin(target, source) {
-  const keys = Object.getOwnPropertyNames(source);
-  for (let i = 0; i < keys.length; ++i) {
-    Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));
-  }
-};
-
-module.exports.wrapperSymbol = Symbol("wrapper");
-module.exports.implSymbol = Symbol("impl");
-
-module.exports.wrapperForImpl = function (impl) {
-  return impl[module.exports.wrapperSymbol];
-};
-
-module.exports.implForWrapper = function (wrapper) {
-  return wrapper[module.exports.implSymbol];
-};
-
-
-
-/***/ }),
-/* 732 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-const usm = __webpack_require__(733);
-
-exports.implementation = class URLImpl {
-  constructor(constructorArgs) {
-    const url = constructorArgs[0];
-    const base = constructorArgs[1];
-
-    let parsedBase = null;
-    if (base !== undefined) {
-      parsedBase = usm.basicURLParse(base);
-      if (parsedBase === "failure") {
-        throw new TypeError("Invalid base URL");
-      }
-    }
-
-    const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });
-    if (parsedURL === "failure") {
-      throw new TypeError("Invalid URL");
-    }
-
-    this._url = parsedURL;
-
-    // TODO: query stuff
-  }
-
-  get href() {
-    return usm.serializeURL(this._url);
-  }
-
-  set href(v) {
-    const parsedURL = usm.basicURLParse(v);
-    if (parsedURL === "failure") {
-      throw new TypeError("Invalid URL");
-    }
-
-    this._url = parsedURL;
-  }
-
-  get origin() {
-    return usm.serializeURLOrigin(this._url);
-  }
-
-  get protocol() {
-    return this._url.scheme + ":";
-  }
-
-  set protocol(v) {
-    usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" });
-  }
-
-  get username() {
-    return this._url.username;
-  }
-
-  set username(v) {
-    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
-      return;
-    }
-
-    usm.setTheUsername(this._url, v);
-  }
-
-  get password() {
-    return this._url.password;
-  }
-
-  set password(v) {
-    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
-      return;
-    }
-
-    usm.setThePassword(this._url, v);
-  }
-
-  get host() {
-    const url = this._url;
-
-    if (url.host === null) {
-      return "";
-    }
-
-    if (url.port === null) {
-      return usm.serializeHost(url.host);
-    }
-
-    return usm.serializeHost(url.host) + ":" + usm.serializeInteger(url.port);
-  }
-
-  set host(v) {
-    if (this._url.cannotBeABaseURL) {
-      return;
-    }
-
-    usm.basicURLParse(v, { url: this._url, stateOverride: "host" });
-  }
-
-  get hostname() {
-    if (this._url.host === null) {
-      return "";
-    }
-
-    return usm.serializeHost(this._url.host);
-  }
-
-  set hostname(v) {
-    if (this._url.cannotBeABaseURL) {
-      return;
-    }
-
-    usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" });
-  }
-
-  get port() {
-    if (this._url.port === null) {
-      return "";
-    }
-
-    return usm.serializeInteger(this._url.port);
-  }
-
-  set port(v) {
-    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
-      return;
-    }
-
-    if (v === "") {
-      this._url.port = null;
-    } else {
-      usm.basicURLParse(v, { url: this._url, stateOverride: "port" });
-    }
-  }
-
-  get pathname() {
-    if (this._url.cannotBeABaseURL) {
-      return this._url.path[0];
-    }
-
-    if (this._url.path.length === 0) {
-      return "";
-    }
-
-    return "/" + this._url.path.join("/");
-  }
-
-  set pathname(v) {
-    if (this._url.cannotBeABaseURL) {
-      return;
-    }
-
-    this._url.path = [];
-    usm.basicURLParse(v, { url: this._url, stateOverride: "path start" });
-  }
-
-  get search() {
-    if (this._url.query === null || this._url.query === "") {
-      return "";
-    }
-
-    return "?" + this._url.query;
-  }
-
-  set search(v) {
-    // TODO: query stuff
-
-    const url = this._url;
-
-    if (v === "") {
-      url.query = null;
-      return;
-    }
-
-    const input = v[0] === "?" ? v.substring(1) : v;
-    url.query = "";
-    usm.basicURLParse(input, { url, stateOverride: "query" });
-  }
-
-  get hash() {
-    if (this._url.fragment === null || this._url.fragment === "") {
-      return "";
-    }
-
-    return "#" + this._url.fragment;
-  }
-
-  set hash(v) {
-    if (v === "") {
-      this._url.fragment = null;
-      return;
-    }
-
-    const input = v[0] === "#" ? v.substring(1) : v;
-    this._url.fragment = "";
-    usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" });
-  }
-
-  toJSON() {
-    return this.href;
-  }
-};
-
-
-/***/ }),
-/* 733 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-const punycode = __webpack_require__(734);
-const tr46 = __webpack_require__(735);
-
-const specialSchemes = {
-  ftp: 21,
-  file: null,
-  gopher: 70,
-  http: 80,
-  https: 443,
-  ws: 80,
-  wss: 443
-};
-
-const failure = Symbol("failure");
-
-function countSymbols(str) {
-  return punycode.ucs2.decode(str).length;
-}
-
-function at(input, idx) {
-  const c = input[idx];
-  return isNaN(c) ? undefined : String.fromCodePoint(c);
-}
-
-function isASCIIDigit(c) {
-  return c >= 0x30 && c <= 0x39;
-}
-
-function isASCIIAlpha(c) {
-  return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);
-}
-
-function isASCIIAlphanumeric(c) {
-  return isASCIIAlpha(c) || isASCIIDigit(c);
-}
-
-function isASCIIHex(c) {
-  return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);
-}
-
-function isSingleDot(buffer) {
-  return buffer === "." || buffer.toLowerCase() === "%2e";
-}
-
-function isDoubleDot(buffer) {
-  buffer = buffer.toLowerCase();
-  return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e";
-}
-
-function isWindowsDriveLetterCodePoints(cp1, cp2) {
-  return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);
-}
-
-function isWindowsDriveLetterString(string) {
-  return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|");
-}
-
-function isNormalizedWindowsDriveLetterString(string) {
-  return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ":";
-}
-
-function containsForbiddenHostCodePoint(string) {
-  return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1;
-}
-
-function containsForbiddenHostCodePointExcludingPercent(string) {
-  return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1;
-}
-
-function isSpecialScheme(scheme) {
-  return specialSchemes[scheme] !== undefined;
-}
-
-function isSpecial(url) {
-  return isSpecialScheme(url.scheme);
-}
-
-function defaultPort(scheme) {
-  return specialSchemes[scheme];
-}
-
-function percentEncode(c) {
-  let hex = c.toString(16).toUpperCase();
-  if (hex.length === 1) {
-    hex = "0" + hex;
-  }
-
-  return "%" + hex;
-}
-
-function utf8PercentEncode(c) {
-  const buf = new Buffer(c);
-
-  let str = "";
-
-  for (let i = 0; i < buf.length; ++i) {
-    str += percentEncode(buf[i]);
-  }
-
-  return str;
-}
-
-function utf8PercentDecode(str) {
-  const input = new Buffer(str);
-  const output = [];
-  for (let i = 0; i < input.length; ++i) {
-    if (input[i] !== 37) {
-      output.push(input[i]);
-    } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {
-      output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));
-      i += 2;
-    } else {
-      output.push(input[i]);
-    }
-  }
-  return new Buffer(output).toString();
-}
-
-function isC0ControlPercentEncode(c) {
-  return c <= 0x1F || c > 0x7E;
-}
-
-const extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);
-function isPathPercentEncode(c) {
-  return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);
-}
-
-const extraUserinfoPercentEncodeSet =
-  new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);
-function isUserinfoPercentEncode(c) {
-  return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);
-}
-
-function percentEncodeChar(c, encodeSetPredicate) {
-  const cStr = String.fromCodePoint(c);
-
-  if (encodeSetPredicate(c)) {
-    return utf8PercentEncode(cStr);
-  }
-
-  return cStr;
-}
-
-function parseIPv4Number(input) {
-  let R = 10;
-
-  if (input.length >= 2 && input.charAt(0) === "0" && input.charAt(1).toLowerCase() === "x") {
-    input = input.substring(2);
-    R = 16;
-  } else if (input.length >= 2 && input.charAt(0) === "0") {
-    input = input.substring(1);
-    R = 8;
-  }
-
-  if (input === "") {
-    return 0;
-  }
-
-  const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);
-  if (regex.test(input)) {
-    return failure;
-  }
-
-  return parseInt(input, R);
-}
-
-function parseIPv4(input) {
-  const parts = input.split(".");
-  if (parts[parts.length - 1] === "") {
-    if (parts.length > 1) {
-      parts.pop();
-    }
-  }
-
-  if (parts.length > 4) {
-    return input;
-  }
-
-  const numbers = [];
-  for (const part of parts) {
-    if (part === "") {
-      return input;
-    }
-    const n = parseIPv4Number(part);
-    if (n === failure) {
-      return input;
-    }
-
-    numbers.push(n);
-  }
-
-  for (let i = 0; i < numbers.length - 1; ++i) {
-    if (numbers[i] > 255) {
-      return failure;
-    }
-  }
-  if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {
-    return failure;
-  }
-
-  let ipv4 = numbers.pop();
-  let counter = 0;
-
-  for (const n of numbers) {
-    ipv4 += n * Math.pow(256, 3 - counter);
-    ++counter;
-  }
-
-  return ipv4;
-}
-
-function serializeIPv4(address) {
-  let output = "";
-  let n = address;
-
-  for (let i = 1; i <= 4; ++i) {
-    output = String(n % 256) + output;
-    if (i !== 4) {
-      output = "." + output;
-    }
-    n = Math.floor(n / 256);
-  }
-
-  return output;
-}
-
-function parseIPv6(input) {
-  const address = [0, 0, 0, 0, 0, 0, 0, 0];
-  let pieceIndex = 0;
-  let compress = null;
-  let pointer = 0;
-
-  input = punycode.ucs2.decode(input);
-
-  if (input[pointer] === 58) {
-    if (input[pointer + 1] !== 58) {
-      return failure;
-    }
-
-    pointer += 2;
-    ++pieceIndex;
-    compress = pieceIndex;
-  }
-
-  while (pointer < input.length) {
-    if (pieceIndex === 8) {
-      return failure;
-    }
-
-    if (input[pointer] === 58) {
-      if (compress !== null) {
-        return failure;
-      }
-      ++pointer;
-      ++pieceIndex;
-      compress = pieceIndex;
-      continue;
-    }
-
-    let value = 0;
-    let length = 0;
-
-    while (length < 4 && isASCIIHex(input[pointer])) {
-      value = value * 0x10 + parseInt(at(input, pointer), 16);
-      ++pointer;
-      ++length;
-    }
-
-    if (input[pointer] === 46) {
-      if (length === 0) {
-        return failure;
-      }
-
-      pointer -= length;
-
-      if (pieceIndex > 6) {
-        return failure;
-      }
-
-      let numbersSeen = 0;
-
-      while (input[pointer] !== undefined) {
-        let ipv4Piece = null;
-
-        if (numbersSeen > 0) {
-          if (input[pointer] === 46 && numbersSeen < 4) {
-            ++pointer;
-          } else {
-            return failure;
-          }
-        }
-
-        if (!isASCIIDigit(input[pointer])) {
-          return failure;
-        }
-
-        while (isASCIIDigit(input[pointer])) {
-          const number = parseInt(at(input, pointer));
-          if (ipv4Piece === null) {
-            ipv4Piece = number;
-          } else if (ipv4Piece === 0) {
-            return failure;
-          } else {
-            ipv4Piece = ipv4Piece * 10 + number;
-          }
-          if (ipv4Piece > 255) {
-            return failure;
-          }
-          ++pointer;
-        }
-
-        address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;
-
-        ++numbersSeen;
-
-        if (numbersSeen === 2 || numbersSeen === 4) {
-          ++pieceIndex;
-        }
-      }
-
-      if (numbersSeen !== 4) {
-        return failure;
-      }
-
-      break;
-    } else if (input[pointer] === 58) {
-      ++pointer;
-      if (input[pointer] === undefined) {
-        return failure;
-      }
-    } else if (input[pointer] !== undefined) {
-      return failure;
-    }
-
-    address[pieceIndex] = value;
-    ++pieceIndex;
-  }
-
-  if (compress !== null) {
-    let swaps = pieceIndex - compress;
-    pieceIndex = 7;
-    while (pieceIndex !== 0 && swaps > 0) {
-      const temp = address[compress + swaps - 1];
-      address[compress + swaps - 1] = address[pieceIndex];
-      address[pieceIndex] = temp;
-      --pieceIndex;
-      --swaps;
-    }
-  } else if (compress === null && pieceIndex !== 8) {
-    return failure;
-  }
-
-  return address;
-}
-
-function serializeIPv6(address) {
-  let output = "";
-  const seqResult = findLongestZeroSequence(address);
-  const compress = seqResult.idx;
-  let ignore0 = false;
-
-  for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {
-    if (ignore0 && address[pieceIndex] === 0) {
-      continue;
-    } else if (ignore0) {
-      ignore0 = false;
-    }
-
-    if (compress === pieceIndex) {
-      const separator = pieceIndex === 0 ? "::" : ":";
-      output += separator;
-      ignore0 = true;
-      continue;
-    }
-
-    output += address[pieceIndex].toString(16);
-
-    if (pieceIndex !== 7) {
-      output += ":";
-    }
-  }
-
-  return output;
-}
-
-function parseHost(input, isSpecialArg) {
-  if (input[0] === "[") {
-    if (input[input.length - 1] !== "]") {
-      return failure;
-    }
-
-    return parseIPv6(input.substring(1, input.length - 1));
-  }
-
-  if (!isSpecialArg) {
-    return parseOpaqueHost(input);
-  }
-
-  const domain = utf8PercentDecode(input);
-  const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);
-  if (asciiDomain === null) {
-    return failure;
-  }
-
-  if (containsForbiddenHostCodePoint(asciiDomain)) {
-    return failure;
-  }
-
-  const ipv4Host = parseIPv4(asciiDomain);
-  if (typeof ipv4Host === "number" || ipv4Host === failure) {
-    return ipv4Host;
-  }
-
-  return asciiDomain;
-}
-
-function parseOpaqueHost(input) {
-  if (containsForbiddenHostCodePointExcludingPercent(input)) {
-    return failure;
-  }
-
-  let output = "";
-  const decoded = punycode.ucs2.decode(input);
-  for (let i = 0; i < decoded.length; ++i) {
-    output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);
-  }
-  return output;
-}
-
-function findLongestZeroSequence(arr) {
-  let maxIdx = null;
-  let maxLen = 1; // only find elements > 1
-  let currStart = null;
-  let currLen = 0;
-
-  for (let i = 0; i < arr.length; ++i) {
-    if (arr[i] !== 0) {
-      if (currLen > maxLen) {
-        maxIdx = currStart;
-        maxLen = currLen;
-      }
-
-      currStart = null;
-      currLen = 0;
-    } else {
-      if (currStart === null) {
-        currStart = i;
-      }
-      ++currLen;
-    }
-  }
-
-  // if trailing zeros
-  if (currLen > maxLen) {
-    maxIdx = currStart;
-    maxLen = currLen;
-  }
-
-  return {
-    idx: maxIdx,
-    len: maxLen
-  };
-}
-
-function serializeHost(host) {
-  if (typeof host === "number") {
-    return serializeIPv4(host);
-  }
-
-  // IPv6 serializer
-  if (host instanceof Array) {
-    return "[" + serializeIPv6(host) + "]";
-  }
-
-  return host;
-}
-
-function trimControlChars(url) {
-  return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, "");
-}
-
-function trimTabAndNewline(url) {
-  return url.replace(/\u0009|\u000A|\u000D/g, "");
-}
-
-function shortenPath(url) {
-  const path = url.path;
-  if (path.length === 0) {
-    return;
-  }
-  if (url.scheme === "file" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {
-    return;
-  }
-
-  path.pop();
-}
-
-function includesCredentials(url) {
-  return url.username !== "" || url.password !== "";
-}
-
-function cannotHaveAUsernamePasswordPort(url) {
-  return url.host === null || url.host === "" || url.cannotBeABaseURL || url.scheme === "file";
-}
-
-function isNormalizedWindowsDriveLetter(string) {
-  return /^[A-Za-z]:$/.test(string);
-}
-
-function URLStateMachine(input, base, encodingOverride, url, stateOverride) {
-  this.pointer = 0;
-  this.input = input;
-  this.base = base || null;
-  this.encodingOverride = encodingOverride || "utf-8";
-  this.stateOverride = stateOverride;
-  this.url = url;
-  this.failure = false;
-  this.parseError = false;
-
-  if (!this.url) {
-    this.url = {
-      scheme: "",
-      username: "",
-      password: "",
-      host: null,
-      port: null,
-      path: [],
-      query: null,
-      fragment: null,
-
-      cannotBeABaseURL: false
-    };
-
-    const res = trimControlChars(this.input);
-    if (res !== this.input) {
-      this.parseError = true;
-    }
-    this.input = res;
-  }
-
-  const res = trimTabAndNewline(this.input);
-  if (res !== this.input) {
-    this.parseError = true;
-  }
-  this.input = res;
-
-  this.state = stateOverride || "scheme start";
-
-  this.buffer = "";
-  this.atFlag = false;
-  this.arrFlag = false;
-  this.passwordTokenSeenFlag = false;
-
-  this.input = punycode.ucs2.decode(this.input);
-
-  for (; this.pointer <= this.input.length; ++this.pointer) {
-    const c = this.input[this.pointer];
-    const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);
-
-    // exec state machine
-    const ret = this["parse " + this.state](c, cStr);
-    if (!ret) {
-      break; // terminate algorithm
-    } else if (ret === failure) {
-      this.failure = true;
-      break;
-    }
-  }
-}
-
-URLStateMachine.prototype["parse scheme start"] = function parseSchemeStart(c, cStr) {
-  if (isASCIIAlpha(c)) {
-    this.buffer += cStr.toLowerCase();
-    this.state = "scheme";
-  } else if (!this.stateOverride) {
-    this.state = "no scheme";
-    --this.pointer;
-  } else {
-    this.parseError = true;
-    return failure;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse scheme"] = function parseScheme(c, cStr) {
-  if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {
-    this.buffer += cStr.toLowerCase();
-  } else if (c === 58) {
-    if (this.stateOverride) {
-      if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {
-        return false;
-      }
-
-      if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {
-        return false;
-      }
-
-      if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === "file") {
-        return false;
-      }
-
-      if (this.url.scheme === "file" && (this.url.host === "" || this.url.host === null)) {
-        return false;
-      }
-    }
-    this.url.scheme = this.buffer;
-    this.buffer = "";
-    if (this.stateOverride) {
-      return false;
-    }
-    if (this.url.scheme === "file") {
-      if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {
-        this.parseError = true;
-      }
-      this.state = "file";
-    } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {
-      this.state = "special relative or authority";
-    } else if (isSpecial(this.url)) {
-      this.state = "special authority slashes";
-    } else if (this.input[this.pointer + 1] === 47) {
-      this.state = "path or authority";
-      ++this.pointer;
-    } else {
-      this.url.cannotBeABaseURL = true;
-      this.url.path.push("");
-      this.state = "cannot-be-a-base-URL path";
-    }
-  } else if (!this.stateOverride) {
-    this.buffer = "";
-    this.state = "no scheme";
-    this.pointer = -1;
-  } else {
-    this.parseError = true;
-    return failure;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse no scheme"] = function parseNoScheme(c) {
-  if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {
-    return failure;
-  } else if (this.base.cannotBeABaseURL && c === 35) {
-    this.url.scheme = this.base.scheme;
-    this.url.path = this.base.path.slice();
-    this.url.query = this.base.query;
-    this.url.fragment = "";
-    this.url.cannotBeABaseURL = true;
-    this.state = "fragment";
-  } else if (this.base.scheme === "file") {
-    this.state = "file";
-    --this.pointer;
-  } else {
-    this.state = "relative";
-    --this.pointer;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse special relative or authority"] = function parseSpecialRelativeOrAuthority(c) {
-  if (c === 47 && this.input[this.pointer + 1] === 47) {
-    this.state = "special authority ignore slashes";
-    ++this.pointer;
-  } else {
-    this.parseError = true;
-    this.state = "relative";
-    --this.pointer;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) {
-  if (c === 47) {
-    this.state = "authority";
-  } else {
-    this.state = "path";
-    --this.pointer;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse relative"] = function parseRelative(c) {
-  this.url.scheme = this.base.scheme;
-  if (isNaN(c)) {
-    this.url.username = this.base.username;
-    this.url.password = this.base.password;
-    this.url.host = this.base.host;
-    this.url.port = this.base.port;
-    this.url.path = this.base.path.slice();
-    this.url.query = this.base.query;
-  } else if (c === 47) {
-    this.state = "relative slash";
-  } else if (c === 63) {
-    this.url.username = this.base.username;
-    this.url.password = this.base.password;
-    this.url.host = this.base.host;
-    this.url.port = this.base.port;
-    this.url.path = this.base.path.slice();
-    this.url.query = "";
-    this.state = "query";
-  } else if (c === 35) {
-    this.url.username = this.base.username;
-    this.url.password = this.base.password;
-    this.url.host = this.base.host;
-    this.url.port = this.base.port;
-    this.url.path = this.base.path.slice();
-    this.url.query = this.base.query;
-    this.url.fragment = "";
-    this.state = "fragment";
-  } else if (isSpecial(this.url) && c === 92) {
-    this.parseError = true;
-    this.state = "relative slash";
-  } else {
-    this.url.username = this.base.username;
-    this.url.password = this.base.password;
-    this.url.host = this.base.host;
-    this.url.port = this.base.port;
-    this.url.path = this.base.path.slice(0, this.base.path.length - 1);
-
-    this.state = "path";
-    --this.pointer;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse relative slash"] = function parseRelativeSlash(c) {
-  if (isSpecial(this.url) && (c === 47 || c === 92)) {
-    if (c === 92) {
-      this.parseError = true;
-    }
-    this.state = "special authority ignore slashes";
-  } else if (c === 47) {
-    this.state = "authority";
-  } else {
-    this.url.username = this.base.username;
-    this.url.password = this.base.password;
-    this.url.host = this.base.host;
-    this.url.port = this.base.port;
-    this.state = "path";
-    --this.pointer;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse special authority slashes"] = function parseSpecialAuthoritySlashes(c) {
-  if (c === 47 && this.input[this.pointer + 1] === 47) {
-    this.state = "special authority ignore slashes";
-    ++this.pointer;
-  } else {
-    this.parseError = true;
-    this.state = "special authority ignore slashes";
-    --this.pointer;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse special authority ignore slashes"] = function parseSpecialAuthorityIgnoreSlashes(c) {
-  if (c !== 47 && c !== 92) {
-    this.state = "authority";
-    --this.pointer;
-  } else {
-    this.parseError = true;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse authority"] = function parseAuthority(c, cStr) {
-  if (c === 64) {
-    this.parseError = true;
-    if (this.atFlag) {
-      this.buffer = "%40" + this.buffer;
-    }
-    this.atFlag = true;
-
-    // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars
-    const len = countSymbols(this.buffer);
-    for (let pointer = 0; pointer < len; ++pointer) {
-      const codePoint = this.buffer.codePointAt(pointer);
-
-      if (codePoint === 58 && !this.passwordTokenSeenFlag) {
-        this.passwordTokenSeenFlag = true;
-        continue;
-      }
-      const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);
-      if (this.passwordTokenSeenFlag) {
-        this.url.password += encodedCodePoints;
-      } else {
-        this.url.username += encodedCodePoints;
-      }
-    }
-    this.buffer = "";
-  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||
-             (isSpecial(this.url) && c === 92)) {
-    if (this.atFlag && this.buffer === "") {
-      this.parseError = true;
-      return failure;
-    }
-    this.pointer -= countSymbols(this.buffer) + 1;
-    this.buffer = "";
-    this.state = "host";
-  } else {
-    this.buffer += cStr;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse hostname"] =
-URLStateMachine.prototype["parse host"] = function parseHostName(c, cStr) {
-  if (this.stateOverride && this.url.scheme === "file") {
-    --this.pointer;
-    this.state = "file host";
-  } else if (c === 58 && !this.arrFlag) {
-    if (this.buffer === "") {
-      this.parseError = true;
-      return failure;
-    }
-
-    const host = parseHost(this.buffer, isSpecial(this.url));
-    if (host === failure) {
-      return failure;
-    }
-
-    this.url.host = host;
-    this.buffer = "";
-    this.state = "port";
-    if (this.stateOverride === "hostname") {
-      return false;
-    }
-  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||
-             (isSpecial(this.url) && c === 92)) {
-    --this.pointer;
-    if (isSpecial(this.url) && this.buffer === "") {
-      this.parseError = true;
-      return failure;
-    } else if (this.stateOverride && this.buffer === "" &&
-               (includesCredentials(this.url) || this.url.port !== null)) {
-      this.parseError = true;
-      return false;
-    }
-
-    const host = parseHost(this.buffer, isSpecial(this.url));
-    if (host === failure) {
-      return failure;
-    }
-
-    this.url.host = host;
-    this.buffer = "";
-    this.state = "path start";
-    if (this.stateOverride) {
-      return false;
-    }
-  } else {
-    if (c === 91) {
-      this.arrFlag = true;
-    } else if (c === 93) {
-      this.arrFlag = false;
-    }
-    this.buffer += cStr;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse port"] = function parsePort(c, cStr) {
-  if (isASCIIDigit(c)) {
-    this.buffer += cStr;
-  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||
-             (isSpecial(this.url) && c === 92) ||
-             this.stateOverride) {
-    if (this.buffer !== "") {
-      const port = parseInt(this.buffer);
-      if (port > Math.pow(2, 16) - 1) {
-        this.parseError = true;
-        return failure;
-      }
-      this.url.port = port === defaultPort(this.url.scheme) ? null : port;
-      this.buffer = "";
-    }
-    if (this.stateOverride) {
-      return false;
-    }
-    this.state = "path start";
-    --this.pointer;
-  } else {
-    this.parseError = true;
-    return failure;
-  }
-
-  return true;
-};
-
-const fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);
-
-URLStateMachine.prototype["parse file"] = function parseFile(c) {
-  this.url.scheme = "file";
-
-  if (c === 47 || c === 92) {
-    if (c === 92) {
-      this.parseError = true;
-    }
-    this.state = "file slash";
-  } else if (this.base !== null && this.base.scheme === "file") {
-    if (isNaN(c)) {
-      this.url.host = this.base.host;
-      this.url.path = this.base.path.slice();
-      this.url.query = this.base.query;
-    } else if (c === 63) {
-      this.url.host = this.base.host;
-      this.url.path = this.base.path.slice();
-      this.url.query = "";
-      this.state = "query";
-    } else if (c === 35) {
-      this.url.host = this.base.host;
-      this.url.path = this.base.path.slice();
-      this.url.query = this.base.query;
-      this.url.fragment = "";
-      this.state = "fragment";
-    } else {
-      if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points
-          !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||
-          (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points
-           !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {
-        this.url.host = this.base.host;
-        this.url.path = this.base.path.slice();
-        shortenPath(this.url);
-      } else {
-        this.parseError = true;
-      }
-
-      this.state = "path";
-      --this.pointer;
-    }
-  } else {
-    this.state = "path";
-    --this.pointer;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) {
-  if (c === 47 || c === 92) {
-    if (c === 92) {
-      this.parseError = true;
-    }
-    this.state = "file host";
-  } else {
-    if (this.base !== null && this.base.scheme === "file") {
-      if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {
-        this.url.path.push(this.base.path[0]);
-      } else {
-        this.url.host = this.base.host;
-      }
-    }
-    this.state = "path";
-    --this.pointer;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse file host"] = function parseFileHost(c, cStr) {
-  if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {
-    --this.pointer;
-    if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {
-      this.parseError = true;
-      this.state = "path";
-    } else if (this.buffer === "") {
-      this.url.host = "";
-      if (this.stateOverride) {
-        return false;
-      }
-      this.state = "path start";
-    } else {
-      let host = parseHost(this.buffer, isSpecial(this.url));
-      if (host === failure) {
-        return failure;
-      }
-      if (host === "localhost") {
-        host = "";
-      }
-      this.url.host = host;
-
-      if (this.stateOverride) {
-        return false;
-      }
-
-      this.buffer = "";
-      this.state = "path start";
-    }
-  } else {
-    this.buffer += cStr;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse path start"] = function parsePathStart(c) {
-  if (isSpecial(this.url)) {
-    if (c === 92) {
-      this.parseError = true;
-    }
-    this.state = "path";
-
-    if (c !== 47 && c !== 92) {
-      --this.pointer;
-    }
-  } else if (!this.stateOverride && c === 63) {
-    this.url.query = "";
-    this.state = "query";
-  } else if (!this.stateOverride && c === 35) {
-    this.url.fragment = "";
-    this.state = "fragment";
-  } else if (c !== undefined) {
-    this.state = "path";
-    if (c !== 47) {
-      --this.pointer;
-    }
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse path"] = function parsePath(c) {
-  if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||
-      (!this.stateOverride && (c === 63 || c === 35))) {
-    if (isSpecial(this.url) && c === 92) {
-      this.parseError = true;
-    }
-
-    if (isDoubleDot(this.buffer)) {
-      shortenPath(this.url);
-      if (c !== 47 && !(isSpecial(this.url) && c === 92)) {
-        this.url.path.push("");
-      }
-    } else if (isSingleDot(this.buffer) && c !== 47 &&
-               !(isSpecial(this.url) && c === 92)) {
-      this.url.path.push("");
-    } else if (!isSingleDot(this.buffer)) {
-      if (this.url.scheme === "file" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {
-        if (this.url.host !== "" && this.url.host !== null) {
-          this.parseError = true;
-          this.url.host = "";
-        }
-        this.buffer = this.buffer[0] + ":";
-      }
-      this.url.path.push(this.buffer);
-    }
-    this.buffer = "";
-    if (this.url.scheme === "file" && (c === undefined || c === 63 || c === 35)) {
-      while (this.url.path.length > 1 && this.url.path[0] === "") {
-        this.parseError = true;
-        this.url.path.shift();
-      }
-    }
-    if (c === 63) {
-      this.url.query = "";
-      this.state = "query";
-    }
-    if (c === 35) {
-      this.url.fragment = "";
-      this.state = "fragment";
-    }
-  } else {
-    // TODO: If c is not a URL code point and not "%", parse error.
-
-    if (c === 37 &&
-      (!isASCIIHex(this.input[this.pointer + 1]) ||
-        !isASCIIHex(this.input[this.pointer + 2]))) {
-      this.parseError = true;
-    }
-
-    this.buffer += percentEncodeChar(c, isPathPercentEncode);
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse cannot-be-a-base-URL path"] = function parseCannotBeABaseURLPath(c) {
-  if (c === 63) {
-    this.url.query = "";
-    this.state = "query";
-  } else if (c === 35) {
-    this.url.fragment = "";
-    this.state = "fragment";
-  } else {
-    // TODO: Add: not a URL code point
-    if (!isNaN(c) && c !== 37) {
-      this.parseError = true;
-    }
-
-    if (c === 37 &&
-        (!isASCIIHex(this.input[this.pointer + 1]) ||
-         !isASCIIHex(this.input[this.pointer + 2]))) {
-      this.parseError = true;
-    }
-
-    if (!isNaN(c)) {
-      this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);
-    }
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse query"] = function parseQuery(c, cStr) {
-  if (isNaN(c) || (!this.stateOverride && c === 35)) {
-    if (!isSpecial(this.url) || this.url.scheme === "ws" || this.url.scheme === "wss") {
-      this.encodingOverride = "utf-8";
-    }
-
-    const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead
-    for (let i = 0; i < buffer.length; ++i) {
-      if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||
-          buffer[i] === 0x3C || buffer[i] === 0x3E) {
-        this.url.query += percentEncode(buffer[i]);
-      } else {
-        this.url.query += String.fromCodePoint(buffer[i]);
-      }
-    }
-
-    this.buffer = "";
-    if (c === 35) {
-      this.url.fragment = "";
-      this.state = "fragment";
-    }
-  } else {
-    // TODO: If c is not a URL code point and not "%", parse error.
-    if (c === 37 &&
-      (!isASCIIHex(this.input[this.pointer + 1]) ||
-        !isASCIIHex(this.input[this.pointer + 2]))) {
-      this.parseError = true;
-    }
-
-    this.buffer += cStr;
-  }
-
-  return true;
-};
-
-URLStateMachine.prototype["parse fragment"] = function parseFragment(c) {
-  if (isNaN(c)) { // do nothing
-  } else if (c === 0x0) {
-    this.parseError = true;
-  } else {
-    // TODO: If c is not a URL code point and not "%", parse error.
-    if (c === 37 &&
-      (!isASCIIHex(this.input[this.pointer + 1]) ||
-        !isASCIIHex(this.input[this.pointer + 2]))) {
-      this.parseError = true;
-    }
-
-    this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);
-  }
-
-  return true;
-};
-
-function serializeURL(url, excludeFragment) {
-  let output = url.scheme + ":";
-  if (url.host !== null) {
-    output += "//";
-
-    if (url.username !== "" || url.password !== "") {
-      output += url.username;
-      if (url.password !== "") {
-        output += ":" + url.password;
-      }
-      output += "@";
-    }
-
-    output += serializeHost(url.host);
-
-    if (url.port !== null) {
-      output += ":" + url.port;
-    }
-  } else if (url.host === null && url.scheme === "file") {
-    output += "//";
-  }
-
-  if (url.cannotBeABaseURL) {
-    output += url.path[0];
-  } else {
-    for (const string of url.path) {
-      output += "/" + string;
-    }
-  }
-
-  if (url.query !== null) {
-    output += "?" + url.query;
-  }
-
-  if (!excludeFragment && url.fragment !== null) {
-    output += "#" + url.fragment;
-  }
-
-  return output;
-}
-
-function serializeOrigin(tuple) {
-  let result = tuple.scheme + "://";
-  result += serializeHost(tuple.host);
-
-  if (tuple.port !== null) {
-    result += ":" + tuple.port;
-  }
-
-  return result;
-}
-
-module.exports.serializeURL = serializeURL;
-
-module.exports.serializeURLOrigin = function (url) {
-  // https://url.spec.whatwg.org/#concept-url-origin
-  switch (url.scheme) {
-    case "blob":
-      try {
-        return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));
-      } catch (e) {
-        // serializing an opaque origin returns "null"
-        return "null";
-      }
-    case "ftp":
-    case "gopher":
-    case "http":
-    case "https":
-    case "ws":
-    case "wss":
-      return serializeOrigin({
-        scheme: url.scheme,
-        host: url.host,
-        port: url.port
-      });
-    case "file":
-      // spec says "exercise to the reader", chrome says "file://"
-      return "file://";
-    default:
-      // serializing an opaque origin returns "null"
-      return "null";
-  }
-};
-
-module.exports.basicURLParse = function (input, options) {
-  if (options === undefined) {
-    options = {};
-  }
-
-  const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);
-  if (usm.failure) {
-    return "failure";
-  }
-
-  return usm.url;
-};
-
-module.exports.setTheUsername = function (url, username) {
-  url.username = "";
-  const decoded = punycode.ucs2.decode(username);
-  for (let i = 0; i < decoded.length; ++i) {
-    url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);
-  }
-};
-
-module.exports.setThePassword = function (url, password) {
-  url.password = "";
-  const decoded = punycode.ucs2.decode(password);
-  for (let i = 0; i < decoded.length; ++i) {
-    url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);
-  }
-};
-
-module.exports.serializeHost = serializeHost;
-
-module.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;
-
-module.exports.serializeInteger = function (integer) {
-  return String(integer);
-};
-
-module.exports.parseURL = function (input, options) {
-  if (options === undefined) {
-    options = {};
-  }
-
-  // We don't handle blobs, so this just delegates:
-  return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });
-};
-
-
-/***/ }),
-/* 734 */
-/***/ (function(module, exports) {
-
-module.exports = require("punycode");
-
-/***/ }),
-/* 735 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var punycode = __webpack_require__(734);
-var mappingTable = __webpack_require__(736);
-
-var PROCESSING_OPTIONS = {
-  TRANSITIONAL: 0,
-  NONTRANSITIONAL: 1
-};
-
-function normalize(str) { // fix bug in v8
-  return str.split('\u0000').map(function (s) { return s.normalize('NFC'); }).join('\u0000');
-}
-
-function findStatus(val) {
-  var start = 0;
-  var end = mappingTable.length - 1;
-
-  while (start <= end) {
-    var mid = Math.floor((start + end) / 2);
-
-    var target = mappingTable[mid];
-    if (target[0][0] <= val && target[0][1] >= val) {
-      return target;
-    } else if (target[0][0] > val) {
-      end = mid - 1;
-    } else {
-      start = mid + 1;
-    }
-  }
-
-  return null;
-}
-
-var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
-
-function countSymbols(string) {
-  return string
-    // replace every surrogate pair with a BMP symbol
-    .replace(regexAstralSymbols, '_')
-    // then get the length
-    .length;
-}
-
-function mapChars(domain_name, useSTD3, processing_option) {
-  var hasError = false;
-  var processed = "";
-
-  var len = countSymbols(domain_name);
-  for (var i = 0; i < len; ++i) {
-    var codePoint = domain_name.codePointAt(i);
-    var status = findStatus(codePoint);
-
-    switch (status[1]) {
-      case "disallowed":
-        hasError = true;
-        processed += String.fromCodePoint(codePoint);
-        break;
-      case "ignored":
-        break;
-      case "mapped":
-        processed += String.fromCodePoint.apply(String, status[2]);
-        break;
-      case "deviation":
-        if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {
-          processed += String.fromCodePoint.apply(String, status[2]);
-        } else {
-          processed += String.fromCodePoint(codePoint);
-        }
-        break;
-      case "valid":
-        processed += String.fromCodePoint(codePoint);
-        break;
-      case "disallowed_STD3_mapped":
-        if (useSTD3) {
-          hasError = true;
-          processed += String.fromCodePoint(codePoint);
-        } else {
-          processed += String.fromCodePoint.apply(String, status[2]);
-        }
-        break;
-      case "disallowed_STD3_valid":
-        if (useSTD3) {
-          hasError = true;
-        }
-
-        processed += String.fromCodePoint(codePoint);
-        break;
-    }
-  }
-
-  return {
-    string: processed,
-    error: hasError
-  };
-}
-
-var combiningMarksRegex = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/;
-
-function validateLabel(label, processing_option) {
-  if (label.substr(0, 4) === "xn--") {
-    label = punycode.toUnicode(label);
-    processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;
-  }
-
-  var error = false;
-
-  if (normalize(label) !== label ||
-      (label[3] === "-" && label[4] === "-") ||
-      label[0] === "-" || label[label.length - 1] === "-" ||
-      label.indexOf(".") !== -1 ||
-      label.search(combiningMarksRegex) === 0) {
-    error = true;
-  }
-
-  var len = countSymbols(label);
-  for (var i = 0; i < len; ++i) {
-    var status = findStatus(label.codePointAt(i));
-    if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== "valid") ||
-        (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&
-         status[1] !== "valid" && status[1] !== "deviation")) {
-      error = true;
-      break;
-    }
-  }
-
-  return {
-    label: label,
-    error: error
-  };
-}
-
-function processing(domain_name, useSTD3, processing_option) {
-  var result = mapChars(domain_name, useSTD3, processing_option);
-  result.string = normalize(result.string);
-
-  var labels = result.string.split(".");
-  for (var i = 0; i < labels.length; ++i) {
-    try {
-      var validation = validateLabel(labels[i]);
-      labels[i] = validation.label;
-      result.error = result.error || validation.error;
-    } catch(e) {
-      result.error = true;
-    }
-  }
-
-  return {
-    string: labels.join("."),
-    error: result.error
-  };
-}
-
-module.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {
-  var result = processing(domain_name, useSTD3, processing_option);
-  var labels = result.string.split(".");
-  labels = labels.map(function(l) {
-    try {
-      return punycode.toASCII(l);
-    } catch(e) {
-      result.error = true;
-      return l;
-    }
-  });
-
-  if (verifyDnsLength) {
-    var total = labels.slice(0, labels.length - 1).join(".").length;
-    if (total.length > 253 || total.length === 0) {
-      result.error = true;
-    }
-
-    for (var i=0; i < labels.length; ++i) {
-      if (labels.length > 63 || labels.length === 0) {
-        result.error = true;
-        break;
-      }
-    }
-  }
-
-  if (result.error) return null;
-  return labels.join(".");
-};
-
-module.exports.toUnicode = function(domain_name, useSTD3) {
-  var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);
-
-  return {
-    domain: result.string,
-    error: result.error
-  };
-};
-
-module.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;
-
-
-/***/ }),
-/* 736 */
-/***/ (function(module) {
-
-module.exports = JSON.parse("[[[0,44],\"disallowed_STD3_valid\"],[[45,46],\"valid\"],[[47,47],\"disallowed_STD3_valid\"],[[48,57],\"valid\"],[[58,64],\"disallowed_STD3_valid\"],[[65,65],\"mapped\",[97]],[[66,66],\"mapped\",[98]],[[67,67],\"mapped\",[99]],[[68,68],\"mapped\",[100]],[[69,69],\"mapped\",[101]],[[70,70],\"mapped\",[102]],[[71,71],\"mapped\",[103]],[[72,72],\"mapped\",[104]],[[73,73],\"mapped\",[105]],[[74,74],\"mapped\",[106]],[[75,75],\"mapped\",[107]],[[76,76],\"mapped\",[108]],[[77,77],\"mapped\",[109]],[[78,78],\"mapped\",[110]],[[79,79],\"mapped\",[111]],[[80,80],\"mapped\",[112]],[[81,81],\"mapped\",[113]],[[82,82],\"mapped\",[114]],[[83,83],\"mapped\",[115]],[[84,84],\"mapped\",[116]],[[85,85],\"mapped\",[117]],[[86,86],\"mapped\",[118]],[[87,87],\"mapped\",[119]],[[88,88],\"mapped\",[120]],[[89,89],\"mapped\",[121]],[[90,90],\"mapped\",[122]],[[91,96],\"disallowed_STD3_valid\"],[[97,122],\"valid\"],[[123,127],\"disallowed_STD3_valid\"],[[128,159],\"disallowed\"],[[160,160],\"disallowed_STD3_mapped\",[32]],[[161,167],\"valid\",[],\"NV8\"],[[168,168],\"disallowed_STD3_mapped\",[32,776]],[[169,169],\"valid\",[],\"NV8\"],[[170,170],\"mapped\",[97]],[[171,172],\"valid\",[],\"NV8\"],[[173,173],\"ignored\"],[[174,174],\"valid\",[],\"NV8\"],[[175,175],\"disallowed_STD3_mapped\",[32,772]],[[176,177],\"valid\",[],\"NV8\"],[[178,178],\"mapped\",[50]],[[179,179],\"mapped\",[51]],[[180,180],\"disallowed_STD3_mapped\",[32,769]],[[181,181],\"mapped\",[956]],[[182,182],\"valid\",[],\"NV8\"],[[183,183],\"valid\"],[[184,184],\"disallowed_STD3_mapped\",[32,807]],[[185,185],\"mapped\",[49]],[[186,186],\"mapped\",[111]],[[187,187],\"valid\",[],\"NV8\"],[[188,188],\"mapped\",[49,8260,52]],[[189,189],\"mapped\",[49,8260,50]],[[190,190],\"mapped\",[51,8260,52]],[[191,191],\"valid\",[],\"NV8\"],[[192,192],\"mapped\",[224]],[[193,193],\"mapped\",[225]],[[194,194],\"mapped\",[226]],[[195,195],\"mapped\",[227]],[[196,196],\"mapped\",[228]],[[197,197],\"mapped\",[229]],[[198,198],\"mapped\",[230]],[[199,199],\"mapped\",[231]],[[200,200],\"mapped\",[232]],[[201,201],\"mapped\",[233]],[[202,202],\"mapped\",[234]],[[203,203],\"mapped\",[235]],[[204,204],\"mapped\",[236]],[[205,205],\"mapped\",[237]],[[206,206],\"mapped\",[238]],[[207,207],\"mapped\",[239]],[[208,208],\"mapped\",[240]],[[209,209],\"mapped\",[241]],[[210,210],\"mapped\",[242]],[[211,211],\"mapped\",[243]],[[212,212],\"mapped\",[244]],[[213,213],\"mapped\",[245]],[[214,214],\"mapped\",[246]],[[215,215],\"valid\",[],\"NV8\"],[[216,216],\"mapped\",[248]],[[217,217],\"mapped\",[249]],[[218,218],\"mapped\",[250]],[[219,219],\"mapped\",[251]],[[220,220],\"mapped\",[252]],[[221,221],\"mapped\",[253]],[[222,222],\"mapped\",[254]],[[223,223],\"deviation\",[115,115]],[[224,246],\"valid\"],[[247,247],\"valid\",[],\"NV8\"],[[248,255],\"valid\"],[[256,256],\"mapped\",[257]],[[257,257],\"valid\"],[[258,258],\"mapped\",[259]],[[259,259],\"valid\"],[[260,260],\"mapped\",[261]],[[261,261],\"valid\"],[[262,262],\"mapped\",[263]],[[263,263],\"valid\"],[[264,264],\"mapped\",[265]],[[265,265],\"valid\"],[[266,266],\"mapped\",[267]],[[267,267],\"valid\"],[[268,268],\"mapped\",[269]],[[269,269],\"valid\"],[[270,270],\"mapped\",[271]],[[271,271],\"valid\"],[[272,272],\"mapped\",[273]],[[273,273],\"valid\"],[[274,274],\"mapped\",[275]],[[275,275],\"valid\"],[[276,276],\"mapped\",[277]],[[277,277],\"valid\"],[[278,278],\"mapped\",[279]],[[279,279],\"valid\"],[[280,280],\"mapped\",[281]],[[281,281],\"valid\"],[[282,282],\"mapped\",[283]],[[283,283],\"valid\"],[[284,284],\"mapped\",[285]],[[285,285],\"valid\"],[[286,286],\"mapped\",[287]],[[287,287],\"valid\"],[[288,288],\"mapped\",[289]],[[289,289],\"valid\"],[[290,290],\"mapped\",[291]],[[291,291],\"valid\"],[[292,292],\"mapped\",[293]],[[293,293],\"valid\"],[[294,294],\"mapped\",[295]],[[295,295],\"valid\"],[[296,296],\"mapped\",[297]],[[297,297],\"valid\"],[[298,298],\"mapped\",[299]],[[299,299],\"valid\"],[[300,300],\"mapped\",[301]],[[301,301],\"valid\"],[[302,302],\"mapped\",[303]],[[303,303],\"valid\"],[[304,304],\"mapped\",[105,775]],[[305,305],\"valid\"],[[306,307],\"mapped\",[105,106]],[[308,308],\"mapped\",[309]],[[309,309],\"valid\"],[[310,310],\"mapped\",[311]],[[311,312],\"valid\"],[[313,313],\"mapped\",[314]],[[314,314],\"valid\"],[[315,315],\"mapped\",[316]],[[316,316],\"valid\"],[[317,317],\"mapped\",[318]],[[318,318],\"valid\"],[[319,320],\"mapped\",[108,183]],[[321,321],\"mapped\",[322]],[[322,322],\"valid\"],[[323,323],\"mapped\",[324]],[[324,324],\"valid\"],[[325,325],\"mapped\",[326]],[[326,326],\"valid\"],[[327,327],\"mapped\",[328]],[[328,328],\"valid\"],[[329,329],\"mapped\",[700,110]],[[330,330],\"mapped\",[331]],[[331,331],\"valid\"],[[332,332],\"mapped\",[333]],[[333,333],\"valid\"],[[334,334],\"mapped\",[335]],[[335,335],\"valid\"],[[336,336],\"mapped\",[337]],[[337,337],\"valid\"],[[338,338],\"mapped\",[339]],[[339,339],\"valid\"],[[340,340],\"mapped\",[341]],[[341,341],\"valid\"],[[342,342],\"mapped\",[343]],[[343,343],\"valid\"],[[344,344],\"mapped\",[345]],[[345,345],\"valid\"],[[346,346],\"mapped\",[347]],[[347,347],\"valid\"],[[348,348],\"mapped\",[349]],[[349,349],\"valid\"],[[350,350],\"mapped\",[351]],[[351,351],\"valid\"],[[352,352],\"mapped\",[353]],[[353,353],\"valid\"],[[354,354],\"mapped\",[355]],[[355,355],\"valid\"],[[356,356],\"mapped\",[357]],[[357,357],\"valid\"],[[358,358],\"mapped\",[359]],[[359,359],\"valid\"],[[360,360],\"mapped\",[361]],[[361,361],\"valid\"],[[362,362],\"mapped\",[363]],[[363,363],\"valid\"],[[364,364],\"mapped\",[365]],[[365,365],\"valid\"],[[366,366],\"mapped\",[367]],[[367,367],\"valid\"],[[368,368],\"mapped\",[369]],[[369,369],\"valid\"],[[370,370],\"mapped\",[371]],[[371,371],\"valid\"],[[372,372],\"mapped\",[373]],[[373,373],\"valid\"],[[374,374],\"mapped\",[375]],[[375,375],\"valid\"],[[376,376],\"mapped\",[255]],[[377,377],\"mapped\",[378]],[[378,378],\"valid\"],[[379,379],\"mapped\",[380]],[[380,380],\"valid\"],[[381,381],\"mapped\",[382]],[[382,382],\"valid\"],[[383,383],\"mapped\",[115]],[[384,384],\"valid\"],[[385,385],\"mapped\",[595]],[[386,386],\"mapped\",[387]],[[387,387],\"valid\"],[[388,388],\"mapped\",[389]],[[389,389],\"valid\"],[[390,390],\"mapped\",[596]],[[391,391],\"mapped\",[392]],[[392,392],\"valid\"],[[393,393],\"mapped\",[598]],[[394,394],\"mapped\",[599]],[[395,395],\"mapped\",[396]],[[396,397],\"valid\"],[[398,398],\"mapped\",[477]],[[399,399],\"mapped\",[601]],[[400,400],\"mapped\",[603]],[[401,401],\"mapped\",[402]],[[402,402],\"valid\"],[[403,403],\"mapped\",[608]],[[404,404],\"mapped\",[611]],[[405,405],\"valid\"],[[406,406],\"mapped\",[617]],[[407,407],\"mapped\",[616]],[[408,408],\"mapped\",[409]],[[409,411],\"valid\"],[[412,412],\"mapped\",[623]],[[413,413],\"mapped\",[626]],[[414,414],\"valid\"],[[415,415],\"mapped\",[629]],[[416,416],\"mapped\",[417]],[[417,417],\"valid\"],[[418,418],\"mapped\",[419]],[[419,419],\"valid\"],[[420,420],\"mapped\",[421]],[[421,421],\"valid\"],[[422,422],\"mapped\",[640]],[[423,423],\"mapped\",[424]],[[424,424],\"valid\"],[[425,425],\"mapped\",[643]],[[426,427],\"valid\"],[[428,428],\"mapped\",[429]],[[429,429],\"valid\"],[[430,430],\"mapped\",[648]],[[431,431],\"mapped\",[432]],[[432,432],\"valid\"],[[433,433],\"mapped\",[650]],[[434,434],\"mapped\",[651]],[[435,435],\"mapped\",[436]],[[436,436],\"valid\"],[[437,437],\"mapped\",[438]],[[438,438],\"valid\"],[[439,439],\"mapped\",[658]],[[440,440],\"mapped\",[441]],[[441,443],\"valid\"],[[444,444],\"mapped\",[445]],[[445,451],\"valid\"],[[452,454],\"mapped\",[100,382]],[[455,457],\"mapped\",[108,106]],[[458,460],\"mapped\",[110,106]],[[461,461],\"mapped\",[462]],[[462,462],\"valid\"],[[463,463],\"mapped\",[464]],[[464,464],\"valid\"],[[465,465],\"mapped\",[466]],[[466,466],\"valid\"],[[467,467],\"mapped\",[468]],[[468,468],\"valid\"],[[469,469],\"mapped\",[470]],[[470,470],\"valid\"],[[471,471],\"mapped\",[472]],[[472,472],\"valid\"],[[473,473],\"mapped\",[474]],[[474,474],\"valid\"],[[475,475],\"mapped\",[476]],[[476,477],\"valid\"],[[478,478],\"mapped\",[479]],[[479,479],\"valid\"],[[480,480],\"mapped\",[481]],[[481,481],\"valid\"],[[482,482],\"mapped\",[483]],[[483,483],\"valid\"],[[484,484],\"mapped\",[485]],[[485,485],\"valid\"],[[486,486],\"mapped\",[487]],[[487,487],\"valid\"],[[488,488],\"mapped\",[489]],[[489,489],\"valid\"],[[490,490],\"mapped\",[491]],[[491,491],\"valid\"],[[492,492],\"mapped\",[493]],[[493,493],\"valid\"],[[494,494],\"mapped\",[495]],[[495,496],\"valid\"],[[497,499],\"mapped\",[100,122]],[[500,500],\"mapped\",[501]],[[501,501],\"valid\"],[[502,502],\"mapped\",[405]],[[503,503],\"mapped\",[447]],[[504,504],\"mapped\",[505]],[[505,505],\"valid\"],[[506,506],\"mapped\",[507]],[[507,507],\"valid\"],[[508,508],\"mapped\",[509]],[[509,509],\"valid\"],[[510,510],\"mapped\",[511]],[[511,511],\"valid\"],[[512,512],\"mapped\",[513]],[[513,513],\"valid\"],[[514,514],\"mapped\",[515]],[[515,515],\"valid\"],[[516,516],\"mapped\",[517]],[[517,517],\"valid\"],[[518,518],\"mapped\",[519]],[[519,519],\"valid\"],[[520,520],\"mapped\",[521]],[[521,521],\"valid\"],[[522,522],\"mapped\",[523]],[[523,523],\"valid\"],[[524,524],\"mapped\",[525]],[[525,525],\"valid\"],[[526,526],\"mapped\",[527]],[[527,527],\"valid\"],[[528,528],\"mapped\",[529]],[[529,529],\"valid\"],[[530,530],\"mapped\",[531]],[[531,531],\"valid\"],[[532,532],\"mapped\",[533]],[[533,533],\"valid\"],[[534,534],\"mapped\",[535]],[[535,535],\"valid\"],[[536,536],\"mapped\",[537]],[[537,537],\"valid\"],[[538,538],\"mapped\",[539]],[[539,539],\"valid\"],[[540,540],\"mapped\",[541]],[[541,541],\"valid\"],[[542,542],\"mapped\",[543]],[[543,543],\"valid\"],[[544,544],\"mapped\",[414]],[[545,545],\"valid\"],[[546,546],\"mapped\",[547]],[[547,547],\"valid\"],[[548,548],\"mapped\",[549]],[[549,549],\"valid\"],[[550,550],\"mapped\",[551]],[[551,551],\"valid\"],[[552,552],\"mapped\",[553]],[[553,553],\"valid\"],[[554,554],\"mapped\",[555]],[[555,555],\"valid\"],[[556,556],\"mapped\",[557]],[[557,557],\"valid\"],[[558,558],\"mapped\",[559]],[[559,559],\"valid\"],[[560,560],\"mapped\",[561]],[[561,561],\"valid\"],[[562,562],\"mapped\",[563]],[[563,563],\"valid\"],[[564,566],\"valid\"],[[567,569],\"valid\"],[[570,570],\"mapped\",[11365]],[[571,571],\"mapped\",[572]],[[572,572],\"valid\"],[[573,573],\"mapped\",[410]],[[574,574],\"mapped\",[11366]],[[575,576],\"valid\"],[[577,577],\"mapped\",[578]],[[578,578],\"valid\"],[[579,579],\"mapped\",[384]],[[580,580],\"mapped\",[649]],[[581,581],\"mapped\",[652]],[[582,582],\"mapped\",[583]],[[583,583],\"valid\"],[[584,584],\"mapped\",[585]],[[585,585],\"valid\"],[[586,586],\"mapped\",[587]],[[587,587],\"valid\"],[[588,588],\"mapped\",[589]],[[589,589],\"valid\"],[[590,590],\"mapped\",[591]],[[591,591],\"valid\"],[[592,680],\"valid\"],[[681,685],\"valid\"],[[686,687],\"valid\"],[[688,688],\"mapped\",[104]],[[689,689],\"mapped\",[614]],[[690,690],\"mapped\",[106]],[[691,691],\"mapped\",[114]],[[692,692],\"mapped\",[633]],[[693,693],\"mapped\",[635]],[[694,694],\"mapped\",[641]],[[695,695],\"mapped\",[119]],[[696,696],\"mapped\",[121]],[[697,705],\"valid\"],[[706,709],\"valid\",[],\"NV8\"],[[710,721],\"valid\"],[[722,727],\"valid\",[],\"NV8\"],[[728,728],\"disallowed_STD3_mapped\",[32,774]],[[729,729],\"disallowed_STD3_mapped\",[32,775]],[[730,730],\"disallowed_STD3_mapped\",[32,778]],[[731,731],\"disallowed_STD3_mapped\",[32,808]],[[732,732],\"disallowed_STD3_mapped\",[32,771]],[[733,733],\"disallowed_STD3_mapped\",[32,779]],[[734,734],\"valid\",[],\"NV8\"],[[735,735],\"valid\",[],\"NV8\"],[[736,736],\"mapped\",[611]],[[737,737],\"mapped\",[108]],[[738,738],\"mapped\",[115]],[[739,739],\"mapped\",[120]],[[740,740],\"mapped\",[661]],[[741,745],\"valid\",[],\"NV8\"],[[746,747],\"valid\",[],\"NV8\"],[[748,748],\"valid\"],[[749,749],\"valid\",[],\"NV8\"],[[750,750],\"valid\"],[[751,767],\"valid\",[],\"NV8\"],[[768,831],\"valid\"],[[832,832],\"mapped\",[768]],[[833,833],\"mapped\",[769]],[[834,834],\"valid\"],[[835,835],\"mapped\",[787]],[[836,836],\"mapped\",[776,769]],[[837,837],\"mapped\",[953]],[[838,846],\"valid\"],[[847,847],\"ignored\"],[[848,855],\"valid\"],[[856,860],\"valid\"],[[861,863],\"valid\"],[[864,865],\"valid\"],[[866,866],\"valid\"],[[867,879],\"valid\"],[[880,880],\"mapped\",[881]],[[881,881],\"valid\"],[[882,882],\"mapped\",[883]],[[883,883],\"valid\"],[[884,884],\"mapped\",[697]],[[885,885],\"valid\"],[[886,886],\"mapped\",[887]],[[887,887],\"valid\"],[[888,889],\"disallowed\"],[[890,890],\"disallowed_STD3_mapped\",[32,953]],[[891,893],\"valid\"],[[894,894],\"disallowed_STD3_mapped\",[59]],[[895,895],\"mapped\",[1011]],[[896,899],\"disallowed\"],[[900,900],\"disallowed_STD3_mapped\",[32,769]],[[901,901],\"disallowed_STD3_mapped\",[32,776,769]],[[902,902],\"mapped\",[940]],[[903,903],\"mapped\",[183]],[[904,904],\"mapped\",[941]],[[905,905],\"mapped\",[942]],[[906,906],\"mapped\",[943]],[[907,907],\"disallowed\"],[[908,908],\"mapped\",[972]],[[909,909],\"disallowed\"],[[910,910],\"mapped\",[973]],[[911,911],\"mapped\",[974]],[[912,912],\"valid\"],[[913,913],\"mapped\",[945]],[[914,914],\"mapped\",[946]],[[915,915],\"mapped\",[947]],[[916,916],\"mapped\",[948]],[[917,917],\"mapped\",[949]],[[918,918],\"mapped\",[950]],[[919,919],\"mapped\",[951]],[[920,920],\"mapped\",[952]],[[921,921],\"mapped\",[953]],[[922,922],\"mapped\",[954]],[[923,923],\"mapped\",[955]],[[924,924],\"mapped\",[956]],[[925,925],\"mapped\",[957]],[[926,926],\"mapped\",[958]],[[927,927],\"mapped\",[959]],[[928,928],\"mapped\",[960]],[[929,929],\"mapped\",[961]],[[930,930],\"disallowed\"],[[931,931],\"mapped\",[963]],[[932,932],\"mapped\",[964]],[[933,933],\"mapped\",[965]],[[934,934],\"mapped\",[966]],[[935,935],\"mapped\",[967]],[[936,936],\"mapped\",[968]],[[937,937],\"mapped\",[969]],[[938,938],\"mapped\",[970]],[[939,939],\"mapped\",[971]],[[940,961],\"valid\"],[[962,962],\"deviation\",[963]],[[963,974],\"valid\"],[[975,975],\"mapped\",[983]],[[976,976],\"mapped\",[946]],[[977,977],\"mapped\",[952]],[[978,978],\"mapped\",[965]],[[979,979],\"mapped\",[973]],[[980,980],\"mapped\",[971]],[[981,981],\"mapped\",[966]],[[982,982],\"mapped\",[960]],[[983,983],\"valid\"],[[984,984],\"mapped\",[985]],[[985,985],\"valid\"],[[986,986],\"mapped\",[987]],[[987,987],\"valid\"],[[988,988],\"mapped\",[989]],[[989,989],\"valid\"],[[990,990],\"mapped\",[991]],[[991,991],\"valid\"],[[992,992],\"mapped\",[993]],[[993,993],\"valid\"],[[994,994],\"mapped\",[995]],[[995,995],\"valid\"],[[996,996],\"mapped\",[997]],[[997,997],\"valid\"],[[998,998],\"mapped\",[999]],[[999,999],\"valid\"],[[1000,1000],\"mapped\",[1001]],[[1001,1001],\"valid\"],[[1002,1002],\"mapped\",[1003]],[[1003,1003],\"valid\"],[[1004,1004],\"mapped\",[1005]],[[1005,1005],\"valid\"],[[1006,1006],\"mapped\",[1007]],[[1007,1007],\"valid\"],[[1008,1008],\"mapped\",[954]],[[1009,1009],\"mapped\",[961]],[[1010,1010],\"mapped\",[963]],[[1011,1011],\"valid\"],[[1012,1012],\"mapped\",[952]],[[1013,1013],\"mapped\",[949]],[[1014,1014],\"valid\",[],\"NV8\"],[[1015,1015],\"mapped\",[1016]],[[1016,1016],\"valid\"],[[1017,1017],\"mapped\",[963]],[[1018,1018],\"mapped\",[1019]],[[1019,1019],\"valid\"],[[1020,1020],\"valid\"],[[1021,1021],\"mapped\",[891]],[[1022,1022],\"mapped\",[892]],[[1023,1023],\"mapped\",[893]],[[1024,1024],\"mapped\",[1104]],[[1025,1025],\"mapped\",[1105]],[[1026,1026],\"mapped\",[1106]],[[1027,1027],\"mapped\",[1107]],[[1028,1028],\"mapped\",[1108]],[[1029,1029],\"mapped\",[1109]],[[1030,1030],\"mapped\",[1110]],[[1031,1031],\"mapped\",[1111]],[[1032,1032],\"mapped\",[1112]],[[1033,1033],\"mapped\",[1113]],[[1034,1034],\"mapped\",[1114]],[[1035,1035],\"mapped\",[1115]],[[1036,1036],\"mapped\",[1116]],[[1037,1037],\"mapped\",[1117]],[[1038,1038],\"mapped\",[1118]],[[1039,1039],\"mapped\",[1119]],[[1040,1040],\"mapped\",[1072]],[[1041,1041],\"mapped\",[1073]],[[1042,1042],\"mapped\",[1074]],[[1043,1043],\"mapped\",[1075]],[[1044,1044],\"mapped\",[1076]],[[1045,1045],\"mapped\",[1077]],[[1046,1046],\"mapped\",[1078]],[[1047,1047],\"mapped\",[1079]],[[1048,1048],\"mapped\",[1080]],[[1049,1049],\"mapped\",[1081]],[[1050,1050],\"mapped\",[1082]],[[1051,1051],\"mapped\",[1083]],[[1052,1052],\"mapped\",[1084]],[[1053,1053],\"mapped\",[1085]],[[1054,1054],\"mapped\",[1086]],[[1055,1055],\"mapped\",[1087]],[[1056,1056],\"mapped\",[1088]],[[1057,1057],\"mapped\",[1089]],[[1058,1058],\"mapped\",[1090]],[[1059,1059],\"mapped\",[1091]],[[1060,1060],\"mapped\",[1092]],[[1061,1061],\"mapped\",[1093]],[[1062,1062],\"mapped\",[1094]],[[1063,1063],\"mapped\",[1095]],[[1064,1064],\"mapped\",[1096]],[[1065,1065],\"mapped\",[1097]],[[1066,1066],\"mapped\",[1098]],[[1067,1067],\"mapped\",[1099]],[[1068,1068],\"mapped\",[1100]],[[1069,1069],\"mapped\",[1101]],[[1070,1070],\"mapped\",[1102]],[[1071,1071],\"mapped\",[1103]],[[1072,1103],\"valid\"],[[1104,1104],\"valid\"],[[1105,1116],\"valid\"],[[1117,1117],\"valid\"],[[1118,1119],\"valid\"],[[1120,1120],\"mapped\",[1121]],[[1121,1121],\"valid\"],[[1122,1122],\"mapped\",[1123]],[[1123,1123],\"valid\"],[[1124,1124],\"mapped\",[1125]],[[1125,1125],\"valid\"],[[1126,1126],\"mapped\",[1127]],[[1127,1127],\"valid\"],[[1128,1128],\"mapped\",[1129]],[[1129,1129],\"valid\"],[[1130,1130],\"mapped\",[1131]],[[1131,1131],\"valid\"],[[1132,1132],\"mapped\",[1133]],[[1133,1133],\"valid\"],[[1134,1134],\"mapped\",[1135]],[[1135,1135],\"valid\"],[[1136,1136],\"mapped\",[1137]],[[1137,1137],\"valid\"],[[1138,1138],\"mapped\",[1139]],[[1139,1139],\"valid\"],[[1140,1140],\"mapped\",[1141]],[[1141,1141],\"valid\"],[[1142,1142],\"mapped\",[1143]],[[1143,1143],\"valid\"],[[1144,1144],\"mapped\",[1145]],[[1145,1145],\"valid\"],[[1146,1146],\"mapped\",[1147]],[[1147,1147],\"valid\"],[[1148,1148],\"mapped\",[1149]],[[1149,1149],\"valid\"],[[1150,1150],\"mapped\",[1151]],[[1151,1151],\"valid\"],[[1152,1152],\"mapped\",[1153]],[[1153,1153],\"valid\"],[[1154,1154],\"valid\",[],\"NV8\"],[[1155,1158],\"valid\"],[[1159,1159],\"valid\"],[[1160,1161],\"valid\",[],\"NV8\"],[[1162,1162],\"mapped\",[1163]],[[1163,1163],\"valid\"],[[1164,1164],\"mapped\",[1165]],[[1165,1165],\"valid\"],[[1166,1166],\"mapped\",[1167]],[[1167,1167],\"valid\"],[[1168,1168],\"mapped\",[1169]],[[1169,1169],\"valid\"],[[1170,1170],\"mapped\",[1171]],[[1171,1171],\"valid\"],[[1172,1172],\"mapped\",[1173]],[[1173,1173],\"valid\"],[[1174,1174],\"mapped\",[1175]],[[1175,1175],\"valid\"],[[1176,1176],\"mapped\",[1177]],[[1177,1177],\"valid\"],[[1178,1178],\"mapped\",[1179]],[[1179,1179],\"valid\"],[[1180,1180],\"mapped\",[1181]],[[1181,1181],\"valid\"],[[1182,1182],\"mapped\",[1183]],[[1183,1183],\"valid\"],[[1184,1184],\"mapped\",[1185]],[[1185,1185],\"valid\"],[[1186,1186],\"mapped\",[1187]],[[1187,1187],\"valid\"],[[1188,1188],\"mapped\",[1189]],[[1189,1189],\"valid\"],[[1190,1190],\"mapped\",[1191]],[[1191,1191],\"valid\"],[[1192,1192],\"mapped\",[1193]],[[1193,1193],\"valid\"],[[1194,1194],\"mapped\",[1195]],[[1195,1195],\"valid\"],[[1196,1196],\"mapped\",[1197]],[[1197,1197],\"valid\"],[[1198,1198],\"mapped\",[1199]],[[1199,1199],\"valid\"],[[1200,1200],\"mapped\",[1201]],[[1201,1201],\"valid\"],[[1202,1202],\"mapped\",[1203]],[[1203,1203],\"valid\"],[[1204,1204],\"mapped\",[1205]],[[1205,1205],\"valid\"],[[1206,1206],\"mapped\",[1207]],[[1207,1207],\"valid\"],[[1208,1208],\"mapped\",[1209]],[[1209,1209],\"valid\"],[[1210,1210],\"mapped\",[1211]],[[1211,1211],\"valid\"],[[1212,1212],\"mapped\",[1213]],[[1213,1213],\"valid\"],[[1214,1214],\"mapped\",[1215]],[[1215,1215],\"valid\"],[[1216,1216],\"disallowed\"],[[1217,1217],\"mapped\",[1218]],[[1218,1218],\"valid\"],[[1219,1219],\"mapped\",[1220]],[[1220,1220],\"valid\"],[[1221,1221],\"mapped\",[1222]],[[1222,1222],\"valid\"],[[1223,1223],\"mapped\",[1224]],[[1224,1224],\"valid\"],[[1225,1225],\"mapped\",[1226]],[[1226,1226],\"valid\"],[[1227,1227],\"mapped\",[1228]],[[1228,1228],\"valid\"],[[1229,1229],\"mapped\",[1230]],[[1230,1230],\"valid\"],[[1231,1231],\"valid\"],[[1232,1232],\"mapped\",[1233]],[[1233,1233],\"valid\"],[[1234,1234],\"mapped\",[1235]],[[1235,1235],\"valid\"],[[1236,1236],\"mapped\",[1237]],[[1237,1237],\"valid\"],[[1238,1238],\"mapped\",[1239]],[[1239,1239],\"valid\"],[[1240,1240],\"mapped\",[1241]],[[1241,1241],\"valid\"],[[1242,1242],\"mapped\",[1243]],[[1243,1243],\"valid\"],[[1244,1244],\"mapped\",[1245]],[[1245,1245],\"valid\"],[[1246,1246],\"mapped\",[1247]],[[1247,1247],\"valid\"],[[1248,1248],\"mapped\",[1249]],[[1249,1249],\"valid\"],[[1250,1250],\"mapped\",[1251]],[[1251,1251],\"valid\"],[[1252,1252],\"mapped\",[1253]],[[1253,1253],\"valid\"],[[1254,1254],\"mapped\",[1255]],[[1255,1255],\"valid\"],[[1256,1256],\"mapped\",[1257]],[[1257,1257],\"valid\"],[[1258,1258],\"mapped\",[1259]],[[1259,1259],\"valid\"],[[1260,1260],\"mapped\",[1261]],[[1261,1261],\"valid\"],[[1262,1262],\"mapped\",[1263]],[[1263,1263],\"valid\"],[[1264,1264],\"mapped\",[1265]],[[1265,1265],\"valid\"],[[1266,1266],\"mapped\",[1267]],[[1267,1267],\"valid\"],[[1268,1268],\"mapped\",[1269]],[[1269,1269],\"valid\"],[[1270,1270],\"mapped\",[1271]],[[1271,1271],\"valid\"],[[1272,1272],\"mapped\",[1273]],[[1273,1273],\"valid\"],[[1274,1274],\"mapped\",[1275]],[[1275,1275],\"valid\"],[[1276,1276],\"mapped\",[1277]],[[1277,1277],\"valid\"],[[1278,1278],\"mapped\",[1279]],[[1279,1279],\"valid\"],[[1280,1280],\"mapped\",[1281]],[[1281,1281],\"valid\"],[[1282,1282],\"mapped\",[1283]],[[1283,1283],\"valid\"],[[1284,1284],\"mapped\",[1285]],[[1285,1285],\"valid\"],[[1286,1286],\"mapped\",[1287]],[[1287,1287],\"valid\"],[[1288,1288],\"mapped\",[1289]],[[1289,1289],\"valid\"],[[1290,1290],\"mapped\",[1291]],[[1291,1291],\"valid\"],[[1292,1292],\"mapped\",[1293]],[[1293,1293],\"valid\"],[[1294,1294],\"mapped\",[1295]],[[1295,1295],\"valid\"],[[1296,1296],\"mapped\",[1297]],[[1297,1297],\"valid\"],[[1298,1298],\"mapped\",[1299]],[[1299,1299],\"valid\"],[[1300,1300],\"mapped\",[1301]],[[1301,1301],\"valid\"],[[1302,1302],\"mapped\",[1303]],[[1303,1303],\"valid\"],[[1304,1304],\"mapped\",[1305]],[[1305,1305],\"valid\"],[[1306,1306],\"mapped\",[1307]],[[1307,1307],\"valid\"],[[1308,1308],\"mapped\",[1309]],[[1309,1309],\"valid\"],[[1310,1310],\"mapped\",[1311]],[[1311,1311],\"valid\"],[[1312,1312],\"mapped\",[1313]],[[1313,1313],\"valid\"],[[1314,1314],\"mapped\",[1315]],[[1315,1315],\"valid\"],[[1316,1316],\"mapped\",[1317]],[[1317,1317],\"valid\"],[[1318,1318],\"mapped\",[1319]],[[1319,1319],\"valid\"],[[1320,1320],\"mapped\",[1321]],[[1321,1321],\"valid\"],[[1322,1322],\"mapped\",[1323]],[[1323,1323],\"valid\"],[[1324,1324],\"mapped\",[1325]],[[1325,1325],\"valid\"],[[1326,1326],\"mapped\",[1327]],[[1327,1327],\"valid\"],[[1328,1328],\"disallowed\"],[[1329,1329],\"mapped\",[1377]],[[1330,1330],\"mapped\",[1378]],[[1331,1331],\"mapped\",[1379]],[[1332,1332],\"mapped\",[1380]],[[1333,1333],\"mapped\",[1381]],[[1334,1334],\"mapped\",[1382]],[[1335,1335],\"mapped\",[1383]],[[1336,1336],\"mapped\",[1384]],[[1337,1337],\"mapped\",[1385]],[[1338,1338],\"mapped\",[1386]],[[1339,1339],\"mapped\",[1387]],[[1340,1340],\"mapped\",[1388]],[[1341,1341],\"mapped\",[1389]],[[1342,1342],\"mapped\",[1390]],[[1343,1343],\"mapped\",[1391]],[[1344,1344],\"mapped\",[1392]],[[1345,1345],\"mapped\",[1393]],[[1346,1346],\"mapped\",[1394]],[[1347,1347],\"mapped\",[1395]],[[1348,1348],\"mapped\",[1396]],[[1349,1349],\"mapped\",[1397]],[[1350,1350],\"mapped\",[1398]],[[1351,1351],\"mapped\",[1399]],[[1352,1352],\"mapped\",[1400]],[[1353,1353],\"mapped\",[1401]],[[1354,1354],\"mapped\",[1402]],[[1355,1355],\"mapped\",[1403]],[[1356,1356],\"mapped\",[1404]],[[1357,1357],\"mapped\",[1405]],[[1358,1358],\"mapped\",[1406]],[[1359,1359],\"mapped\",[1407]],[[1360,1360],\"mapped\",[1408]],[[1361,1361],\"mapped\",[1409]],[[1362,1362],\"mapped\",[1410]],[[1363,1363],\"mapped\",[1411]],[[1364,1364],\"mapped\",[1412]],[[1365,1365],\"mapped\",[1413]],[[1366,1366],\"mapped\",[1414]],[[1367,1368],\"disallowed\"],[[1369,1369],\"valid\"],[[1370,1375],\"valid\",[],\"NV8\"],[[1376,1376],\"disallowed\"],[[1377,1414],\"valid\"],[[1415,1415],\"mapped\",[1381,1410]],[[1416,1416],\"disallowed\"],[[1417,1417],\"valid\",[],\"NV8\"],[[1418,1418],\"valid\",[],\"NV8\"],[[1419,1420],\"disallowed\"],[[1421,1422],\"valid\",[],\"NV8\"],[[1423,1423],\"valid\",[],\"NV8\"],[[1424,1424],\"disallowed\"],[[1425,1441],\"valid\"],[[1442,1442],\"valid\"],[[1443,1455],\"valid\"],[[1456,1465],\"valid\"],[[1466,1466],\"valid\"],[[1467,1469],\"valid\"],[[1470,1470],\"valid\",[],\"NV8\"],[[1471,1471],\"valid\"],[[1472,1472],\"valid\",[],\"NV8\"],[[1473,1474],\"valid\"],[[1475,1475],\"valid\",[],\"NV8\"],[[1476,1476],\"valid\"],[[1477,1477],\"valid\"],[[1478,1478],\"valid\",[],\"NV8\"],[[1479,1479],\"valid\"],[[1480,1487],\"disallowed\"],[[1488,1514],\"valid\"],[[1515,1519],\"disallowed\"],[[1520,1524],\"valid\"],[[1525,1535],\"disallowed\"],[[1536,1539],\"disallowed\"],[[1540,1540],\"disallowed\"],[[1541,1541],\"disallowed\"],[[1542,1546],\"valid\",[],\"NV8\"],[[1547,1547],\"valid\",[],\"NV8\"],[[1548,1548],\"valid\",[],\"NV8\"],[[1549,1551],\"valid\",[],\"NV8\"],[[1552,1557],\"valid\"],[[1558,1562],\"valid\"],[[1563,1563],\"valid\",[],\"NV8\"],[[1564,1564],\"disallowed\"],[[1565,1565],\"disallowed\"],[[1566,1566],\"valid\",[],\"NV8\"],[[1567,1567],\"valid\",[],\"NV8\"],[[1568,1568],\"valid\"],[[1569,1594],\"valid\"],[[1595,1599],\"valid\"],[[1600,1600],\"valid\",[],\"NV8\"],[[1601,1618],\"valid\"],[[1619,1621],\"valid\"],[[1622,1624],\"valid\"],[[1625,1630],\"valid\"],[[1631,1631],\"valid\"],[[1632,1641],\"valid\"],[[1642,1645],\"valid\",[],\"NV8\"],[[1646,1647],\"valid\"],[[1648,1652],\"valid\"],[[1653,1653],\"mapped\",[1575,1652]],[[1654,1654],\"mapped\",[1608,1652]],[[1655,1655],\"mapped\",[1735,1652]],[[1656,1656],\"mapped\",[1610,1652]],[[1657,1719],\"valid\"],[[1720,1721],\"valid\"],[[1722,1726],\"valid\"],[[1727,1727],\"valid\"],[[1728,1742],\"valid\"],[[1743,1743],\"valid\"],[[1744,1747],\"valid\"],[[1748,1748],\"valid\",[],\"NV8\"],[[1749,1756],\"valid\"],[[1757,1757],\"disallowed\"],[[1758,1758],\"valid\",[],\"NV8\"],[[1759,1768],\"valid\"],[[1769,1769],\"valid\",[],\"NV8\"],[[1770,1773],\"valid\"],[[1774,1775],\"valid\"],[[1776,1785],\"valid\"],[[1786,1790],\"valid\"],[[1791,1791],\"valid\"],[[1792,1805],\"valid\",[],\"NV8\"],[[1806,1806],\"disallowed\"],[[1807,1807],\"disallowed\"],[[1808,1836],\"valid\"],[[1837,1839],\"valid\"],[[1840,1866],\"valid\"],[[1867,1868],\"disallowed\"],[[1869,1871],\"valid\"],[[1872,1901],\"valid\"],[[1902,1919],\"valid\"],[[1920,1968],\"valid\"],[[1969,1969],\"valid\"],[[1970,1983],\"disallowed\"],[[1984,2037],\"valid\"],[[2038,2042],\"valid\",[],\"NV8\"],[[2043,2047],\"disallowed\"],[[2048,2093],\"valid\"],[[2094,2095],\"disallowed\"],[[2096,2110],\"valid\",[],\"NV8\"],[[2111,2111],\"disallowed\"],[[2112,2139],\"valid\"],[[2140,2141],\"disallowed\"],[[2142,2142],\"valid\",[],\"NV8\"],[[2143,2207],\"disallowed\"],[[2208,2208],\"valid\"],[[2209,2209],\"valid\"],[[2210,2220],\"valid\"],[[2221,2226],\"valid\"],[[2227,2228],\"valid\"],[[2229,2274],\"disallowed\"],[[2275,2275],\"valid\"],[[2276,2302],\"valid\"],[[2303,2303],\"valid\"],[[2304,2304],\"valid\"],[[2305,2307],\"valid\"],[[2308,2308],\"valid\"],[[2309,2361],\"valid\"],[[2362,2363],\"valid\"],[[2364,2381],\"valid\"],[[2382,2382],\"valid\"],[[2383,2383],\"valid\"],[[2384,2388],\"valid\"],[[2389,2389],\"valid\"],[[2390,2391],\"valid\"],[[2392,2392],\"mapped\",[2325,2364]],[[2393,2393],\"mapped\",[2326,2364]],[[2394,2394],\"mapped\",[2327,2364]],[[2395,2395],\"mapped\",[2332,2364]],[[2396,2396],\"mapped\",[2337,2364]],[[2397,2397],\"mapped\",[2338,2364]],[[2398,2398],\"mapped\",[2347,2364]],[[2399,2399],\"mapped\",[2351,2364]],[[2400,2403],\"valid\"],[[2404,2405],\"valid\",[],\"NV8\"],[[2406,2415],\"valid\"],[[2416,2416],\"valid\",[],\"NV8\"],[[2417,2418],\"valid\"],[[2419,2423],\"valid\"],[[2424,2424],\"valid\"],[[2425,2426],\"valid\"],[[2427,2428],\"valid\"],[[2429,2429],\"valid\"],[[2430,2431],\"valid\"],[[2432,2432],\"valid\"],[[2433,2435],\"valid\"],[[2436,2436],\"disallowed\"],[[2437,2444],\"valid\"],[[2445,2446],\"disallowed\"],[[2447,2448],\"valid\"],[[2449,2450],\"disallowed\"],[[2451,2472],\"valid\"],[[2473,2473],\"disallowed\"],[[2474,2480],\"valid\"],[[2481,2481],\"disallowed\"],[[2482,2482],\"valid\"],[[2483,2485],\"disallowed\"],[[2486,2489],\"valid\"],[[2490,2491],\"disallowed\"],[[2492,2492],\"valid\"],[[2493,2493],\"valid\"],[[2494,2500],\"valid\"],[[2501,2502],\"disallowed\"],[[2503,2504],\"valid\"],[[2505,2506],\"disallowed\"],[[2507,2509],\"valid\"],[[2510,2510],\"valid\"],[[2511,2518],\"disallowed\"],[[2519,2519],\"valid\"],[[2520,2523],\"disallowed\"],[[2524,2524],\"mapped\",[2465,2492]],[[2525,2525],\"mapped\",[2466,2492]],[[2526,2526],\"disallowed\"],[[2527,2527],\"mapped\",[2479,2492]],[[2528,2531],\"valid\"],[[2532,2533],\"disallowed\"],[[2534,2545],\"valid\"],[[2546,2554],\"valid\",[],\"NV8\"],[[2555,2555],\"valid\",[],\"NV8\"],[[2556,2560],\"disallowed\"],[[2561,2561],\"valid\"],[[2562,2562],\"valid\"],[[2563,2563],\"valid\"],[[2564,2564],\"disallowed\"],[[2565,2570],\"valid\"],[[2571,2574],\"disallowed\"],[[2575,2576],\"valid\"],[[2577,2578],\"disallowed\"],[[2579,2600],\"valid\"],[[2601,2601],\"disallowed\"],[[2602,2608],\"valid\"],[[2609,2609],\"disallowed\"],[[2610,2610],\"valid\"],[[2611,2611],\"mapped\",[2610,2620]],[[2612,2612],\"disallowed\"],[[2613,2613],\"valid\"],[[2614,2614],\"mapped\",[2616,2620]],[[2615,2615],\"disallowed\"],[[2616,2617],\"valid\"],[[2618,2619],\"disallowed\"],[[2620,2620],\"valid\"],[[2621,2621],\"disallowed\"],[[2622,2626],\"valid\"],[[2627,2630],\"disallowed\"],[[2631,2632],\"valid\"],[[2633,2634],\"disallowed\"],[[2635,2637],\"valid\"],[[2638,2640],\"disallowed\"],[[2641,2641],\"valid\"],[[2642,2648],\"disallowed\"],[[2649,2649],\"mapped\",[2582,2620]],[[2650,2650],\"mapped\",[2583,2620]],[[2651,2651],\"mapped\",[2588,2620]],[[2652,2652],\"valid\"],[[2653,2653],\"disallowed\"],[[2654,2654],\"mapped\",[2603,2620]],[[2655,2661],\"disallowed\"],[[2662,2676],\"valid\"],[[2677,2677],\"valid\"],[[2678,2688],\"disallowed\"],[[2689,2691],\"valid\"],[[2692,2692],\"disallowed\"],[[2693,2699],\"valid\"],[[2700,2700],\"valid\"],[[2701,2701],\"valid\"],[[2702,2702],\"disallowed\"],[[2703,2705],\"valid\"],[[2706,2706],\"disallowed\"],[[2707,2728],\"valid\"],[[2729,2729],\"disallowed\"],[[2730,2736],\"valid\"],[[2737,2737],\"disallowed\"],[[2738,2739],\"valid\"],[[2740,2740],\"disallowed\"],[[2741,2745],\"valid\"],[[2746,2747],\"disallowed\"],[[2748,2757],\"valid\"],[[2758,2758],\"disallowed\"],[[2759,2761],\"valid\"],[[2762,2762],\"disallowed\"],[[2763,2765],\"valid\"],[[2766,2767],\"disallowed\"],[[2768,2768],\"valid\"],[[2769,2783],\"disallowed\"],[[2784,2784],\"valid\"],[[2785,2787],\"valid\"],[[2788,2789],\"disallowed\"],[[2790,2799],\"valid\"],[[2800,2800],\"valid\",[],\"NV8\"],[[2801,2801],\"valid\",[],\"NV8\"],[[2802,2808],\"disallowed\"],[[2809,2809],\"valid\"],[[2810,2816],\"disallowed\"],[[2817,2819],\"valid\"],[[2820,2820],\"disallowed\"],[[2821,2828],\"valid\"],[[2829,2830],\"disallowed\"],[[2831,2832],\"valid\"],[[2833,2834],\"disallowed\"],[[2835,2856],\"valid\"],[[2857,2857],\"disallowed\"],[[2858,2864],\"valid\"],[[2865,2865],\"disallowed\"],[[2866,2867],\"valid\"],[[2868,2868],\"disallowed\"],[[2869,2869],\"valid\"],[[2870,2873],\"valid\"],[[2874,2875],\"disallowed\"],[[2876,2883],\"valid\"],[[2884,2884],\"valid\"],[[2885,2886],\"disallowed\"],[[2887,2888],\"valid\"],[[2889,2890],\"disallowed\"],[[2891,2893],\"valid\"],[[2894,2901],\"disallowed\"],[[2902,2903],\"valid\"],[[2904,2907],\"disallowed\"],[[2908,2908],\"mapped\",[2849,2876]],[[2909,2909],\"mapped\",[2850,2876]],[[2910,2910],\"disallowed\"],[[2911,2913],\"valid\"],[[2914,2915],\"valid\"],[[2916,2917],\"disallowed\"],[[2918,2927],\"valid\"],[[2928,2928],\"valid\",[],\"NV8\"],[[2929,2929],\"valid\"],[[2930,2935],\"valid\",[],\"NV8\"],[[2936,2945],\"disallowed\"],[[2946,2947],\"valid\"],[[2948,2948],\"disallowed\"],[[2949,2954],\"valid\"],[[2955,2957],\"disallowed\"],[[2958,2960],\"valid\"],[[2961,2961],\"disallowed\"],[[2962,2965],\"valid\"],[[2966,2968],\"disallowed\"],[[2969,2970],\"valid\"],[[2971,2971],\"disallowed\"],[[2972,2972],\"valid\"],[[2973,2973],\"disallowed\"],[[2974,2975],\"valid\"],[[2976,2978],\"disallowed\"],[[2979,2980],\"valid\"],[[2981,2983],\"disallowed\"],[[2984,2986],\"valid\"],[[2987,2989],\"disallowed\"],[[2990,2997],\"valid\"],[[2998,2998],\"valid\"],[[2999,3001],\"valid\"],[[3002,3005],\"disallowed\"],[[3006,3010],\"valid\"],[[3011,3013],\"disallowed\"],[[3014,3016],\"valid\"],[[3017,3017],\"disallowed\"],[[3018,3021],\"valid\"],[[3022,3023],\"disallowed\"],[[3024,3024],\"valid\"],[[3025,3030],\"disallowed\"],[[3031,3031],\"valid\"],[[3032,3045],\"disallowed\"],[[3046,3046],\"valid\"],[[3047,3055],\"valid\"],[[3056,3058],\"valid\",[],\"NV8\"],[[3059,3066],\"valid\",[],\"NV8\"],[[3067,3071],\"disallowed\"],[[3072,3072],\"valid\"],[[3073,3075],\"valid\"],[[3076,3076],\"disallowed\"],[[3077,3084],\"valid\"],[[3085,3085],\"disallowed\"],[[3086,3088],\"valid\"],[[3089,3089],\"disallowed\"],[[3090,3112],\"valid\"],[[3113,3113],\"disallowed\"],[[3114,3123],\"valid\"],[[3124,3124],\"valid\"],[[3125,3129],\"valid\"],[[3130,3132],\"disallowed\"],[[3133,3133],\"valid\"],[[3134,3140],\"valid\"],[[3141,3141],\"disallowed\"],[[3142,3144],\"valid\"],[[3145,3145],\"disallowed\"],[[3146,3149],\"valid\"],[[3150,3156],\"disallowed\"],[[3157,3158],\"valid\"],[[3159,3159],\"disallowed\"],[[3160,3161],\"valid\"],[[3162,3162],\"valid\"],[[3163,3167],\"disallowed\"],[[3168,3169],\"valid\"],[[3170,3171],\"valid\"],[[3172,3173],\"disallowed\"],[[3174,3183],\"valid\"],[[3184,3191],\"disallowed\"],[[3192,3199],\"valid\",[],\"NV8\"],[[3200,3200],\"disallowed\"],[[3201,3201],\"valid\"],[[3202,3203],\"valid\"],[[3204,3204],\"disallowed\"],[[3205,3212],\"valid\"],[[3213,3213],\"disallowed\"],[[3214,3216],\"valid\"],[[3217,3217],\"disallowed\"],[[3218,3240],\"valid\"],[[3241,3241],\"disallowed\"],[[3242,3251],\"valid\"],[[3252,3252],\"disallowed\"],[[3253,3257],\"valid\"],[[3258,3259],\"disallowed\"],[[3260,3261],\"valid\"],[[3262,3268],\"valid\"],[[3269,3269],\"disallowed\"],[[3270,3272],\"valid\"],[[3273,3273],\"disallowed\"],[[3274,3277],\"valid\"],[[3278,3284],\"disallowed\"],[[3285,3286],\"valid\"],[[3287,3293],\"disallowed\"],[[3294,3294],\"valid\"],[[3295,3295],\"disallowed\"],[[3296,3297],\"valid\"],[[3298,3299],\"valid\"],[[3300,3301],\"disallowed\"],[[3302,3311],\"valid\"],[[3312,3312],\"disallowed\"],[[3313,3314],\"valid\"],[[3315,3328],\"disallowed\"],[[3329,3329],\"valid\"],[[3330,3331],\"valid\"],[[3332,3332],\"disallowed\"],[[3333,3340],\"valid\"],[[3341,3341],\"disallowed\"],[[3342,3344],\"valid\"],[[3345,3345],\"disallowed\"],[[3346,3368],\"valid\"],[[3369,3369],\"valid\"],[[3370,3385],\"valid\"],[[3386,3386],\"valid\"],[[3387,3388],\"disallowed\"],[[3389,3389],\"valid\"],[[3390,3395],\"valid\"],[[3396,3396],\"valid\"],[[3397,3397],\"disallowed\"],[[3398,3400],\"valid\"],[[3401,3401],\"disallowed\"],[[3402,3405],\"valid\"],[[3406,3406],\"valid\"],[[3407,3414],\"disallowed\"],[[3415,3415],\"valid\"],[[3416,3422],\"disallowed\"],[[3423,3423],\"valid\"],[[3424,3425],\"valid\"],[[3426,3427],\"valid\"],[[3428,3429],\"disallowed\"],[[3430,3439],\"valid\"],[[3440,3445],\"valid\",[],\"NV8\"],[[3446,3448],\"disallowed\"],[[3449,3449],\"valid\",[],\"NV8\"],[[3450,3455],\"valid\"],[[3456,3457],\"disallowed\"],[[3458,3459],\"valid\"],[[3460,3460],\"disallowed\"],[[3461,3478],\"valid\"],[[3479,3481],\"disallowed\"],[[3482,3505],\"valid\"],[[3506,3506],\"disallowed\"],[[3507,3515],\"valid\"],[[3516,3516],\"disallowed\"],[[3517,3517],\"valid\"],[[3518,3519],\"disallowed\"],[[3520,3526],\"valid\"],[[3527,3529],\"disallowed\"],[[3530,3530],\"valid\"],[[3531,3534],\"disallowed\"],[[3535,3540],\"valid\"],[[3541,3541],\"disallowed\"],[[3542,3542],\"valid\"],[[3543,3543],\"disallowed\"],[[3544,3551],\"valid\"],[[3552,3557],\"disallowed\"],[[3558,3567],\"valid\"],[[3568,3569],\"disallowed\"],[[3570,3571],\"valid\"],[[3572,3572],\"valid\",[],\"NV8\"],[[3573,3584],\"disallowed\"],[[3585,3634],\"valid\"],[[3635,3635],\"mapped\",[3661,3634]],[[3636,3642],\"valid\"],[[3643,3646],\"disallowed\"],[[3647,3647],\"valid\",[],\"NV8\"],[[3648,3662],\"valid\"],[[3663,3663],\"valid\",[],\"NV8\"],[[3664,3673],\"valid\"],[[3674,3675],\"valid\",[],\"NV8\"],[[3676,3712],\"disallowed\"],[[3713,3714],\"valid\"],[[3715,3715],\"disallowed\"],[[3716,3716],\"valid\"],[[3717,3718],\"disallowed\"],[[3719,3720],\"valid\"],[[3721,3721],\"disallowed\"],[[3722,3722],\"valid\"],[[3723,3724],\"disallowed\"],[[3725,3725],\"valid\"],[[3726,3731],\"disallowed\"],[[3732,3735],\"valid\"],[[3736,3736],\"disallowed\"],[[3737,3743],\"valid\"],[[3744,3744],\"disallowed\"],[[3745,3747],\"valid\"],[[3748,3748],\"disallowed\"],[[3749,3749],\"valid\"],[[3750,3750],\"disallowed\"],[[3751,3751],\"valid\"],[[3752,3753],\"disallowed\"],[[3754,3755],\"valid\"],[[3756,3756],\"disallowed\"],[[3757,3762],\"valid\"],[[3763,3763],\"mapped\",[3789,3762]],[[3764,3769],\"valid\"],[[3770,3770],\"disallowed\"],[[3771,3773],\"valid\"],[[3774,3775],\"disallowed\"],[[3776,3780],\"valid\"],[[3781,3781],\"disallowed\"],[[3782,3782],\"valid\"],[[3783,3783],\"disallowed\"],[[3784,3789],\"valid\"],[[3790,3791],\"disallowed\"],[[3792,3801],\"valid\"],[[3802,3803],\"disallowed\"],[[3804,3804],\"mapped\",[3755,3737]],[[3805,3805],\"mapped\",[3755,3745]],[[3806,3807],\"valid\"],[[3808,3839],\"disallowed\"],[[3840,3840],\"valid\"],[[3841,3850],\"valid\",[],\"NV8\"],[[3851,3851],\"valid\"],[[3852,3852],\"mapped\",[3851]],[[3853,3863],\"valid\",[],\"NV8\"],[[3864,3865],\"valid\"],[[3866,3871],\"valid\",[],\"NV8\"],[[3872,3881],\"valid\"],[[3882,3892],\"valid\",[],\"NV8\"],[[3893,3893],\"valid\"],[[3894,3894],\"valid\",[],\"NV8\"],[[3895,3895],\"valid\"],[[3896,3896],\"valid\",[],\"NV8\"],[[3897,3897],\"valid\"],[[3898,3901],\"valid\",[],\"NV8\"],[[3902,3906],\"valid\"],[[3907,3907],\"mapped\",[3906,4023]],[[3908,3911],\"valid\"],[[3912,3912],\"disallowed\"],[[3913,3916],\"valid\"],[[3917,3917],\"mapped\",[3916,4023]],[[3918,3921],\"valid\"],[[3922,3922],\"mapped\",[3921,4023]],[[3923,3926],\"valid\"],[[3927,3927],\"mapped\",[3926,4023]],[[3928,3931],\"valid\"],[[3932,3932],\"mapped\",[3931,4023]],[[3933,3944],\"valid\"],[[3945,3945],\"mapped\",[3904,4021]],[[3946,3946],\"valid\"],[[3947,3948],\"valid\"],[[3949,3952],\"disallowed\"],[[3953,3954],\"valid\"],[[3955,3955],\"mapped\",[3953,3954]],[[3956,3956],\"valid\"],[[3957,3957],\"mapped\",[3953,3956]],[[3958,3958],\"mapped\",[4018,3968]],[[3959,3959],\"mapped\",[4018,3953,3968]],[[3960,3960],\"mapped\",[4019,3968]],[[3961,3961],\"mapped\",[4019,3953,3968]],[[3962,3968],\"valid\"],[[3969,3969],\"mapped\",[3953,3968]],[[3970,3972],\"valid\"],[[3973,3973],\"valid\",[],\"NV8\"],[[3974,3979],\"valid\"],[[3980,3983],\"valid\"],[[3984,3986],\"valid\"],[[3987,3987],\"mapped\",[3986,4023]],[[3988,3989],\"valid\"],[[3990,3990],\"valid\"],[[3991,3991],\"valid\"],[[3992,3992],\"disallowed\"],[[3993,3996],\"valid\"],[[3997,3997],\"mapped\",[3996,4023]],[[3998,4001],\"valid\"],[[4002,4002],\"mapped\",[4001,4023]],[[4003,4006],\"valid\"],[[4007,4007],\"mapped\",[4006,4023]],[[4008,4011],\"valid\"],[[4012,4012],\"mapped\",[4011,4023]],[[4013,4013],\"valid\"],[[4014,4016],\"valid\"],[[4017,4023],\"valid\"],[[4024,4024],\"valid\"],[[4025,4025],\"mapped\",[3984,4021]],[[4026,4028],\"valid\"],[[4029,4029],\"disallowed\"],[[4030,4037],\"valid\",[],\"NV8\"],[[4038,4038],\"valid\"],[[4039,4044],\"valid\",[],\"NV8\"],[[4045,4045],\"disallowed\"],[[4046,4046],\"valid\",[],\"NV8\"],[[4047,4047],\"valid\",[],\"NV8\"],[[4048,4049],\"valid\",[],\"NV8\"],[[4050,4052],\"valid\",[],\"NV8\"],[[4053,4056],\"valid\",[],\"NV8\"],[[4057,4058],\"valid\",[],\"NV8\"],[[4059,4095],\"disallowed\"],[[4096,4129],\"valid\"],[[4130,4130],\"valid\"],[[4131,4135],\"valid\"],[[4136,4136],\"valid\"],[[4137,4138],\"valid\"],[[4139,4139],\"valid\"],[[4140,4146],\"valid\"],[[4147,4149],\"valid\"],[[4150,4153],\"valid\"],[[4154,4159],\"valid\"],[[4160,4169],\"valid\"],[[4170,4175],\"valid\",[],\"NV8\"],[[4176,4185],\"valid\"],[[4186,4249],\"valid\"],[[4250,4253],\"valid\"],[[4254,4255],\"valid\",[],\"NV8\"],[[4256,4293],\"disallowed\"],[[4294,4294],\"disallowed\"],[[4295,4295],\"mapped\",[11559]],[[4296,4300],\"disallowed\"],[[4301,4301],\"mapped\",[11565]],[[4302,4303],\"disallowed\"],[[4304,4342],\"valid\"],[[4343,4344],\"valid\"],[[4345,4346],\"valid\"],[[4347,4347],\"valid\",[],\"NV8\"],[[4348,4348],\"mapped\",[4316]],[[4349,4351],\"valid\"],[[4352,4441],\"valid\",[],\"NV8\"],[[4442,4446],\"valid\",[],\"NV8\"],[[4447,4448],\"disallowed\"],[[4449,4514],\"valid\",[],\"NV8\"],[[4515,4519],\"valid\",[],\"NV8\"],[[4520,4601],\"valid\",[],\"NV8\"],[[4602,4607],\"valid\",[],\"NV8\"],[[4608,4614],\"valid\"],[[4615,4615],\"valid\"],[[4616,4678],\"valid\"],[[4679,4679],\"valid\"],[[4680,4680],\"valid\"],[[4681,4681],\"disallowed\"],[[4682,4685],\"valid\"],[[4686,4687],\"disallowed\"],[[4688,4694],\"valid\"],[[4695,4695],\"disallowed\"],[[4696,4696],\"valid\"],[[4697,4697],\"disallowed\"],[[4698,4701],\"valid\"],[[4702,4703],\"disallowed\"],[[4704,4742],\"valid\"],[[4743,4743],\"valid\"],[[4744,4744],\"valid\"],[[4745,4745],\"disallowed\"],[[4746,4749],\"valid\"],[[4750,4751],\"disallowed\"],[[4752,4782],\"valid\"],[[4783,4783],\"valid\"],[[4784,4784],\"valid\"],[[4785,4785],\"disallowed\"],[[4786,4789],\"valid\"],[[4790,4791],\"disallowed\"],[[4792,4798],\"valid\"],[[4799,4799],\"disallowed\"],[[4800,4800],\"valid\"],[[4801,4801],\"disallowed\"],[[4802,4805],\"valid\"],[[4806,4807],\"disallowed\"],[[4808,4814],\"valid\"],[[4815,4815],\"valid\"],[[4816,4822],\"valid\"],[[4823,4823],\"disallowed\"],[[4824,4846],\"valid\"],[[4847,4847],\"valid\"],[[4848,4878],\"valid\"],[[4879,4879],\"valid\"],[[4880,4880],\"valid\"],[[4881,4881],\"disallowed\"],[[4882,4885],\"valid\"],[[4886,4887],\"disallowed\"],[[4888,4894],\"valid\"],[[4895,4895],\"valid\"],[[4896,4934],\"valid\"],[[4935,4935],\"valid\"],[[4936,4954],\"valid\"],[[4955,4956],\"disallowed\"],[[4957,4958],\"valid\"],[[4959,4959],\"valid\"],[[4960,4960],\"valid\",[],\"NV8\"],[[4961,4988],\"valid\",[],\"NV8\"],[[4989,4991],\"disallowed\"],[[4992,5007],\"valid\"],[[5008,5017],\"valid\",[],\"NV8\"],[[5018,5023],\"disallowed\"],[[5024,5108],\"valid\"],[[5109,5109],\"valid\"],[[5110,5111],\"disallowed\"],[[5112,5112],\"mapped\",[5104]],[[5113,5113],\"mapped\",[5105]],[[5114,5114],\"mapped\",[5106]],[[5115,5115],\"mapped\",[5107]],[[5116,5116],\"mapped\",[5108]],[[5117,5117],\"mapped\",[5109]],[[5118,5119],\"disallowed\"],[[5120,5120],\"valid\",[],\"NV8\"],[[5121,5740],\"valid\"],[[5741,5742],\"valid\",[],\"NV8\"],[[5743,5750],\"valid\"],[[5751,5759],\"valid\"],[[5760,5760],\"disallowed\"],[[5761,5786],\"valid\"],[[5787,5788],\"valid\",[],\"NV8\"],[[5789,5791],\"disallowed\"],[[5792,5866],\"valid\"],[[5867,5872],\"valid\",[],\"NV8\"],[[5873,5880],\"valid\"],[[5881,5887],\"disallowed\"],[[5888,5900],\"valid\"],[[5901,5901],\"disallowed\"],[[5902,5908],\"valid\"],[[5909,5919],\"disallowed\"],[[5920,5940],\"valid\"],[[5941,5942],\"valid\",[],\"NV8\"],[[5943,5951],\"disallowed\"],[[5952,5971],\"valid\"],[[5972,5983],\"disallowed\"],[[5984,5996],\"valid\"],[[5997,5997],\"disallowed\"],[[5998,6000],\"valid\"],[[6001,6001],\"disallowed\"],[[6002,6003],\"valid\"],[[6004,6015],\"disallowed\"],[[6016,6067],\"valid\"],[[6068,6069],\"disallowed\"],[[6070,6099],\"valid\"],[[6100,6102],\"valid\",[],\"NV8\"],[[6103,6103],\"valid\"],[[6104,6107],\"valid\",[],\"NV8\"],[[6108,6108],\"valid\"],[[6109,6109],\"valid\"],[[6110,6111],\"disallowed\"],[[6112,6121],\"valid\"],[[6122,6127],\"disallowed\"],[[6128,6137],\"valid\",[],\"NV8\"],[[6138,6143],\"disallowed\"],[[6144,6149],\"valid\",[],\"NV8\"],[[6150,6150],\"disallowed\"],[[6151,6154],\"valid\",[],\"NV8\"],[[6155,6157],\"ignored\"],[[6158,6158],\"disallowed\"],[[6159,6159],\"disallowed\"],[[6160,6169],\"valid\"],[[6170,6175],\"disallowed\"],[[6176,6263],\"valid\"],[[6264,6271],\"disallowed\"],[[6272,6313],\"valid\"],[[6314,6314],\"valid\"],[[6315,6319],\"disallowed\"],[[6320,6389],\"valid\"],[[6390,6399],\"disallowed\"],[[6400,6428],\"valid\"],[[6429,6430],\"valid\"],[[6431,6431],\"disallowed\"],[[6432,6443],\"valid\"],[[6444,6447],\"disallowed\"],[[6448,6459],\"valid\"],[[6460,6463],\"disallowed\"],[[6464,6464],\"valid\",[],\"NV8\"],[[6465,6467],\"disallowed\"],[[6468,6469],\"valid\",[],\"NV8\"],[[6470,6509],\"valid\"],[[6510,6511],\"disallowed\"],[[6512,6516],\"valid\"],[[6517,6527],\"disallowed\"],[[6528,6569],\"valid\"],[[6570,6571],\"valid\"],[[6572,6575],\"disallowed\"],[[6576,6601],\"valid\"],[[6602,6607],\"disallowed\"],[[6608,6617],\"valid\"],[[6618,6618],\"valid\",[],\"XV8\"],[[6619,6621],\"disallowed\"],[[6622,6623],\"valid\",[],\"NV8\"],[[6624,6655],\"valid\",[],\"NV8\"],[[6656,6683],\"valid\"],[[6684,6685],\"disallowed\"],[[6686,6687],\"valid\",[],\"NV8\"],[[6688,6750],\"valid\"],[[6751,6751],\"disallowed\"],[[6752,6780],\"valid\"],[[6781,6782],\"disallowed\"],[[6783,6793],\"valid\"],[[6794,6799],\"disallowed\"],[[6800,6809],\"valid\"],[[6810,6815],\"disallowed\"],[[6816,6822],\"valid\",[],\"NV8\"],[[6823,6823],\"valid\"],[[6824,6829],\"valid\",[],\"NV8\"],[[6830,6831],\"disallowed\"],[[6832,6845],\"valid\"],[[6846,6846],\"valid\",[],\"NV8\"],[[6847,6911],\"disallowed\"],[[6912,6987],\"valid\"],[[6988,6991],\"disallowed\"],[[6992,7001],\"valid\"],[[7002,7018],\"valid\",[],\"NV8\"],[[7019,7027],\"valid\"],[[7028,7036],\"valid\",[],\"NV8\"],[[7037,7039],\"disallowed\"],[[7040,7082],\"valid\"],[[7083,7085],\"valid\"],[[7086,7097],\"valid\"],[[7098,7103],\"valid\"],[[7104,7155],\"valid\"],[[7156,7163],\"disallowed\"],[[7164,7167],\"valid\",[],\"NV8\"],[[7168,7223],\"valid\"],[[7224,7226],\"disallowed\"],[[7227,7231],\"valid\",[],\"NV8\"],[[7232,7241],\"valid\"],[[7242,7244],\"disallowed\"],[[7245,7293],\"valid\"],[[7294,7295],\"valid\",[],\"NV8\"],[[7296,7359],\"disallowed\"],[[7360,7367],\"valid\",[],\"NV8\"],[[7368,7375],\"disallowed\"],[[7376,7378],\"valid\"],[[7379,7379],\"valid\",[],\"NV8\"],[[7380,7410],\"valid\"],[[7411,7414],\"valid\"],[[7415,7415],\"disallowed\"],[[7416,7417],\"valid\"],[[7418,7423],\"disallowed\"],[[7424,7467],\"valid\"],[[7468,7468],\"mapped\",[97]],[[7469,7469],\"mapped\",[230]],[[7470,7470],\"mapped\",[98]],[[7471,7471],\"valid\"],[[7472,7472],\"mapped\",[100]],[[7473,7473],\"mapped\",[101]],[[7474,7474],\"mapped\",[477]],[[7475,7475],\"mapped\",[103]],[[7476,7476],\"mapped\",[104]],[[7477,7477],\"mapped\",[105]],[[7478,7478],\"mapped\",[106]],[[7479,7479],\"mapped\",[107]],[[7480,7480],\"mapped\",[108]],[[7481,7481],\"mapped\",[109]],[[7482,7482],\"mapped\",[110]],[[7483,7483],\"valid\"],[[7484,7484],\"mapped\",[111]],[[7485,7485],\"mapped\",[547]],[[7486,7486],\"mapped\",[112]],[[7487,7487],\"mapped\",[114]],[[7488,7488],\"mapped\",[116]],[[7489,7489],\"mapped\",[117]],[[7490,7490],\"mapped\",[119]],[[7491,7491],\"mapped\",[97]],[[7492,7492],\"mapped\",[592]],[[7493,7493],\"mapped\",[593]],[[7494,7494],\"mapped\",[7426]],[[7495,7495],\"mapped\",[98]],[[7496,7496],\"mapped\",[100]],[[7497,7497],\"mapped\",[101]],[[7498,7498],\"mapped\",[601]],[[7499,7499],\"mapped\",[603]],[[7500,7500],\"mapped\",[604]],[[7501,7501],\"mapped\",[103]],[[7502,7502],\"valid\"],[[7503,7503],\"mapped\",[107]],[[7504,7504],\"mapped\",[109]],[[7505,7505],\"mapped\",[331]],[[7506,7506],\"mapped\",[111]],[[7507,7507],\"mapped\",[596]],[[7508,7508],\"mapped\",[7446]],[[7509,7509],\"mapped\",[7447]],[[7510,7510],\"mapped\",[112]],[[7511,7511],\"mapped\",[116]],[[7512,7512],\"mapped\",[117]],[[7513,7513],\"mapped\",[7453]],[[7514,7514],\"mapped\",[623]],[[7515,7515],\"mapped\",[118]],[[7516,7516],\"mapped\",[7461]],[[7517,7517],\"mapped\",[946]],[[7518,7518],\"mapped\",[947]],[[7519,7519],\"mapped\",[948]],[[7520,7520],\"mapped\",[966]],[[7521,7521],\"mapped\",[967]],[[7522,7522],\"mapped\",[105]],[[7523,7523],\"mapped\",[114]],[[7524,7524],\"mapped\",[117]],[[7525,7525],\"mapped\",[118]],[[7526,7526],\"mapped\",[946]],[[7527,7527],\"mapped\",[947]],[[7528,7528],\"mapped\",[961]],[[7529,7529],\"mapped\",[966]],[[7530,7530],\"mapped\",[967]],[[7531,7531],\"valid\"],[[7532,7543],\"valid\"],[[7544,7544],\"mapped\",[1085]],[[7545,7578],\"valid\"],[[7579,7579],\"mapped\",[594]],[[7580,7580],\"mapped\",[99]],[[7581,7581],\"mapped\",[597]],[[7582,7582],\"mapped\",[240]],[[7583,7583],\"mapped\",[604]],[[7584,7584],\"mapped\",[102]],[[7585,7585],\"mapped\",[607]],[[7586,7586],\"mapped\",[609]],[[7587,7587],\"mapped\",[613]],[[7588,7588],\"mapped\",[616]],[[7589,7589],\"mapped\",[617]],[[7590,7590],\"mapped\",[618]],[[7591,7591],\"mapped\",[7547]],[[7592,7592],\"mapped\",[669]],[[7593,7593],\"mapped\",[621]],[[7594,7594],\"mapped\",[7557]],[[7595,7595],\"mapped\",[671]],[[7596,7596],\"mapped\",[625]],[[7597,7597],\"mapped\",[624]],[[7598,7598],\"mapped\",[626]],[[7599,7599],\"mapped\",[627]],[[7600,7600],\"mapped\",[628]],[[7601,7601],\"mapped\",[629]],[[7602,7602],\"mapped\",[632]],[[7603,7603],\"mapped\",[642]],[[7604,7604],\"mapped\",[643]],[[7605,7605],\"mapped\",[427]],[[7606,7606],\"mapped\",[649]],[[7607,7607],\"mapped\",[650]],[[7608,7608],\"mapped\",[7452]],[[7609,7609],\"mapped\",[651]],[[7610,7610],\"mapped\",[652]],[[7611,7611],\"mapped\",[122]],[[7612,7612],\"mapped\",[656]],[[7613,7613],\"mapped\",[657]],[[7614,7614],\"mapped\",[658]],[[7615,7615],\"mapped\",[952]],[[7616,7619],\"valid\"],[[7620,7626],\"valid\"],[[7627,7654],\"valid\"],[[7655,7669],\"valid\"],[[7670,7675],\"disallowed\"],[[7676,7676],\"valid\"],[[7677,7677],\"valid\"],[[7678,7679],\"valid\"],[[7680,7680],\"mapped\",[7681]],[[7681,7681],\"valid\"],[[7682,7682],\"mapped\",[7683]],[[7683,7683],\"valid\"],[[7684,7684],\"mapped\",[7685]],[[7685,7685],\"valid\"],[[7686,7686],\"mapped\",[7687]],[[7687,7687],\"valid\"],[[7688,7688],\"mapped\",[7689]],[[7689,7689],\"valid\"],[[7690,7690],\"mapped\",[7691]],[[7691,7691],\"valid\"],[[7692,7692],\"mapped\",[7693]],[[7693,7693],\"valid\"],[[7694,7694],\"mapped\",[7695]],[[7695,7695],\"valid\"],[[7696,7696],\"mapped\",[7697]],[[7697,7697],\"valid\"],[[7698,7698],\"mapped\",[7699]],[[7699,7699],\"valid\"],[[7700,7700],\"mapped\",[7701]],[[7701,7701],\"valid\"],[[7702,7702],\"mapped\",[7703]],[[7703,7703],\"valid\"],[[7704,7704],\"mapped\",[7705]],[[7705,7705],\"valid\"],[[7706,7706],\"mapped\",[7707]],[[7707,7707],\"valid\"],[[7708,7708],\"mapped\",[7709]],[[7709,7709],\"valid\"],[[7710,7710],\"mapped\",[7711]],[[7711,7711],\"valid\"],[[7712,7712],\"mapped\",[7713]],[[7713,7713],\"valid\"],[[7714,7714],\"mapped\",[7715]],[[7715,7715],\"valid\"],[[7716,7716],\"mapped\",[7717]],[[7717,7717],\"valid\"],[[7718,7718],\"mapped\",[7719]],[[7719,7719],\"valid\"],[[7720,7720],\"mapped\",[7721]],[[7721,7721],\"valid\"],[[7722,7722],\"mapped\",[7723]],[[7723,7723],\"valid\"],[[7724,7724],\"mapped\",[7725]],[[7725,7725],\"valid\"],[[7726,7726],\"mapped\",[7727]],[[7727,7727],\"valid\"],[[7728,7728],\"mapped\",[7729]],[[7729,7729],\"valid\"],[[7730,7730],\"mapped\",[7731]],[[7731,7731],\"valid\"],[[7732,7732],\"mapped\",[7733]],[[7733,7733],\"valid\"],[[7734,7734],\"mapped\",[7735]],[[7735,7735],\"valid\"],[[7736,7736],\"mapped\",[7737]],[[7737,7737],\"valid\"],[[7738,7738],\"mapped\",[7739]],[[7739,7739],\"valid\"],[[7740,7740],\"mapped\",[7741]],[[7741,7741],\"valid\"],[[7742,7742],\"mapped\",[7743]],[[7743,7743],\"valid\"],[[7744,7744],\"mapped\",[7745]],[[7745,7745],\"valid\"],[[7746,7746],\"mapped\",[7747]],[[7747,7747],\"valid\"],[[7748,7748],\"mapped\",[7749]],[[7749,7749],\"valid\"],[[7750,7750],\"mapped\",[7751]],[[7751,7751],\"valid\"],[[7752,7752],\"mapped\",[7753]],[[7753,7753],\"valid\"],[[7754,7754],\"mapped\",[7755]],[[7755,7755],\"valid\"],[[7756,7756],\"mapped\",[7757]],[[7757,7757],\"valid\"],[[7758,7758],\"mapped\",[7759]],[[7759,7759],\"valid\"],[[7760,7760],\"mapped\",[7761]],[[7761,7761],\"valid\"],[[7762,7762],\"mapped\",[7763]],[[7763,7763],\"valid\"],[[7764,7764],\"mapped\",[7765]],[[7765,7765],\"valid\"],[[7766,7766],\"mapped\",[7767]],[[7767,7767],\"valid\"],[[7768,7768],\"mapped\",[7769]],[[7769,7769],\"valid\"],[[7770,7770],\"mapped\",[7771]],[[7771,7771],\"valid\"],[[7772,7772],\"mapped\",[7773]],[[7773,7773],\"valid\"],[[7774,7774],\"mapped\",[7775]],[[7775,7775],\"valid\"],[[7776,7776],\"mapped\",[7777]],[[7777,7777],\"valid\"],[[7778,7778],\"mapped\",[7779]],[[7779,7779],\"valid\"],[[7780,7780],\"mapped\",[7781]],[[7781,7781],\"valid\"],[[7782,7782],\"mapped\",[7783]],[[7783,7783],\"valid\"],[[7784,7784],\"mapped\",[7785]],[[7785,7785],\"valid\"],[[7786,7786],\"mapped\",[7787]],[[7787,7787],\"valid\"],[[7788,7788],\"mapped\",[7789]],[[7789,7789],\"valid\"],[[7790,7790],\"mapped\",[7791]],[[7791,7791],\"valid\"],[[7792,7792],\"mapped\",[7793]],[[7793,7793],\"valid\"],[[7794,7794],\"mapped\",[7795]],[[7795,7795],\"valid\"],[[7796,7796],\"mapped\",[7797]],[[7797,7797],\"valid\"],[[7798,7798],\"mapped\",[7799]],[[7799,7799],\"valid\"],[[7800,7800],\"mapped\",[7801]],[[7801,7801],\"valid\"],[[7802,7802],\"mapped\",[7803]],[[7803,7803],\"valid\"],[[7804,7804],\"mapped\",[7805]],[[7805,7805],\"valid\"],[[7806,7806],\"mapped\",[7807]],[[7807,7807],\"valid\"],[[7808,7808],\"mapped\",[7809]],[[7809,7809],\"valid\"],[[7810,7810],\"mapped\",[7811]],[[7811,7811],\"valid\"],[[7812,7812],\"mapped\",[7813]],[[7813,7813],\"valid\"],[[7814,7814],\"mapped\",[7815]],[[7815,7815],\"valid\"],[[7816,7816],\"mapped\",[7817]],[[7817,7817],\"valid\"],[[7818,7818],\"mapped\",[7819]],[[7819,7819],\"valid\"],[[7820,7820],\"mapped\",[7821]],[[7821,7821],\"valid\"],[[7822,7822],\"mapped\",[7823]],[[7823,7823],\"valid\"],[[7824,7824],\"mapped\",[7825]],[[7825,7825],\"valid\"],[[7826,7826],\"mapped\",[7827]],[[7827,7827],\"valid\"],[[7828,7828],\"mapped\",[7829]],[[7829,7833],\"valid\"],[[7834,7834],\"mapped\",[97,702]],[[7835,7835],\"mapped\",[7777]],[[7836,7837],\"valid\"],[[7838,7838],\"mapped\",[115,115]],[[7839,7839],\"valid\"],[[7840,7840],\"mapped\",[7841]],[[7841,7841],\"valid\"],[[7842,7842],\"mapped\",[7843]],[[7843,7843],\"valid\"],[[7844,7844],\"mapped\",[7845]],[[7845,7845],\"valid\"],[[7846,7846],\"mapped\",[7847]],[[7847,7847],\"valid\"],[[7848,7848],\"mapped\",[7849]],[[7849,7849],\"valid\"],[[7850,7850],\"mapped\",[7851]],[[7851,7851],\"valid\"],[[7852,7852],\"mapped\",[7853]],[[7853,7853],\"valid\"],[[7854,7854],\"mapped\",[7855]],[[7855,7855],\"valid\"],[[7856,7856],\"mapped\",[7857]],[[7857,7857],\"valid\"],[[7858,7858],\"mapped\",[7859]],[[7859,7859],\"valid\"],[[7860,7860],\"mapped\",[7861]],[[7861,7861],\"valid\"],[[7862,7862],\"mapped\",[7863]],[[7863,7863],\"valid\"],[[7864,7864],\"mapped\",[7865]],[[7865,7865],\"valid\"],[[7866,7866],\"mapped\",[7867]],[[7867,7867],\"valid\"],[[7868,7868],\"mapped\",[7869]],[[7869,7869],\"valid\"],[[7870,7870],\"mapped\",[7871]],[[7871,7871],\"valid\"],[[7872,7872],\"mapped\",[7873]],[[7873,7873],\"valid\"],[[7874,7874],\"mapped\",[7875]],[[7875,7875],\"valid\"],[[7876,7876],\"mapped\",[7877]],[[7877,7877],\"valid\"],[[7878,7878],\"mapped\",[7879]],[[7879,7879],\"valid\"],[[7880,7880],\"mapped\",[7881]],[[7881,7881],\"valid\"],[[7882,7882],\"mapped\",[7883]],[[7883,7883],\"valid\"],[[7884,7884],\"mapped\",[7885]],[[7885,7885],\"valid\"],[[7886,7886],\"mapped\",[7887]],[[7887,7887],\"valid\"],[[7888,7888],\"mapped\",[7889]],[[7889,7889],\"valid\"],[[7890,7890],\"mapped\",[7891]],[[7891,7891],\"valid\"],[[7892,7892],\"mapped\",[7893]],[[7893,7893],\"valid\"],[[7894,7894],\"mapped\",[7895]],[[7895,7895],\"valid\"],[[7896,7896],\"mapped\",[7897]],[[7897,7897],\"valid\"],[[7898,7898],\"mapped\",[7899]],[[7899,7899],\"valid\"],[[7900,7900],\"mapped\",[7901]],[[7901,7901],\"valid\"],[[7902,7902],\"mapped\",[7903]],[[7903,7903],\"valid\"],[[7904,7904],\"mapped\",[7905]],[[7905,7905],\"valid\"],[[7906,7906],\"mapped\",[7907]],[[7907,7907],\"valid\"],[[7908,7908],\"mapped\",[7909]],[[7909,7909],\"valid\"],[[7910,7910],\"mapped\",[7911]],[[7911,7911],\"valid\"],[[7912,7912],\"mapped\",[7913]],[[7913,7913],\"valid\"],[[7914,7914],\"mapped\",[7915]],[[7915,7915],\"valid\"],[[7916,7916],\"mapped\",[7917]],[[7917,7917],\"valid\"],[[7918,7918],\"mapped\",[7919]],[[7919,7919],\"valid\"],[[7920,7920],\"mapped\",[7921]],[[7921,7921],\"valid\"],[[7922,7922],\"mapped\",[7923]],[[7923,7923],\"valid\"],[[7924,7924],\"mapped\",[7925]],[[7925,7925],\"valid\"],[[7926,7926],\"mapped\",[7927]],[[7927,7927],\"valid\"],[[7928,7928],\"mapped\",[7929]],[[7929,7929],\"valid\"],[[7930,7930],\"mapped\",[7931]],[[7931,7931],\"valid\"],[[7932,7932],\"mapped\",[7933]],[[7933,7933],\"valid\"],[[7934,7934],\"mapped\",[7935]],[[7935,7935],\"valid\"],[[7936,7943],\"valid\"],[[7944,7944],\"mapped\",[7936]],[[7945,7945],\"mapped\",[7937]],[[7946,7946],\"mapped\",[7938]],[[7947,7947],\"mapped\",[7939]],[[7948,7948],\"mapped\",[7940]],[[7949,7949],\"mapped\",[7941]],[[7950,7950],\"mapped\",[7942]],[[7951,7951],\"mapped\",[7943]],[[7952,7957],\"valid\"],[[7958,7959],\"disallowed\"],[[7960,7960],\"mapped\",[7952]],[[7961,7961],\"mapped\",[7953]],[[7962,7962],\"mapped\",[7954]],[[7963,7963],\"mapped\",[7955]],[[7964,7964],\"mapped\",[7956]],[[7965,7965],\"mapped\",[7957]],[[7966,7967],\"disallowed\"],[[7968,7975],\"valid\"],[[7976,7976],\"mapped\",[7968]],[[7977,7977],\"mapped\",[7969]],[[7978,7978],\"mapped\",[7970]],[[7979,7979],\"mapped\",[7971]],[[7980,7980],\"mapped\",[7972]],[[7981,7981],\"mapped\",[7973]],[[7982,7982],\"mapped\",[7974]],[[7983,7983],\"mapped\",[7975]],[[7984,7991],\"valid\"],[[7992,7992],\"mapped\",[7984]],[[7993,7993],\"mapped\",[7985]],[[7994,7994],\"mapped\",[7986]],[[7995,7995],\"mapped\",[7987]],[[7996,7996],\"mapped\",[7988]],[[7997,7997],\"mapped\",[7989]],[[7998,7998],\"mapped\",[7990]],[[7999,7999],\"mapped\",[7991]],[[8000,8005],\"valid\"],[[8006,8007],\"disallowed\"],[[8008,8008],\"mapped\",[8000]],[[8009,8009],\"mapped\",[8001]],[[8010,8010],\"mapped\",[8002]],[[8011,8011],\"mapped\",[8003]],[[8012,8012],\"mapped\",[8004]],[[8013,8013],\"mapped\",[8005]],[[8014,8015],\"disallowed\"],[[8016,8023],\"valid\"],[[8024,8024],\"disallowed\"],[[8025,8025],\"mapped\",[8017]],[[8026,8026],\"disallowed\"],[[8027,8027],\"mapped\",[8019]],[[8028,8028],\"disallowed\"],[[8029,8029],\"mapped\",[8021]],[[8030,8030],\"disallowed\"],[[8031,8031],\"mapped\",[8023]],[[8032,8039],\"valid\"],[[8040,8040],\"mapped\",[8032]],[[8041,8041],\"mapped\",[8033]],[[8042,8042],\"mapped\",[8034]],[[8043,8043],\"mapped\",[8035]],[[8044,8044],\"mapped\",[8036]],[[8045,8045],\"mapped\",[8037]],[[8046,8046],\"mapped\",[8038]],[[8047,8047],\"mapped\",[8039]],[[8048,8048],\"valid\"],[[8049,8049],\"mapped\",[940]],[[8050,8050],\"valid\"],[[8051,8051],\"mapped\",[941]],[[8052,8052],\"valid\"],[[8053,8053],\"mapped\",[942]],[[8054,8054],\"valid\"],[[8055,8055],\"mapped\",[943]],[[8056,8056],\"valid\"],[[8057,8057],\"mapped\",[972]],[[8058,8058],\"valid\"],[[8059,8059],\"mapped\",[973]],[[8060,8060],\"valid\"],[[8061,8061],\"mapped\",[974]],[[8062,8063],\"disallowed\"],[[8064,8064],\"mapped\",[7936,953]],[[8065,8065],\"mapped\",[7937,953]],[[8066,8066],\"mapped\",[7938,953]],[[8067,8067],\"mapped\",[7939,953]],[[8068,8068],\"mapped\",[7940,953]],[[8069,8069],\"mapped\",[7941,953]],[[8070,8070],\"mapped\",[7942,953]],[[8071,8071],\"mapped\",[7943,953]],[[8072,8072],\"mapped\",[7936,953]],[[8073,8073],\"mapped\",[7937,953]],[[8074,8074],\"mapped\",[7938,953]],[[8075,8075],\"mapped\",[7939,953]],[[8076,8076],\"mapped\",[7940,953]],[[8077,8077],\"mapped\",[7941,953]],[[8078,8078],\"mapped\",[7942,953]],[[8079,8079],\"mapped\",[7943,953]],[[8080,8080],\"mapped\",[7968,953]],[[8081,8081],\"mapped\",[7969,953]],[[8082,8082],\"mapped\",[7970,953]],[[8083,8083],\"mapped\",[7971,953]],[[8084,8084],\"mapped\",[7972,953]],[[8085,8085],\"mapped\",[7973,953]],[[8086,8086],\"mapped\",[7974,953]],[[8087,8087],\"mapped\",[7975,953]],[[8088,8088],\"mapped\",[7968,953]],[[8089,8089],\"mapped\",[7969,953]],[[8090,8090],\"mapped\",[7970,953]],[[8091,8091],\"mapped\",[7971,953]],[[8092,8092],\"mapped\",[7972,953]],[[8093,8093],\"mapped\",[7973,953]],[[8094,8094],\"mapped\",[7974,953]],[[8095,8095],\"mapped\",[7975,953]],[[8096,8096],\"mapped\",[8032,953]],[[8097,8097],\"mapped\",[8033,953]],[[8098,8098],\"mapped\",[8034,953]],[[8099,8099],\"mapped\",[8035,953]],[[8100,8100],\"mapped\",[8036,953]],[[8101,8101],\"mapped\",[8037,953]],[[8102,8102],\"mapped\",[8038,953]],[[8103,8103],\"mapped\",[8039,953]],[[8104,8104],\"mapped\",[8032,953]],[[8105,8105],\"mapped\",[8033,953]],[[8106,8106],\"mapped\",[8034,953]],[[8107,8107],\"mapped\",[8035,953]],[[8108,8108],\"mapped\",[8036,953]],[[8109,8109],\"mapped\",[8037,953]],[[8110,8110],\"mapped\",[8038,953]],[[8111,8111],\"mapped\",[8039,953]],[[8112,8113],\"valid\"],[[8114,8114],\"mapped\",[8048,953]],[[8115,8115],\"mapped\",[945,953]],[[8116,8116],\"mapped\",[940,953]],[[8117,8117],\"disallowed\"],[[8118,8118],\"valid\"],[[8119,8119],\"mapped\",[8118,953]],[[8120,8120],\"mapped\",[8112]],[[8121,8121],\"mapped\",[8113]],[[8122,8122],\"mapped\",[8048]],[[8123,8123],\"mapped\",[940]],[[8124,8124],\"mapped\",[945,953]],[[8125,8125],\"disallowed_STD3_mapped\",[32,787]],[[8126,8126],\"mapped\",[953]],[[8127,8127],\"disallowed_STD3_mapped\",[32,787]],[[8128,8128],\"disallowed_STD3_mapped\",[32,834]],[[8129,8129],\"disallowed_STD3_mapped\",[32,776,834]],[[8130,8130],\"mapped\",[8052,953]],[[8131,8131],\"mapped\",[951,953]],[[8132,8132],\"mapped\",[942,953]],[[8133,8133],\"disallowed\"],[[8134,8134],\"valid\"],[[8135,8135],\"mapped\",[8134,953]],[[8136,8136],\"mapped\",[8050]],[[8137,8137],\"mapped\",[941]],[[8138,8138],\"mapped\",[8052]],[[8139,8139],\"mapped\",[942]],[[8140,8140],\"mapped\",[951,953]],[[8141,8141],\"disallowed_STD3_mapped\",[32,787,768]],[[8142,8142],\"disallowed_STD3_mapped\",[32,787,769]],[[8143,8143],\"disallowed_STD3_mapped\",[32,787,834]],[[8144,8146],\"valid\"],[[8147,8147],\"mapped\",[912]],[[8148,8149],\"disallowed\"],[[8150,8151],\"valid\"],[[8152,8152],\"mapped\",[8144]],[[8153,8153],\"mapped\",[8145]],[[8154,8154],\"mapped\",[8054]],[[8155,8155],\"mapped\",[943]],[[8156,8156],\"disallowed\"],[[8157,8157],\"disallowed_STD3_mapped\",[32,788,768]],[[8158,8158],\"disallowed_STD3_mapped\",[32,788,769]],[[8159,8159],\"disallowed_STD3_mapped\",[32,788,834]],[[8160,8162],\"valid\"],[[8163,8163],\"mapped\",[944]],[[8164,8167],\"valid\"],[[8168,8168],\"mapped\",[8160]],[[8169,8169],\"mapped\",[8161]],[[8170,8170],\"mapped\",[8058]],[[8171,8171],\"mapped\",[973]],[[8172,8172],\"mapped\",[8165]],[[8173,8173],\"disallowed_STD3_mapped\",[32,776,768]],[[8174,8174],\"disallowed_STD3_mapped\",[32,776,769]],[[8175,8175],\"disallowed_STD3_mapped\",[96]],[[8176,8177],\"disallowed\"],[[8178,8178],\"mapped\",[8060,953]],[[8179,8179],\"mapped\",[969,953]],[[8180,8180],\"mapped\",[974,953]],[[8181,8181],\"disallowed\"],[[8182,8182],\"valid\"],[[8183,8183],\"mapped\",[8182,953]],[[8184,8184],\"mapped\",[8056]],[[8185,8185],\"mapped\",[972]],[[8186,8186],\"mapped\",[8060]],[[8187,8187],\"mapped\",[974]],[[8188,8188],\"mapped\",[969,953]],[[8189,8189],\"disallowed_STD3_mapped\",[32,769]],[[8190,8190],\"disallowed_STD3_mapped\",[32,788]],[[8191,8191],\"disallowed\"],[[8192,8202],\"disallowed_STD3_mapped\",[32]],[[8203,8203],\"ignored\"],[[8204,8205],\"deviation\",[]],[[8206,8207],\"disallowed\"],[[8208,8208],\"valid\",[],\"NV8\"],[[8209,8209],\"mapped\",[8208]],[[8210,8214],\"valid\",[],\"NV8\"],[[8215,8215],\"disallowed_STD3_mapped\",[32,819]],[[8216,8227],\"valid\",[],\"NV8\"],[[8228,8230],\"disallowed\"],[[8231,8231],\"valid\",[],\"NV8\"],[[8232,8238],\"disallowed\"],[[8239,8239],\"disallowed_STD3_mapped\",[32]],[[8240,8242],\"valid\",[],\"NV8\"],[[8243,8243],\"mapped\",[8242,8242]],[[8244,8244],\"mapped\",[8242,8242,8242]],[[8245,8245],\"valid\",[],\"NV8\"],[[8246,8246],\"mapped\",[8245,8245]],[[8247,8247],\"mapped\",[8245,8245,8245]],[[8248,8251],\"valid\",[],\"NV8\"],[[8252,8252],\"disallowed_STD3_mapped\",[33,33]],[[8253,8253],\"valid\",[],\"NV8\"],[[8254,8254],\"disallowed_STD3_mapped\",[32,773]],[[8255,8262],\"valid\",[],\"NV8\"],[[8263,8263],\"disallowed_STD3_mapped\",[63,63]],[[8264,8264],\"disallowed_STD3_mapped\",[63,33]],[[8265,8265],\"disallowed_STD3_mapped\",[33,63]],[[8266,8269],\"valid\",[],\"NV8\"],[[8270,8274],\"valid\",[],\"NV8\"],[[8275,8276],\"valid\",[],\"NV8\"],[[8277,8278],\"valid\",[],\"NV8\"],[[8279,8279],\"mapped\",[8242,8242,8242,8242]],[[8280,8286],\"valid\",[],\"NV8\"],[[8287,8287],\"disallowed_STD3_mapped\",[32]],[[8288,8288],\"ignored\"],[[8289,8291],\"disallowed\"],[[8292,8292],\"ignored\"],[[8293,8293],\"disallowed\"],[[8294,8297],\"disallowed\"],[[8298,8303],\"disallowed\"],[[8304,8304],\"mapped\",[48]],[[8305,8305],\"mapped\",[105]],[[8306,8307],\"disallowed\"],[[8308,8308],\"mapped\",[52]],[[8309,8309],\"mapped\",[53]],[[8310,8310],\"mapped\",[54]],[[8311,8311],\"mapped\",[55]],[[8312,8312],\"mapped\",[56]],[[8313,8313],\"mapped\",[57]],[[8314,8314],\"disallowed_STD3_mapped\",[43]],[[8315,8315],\"mapped\",[8722]],[[8316,8316],\"disallowed_STD3_mapped\",[61]],[[8317,8317],\"disallowed_STD3_mapped\",[40]],[[8318,8318],\"disallowed_STD3_mapped\",[41]],[[8319,8319],\"mapped\",[110]],[[8320,8320],\"mapped\",[48]],[[8321,8321],\"mapped\",[49]],[[8322,8322],\"mapped\",[50]],[[8323,8323],\"mapped\",[51]],[[8324,8324],\"mapped\",[52]],[[8325,8325],\"mapped\",[53]],[[8326,8326],\"mapped\",[54]],[[8327,8327],\"mapped\",[55]],[[8328,8328],\"mapped\",[56]],[[8329,8329],\"mapped\",[57]],[[8330,8330],\"disallowed_STD3_mapped\",[43]],[[8331,8331],\"mapped\",[8722]],[[8332,8332],\"disallowed_STD3_mapped\",[61]],[[8333,8333],\"disallowed_STD3_mapped\",[40]],[[8334,8334],\"disallowed_STD3_mapped\",[41]],[[8335,8335],\"disallowed\"],[[8336,8336],\"mapped\",[97]],[[8337,8337],\"mapped\",[101]],[[8338,8338],\"mapped\",[111]],[[8339,8339],\"mapped\",[120]],[[8340,8340],\"mapped\",[601]],[[8341,8341],\"mapped\",[104]],[[8342,8342],\"mapped\",[107]],[[8343,8343],\"mapped\",[108]],[[8344,8344],\"mapped\",[109]],[[8345,8345],\"mapped\",[110]],[[8346,8346],\"mapped\",[112]],[[8347,8347],\"mapped\",[115]],[[8348,8348],\"mapped\",[116]],[[8349,8351],\"disallowed\"],[[8352,8359],\"valid\",[],\"NV8\"],[[8360,8360],\"mapped\",[114,115]],[[8361,8362],\"valid\",[],\"NV8\"],[[8363,8363],\"valid\",[],\"NV8\"],[[8364,8364],\"valid\",[],\"NV8\"],[[8365,8367],\"valid\",[],\"NV8\"],[[8368,8369],\"valid\",[],\"NV8\"],[[8370,8373],\"valid\",[],\"NV8\"],[[8374,8376],\"valid\",[],\"NV8\"],[[8377,8377],\"valid\",[],\"NV8\"],[[8378,8378],\"valid\",[],\"NV8\"],[[8379,8381],\"valid\",[],\"NV8\"],[[8382,8382],\"valid\",[],\"NV8\"],[[8383,8399],\"disallowed\"],[[8400,8417],\"valid\",[],\"NV8\"],[[8418,8419],\"valid\",[],\"NV8\"],[[8420,8426],\"valid\",[],\"NV8\"],[[8427,8427],\"valid\",[],\"NV8\"],[[8428,8431],\"valid\",[],\"NV8\"],[[8432,8432],\"valid\",[],\"NV8\"],[[8433,8447],\"disallowed\"],[[8448,8448],\"disallowed_STD3_mapped\",[97,47,99]],[[8449,8449],\"disallowed_STD3_mapped\",[97,47,115]],[[8450,8450],\"mapped\",[99]],[[8451,8451],\"mapped\",[176,99]],[[8452,8452],\"valid\",[],\"NV8\"],[[8453,8453],\"disallowed_STD3_mapped\",[99,47,111]],[[8454,8454],\"disallowed_STD3_mapped\",[99,47,117]],[[8455,8455],\"mapped\",[603]],[[8456,8456],\"valid\",[],\"NV8\"],[[8457,8457],\"mapped\",[176,102]],[[8458,8458],\"mapped\",[103]],[[8459,8462],\"mapped\",[104]],[[8463,8463],\"mapped\",[295]],[[8464,8465],\"mapped\",[105]],[[8466,8467],\"mapped\",[108]],[[8468,8468],\"valid\",[],\"NV8\"],[[8469,8469],\"mapped\",[110]],[[8470,8470],\"mapped\",[110,111]],[[8471,8472],\"valid\",[],\"NV8\"],[[8473,8473],\"mapped\",[112]],[[8474,8474],\"mapped\",[113]],[[8475,8477],\"mapped\",[114]],[[8478,8479],\"valid\",[],\"NV8\"],[[8480,8480],\"mapped\",[115,109]],[[8481,8481],\"mapped\",[116,101,108]],[[8482,8482],\"mapped\",[116,109]],[[8483,8483],\"valid\",[],\"NV8\"],[[8484,8484],\"mapped\",[122]],[[8485,8485],\"valid\",[],\"NV8\"],[[8486,8486],\"mapped\",[969]],[[8487,8487],\"valid\",[],\"NV8\"],[[8488,8488],\"mapped\",[122]],[[8489,8489],\"valid\",[],\"NV8\"],[[8490,8490],\"mapped\",[107]],[[8491,8491],\"mapped\",[229]],[[8492,8492],\"mapped\",[98]],[[8493,8493],\"mapped\",[99]],[[8494,8494],\"valid\",[],\"NV8\"],[[8495,8496],\"mapped\",[101]],[[8497,8497],\"mapped\",[102]],[[8498,8498],\"disallowed\"],[[8499,8499],\"mapped\",[109]],[[8500,8500],\"mapped\",[111]],[[8501,8501],\"mapped\",[1488]],[[8502,8502],\"mapped\",[1489]],[[8503,8503],\"mapped\",[1490]],[[8504,8504],\"mapped\",[1491]],[[8505,8505],\"mapped\",[105]],[[8506,8506],\"valid\",[],\"NV8\"],[[8507,8507],\"mapped\",[102,97,120]],[[8508,8508],\"mapped\",[960]],[[8509,8510],\"mapped\",[947]],[[8511,8511],\"mapped\",[960]],[[8512,8512],\"mapped\",[8721]],[[8513,8516],\"valid\",[],\"NV8\"],[[8517,8518],\"mapped\",[100]],[[8519,8519],\"mapped\",[101]],[[8520,8520],\"mapped\",[105]],[[8521,8521],\"mapped\",[106]],[[8522,8523],\"valid\",[],\"NV8\"],[[8524,8524],\"valid\",[],\"NV8\"],[[8525,8525],\"valid\",[],\"NV8\"],[[8526,8526],\"valid\"],[[8527,8527],\"valid\",[],\"NV8\"],[[8528,8528],\"mapped\",[49,8260,55]],[[8529,8529],\"mapped\",[49,8260,57]],[[8530,8530],\"mapped\",[49,8260,49,48]],[[8531,8531],\"mapped\",[49,8260,51]],[[8532,8532],\"mapped\",[50,8260,51]],[[8533,8533],\"mapped\",[49,8260,53]],[[8534,8534],\"mapped\",[50,8260,53]],[[8535,8535],\"mapped\",[51,8260,53]],[[8536,8536],\"mapped\",[52,8260,53]],[[8537,8537],\"mapped\",[49,8260,54]],[[8538,8538],\"mapped\",[53,8260,54]],[[8539,8539],\"mapped\",[49,8260,56]],[[8540,8540],\"mapped\",[51,8260,56]],[[8541,8541],\"mapped\",[53,8260,56]],[[8542,8542],\"mapped\",[55,8260,56]],[[8543,8543],\"mapped\",[49,8260]],[[8544,8544],\"mapped\",[105]],[[8545,8545],\"mapped\",[105,105]],[[8546,8546],\"mapped\",[105,105,105]],[[8547,8547],\"mapped\",[105,118]],[[8548,8548],\"mapped\",[118]],[[8549,8549],\"mapped\",[118,105]],[[8550,8550],\"mapped\",[118,105,105]],[[8551,8551],\"mapped\",[118,105,105,105]],[[8552,8552],\"mapped\",[105,120]],[[8553,8553],\"mapped\",[120]],[[8554,8554],\"mapped\",[120,105]],[[8555,8555],\"mapped\",[120,105,105]],[[8556,8556],\"mapped\",[108]],[[8557,8557],\"mapped\",[99]],[[8558,8558],\"mapped\",[100]],[[8559,8559],\"mapped\",[109]],[[8560,8560],\"mapped\",[105]],[[8561,8561],\"mapped\",[105,105]],[[8562,8562],\"mapped\",[105,105,105]],[[8563,8563],\"mapped\",[105,118]],[[8564,8564],\"mapped\",[118]],[[8565,8565],\"mapped\",[118,105]],[[8566,8566],\"mapped\",[118,105,105]],[[8567,8567],\"mapped\",[118,105,105,105]],[[8568,8568],\"mapped\",[105,120]],[[8569,8569],\"mapped\",[120]],[[8570,8570],\"mapped\",[120,105]],[[8571,8571],\"mapped\",[120,105,105]],[[8572,8572],\"mapped\",[108]],[[8573,8573],\"mapped\",[99]],[[8574,8574],\"mapped\",[100]],[[8575,8575],\"mapped\",[109]],[[8576,8578],\"valid\",[],\"NV8\"],[[8579,8579],\"disallowed\"],[[8580,8580],\"valid\"],[[8581,8584],\"valid\",[],\"NV8\"],[[8585,8585],\"mapped\",[48,8260,51]],[[8586,8587],\"valid\",[],\"NV8\"],[[8588,8591],\"disallowed\"],[[8592,8682],\"valid\",[],\"NV8\"],[[8683,8691],\"valid\",[],\"NV8\"],[[8692,8703],\"valid\",[],\"NV8\"],[[8704,8747],\"valid\",[],\"NV8\"],[[8748,8748],\"mapped\",[8747,8747]],[[8749,8749],\"mapped\",[8747,8747,8747]],[[8750,8750],\"valid\",[],\"NV8\"],[[8751,8751],\"mapped\",[8750,8750]],[[8752,8752],\"mapped\",[8750,8750,8750]],[[8753,8799],\"valid\",[],\"NV8\"],[[8800,8800],\"disallowed_STD3_valid\"],[[8801,8813],\"valid\",[],\"NV8\"],[[8814,8815],\"disallowed_STD3_valid\"],[[8816,8945],\"valid\",[],\"NV8\"],[[8946,8959],\"valid\",[],\"NV8\"],[[8960,8960],\"valid\",[],\"NV8\"],[[8961,8961],\"valid\",[],\"NV8\"],[[8962,9000],\"valid\",[],\"NV8\"],[[9001,9001],\"mapped\",[12296]],[[9002,9002],\"mapped\",[12297]],[[9003,9082],\"valid\",[],\"NV8\"],[[9083,9083],\"valid\",[],\"NV8\"],[[9084,9084],\"valid\",[],\"NV8\"],[[9085,9114],\"valid\",[],\"NV8\"],[[9115,9166],\"valid\",[],\"NV8\"],[[9167,9168],\"valid\",[],\"NV8\"],[[9169,9179],\"valid\",[],\"NV8\"],[[9180,9191],\"valid\",[],\"NV8\"],[[9192,9192],\"valid\",[],\"NV8\"],[[9193,9203],\"valid\",[],\"NV8\"],[[9204,9210],\"valid\",[],\"NV8\"],[[9211,9215],\"disallowed\"],[[9216,9252],\"valid\",[],\"NV8\"],[[9253,9254],\"valid\",[],\"NV8\"],[[9255,9279],\"disallowed\"],[[9280,9290],\"valid\",[],\"NV8\"],[[9291,9311],\"disallowed\"],[[9312,9312],\"mapped\",[49]],[[9313,9313],\"mapped\",[50]],[[9314,9314],\"mapped\",[51]],[[9315,9315],\"mapped\",[52]],[[9316,9316],\"mapped\",[53]],[[9317,9317],\"mapped\",[54]],[[9318,9318],\"mapped\",[55]],[[9319,9319],\"mapped\",[56]],[[9320,9320],\"mapped\",[57]],[[9321,9321],\"mapped\",[49,48]],[[9322,9322],\"mapped\",[49,49]],[[9323,9323],\"mapped\",[49,50]],[[9324,9324],\"mapped\",[49,51]],[[9325,9325],\"mapped\",[49,52]],[[9326,9326],\"mapped\",[49,53]],[[9327,9327],\"mapped\",[49,54]],[[9328,9328],\"mapped\",[49,55]],[[9329,9329],\"mapped\",[49,56]],[[9330,9330],\"mapped\",[49,57]],[[9331,9331],\"mapped\",[50,48]],[[9332,9332],\"disallowed_STD3_mapped\",[40,49,41]],[[9333,9333],\"disallowed_STD3_mapped\",[40,50,41]],[[9334,9334],\"disallowed_STD3_mapped\",[40,51,41]],[[9335,9335],\"disallowed_STD3_mapped\",[40,52,41]],[[9336,9336],\"disallowed_STD3_mapped\",[40,53,41]],[[9337,9337],\"disallowed_STD3_mapped\",[40,54,41]],[[9338,9338],\"disallowed_STD3_mapped\",[40,55,41]],[[9339,9339],\"disallowed_STD3_mapped\",[40,56,41]],[[9340,9340],\"disallowed_STD3_mapped\",[40,57,41]],[[9341,9341],\"disallowed_STD3_mapped\",[40,49,48,41]],[[9342,9342],\"disallowed_STD3_mapped\",[40,49,49,41]],[[9343,9343],\"disallowed_STD3_mapped\",[40,49,50,41]],[[9344,9344],\"disallowed_STD3_mapped\",[40,49,51,41]],[[9345,9345],\"disallowed_STD3_mapped\",[40,49,52,41]],[[9346,9346],\"disallowed_STD3_mapped\",[40,49,53,41]],[[9347,9347],\"disallowed_STD3_mapped\",[40,49,54,41]],[[9348,9348],\"disallowed_STD3_mapped\",[40,49,55,41]],[[9349,9349],\"disallowed_STD3_mapped\",[40,49,56,41]],[[9350,9350],\"disallowed_STD3_mapped\",[40,49,57,41]],[[9351,9351],\"disallowed_STD3_mapped\",[40,50,48,41]],[[9352,9371],\"disallowed\"],[[9372,9372],\"disallowed_STD3_mapped\",[40,97,41]],[[9373,9373],\"disallowed_STD3_mapped\",[40,98,41]],[[9374,9374],\"disallowed_STD3_mapped\",[40,99,41]],[[9375,9375],\"disallowed_STD3_mapped\",[40,100,41]],[[9376,9376],\"disallowed_STD3_mapped\",[40,101,41]],[[9377,9377],\"disallowed_STD3_mapped\",[40,102,41]],[[9378,9378],\"disallowed_STD3_mapped\",[40,103,41]],[[9379,9379],\"disallowed_STD3_mapped\",[40,104,41]],[[9380,9380],\"disallowed_STD3_mapped\",[40,105,41]],[[9381,9381],\"disallowed_STD3_mapped\",[40,106,41]],[[9382,9382],\"disallowed_STD3_mapped\",[40,107,41]],[[9383,9383],\"disallowed_STD3_mapped\",[40,108,41]],[[9384,9384],\"disallowed_STD3_mapped\",[40,109,41]],[[9385,9385],\"disallowed_STD3_mapped\",[40,110,41]],[[9386,9386],\"disallowed_STD3_mapped\",[40,111,41]],[[9387,9387],\"disallowed_STD3_mapped\",[40,112,41]],[[9388,9388],\"disallowed_STD3_mapped\",[40,113,41]],[[9389,9389],\"disallowed_STD3_mapped\",[40,114,41]],[[9390,9390],\"disallowed_STD3_mapped\",[40,115,41]],[[9391,9391],\"disallowed_STD3_mapped\",[40,116,41]],[[9392,9392],\"disallowed_STD3_mapped\",[40,117,41]],[[9393,9393],\"disallowed_STD3_mapped\",[40,118,41]],[[9394,9394],\"disallowed_STD3_mapped\",[40,119,41]],[[9395,9395],\"disallowed_STD3_mapped\",[40,120,41]],[[9396,9396],\"disallowed_STD3_mapped\",[40,121,41]],[[9397,9397],\"disallowed_STD3_mapped\",[40,122,41]],[[9398,9398],\"mapped\",[97]],[[9399,9399],\"mapped\",[98]],[[9400,9400],\"mapped\",[99]],[[9401,9401],\"mapped\",[100]],[[9402,9402],\"mapped\",[101]],[[9403,9403],\"mapped\",[102]],[[9404,9404],\"mapped\",[103]],[[9405,9405],\"mapped\",[104]],[[9406,9406],\"mapped\",[105]],[[9407,9407],\"mapped\",[106]],[[9408,9408],\"mapped\",[107]],[[9409,9409],\"mapped\",[108]],[[9410,9410],\"mapped\",[109]],[[9411,9411],\"mapped\",[110]],[[9412,9412],\"mapped\",[111]],[[9413,9413],\"mapped\",[112]],[[9414,9414],\"mapped\",[113]],[[9415,9415],\"mapped\",[114]],[[9416,9416],\"mapped\",[115]],[[9417,9417],\"mapped\",[116]],[[9418,9418],\"mapped\",[117]],[[9419,9419],\"mapped\",[118]],[[9420,9420],\"mapped\",[119]],[[9421,9421],\"mapped\",[120]],[[9422,9422],\"mapped\",[121]],[[9423,9423],\"mapped\",[122]],[[9424,9424],\"mapped\",[97]],[[9425,9425],\"mapped\",[98]],[[9426,9426],\"mapped\",[99]],[[9427,9427],\"mapped\",[100]],[[9428,9428],\"mapped\",[101]],[[9429,9429],\"mapped\",[102]],[[9430,9430],\"mapped\",[103]],[[9431,9431],\"mapped\",[104]],[[9432,9432],\"mapped\",[105]],[[9433,9433],\"mapped\",[106]],[[9434,9434],\"mapped\",[107]],[[9435,9435],\"mapped\",[108]],[[9436,9436],\"mapped\",[109]],[[9437,9437],\"mapped\",[110]],[[9438,9438],\"mapped\",[111]],[[9439,9439],\"mapped\",[112]],[[9440,9440],\"mapped\",[113]],[[9441,9441],\"mapped\",[114]],[[9442,9442],\"mapped\",[115]],[[9443,9443],\"mapped\",[116]],[[9444,9444],\"mapped\",[117]],[[9445,9445],\"mapped\",[118]],[[9446,9446],\"mapped\",[119]],[[9447,9447],\"mapped\",[120]],[[9448,9448],\"mapped\",[121]],[[9449,9449],\"mapped\",[122]],[[9450,9450],\"mapped\",[48]],[[9451,9470],\"valid\",[],\"NV8\"],[[9471,9471],\"valid\",[],\"NV8\"],[[9472,9621],\"valid\",[],\"NV8\"],[[9622,9631],\"valid\",[],\"NV8\"],[[9632,9711],\"valid\",[],\"NV8\"],[[9712,9719],\"valid\",[],\"NV8\"],[[9720,9727],\"valid\",[],\"NV8\"],[[9728,9747],\"valid\",[],\"NV8\"],[[9748,9749],\"valid\",[],\"NV8\"],[[9750,9751],\"valid\",[],\"NV8\"],[[9752,9752],\"valid\",[],\"NV8\"],[[9753,9753],\"valid\",[],\"NV8\"],[[9754,9839],\"valid\",[],\"NV8\"],[[9840,9841],\"valid\",[],\"NV8\"],[[9842,9853],\"valid\",[],\"NV8\"],[[9854,9855],\"valid\",[],\"NV8\"],[[9856,9865],\"valid\",[],\"NV8\"],[[9866,9873],\"valid\",[],\"NV8\"],[[9874,9884],\"valid\",[],\"NV8\"],[[9885,9885],\"valid\",[],\"NV8\"],[[9886,9887],\"valid\",[],\"NV8\"],[[9888,9889],\"valid\",[],\"NV8\"],[[9890,9905],\"valid\",[],\"NV8\"],[[9906,9906],\"valid\",[],\"NV8\"],[[9907,9916],\"valid\",[],\"NV8\"],[[9917,9919],\"valid\",[],\"NV8\"],[[9920,9923],\"valid\",[],\"NV8\"],[[9924,9933],\"valid\",[],\"NV8\"],[[9934,9934],\"valid\",[],\"NV8\"],[[9935,9953],\"valid\",[],\"NV8\"],[[9954,9954],\"valid\",[],\"NV8\"],[[9955,9955],\"valid\",[],\"NV8\"],[[9956,9959],\"valid\",[],\"NV8\"],[[9960,9983],\"valid\",[],\"NV8\"],[[9984,9984],\"valid\",[],\"NV8\"],[[9985,9988],\"valid\",[],\"NV8\"],[[9989,9989],\"valid\",[],\"NV8\"],[[9990,9993],\"valid\",[],\"NV8\"],[[9994,9995],\"valid\",[],\"NV8\"],[[9996,10023],\"valid\",[],\"NV8\"],[[10024,10024],\"valid\",[],\"NV8\"],[[10025,10059],\"valid\",[],\"NV8\"],[[10060,10060],\"valid\",[],\"NV8\"],[[10061,10061],\"valid\",[],\"NV8\"],[[10062,10062],\"valid\",[],\"NV8\"],[[10063,10066],\"valid\",[],\"NV8\"],[[10067,10069],\"valid\",[],\"NV8\"],[[10070,10070],\"valid\",[],\"NV8\"],[[10071,10071],\"valid\",[],\"NV8\"],[[10072,10078],\"valid\",[],\"NV8\"],[[10079,10080],\"valid\",[],\"NV8\"],[[10081,10087],\"valid\",[],\"NV8\"],[[10088,10101],\"valid\",[],\"NV8\"],[[10102,10132],\"valid\",[],\"NV8\"],[[10133,10135],\"valid\",[],\"NV8\"],[[10136,10159],\"valid\",[],\"NV8\"],[[10160,10160],\"valid\",[],\"NV8\"],[[10161,10174],\"valid\",[],\"NV8\"],[[10175,10175],\"valid\",[],\"NV8\"],[[10176,10182],\"valid\",[],\"NV8\"],[[10183,10186],\"valid\",[],\"NV8\"],[[10187,10187],\"valid\",[],\"NV8\"],[[10188,10188],\"valid\",[],\"NV8\"],[[10189,10189],\"valid\",[],\"NV8\"],[[10190,10191],\"valid\",[],\"NV8\"],[[10192,10219],\"valid\",[],\"NV8\"],[[10220,10223],\"valid\",[],\"NV8\"],[[10224,10239],\"valid\",[],\"NV8\"],[[10240,10495],\"valid\",[],\"NV8\"],[[10496,10763],\"valid\",[],\"NV8\"],[[10764,10764],\"mapped\",[8747,8747,8747,8747]],[[10765,10867],\"valid\",[],\"NV8\"],[[10868,10868],\"disallowed_STD3_mapped\",[58,58,61]],[[10869,10869],\"disallowed_STD3_mapped\",[61,61]],[[10870,10870],\"disallowed_STD3_mapped\",[61,61,61]],[[10871,10971],\"valid\",[],\"NV8\"],[[10972,10972],\"mapped\",[10973,824]],[[10973,11007],\"valid\",[],\"NV8\"],[[11008,11021],\"valid\",[],\"NV8\"],[[11022,11027],\"valid\",[],\"NV8\"],[[11028,11034],\"valid\",[],\"NV8\"],[[11035,11039],\"valid\",[],\"NV8\"],[[11040,11043],\"valid\",[],\"NV8\"],[[11044,11084],\"valid\",[],\"NV8\"],[[11085,11087],\"valid\",[],\"NV8\"],[[11088,11092],\"valid\",[],\"NV8\"],[[11093,11097],\"valid\",[],\"NV8\"],[[11098,11123],\"valid\",[],\"NV8\"],[[11124,11125],\"disallowed\"],[[11126,11157],\"valid\",[],\"NV8\"],[[11158,11159],\"disallowed\"],[[11160,11193],\"valid\",[],\"NV8\"],[[11194,11196],\"disallowed\"],[[11197,11208],\"valid\",[],\"NV8\"],[[11209,11209],\"disallowed\"],[[11210,11217],\"valid\",[],\"NV8\"],[[11218,11243],\"disallowed\"],[[11244,11247],\"valid\",[],\"NV8\"],[[11248,11263],\"disallowed\"],[[11264,11264],\"mapped\",[11312]],[[11265,11265],\"mapped\",[11313]],[[11266,11266],\"mapped\",[11314]],[[11267,11267],\"mapped\",[11315]],[[11268,11268],\"mapped\",[11316]],[[11269,11269],\"mapped\",[11317]],[[11270,11270],\"mapped\",[11318]],[[11271,11271],\"mapped\",[11319]],[[11272,11272],\"mapped\",[11320]],[[11273,11273],\"mapped\",[11321]],[[11274,11274],\"mapped\",[11322]],[[11275,11275],\"mapped\",[11323]],[[11276,11276],\"mapped\",[11324]],[[11277,11277],\"mapped\",[11325]],[[11278,11278],\"mapped\",[11326]],[[11279,11279],\"mapped\",[11327]],[[11280,11280],\"mapped\",[11328]],[[11281,11281],\"mapped\",[11329]],[[11282,11282],\"mapped\",[11330]],[[11283,11283],\"mapped\",[11331]],[[11284,11284],\"mapped\",[11332]],[[11285,11285],\"mapped\",[11333]],[[11286,11286],\"mapped\",[11334]],[[11287,11287],\"mapped\",[11335]],[[11288,11288],\"mapped\",[11336]],[[11289,11289],\"mapped\",[11337]],[[11290,11290],\"mapped\",[11338]],[[11291,11291],\"mapped\",[11339]],[[11292,11292],\"mapped\",[11340]],[[11293,11293],\"mapped\",[11341]],[[11294,11294],\"mapped\",[11342]],[[11295,11295],\"mapped\",[11343]],[[11296,11296],\"mapped\",[11344]],[[11297,11297],\"mapped\",[11345]],[[11298,11298],\"mapped\",[11346]],[[11299,11299],\"mapped\",[11347]],[[11300,11300],\"mapped\",[11348]],[[11301,11301],\"mapped\",[11349]],[[11302,11302],\"mapped\",[11350]],[[11303,11303],\"mapped\",[11351]],[[11304,11304],\"mapped\",[11352]],[[11305,11305],\"mapped\",[11353]],[[11306,11306],\"mapped\",[11354]],[[11307,11307],\"mapped\",[11355]],[[11308,11308],\"mapped\",[11356]],[[11309,11309],\"mapped\",[11357]],[[11310,11310],\"mapped\",[11358]],[[11311,11311],\"disallowed\"],[[11312,11358],\"valid\"],[[11359,11359],\"disallowed\"],[[11360,11360],\"mapped\",[11361]],[[11361,11361],\"valid\"],[[11362,11362],\"mapped\",[619]],[[11363,11363],\"mapped\",[7549]],[[11364,11364],\"mapped\",[637]],[[11365,11366],\"valid\"],[[11367,11367],\"mapped\",[11368]],[[11368,11368],\"valid\"],[[11369,11369],\"mapped\",[11370]],[[11370,11370],\"valid\"],[[11371,11371],\"mapped\",[11372]],[[11372,11372],\"valid\"],[[11373,11373],\"mapped\",[593]],[[11374,11374],\"mapped\",[625]],[[11375,11375],\"mapped\",[592]],[[11376,11376],\"mapped\",[594]],[[11377,11377],\"valid\"],[[11378,11378],\"mapped\",[11379]],[[11379,11379],\"valid\"],[[11380,11380],\"valid\"],[[11381,11381],\"mapped\",[11382]],[[11382,11383],\"valid\"],[[11384,11387],\"valid\"],[[11388,11388],\"mapped\",[106]],[[11389,11389],\"mapped\",[118]],[[11390,11390],\"mapped\",[575]],[[11391,11391],\"mapped\",[576]],[[11392,11392],\"mapped\",[11393]],[[11393,11393],\"valid\"],[[11394,11394],\"mapped\",[11395]],[[11395,11395],\"valid\"],[[11396,11396],\"mapped\",[11397]],[[11397,11397],\"valid\"],[[11398,11398],\"mapped\",[11399]],[[11399,11399],\"valid\"],[[11400,11400],\"mapped\",[11401]],[[11401,11401],\"valid\"],[[11402,11402],\"mapped\",[11403]],[[11403,11403],\"valid\"],[[11404,11404],\"mapped\",[11405]],[[11405,11405],\"valid\"],[[11406,11406],\"mapped\",[11407]],[[11407,11407],\"valid\"],[[11408,11408],\"mapped\",[11409]],[[11409,11409],\"valid\"],[[11410,11410],\"mapped\",[11411]],[[11411,11411],\"valid\"],[[11412,11412],\"mapped\",[11413]],[[11413,11413],\"valid\"],[[11414,11414],\"mapped\",[11415]],[[11415,11415],\"valid\"],[[11416,11416],\"mapped\",[11417]],[[11417,11417],\"valid\"],[[11418,11418],\"mapped\",[11419]],[[11419,11419],\"valid\"],[[11420,11420],\"mapped\",[11421]],[[11421,11421],\"valid\"],[[11422,11422],\"mapped\",[11423]],[[11423,11423],\"valid\"],[[11424,11424],\"mapped\",[11425]],[[11425,11425],\"valid\"],[[11426,11426],\"mapped\",[11427]],[[11427,11427],\"valid\"],[[11428,11428],\"mapped\",[11429]],[[11429,11429],\"valid\"],[[11430,11430],\"mapped\",[11431]],[[11431,11431],\"valid\"],[[11432,11432],\"mapped\",[11433]],[[11433,11433],\"valid\"],[[11434,11434],\"mapped\",[11435]],[[11435,11435],\"valid\"],[[11436,11436],\"mapped\",[11437]],[[11437,11437],\"valid\"],[[11438,11438],\"mapped\",[11439]],[[11439,11439],\"valid\"],[[11440,11440],\"mapped\",[11441]],[[11441,11441],\"valid\"],[[11442,11442],\"mapped\",[11443]],[[11443,11443],\"valid\"],[[11444,11444],\"mapped\",[11445]],[[11445,11445],\"valid\"],[[11446,11446],\"mapped\",[11447]],[[11447,11447],\"valid\"],[[11448,11448],\"mapped\",[11449]],[[11449,11449],\"valid\"],[[11450,11450],\"mapped\",[11451]],[[11451,11451],\"valid\"],[[11452,11452],\"mapped\",[11453]],[[11453,11453],\"valid\"],[[11454,11454],\"mapped\",[11455]],[[11455,11455],\"valid\"],[[11456,11456],\"mapped\",[11457]],[[11457,11457],\"valid\"],[[11458,11458],\"mapped\",[11459]],[[11459,11459],\"valid\"],[[11460,11460],\"mapped\",[11461]],[[11461,11461],\"valid\"],[[11462,11462],\"mapped\",[11463]],[[11463,11463],\"valid\"],[[11464,11464],\"mapped\",[11465]],[[11465,11465],\"valid\"],[[11466,11466],\"mapped\",[11467]],[[11467,11467],\"valid\"],[[11468,11468],\"mapped\",[11469]],[[11469,11469],\"valid\"],[[11470,11470],\"mapped\",[11471]],[[11471,11471],\"valid\"],[[11472,11472],\"mapped\",[11473]],[[11473,11473],\"valid\"],[[11474,11474],\"mapped\",[11475]],[[11475,11475],\"valid\"],[[11476,11476],\"mapped\",[11477]],[[11477,11477],\"valid\"],[[11478,11478],\"mapped\",[11479]],[[11479,11479],\"valid\"],[[11480,11480],\"mapped\",[11481]],[[11481,11481],\"valid\"],[[11482,11482],\"mapped\",[11483]],[[11483,11483],\"valid\"],[[11484,11484],\"mapped\",[11485]],[[11485,11485],\"valid\"],[[11486,11486],\"mapped\",[11487]],[[11487,11487],\"valid\"],[[11488,11488],\"mapped\",[11489]],[[11489,11489],\"valid\"],[[11490,11490],\"mapped\",[11491]],[[11491,11492],\"valid\"],[[11493,11498],\"valid\",[],\"NV8\"],[[11499,11499],\"mapped\",[11500]],[[11500,11500],\"valid\"],[[11501,11501],\"mapped\",[11502]],[[11502,11505],\"valid\"],[[11506,11506],\"mapped\",[11507]],[[11507,11507],\"valid\"],[[11508,11512],\"disallowed\"],[[11513,11519],\"valid\",[],\"NV8\"],[[11520,11557],\"valid\"],[[11558,11558],\"disallowed\"],[[11559,11559],\"valid\"],[[11560,11564],\"disallowed\"],[[11565,11565],\"valid\"],[[11566,11567],\"disallowed\"],[[11568,11621],\"valid\"],[[11622,11623],\"valid\"],[[11624,11630],\"disallowed\"],[[11631,11631],\"mapped\",[11617]],[[11632,11632],\"valid\",[],\"NV8\"],[[11633,11646],\"disallowed\"],[[11647,11647],\"valid\"],[[11648,11670],\"valid\"],[[11671,11679],\"disallowed\"],[[11680,11686],\"valid\"],[[11687,11687],\"disallowed\"],[[11688,11694],\"valid\"],[[11695,11695],\"disallowed\"],[[11696,11702],\"valid\"],[[11703,11703],\"disallowed\"],[[11704,11710],\"valid\"],[[11711,11711],\"disallowed\"],[[11712,11718],\"valid\"],[[11719,11719],\"disallowed\"],[[11720,11726],\"valid\"],[[11727,11727],\"disallowed\"],[[11728,11734],\"valid\"],[[11735,11735],\"disallowed\"],[[11736,11742],\"valid\"],[[11743,11743],\"disallowed\"],[[11744,11775],\"valid\"],[[11776,11799],\"valid\",[],\"NV8\"],[[11800,11803],\"valid\",[],\"NV8\"],[[11804,11805],\"valid\",[],\"NV8\"],[[11806,11822],\"valid\",[],\"NV8\"],[[11823,11823],\"valid\"],[[11824,11824],\"valid\",[],\"NV8\"],[[11825,11825],\"valid\",[],\"NV8\"],[[11826,11835],\"valid\",[],\"NV8\"],[[11836,11842],\"valid\",[],\"NV8\"],[[11843,11903],\"disallowed\"],[[11904,11929],\"valid\",[],\"NV8\"],[[11930,11930],\"disallowed\"],[[11931,11934],\"valid\",[],\"NV8\"],[[11935,11935],\"mapped\",[27597]],[[11936,12018],\"valid\",[],\"NV8\"],[[12019,12019],\"mapped\",[40863]],[[12020,12031],\"disallowed\"],[[12032,12032],\"mapped\",[19968]],[[12033,12033],\"mapped\",[20008]],[[12034,12034],\"mapped\",[20022]],[[12035,12035],\"mapped\",[20031]],[[12036,12036],\"mapped\",[20057]],[[12037,12037],\"mapped\",[20101]],[[12038,12038],\"mapped\",[20108]],[[12039,12039],\"mapped\",[20128]],[[12040,12040],\"mapped\",[20154]],[[12041,12041],\"mapped\",[20799]],[[12042,12042],\"mapped\",[20837]],[[12043,12043],\"mapped\",[20843]],[[12044,12044],\"mapped\",[20866]],[[12045,12045],\"mapped\",[20886]],[[12046,12046],\"mapped\",[20907]],[[12047,12047],\"mapped\",[20960]],[[12048,12048],\"mapped\",[20981]],[[12049,12049],\"mapped\",[20992]],[[12050,12050],\"mapped\",[21147]],[[12051,12051],\"mapped\",[21241]],[[12052,12052],\"mapped\",[21269]],[[12053,12053],\"mapped\",[21274]],[[12054,12054],\"mapped\",[21304]],[[12055,12055],\"mapped\",[21313]],[[12056,12056],\"mapped\",[21340]],[[12057,12057],\"mapped\",[21353]],[[12058,12058],\"mapped\",[21378]],[[12059,12059],\"mapped\",[21430]],[[12060,12060],\"mapped\",[21448]],[[12061,12061],\"mapped\",[21475]],[[12062,12062],\"mapped\",[22231]],[[12063,12063],\"mapped\",[22303]],[[12064,12064],\"mapped\",[22763]],[[12065,12065],\"mapped\",[22786]],[[12066,12066],\"mapped\",[22794]],[[12067,12067],\"mapped\",[22805]],[[12068,12068],\"mapped\",[22823]],[[12069,12069],\"mapped\",[22899]],[[12070,12070],\"mapped\",[23376]],[[12071,12071],\"mapped\",[23424]],[[12072,12072],\"mapped\",[23544]],[[12073,12073],\"mapped\",[23567]],[[12074,12074],\"mapped\",[23586]],[[12075,12075],\"mapped\",[23608]],[[12076,12076],\"mapped\",[23662]],[[12077,12077],\"mapped\",[23665]],[[12078,12078],\"mapped\",[24027]],[[12079,12079],\"mapped\",[24037]],[[12080,12080],\"mapped\",[24049]],[[12081,12081],\"mapped\",[24062]],[[12082,12082],\"mapped\",[24178]],[[12083,12083],\"mapped\",[24186]],[[12084,12084],\"mapped\",[24191]],[[12085,12085],\"mapped\",[24308]],[[12086,12086],\"mapped\",[24318]],[[12087,12087],\"mapped\",[24331]],[[12088,12088],\"mapped\",[24339]],[[12089,12089],\"mapped\",[24400]],[[12090,12090],\"mapped\",[24417]],[[12091,12091],\"mapped\",[24435]],[[12092,12092],\"mapped\",[24515]],[[12093,12093],\"mapped\",[25096]],[[12094,12094],\"mapped\",[25142]],[[12095,12095],\"mapped\",[25163]],[[12096,12096],\"mapped\",[25903]],[[12097,12097],\"mapped\",[25908]],[[12098,12098],\"mapped\",[25991]],[[12099,12099],\"mapped\",[26007]],[[12100,12100],\"mapped\",[26020]],[[12101,12101],\"mapped\",[26041]],[[12102,12102],\"mapped\",[26080]],[[12103,12103],\"mapped\",[26085]],[[12104,12104],\"mapped\",[26352]],[[12105,12105],\"mapped\",[26376]],[[12106,12106],\"mapped\",[26408]],[[12107,12107],\"mapped\",[27424]],[[12108,12108],\"mapped\",[27490]],[[12109,12109],\"mapped\",[27513]],[[12110,12110],\"mapped\",[27571]],[[12111,12111],\"mapped\",[27595]],[[12112,12112],\"mapped\",[27604]],[[12113,12113],\"mapped\",[27611]],[[12114,12114],\"mapped\",[27663]],[[12115,12115],\"mapped\",[27668]],[[12116,12116],\"mapped\",[27700]],[[12117,12117],\"mapped\",[28779]],[[12118,12118],\"mapped\",[29226]],[[12119,12119],\"mapped\",[29238]],[[12120,12120],\"mapped\",[29243]],[[12121,12121],\"mapped\",[29247]],[[12122,12122],\"mapped\",[29255]],[[12123,12123],\"mapped\",[29273]],[[12124,12124],\"mapped\",[29275]],[[12125,12125],\"mapped\",[29356]],[[12126,12126],\"mapped\",[29572]],[[12127,12127],\"mapped\",[29577]],[[12128,12128],\"mapped\",[29916]],[[12129,12129],\"mapped\",[29926]],[[12130,12130],\"mapped\",[29976]],[[12131,12131],\"mapped\",[29983]],[[12132,12132],\"mapped\",[29992]],[[12133,12133],\"mapped\",[30000]],[[12134,12134],\"mapped\",[30091]],[[12135,12135],\"mapped\",[30098]],[[12136,12136],\"mapped\",[30326]],[[12137,12137],\"mapped\",[30333]],[[12138,12138],\"mapped\",[30382]],[[12139,12139],\"mapped\",[30399]],[[12140,12140],\"mapped\",[30446]],[[12141,12141],\"mapped\",[30683]],[[12142,12142],\"mapped\",[30690]],[[12143,12143],\"mapped\",[30707]],[[12144,12144],\"mapped\",[31034]],[[12145,12145],\"mapped\",[31160]],[[12146,12146],\"mapped\",[31166]],[[12147,12147],\"mapped\",[31348]],[[12148,12148],\"mapped\",[31435]],[[12149,12149],\"mapped\",[31481]],[[12150,12150],\"mapped\",[31859]],[[12151,12151],\"mapped\",[31992]],[[12152,12152],\"mapped\",[32566]],[[12153,12153],\"mapped\",[32593]],[[12154,12154],\"mapped\",[32650]],[[12155,12155],\"mapped\",[32701]],[[12156,12156],\"mapped\",[32769]],[[12157,12157],\"mapped\",[32780]],[[12158,12158],\"mapped\",[32786]],[[12159,12159],\"mapped\",[32819]],[[12160,12160],\"mapped\",[32895]],[[12161,12161],\"mapped\",[32905]],[[12162,12162],\"mapped\",[33251]],[[12163,12163],\"mapped\",[33258]],[[12164,12164],\"mapped\",[33267]],[[12165,12165],\"mapped\",[33276]],[[12166,12166],\"mapped\",[33292]],[[12167,12167],\"mapped\",[33307]],[[12168,12168],\"mapped\",[33311]],[[12169,12169],\"mapped\",[33390]],[[12170,12170],\"mapped\",[33394]],[[12171,12171],\"mapped\",[33400]],[[12172,12172],\"mapped\",[34381]],[[12173,12173],\"mapped\",[34411]],[[12174,12174],\"mapped\",[34880]],[[12175,12175],\"mapped\",[34892]],[[12176,12176],\"mapped\",[34915]],[[12177,12177],\"mapped\",[35198]],[[12178,12178],\"mapped\",[35211]],[[12179,12179],\"mapped\",[35282]],[[12180,12180],\"mapped\",[35328]],[[12181,12181],\"mapped\",[35895]],[[12182,12182],\"mapped\",[35910]],[[12183,12183],\"mapped\",[35925]],[[12184,12184],\"mapped\",[35960]],[[12185,12185],\"mapped\",[35997]],[[12186,12186],\"mapped\",[36196]],[[12187,12187],\"mapped\",[36208]],[[12188,12188],\"mapped\",[36275]],[[12189,12189],\"mapped\",[36523]],[[12190,12190],\"mapped\",[36554]],[[12191,12191],\"mapped\",[36763]],[[12192,12192],\"mapped\",[36784]],[[12193,12193],\"mapped\",[36789]],[[12194,12194],\"mapped\",[37009]],[[12195,12195],\"mapped\",[37193]],[[12196,12196],\"mapped\",[37318]],[[12197,12197],\"mapped\",[37324]],[[12198,12198],\"mapped\",[37329]],[[12199,12199],\"mapped\",[38263]],[[12200,12200],\"mapped\",[38272]],[[12201,12201],\"mapped\",[38428]],[[12202,12202],\"mapped\",[38582]],[[12203,12203],\"mapped\",[38585]],[[12204,12204],\"mapped\",[38632]],[[12205,12205],\"mapped\",[38737]],[[12206,12206],\"mapped\",[38750]],[[12207,12207],\"mapped\",[38754]],[[12208,12208],\"mapped\",[38761]],[[12209,12209],\"mapped\",[38859]],[[12210,12210],\"mapped\",[38893]],[[12211,12211],\"mapped\",[38899]],[[12212,12212],\"mapped\",[38913]],[[12213,12213],\"mapped\",[39080]],[[12214,12214],\"mapped\",[39131]],[[12215,12215],\"mapped\",[39135]],[[12216,12216],\"mapped\",[39318]],[[12217,12217],\"mapped\",[39321]],[[12218,12218],\"mapped\",[39340]],[[12219,12219],\"mapped\",[39592]],[[12220,12220],\"mapped\",[39640]],[[12221,12221],\"mapped\",[39647]],[[12222,12222],\"mapped\",[39717]],[[12223,12223],\"mapped\",[39727]],[[12224,12224],\"mapped\",[39730]],[[12225,12225],\"mapped\",[39740]],[[12226,12226],\"mapped\",[39770]],[[12227,12227],\"mapped\",[40165]],[[12228,12228],\"mapped\",[40565]],[[12229,12229],\"mapped\",[40575]],[[12230,12230],\"mapped\",[40613]],[[12231,12231],\"mapped\",[40635]],[[12232,12232],\"mapped\",[40643]],[[12233,12233],\"mapped\",[40653]],[[12234,12234],\"mapped\",[40657]],[[12235,12235],\"mapped\",[40697]],[[12236,12236],\"mapped\",[40701]],[[12237,12237],\"mapped\",[40718]],[[12238,12238],\"mapped\",[40723]],[[12239,12239],\"mapped\",[40736]],[[12240,12240],\"mapped\",[40763]],[[12241,12241],\"mapped\",[40778]],[[12242,12242],\"mapped\",[40786]],[[12243,12243],\"mapped\",[40845]],[[12244,12244],\"mapped\",[40860]],[[12245,12245],\"mapped\",[40864]],[[12246,12271],\"disallowed\"],[[12272,12283],\"disallowed\"],[[12284,12287],\"disallowed\"],[[12288,12288],\"disallowed_STD3_mapped\",[32]],[[12289,12289],\"valid\",[],\"NV8\"],[[12290,12290],\"mapped\",[46]],[[12291,12292],\"valid\",[],\"NV8\"],[[12293,12295],\"valid\"],[[12296,12329],\"valid\",[],\"NV8\"],[[12330,12333],\"valid\"],[[12334,12341],\"valid\",[],\"NV8\"],[[12342,12342],\"mapped\",[12306]],[[12343,12343],\"valid\",[],\"NV8\"],[[12344,12344],\"mapped\",[21313]],[[12345,12345],\"mapped\",[21316]],[[12346,12346],\"mapped\",[21317]],[[12347,12347],\"valid\",[],\"NV8\"],[[12348,12348],\"valid\"],[[12349,12349],\"valid\",[],\"NV8\"],[[12350,12350],\"valid\",[],\"NV8\"],[[12351,12351],\"valid\",[],\"NV8\"],[[12352,12352],\"disallowed\"],[[12353,12436],\"valid\"],[[12437,12438],\"valid\"],[[12439,12440],\"disallowed\"],[[12441,12442],\"valid\"],[[12443,12443],\"disallowed_STD3_mapped\",[32,12441]],[[12444,12444],\"disallowed_STD3_mapped\",[32,12442]],[[12445,12446],\"valid\"],[[12447,12447],\"mapped\",[12424,12426]],[[12448,12448],\"valid\",[],\"NV8\"],[[12449,12542],\"valid\"],[[12543,12543],\"mapped\",[12467,12488]],[[12544,12548],\"disallowed\"],[[12549,12588],\"valid\"],[[12589,12589],\"valid\"],[[12590,12592],\"disallowed\"],[[12593,12593],\"mapped\",[4352]],[[12594,12594],\"mapped\",[4353]],[[12595,12595],\"mapped\",[4522]],[[12596,12596],\"mapped\",[4354]],[[12597,12597],\"mapped\",[4524]],[[12598,12598],\"mapped\",[4525]],[[12599,12599],\"mapped\",[4355]],[[12600,12600],\"mapped\",[4356]],[[12601,12601],\"mapped\",[4357]],[[12602,12602],\"mapped\",[4528]],[[12603,12603],\"mapped\",[4529]],[[12604,12604],\"mapped\",[4530]],[[12605,12605],\"mapped\",[4531]],[[12606,12606],\"mapped\",[4532]],[[12607,12607],\"mapped\",[4533]],[[12608,12608],\"mapped\",[4378]],[[12609,12609],\"mapped\",[4358]],[[12610,12610],\"mapped\",[4359]],[[12611,12611],\"mapped\",[4360]],[[12612,12612],\"mapped\",[4385]],[[12613,12613],\"mapped\",[4361]],[[12614,12614],\"mapped\",[4362]],[[12615,12615],\"mapped\",[4363]],[[12616,12616],\"mapped\",[4364]],[[12617,12617],\"mapped\",[4365]],[[12618,12618],\"mapped\",[4366]],[[12619,12619],\"mapped\",[4367]],[[12620,12620],\"mapped\",[4368]],[[12621,12621],\"mapped\",[4369]],[[12622,12622],\"mapped\",[4370]],[[12623,12623],\"mapped\",[4449]],[[12624,12624],\"mapped\",[4450]],[[12625,12625],\"mapped\",[4451]],[[12626,12626],\"mapped\",[4452]],[[12627,12627],\"mapped\",[4453]],[[12628,12628],\"mapped\",[4454]],[[12629,12629],\"mapped\",[4455]],[[12630,12630],\"mapped\",[4456]],[[12631,12631],\"mapped\",[4457]],[[12632,12632],\"mapped\",[4458]],[[12633,12633],\"mapped\",[4459]],[[12634,12634],\"mapped\",[4460]],[[12635,12635],\"mapped\",[4461]],[[12636,12636],\"mapped\",[4462]],[[12637,12637],\"mapped\",[4463]],[[12638,12638],\"mapped\",[4464]],[[12639,12639],\"mapped\",[4465]],[[12640,12640],\"mapped\",[4466]],[[12641,12641],\"mapped\",[4467]],[[12642,12642],\"mapped\",[4468]],[[12643,12643],\"mapped\",[4469]],[[12644,12644],\"disallowed\"],[[12645,12645],\"mapped\",[4372]],[[12646,12646],\"mapped\",[4373]],[[12647,12647],\"mapped\",[4551]],[[12648,12648],\"mapped\",[4552]],[[12649,12649],\"mapped\",[4556]],[[12650,12650],\"mapped\",[4558]],[[12651,12651],\"mapped\",[4563]],[[12652,12652],\"mapped\",[4567]],[[12653,12653],\"mapped\",[4569]],[[12654,12654],\"mapped\",[4380]],[[12655,12655],\"mapped\",[4573]],[[12656,12656],\"mapped\",[4575]],[[12657,12657],\"mapped\",[4381]],[[12658,12658],\"mapped\",[4382]],[[12659,12659],\"mapped\",[4384]],[[12660,12660],\"mapped\",[4386]],[[12661,12661],\"mapped\",[4387]],[[12662,12662],\"mapped\",[4391]],[[12663,12663],\"mapped\",[4393]],[[12664,12664],\"mapped\",[4395]],[[12665,12665],\"mapped\",[4396]],[[12666,12666],\"mapped\",[4397]],[[12667,12667],\"mapped\",[4398]],[[12668,12668],\"mapped\",[4399]],[[12669,12669],\"mapped\",[4402]],[[12670,12670],\"mapped\",[4406]],[[12671,12671],\"mapped\",[4416]],[[12672,12672],\"mapped\",[4423]],[[12673,12673],\"mapped\",[4428]],[[12674,12674],\"mapped\",[4593]],[[12675,12675],\"mapped\",[4594]],[[12676,12676],\"mapped\",[4439]],[[12677,12677],\"mapped\",[4440]],[[12678,12678],\"mapped\",[4441]],[[12679,12679],\"mapped\",[4484]],[[12680,12680],\"mapped\",[4485]],[[12681,12681],\"mapped\",[4488]],[[12682,12682],\"mapped\",[4497]],[[12683,12683],\"mapped\",[4498]],[[12684,12684],\"mapped\",[4500]],[[12685,12685],\"mapped\",[4510]],[[12686,12686],\"mapped\",[4513]],[[12687,12687],\"disallowed\"],[[12688,12689],\"valid\",[],\"NV8\"],[[12690,12690],\"mapped\",[19968]],[[12691,12691],\"mapped\",[20108]],[[12692,12692],\"mapped\",[19977]],[[12693,12693],\"mapped\",[22235]],[[12694,12694],\"mapped\",[19978]],[[12695,12695],\"mapped\",[20013]],[[12696,12696],\"mapped\",[19979]],[[12697,12697],\"mapped\",[30002]],[[12698,12698],\"mapped\",[20057]],[[12699,12699],\"mapped\",[19993]],[[12700,12700],\"mapped\",[19969]],[[12701,12701],\"mapped\",[22825]],[[12702,12702],\"mapped\",[22320]],[[12703,12703],\"mapped\",[20154]],[[12704,12727],\"valid\"],[[12728,12730],\"valid\"],[[12731,12735],\"disallowed\"],[[12736,12751],\"valid\",[],\"NV8\"],[[12752,12771],\"valid\",[],\"NV8\"],[[12772,12783],\"disallowed\"],[[12784,12799],\"valid\"],[[12800,12800],\"disallowed_STD3_mapped\",[40,4352,41]],[[12801,12801],\"disallowed_STD3_mapped\",[40,4354,41]],[[12802,12802],\"disallowed_STD3_mapped\",[40,4355,41]],[[12803,12803],\"disallowed_STD3_mapped\",[40,4357,41]],[[12804,12804],\"disallowed_STD3_mapped\",[40,4358,41]],[[12805,12805],\"disallowed_STD3_mapped\",[40,4359,41]],[[12806,12806],\"disallowed_STD3_mapped\",[40,4361,41]],[[12807,12807],\"disallowed_STD3_mapped\",[40,4363,41]],[[12808,12808],\"disallowed_STD3_mapped\",[40,4364,41]],[[12809,12809],\"disallowed_STD3_mapped\",[40,4366,41]],[[12810,12810],\"disallowed_STD3_mapped\",[40,4367,41]],[[12811,12811],\"disallowed_STD3_mapped\",[40,4368,41]],[[12812,12812],\"disallowed_STD3_mapped\",[40,4369,41]],[[12813,12813],\"disallowed_STD3_mapped\",[40,4370,41]],[[12814,12814],\"disallowed_STD3_mapped\",[40,44032,41]],[[12815,12815],\"disallowed_STD3_mapped\",[40,45208,41]],[[12816,12816],\"disallowed_STD3_mapped\",[40,45796,41]],[[12817,12817],\"disallowed_STD3_mapped\",[40,46972,41]],[[12818,12818],\"disallowed_STD3_mapped\",[40,47560,41]],[[12819,12819],\"disallowed_STD3_mapped\",[40,48148,41]],[[12820,12820],\"disallowed_STD3_mapped\",[40,49324,41]],[[12821,12821],\"disallowed_STD3_mapped\",[40,50500,41]],[[12822,12822],\"disallowed_STD3_mapped\",[40,51088,41]],[[12823,12823],\"disallowed_STD3_mapped\",[40,52264,41]],[[12824,12824],\"disallowed_STD3_mapped\",[40,52852,41]],[[12825,12825],\"disallowed_STD3_mapped\",[40,53440,41]],[[12826,12826],\"disallowed_STD3_mapped\",[40,54028,41]],[[12827,12827],\"disallowed_STD3_mapped\",[40,54616,41]],[[12828,12828],\"disallowed_STD3_mapped\",[40,51452,41]],[[12829,12829],\"disallowed_STD3_mapped\",[40,50724,51204,41]],[[12830,12830],\"disallowed_STD3_mapped\",[40,50724,54980,41]],[[12831,12831],\"disallowed\"],[[12832,12832],\"disallowed_STD3_mapped\",[40,19968,41]],[[12833,12833],\"disallowed_STD3_mapped\",[40,20108,41]],[[12834,12834],\"disallowed_STD3_mapped\",[40,19977,41]],[[12835,12835],\"disallowed_STD3_mapped\",[40,22235,41]],[[12836,12836],\"disallowed_STD3_mapped\",[40,20116,41]],[[12837,12837],\"disallowed_STD3_mapped\",[40,20845,41]],[[12838,12838],\"disallowed_STD3_mapped\",[40,19971,41]],[[12839,12839],\"disallowed_STD3_mapped\",[40,20843,41]],[[12840,12840],\"disallowed_STD3_mapped\",[40,20061,41]],[[12841,12841],\"disallowed_STD3_mapped\",[40,21313,41]],[[12842,12842],\"disallowed_STD3_mapped\",[40,26376,41]],[[12843,12843],\"disallowed_STD3_mapped\",[40,28779,41]],[[12844,12844],\"disallowed_STD3_mapped\",[40,27700,41]],[[12845,12845],\"disallowed_STD3_mapped\",[40,26408,41]],[[12846,12846],\"disallowed_STD3_mapped\",[40,37329,41]],[[12847,12847],\"disallowed_STD3_mapped\",[40,22303,41]],[[12848,12848],\"disallowed_STD3_mapped\",[40,26085,41]],[[12849,12849],\"disallowed_STD3_mapped\",[40,26666,41]],[[12850,12850],\"disallowed_STD3_mapped\",[40,26377,41]],[[12851,12851],\"disallowed_STD3_mapped\",[40,31038,41]],[[12852,12852],\"disallowed_STD3_mapped\",[40,21517,41]],[[12853,12853],\"disallowed_STD3_mapped\",[40,29305,41]],[[12854,12854],\"disallowed_STD3_mapped\",[40,36001,41]],[[12855,12855],\"disallowed_STD3_mapped\",[40,31069,41]],[[12856,12856],\"disallowed_STD3_mapped\",[40,21172,41]],[[12857,12857],\"disallowed_STD3_mapped\",[40,20195,41]],[[12858,12858],\"disallowed_STD3_mapped\",[40,21628,41]],[[12859,12859],\"disallowed_STD3_mapped\",[40,23398,41]],[[12860,12860],\"disallowed_STD3_mapped\",[40,30435,41]],[[12861,12861],\"disallowed_STD3_mapped\",[40,20225,41]],[[12862,12862],\"disallowed_STD3_mapped\",[40,36039,41]],[[12863,12863],\"disallowed_STD3_mapped\",[40,21332,41]],[[12864,12864],\"disallowed_STD3_mapped\",[40,31085,41]],[[12865,12865],\"disallowed_STD3_mapped\",[40,20241,41]],[[12866,12866],\"disallowed_STD3_mapped\",[40,33258,41]],[[12867,12867],\"disallowed_STD3_mapped\",[40,33267,41]],[[12868,12868],\"mapped\",[21839]],[[12869,12869],\"mapped\",[24188]],[[12870,12870],\"mapped\",[25991]],[[12871,12871],\"mapped\",[31631]],[[12872,12879],\"valid\",[],\"NV8\"],[[12880,12880],\"mapped\",[112,116,101]],[[12881,12881],\"mapped\",[50,49]],[[12882,12882],\"mapped\",[50,50]],[[12883,12883],\"mapped\",[50,51]],[[12884,12884],\"mapped\",[50,52]],[[12885,12885],\"mapped\",[50,53]],[[12886,12886],\"mapped\",[50,54]],[[12887,12887],\"mapped\",[50,55]],[[12888,12888],\"mapped\",[50,56]],[[12889,12889],\"mapped\",[50,57]],[[12890,12890],\"mapped\",[51,48]],[[12891,12891],\"mapped\",[51,49]],[[12892,12892],\"mapped\",[51,50]],[[12893,12893],\"mapped\",[51,51]],[[12894,12894],\"mapped\",[51,52]],[[12895,12895],\"mapped\",[51,53]],[[12896,12896],\"mapped\",[4352]],[[12897,12897],\"mapped\",[4354]],[[12898,12898],\"mapped\",[4355]],[[12899,12899],\"mapped\",[4357]],[[12900,12900],\"mapped\",[4358]],[[12901,12901],\"mapped\",[4359]],[[12902,12902],\"mapped\",[4361]],[[12903,12903],\"mapped\",[4363]],[[12904,12904],\"mapped\",[4364]],[[12905,12905],\"mapped\",[4366]],[[12906,12906],\"mapped\",[4367]],[[12907,12907],\"mapped\",[4368]],[[12908,12908],\"mapped\",[4369]],[[12909,12909],\"mapped\",[4370]],[[12910,12910],\"mapped\",[44032]],[[12911,12911],\"mapped\",[45208]],[[12912,12912],\"mapped\",[45796]],[[12913,12913],\"mapped\",[46972]],[[12914,12914],\"mapped\",[47560]],[[12915,12915],\"mapped\",[48148]],[[12916,12916],\"mapped\",[49324]],[[12917,12917],\"mapped\",[50500]],[[12918,12918],\"mapped\",[51088]],[[12919,12919],\"mapped\",[52264]],[[12920,12920],\"mapped\",[52852]],[[12921,12921],\"mapped\",[53440]],[[12922,12922],\"mapped\",[54028]],[[12923,12923],\"mapped\",[54616]],[[12924,12924],\"mapped\",[52280,44256]],[[12925,12925],\"mapped\",[51452,51032]],[[12926,12926],\"mapped\",[50864]],[[12927,12927],\"valid\",[],\"NV8\"],[[12928,12928],\"mapped\",[19968]],[[12929,12929],\"mapped\",[20108]],[[12930,12930],\"mapped\",[19977]],[[12931,12931],\"mapped\",[22235]],[[12932,12932],\"mapped\",[20116]],[[12933,12933],\"mapped\",[20845]],[[12934,12934],\"mapped\",[19971]],[[12935,12935],\"mapped\",[20843]],[[12936,12936],\"mapped\",[20061]],[[12937,12937],\"mapped\",[21313]],[[12938,12938],\"mapped\",[26376]],[[12939,12939],\"mapped\",[28779]],[[12940,12940],\"mapped\",[27700]],[[12941,12941],\"mapped\",[26408]],[[12942,12942],\"mapped\",[37329]],[[12943,12943],\"mapped\",[22303]],[[12944,12944],\"mapped\",[26085]],[[12945,12945],\"mapped\",[26666]],[[12946,12946],\"mapped\",[26377]],[[12947,12947],\"mapped\",[31038]],[[12948,12948],\"mapped\",[21517]],[[12949,12949],\"mapped\",[29305]],[[12950,12950],\"mapped\",[36001]],[[12951,12951],\"mapped\",[31069]],[[12952,12952],\"mapped\",[21172]],[[12953,12953],\"mapped\",[31192]],[[12954,12954],\"mapped\",[30007]],[[12955,12955],\"mapped\",[22899]],[[12956,12956],\"mapped\",[36969]],[[12957,12957],\"mapped\",[20778]],[[12958,12958],\"mapped\",[21360]],[[12959,12959],\"mapped\",[27880]],[[12960,12960],\"mapped\",[38917]],[[12961,12961],\"mapped\",[20241]],[[12962,12962],\"mapped\",[20889]],[[12963,12963],\"mapped\",[27491]],[[12964,12964],\"mapped\",[19978]],[[12965,12965],\"mapped\",[20013]],[[12966,12966],\"mapped\",[19979]],[[12967,12967],\"mapped\",[24038]],[[12968,12968],\"mapped\",[21491]],[[12969,12969],\"mapped\",[21307]],[[12970,12970],\"mapped\",[23447]],[[12971,12971],\"mapped\",[23398]],[[12972,12972],\"mapped\",[30435]],[[12973,12973],\"mapped\",[20225]],[[12974,12974],\"mapped\",[36039]],[[12975,12975],\"mapped\",[21332]],[[12976,12976],\"mapped\",[22812]],[[12977,12977],\"mapped\",[51,54]],[[12978,12978],\"mapped\",[51,55]],[[12979,12979],\"mapped\",[51,56]],[[12980,12980],\"mapped\",[51,57]],[[12981,12981],\"mapped\",[52,48]],[[12982,12982],\"mapped\",[52,49]],[[12983,12983],\"mapped\",[52,50]],[[12984,12984],\"mapped\",[52,51]],[[12985,12985],\"mapped\",[52,52]],[[12986,12986],\"mapped\",[52,53]],[[12987,12987],\"mapped\",[52,54]],[[12988,12988],\"mapped\",[52,55]],[[12989,12989],\"mapped\",[52,56]],[[12990,12990],\"mapped\",[52,57]],[[12991,12991],\"mapped\",[53,48]],[[12992,12992],\"mapped\",[49,26376]],[[12993,12993],\"mapped\",[50,26376]],[[12994,12994],\"mapped\",[51,26376]],[[12995,12995],\"mapped\",[52,26376]],[[12996,12996],\"mapped\",[53,26376]],[[12997,12997],\"mapped\",[54,26376]],[[12998,12998],\"mapped\",[55,26376]],[[12999,12999],\"mapped\",[56,26376]],[[13000,13000],\"mapped\",[57,26376]],[[13001,13001],\"mapped\",[49,48,26376]],[[13002,13002],\"mapped\",[49,49,26376]],[[13003,13003],\"mapped\",[49,50,26376]],[[13004,13004],\"mapped\",[104,103]],[[13005,13005],\"mapped\",[101,114,103]],[[13006,13006],\"mapped\",[101,118]],[[13007,13007],\"mapped\",[108,116,100]],[[13008,13008],\"mapped\",[12450]],[[13009,13009],\"mapped\",[12452]],[[13010,13010],\"mapped\",[12454]],[[13011,13011],\"mapped\",[12456]],[[13012,13012],\"mapped\",[12458]],[[13013,13013],\"mapped\",[12459]],[[13014,13014],\"mapped\",[12461]],[[13015,13015],\"mapped\",[12463]],[[13016,13016],\"mapped\",[12465]],[[13017,13017],\"mapped\",[12467]],[[13018,13018],\"mapped\",[12469]],[[13019,13019],\"mapped\",[12471]],[[13020,13020],\"mapped\",[12473]],[[13021,13021],\"mapped\",[12475]],[[13022,13022],\"mapped\",[12477]],[[13023,13023],\"mapped\",[12479]],[[13024,13024],\"mapped\",[12481]],[[13025,13025],\"mapped\",[12484]],[[13026,13026],\"mapped\",[12486]],[[13027,13027],\"mapped\",[12488]],[[13028,13028],\"mapped\",[12490]],[[13029,13029],\"mapped\",[12491]],[[13030,13030],\"mapped\",[12492]],[[13031,13031],\"mapped\",[12493]],[[13032,13032],\"mapped\",[12494]],[[13033,13033],\"mapped\",[12495]],[[13034,13034],\"mapped\",[12498]],[[13035,13035],\"mapped\",[12501]],[[13036,13036],\"mapped\",[12504]],[[13037,13037],\"mapped\",[12507]],[[13038,13038],\"mapped\",[12510]],[[13039,13039],\"mapped\",[12511]],[[13040,13040],\"mapped\",[12512]],[[13041,13041],\"mapped\",[12513]],[[13042,13042],\"mapped\",[12514]],[[13043,13043],\"mapped\",[12516]],[[13044,13044],\"mapped\",[12518]],[[13045,13045],\"mapped\",[12520]],[[13046,13046],\"mapped\",[12521]],[[13047,13047],\"mapped\",[12522]],[[13048,13048],\"mapped\",[12523]],[[13049,13049],\"mapped\",[12524]],[[13050,13050],\"mapped\",[12525]],[[13051,13051],\"mapped\",[12527]],[[13052,13052],\"mapped\",[12528]],[[13053,13053],\"mapped\",[12529]],[[13054,13054],\"mapped\",[12530]],[[13055,13055],\"disallowed\"],[[13056,13056],\"mapped\",[12450,12497,12540,12488]],[[13057,13057],\"mapped\",[12450,12523,12501,12449]],[[13058,13058],\"mapped\",[12450,12531,12506,12450]],[[13059,13059],\"mapped\",[12450,12540,12523]],[[13060,13060],\"mapped\",[12452,12491,12531,12464]],[[13061,13061],\"mapped\",[12452,12531,12481]],[[13062,13062],\"mapped\",[12454,12457,12531]],[[13063,13063],\"mapped\",[12456,12473,12463,12540,12489]],[[13064,13064],\"mapped\",[12456,12540,12459,12540]],[[13065,13065],\"mapped\",[12458,12531,12473]],[[13066,13066],\"mapped\",[12458,12540,12512]],[[13067,13067],\"mapped\",[12459,12452,12522]],[[13068,13068],\"mapped\",[12459,12521,12483,12488]],[[13069,13069],\"mapped\",[12459,12525,12522,12540]],[[13070,13070],\"mapped\",[12460,12525,12531]],[[13071,13071],\"mapped\",[12460,12531,12510]],[[13072,13072],\"mapped\",[12462,12460]],[[13073,13073],\"mapped\",[12462,12491,12540]],[[13074,13074],\"mapped\",[12461,12517,12522,12540]],[[13075,13075],\"mapped\",[12462,12523,12480,12540]],[[13076,13076],\"mapped\",[12461,12525]],[[13077,13077],\"mapped\",[12461,12525,12464,12521,12512]],[[13078,13078],\"mapped\",[12461,12525,12513,12540,12488,12523]],[[13079,13079],\"mapped\",[12461,12525,12527,12483,12488]],[[13080,13080],\"mapped\",[12464,12521,12512]],[[13081,13081],\"mapped\",[12464,12521,12512,12488,12531]],[[13082,13082],\"mapped\",[12463,12523,12476,12452,12525]],[[13083,13083],\"mapped\",[12463,12525,12540,12493]],[[13084,13084],\"mapped\",[12465,12540,12473]],[[13085,13085],\"mapped\",[12467,12523,12490]],[[13086,13086],\"mapped\",[12467,12540,12509]],[[13087,13087],\"mapped\",[12469,12452,12463,12523]],[[13088,13088],\"mapped\",[12469,12531,12481,12540,12512]],[[13089,13089],\"mapped\",[12471,12522,12531,12464]],[[13090,13090],\"mapped\",[12475,12531,12481]],[[13091,13091],\"mapped\",[12475,12531,12488]],[[13092,13092],\"mapped\",[12480,12540,12473]],[[13093,13093],\"mapped\",[12487,12471]],[[13094,13094],\"mapped\",[12489,12523]],[[13095,13095],\"mapped\",[12488,12531]],[[13096,13096],\"mapped\",[12490,12494]],[[13097,13097],\"mapped\",[12494,12483,12488]],[[13098,13098],\"mapped\",[12495,12452,12484]],[[13099,13099],\"mapped\",[12497,12540,12475,12531,12488]],[[13100,13100],\"mapped\",[12497,12540,12484]],[[13101,13101],\"mapped\",[12496,12540,12524,12523]],[[13102,13102],\"mapped\",[12500,12450,12473,12488,12523]],[[13103,13103],\"mapped\",[12500,12463,12523]],[[13104,13104],\"mapped\",[12500,12467]],[[13105,13105],\"mapped\",[12499,12523]],[[13106,13106],\"mapped\",[12501,12449,12521,12483,12489]],[[13107,13107],\"mapped\",[12501,12451,12540,12488]],[[13108,13108],\"mapped\",[12502,12483,12471,12455,12523]],[[13109,13109],\"mapped\",[12501,12521,12531]],[[13110,13110],\"mapped\",[12504,12463,12479,12540,12523]],[[13111,13111],\"mapped\",[12506,12477]],[[13112,13112],\"mapped\",[12506,12491,12498]],[[13113,13113],\"mapped\",[12504,12523,12484]],[[13114,13114],\"mapped\",[12506,12531,12473]],[[13115,13115],\"mapped\",[12506,12540,12472]],[[13116,13116],\"mapped\",[12505,12540,12479]],[[13117,13117],\"mapped\",[12509,12452,12531,12488]],[[13118,13118],\"mapped\",[12508,12523,12488]],[[13119,13119],\"mapped\",[12507,12531]],[[13120,13120],\"mapped\",[12509,12531,12489]],[[13121,13121],\"mapped\",[12507,12540,12523]],[[13122,13122],\"mapped\",[12507,12540,12531]],[[13123,13123],\"mapped\",[12510,12452,12463,12525]],[[13124,13124],\"mapped\",[12510,12452,12523]],[[13125,13125],\"mapped\",[12510,12483,12495]],[[13126,13126],\"mapped\",[12510,12523,12463]],[[13127,13127],\"mapped\",[12510,12531,12471,12519,12531]],[[13128,13128],\"mapped\",[12511,12463,12525,12531]],[[13129,13129],\"mapped\",[12511,12522]],[[13130,13130],\"mapped\",[12511,12522,12496,12540,12523]],[[13131,13131],\"mapped\",[12513,12460]],[[13132,13132],\"mapped\",[12513,12460,12488,12531]],[[13133,13133],\"mapped\",[12513,12540,12488,12523]],[[13134,13134],\"mapped\",[12516,12540,12489]],[[13135,13135],\"mapped\",[12516,12540,12523]],[[13136,13136],\"mapped\",[12518,12450,12531]],[[13137,13137],\"mapped\",[12522,12483,12488,12523]],[[13138,13138],\"mapped\",[12522,12521]],[[13139,13139],\"mapped\",[12523,12500,12540]],[[13140,13140],\"mapped\",[12523,12540,12502,12523]],[[13141,13141],\"mapped\",[12524,12512]],[[13142,13142],\"mapped\",[12524,12531,12488,12466,12531]],[[13143,13143],\"mapped\",[12527,12483,12488]],[[13144,13144],\"mapped\",[48,28857]],[[13145,13145],\"mapped\",[49,28857]],[[13146,13146],\"mapped\",[50,28857]],[[13147,13147],\"mapped\",[51,28857]],[[13148,13148],\"mapped\",[52,28857]],[[13149,13149],\"mapped\",[53,28857]],[[13150,13150],\"mapped\",[54,28857]],[[13151,13151],\"mapped\",[55,28857]],[[13152,13152],\"mapped\",[56,28857]],[[13153,13153],\"mapped\",[57,28857]],[[13154,13154],\"mapped\",[49,48,28857]],[[13155,13155],\"mapped\",[49,49,28857]],[[13156,13156],\"mapped\",[49,50,28857]],[[13157,13157],\"mapped\",[49,51,28857]],[[13158,13158],\"mapped\",[49,52,28857]],[[13159,13159],\"mapped\",[49,53,28857]],[[13160,13160],\"mapped\",[49,54,28857]],[[13161,13161],\"mapped\",[49,55,28857]],[[13162,13162],\"mapped\",[49,56,28857]],[[13163,13163],\"mapped\",[49,57,28857]],[[13164,13164],\"mapped\",[50,48,28857]],[[13165,13165],\"mapped\",[50,49,28857]],[[13166,13166],\"mapped\",[50,50,28857]],[[13167,13167],\"mapped\",[50,51,28857]],[[13168,13168],\"mapped\",[50,52,28857]],[[13169,13169],\"mapped\",[104,112,97]],[[13170,13170],\"mapped\",[100,97]],[[13171,13171],\"mapped\",[97,117]],[[13172,13172],\"mapped\",[98,97,114]],[[13173,13173],\"mapped\",[111,118]],[[13174,13174],\"mapped\",[112,99]],[[13175,13175],\"mapped\",[100,109]],[[13176,13176],\"mapped\",[100,109,50]],[[13177,13177],\"mapped\",[100,109,51]],[[13178,13178],\"mapped\",[105,117]],[[13179,13179],\"mapped\",[24179,25104]],[[13180,13180],\"mapped\",[26157,21644]],[[13181,13181],\"mapped\",[22823,27491]],[[13182,13182],\"mapped\",[26126,27835]],[[13183,13183],\"mapped\",[26666,24335,20250,31038]],[[13184,13184],\"mapped\",[112,97]],[[13185,13185],\"mapped\",[110,97]],[[13186,13186],\"mapped\",[956,97]],[[13187,13187],\"mapped\",[109,97]],[[13188,13188],\"mapped\",[107,97]],[[13189,13189],\"mapped\",[107,98]],[[13190,13190],\"mapped\",[109,98]],[[13191,13191],\"mapped\",[103,98]],[[13192,13192],\"mapped\",[99,97,108]],[[13193,13193],\"mapped\",[107,99,97,108]],[[13194,13194],\"mapped\",[112,102]],[[13195,13195],\"mapped\",[110,102]],[[13196,13196],\"mapped\",[956,102]],[[13197,13197],\"mapped\",[956,103]],[[13198,13198],\"mapped\",[109,103]],[[13199,13199],\"mapped\",[107,103]],[[13200,13200],\"mapped\",[104,122]],[[13201,13201],\"mapped\",[107,104,122]],[[13202,13202],\"mapped\",[109,104,122]],[[13203,13203],\"mapped\",[103,104,122]],[[13204,13204],\"mapped\",[116,104,122]],[[13205,13205],\"mapped\",[956,108]],[[13206,13206],\"mapped\",[109,108]],[[13207,13207],\"mapped\",[100,108]],[[13208,13208],\"mapped\",[107,108]],[[13209,13209],\"mapped\",[102,109]],[[13210,13210],\"mapped\",[110,109]],[[13211,13211],\"mapped\",[956,109]],[[13212,13212],\"mapped\",[109,109]],[[13213,13213],\"mapped\",[99,109]],[[13214,13214],\"mapped\",[107,109]],[[13215,13215],\"mapped\",[109,109,50]],[[13216,13216],\"mapped\",[99,109,50]],[[13217,13217],\"mapped\",[109,50]],[[13218,13218],\"mapped\",[107,109,50]],[[13219,13219],\"mapped\",[109,109,51]],[[13220,13220],\"mapped\",[99,109,51]],[[13221,13221],\"mapped\",[109,51]],[[13222,13222],\"mapped\",[107,109,51]],[[13223,13223],\"mapped\",[109,8725,115]],[[13224,13224],\"mapped\",[109,8725,115,50]],[[13225,13225],\"mapped\",[112,97]],[[13226,13226],\"mapped\",[107,112,97]],[[13227,13227],\"mapped\",[109,112,97]],[[13228,13228],\"mapped\",[103,112,97]],[[13229,13229],\"mapped\",[114,97,100]],[[13230,13230],\"mapped\",[114,97,100,8725,115]],[[13231,13231],\"mapped\",[114,97,100,8725,115,50]],[[13232,13232],\"mapped\",[112,115]],[[13233,13233],\"mapped\",[110,115]],[[13234,13234],\"mapped\",[956,115]],[[13235,13235],\"mapped\",[109,115]],[[13236,13236],\"mapped\",[112,118]],[[13237,13237],\"mapped\",[110,118]],[[13238,13238],\"mapped\",[956,118]],[[13239,13239],\"mapped\",[109,118]],[[13240,13240],\"mapped\",[107,118]],[[13241,13241],\"mapped\",[109,118]],[[13242,13242],\"mapped\",[112,119]],[[13243,13243],\"mapped\",[110,119]],[[13244,13244],\"mapped\",[956,119]],[[13245,13245],\"mapped\",[109,119]],[[13246,13246],\"mapped\",[107,119]],[[13247,13247],\"mapped\",[109,119]],[[13248,13248],\"mapped\",[107,969]],[[13249,13249],\"mapped\",[109,969]],[[13250,13250],\"disallowed\"],[[13251,13251],\"mapped\",[98,113]],[[13252,13252],\"mapped\",[99,99]],[[13253,13253],\"mapped\",[99,100]],[[13254,13254],\"mapped\",[99,8725,107,103]],[[13255,13255],\"disallowed\"],[[13256,13256],\"mapped\",[100,98]],[[13257,13257],\"mapped\",[103,121]],[[13258,13258],\"mapped\",[104,97]],[[13259,13259],\"mapped\",[104,112]],[[13260,13260],\"mapped\",[105,110]],[[13261,13261],\"mapped\",[107,107]],[[13262,13262],\"mapped\",[107,109]],[[13263,13263],\"mapped\",[107,116]],[[13264,13264],\"mapped\",[108,109]],[[13265,13265],\"mapped\",[108,110]],[[13266,13266],\"mapped\",[108,111,103]],[[13267,13267],\"mapped\",[108,120]],[[13268,13268],\"mapped\",[109,98]],[[13269,13269],\"mapped\",[109,105,108]],[[13270,13270],\"mapped\",[109,111,108]],[[13271,13271],\"mapped\",[112,104]],[[13272,13272],\"disallowed\"],[[13273,13273],\"mapped\",[112,112,109]],[[13274,13274],\"mapped\",[112,114]],[[13275,13275],\"mapped\",[115,114]],[[13276,13276],\"mapped\",[115,118]],[[13277,13277],\"mapped\",[119,98]],[[13278,13278],\"mapped\",[118,8725,109]],[[13279,13279],\"mapped\",[97,8725,109]],[[13280,13280],\"mapped\",[49,26085]],[[13281,13281],\"mapped\",[50,26085]],[[13282,13282],\"mapped\",[51,26085]],[[13283,13283],\"mapped\",[52,26085]],[[13284,13284],\"mapped\",[53,26085]],[[13285,13285],\"mapped\",[54,26085]],[[13286,13286],\"mapped\",[55,26085]],[[13287,13287],\"mapped\",[56,26085]],[[13288,13288],\"mapped\",[57,26085]],[[13289,13289],\"mapped\",[49,48,26085]],[[13290,13290],\"mapped\",[49,49,26085]],[[13291,13291],\"mapped\",[49,50,26085]],[[13292,13292],\"mapped\",[49,51,26085]],[[13293,13293],\"mapped\",[49,52,26085]],[[13294,13294],\"mapped\",[49,53,26085]],[[13295,13295],\"mapped\",[49,54,26085]],[[13296,13296],\"mapped\",[49,55,26085]],[[13297,13297],\"mapped\",[49,56,26085]],[[13298,13298],\"mapped\",[49,57,26085]],[[13299,13299],\"mapped\",[50,48,26085]],[[13300,13300],\"mapped\",[50,49,26085]],[[13301,13301],\"mapped\",[50,50,26085]],[[13302,13302],\"mapped\",[50,51,26085]],[[13303,13303],\"mapped\",[50,52,26085]],[[13304,13304],\"mapped\",[50,53,26085]],[[13305,13305],\"mapped\",[50,54,26085]],[[13306,13306],\"mapped\",[50,55,26085]],[[13307,13307],\"mapped\",[50,56,26085]],[[13308,13308],\"mapped\",[50,57,26085]],[[13309,13309],\"mapped\",[51,48,26085]],[[13310,13310],\"mapped\",[51,49,26085]],[[13311,13311],\"mapped\",[103,97,108]],[[13312,19893],\"valid\"],[[19894,19903],\"disallowed\"],[[19904,19967],\"valid\",[],\"NV8\"],[[19968,40869],\"valid\"],[[40870,40891],\"valid\"],[[40892,40899],\"valid\"],[[40900,40907],\"valid\"],[[40908,40908],\"valid\"],[[40909,40917],\"valid\"],[[40918,40959],\"disallowed\"],[[40960,42124],\"valid\"],[[42125,42127],\"disallowed\"],[[42128,42145],\"valid\",[],\"NV8\"],[[42146,42147],\"valid\",[],\"NV8\"],[[42148,42163],\"valid\",[],\"NV8\"],[[42164,42164],\"valid\",[],\"NV8\"],[[42165,42176],\"valid\",[],\"NV8\"],[[42177,42177],\"valid\",[],\"NV8\"],[[42178,42180],\"valid\",[],\"NV8\"],[[42181,42181],\"valid\",[],\"NV8\"],[[42182,42182],\"valid\",[],\"NV8\"],[[42183,42191],\"disallowed\"],[[42192,42237],\"valid\"],[[42238,42239],\"valid\",[],\"NV8\"],[[42240,42508],\"valid\"],[[42509,42511],\"valid\",[],\"NV8\"],[[42512,42539],\"valid\"],[[42540,42559],\"disallowed\"],[[42560,42560],\"mapped\",[42561]],[[42561,42561],\"valid\"],[[42562,42562],\"mapped\",[42563]],[[42563,42563],\"valid\"],[[42564,42564],\"mapped\",[42565]],[[42565,42565],\"valid\"],[[42566,42566],\"mapped\",[42567]],[[42567,42567],\"valid\"],[[42568,42568],\"mapped\",[42569]],[[42569,42569],\"valid\"],[[42570,42570],\"mapped\",[42571]],[[42571,42571],\"valid\"],[[42572,42572],\"mapped\",[42573]],[[42573,42573],\"valid\"],[[42574,42574],\"mapped\",[42575]],[[42575,42575],\"valid\"],[[42576,42576],\"mapped\",[42577]],[[42577,42577],\"valid\"],[[42578,42578],\"mapped\",[42579]],[[42579,42579],\"valid\"],[[42580,42580],\"mapped\",[42581]],[[42581,42581],\"valid\"],[[42582,42582],\"mapped\",[42583]],[[42583,42583],\"valid\"],[[42584,42584],\"mapped\",[42585]],[[42585,42585],\"valid\"],[[42586,42586],\"mapped\",[42587]],[[42587,42587],\"valid\"],[[42588,42588],\"mapped\",[42589]],[[42589,42589],\"valid\"],[[42590,42590],\"mapped\",[42591]],[[42591,42591],\"valid\"],[[42592,42592],\"mapped\",[42593]],[[42593,42593],\"valid\"],[[42594,42594],\"mapped\",[42595]],[[42595,42595],\"valid\"],[[42596,42596],\"mapped\",[42597]],[[42597,42597],\"valid\"],[[42598,42598],\"mapped\",[42599]],[[42599,42599],\"valid\"],[[42600,42600],\"mapped\",[42601]],[[42601,42601],\"valid\"],[[42602,42602],\"mapped\",[42603]],[[42603,42603],\"valid\"],[[42604,42604],\"mapped\",[42605]],[[42605,42607],\"valid\"],[[42608,42611],\"valid\",[],\"NV8\"],[[42612,42619],\"valid\"],[[42620,42621],\"valid\"],[[42622,42622],\"valid\",[],\"NV8\"],[[42623,42623],\"valid\"],[[42624,42624],\"mapped\",[42625]],[[42625,42625],\"valid\"],[[42626,42626],\"mapped\",[42627]],[[42627,42627],\"valid\"],[[42628,42628],\"mapped\",[42629]],[[42629,42629],\"valid\"],[[42630,42630],\"mapped\",[42631]],[[42631,42631],\"valid\"],[[42632,42632],\"mapped\",[42633]],[[42633,42633],\"valid\"],[[42634,42634],\"mapped\",[42635]],[[42635,42635],\"valid\"],[[42636,42636],\"mapped\",[42637]],[[42637,42637],\"valid\"],[[42638,42638],\"mapped\",[42639]],[[42639,42639],\"valid\"],[[42640,42640],\"mapped\",[42641]],[[42641,42641],\"valid\"],[[42642,42642],\"mapped\",[42643]],[[42643,42643],\"valid\"],[[42644,42644],\"mapped\",[42645]],[[42645,42645],\"valid\"],[[42646,42646],\"mapped\",[42647]],[[42647,42647],\"valid\"],[[42648,42648],\"mapped\",[42649]],[[42649,42649],\"valid\"],[[42650,42650],\"mapped\",[42651]],[[42651,42651],\"valid\"],[[42652,42652],\"mapped\",[1098]],[[42653,42653],\"mapped\",[1100]],[[42654,42654],\"valid\"],[[42655,42655],\"valid\"],[[42656,42725],\"valid\"],[[42726,42735],\"valid\",[],\"NV8\"],[[42736,42737],\"valid\"],[[42738,42743],\"valid\",[],\"NV8\"],[[42744,42751],\"disallowed\"],[[42752,42774],\"valid\",[],\"NV8\"],[[42775,42778],\"valid\"],[[42779,42783],\"valid\"],[[42784,42785],\"valid\",[],\"NV8\"],[[42786,42786],\"mapped\",[42787]],[[42787,42787],\"valid\"],[[42788,42788],\"mapped\",[42789]],[[42789,42789],\"valid\"],[[42790,42790],\"mapped\",[42791]],[[42791,42791],\"valid\"],[[42792,42792],\"mapped\",[42793]],[[42793,42793],\"valid\"],[[42794,42794],\"mapped\",[42795]],[[42795,42795],\"valid\"],[[42796,42796],\"mapped\",[42797]],[[42797,42797],\"valid\"],[[42798,42798],\"mapped\",[42799]],[[42799,42801],\"valid\"],[[42802,42802],\"mapped\",[42803]],[[42803,42803],\"valid\"],[[42804,42804],\"mapped\",[42805]],[[42805,42805],\"valid\"],[[42806,42806],\"mapped\",[42807]],[[42807,42807],\"valid\"],[[42808,42808],\"mapped\",[42809]],[[42809,42809],\"valid\"],[[42810,42810],\"mapped\",[42811]],[[42811,42811],\"valid\"],[[42812,42812],\"mapped\",[42813]],[[42813,42813],\"valid\"],[[42814,42814],\"mapped\",[42815]],[[42815,42815],\"valid\"],[[42816,42816],\"mapped\",[42817]],[[42817,42817],\"valid\"],[[42818,42818],\"mapped\",[42819]],[[42819,42819],\"valid\"],[[42820,42820],\"mapped\",[42821]],[[42821,42821],\"valid\"],[[42822,42822],\"mapped\",[42823]],[[42823,42823],\"valid\"],[[42824,42824],\"mapped\",[42825]],[[42825,42825],\"valid\"],[[42826,42826],\"mapped\",[42827]],[[42827,42827],\"valid\"],[[42828,42828],\"mapped\",[42829]],[[42829,42829],\"valid\"],[[42830,42830],\"mapped\",[42831]],[[42831,42831],\"valid\"],[[42832,42832],\"mapped\",[42833]],[[42833,42833],\"valid\"],[[42834,42834],\"mapped\",[42835]],[[42835,42835],\"valid\"],[[42836,42836],\"mapped\",[42837]],[[42837,42837],\"valid\"],[[42838,42838],\"mapped\",[42839]],[[42839,42839],\"valid\"],[[42840,42840],\"mapped\",[42841]],[[42841,42841],\"valid\"],[[42842,42842],\"mapped\",[42843]],[[42843,42843],\"valid\"],[[42844,42844],\"mapped\",[42845]],[[42845,42845],\"valid\"],[[42846,42846],\"mapped\",[42847]],[[42847,42847],\"valid\"],[[42848,42848],\"mapped\",[42849]],[[42849,42849],\"valid\"],[[42850,42850],\"mapped\",[42851]],[[42851,42851],\"valid\"],[[42852,42852],\"mapped\",[42853]],[[42853,42853],\"valid\"],[[42854,42854],\"mapped\",[42855]],[[42855,42855],\"valid\"],[[42856,42856],\"mapped\",[42857]],[[42857,42857],\"valid\"],[[42858,42858],\"mapped\",[42859]],[[42859,42859],\"valid\"],[[42860,42860],\"mapped\",[42861]],[[42861,42861],\"valid\"],[[42862,42862],\"mapped\",[42863]],[[42863,42863],\"valid\"],[[42864,42864],\"mapped\",[42863]],[[42865,42872],\"valid\"],[[42873,42873],\"mapped\",[42874]],[[42874,42874],\"valid\"],[[42875,42875],\"mapped\",[42876]],[[42876,42876],\"valid\"],[[42877,42877],\"mapped\",[7545]],[[42878,42878],\"mapped\",[42879]],[[42879,42879],\"valid\"],[[42880,42880],\"mapped\",[42881]],[[42881,42881],\"valid\"],[[42882,42882],\"mapped\",[42883]],[[42883,42883],\"valid\"],[[42884,42884],\"mapped\",[42885]],[[42885,42885],\"valid\"],[[42886,42886],\"mapped\",[42887]],[[42887,42888],\"valid\"],[[42889,42890],\"valid\",[],\"NV8\"],[[42891,42891],\"mapped\",[42892]],[[42892,42892],\"valid\"],[[42893,42893],\"mapped\",[613]],[[42894,42894],\"valid\"],[[42895,42895],\"valid\"],[[42896,42896],\"mapped\",[42897]],[[42897,42897],\"valid\"],[[42898,42898],\"mapped\",[42899]],[[42899,42899],\"valid\"],[[42900,42901],\"valid\"],[[42902,42902],\"mapped\",[42903]],[[42903,42903],\"valid\"],[[42904,42904],\"mapped\",[42905]],[[42905,42905],\"valid\"],[[42906,42906],\"mapped\",[42907]],[[42907,42907],\"valid\"],[[42908,42908],\"mapped\",[42909]],[[42909,42909],\"valid\"],[[42910,42910],\"mapped\",[42911]],[[42911,42911],\"valid\"],[[42912,42912],\"mapped\",[42913]],[[42913,42913],\"valid\"],[[42914,42914],\"mapped\",[42915]],[[42915,42915],\"valid\"],[[42916,42916],\"mapped\",[42917]],[[42917,42917],\"valid\"],[[42918,42918],\"mapped\",[42919]],[[42919,42919],\"valid\"],[[42920,42920],\"mapped\",[42921]],[[42921,42921],\"valid\"],[[42922,42922],\"mapped\",[614]],[[42923,42923],\"mapped\",[604]],[[42924,42924],\"mapped\",[609]],[[42925,42925],\"mapped\",[620]],[[42926,42927],\"disallowed\"],[[42928,42928],\"mapped\",[670]],[[42929,42929],\"mapped\",[647]],[[42930,42930],\"mapped\",[669]],[[42931,42931],\"mapped\",[43859]],[[42932,42932],\"mapped\",[42933]],[[42933,42933],\"valid\"],[[42934,42934],\"mapped\",[42935]],[[42935,42935],\"valid\"],[[42936,42998],\"disallowed\"],[[42999,42999],\"valid\"],[[43000,43000],\"mapped\",[295]],[[43001,43001],\"mapped\",[339]],[[43002,43002],\"valid\"],[[43003,43007],\"valid\"],[[43008,43047],\"valid\"],[[43048,43051],\"valid\",[],\"NV8\"],[[43052,43055],\"disallowed\"],[[43056,43065],\"valid\",[],\"NV8\"],[[43066,43071],\"disallowed\"],[[43072,43123],\"valid\"],[[43124,43127],\"valid\",[],\"NV8\"],[[43128,43135],\"disallowed\"],[[43136,43204],\"valid\"],[[43205,43213],\"disallowed\"],[[43214,43215],\"valid\",[],\"NV8\"],[[43216,43225],\"valid\"],[[43226,43231],\"disallowed\"],[[43232,43255],\"valid\"],[[43256,43258],\"valid\",[],\"NV8\"],[[43259,43259],\"valid\"],[[43260,43260],\"valid\",[],\"NV8\"],[[43261,43261],\"valid\"],[[43262,43263],\"disallowed\"],[[43264,43309],\"valid\"],[[43310,43311],\"valid\",[],\"NV8\"],[[43312,43347],\"valid\"],[[43348,43358],\"disallowed\"],[[43359,43359],\"valid\",[],\"NV8\"],[[43360,43388],\"valid\",[],\"NV8\"],[[43389,43391],\"disallowed\"],[[43392,43456],\"valid\"],[[43457,43469],\"valid\",[],\"NV8\"],[[43470,43470],\"disallowed\"],[[43471,43481],\"valid\"],[[43482,43485],\"disallowed\"],[[43486,43487],\"valid\",[],\"NV8\"],[[43488,43518],\"valid\"],[[43519,43519],\"disallowed\"],[[43520,43574],\"valid\"],[[43575,43583],\"disallowed\"],[[43584,43597],\"valid\"],[[43598,43599],\"disallowed\"],[[43600,43609],\"valid\"],[[43610,43611],\"disallowed\"],[[43612,43615],\"valid\",[],\"NV8\"],[[43616,43638],\"valid\"],[[43639,43641],\"valid\",[],\"NV8\"],[[43642,43643],\"valid\"],[[43644,43647],\"valid\"],[[43648,43714],\"valid\"],[[43715,43738],\"disallowed\"],[[43739,43741],\"valid\"],[[43742,43743],\"valid\",[],\"NV8\"],[[43744,43759],\"valid\"],[[43760,43761],\"valid\",[],\"NV8\"],[[43762,43766],\"valid\"],[[43767,43776],\"disallowed\"],[[43777,43782],\"valid\"],[[43783,43784],\"disallowed\"],[[43785,43790],\"valid\"],[[43791,43792],\"disallowed\"],[[43793,43798],\"valid\"],[[43799,43807],\"disallowed\"],[[43808,43814],\"valid\"],[[43815,43815],\"disallowed\"],[[43816,43822],\"valid\"],[[43823,43823],\"disallowed\"],[[43824,43866],\"valid\"],[[43867,43867],\"valid\",[],\"NV8\"],[[43868,43868],\"mapped\",[42791]],[[43869,43869],\"mapped\",[43831]],[[43870,43870],\"mapped\",[619]],[[43871,43871],\"mapped\",[43858]],[[43872,43875],\"valid\"],[[43876,43877],\"valid\"],[[43878,43887],\"disallowed\"],[[43888,43888],\"mapped\",[5024]],[[43889,43889],\"mapped\",[5025]],[[43890,43890],\"mapped\",[5026]],[[43891,43891],\"mapped\",[5027]],[[43892,43892],\"mapped\",[5028]],[[43893,43893],\"mapped\",[5029]],[[43894,43894],\"mapped\",[5030]],[[43895,43895],\"mapped\",[5031]],[[43896,43896],\"mapped\",[5032]],[[43897,43897],\"mapped\",[5033]],[[43898,43898],\"mapped\",[5034]],[[43899,43899],\"mapped\",[5035]],[[43900,43900],\"mapped\",[5036]],[[43901,43901],\"mapped\",[5037]],[[43902,43902],\"mapped\",[5038]],[[43903,43903],\"mapped\",[5039]],[[43904,43904],\"mapped\",[5040]],[[43905,43905],\"mapped\",[5041]],[[43906,43906],\"mapped\",[5042]],[[43907,43907],\"mapped\",[5043]],[[43908,43908],\"mapped\",[5044]],[[43909,43909],\"mapped\",[5045]],[[43910,43910],\"mapped\",[5046]],[[43911,43911],\"mapped\",[5047]],[[43912,43912],\"mapped\",[5048]],[[43913,43913],\"mapped\",[5049]],[[43914,43914],\"mapped\",[5050]],[[43915,43915],\"mapped\",[5051]],[[43916,43916],\"mapped\",[5052]],[[43917,43917],\"mapped\",[5053]],[[43918,43918],\"mapped\",[5054]],[[43919,43919],\"mapped\",[5055]],[[43920,43920],\"mapped\",[5056]],[[43921,43921],\"mapped\",[5057]],[[43922,43922],\"mapped\",[5058]],[[43923,43923],\"mapped\",[5059]],[[43924,43924],\"mapped\",[5060]],[[43925,43925],\"mapped\",[5061]],[[43926,43926],\"mapped\",[5062]],[[43927,43927],\"mapped\",[5063]],[[43928,43928],\"mapped\",[5064]],[[43929,43929],\"mapped\",[5065]],[[43930,43930],\"mapped\",[5066]],[[43931,43931],\"mapped\",[5067]],[[43932,43932],\"mapped\",[5068]],[[43933,43933],\"mapped\",[5069]],[[43934,43934],\"mapped\",[5070]],[[43935,43935],\"mapped\",[5071]],[[43936,43936],\"mapped\",[5072]],[[43937,43937],\"mapped\",[5073]],[[43938,43938],\"mapped\",[5074]],[[43939,43939],\"mapped\",[5075]],[[43940,43940],\"mapped\",[5076]],[[43941,43941],\"mapped\",[5077]],[[43942,43942],\"mapped\",[5078]],[[43943,43943],\"mapped\",[5079]],[[43944,43944],\"mapped\",[5080]],[[43945,43945],\"mapped\",[5081]],[[43946,43946],\"mapped\",[5082]],[[43947,43947],\"mapped\",[5083]],[[43948,43948],\"mapped\",[5084]],[[43949,43949],\"mapped\",[5085]],[[43950,43950],\"mapped\",[5086]],[[43951,43951],\"mapped\",[5087]],[[43952,43952],\"mapped\",[5088]],[[43953,43953],\"mapped\",[5089]],[[43954,43954],\"mapped\",[5090]],[[43955,43955],\"mapped\",[5091]],[[43956,43956],\"mapped\",[5092]],[[43957,43957],\"mapped\",[5093]],[[43958,43958],\"mapped\",[5094]],[[43959,43959],\"mapped\",[5095]],[[43960,43960],\"mapped\",[5096]],[[43961,43961],\"mapped\",[5097]],[[43962,43962],\"mapped\",[5098]],[[43963,43963],\"mapped\",[5099]],[[43964,43964],\"mapped\",[5100]],[[43965,43965],\"mapped\",[5101]],[[43966,43966],\"mapped\",[5102]],[[43967,43967],\"mapped\",[5103]],[[43968,44010],\"valid\"],[[44011,44011],\"valid\",[],\"NV8\"],[[44012,44013],\"valid\"],[[44014,44015],\"disallowed\"],[[44016,44025],\"valid\"],[[44026,44031],\"disallowed\"],[[44032,55203],\"valid\"],[[55204,55215],\"disallowed\"],[[55216,55238],\"valid\",[],\"NV8\"],[[55239,55242],\"disallowed\"],[[55243,55291],\"valid\",[],\"NV8\"],[[55292,55295],\"disallowed\"],[[55296,57343],\"disallowed\"],[[57344,63743],\"disallowed\"],[[63744,63744],\"mapped\",[35912]],[[63745,63745],\"mapped\",[26356]],[[63746,63746],\"mapped\",[36554]],[[63747,63747],\"mapped\",[36040]],[[63748,63748],\"mapped\",[28369]],[[63749,63749],\"mapped\",[20018]],[[63750,63750],\"mapped\",[21477]],[[63751,63752],\"mapped\",[40860]],[[63753,63753],\"mapped\",[22865]],[[63754,63754],\"mapped\",[37329]],[[63755,63755],\"mapped\",[21895]],[[63756,63756],\"mapped\",[22856]],[[63757,63757],\"mapped\",[25078]],[[63758,63758],\"mapped\",[30313]],[[63759,63759],\"mapped\",[32645]],[[63760,63760],\"mapped\",[34367]],[[63761,63761],\"mapped\",[34746]],[[63762,63762],\"mapped\",[35064]],[[63763,63763],\"mapped\",[37007]],[[63764,63764],\"mapped\",[27138]],[[63765,63765],\"mapped\",[27931]],[[63766,63766],\"mapped\",[28889]],[[63767,63767],\"mapped\",[29662]],[[63768,63768],\"mapped\",[33853]],[[63769,63769],\"mapped\",[37226]],[[63770,63770],\"mapped\",[39409]],[[63771,63771],\"mapped\",[20098]],[[63772,63772],\"mapped\",[21365]],[[63773,63773],\"mapped\",[27396]],[[63774,63774],\"mapped\",[29211]],[[63775,63775],\"mapped\",[34349]],[[63776,63776],\"mapped\",[40478]],[[63777,63777],\"mapped\",[23888]],[[63778,63778],\"mapped\",[28651]],[[63779,63779],\"mapped\",[34253]],[[63780,63780],\"mapped\",[35172]],[[63781,63781],\"mapped\",[25289]],[[63782,63782],\"mapped\",[33240]],[[63783,63783],\"mapped\",[34847]],[[63784,63784],\"mapped\",[24266]],[[63785,63785],\"mapped\",[26391]],[[63786,63786],\"mapped\",[28010]],[[63787,63787],\"mapped\",[29436]],[[63788,63788],\"mapped\",[37070]],[[63789,63789],\"mapped\",[20358]],[[63790,63790],\"mapped\",[20919]],[[63791,63791],\"mapped\",[21214]],[[63792,63792],\"mapped\",[25796]],[[63793,63793],\"mapped\",[27347]],[[63794,63794],\"mapped\",[29200]],[[63795,63795],\"mapped\",[30439]],[[63796,63796],\"mapped\",[32769]],[[63797,63797],\"mapped\",[34310]],[[63798,63798],\"mapped\",[34396]],[[63799,63799],\"mapped\",[36335]],[[63800,63800],\"mapped\",[38706]],[[63801,63801],\"mapped\",[39791]],[[63802,63802],\"mapped\",[40442]],[[63803,63803],\"mapped\",[30860]],[[63804,63804],\"mapped\",[31103]],[[63805,63805],\"mapped\",[32160]],[[63806,63806],\"mapped\",[33737]],[[63807,63807],\"mapped\",[37636]],[[63808,63808],\"mapped\",[40575]],[[63809,63809],\"mapped\",[35542]],[[63810,63810],\"mapped\",[22751]],[[63811,63811],\"mapped\",[24324]],[[63812,63812],\"mapped\",[31840]],[[63813,63813],\"mapped\",[32894]],[[63814,63814],\"mapped\",[29282]],[[63815,63815],\"mapped\",[30922]],[[63816,63816],\"mapped\",[36034]],[[63817,63817],\"mapped\",[38647]],[[63818,63818],\"mapped\",[22744]],[[63819,63819],\"mapped\",[23650]],[[63820,63820],\"mapped\",[27155]],[[63821,63821],\"mapped\",[28122]],[[63822,63822],\"mapped\",[28431]],[[63823,63823],\"mapped\",[32047]],[[63824,63824],\"mapped\",[32311]],[[63825,63825],\"mapped\",[38475]],[[63826,63826],\"mapped\",[21202]],[[63827,63827],\"mapped\",[32907]],[[63828,63828],\"mapped\",[20956]],[[63829,63829],\"mapped\",[20940]],[[63830,63830],\"mapped\",[31260]],[[63831,63831],\"mapped\",[32190]],[[63832,63832],\"mapped\",[33777]],[[63833,63833],\"mapped\",[38517]],[[63834,63834],\"mapped\",[35712]],[[63835,63835],\"mapped\",[25295]],[[63836,63836],\"mapped\",[27138]],[[63837,63837],\"mapped\",[35582]],[[63838,63838],\"mapped\",[20025]],[[63839,63839],\"mapped\",[23527]],[[63840,63840],\"mapped\",[24594]],[[63841,63841],\"mapped\",[29575]],[[63842,63842],\"mapped\",[30064]],[[63843,63843],\"mapped\",[21271]],[[63844,63844],\"mapped\",[30971]],[[63845,63845],\"mapped\",[20415]],[[63846,63846],\"mapped\",[24489]],[[63847,63847],\"mapped\",[19981]],[[63848,63848],\"mapped\",[27852]],[[63849,63849],\"mapped\",[25976]],[[63850,63850],\"mapped\",[32034]],[[63851,63851],\"mapped\",[21443]],[[63852,63852],\"mapped\",[22622]],[[63853,63853],\"mapped\",[30465]],[[63854,63854],\"mapped\",[33865]],[[63855,63855],\"mapped\",[35498]],[[63856,63856],\"mapped\",[27578]],[[63857,63857],\"mapped\",[36784]],[[63858,63858],\"mapped\",[27784]],[[63859,63859],\"mapped\",[25342]],[[63860,63860],\"mapped\",[33509]],[[63861,63861],\"mapped\",[25504]],[[63862,63862],\"mapped\",[30053]],[[63863,63863],\"mapped\",[20142]],[[63864,63864],\"mapped\",[20841]],[[63865,63865],\"mapped\",[20937]],[[63866,63866],\"mapped\",[26753]],[[63867,63867],\"mapped\",[31975]],[[63868,63868],\"mapped\",[33391]],[[63869,63869],\"mapped\",[35538]],[[63870,63870],\"mapped\",[37327]],[[63871,63871],\"mapped\",[21237]],[[63872,63872],\"mapped\",[21570]],[[63873,63873],\"mapped\",[22899]],[[63874,63874],\"mapped\",[24300]],[[63875,63875],\"mapped\",[26053]],[[63876,63876],\"mapped\",[28670]],[[63877,63877],\"mapped\",[31018]],[[63878,63878],\"mapped\",[38317]],[[63879,63879],\"mapped\",[39530]],[[63880,63880],\"mapped\",[40599]],[[63881,63881],\"mapped\",[40654]],[[63882,63882],\"mapped\",[21147]],[[63883,63883],\"mapped\",[26310]],[[63884,63884],\"mapped\",[27511]],[[63885,63885],\"mapped\",[36706]],[[63886,63886],\"mapped\",[24180]],[[63887,63887],\"mapped\",[24976]],[[63888,63888],\"mapped\",[25088]],[[63889,63889],\"mapped\",[25754]],[[63890,63890],\"mapped\",[28451]],[[63891,63891],\"mapped\",[29001]],[[63892,63892],\"mapped\",[29833]],[[63893,63893],\"mapped\",[31178]],[[63894,63894],\"mapped\",[32244]],[[63895,63895],\"mapped\",[32879]],[[63896,63896],\"mapped\",[36646]],[[63897,63897],\"mapped\",[34030]],[[63898,63898],\"mapped\",[36899]],[[63899,63899],\"mapped\",[37706]],[[63900,63900],\"mapped\",[21015]],[[63901,63901],\"mapped\",[21155]],[[63902,63902],\"mapped\",[21693]],[[63903,63903],\"mapped\",[28872]],[[63904,63904],\"mapped\",[35010]],[[63905,63905],\"mapped\",[35498]],[[63906,63906],\"mapped\",[24265]],[[63907,63907],\"mapped\",[24565]],[[63908,63908],\"mapped\",[25467]],[[63909,63909],\"mapped\",[27566]],[[63910,63910],\"mapped\",[31806]],[[63911,63911],\"mapped\",[29557]],[[63912,63912],\"mapped\",[20196]],[[63913,63913],\"mapped\",[22265]],[[63914,63914],\"mapped\",[23527]],[[63915,63915],\"mapped\",[23994]],[[63916,63916],\"mapped\",[24604]],[[63917,63917],\"mapped\",[29618]],[[63918,63918],\"mapped\",[29801]],[[63919,63919],\"mapped\",[32666]],[[63920,63920],\"mapped\",[32838]],[[63921,63921],\"mapped\",[37428]],[[63922,63922],\"mapped\",[38646]],[[63923,63923],\"mapped\",[38728]],[[63924,63924],\"mapped\",[38936]],[[63925,63925],\"mapped\",[20363]],[[63926,63926],\"mapped\",[31150]],[[63927,63927],\"mapped\",[37300]],[[63928,63928],\"mapped\",[38584]],[[63929,63929],\"mapped\",[24801]],[[63930,63930],\"mapped\",[20102]],[[63931,63931],\"mapped\",[20698]],[[63932,63932],\"mapped\",[23534]],[[63933,63933],\"mapped\",[23615]],[[63934,63934],\"mapped\",[26009]],[[63935,63935],\"mapped\",[27138]],[[63936,63936],\"mapped\",[29134]],[[63937,63937],\"mapped\",[30274]],[[63938,63938],\"mapped\",[34044]],[[63939,63939],\"mapped\",[36988]],[[63940,63940],\"mapped\",[40845]],[[63941,63941],\"mapped\",[26248]],[[63942,63942],\"mapped\",[38446]],[[63943,63943],\"mapped\",[21129]],[[63944,63944],\"mapped\",[26491]],[[63945,63945],\"mapped\",[26611]],[[63946,63946],\"mapped\",[27969]],[[63947,63947],\"mapped\",[28316]],[[63948,63948],\"mapped\",[29705]],[[63949,63949],\"mapped\",[30041]],[[63950,63950],\"mapped\",[30827]],[[63951,63951],\"mapped\",[32016]],[[63952,63952],\"mapped\",[39006]],[[63953,63953],\"mapped\",[20845]],[[63954,63954],\"mapped\",[25134]],[[63955,63955],\"mapped\",[38520]],[[63956,63956],\"mapped\",[20523]],[[63957,63957],\"mapped\",[23833]],[[63958,63958],\"mapped\",[28138]],[[63959,63959],\"mapped\",[36650]],[[63960,63960],\"mapped\",[24459]],[[63961,63961],\"mapped\",[24900]],[[63962,63962],\"mapped\",[26647]],[[63963,63963],\"mapped\",[29575]],[[63964,63964],\"mapped\",[38534]],[[63965,63965],\"mapped\",[21033]],[[63966,63966],\"mapped\",[21519]],[[63967,63967],\"mapped\",[23653]],[[63968,63968],\"mapped\",[26131]],[[63969,63969],\"mapped\",[26446]],[[63970,63970],\"mapped\",[26792]],[[63971,63971],\"mapped\",[27877]],[[63972,63972],\"mapped\",[29702]],[[63973,63973],\"mapped\",[30178]],[[63974,63974],\"mapped\",[32633]],[[63975,63975],\"mapped\",[35023]],[[63976,63976],\"mapped\",[35041]],[[63977,63977],\"mapped\",[37324]],[[63978,63978],\"mapped\",[38626]],[[63979,63979],\"mapped\",[21311]],[[63980,63980],\"mapped\",[28346]],[[63981,63981],\"mapped\",[21533]],[[63982,63982],\"mapped\",[29136]],[[63983,63983],\"mapped\",[29848]],[[63984,63984],\"mapped\",[34298]],[[63985,63985],\"mapped\",[38563]],[[63986,63986],\"mapped\",[40023]],[[63987,63987],\"mapped\",[40607]],[[63988,63988],\"mapped\",[26519]],[[63989,63989],\"mapped\",[28107]],[[63990,63990],\"mapped\",[33256]],[[63991,63991],\"mapped\",[31435]],[[63992,63992],\"mapped\",[31520]],[[63993,63993],\"mapped\",[31890]],[[63994,63994],\"mapped\",[29376]],[[63995,63995],\"mapped\",[28825]],[[63996,63996],\"mapped\",[35672]],[[63997,63997],\"mapped\",[20160]],[[63998,63998],\"mapped\",[33590]],[[63999,63999],\"mapped\",[21050]],[[64000,64000],\"mapped\",[20999]],[[64001,64001],\"mapped\",[24230]],[[64002,64002],\"mapped\",[25299]],[[64003,64003],\"mapped\",[31958]],[[64004,64004],\"mapped\",[23429]],[[64005,64005],\"mapped\",[27934]],[[64006,64006],\"mapped\",[26292]],[[64007,64007],\"mapped\",[36667]],[[64008,64008],\"mapped\",[34892]],[[64009,64009],\"mapped\",[38477]],[[64010,64010],\"mapped\",[35211]],[[64011,64011],\"mapped\",[24275]],[[64012,64012],\"mapped\",[20800]],[[64013,64013],\"mapped\",[21952]],[[64014,64015],\"valid\"],[[64016,64016],\"mapped\",[22618]],[[64017,64017],\"valid\"],[[64018,64018],\"mapped\",[26228]],[[64019,64020],\"valid\"],[[64021,64021],\"mapped\",[20958]],[[64022,64022],\"mapped\",[29482]],[[64023,64023],\"mapped\",[30410]],[[64024,64024],\"mapped\",[31036]],[[64025,64025],\"mapped\",[31070]],[[64026,64026],\"mapped\",[31077]],[[64027,64027],\"mapped\",[31119]],[[64028,64028],\"mapped\",[38742]],[[64029,64029],\"mapped\",[31934]],[[64030,64030],\"mapped\",[32701]],[[64031,64031],\"valid\"],[[64032,64032],\"mapped\",[34322]],[[64033,64033],\"valid\"],[[64034,64034],\"mapped\",[35576]],[[64035,64036],\"valid\"],[[64037,64037],\"mapped\",[36920]],[[64038,64038],\"mapped\",[37117]],[[64039,64041],\"valid\"],[[64042,64042],\"mapped\",[39151]],[[64043,64043],\"mapped\",[39164]],[[64044,64044],\"mapped\",[39208]],[[64045,64045],\"mapped\",[40372]],[[64046,64046],\"mapped\",[37086]],[[64047,64047],\"mapped\",[38583]],[[64048,64048],\"mapped\",[20398]],[[64049,64049],\"mapped\",[20711]],[[64050,64050],\"mapped\",[20813]],[[64051,64051],\"mapped\",[21193]],[[64052,64052],\"mapped\",[21220]],[[64053,64053],\"mapped\",[21329]],[[64054,64054],\"mapped\",[21917]],[[64055,64055],\"mapped\",[22022]],[[64056,64056],\"mapped\",[22120]],[[64057,64057],\"mapped\",[22592]],[[64058,64058],\"mapped\",[22696]],[[64059,64059],\"mapped\",[23652]],[[64060,64060],\"mapped\",[23662]],[[64061,64061],\"mapped\",[24724]],[[64062,64062],\"mapped\",[24936]],[[64063,64063],\"mapped\",[24974]],[[64064,64064],\"mapped\",[25074]],[[64065,64065],\"mapped\",[25935]],[[64066,64066],\"mapped\",[26082]],[[64067,64067],\"mapped\",[26257]],[[64068,64068],\"mapped\",[26757]],[[64069,64069],\"mapped\",[28023]],[[64070,64070],\"mapped\",[28186]],[[64071,64071],\"mapped\",[28450]],[[64072,64072],\"mapped\",[29038]],[[64073,64073],\"mapped\",[29227]],[[64074,64074],\"mapped\",[29730]],[[64075,64075],\"mapped\",[30865]],[[64076,64076],\"mapped\",[31038]],[[64077,64077],\"mapped\",[31049]],[[64078,64078],\"mapped\",[31048]],[[64079,64079],\"mapped\",[31056]],[[64080,64080],\"mapped\",[31062]],[[64081,64081],\"mapped\",[31069]],[[64082,64082],\"mapped\",[31117]],[[64083,64083],\"mapped\",[31118]],[[64084,64084],\"mapped\",[31296]],[[64085,64085],\"mapped\",[31361]],[[64086,64086],\"mapped\",[31680]],[[64087,64087],\"mapped\",[32244]],[[64088,64088],\"mapped\",[32265]],[[64089,64089],\"mapped\",[32321]],[[64090,64090],\"mapped\",[32626]],[[64091,64091],\"mapped\",[32773]],[[64092,64092],\"mapped\",[33261]],[[64093,64094],\"mapped\",[33401]],[[64095,64095],\"mapped\",[33879]],[[64096,64096],\"mapped\",[35088]],[[64097,64097],\"mapped\",[35222]],[[64098,64098],\"mapped\",[35585]],[[64099,64099],\"mapped\",[35641]],[[64100,64100],\"mapped\",[36051]],[[64101,64101],\"mapped\",[36104]],[[64102,64102],\"mapped\",[36790]],[[64103,64103],\"mapped\",[36920]],[[64104,64104],\"mapped\",[38627]],[[64105,64105],\"mapped\",[38911]],[[64106,64106],\"mapped\",[38971]],[[64107,64107],\"mapped\",[24693]],[[64108,64108],\"mapped\",[148206]],[[64109,64109],\"mapped\",[33304]],[[64110,64111],\"disallowed\"],[[64112,64112],\"mapped\",[20006]],[[64113,64113],\"mapped\",[20917]],[[64114,64114],\"mapped\",[20840]],[[64115,64115],\"mapped\",[20352]],[[64116,64116],\"mapped\",[20805]],[[64117,64117],\"mapped\",[20864]],[[64118,64118],\"mapped\",[21191]],[[64119,64119],\"mapped\",[21242]],[[64120,64120],\"mapped\",[21917]],[[64121,64121],\"mapped\",[21845]],[[64122,64122],\"mapped\",[21913]],[[64123,64123],\"mapped\",[21986]],[[64124,64124],\"mapped\",[22618]],[[64125,64125],\"mapped\",[22707]],[[64126,64126],\"mapped\",[22852]],[[64127,64127],\"mapped\",[22868]],[[64128,64128],\"mapped\",[23138]],[[64129,64129],\"mapped\",[23336]],[[64130,64130],\"mapped\",[24274]],[[64131,64131],\"mapped\",[24281]],[[64132,64132],\"mapped\",[24425]],[[64133,64133],\"mapped\",[24493]],[[64134,64134],\"mapped\",[24792]],[[64135,64135],\"mapped\",[24910]],[[64136,64136],\"mapped\",[24840]],[[64137,64137],\"mapped\",[24974]],[[64138,64138],\"mapped\",[24928]],[[64139,64139],\"mapped\",[25074]],[[64140,64140],\"mapped\",[25140]],[[64141,64141],\"mapped\",[25540]],[[64142,64142],\"mapped\",[25628]],[[64143,64143],\"mapped\",[25682]],[[64144,64144],\"mapped\",[25942]],[[64145,64145],\"mapped\",[26228]],[[64146,64146],\"mapped\",[26391]],[[64147,64147],\"mapped\",[26395]],[[64148,64148],\"mapped\",[26454]],[[64149,64149],\"mapped\",[27513]],[[64150,64150],\"mapped\",[27578]],[[64151,64151],\"mapped\",[27969]],[[64152,64152],\"mapped\",[28379]],[[64153,64153],\"mapped\",[28363]],[[64154,64154],\"mapped\",[28450]],[[64155,64155],\"mapped\",[28702]],[[64156,64156],\"mapped\",[29038]],[[64157,64157],\"mapped\",[30631]],[[64158,64158],\"mapped\",[29237]],[[64159,64159],\"mapped\",[29359]],[[64160,64160],\"mapped\",[29482]],[[64161,64161],\"mapped\",[29809]],[[64162,64162],\"mapped\",[29958]],[[64163,64163],\"mapped\",[30011]],[[64164,64164],\"mapped\",[30237]],[[64165,64165],\"mapped\",[30239]],[[64166,64166],\"mapped\",[30410]],[[64167,64167],\"mapped\",[30427]],[[64168,64168],\"mapped\",[30452]],[[64169,64169],\"mapped\",[30538]],[[64170,64170],\"mapped\",[30528]],[[64171,64171],\"mapped\",[30924]],[[64172,64172],\"mapped\",[31409]],[[64173,64173],\"mapped\",[31680]],[[64174,64174],\"mapped\",[31867]],[[64175,64175],\"mapped\",[32091]],[[64176,64176],\"mapped\",[32244]],[[64177,64177],\"mapped\",[32574]],[[64178,64178],\"mapped\",[32773]],[[64179,64179],\"mapped\",[33618]],[[64180,64180],\"mapped\",[33775]],[[64181,64181],\"mapped\",[34681]],[[64182,64182],\"mapped\",[35137]],[[64183,64183],\"mapped\",[35206]],[[64184,64184],\"mapped\",[35222]],[[64185,64185],\"mapped\",[35519]],[[64186,64186],\"mapped\",[35576]],[[64187,64187],\"mapped\",[35531]],[[64188,64188],\"mapped\",[35585]],[[64189,64189],\"mapped\",[35582]],[[64190,64190],\"mapped\",[35565]],[[64191,64191],\"mapped\",[35641]],[[64192,64192],\"mapped\",[35722]],[[64193,64193],\"mapped\",[36104]],[[64194,64194],\"mapped\",[36664]],[[64195,64195],\"mapped\",[36978]],[[64196,64196],\"mapped\",[37273]],[[64197,64197],\"mapped\",[37494]],[[64198,64198],\"mapped\",[38524]],[[64199,64199],\"mapped\",[38627]],[[64200,64200],\"mapped\",[38742]],[[64201,64201],\"mapped\",[38875]],[[64202,64202],\"mapped\",[38911]],[[64203,64203],\"mapped\",[38923]],[[64204,64204],\"mapped\",[38971]],[[64205,64205],\"mapped\",[39698]],[[64206,64206],\"mapped\",[40860]],[[64207,64207],\"mapped\",[141386]],[[64208,64208],\"mapped\",[141380]],[[64209,64209],\"mapped\",[144341]],[[64210,64210],\"mapped\",[15261]],[[64211,64211],\"mapped\",[16408]],[[64212,64212],\"mapped\",[16441]],[[64213,64213],\"mapped\",[152137]],[[64214,64214],\"mapped\",[154832]],[[64215,64215],\"mapped\",[163539]],[[64216,64216],\"mapped\",[40771]],[[64217,64217],\"mapped\",[40846]],[[64218,64255],\"disallowed\"],[[64256,64256],\"mapped\",[102,102]],[[64257,64257],\"mapped\",[102,105]],[[64258,64258],\"mapped\",[102,108]],[[64259,64259],\"mapped\",[102,102,105]],[[64260,64260],\"mapped\",[102,102,108]],[[64261,64262],\"mapped\",[115,116]],[[64263,64274],\"disallowed\"],[[64275,64275],\"mapped\",[1396,1398]],[[64276,64276],\"mapped\",[1396,1381]],[[64277,64277],\"mapped\",[1396,1387]],[[64278,64278],\"mapped\",[1406,1398]],[[64279,64279],\"mapped\",[1396,1389]],[[64280,64284],\"disallowed\"],[[64285,64285],\"mapped\",[1497,1460]],[[64286,64286],\"valid\"],[[64287,64287],\"mapped\",[1522,1463]],[[64288,64288],\"mapped\",[1506]],[[64289,64289],\"mapped\",[1488]],[[64290,64290],\"mapped\",[1491]],[[64291,64291],\"mapped\",[1492]],[[64292,64292],\"mapped\",[1499]],[[64293,64293],\"mapped\",[1500]],[[64294,64294],\"mapped\",[1501]],[[64295,64295],\"mapped\",[1512]],[[64296,64296],\"mapped\",[1514]],[[64297,64297],\"disallowed_STD3_mapped\",[43]],[[64298,64298],\"mapped\",[1513,1473]],[[64299,64299],\"mapped\",[1513,1474]],[[64300,64300],\"mapped\",[1513,1468,1473]],[[64301,64301],\"mapped\",[1513,1468,1474]],[[64302,64302],\"mapped\",[1488,1463]],[[64303,64303],\"mapped\",[1488,1464]],[[64304,64304],\"mapped\",[1488,1468]],[[64305,64305],\"mapped\",[1489,1468]],[[64306,64306],\"mapped\",[1490,1468]],[[64307,64307],\"mapped\",[1491,1468]],[[64308,64308],\"mapped\",[1492,1468]],[[64309,64309],\"mapped\",[1493,1468]],[[64310,64310],\"mapped\",[1494,1468]],[[64311,64311],\"disallowed\"],[[64312,64312],\"mapped\",[1496,1468]],[[64313,64313],\"mapped\",[1497,1468]],[[64314,64314],\"mapped\",[1498,1468]],[[64315,64315],\"mapped\",[1499,1468]],[[64316,64316],\"mapped\",[1500,1468]],[[64317,64317],\"disallowed\"],[[64318,64318],\"mapped\",[1502,1468]],[[64319,64319],\"disallowed\"],[[64320,64320],\"mapped\",[1504,1468]],[[64321,64321],\"mapped\",[1505,1468]],[[64322,64322],\"disallowed\"],[[64323,64323],\"mapped\",[1507,1468]],[[64324,64324],\"mapped\",[1508,1468]],[[64325,64325],\"disallowed\"],[[64326,64326],\"mapped\",[1510,1468]],[[64327,64327],\"mapped\",[1511,1468]],[[64328,64328],\"mapped\",[1512,1468]],[[64329,64329],\"mapped\",[1513,1468]],[[64330,64330],\"mapped\",[1514,1468]],[[64331,64331],\"mapped\",[1493,1465]],[[64332,64332],\"mapped\",[1489,1471]],[[64333,64333],\"mapped\",[1499,1471]],[[64334,64334],\"mapped\",[1508,1471]],[[64335,64335],\"mapped\",[1488,1500]],[[64336,64337],\"mapped\",[1649]],[[64338,64341],\"mapped\",[1659]],[[64342,64345],\"mapped\",[1662]],[[64346,64349],\"mapped\",[1664]],[[64350,64353],\"mapped\",[1658]],[[64354,64357],\"mapped\",[1663]],[[64358,64361],\"mapped\",[1657]],[[64362,64365],\"mapped\",[1700]],[[64366,64369],\"mapped\",[1702]],[[64370,64373],\"mapped\",[1668]],[[64374,64377],\"mapped\",[1667]],[[64378,64381],\"mapped\",[1670]],[[64382,64385],\"mapped\",[1671]],[[64386,64387],\"mapped\",[1677]],[[64388,64389],\"mapped\",[1676]],[[64390,64391],\"mapped\",[1678]],[[64392,64393],\"mapped\",[1672]],[[64394,64395],\"mapped\",[1688]],[[64396,64397],\"mapped\",[1681]],[[64398,64401],\"mapped\",[1705]],[[64402,64405],\"mapped\",[1711]],[[64406,64409],\"mapped\",[1715]],[[64410,64413],\"mapped\",[1713]],[[64414,64415],\"mapped\",[1722]],[[64416,64419],\"mapped\",[1723]],[[64420,64421],\"mapped\",[1728]],[[64422,64425],\"mapped\",[1729]],[[64426,64429],\"mapped\",[1726]],[[64430,64431],\"mapped\",[1746]],[[64432,64433],\"mapped\",[1747]],[[64434,64449],\"valid\",[],\"NV8\"],[[64450,64466],\"disallowed\"],[[64467,64470],\"mapped\",[1709]],[[64471,64472],\"mapped\",[1735]],[[64473,64474],\"mapped\",[1734]],[[64475,64476],\"mapped\",[1736]],[[64477,64477],\"mapped\",[1735,1652]],[[64478,64479],\"mapped\",[1739]],[[64480,64481],\"mapped\",[1733]],[[64482,64483],\"mapped\",[1737]],[[64484,64487],\"mapped\",[1744]],[[64488,64489],\"mapped\",[1609]],[[64490,64491],\"mapped\",[1574,1575]],[[64492,64493],\"mapped\",[1574,1749]],[[64494,64495],\"mapped\",[1574,1608]],[[64496,64497],\"mapped\",[1574,1735]],[[64498,64499],\"mapped\",[1574,1734]],[[64500,64501],\"mapped\",[1574,1736]],[[64502,64504],\"mapped\",[1574,1744]],[[64505,64507],\"mapped\",[1574,1609]],[[64508,64511],\"mapped\",[1740]],[[64512,64512],\"mapped\",[1574,1580]],[[64513,64513],\"mapped\",[1574,1581]],[[64514,64514],\"mapped\",[1574,1605]],[[64515,64515],\"mapped\",[1574,1609]],[[64516,64516],\"mapped\",[1574,1610]],[[64517,64517],\"mapped\",[1576,1580]],[[64518,64518],\"mapped\",[1576,1581]],[[64519,64519],\"mapped\",[1576,1582]],[[64520,64520],\"mapped\",[1576,1605]],[[64521,64521],\"mapped\",[1576,1609]],[[64522,64522],\"mapped\",[1576,1610]],[[64523,64523],\"mapped\",[1578,1580]],[[64524,64524],\"mapped\",[1578,1581]],[[64525,64525],\"mapped\",[1578,1582]],[[64526,64526],\"mapped\",[1578,1605]],[[64527,64527],\"mapped\",[1578,1609]],[[64528,64528],\"mapped\",[1578,1610]],[[64529,64529],\"mapped\",[1579,1580]],[[64530,64530],\"mapped\",[1579,1605]],[[64531,64531],\"mapped\",[1579,1609]],[[64532,64532],\"mapped\",[1579,1610]],[[64533,64533],\"mapped\",[1580,1581]],[[64534,64534],\"mapped\",[1580,1605]],[[64535,64535],\"mapped\",[1581,1580]],[[64536,64536],\"mapped\",[1581,1605]],[[64537,64537],\"mapped\",[1582,1580]],[[64538,64538],\"mapped\",[1582,1581]],[[64539,64539],\"mapped\",[1582,1605]],[[64540,64540],\"mapped\",[1587,1580]],[[64541,64541],\"mapped\",[1587,1581]],[[64542,64542],\"mapped\",[1587,1582]],[[64543,64543],\"mapped\",[1587,1605]],[[64544,64544],\"mapped\",[1589,1581]],[[64545,64545],\"mapped\",[1589,1605]],[[64546,64546],\"mapped\",[1590,1580]],[[64547,64547],\"mapped\",[1590,1581]],[[64548,64548],\"mapped\",[1590,1582]],[[64549,64549],\"mapped\",[1590,1605]],[[64550,64550],\"mapped\",[1591,1581]],[[64551,64551],\"mapped\",[1591,1605]],[[64552,64552],\"mapped\",[1592,1605]],[[64553,64553],\"mapped\",[1593,1580]],[[64554,64554],\"mapped\",[1593,1605]],[[64555,64555],\"mapped\",[1594,1580]],[[64556,64556],\"mapped\",[1594,1605]],[[64557,64557],\"mapped\",[1601,1580]],[[64558,64558],\"mapped\",[1601,1581]],[[64559,64559],\"mapped\",[1601,1582]],[[64560,64560],\"mapped\",[1601,1605]],[[64561,64561],\"mapped\",[1601,1609]],[[64562,64562],\"mapped\",[1601,1610]],[[64563,64563],\"mapped\",[1602,1581]],[[64564,64564],\"mapped\",[1602,1605]],[[64565,64565],\"mapped\",[1602,1609]],[[64566,64566],\"mapped\",[1602,1610]],[[64567,64567],\"mapped\",[1603,1575]],[[64568,64568],\"mapped\",[1603,1580]],[[64569,64569],\"mapped\",[1603,1581]],[[64570,64570],\"mapped\",[1603,1582]],[[64571,64571],\"mapped\",[1603,1604]],[[64572,64572],\"mapped\",[1603,1605]],[[64573,64573],\"mapped\",[1603,1609]],[[64574,64574],\"mapped\",[1603,1610]],[[64575,64575],\"mapped\",[1604,1580]],[[64576,64576],\"mapped\",[1604,1581]],[[64577,64577],\"mapped\",[1604,1582]],[[64578,64578],\"mapped\",[1604,1605]],[[64579,64579],\"mapped\",[1604,1609]],[[64580,64580],\"mapped\",[1604,1610]],[[64581,64581],\"mapped\",[1605,1580]],[[64582,64582],\"mapped\",[1605,1581]],[[64583,64583],\"mapped\",[1605,1582]],[[64584,64584],\"mapped\",[1605,1605]],[[64585,64585],\"mapped\",[1605,1609]],[[64586,64586],\"mapped\",[1605,1610]],[[64587,64587],\"mapped\",[1606,1580]],[[64588,64588],\"mapped\",[1606,1581]],[[64589,64589],\"mapped\",[1606,1582]],[[64590,64590],\"mapped\",[1606,1605]],[[64591,64591],\"mapped\",[1606,1609]],[[64592,64592],\"mapped\",[1606,1610]],[[64593,64593],\"mapped\",[1607,1580]],[[64594,64594],\"mapped\",[1607,1605]],[[64595,64595],\"mapped\",[1607,1609]],[[64596,64596],\"mapped\",[1607,1610]],[[64597,64597],\"mapped\",[1610,1580]],[[64598,64598],\"mapped\",[1610,1581]],[[64599,64599],\"mapped\",[1610,1582]],[[64600,64600],\"mapped\",[1610,1605]],[[64601,64601],\"mapped\",[1610,1609]],[[64602,64602],\"mapped\",[1610,1610]],[[64603,64603],\"mapped\",[1584,1648]],[[64604,64604],\"mapped\",[1585,1648]],[[64605,64605],\"mapped\",[1609,1648]],[[64606,64606],\"disallowed_STD3_mapped\",[32,1612,1617]],[[64607,64607],\"disallowed_STD3_mapped\",[32,1613,1617]],[[64608,64608],\"disallowed_STD3_mapped\",[32,1614,1617]],[[64609,64609],\"disallowed_STD3_mapped\",[32,1615,1617]],[[64610,64610],\"disallowed_STD3_mapped\",[32,1616,1617]],[[64611,64611],\"disallowed_STD3_mapped\",[32,1617,1648]],[[64612,64612],\"mapped\",[1574,1585]],[[64613,64613],\"mapped\",[1574,1586]],[[64614,64614],\"mapped\",[1574,1605]],[[64615,64615],\"mapped\",[1574,1606]],[[64616,64616],\"mapped\",[1574,1609]],[[64617,64617],\"mapped\",[1574,1610]],[[64618,64618],\"mapped\",[1576,1585]],[[64619,64619],\"mapped\",[1576,1586]],[[64620,64620],\"mapped\",[1576,1605]],[[64621,64621],\"mapped\",[1576,1606]],[[64622,64622],\"mapped\",[1576,1609]],[[64623,64623],\"mapped\",[1576,1610]],[[64624,64624],\"mapped\",[1578,1585]],[[64625,64625],\"mapped\",[1578,1586]],[[64626,64626],\"mapped\",[1578,1605]],[[64627,64627],\"mapped\",[1578,1606]],[[64628,64628],\"mapped\",[1578,1609]],[[64629,64629],\"mapped\",[1578,1610]],[[64630,64630],\"mapped\",[1579,1585]],[[64631,64631],\"mapped\",[1579,1586]],[[64632,64632],\"mapped\",[1579,1605]],[[64633,64633],\"mapped\",[1579,1606]],[[64634,64634],\"mapped\",[1579,1609]],[[64635,64635],\"mapped\",[1579,1610]],[[64636,64636],\"mapped\",[1601,1609]],[[64637,64637],\"mapped\",[1601,1610]],[[64638,64638],\"mapped\",[1602,1609]],[[64639,64639],\"mapped\",[1602,1610]],[[64640,64640],\"mapped\",[1603,1575]],[[64641,64641],\"mapped\",[1603,1604]],[[64642,64642],\"mapped\",[1603,1605]],[[64643,64643],\"mapped\",[1603,1609]],[[64644,64644],\"mapped\",[1603,1610]],[[64645,64645],\"mapped\",[1604,1605]],[[64646,64646],\"mapped\",[1604,1609]],[[64647,64647],\"mapped\",[1604,1610]],[[64648,64648],\"mapped\",[1605,1575]],[[64649,64649],\"mapped\",[1605,1605]],[[64650,64650],\"mapped\",[1606,1585]],[[64651,64651],\"mapped\",[1606,1586]],[[64652,64652],\"mapped\",[1606,1605]],[[64653,64653],\"mapped\",[1606,1606]],[[64654,64654],\"mapped\",[1606,1609]],[[64655,64655],\"mapped\",[1606,1610]],[[64656,64656],\"mapped\",[1609,1648]],[[64657,64657],\"mapped\",[1610,1585]],[[64658,64658],\"mapped\",[1610,1586]],[[64659,64659],\"mapped\",[1610,1605]],[[64660,64660],\"mapped\",[1610,1606]],[[64661,64661],\"mapped\",[1610,1609]],[[64662,64662],\"mapped\",[1610,1610]],[[64663,64663],\"mapped\",[1574,1580]],[[64664,64664],\"mapped\",[1574,1581]],[[64665,64665],\"mapped\",[1574,1582]],[[64666,64666],\"mapped\",[1574,1605]],[[64667,64667],\"mapped\",[1574,1607]],[[64668,64668],\"mapped\",[1576,1580]],[[64669,64669],\"mapped\",[1576,1581]],[[64670,64670],\"mapped\",[1576,1582]],[[64671,64671],\"mapped\",[1576,1605]],[[64672,64672],\"mapped\",[1576,1607]],[[64673,64673],\"mapped\",[1578,1580]],[[64674,64674],\"mapped\",[1578,1581]],[[64675,64675],\"mapped\",[1578,1582]],[[64676,64676],\"mapped\",[1578,1605]],[[64677,64677],\"mapped\",[1578,1607]],[[64678,64678],\"mapped\",[1579,1605]],[[64679,64679],\"mapped\",[1580,1581]],[[64680,64680],\"mapped\",[1580,1605]],[[64681,64681],\"mapped\",[1581,1580]],[[64682,64682],\"mapped\",[1581,1605]],[[64683,64683],\"mapped\",[1582,1580]],[[64684,64684],\"mapped\",[1582,1605]],[[64685,64685],\"mapped\",[1587,1580]],[[64686,64686],\"mapped\",[1587,1581]],[[64687,64687],\"mapped\",[1587,1582]],[[64688,64688],\"mapped\",[1587,1605]],[[64689,64689],\"mapped\",[1589,1581]],[[64690,64690],\"mapped\",[1589,1582]],[[64691,64691],\"mapped\",[1589,1605]],[[64692,64692],\"mapped\",[1590,1580]],[[64693,64693],\"mapped\",[1590,1581]],[[64694,64694],\"mapped\",[1590,1582]],[[64695,64695],\"mapped\",[1590,1605]],[[64696,64696],\"mapped\",[1591,1581]],[[64697,64697],\"mapped\",[1592,1605]],[[64698,64698],\"mapped\",[1593,1580]],[[64699,64699],\"mapped\",[1593,1605]],[[64700,64700],\"mapped\",[1594,1580]],[[64701,64701],\"mapped\",[1594,1605]],[[64702,64702],\"mapped\",[1601,1580]],[[64703,64703],\"mapped\",[1601,1581]],[[64704,64704],\"mapped\",[1601,1582]],[[64705,64705],\"mapped\",[1601,1605]],[[64706,64706],\"mapped\",[1602,1581]],[[64707,64707],\"mapped\",[1602,1605]],[[64708,64708],\"mapped\",[1603,1580]],[[64709,64709],\"mapped\",[1603,1581]],[[64710,64710],\"mapped\",[1603,1582]],[[64711,64711],\"mapped\",[1603,1604]],[[64712,64712],\"mapped\",[1603,1605]],[[64713,64713],\"mapped\",[1604,1580]],[[64714,64714],\"mapped\",[1604,1581]],[[64715,64715],\"mapped\",[1604,1582]],[[64716,64716],\"mapped\",[1604,1605]],[[64717,64717],\"mapped\",[1604,1607]],[[64718,64718],\"mapped\",[1605,1580]],[[64719,64719],\"mapped\",[1605,1581]],[[64720,64720],\"mapped\",[1605,1582]],[[64721,64721],\"mapped\",[1605,1605]],[[64722,64722],\"mapped\",[1606,1580]],[[64723,64723],\"mapped\",[1606,1581]],[[64724,64724],\"mapped\",[1606,1582]],[[64725,64725],\"mapped\",[1606,1605]],[[64726,64726],\"mapped\",[1606,1607]],[[64727,64727],\"mapped\",[1607,1580]],[[64728,64728],\"mapped\",[1607,1605]],[[64729,64729],\"mapped\",[1607,1648]],[[64730,64730],\"mapped\",[1610,1580]],[[64731,64731],\"mapped\",[1610,1581]],[[64732,64732],\"mapped\",[1610,1582]],[[64733,64733],\"mapped\",[1610,1605]],[[64734,64734],\"mapped\",[1610,1607]],[[64735,64735],\"mapped\",[1574,1605]],[[64736,64736],\"mapped\",[1574,1607]],[[64737,64737],\"mapped\",[1576,1605]],[[64738,64738],\"mapped\",[1576,1607]],[[64739,64739],\"mapped\",[1578,1605]],[[64740,64740],\"mapped\",[1578,1607]],[[64741,64741],\"mapped\",[1579,1605]],[[64742,64742],\"mapped\",[1579,1607]],[[64743,64743],\"mapped\",[1587,1605]],[[64744,64744],\"mapped\",[1587,1607]],[[64745,64745],\"mapped\",[1588,1605]],[[64746,64746],\"mapped\",[1588,1607]],[[64747,64747],\"mapped\",[1603,1604]],[[64748,64748],\"mapped\",[1603,1605]],[[64749,64749],\"mapped\",[1604,1605]],[[64750,64750],\"mapped\",[1606,1605]],[[64751,64751],\"mapped\",[1606,1607]],[[64752,64752],\"mapped\",[1610,1605]],[[64753,64753],\"mapped\",[1610,1607]],[[64754,64754],\"mapped\",[1600,1614,1617]],[[64755,64755],\"mapped\",[1600,1615,1617]],[[64756,64756],\"mapped\",[1600,1616,1617]],[[64757,64757],\"mapped\",[1591,1609]],[[64758,64758],\"mapped\",[1591,1610]],[[64759,64759],\"mapped\",[1593,1609]],[[64760,64760],\"mapped\",[1593,1610]],[[64761,64761],\"mapped\",[1594,1609]],[[64762,64762],\"mapped\",[1594,1610]],[[64763,64763],\"mapped\",[1587,1609]],[[64764,64764],\"mapped\",[1587,1610]],[[64765,64765],\"mapped\",[1588,1609]],[[64766,64766],\"mapped\",[1588,1610]],[[64767,64767],\"mapped\",[1581,1609]],[[64768,64768],\"mapped\",[1581,1610]],[[64769,64769],\"mapped\",[1580,1609]],[[64770,64770],\"mapped\",[1580,1610]],[[64771,64771],\"mapped\",[1582,1609]],[[64772,64772],\"mapped\",[1582,1610]],[[64773,64773],\"mapped\",[1589,1609]],[[64774,64774],\"mapped\",[1589,1610]],[[64775,64775],\"mapped\",[1590,1609]],[[64776,64776],\"mapped\",[1590,1610]],[[64777,64777],\"mapped\",[1588,1580]],[[64778,64778],\"mapped\",[1588,1581]],[[64779,64779],\"mapped\",[1588,1582]],[[64780,64780],\"mapped\",[1588,1605]],[[64781,64781],\"mapped\",[1588,1585]],[[64782,64782],\"mapped\",[1587,1585]],[[64783,64783],\"mapped\",[1589,1585]],[[64784,64784],\"mapped\",[1590,1585]],[[64785,64785],\"mapped\",[1591,1609]],[[64786,64786],\"mapped\",[1591,1610]],[[64787,64787],\"mapped\",[1593,1609]],[[64788,64788],\"mapped\",[1593,1610]],[[64789,64789],\"mapped\",[1594,1609]],[[64790,64790],\"mapped\",[1594,1610]],[[64791,64791],\"mapped\",[1587,1609]],[[64792,64792],\"mapped\",[1587,1610]],[[64793,64793],\"mapped\",[1588,1609]],[[64794,64794],\"mapped\",[1588,1610]],[[64795,64795],\"mapped\",[1581,1609]],[[64796,64796],\"mapped\",[1581,1610]],[[64797,64797],\"mapped\",[1580,1609]],[[64798,64798],\"mapped\",[1580,1610]],[[64799,64799],\"mapped\",[1582,1609]],[[64800,64800],\"mapped\",[1582,1610]],[[64801,64801],\"mapped\",[1589,1609]],[[64802,64802],\"mapped\",[1589,1610]],[[64803,64803],\"mapped\",[1590,1609]],[[64804,64804],\"mapped\",[1590,1610]],[[64805,64805],\"mapped\",[1588,1580]],[[64806,64806],\"mapped\",[1588,1581]],[[64807,64807],\"mapped\",[1588,1582]],[[64808,64808],\"mapped\",[1588,1605]],[[64809,64809],\"mapped\",[1588,1585]],[[64810,64810],\"mapped\",[1587,1585]],[[64811,64811],\"mapped\",[1589,1585]],[[64812,64812],\"mapped\",[1590,1585]],[[64813,64813],\"mapped\",[1588,1580]],[[64814,64814],\"mapped\",[1588,1581]],[[64815,64815],\"mapped\",[1588,1582]],[[64816,64816],\"mapped\",[1588,1605]],[[64817,64817],\"mapped\",[1587,1607]],[[64818,64818],\"mapped\",[1588,1607]],[[64819,64819],\"mapped\",[1591,1605]],[[64820,64820],\"mapped\",[1587,1580]],[[64821,64821],\"mapped\",[1587,1581]],[[64822,64822],\"mapped\",[1587,1582]],[[64823,64823],\"mapped\",[1588,1580]],[[64824,64824],\"mapped\",[1588,1581]],[[64825,64825],\"mapped\",[1588,1582]],[[64826,64826],\"mapped\",[1591,1605]],[[64827,64827],\"mapped\",[1592,1605]],[[64828,64829],\"mapped\",[1575,1611]],[[64830,64831],\"valid\",[],\"NV8\"],[[64832,64847],\"disallowed\"],[[64848,64848],\"mapped\",[1578,1580,1605]],[[64849,64850],\"mapped\",[1578,1581,1580]],[[64851,64851],\"mapped\",[1578,1581,1605]],[[64852,64852],\"mapped\",[1578,1582,1605]],[[64853,64853],\"mapped\",[1578,1605,1580]],[[64854,64854],\"mapped\",[1578,1605,1581]],[[64855,64855],\"mapped\",[1578,1605,1582]],[[64856,64857],\"mapped\",[1580,1605,1581]],[[64858,64858],\"mapped\",[1581,1605,1610]],[[64859,64859],\"mapped\",[1581,1605,1609]],[[64860,64860],\"mapped\",[1587,1581,1580]],[[64861,64861],\"mapped\",[1587,1580,1581]],[[64862,64862],\"mapped\",[1587,1580,1609]],[[64863,64864],\"mapped\",[1587,1605,1581]],[[64865,64865],\"mapped\",[1587,1605,1580]],[[64866,64867],\"mapped\",[1587,1605,1605]],[[64868,64869],\"mapped\",[1589,1581,1581]],[[64870,64870],\"mapped\",[1589,1605,1605]],[[64871,64872],\"mapped\",[1588,1581,1605]],[[64873,64873],\"mapped\",[1588,1580,1610]],[[64874,64875],\"mapped\",[1588,1605,1582]],[[64876,64877],\"mapped\",[1588,1605,1605]],[[64878,64878],\"mapped\",[1590,1581,1609]],[[64879,64880],\"mapped\",[1590,1582,1605]],[[64881,64882],\"mapped\",[1591,1605,1581]],[[64883,64883],\"mapped\",[1591,1605,1605]],[[64884,64884],\"mapped\",[1591,1605,1610]],[[64885,64885],\"mapped\",[1593,1580,1605]],[[64886,64887],\"mapped\",[1593,1605,1605]],[[64888,64888],\"mapped\",[1593,1605,1609]],[[64889,64889],\"mapped\",[1594,1605,1605]],[[64890,64890],\"mapped\",[1594,1605,1610]],[[64891,64891],\"mapped\",[1594,1605,1609]],[[64892,64893],\"mapped\",[1601,1582,1605]],[[64894,64894],\"mapped\",[1602,1605,1581]],[[64895,64895],\"mapped\",[1602,1605,1605]],[[64896,64896],\"mapped\",[1604,1581,1605]],[[64897,64897],\"mapped\",[1604,1581,1610]],[[64898,64898],\"mapped\",[1604,1581,1609]],[[64899,64900],\"mapped\",[1604,1580,1580]],[[64901,64902],\"mapped\",[1604,1582,1605]],[[64903,64904],\"mapped\",[1604,1605,1581]],[[64905,64905],\"mapped\",[1605,1581,1580]],[[64906,64906],\"mapped\",[1605,1581,1605]],[[64907,64907],\"mapped\",[1605,1581,1610]],[[64908,64908],\"mapped\",[1605,1580,1581]],[[64909,64909],\"mapped\",[1605,1580,1605]],[[64910,64910],\"mapped\",[1605,1582,1580]],[[64911,64911],\"mapped\",[1605,1582,1605]],[[64912,64913],\"disallowed\"],[[64914,64914],\"mapped\",[1605,1580,1582]],[[64915,64915],\"mapped\",[1607,1605,1580]],[[64916,64916],\"mapped\",[1607,1605,1605]],[[64917,64917],\"mapped\",[1606,1581,1605]],[[64918,64918],\"mapped\",[1606,1581,1609]],[[64919,64920],\"mapped\",[1606,1580,1605]],[[64921,64921],\"mapped\",[1606,1580,1609]],[[64922,64922],\"mapped\",[1606,1605,1610]],[[64923,64923],\"mapped\",[1606,1605,1609]],[[64924,64925],\"mapped\",[1610,1605,1605]],[[64926,64926],\"mapped\",[1576,1582,1610]],[[64927,64927],\"mapped\",[1578,1580,1610]],[[64928,64928],\"mapped\",[1578,1580,1609]],[[64929,64929],\"mapped\",[1578,1582,1610]],[[64930,64930],\"mapped\",[1578,1582,1609]],[[64931,64931],\"mapped\",[1578,1605,1610]],[[64932,64932],\"mapped\",[1578,1605,1609]],[[64933,64933],\"mapped\",[1580,1605,1610]],[[64934,64934],\"mapped\",[1580,1581,1609]],[[64935,64935],\"mapped\",[1580,1605,1609]],[[64936,64936],\"mapped\",[1587,1582,1609]],[[64937,64937],\"mapped\",[1589,1581,1610]],[[64938,64938],\"mapped\",[1588,1581,1610]],[[64939,64939],\"mapped\",[1590,1581,1610]],[[64940,64940],\"mapped\",[1604,1580,1610]],[[64941,64941],\"mapped\",[1604,1605,1610]],[[64942,64942],\"mapped\",[1610,1581,1610]],[[64943,64943],\"mapped\",[1610,1580,1610]],[[64944,64944],\"mapped\",[1610,1605,1610]],[[64945,64945],\"mapped\",[1605,1605,1610]],[[64946,64946],\"mapped\",[1602,1605,1610]],[[64947,64947],\"mapped\",[1606,1581,1610]],[[64948,64948],\"mapped\",[1602,1605,1581]],[[64949,64949],\"mapped\",[1604,1581,1605]],[[64950,64950],\"mapped\",[1593,1605,1610]],[[64951,64951],\"mapped\",[1603,1605,1610]],[[64952,64952],\"mapped\",[1606,1580,1581]],[[64953,64953],\"mapped\",[1605,1582,1610]],[[64954,64954],\"mapped\",[1604,1580,1605]],[[64955,64955],\"mapped\",[1603,1605,1605]],[[64956,64956],\"mapped\",[1604,1580,1605]],[[64957,64957],\"mapped\",[1606,1580,1581]],[[64958,64958],\"mapped\",[1580,1581,1610]],[[64959,64959],\"mapped\",[1581,1580,1610]],[[64960,64960],\"mapped\",[1605,1580,1610]],[[64961,64961],\"mapped\",[1601,1605,1610]],[[64962,64962],\"mapped\",[1576,1581,1610]],[[64963,64963],\"mapped\",[1603,1605,1605]],[[64964,64964],\"mapped\",[1593,1580,1605]],[[64965,64965],\"mapped\",[1589,1605,1605]],[[64966,64966],\"mapped\",[1587,1582,1610]],[[64967,64967],\"mapped\",[1606,1580,1610]],[[64968,64975],\"disallowed\"],[[64976,65007],\"disallowed\"],[[65008,65008],\"mapped\",[1589,1604,1746]],[[65009,65009],\"mapped\",[1602,1604,1746]],[[65010,65010],\"mapped\",[1575,1604,1604,1607]],[[65011,65011],\"mapped\",[1575,1603,1576,1585]],[[65012,65012],\"mapped\",[1605,1581,1605,1583]],[[65013,65013],\"mapped\",[1589,1604,1593,1605]],[[65014,65014],\"mapped\",[1585,1587,1608,1604]],[[65015,65015],\"mapped\",[1593,1604,1610,1607]],[[65016,65016],\"mapped\",[1608,1587,1604,1605]],[[65017,65017],\"mapped\",[1589,1604,1609]],[[65018,65018],\"disallowed_STD3_mapped\",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],\"disallowed_STD3_mapped\",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],\"mapped\",[1585,1740,1575,1604]],[[65021,65021],\"valid\",[],\"NV8\"],[[65022,65023],\"disallowed\"],[[65024,65039],\"ignored\"],[[65040,65040],\"disallowed_STD3_mapped\",[44]],[[65041,65041],\"mapped\",[12289]],[[65042,65042],\"disallowed\"],[[65043,65043],\"disallowed_STD3_mapped\",[58]],[[65044,65044],\"disallowed_STD3_mapped\",[59]],[[65045,65045],\"disallowed_STD3_mapped\",[33]],[[65046,65046],\"disallowed_STD3_mapped\",[63]],[[65047,65047],\"mapped\",[12310]],[[65048,65048],\"mapped\",[12311]],[[65049,65049],\"disallowed\"],[[65050,65055],\"disallowed\"],[[65056,65059],\"valid\"],[[65060,65062],\"valid\"],[[65063,65069],\"valid\"],[[65070,65071],\"valid\"],[[65072,65072],\"disallowed\"],[[65073,65073],\"mapped\",[8212]],[[65074,65074],\"mapped\",[8211]],[[65075,65076],\"disallowed_STD3_mapped\",[95]],[[65077,65077],\"disallowed_STD3_mapped\",[40]],[[65078,65078],\"disallowed_STD3_mapped\",[41]],[[65079,65079],\"disallowed_STD3_mapped\",[123]],[[65080,65080],\"disallowed_STD3_mapped\",[125]],[[65081,65081],\"mapped\",[12308]],[[65082,65082],\"mapped\",[12309]],[[65083,65083],\"mapped\",[12304]],[[65084,65084],\"mapped\",[12305]],[[65085,65085],\"mapped\",[12298]],[[65086,65086],\"mapped\",[12299]],[[65087,65087],\"mapped\",[12296]],[[65088,65088],\"mapped\",[12297]],[[65089,65089],\"mapped\",[12300]],[[65090,65090],\"mapped\",[12301]],[[65091,65091],\"mapped\",[12302]],[[65092,65092],\"mapped\",[12303]],[[65093,65094],\"valid\",[],\"NV8\"],[[65095,65095],\"disallowed_STD3_mapped\",[91]],[[65096,65096],\"disallowed_STD3_mapped\",[93]],[[65097,65100],\"disallowed_STD3_mapped\",[32,773]],[[65101,65103],\"disallowed_STD3_mapped\",[95]],[[65104,65104],\"disallowed_STD3_mapped\",[44]],[[65105,65105],\"mapped\",[12289]],[[65106,65106],\"disallowed\"],[[65107,65107],\"disallowed\"],[[65108,65108],\"disallowed_STD3_mapped\",[59]],[[65109,65109],\"disallowed_STD3_mapped\",[58]],[[65110,65110],\"disallowed_STD3_mapped\",[63]],[[65111,65111],\"disallowed_STD3_mapped\",[33]],[[65112,65112],\"mapped\",[8212]],[[65113,65113],\"disallowed_STD3_mapped\",[40]],[[65114,65114],\"disallowed_STD3_mapped\",[41]],[[65115,65115],\"disallowed_STD3_mapped\",[123]],[[65116,65116],\"disallowed_STD3_mapped\",[125]],[[65117,65117],\"mapped\",[12308]],[[65118,65118],\"mapped\",[12309]],[[65119,65119],\"disallowed_STD3_mapped\",[35]],[[65120,65120],\"disallowed_STD3_mapped\",[38]],[[65121,65121],\"disallowed_STD3_mapped\",[42]],[[65122,65122],\"disallowed_STD3_mapped\",[43]],[[65123,65123],\"mapped\",[45]],[[65124,65124],\"disallowed_STD3_mapped\",[60]],[[65125,65125],\"disallowed_STD3_mapped\",[62]],[[65126,65126],\"disallowed_STD3_mapped\",[61]],[[65127,65127],\"disallowed\"],[[65128,65128],\"disallowed_STD3_mapped\",[92]],[[65129,65129],\"disallowed_STD3_mapped\",[36]],[[65130,65130],\"disallowed_STD3_mapped\",[37]],[[65131,65131],\"disallowed_STD3_mapped\",[64]],[[65132,65135],\"disallowed\"],[[65136,65136],\"disallowed_STD3_mapped\",[32,1611]],[[65137,65137],\"mapped\",[1600,1611]],[[65138,65138],\"disallowed_STD3_mapped\",[32,1612]],[[65139,65139],\"valid\"],[[65140,65140],\"disallowed_STD3_mapped\",[32,1613]],[[65141,65141],\"disallowed\"],[[65142,65142],\"disallowed_STD3_mapped\",[32,1614]],[[65143,65143],\"mapped\",[1600,1614]],[[65144,65144],\"disallowed_STD3_mapped\",[32,1615]],[[65145,65145],\"mapped\",[1600,1615]],[[65146,65146],\"disallowed_STD3_mapped\",[32,1616]],[[65147,65147],\"mapped\",[1600,1616]],[[65148,65148],\"disallowed_STD3_mapped\",[32,1617]],[[65149,65149],\"mapped\",[1600,1617]],[[65150,65150],\"disallowed_STD3_mapped\",[32,1618]],[[65151,65151],\"mapped\",[1600,1618]],[[65152,65152],\"mapped\",[1569]],[[65153,65154],\"mapped\",[1570]],[[65155,65156],\"mapped\",[1571]],[[65157,65158],\"mapped\",[1572]],[[65159,65160],\"mapped\",[1573]],[[65161,65164],\"mapped\",[1574]],[[65165,65166],\"mapped\",[1575]],[[65167,65170],\"mapped\",[1576]],[[65171,65172],\"mapped\",[1577]],[[65173,65176],\"mapped\",[1578]],[[65177,65180],\"mapped\",[1579]],[[65181,65184],\"mapped\",[1580]],[[65185,65188],\"mapped\",[1581]],[[65189,65192],\"mapped\",[1582]],[[65193,65194],\"mapped\",[1583]],[[65195,65196],\"mapped\",[1584]],[[65197,65198],\"mapped\",[1585]],[[65199,65200],\"mapped\",[1586]],[[65201,65204],\"mapped\",[1587]],[[65205,65208],\"mapped\",[1588]],[[65209,65212],\"mapped\",[1589]],[[65213,65216],\"mapped\",[1590]],[[65217,65220],\"mapped\",[1591]],[[65221,65224],\"mapped\",[1592]],[[65225,65228],\"mapped\",[1593]],[[65229,65232],\"mapped\",[1594]],[[65233,65236],\"mapped\",[1601]],[[65237,65240],\"mapped\",[1602]],[[65241,65244],\"mapped\",[1603]],[[65245,65248],\"mapped\",[1604]],[[65249,65252],\"mapped\",[1605]],[[65253,65256],\"mapped\",[1606]],[[65257,65260],\"mapped\",[1607]],[[65261,65262],\"mapped\",[1608]],[[65263,65264],\"mapped\",[1609]],[[65265,65268],\"mapped\",[1610]],[[65269,65270],\"mapped\",[1604,1570]],[[65271,65272],\"mapped\",[1604,1571]],[[65273,65274],\"mapped\",[1604,1573]],[[65275,65276],\"mapped\",[1604,1575]],[[65277,65278],\"disallowed\"],[[65279,65279],\"ignored\"],[[65280,65280],\"disallowed\"],[[65281,65281],\"disallowed_STD3_mapped\",[33]],[[65282,65282],\"disallowed_STD3_mapped\",[34]],[[65283,65283],\"disallowed_STD3_mapped\",[35]],[[65284,65284],\"disallowed_STD3_mapped\",[36]],[[65285,65285],\"disallowed_STD3_mapped\",[37]],[[65286,65286],\"disallowed_STD3_mapped\",[38]],[[65287,65287],\"disallowed_STD3_mapped\",[39]],[[65288,65288],\"disallowed_STD3_mapped\",[40]],[[65289,65289],\"disallowed_STD3_mapped\",[41]],[[65290,65290],\"disallowed_STD3_mapped\",[42]],[[65291,65291],\"disallowed_STD3_mapped\",[43]],[[65292,65292],\"disallowed_STD3_mapped\",[44]],[[65293,65293],\"mapped\",[45]],[[65294,65294],\"mapped\",[46]],[[65295,65295],\"disallowed_STD3_mapped\",[47]],[[65296,65296],\"mapped\",[48]],[[65297,65297],\"mapped\",[49]],[[65298,65298],\"mapped\",[50]],[[65299,65299],\"mapped\",[51]],[[65300,65300],\"mapped\",[52]],[[65301,65301],\"mapped\",[53]],[[65302,65302],\"mapped\",[54]],[[65303,65303],\"mapped\",[55]],[[65304,65304],\"mapped\",[56]],[[65305,65305],\"mapped\",[57]],[[65306,65306],\"disallowed_STD3_mapped\",[58]],[[65307,65307],\"disallowed_STD3_mapped\",[59]],[[65308,65308],\"disallowed_STD3_mapped\",[60]],[[65309,65309],\"disallowed_STD3_mapped\",[61]],[[65310,65310],\"disallowed_STD3_mapped\",[62]],[[65311,65311],\"disallowed_STD3_mapped\",[63]],[[65312,65312],\"disallowed_STD3_mapped\",[64]],[[65313,65313],\"mapped\",[97]],[[65314,65314],\"mapped\",[98]],[[65315,65315],\"mapped\",[99]],[[65316,65316],\"mapped\",[100]],[[65317,65317],\"mapped\",[101]],[[65318,65318],\"mapped\",[102]],[[65319,65319],\"mapped\",[103]],[[65320,65320],\"mapped\",[104]],[[65321,65321],\"mapped\",[105]],[[65322,65322],\"mapped\",[106]],[[65323,65323],\"mapped\",[107]],[[65324,65324],\"mapped\",[108]],[[65325,65325],\"mapped\",[109]],[[65326,65326],\"mapped\",[110]],[[65327,65327],\"mapped\",[111]],[[65328,65328],\"mapped\",[112]],[[65329,65329],\"mapped\",[113]],[[65330,65330],\"mapped\",[114]],[[65331,65331],\"mapped\",[115]],[[65332,65332],\"mapped\",[116]],[[65333,65333],\"mapped\",[117]],[[65334,65334],\"mapped\",[118]],[[65335,65335],\"mapped\",[119]],[[65336,65336],\"mapped\",[120]],[[65337,65337],\"mapped\",[121]],[[65338,65338],\"mapped\",[122]],[[65339,65339],\"disallowed_STD3_mapped\",[91]],[[65340,65340],\"disallowed_STD3_mapped\",[92]],[[65341,65341],\"disallowed_STD3_mapped\",[93]],[[65342,65342],\"disallowed_STD3_mapped\",[94]],[[65343,65343],\"disallowed_STD3_mapped\",[95]],[[65344,65344],\"disallowed_STD3_mapped\",[96]],[[65345,65345],\"mapped\",[97]],[[65346,65346],\"mapped\",[98]],[[65347,65347],\"mapped\",[99]],[[65348,65348],\"mapped\",[100]],[[65349,65349],\"mapped\",[101]],[[65350,65350],\"mapped\",[102]],[[65351,65351],\"mapped\",[103]],[[65352,65352],\"mapped\",[104]],[[65353,65353],\"mapped\",[105]],[[65354,65354],\"mapped\",[106]],[[65355,65355],\"mapped\",[107]],[[65356,65356],\"mapped\",[108]],[[65357,65357],\"mapped\",[109]],[[65358,65358],\"mapped\",[110]],[[65359,65359],\"mapped\",[111]],[[65360,65360],\"mapped\",[112]],[[65361,65361],\"mapped\",[113]],[[65362,65362],\"mapped\",[114]],[[65363,65363],\"mapped\",[115]],[[65364,65364],\"mapped\",[116]],[[65365,65365],\"mapped\",[117]],[[65366,65366],\"mapped\",[118]],[[65367,65367],\"mapped\",[119]],[[65368,65368],\"mapped\",[120]],[[65369,65369],\"mapped\",[121]],[[65370,65370],\"mapped\",[122]],[[65371,65371],\"disallowed_STD3_mapped\",[123]],[[65372,65372],\"disallowed_STD3_mapped\",[124]],[[65373,65373],\"disallowed_STD3_mapped\",[125]],[[65374,65374],\"disallowed_STD3_mapped\",[126]],[[65375,65375],\"mapped\",[10629]],[[65376,65376],\"mapped\",[10630]],[[65377,65377],\"mapped\",[46]],[[65378,65378],\"mapped\",[12300]],[[65379,65379],\"mapped\",[12301]],[[65380,65380],\"mapped\",[12289]],[[65381,65381],\"mapped\",[12539]],[[65382,65382],\"mapped\",[12530]],[[65383,65383],\"mapped\",[12449]],[[65384,65384],\"mapped\",[12451]],[[65385,65385],\"mapped\",[12453]],[[65386,65386],\"mapped\",[12455]],[[65387,65387],\"mapped\",[12457]],[[65388,65388],\"mapped\",[12515]],[[65389,65389],\"mapped\",[12517]],[[65390,65390],\"mapped\",[12519]],[[65391,65391],\"mapped\",[12483]],[[65392,65392],\"mapped\",[12540]],[[65393,65393],\"mapped\",[12450]],[[65394,65394],\"mapped\",[12452]],[[65395,65395],\"mapped\",[12454]],[[65396,65396],\"mapped\",[12456]],[[65397,65397],\"mapped\",[12458]],[[65398,65398],\"mapped\",[12459]],[[65399,65399],\"mapped\",[12461]],[[65400,65400],\"mapped\",[12463]],[[65401,65401],\"mapped\",[12465]],[[65402,65402],\"mapped\",[12467]],[[65403,65403],\"mapped\",[12469]],[[65404,65404],\"mapped\",[12471]],[[65405,65405],\"mapped\",[12473]],[[65406,65406],\"mapped\",[12475]],[[65407,65407],\"mapped\",[12477]],[[65408,65408],\"mapped\",[12479]],[[65409,65409],\"mapped\",[12481]],[[65410,65410],\"mapped\",[12484]],[[65411,65411],\"mapped\",[12486]],[[65412,65412],\"mapped\",[12488]],[[65413,65413],\"mapped\",[12490]],[[65414,65414],\"mapped\",[12491]],[[65415,65415],\"mapped\",[12492]],[[65416,65416],\"mapped\",[12493]],[[65417,65417],\"mapped\",[12494]],[[65418,65418],\"mapped\",[12495]],[[65419,65419],\"mapped\",[12498]],[[65420,65420],\"mapped\",[12501]],[[65421,65421],\"mapped\",[12504]],[[65422,65422],\"mapped\",[12507]],[[65423,65423],\"mapped\",[12510]],[[65424,65424],\"mapped\",[12511]],[[65425,65425],\"mapped\",[12512]],[[65426,65426],\"mapped\",[12513]],[[65427,65427],\"mapped\",[12514]],[[65428,65428],\"mapped\",[12516]],[[65429,65429],\"mapped\",[12518]],[[65430,65430],\"mapped\",[12520]],[[65431,65431],\"mapped\",[12521]],[[65432,65432],\"mapped\",[12522]],[[65433,65433],\"mapped\",[12523]],[[65434,65434],\"mapped\",[12524]],[[65435,65435],\"mapped\",[12525]],[[65436,65436],\"mapped\",[12527]],[[65437,65437],\"mapped\",[12531]],[[65438,65438],\"mapped\",[12441]],[[65439,65439],\"mapped\",[12442]],[[65440,65440],\"disallowed\"],[[65441,65441],\"mapped\",[4352]],[[65442,65442],\"mapped\",[4353]],[[65443,65443],\"mapped\",[4522]],[[65444,65444],\"mapped\",[4354]],[[65445,65445],\"mapped\",[4524]],[[65446,65446],\"mapped\",[4525]],[[65447,65447],\"mapped\",[4355]],[[65448,65448],\"mapped\",[4356]],[[65449,65449],\"mapped\",[4357]],[[65450,65450],\"mapped\",[4528]],[[65451,65451],\"mapped\",[4529]],[[65452,65452],\"mapped\",[4530]],[[65453,65453],\"mapped\",[4531]],[[65454,65454],\"mapped\",[4532]],[[65455,65455],\"mapped\",[4533]],[[65456,65456],\"mapped\",[4378]],[[65457,65457],\"mapped\",[4358]],[[65458,65458],\"mapped\",[4359]],[[65459,65459],\"mapped\",[4360]],[[65460,65460],\"mapped\",[4385]],[[65461,65461],\"mapped\",[4361]],[[65462,65462],\"mapped\",[4362]],[[65463,65463],\"mapped\",[4363]],[[65464,65464],\"mapped\",[4364]],[[65465,65465],\"mapped\",[4365]],[[65466,65466],\"mapped\",[4366]],[[65467,65467],\"mapped\",[4367]],[[65468,65468],\"mapped\",[4368]],[[65469,65469],\"mapped\",[4369]],[[65470,65470],\"mapped\",[4370]],[[65471,65473],\"disallowed\"],[[65474,65474],\"mapped\",[4449]],[[65475,65475],\"mapped\",[4450]],[[65476,65476],\"mapped\",[4451]],[[65477,65477],\"mapped\",[4452]],[[65478,65478],\"mapped\",[4453]],[[65479,65479],\"mapped\",[4454]],[[65480,65481],\"disallowed\"],[[65482,65482],\"mapped\",[4455]],[[65483,65483],\"mapped\",[4456]],[[65484,65484],\"mapped\",[4457]],[[65485,65485],\"mapped\",[4458]],[[65486,65486],\"mapped\",[4459]],[[65487,65487],\"mapped\",[4460]],[[65488,65489],\"disallowed\"],[[65490,65490],\"mapped\",[4461]],[[65491,65491],\"mapped\",[4462]],[[65492,65492],\"mapped\",[4463]],[[65493,65493],\"mapped\",[4464]],[[65494,65494],\"mapped\",[4465]],[[65495,65495],\"mapped\",[4466]],[[65496,65497],\"disallowed\"],[[65498,65498],\"mapped\",[4467]],[[65499,65499],\"mapped\",[4468]],[[65500,65500],\"mapped\",[4469]],[[65501,65503],\"disallowed\"],[[65504,65504],\"mapped\",[162]],[[65505,65505],\"mapped\",[163]],[[65506,65506],\"mapped\",[172]],[[65507,65507],\"disallowed_STD3_mapped\",[32,772]],[[65508,65508],\"mapped\",[166]],[[65509,65509],\"mapped\",[165]],[[65510,65510],\"mapped\",[8361]],[[65511,65511],\"disallowed\"],[[65512,65512],\"mapped\",[9474]],[[65513,65513],\"mapped\",[8592]],[[65514,65514],\"mapped\",[8593]],[[65515,65515],\"mapped\",[8594]],[[65516,65516],\"mapped\",[8595]],[[65517,65517],\"mapped\",[9632]],[[65518,65518],\"mapped\",[9675]],[[65519,65528],\"disallowed\"],[[65529,65531],\"disallowed\"],[[65532,65532],\"disallowed\"],[[65533,65533],\"disallowed\"],[[65534,65535],\"disallowed\"],[[65536,65547],\"valid\"],[[65548,65548],\"disallowed\"],[[65549,65574],\"valid\"],[[65575,65575],\"disallowed\"],[[65576,65594],\"valid\"],[[65595,65595],\"disallowed\"],[[65596,65597],\"valid\"],[[65598,65598],\"disallowed\"],[[65599,65613],\"valid\"],[[65614,65615],\"disallowed\"],[[65616,65629],\"valid\"],[[65630,65663],\"disallowed\"],[[65664,65786],\"valid\"],[[65787,65791],\"disallowed\"],[[65792,65794],\"valid\",[],\"NV8\"],[[65795,65798],\"disallowed\"],[[65799,65843],\"valid\",[],\"NV8\"],[[65844,65846],\"disallowed\"],[[65847,65855],\"valid\",[],\"NV8\"],[[65856,65930],\"valid\",[],\"NV8\"],[[65931,65932],\"valid\",[],\"NV8\"],[[65933,65935],\"disallowed\"],[[65936,65947],\"valid\",[],\"NV8\"],[[65948,65951],\"disallowed\"],[[65952,65952],\"valid\",[],\"NV8\"],[[65953,65999],\"disallowed\"],[[66000,66044],\"valid\",[],\"NV8\"],[[66045,66045],\"valid\"],[[66046,66175],\"disallowed\"],[[66176,66204],\"valid\"],[[66205,66207],\"disallowed\"],[[66208,66256],\"valid\"],[[66257,66271],\"disallowed\"],[[66272,66272],\"valid\"],[[66273,66299],\"valid\",[],\"NV8\"],[[66300,66303],\"disallowed\"],[[66304,66334],\"valid\"],[[66335,66335],\"valid\"],[[66336,66339],\"valid\",[],\"NV8\"],[[66340,66351],\"disallowed\"],[[66352,66368],\"valid\"],[[66369,66369],\"valid\",[],\"NV8\"],[[66370,66377],\"valid\"],[[66378,66378],\"valid\",[],\"NV8\"],[[66379,66383],\"disallowed\"],[[66384,66426],\"valid\"],[[66427,66431],\"disallowed\"],[[66432,66461],\"valid\"],[[66462,66462],\"disallowed\"],[[66463,66463],\"valid\",[],\"NV8\"],[[66464,66499],\"valid\"],[[66500,66503],\"disallowed\"],[[66504,66511],\"valid\"],[[66512,66517],\"valid\",[],\"NV8\"],[[66518,66559],\"disallowed\"],[[66560,66560],\"mapped\",[66600]],[[66561,66561],\"mapped\",[66601]],[[66562,66562],\"mapped\",[66602]],[[66563,66563],\"mapped\",[66603]],[[66564,66564],\"mapped\",[66604]],[[66565,66565],\"mapped\",[66605]],[[66566,66566],\"mapped\",[66606]],[[66567,66567],\"mapped\",[66607]],[[66568,66568],\"mapped\",[66608]],[[66569,66569],\"mapped\",[66609]],[[66570,66570],\"mapped\",[66610]],[[66571,66571],\"mapped\",[66611]],[[66572,66572],\"mapped\",[66612]],[[66573,66573],\"mapped\",[66613]],[[66574,66574],\"mapped\",[66614]],[[66575,66575],\"mapped\",[66615]],[[66576,66576],\"mapped\",[66616]],[[66577,66577],\"mapped\",[66617]],[[66578,66578],\"mapped\",[66618]],[[66579,66579],\"mapped\",[66619]],[[66580,66580],\"mapped\",[66620]],[[66581,66581],\"mapped\",[66621]],[[66582,66582],\"mapped\",[66622]],[[66583,66583],\"mapped\",[66623]],[[66584,66584],\"mapped\",[66624]],[[66585,66585],\"mapped\",[66625]],[[66586,66586],\"mapped\",[66626]],[[66587,66587],\"mapped\",[66627]],[[66588,66588],\"mapped\",[66628]],[[66589,66589],\"mapped\",[66629]],[[66590,66590],\"mapped\",[66630]],[[66591,66591],\"mapped\",[66631]],[[66592,66592],\"mapped\",[66632]],[[66593,66593],\"mapped\",[66633]],[[66594,66594],\"mapped\",[66634]],[[66595,66595],\"mapped\",[66635]],[[66596,66596],\"mapped\",[66636]],[[66597,66597],\"mapped\",[66637]],[[66598,66598],\"mapped\",[66638]],[[66599,66599],\"mapped\",[66639]],[[66600,66637],\"valid\"],[[66638,66717],\"valid\"],[[66718,66719],\"disallowed\"],[[66720,66729],\"valid\"],[[66730,66815],\"disallowed\"],[[66816,66855],\"valid\"],[[66856,66863],\"disallowed\"],[[66864,66915],\"valid\"],[[66916,66926],\"disallowed\"],[[66927,66927],\"valid\",[],\"NV8\"],[[66928,67071],\"disallowed\"],[[67072,67382],\"valid\"],[[67383,67391],\"disallowed\"],[[67392,67413],\"valid\"],[[67414,67423],\"disallowed\"],[[67424,67431],\"valid\"],[[67432,67583],\"disallowed\"],[[67584,67589],\"valid\"],[[67590,67591],\"disallowed\"],[[67592,67592],\"valid\"],[[67593,67593],\"disallowed\"],[[67594,67637],\"valid\"],[[67638,67638],\"disallowed\"],[[67639,67640],\"valid\"],[[67641,67643],\"disallowed\"],[[67644,67644],\"valid\"],[[67645,67646],\"disallowed\"],[[67647,67647],\"valid\"],[[67648,67669],\"valid\"],[[67670,67670],\"disallowed\"],[[67671,67679],\"valid\",[],\"NV8\"],[[67680,67702],\"valid\"],[[67703,67711],\"valid\",[],\"NV8\"],[[67712,67742],\"valid\"],[[67743,67750],\"disallowed\"],[[67751,67759],\"valid\",[],\"NV8\"],[[67760,67807],\"disallowed\"],[[67808,67826],\"valid\"],[[67827,67827],\"disallowed\"],[[67828,67829],\"valid\"],[[67830,67834],\"disallowed\"],[[67835,67839],\"valid\",[],\"NV8\"],[[67840,67861],\"valid\"],[[67862,67865],\"valid\",[],\"NV8\"],[[67866,67867],\"valid\",[],\"NV8\"],[[67868,67870],\"disallowed\"],[[67871,67871],\"valid\",[],\"NV8\"],[[67872,67897],\"valid\"],[[67898,67902],\"disallowed\"],[[67903,67903],\"valid\",[],\"NV8\"],[[67904,67967],\"disallowed\"],[[67968,68023],\"valid\"],[[68024,68027],\"disallowed\"],[[68028,68029],\"valid\",[],\"NV8\"],[[68030,68031],\"valid\"],[[68032,68047],\"valid\",[],\"NV8\"],[[68048,68049],\"disallowed\"],[[68050,68095],\"valid\",[],\"NV8\"],[[68096,68099],\"valid\"],[[68100,68100],\"disallowed\"],[[68101,68102],\"valid\"],[[68103,68107],\"disallowed\"],[[68108,68115],\"valid\"],[[68116,68116],\"disallowed\"],[[68117,68119],\"valid\"],[[68120,68120],\"disallowed\"],[[68121,68147],\"valid\"],[[68148,68151],\"disallowed\"],[[68152,68154],\"valid\"],[[68155,68158],\"disallowed\"],[[68159,68159],\"valid\"],[[68160,68167],\"valid\",[],\"NV8\"],[[68168,68175],\"disallowed\"],[[68176,68184],\"valid\",[],\"NV8\"],[[68185,68191],\"disallowed\"],[[68192,68220],\"valid\"],[[68221,68223],\"valid\",[],\"NV8\"],[[68224,68252],\"valid\"],[[68253,68255],\"valid\",[],\"NV8\"],[[68256,68287],\"disallowed\"],[[68288,68295],\"valid\"],[[68296,68296],\"valid\",[],\"NV8\"],[[68297,68326],\"valid\"],[[68327,68330],\"disallowed\"],[[68331,68342],\"valid\",[],\"NV8\"],[[68343,68351],\"disallowed\"],[[68352,68405],\"valid\"],[[68406,68408],\"disallowed\"],[[68409,68415],\"valid\",[],\"NV8\"],[[68416,68437],\"valid\"],[[68438,68439],\"disallowed\"],[[68440,68447],\"valid\",[],\"NV8\"],[[68448,68466],\"valid\"],[[68467,68471],\"disallowed\"],[[68472,68479],\"valid\",[],\"NV8\"],[[68480,68497],\"valid\"],[[68498,68504],\"disallowed\"],[[68505,68508],\"valid\",[],\"NV8\"],[[68509,68520],\"disallowed\"],[[68521,68527],\"valid\",[],\"NV8\"],[[68528,68607],\"disallowed\"],[[68608,68680],\"valid\"],[[68681,68735],\"disallowed\"],[[68736,68736],\"mapped\",[68800]],[[68737,68737],\"mapped\",[68801]],[[68738,68738],\"mapped\",[68802]],[[68739,68739],\"mapped\",[68803]],[[68740,68740],\"mapped\",[68804]],[[68741,68741],\"mapped\",[68805]],[[68742,68742],\"mapped\",[68806]],[[68743,68743],\"mapped\",[68807]],[[68744,68744],\"mapped\",[68808]],[[68745,68745],\"mapped\",[68809]],[[68746,68746],\"mapped\",[68810]],[[68747,68747],\"mapped\",[68811]],[[68748,68748],\"mapped\",[68812]],[[68749,68749],\"mapped\",[68813]],[[68750,68750],\"mapped\",[68814]],[[68751,68751],\"mapped\",[68815]],[[68752,68752],\"mapped\",[68816]],[[68753,68753],\"mapped\",[68817]],[[68754,68754],\"mapped\",[68818]],[[68755,68755],\"mapped\",[68819]],[[68756,68756],\"mapped\",[68820]],[[68757,68757],\"mapped\",[68821]],[[68758,68758],\"mapped\",[68822]],[[68759,68759],\"mapped\",[68823]],[[68760,68760],\"mapped\",[68824]],[[68761,68761],\"mapped\",[68825]],[[68762,68762],\"mapped\",[68826]],[[68763,68763],\"mapped\",[68827]],[[68764,68764],\"mapped\",[68828]],[[68765,68765],\"mapped\",[68829]],[[68766,68766],\"mapped\",[68830]],[[68767,68767],\"mapped\",[68831]],[[68768,68768],\"mapped\",[68832]],[[68769,68769],\"mapped\",[68833]],[[68770,68770],\"mapped\",[68834]],[[68771,68771],\"mapped\",[68835]],[[68772,68772],\"mapped\",[68836]],[[68773,68773],\"mapped\",[68837]],[[68774,68774],\"mapped\",[68838]],[[68775,68775],\"mapped\",[68839]],[[68776,68776],\"mapped\",[68840]],[[68777,68777],\"mapped\",[68841]],[[68778,68778],\"mapped\",[68842]],[[68779,68779],\"mapped\",[68843]],[[68780,68780],\"mapped\",[68844]],[[68781,68781],\"mapped\",[68845]],[[68782,68782],\"mapped\",[68846]],[[68783,68783],\"mapped\",[68847]],[[68784,68784],\"mapped\",[68848]],[[68785,68785],\"mapped\",[68849]],[[68786,68786],\"mapped\",[68850]],[[68787,68799],\"disallowed\"],[[68800,68850],\"valid\"],[[68851,68857],\"disallowed\"],[[68858,68863],\"valid\",[],\"NV8\"],[[68864,69215],\"disallowed\"],[[69216,69246],\"valid\",[],\"NV8\"],[[69247,69631],\"disallowed\"],[[69632,69702],\"valid\"],[[69703,69709],\"valid\",[],\"NV8\"],[[69710,69713],\"disallowed\"],[[69714,69733],\"valid\",[],\"NV8\"],[[69734,69743],\"valid\"],[[69744,69758],\"disallowed\"],[[69759,69759],\"valid\"],[[69760,69818],\"valid\"],[[69819,69820],\"valid\",[],\"NV8\"],[[69821,69821],\"disallowed\"],[[69822,69825],\"valid\",[],\"NV8\"],[[69826,69839],\"disallowed\"],[[69840,69864],\"valid\"],[[69865,69871],\"disallowed\"],[[69872,69881],\"valid\"],[[69882,69887],\"disallowed\"],[[69888,69940],\"valid\"],[[69941,69941],\"disallowed\"],[[69942,69951],\"valid\"],[[69952,69955],\"valid\",[],\"NV8\"],[[69956,69967],\"disallowed\"],[[69968,70003],\"valid\"],[[70004,70005],\"valid\",[],\"NV8\"],[[70006,70006],\"valid\"],[[70007,70015],\"disallowed\"],[[70016,70084],\"valid\"],[[70085,70088],\"valid\",[],\"NV8\"],[[70089,70089],\"valid\",[],\"NV8\"],[[70090,70092],\"valid\"],[[70093,70093],\"valid\",[],\"NV8\"],[[70094,70095],\"disallowed\"],[[70096,70105],\"valid\"],[[70106,70106],\"valid\"],[[70107,70107],\"valid\",[],\"NV8\"],[[70108,70108],\"valid\"],[[70109,70111],\"valid\",[],\"NV8\"],[[70112,70112],\"disallowed\"],[[70113,70132],\"valid\",[],\"NV8\"],[[70133,70143],\"disallowed\"],[[70144,70161],\"valid\"],[[70162,70162],\"disallowed\"],[[70163,70199],\"valid\"],[[70200,70205],\"valid\",[],\"NV8\"],[[70206,70271],\"disallowed\"],[[70272,70278],\"valid\"],[[70279,70279],\"disallowed\"],[[70280,70280],\"valid\"],[[70281,70281],\"disallowed\"],[[70282,70285],\"valid\"],[[70286,70286],\"disallowed\"],[[70287,70301],\"valid\"],[[70302,70302],\"disallowed\"],[[70303,70312],\"valid\"],[[70313,70313],\"valid\",[],\"NV8\"],[[70314,70319],\"disallowed\"],[[70320,70378],\"valid\"],[[70379,70383],\"disallowed\"],[[70384,70393],\"valid\"],[[70394,70399],\"disallowed\"],[[70400,70400],\"valid\"],[[70401,70403],\"valid\"],[[70404,70404],\"disallowed\"],[[70405,70412],\"valid\"],[[70413,70414],\"disallowed\"],[[70415,70416],\"valid\"],[[70417,70418],\"disallowed\"],[[70419,70440],\"valid\"],[[70441,70441],\"disallowed\"],[[70442,70448],\"valid\"],[[70449,70449],\"disallowed\"],[[70450,70451],\"valid\"],[[70452,70452],\"disallowed\"],[[70453,70457],\"valid\"],[[70458,70459],\"disallowed\"],[[70460,70468],\"valid\"],[[70469,70470],\"disallowed\"],[[70471,70472],\"valid\"],[[70473,70474],\"disallowed\"],[[70475,70477],\"valid\"],[[70478,70479],\"disallowed\"],[[70480,70480],\"valid\"],[[70481,70486],\"disallowed\"],[[70487,70487],\"valid\"],[[70488,70492],\"disallowed\"],[[70493,70499],\"valid\"],[[70500,70501],\"disallowed\"],[[70502,70508],\"valid\"],[[70509,70511],\"disallowed\"],[[70512,70516],\"valid\"],[[70517,70783],\"disallowed\"],[[70784,70853],\"valid\"],[[70854,70854],\"valid\",[],\"NV8\"],[[70855,70855],\"valid\"],[[70856,70863],\"disallowed\"],[[70864,70873],\"valid\"],[[70874,71039],\"disallowed\"],[[71040,71093],\"valid\"],[[71094,71095],\"disallowed\"],[[71096,71104],\"valid\"],[[71105,71113],\"valid\",[],\"NV8\"],[[71114,71127],\"valid\",[],\"NV8\"],[[71128,71133],\"valid\"],[[71134,71167],\"disallowed\"],[[71168,71232],\"valid\"],[[71233,71235],\"valid\",[],\"NV8\"],[[71236,71236],\"valid\"],[[71237,71247],\"disallowed\"],[[71248,71257],\"valid\"],[[71258,71295],\"disallowed\"],[[71296,71351],\"valid\"],[[71352,71359],\"disallowed\"],[[71360,71369],\"valid\"],[[71370,71423],\"disallowed\"],[[71424,71449],\"valid\"],[[71450,71452],\"disallowed\"],[[71453,71467],\"valid\"],[[71468,71471],\"disallowed\"],[[71472,71481],\"valid\"],[[71482,71487],\"valid\",[],\"NV8\"],[[71488,71839],\"disallowed\"],[[71840,71840],\"mapped\",[71872]],[[71841,71841],\"mapped\",[71873]],[[71842,71842],\"mapped\",[71874]],[[71843,71843],\"mapped\",[71875]],[[71844,71844],\"mapped\",[71876]],[[71845,71845],\"mapped\",[71877]],[[71846,71846],\"mapped\",[71878]],[[71847,71847],\"mapped\",[71879]],[[71848,71848],\"mapped\",[71880]],[[71849,71849],\"mapped\",[71881]],[[71850,71850],\"mapped\",[71882]],[[71851,71851],\"mapped\",[71883]],[[71852,71852],\"mapped\",[71884]],[[71853,71853],\"mapped\",[71885]],[[71854,71854],\"mapped\",[71886]],[[71855,71855],\"mapped\",[71887]],[[71856,71856],\"mapped\",[71888]],[[71857,71857],\"mapped\",[71889]],[[71858,71858],\"mapped\",[71890]],[[71859,71859],\"mapped\",[71891]],[[71860,71860],\"mapped\",[71892]],[[71861,71861],\"mapped\",[71893]],[[71862,71862],\"mapped\",[71894]],[[71863,71863],\"mapped\",[71895]],[[71864,71864],\"mapped\",[71896]],[[71865,71865],\"mapped\",[71897]],[[71866,71866],\"mapped\",[71898]],[[71867,71867],\"mapped\",[71899]],[[71868,71868],\"mapped\",[71900]],[[71869,71869],\"mapped\",[71901]],[[71870,71870],\"mapped\",[71902]],[[71871,71871],\"mapped\",[71903]],[[71872,71913],\"valid\"],[[71914,71922],\"valid\",[],\"NV8\"],[[71923,71934],\"disallowed\"],[[71935,71935],\"valid\"],[[71936,72383],\"disallowed\"],[[72384,72440],\"valid\"],[[72441,73727],\"disallowed\"],[[73728,74606],\"valid\"],[[74607,74648],\"valid\"],[[74649,74649],\"valid\"],[[74650,74751],\"disallowed\"],[[74752,74850],\"valid\",[],\"NV8\"],[[74851,74862],\"valid\",[],\"NV8\"],[[74863,74863],\"disallowed\"],[[74864,74867],\"valid\",[],\"NV8\"],[[74868,74868],\"valid\",[],\"NV8\"],[[74869,74879],\"disallowed\"],[[74880,75075],\"valid\"],[[75076,77823],\"disallowed\"],[[77824,78894],\"valid\"],[[78895,82943],\"disallowed\"],[[82944,83526],\"valid\"],[[83527,92159],\"disallowed\"],[[92160,92728],\"valid\"],[[92729,92735],\"disallowed\"],[[92736,92766],\"valid\"],[[92767,92767],\"disallowed\"],[[92768,92777],\"valid\"],[[92778,92781],\"disallowed\"],[[92782,92783],\"valid\",[],\"NV8\"],[[92784,92879],\"disallowed\"],[[92880,92909],\"valid\"],[[92910,92911],\"disallowed\"],[[92912,92916],\"valid\"],[[92917,92917],\"valid\",[],\"NV8\"],[[92918,92927],\"disallowed\"],[[92928,92982],\"valid\"],[[92983,92991],\"valid\",[],\"NV8\"],[[92992,92995],\"valid\"],[[92996,92997],\"valid\",[],\"NV8\"],[[92998,93007],\"disallowed\"],[[93008,93017],\"valid\"],[[93018,93018],\"disallowed\"],[[93019,93025],\"valid\",[],\"NV8\"],[[93026,93026],\"disallowed\"],[[93027,93047],\"valid\"],[[93048,93052],\"disallowed\"],[[93053,93071],\"valid\"],[[93072,93951],\"disallowed\"],[[93952,94020],\"valid\"],[[94021,94031],\"disallowed\"],[[94032,94078],\"valid\"],[[94079,94094],\"disallowed\"],[[94095,94111],\"valid\"],[[94112,110591],\"disallowed\"],[[110592,110593],\"valid\"],[[110594,113663],\"disallowed\"],[[113664,113770],\"valid\"],[[113771,113775],\"disallowed\"],[[113776,113788],\"valid\"],[[113789,113791],\"disallowed\"],[[113792,113800],\"valid\"],[[113801,113807],\"disallowed\"],[[113808,113817],\"valid\"],[[113818,113819],\"disallowed\"],[[113820,113820],\"valid\",[],\"NV8\"],[[113821,113822],\"valid\"],[[113823,113823],\"valid\",[],\"NV8\"],[[113824,113827],\"ignored\"],[[113828,118783],\"disallowed\"],[[118784,119029],\"valid\",[],\"NV8\"],[[119030,119039],\"disallowed\"],[[119040,119078],\"valid\",[],\"NV8\"],[[119079,119080],\"disallowed\"],[[119081,119081],\"valid\",[],\"NV8\"],[[119082,119133],\"valid\",[],\"NV8\"],[[119134,119134],\"mapped\",[119127,119141]],[[119135,119135],\"mapped\",[119128,119141]],[[119136,119136],\"mapped\",[119128,119141,119150]],[[119137,119137],\"mapped\",[119128,119141,119151]],[[119138,119138],\"mapped\",[119128,119141,119152]],[[119139,119139],\"mapped\",[119128,119141,119153]],[[119140,119140],\"mapped\",[119128,119141,119154]],[[119141,119154],\"valid\",[],\"NV8\"],[[119155,119162],\"disallowed\"],[[119163,119226],\"valid\",[],\"NV8\"],[[119227,119227],\"mapped\",[119225,119141]],[[119228,119228],\"mapped\",[119226,119141]],[[119229,119229],\"mapped\",[119225,119141,119150]],[[119230,119230],\"mapped\",[119226,119141,119150]],[[119231,119231],\"mapped\",[119225,119141,119151]],[[119232,119232],\"mapped\",[119226,119141,119151]],[[119233,119261],\"valid\",[],\"NV8\"],[[119262,119272],\"valid\",[],\"NV8\"],[[119273,119295],\"disallowed\"],[[119296,119365],\"valid\",[],\"NV8\"],[[119366,119551],\"disallowed\"],[[119552,119638],\"valid\",[],\"NV8\"],[[119639,119647],\"disallowed\"],[[119648,119665],\"valid\",[],\"NV8\"],[[119666,119807],\"disallowed\"],[[119808,119808],\"mapped\",[97]],[[119809,119809],\"mapped\",[98]],[[119810,119810],\"mapped\",[99]],[[119811,119811],\"mapped\",[100]],[[119812,119812],\"mapped\",[101]],[[119813,119813],\"mapped\",[102]],[[119814,119814],\"mapped\",[103]],[[119815,119815],\"mapped\",[104]],[[119816,119816],\"mapped\",[105]],[[119817,119817],\"mapped\",[106]],[[119818,119818],\"mapped\",[107]],[[119819,119819],\"mapped\",[108]],[[119820,119820],\"mapped\",[109]],[[119821,119821],\"mapped\",[110]],[[119822,119822],\"mapped\",[111]],[[119823,119823],\"mapped\",[112]],[[119824,119824],\"mapped\",[113]],[[119825,119825],\"mapped\",[114]],[[119826,119826],\"mapped\",[115]],[[119827,119827],\"mapped\",[116]],[[119828,119828],\"mapped\",[117]],[[119829,119829],\"mapped\",[118]],[[119830,119830],\"mapped\",[119]],[[119831,119831],\"mapped\",[120]],[[119832,119832],\"mapped\",[121]],[[119833,119833],\"mapped\",[122]],[[119834,119834],\"mapped\",[97]],[[119835,119835],\"mapped\",[98]],[[119836,119836],\"mapped\",[99]],[[119837,119837],\"mapped\",[100]],[[119838,119838],\"mapped\",[101]],[[119839,119839],\"mapped\",[102]],[[119840,119840],\"mapped\",[103]],[[119841,119841],\"mapped\",[104]],[[119842,119842],\"mapped\",[105]],[[119843,119843],\"mapped\",[106]],[[119844,119844],\"mapped\",[107]],[[119845,119845],\"mapped\",[108]],[[119846,119846],\"mapped\",[109]],[[119847,119847],\"mapped\",[110]],[[119848,119848],\"mapped\",[111]],[[119849,119849],\"mapped\",[112]],[[119850,119850],\"mapped\",[113]],[[119851,119851],\"mapped\",[114]],[[119852,119852],\"mapped\",[115]],[[119853,119853],\"mapped\",[116]],[[119854,119854],\"mapped\",[117]],[[119855,119855],\"mapped\",[118]],[[119856,119856],\"mapped\",[119]],[[119857,119857],\"mapped\",[120]],[[119858,119858],\"mapped\",[121]],[[119859,119859],\"mapped\",[122]],[[119860,119860],\"mapped\",[97]],[[119861,119861],\"mapped\",[98]],[[119862,119862],\"mapped\",[99]],[[119863,119863],\"mapped\",[100]],[[119864,119864],\"mapped\",[101]],[[119865,119865],\"mapped\",[102]],[[119866,119866],\"mapped\",[103]],[[119867,119867],\"mapped\",[104]],[[119868,119868],\"mapped\",[105]],[[119869,119869],\"mapped\",[106]],[[119870,119870],\"mapped\",[107]],[[119871,119871],\"mapped\",[108]],[[119872,119872],\"mapped\",[109]],[[119873,119873],\"mapped\",[110]],[[119874,119874],\"mapped\",[111]],[[119875,119875],\"mapped\",[112]],[[119876,119876],\"mapped\",[113]],[[119877,119877],\"mapped\",[114]],[[119878,119878],\"mapped\",[115]],[[119879,119879],\"mapped\",[116]],[[119880,119880],\"mapped\",[117]],[[119881,119881],\"mapped\",[118]],[[119882,119882],\"mapped\",[119]],[[119883,119883],\"mapped\",[120]],[[119884,119884],\"mapped\",[121]],[[119885,119885],\"mapped\",[122]],[[119886,119886],\"mapped\",[97]],[[119887,119887],\"mapped\",[98]],[[119888,119888],\"mapped\",[99]],[[119889,119889],\"mapped\",[100]],[[119890,119890],\"mapped\",[101]],[[119891,119891],\"mapped\",[102]],[[119892,119892],\"mapped\",[103]],[[119893,119893],\"disallowed\"],[[119894,119894],\"mapped\",[105]],[[119895,119895],\"mapped\",[106]],[[119896,119896],\"mapped\",[107]],[[119897,119897],\"mapped\",[108]],[[119898,119898],\"mapped\",[109]],[[119899,119899],\"mapped\",[110]],[[119900,119900],\"mapped\",[111]],[[119901,119901],\"mapped\",[112]],[[119902,119902],\"mapped\",[113]],[[119903,119903],\"mapped\",[114]],[[119904,119904],\"mapped\",[115]],[[119905,119905],\"mapped\",[116]],[[119906,119906],\"mapped\",[117]],[[119907,119907],\"mapped\",[118]],[[119908,119908],\"mapped\",[119]],[[119909,119909],\"mapped\",[120]],[[119910,119910],\"mapped\",[121]],[[119911,119911],\"mapped\",[122]],[[119912,119912],\"mapped\",[97]],[[119913,119913],\"mapped\",[98]],[[119914,119914],\"mapped\",[99]],[[119915,119915],\"mapped\",[100]],[[119916,119916],\"mapped\",[101]],[[119917,119917],\"mapped\",[102]],[[119918,119918],\"mapped\",[103]],[[119919,119919],\"mapped\",[104]],[[119920,119920],\"mapped\",[105]],[[119921,119921],\"mapped\",[106]],[[119922,119922],\"mapped\",[107]],[[119923,119923],\"mapped\",[108]],[[119924,119924],\"mapped\",[109]],[[119925,119925],\"mapped\",[110]],[[119926,119926],\"mapped\",[111]],[[119927,119927],\"mapped\",[112]],[[119928,119928],\"mapped\",[113]],[[119929,119929],\"mapped\",[114]],[[119930,119930],\"mapped\",[115]],[[119931,119931],\"mapped\",[116]],[[119932,119932],\"mapped\",[117]],[[119933,119933],\"mapped\",[118]],[[119934,119934],\"mapped\",[119]],[[119935,119935],\"mapped\",[120]],[[119936,119936],\"mapped\",[121]],[[119937,119937],\"mapped\",[122]],[[119938,119938],\"mapped\",[97]],[[119939,119939],\"mapped\",[98]],[[119940,119940],\"mapped\",[99]],[[119941,119941],\"mapped\",[100]],[[119942,119942],\"mapped\",[101]],[[119943,119943],\"mapped\",[102]],[[119944,119944],\"mapped\",[103]],[[119945,119945],\"mapped\",[104]],[[119946,119946],\"mapped\",[105]],[[119947,119947],\"mapped\",[106]],[[119948,119948],\"mapped\",[107]],[[119949,119949],\"mapped\",[108]],[[119950,119950],\"mapped\",[109]],[[119951,119951],\"mapped\",[110]],[[119952,119952],\"mapped\",[111]],[[119953,119953],\"mapped\",[112]],[[119954,119954],\"mapped\",[113]],[[119955,119955],\"mapped\",[114]],[[119956,119956],\"mapped\",[115]],[[119957,119957],\"mapped\",[116]],[[119958,119958],\"mapped\",[117]],[[119959,119959],\"mapped\",[118]],[[119960,119960],\"mapped\",[119]],[[119961,119961],\"mapped\",[120]],[[119962,119962],\"mapped\",[121]],[[119963,119963],\"mapped\",[122]],[[119964,119964],\"mapped\",[97]],[[119965,119965],\"disallowed\"],[[119966,119966],\"mapped\",[99]],[[119967,119967],\"mapped\",[100]],[[119968,119969],\"disallowed\"],[[119970,119970],\"mapped\",[103]],[[119971,119972],\"disallowed\"],[[119973,119973],\"mapped\",[106]],[[119974,119974],\"mapped\",[107]],[[119975,119976],\"disallowed\"],[[119977,119977],\"mapped\",[110]],[[119978,119978],\"mapped\",[111]],[[119979,119979],\"mapped\",[112]],[[119980,119980],\"mapped\",[113]],[[119981,119981],\"disallowed\"],[[119982,119982],\"mapped\",[115]],[[119983,119983],\"mapped\",[116]],[[119984,119984],\"mapped\",[117]],[[119985,119985],\"mapped\",[118]],[[119986,119986],\"mapped\",[119]],[[119987,119987],\"mapped\",[120]],[[119988,119988],\"mapped\",[121]],[[119989,119989],\"mapped\",[122]],[[119990,119990],\"mapped\",[97]],[[119991,119991],\"mapped\",[98]],[[119992,119992],\"mapped\",[99]],[[119993,119993],\"mapped\",[100]],[[119994,119994],\"disallowed\"],[[119995,119995],\"mapped\",[102]],[[119996,119996],\"disallowed\"],[[119997,119997],\"mapped\",[104]],[[119998,119998],\"mapped\",[105]],[[119999,119999],\"mapped\",[106]],[[120000,120000],\"mapped\",[107]],[[120001,120001],\"mapped\",[108]],[[120002,120002],\"mapped\",[109]],[[120003,120003],\"mapped\",[110]],[[120004,120004],\"disallowed\"],[[120005,120005],\"mapped\",[112]],[[120006,120006],\"mapped\",[113]],[[120007,120007],\"mapped\",[114]],[[120008,120008],\"mapped\",[115]],[[120009,120009],\"mapped\",[116]],[[120010,120010],\"mapped\",[117]],[[120011,120011],\"mapped\",[118]],[[120012,120012],\"mapped\",[119]],[[120013,120013],\"mapped\",[120]],[[120014,120014],\"mapped\",[121]],[[120015,120015],\"mapped\",[122]],[[120016,120016],\"mapped\",[97]],[[120017,120017],\"mapped\",[98]],[[120018,120018],\"mapped\",[99]],[[120019,120019],\"mapped\",[100]],[[120020,120020],\"mapped\",[101]],[[120021,120021],\"mapped\",[102]],[[120022,120022],\"mapped\",[103]],[[120023,120023],\"mapped\",[104]],[[120024,120024],\"mapped\",[105]],[[120025,120025],\"mapped\",[106]],[[120026,120026],\"mapped\",[107]],[[120027,120027],\"mapped\",[108]],[[120028,120028],\"mapped\",[109]],[[120029,120029],\"mapped\",[110]],[[120030,120030],\"mapped\",[111]],[[120031,120031],\"mapped\",[112]],[[120032,120032],\"mapped\",[113]],[[120033,120033],\"mapped\",[114]],[[120034,120034],\"mapped\",[115]],[[120035,120035],\"mapped\",[116]],[[120036,120036],\"mapped\",[117]],[[120037,120037],\"mapped\",[118]],[[120038,120038],\"mapped\",[119]],[[120039,120039],\"mapped\",[120]],[[120040,120040],\"mapped\",[121]],[[120041,120041],\"mapped\",[122]],[[120042,120042],\"mapped\",[97]],[[120043,120043],\"mapped\",[98]],[[120044,120044],\"mapped\",[99]],[[120045,120045],\"mapped\",[100]],[[120046,120046],\"mapped\",[101]],[[120047,120047],\"mapped\",[102]],[[120048,120048],\"mapped\",[103]],[[120049,120049],\"mapped\",[104]],[[120050,120050],\"mapped\",[105]],[[120051,120051],\"mapped\",[106]],[[120052,120052],\"mapped\",[107]],[[120053,120053],\"mapped\",[108]],[[120054,120054],\"mapped\",[109]],[[120055,120055],\"mapped\",[110]],[[120056,120056],\"mapped\",[111]],[[120057,120057],\"mapped\",[112]],[[120058,120058],\"mapped\",[113]],[[120059,120059],\"mapped\",[114]],[[120060,120060],\"mapped\",[115]],[[120061,120061],\"mapped\",[116]],[[120062,120062],\"mapped\",[117]],[[120063,120063],\"mapped\",[118]],[[120064,120064],\"mapped\",[119]],[[120065,120065],\"mapped\",[120]],[[120066,120066],\"mapped\",[121]],[[120067,120067],\"mapped\",[122]],[[120068,120068],\"mapped\",[97]],[[120069,120069],\"mapped\",[98]],[[120070,120070],\"disallowed\"],[[120071,120071],\"mapped\",[100]],[[120072,120072],\"mapped\",[101]],[[120073,120073],\"mapped\",[102]],[[120074,120074],\"mapped\",[103]],[[120075,120076],\"disallowed\"],[[120077,120077],\"mapped\",[106]],[[120078,120078],\"mapped\",[107]],[[120079,120079],\"mapped\",[108]],[[120080,120080],\"mapped\",[109]],[[120081,120081],\"mapped\",[110]],[[120082,120082],\"mapped\",[111]],[[120083,120083],\"mapped\",[112]],[[120084,120084],\"mapped\",[113]],[[120085,120085],\"disallowed\"],[[120086,120086],\"mapped\",[115]],[[120087,120087],\"mapped\",[116]],[[120088,120088],\"mapped\",[117]],[[120089,120089],\"mapped\",[118]],[[120090,120090],\"mapped\",[119]],[[120091,120091],\"mapped\",[120]],[[120092,120092],\"mapped\",[121]],[[120093,120093],\"disallowed\"],[[120094,120094],\"mapped\",[97]],[[120095,120095],\"mapped\",[98]],[[120096,120096],\"mapped\",[99]],[[120097,120097],\"mapped\",[100]],[[120098,120098],\"mapped\",[101]],[[120099,120099],\"mapped\",[102]],[[120100,120100],\"mapped\",[103]],[[120101,120101],\"mapped\",[104]],[[120102,120102],\"mapped\",[105]],[[120103,120103],\"mapped\",[106]],[[120104,120104],\"mapped\",[107]],[[120105,120105],\"mapped\",[108]],[[120106,120106],\"mapped\",[109]],[[120107,120107],\"mapped\",[110]],[[120108,120108],\"mapped\",[111]],[[120109,120109],\"mapped\",[112]],[[120110,120110],\"mapped\",[113]],[[120111,120111],\"mapped\",[114]],[[120112,120112],\"mapped\",[115]],[[120113,120113],\"mapped\",[116]],[[120114,120114],\"mapped\",[117]],[[120115,120115],\"mapped\",[118]],[[120116,120116],\"mapped\",[119]],[[120117,120117],\"mapped\",[120]],[[120118,120118],\"mapped\",[121]],[[120119,120119],\"mapped\",[122]],[[120120,120120],\"mapped\",[97]],[[120121,120121],\"mapped\",[98]],[[120122,120122],\"disallowed\"],[[120123,120123],\"mapped\",[100]],[[120124,120124],\"mapped\",[101]],[[120125,120125],\"mapped\",[102]],[[120126,120126],\"mapped\",[103]],[[120127,120127],\"disallowed\"],[[120128,120128],\"mapped\",[105]],[[120129,120129],\"mapped\",[106]],[[120130,120130],\"mapped\",[107]],[[120131,120131],\"mapped\",[108]],[[120132,120132],\"mapped\",[109]],[[120133,120133],\"disallowed\"],[[120134,120134],\"mapped\",[111]],[[120135,120137],\"disallowed\"],[[120138,120138],\"mapped\",[115]],[[120139,120139],\"mapped\",[116]],[[120140,120140],\"mapped\",[117]],[[120141,120141],\"mapped\",[118]],[[120142,120142],\"mapped\",[119]],[[120143,120143],\"mapped\",[120]],[[120144,120144],\"mapped\",[121]],[[120145,120145],\"disallowed\"],[[120146,120146],\"mapped\",[97]],[[120147,120147],\"mapped\",[98]],[[120148,120148],\"mapped\",[99]],[[120149,120149],\"mapped\",[100]],[[120150,120150],\"mapped\",[101]],[[120151,120151],\"mapped\",[102]],[[120152,120152],\"mapped\",[103]],[[120153,120153],\"mapped\",[104]],[[120154,120154],\"mapped\",[105]],[[120155,120155],\"mapped\",[106]],[[120156,120156],\"mapped\",[107]],[[120157,120157],\"mapped\",[108]],[[120158,120158],\"mapped\",[109]],[[120159,120159],\"mapped\",[110]],[[120160,120160],\"mapped\",[111]],[[120161,120161],\"mapped\",[112]],[[120162,120162],\"mapped\",[113]],[[120163,120163],\"mapped\",[114]],[[120164,120164],\"mapped\",[115]],[[120165,120165],\"mapped\",[116]],[[120166,120166],\"mapped\",[117]],[[120167,120167],\"mapped\",[118]],[[120168,120168],\"mapped\",[119]],[[120169,120169],\"mapped\",[120]],[[120170,120170],\"mapped\",[121]],[[120171,120171],\"mapped\",[122]],[[120172,120172],\"mapped\",[97]],[[120173,120173],\"mapped\",[98]],[[120174,120174],\"mapped\",[99]],[[120175,120175],\"mapped\",[100]],[[120176,120176],\"mapped\",[101]],[[120177,120177],\"mapped\",[102]],[[120178,120178],\"mapped\",[103]],[[120179,120179],\"mapped\",[104]],[[120180,120180],\"mapped\",[105]],[[120181,120181],\"mapped\",[106]],[[120182,120182],\"mapped\",[107]],[[120183,120183],\"mapped\",[108]],[[120184,120184],\"mapped\",[109]],[[120185,120185],\"mapped\",[110]],[[120186,120186],\"mapped\",[111]],[[120187,120187],\"mapped\",[112]],[[120188,120188],\"mapped\",[113]],[[120189,120189],\"mapped\",[114]],[[120190,120190],\"mapped\",[115]],[[120191,120191],\"mapped\",[116]],[[120192,120192],\"mapped\",[117]],[[120193,120193],\"mapped\",[118]],[[120194,120194],\"mapped\",[119]],[[120195,120195],\"mapped\",[120]],[[120196,120196],\"mapped\",[121]],[[120197,120197],\"mapped\",[122]],[[120198,120198],\"mapped\",[97]],[[120199,120199],\"mapped\",[98]],[[120200,120200],\"mapped\",[99]],[[120201,120201],\"mapped\",[100]],[[120202,120202],\"mapped\",[101]],[[120203,120203],\"mapped\",[102]],[[120204,120204],\"mapped\",[103]],[[120205,120205],\"mapped\",[104]],[[120206,120206],\"mapped\",[105]],[[120207,120207],\"mapped\",[106]],[[120208,120208],\"mapped\",[107]],[[120209,120209],\"mapped\",[108]],[[120210,120210],\"mapped\",[109]],[[120211,120211],\"mapped\",[110]],[[120212,120212],\"mapped\",[111]],[[120213,120213],\"mapped\",[112]],[[120214,120214],\"mapped\",[113]],[[120215,120215],\"mapped\",[114]],[[120216,120216],\"mapped\",[115]],[[120217,120217],\"mapped\",[116]],[[120218,120218],\"mapped\",[117]],[[120219,120219],\"mapped\",[118]],[[120220,120220],\"mapped\",[119]],[[120221,120221],\"mapped\",[120]],[[120222,120222],\"mapped\",[121]],[[120223,120223],\"mapped\",[122]],[[120224,120224],\"mapped\",[97]],[[120225,120225],\"mapped\",[98]],[[120226,120226],\"mapped\",[99]],[[120227,120227],\"mapped\",[100]],[[120228,120228],\"mapped\",[101]],[[120229,120229],\"mapped\",[102]],[[120230,120230],\"mapped\",[103]],[[120231,120231],\"mapped\",[104]],[[120232,120232],\"mapped\",[105]],[[120233,120233],\"mapped\",[106]],[[120234,120234],\"mapped\",[107]],[[120235,120235],\"mapped\",[108]],[[120236,120236],\"mapped\",[109]],[[120237,120237],\"mapped\",[110]],[[120238,120238],\"mapped\",[111]],[[120239,120239],\"mapped\",[112]],[[120240,120240],\"mapped\",[113]],[[120241,120241],\"mapped\",[114]],[[120242,120242],\"mapped\",[115]],[[120243,120243],\"mapped\",[116]],[[120244,120244],\"mapped\",[117]],[[120245,120245],\"mapped\",[118]],[[120246,120246],\"mapped\",[119]],[[120247,120247],\"mapped\",[120]],[[120248,120248],\"mapped\",[121]],[[120249,120249],\"mapped\",[122]],[[120250,120250],\"mapped\",[97]],[[120251,120251],\"mapped\",[98]],[[120252,120252],\"mapped\",[99]],[[120253,120253],\"mapped\",[100]],[[120254,120254],\"mapped\",[101]],[[120255,120255],\"mapped\",[102]],[[120256,120256],\"mapped\",[103]],[[120257,120257],\"mapped\",[104]],[[120258,120258],\"mapped\",[105]],[[120259,120259],\"mapped\",[106]],[[120260,120260],\"mapped\",[107]],[[120261,120261],\"mapped\",[108]],[[120262,120262],\"mapped\",[109]],[[120263,120263],\"mapped\",[110]],[[120264,120264],\"mapped\",[111]],[[120265,120265],\"mapped\",[112]],[[120266,120266],\"mapped\",[113]],[[120267,120267],\"mapped\",[114]],[[120268,120268],\"mapped\",[115]],[[120269,120269],\"mapped\",[116]],[[120270,120270],\"mapped\",[117]],[[120271,120271],\"mapped\",[118]],[[120272,120272],\"mapped\",[119]],[[120273,120273],\"mapped\",[120]],[[120274,120274],\"mapped\",[121]],[[120275,120275],\"mapped\",[122]],[[120276,120276],\"mapped\",[97]],[[120277,120277],\"mapped\",[98]],[[120278,120278],\"mapped\",[99]],[[120279,120279],\"mapped\",[100]],[[120280,120280],\"mapped\",[101]],[[120281,120281],\"mapped\",[102]],[[120282,120282],\"mapped\",[103]],[[120283,120283],\"mapped\",[104]],[[120284,120284],\"mapped\",[105]],[[120285,120285],\"mapped\",[106]],[[120286,120286],\"mapped\",[107]],[[120287,120287],\"mapped\",[108]],[[120288,120288],\"mapped\",[109]],[[120289,120289],\"mapped\",[110]],[[120290,120290],\"mapped\",[111]],[[120291,120291],\"mapped\",[112]],[[120292,120292],\"mapped\",[113]],[[120293,120293],\"mapped\",[114]],[[120294,120294],\"mapped\",[115]],[[120295,120295],\"mapped\",[116]],[[120296,120296],\"mapped\",[117]],[[120297,120297],\"mapped\",[118]],[[120298,120298],\"mapped\",[119]],[[120299,120299],\"mapped\",[120]],[[120300,120300],\"mapped\",[121]],[[120301,120301],\"mapped\",[122]],[[120302,120302],\"mapped\",[97]],[[120303,120303],\"mapped\",[98]],[[120304,120304],\"mapped\",[99]],[[120305,120305],\"mapped\",[100]],[[120306,120306],\"mapped\",[101]],[[120307,120307],\"mapped\",[102]],[[120308,120308],\"mapped\",[103]],[[120309,120309],\"mapped\",[104]],[[120310,120310],\"mapped\",[105]],[[120311,120311],\"mapped\",[106]],[[120312,120312],\"mapped\",[107]],[[120313,120313],\"mapped\",[108]],[[120314,120314],\"mapped\",[109]],[[120315,120315],\"mapped\",[110]],[[120316,120316],\"mapped\",[111]],[[120317,120317],\"mapped\",[112]],[[120318,120318],\"mapped\",[113]],[[120319,120319],\"mapped\",[114]],[[120320,120320],\"mapped\",[115]],[[120321,120321],\"mapped\",[116]],[[120322,120322],\"mapped\",[117]],[[120323,120323],\"mapped\",[118]],[[120324,120324],\"mapped\",[119]],[[120325,120325],\"mapped\",[120]],[[120326,120326],\"mapped\",[121]],[[120327,120327],\"mapped\",[122]],[[120328,120328],\"mapped\",[97]],[[120329,120329],\"mapped\",[98]],[[120330,120330],\"mapped\",[99]],[[120331,120331],\"mapped\",[100]],[[120332,120332],\"mapped\",[101]],[[120333,120333],\"mapped\",[102]],[[120334,120334],\"mapped\",[103]],[[120335,120335],\"mapped\",[104]],[[120336,120336],\"mapped\",[105]],[[120337,120337],\"mapped\",[106]],[[120338,120338],\"mapped\",[107]],[[120339,120339],\"mapped\",[108]],[[120340,120340],\"mapped\",[109]],[[120341,120341],\"mapped\",[110]],[[120342,120342],\"mapped\",[111]],[[120343,120343],\"mapped\",[112]],[[120344,120344],\"mapped\",[113]],[[120345,120345],\"mapped\",[114]],[[120346,120346],\"mapped\",[115]],[[120347,120347],\"mapped\",[116]],[[120348,120348],\"mapped\",[117]],[[120349,120349],\"mapped\",[118]],[[120350,120350],\"mapped\",[119]],[[120351,120351],\"mapped\",[120]],[[120352,120352],\"mapped\",[121]],[[120353,120353],\"mapped\",[122]],[[120354,120354],\"mapped\",[97]],[[120355,120355],\"mapped\",[98]],[[120356,120356],\"mapped\",[99]],[[120357,120357],\"mapped\",[100]],[[120358,120358],\"mapped\",[101]],[[120359,120359],\"mapped\",[102]],[[120360,120360],\"mapped\",[103]],[[120361,120361],\"mapped\",[104]],[[120362,120362],\"mapped\",[105]],[[120363,120363],\"mapped\",[106]],[[120364,120364],\"mapped\",[107]],[[120365,120365],\"mapped\",[108]],[[120366,120366],\"mapped\",[109]],[[120367,120367],\"mapped\",[110]],[[120368,120368],\"mapped\",[111]],[[120369,120369],\"mapped\",[112]],[[120370,120370],\"mapped\",[113]],[[120371,120371],\"mapped\",[114]],[[120372,120372],\"mapped\",[115]],[[120373,120373],\"mapped\",[116]],[[120374,120374],\"mapped\",[117]],[[120375,120375],\"mapped\",[118]],[[120376,120376],\"mapped\",[119]],[[120377,120377],\"mapped\",[120]],[[120378,120378],\"mapped\",[121]],[[120379,120379],\"mapped\",[122]],[[120380,120380],\"mapped\",[97]],[[120381,120381],\"mapped\",[98]],[[120382,120382],\"mapped\",[99]],[[120383,120383],\"mapped\",[100]],[[120384,120384],\"mapped\",[101]],[[120385,120385],\"mapped\",[102]],[[120386,120386],\"mapped\",[103]],[[120387,120387],\"mapped\",[104]],[[120388,120388],\"mapped\",[105]],[[120389,120389],\"mapped\",[106]],[[120390,120390],\"mapped\",[107]],[[120391,120391],\"mapped\",[108]],[[120392,120392],\"mapped\",[109]],[[120393,120393],\"mapped\",[110]],[[120394,120394],\"mapped\",[111]],[[120395,120395],\"mapped\",[112]],[[120396,120396],\"mapped\",[113]],[[120397,120397],\"mapped\",[114]],[[120398,120398],\"mapped\",[115]],[[120399,120399],\"mapped\",[116]],[[120400,120400],\"mapped\",[117]],[[120401,120401],\"mapped\",[118]],[[120402,120402],\"mapped\",[119]],[[120403,120403],\"mapped\",[120]],[[120404,120404],\"mapped\",[121]],[[120405,120405],\"mapped\",[122]],[[120406,120406],\"mapped\",[97]],[[120407,120407],\"mapped\",[98]],[[120408,120408],\"mapped\",[99]],[[120409,120409],\"mapped\",[100]],[[120410,120410],\"mapped\",[101]],[[120411,120411],\"mapped\",[102]],[[120412,120412],\"mapped\",[103]],[[120413,120413],\"mapped\",[104]],[[120414,120414],\"mapped\",[105]],[[120415,120415],\"mapped\",[106]],[[120416,120416],\"mapped\",[107]],[[120417,120417],\"mapped\",[108]],[[120418,120418],\"mapped\",[109]],[[120419,120419],\"mapped\",[110]],[[120420,120420],\"mapped\",[111]],[[120421,120421],\"mapped\",[112]],[[120422,120422],\"mapped\",[113]],[[120423,120423],\"mapped\",[114]],[[120424,120424],\"mapped\",[115]],[[120425,120425],\"mapped\",[116]],[[120426,120426],\"mapped\",[117]],[[120427,120427],\"mapped\",[118]],[[120428,120428],\"mapped\",[119]],[[120429,120429],\"mapped\",[120]],[[120430,120430],\"mapped\",[121]],[[120431,120431],\"mapped\",[122]],[[120432,120432],\"mapped\",[97]],[[120433,120433],\"mapped\",[98]],[[120434,120434],\"mapped\",[99]],[[120435,120435],\"mapped\",[100]],[[120436,120436],\"mapped\",[101]],[[120437,120437],\"mapped\",[102]],[[120438,120438],\"mapped\",[103]],[[120439,120439],\"mapped\",[104]],[[120440,120440],\"mapped\",[105]],[[120441,120441],\"mapped\",[106]],[[120442,120442],\"mapped\",[107]],[[120443,120443],\"mapped\",[108]],[[120444,120444],\"mapped\",[109]],[[120445,120445],\"mapped\",[110]],[[120446,120446],\"mapped\",[111]],[[120447,120447],\"mapped\",[112]],[[120448,120448],\"mapped\",[113]],[[120449,120449],\"mapped\",[114]],[[120450,120450],\"mapped\",[115]],[[120451,120451],\"mapped\",[116]],[[120452,120452],\"mapped\",[117]],[[120453,120453],\"mapped\",[118]],[[120454,120454],\"mapped\",[119]],[[120455,120455],\"mapped\",[120]],[[120456,120456],\"mapped\",[121]],[[120457,120457],\"mapped\",[122]],[[120458,120458],\"mapped\",[97]],[[120459,120459],\"mapped\",[98]],[[120460,120460],\"mapped\",[99]],[[120461,120461],\"mapped\",[100]],[[120462,120462],\"mapped\",[101]],[[120463,120463],\"mapped\",[102]],[[120464,120464],\"mapped\",[103]],[[120465,120465],\"mapped\",[104]],[[120466,120466],\"mapped\",[105]],[[120467,120467],\"mapped\",[106]],[[120468,120468],\"mapped\",[107]],[[120469,120469],\"mapped\",[108]],[[120470,120470],\"mapped\",[109]],[[120471,120471],\"mapped\",[110]],[[120472,120472],\"mapped\",[111]],[[120473,120473],\"mapped\",[112]],[[120474,120474],\"mapped\",[113]],[[120475,120475],\"mapped\",[114]],[[120476,120476],\"mapped\",[115]],[[120477,120477],\"mapped\",[116]],[[120478,120478],\"mapped\",[117]],[[120479,120479],\"mapped\",[118]],[[120480,120480],\"mapped\",[119]],[[120481,120481],\"mapped\",[120]],[[120482,120482],\"mapped\",[121]],[[120483,120483],\"mapped\",[122]],[[120484,120484],\"mapped\",[305]],[[120485,120485],\"mapped\",[567]],[[120486,120487],\"disallowed\"],[[120488,120488],\"mapped\",[945]],[[120489,120489],\"mapped\",[946]],[[120490,120490],\"mapped\",[947]],[[120491,120491],\"mapped\",[948]],[[120492,120492],\"mapped\",[949]],[[120493,120493],\"mapped\",[950]],[[120494,120494],\"mapped\",[951]],[[120495,120495],\"mapped\",[952]],[[120496,120496],\"mapped\",[953]],[[120497,120497],\"mapped\",[954]],[[120498,120498],\"mapped\",[955]],[[120499,120499],\"mapped\",[956]],[[120500,120500],\"mapped\",[957]],[[120501,120501],\"mapped\",[958]],[[120502,120502],\"mapped\",[959]],[[120503,120503],\"mapped\",[960]],[[120504,120504],\"mapped\",[961]],[[120505,120505],\"mapped\",[952]],[[120506,120506],\"mapped\",[963]],[[120507,120507],\"mapped\",[964]],[[120508,120508],\"mapped\",[965]],[[120509,120509],\"mapped\",[966]],[[120510,120510],\"mapped\",[967]],[[120511,120511],\"mapped\",[968]],[[120512,120512],\"mapped\",[969]],[[120513,120513],\"mapped\",[8711]],[[120514,120514],\"mapped\",[945]],[[120515,120515],\"mapped\",[946]],[[120516,120516],\"mapped\",[947]],[[120517,120517],\"mapped\",[948]],[[120518,120518],\"mapped\",[949]],[[120519,120519],\"mapped\",[950]],[[120520,120520],\"mapped\",[951]],[[120521,120521],\"mapped\",[952]],[[120522,120522],\"mapped\",[953]],[[120523,120523],\"mapped\",[954]],[[120524,120524],\"mapped\",[955]],[[120525,120525],\"mapped\",[956]],[[120526,120526],\"mapped\",[957]],[[120527,120527],\"mapped\",[958]],[[120528,120528],\"mapped\",[959]],[[120529,120529],\"mapped\",[960]],[[120530,120530],\"mapped\",[961]],[[120531,120532],\"mapped\",[963]],[[120533,120533],\"mapped\",[964]],[[120534,120534],\"mapped\",[965]],[[120535,120535],\"mapped\",[966]],[[120536,120536],\"mapped\",[967]],[[120537,120537],\"mapped\",[968]],[[120538,120538],\"mapped\",[969]],[[120539,120539],\"mapped\",[8706]],[[120540,120540],\"mapped\",[949]],[[120541,120541],\"mapped\",[952]],[[120542,120542],\"mapped\",[954]],[[120543,120543],\"mapped\",[966]],[[120544,120544],\"mapped\",[961]],[[120545,120545],\"mapped\",[960]],[[120546,120546],\"mapped\",[945]],[[120547,120547],\"mapped\",[946]],[[120548,120548],\"mapped\",[947]],[[120549,120549],\"mapped\",[948]],[[120550,120550],\"mapped\",[949]],[[120551,120551],\"mapped\",[950]],[[120552,120552],\"mapped\",[951]],[[120553,120553],\"mapped\",[952]],[[120554,120554],\"mapped\",[953]],[[120555,120555],\"mapped\",[954]],[[120556,120556],\"mapped\",[955]],[[120557,120557],\"mapped\",[956]],[[120558,120558],\"mapped\",[957]],[[120559,120559],\"mapped\",[958]],[[120560,120560],\"mapped\",[959]],[[120561,120561],\"mapped\",[960]],[[120562,120562],\"mapped\",[961]],[[120563,120563],\"mapped\",[952]],[[120564,120564],\"mapped\",[963]],[[120565,120565],\"mapped\",[964]],[[120566,120566],\"mapped\",[965]],[[120567,120567],\"mapped\",[966]],[[120568,120568],\"mapped\",[967]],[[120569,120569],\"mapped\",[968]],[[120570,120570],\"mapped\",[969]],[[120571,120571],\"mapped\",[8711]],[[120572,120572],\"mapped\",[945]],[[120573,120573],\"mapped\",[946]],[[120574,120574],\"mapped\",[947]],[[120575,120575],\"mapped\",[948]],[[120576,120576],\"mapped\",[949]],[[120577,120577],\"mapped\",[950]],[[120578,120578],\"mapped\",[951]],[[120579,120579],\"mapped\",[952]],[[120580,120580],\"mapped\",[953]],[[120581,120581],\"mapped\",[954]],[[120582,120582],\"mapped\",[955]],[[120583,120583],\"mapped\",[956]],[[120584,120584],\"mapped\",[957]],[[120585,120585],\"mapped\",[958]],[[120586,120586],\"mapped\",[959]],[[120587,120587],\"mapped\",[960]],[[120588,120588],\"mapped\",[961]],[[120589,120590],\"mapped\",[963]],[[120591,120591],\"mapped\",[964]],[[120592,120592],\"mapped\",[965]],[[120593,120593],\"mapped\",[966]],[[120594,120594],\"mapped\",[967]],[[120595,120595],\"mapped\",[968]],[[120596,120596],\"mapped\",[969]],[[120597,120597],\"mapped\",[8706]],[[120598,120598],\"mapped\",[949]],[[120599,120599],\"mapped\",[952]],[[120600,120600],\"mapped\",[954]],[[120601,120601],\"mapped\",[966]],[[120602,120602],\"mapped\",[961]],[[120603,120603],\"mapped\",[960]],[[120604,120604],\"mapped\",[945]],[[120605,120605],\"mapped\",[946]],[[120606,120606],\"mapped\",[947]],[[120607,120607],\"mapped\",[948]],[[120608,120608],\"mapped\",[949]],[[120609,120609],\"mapped\",[950]],[[120610,120610],\"mapped\",[951]],[[120611,120611],\"mapped\",[952]],[[120612,120612],\"mapped\",[953]],[[120613,120613],\"mapped\",[954]],[[120614,120614],\"mapped\",[955]],[[120615,120615],\"mapped\",[956]],[[120616,120616],\"mapped\",[957]],[[120617,120617],\"mapped\",[958]],[[120618,120618],\"mapped\",[959]],[[120619,120619],\"mapped\",[960]],[[120620,120620],\"mapped\",[961]],[[120621,120621],\"mapped\",[952]],[[120622,120622],\"mapped\",[963]],[[120623,120623],\"mapped\",[964]],[[120624,120624],\"mapped\",[965]],[[120625,120625],\"mapped\",[966]],[[120626,120626],\"mapped\",[967]],[[120627,120627],\"mapped\",[968]],[[120628,120628],\"mapped\",[969]],[[120629,120629],\"mapped\",[8711]],[[120630,120630],\"mapped\",[945]],[[120631,120631],\"mapped\",[946]],[[120632,120632],\"mapped\",[947]],[[120633,120633],\"mapped\",[948]],[[120634,120634],\"mapped\",[949]],[[120635,120635],\"mapped\",[950]],[[120636,120636],\"mapped\",[951]],[[120637,120637],\"mapped\",[952]],[[120638,120638],\"mapped\",[953]],[[120639,120639],\"mapped\",[954]],[[120640,120640],\"mapped\",[955]],[[120641,120641],\"mapped\",[956]],[[120642,120642],\"mapped\",[957]],[[120643,120643],\"mapped\",[958]],[[120644,120644],\"mapped\",[959]],[[120645,120645],\"mapped\",[960]],[[120646,120646],\"mapped\",[961]],[[120647,120648],\"mapped\",[963]],[[120649,120649],\"mapped\",[964]],[[120650,120650],\"mapped\",[965]],[[120651,120651],\"mapped\",[966]],[[120652,120652],\"mapped\",[967]],[[120653,120653],\"mapped\",[968]],[[120654,120654],\"mapped\",[969]],[[120655,120655],\"mapped\",[8706]],[[120656,120656],\"mapped\",[949]],[[120657,120657],\"mapped\",[952]],[[120658,120658],\"mapped\",[954]],[[120659,120659],\"mapped\",[966]],[[120660,120660],\"mapped\",[961]],[[120661,120661],\"mapped\",[960]],[[120662,120662],\"mapped\",[945]],[[120663,120663],\"mapped\",[946]],[[120664,120664],\"mapped\",[947]],[[120665,120665],\"mapped\",[948]],[[120666,120666],\"mapped\",[949]],[[120667,120667],\"mapped\",[950]],[[120668,120668],\"mapped\",[951]],[[120669,120669],\"mapped\",[952]],[[120670,120670],\"mapped\",[953]],[[120671,120671],\"mapped\",[954]],[[120672,120672],\"mapped\",[955]],[[120673,120673],\"mapped\",[956]],[[120674,120674],\"mapped\",[957]],[[120675,120675],\"mapped\",[958]],[[120676,120676],\"mapped\",[959]],[[120677,120677],\"mapped\",[960]],[[120678,120678],\"mapped\",[961]],[[120679,120679],\"mapped\",[952]],[[120680,120680],\"mapped\",[963]],[[120681,120681],\"mapped\",[964]],[[120682,120682],\"mapped\",[965]],[[120683,120683],\"mapped\",[966]],[[120684,120684],\"mapped\",[967]],[[120685,120685],\"mapped\",[968]],[[120686,120686],\"mapped\",[969]],[[120687,120687],\"mapped\",[8711]],[[120688,120688],\"mapped\",[945]],[[120689,120689],\"mapped\",[946]],[[120690,120690],\"mapped\",[947]],[[120691,120691],\"mapped\",[948]],[[120692,120692],\"mapped\",[949]],[[120693,120693],\"mapped\",[950]],[[120694,120694],\"mapped\",[951]],[[120695,120695],\"mapped\",[952]],[[120696,120696],\"mapped\",[953]],[[120697,120697],\"mapped\",[954]],[[120698,120698],\"mapped\",[955]],[[120699,120699],\"mapped\",[956]],[[120700,120700],\"mapped\",[957]],[[120701,120701],\"mapped\",[958]],[[120702,120702],\"mapped\",[959]],[[120703,120703],\"mapped\",[960]],[[120704,120704],\"mapped\",[961]],[[120705,120706],\"mapped\",[963]],[[120707,120707],\"mapped\",[964]],[[120708,120708],\"mapped\",[965]],[[120709,120709],\"mapped\",[966]],[[120710,120710],\"mapped\",[967]],[[120711,120711],\"mapped\",[968]],[[120712,120712],\"mapped\",[969]],[[120713,120713],\"mapped\",[8706]],[[120714,120714],\"mapped\",[949]],[[120715,120715],\"mapped\",[952]],[[120716,120716],\"mapped\",[954]],[[120717,120717],\"mapped\",[966]],[[120718,120718],\"mapped\",[961]],[[120719,120719],\"mapped\",[960]],[[120720,120720],\"mapped\",[945]],[[120721,120721],\"mapped\",[946]],[[120722,120722],\"mapped\",[947]],[[120723,120723],\"mapped\",[948]],[[120724,120724],\"mapped\",[949]],[[120725,120725],\"mapped\",[950]],[[120726,120726],\"mapped\",[951]],[[120727,120727],\"mapped\",[952]],[[120728,120728],\"mapped\",[953]],[[120729,120729],\"mapped\",[954]],[[120730,120730],\"mapped\",[955]],[[120731,120731],\"mapped\",[956]],[[120732,120732],\"mapped\",[957]],[[120733,120733],\"mapped\",[958]],[[120734,120734],\"mapped\",[959]],[[120735,120735],\"mapped\",[960]],[[120736,120736],\"mapped\",[961]],[[120737,120737],\"mapped\",[952]],[[120738,120738],\"mapped\",[963]],[[120739,120739],\"mapped\",[964]],[[120740,120740],\"mapped\",[965]],[[120741,120741],\"mapped\",[966]],[[120742,120742],\"mapped\",[967]],[[120743,120743],\"mapped\",[968]],[[120744,120744],\"mapped\",[969]],[[120745,120745],\"mapped\",[8711]],[[120746,120746],\"mapped\",[945]],[[120747,120747],\"mapped\",[946]],[[120748,120748],\"mapped\",[947]],[[120749,120749],\"mapped\",[948]],[[120750,120750],\"mapped\",[949]],[[120751,120751],\"mapped\",[950]],[[120752,120752],\"mapped\",[951]],[[120753,120753],\"mapped\",[952]],[[120754,120754],\"mapped\",[953]],[[120755,120755],\"mapped\",[954]],[[120756,120756],\"mapped\",[955]],[[120757,120757],\"mapped\",[956]],[[120758,120758],\"mapped\",[957]],[[120759,120759],\"mapped\",[958]],[[120760,120760],\"mapped\",[959]],[[120761,120761],\"mapped\",[960]],[[120762,120762],\"mapped\",[961]],[[120763,120764],\"mapped\",[963]],[[120765,120765],\"mapped\",[964]],[[120766,120766],\"mapped\",[965]],[[120767,120767],\"mapped\",[966]],[[120768,120768],\"mapped\",[967]],[[120769,120769],\"mapped\",[968]],[[120770,120770],\"mapped\",[969]],[[120771,120771],\"mapped\",[8706]],[[120772,120772],\"mapped\",[949]],[[120773,120773],\"mapped\",[952]],[[120774,120774],\"mapped\",[954]],[[120775,120775],\"mapped\",[966]],[[120776,120776],\"mapped\",[961]],[[120777,120777],\"mapped\",[960]],[[120778,120779],\"mapped\",[989]],[[120780,120781],\"disallowed\"],[[120782,120782],\"mapped\",[48]],[[120783,120783],\"mapped\",[49]],[[120784,120784],\"mapped\",[50]],[[120785,120785],\"mapped\",[51]],[[120786,120786],\"mapped\",[52]],[[120787,120787],\"mapped\",[53]],[[120788,120788],\"mapped\",[54]],[[120789,120789],\"mapped\",[55]],[[120790,120790],\"mapped\",[56]],[[120791,120791],\"mapped\",[57]],[[120792,120792],\"mapped\",[48]],[[120793,120793],\"mapped\",[49]],[[120794,120794],\"mapped\",[50]],[[120795,120795],\"mapped\",[51]],[[120796,120796],\"mapped\",[52]],[[120797,120797],\"mapped\",[53]],[[120798,120798],\"mapped\",[54]],[[120799,120799],\"mapped\",[55]],[[120800,120800],\"mapped\",[56]],[[120801,120801],\"mapped\",[57]],[[120802,120802],\"mapped\",[48]],[[120803,120803],\"mapped\",[49]],[[120804,120804],\"mapped\",[50]],[[120805,120805],\"mapped\",[51]],[[120806,120806],\"mapped\",[52]],[[120807,120807],\"mapped\",[53]],[[120808,120808],\"mapped\",[54]],[[120809,120809],\"mapped\",[55]],[[120810,120810],\"mapped\",[56]],[[120811,120811],\"mapped\",[57]],[[120812,120812],\"mapped\",[48]],[[120813,120813],\"mapped\",[49]],[[120814,120814],\"mapped\",[50]],[[120815,120815],\"mapped\",[51]],[[120816,120816],\"mapped\",[52]],[[120817,120817],\"mapped\",[53]],[[120818,120818],\"mapped\",[54]],[[120819,120819],\"mapped\",[55]],[[120820,120820],\"mapped\",[56]],[[120821,120821],\"mapped\",[57]],[[120822,120822],\"mapped\",[48]],[[120823,120823],\"mapped\",[49]],[[120824,120824],\"mapped\",[50]],[[120825,120825],\"mapped\",[51]],[[120826,120826],\"mapped\",[52]],[[120827,120827],\"mapped\",[53]],[[120828,120828],\"mapped\",[54]],[[120829,120829],\"mapped\",[55]],[[120830,120830],\"mapped\",[56]],[[120831,120831],\"mapped\",[57]],[[120832,121343],\"valid\",[],\"NV8\"],[[121344,121398],\"valid\"],[[121399,121402],\"valid\",[],\"NV8\"],[[121403,121452],\"valid\"],[[121453,121460],\"valid\",[],\"NV8\"],[[121461,121461],\"valid\"],[[121462,121475],\"valid\",[],\"NV8\"],[[121476,121476],\"valid\"],[[121477,121483],\"valid\",[],\"NV8\"],[[121484,121498],\"disallowed\"],[[121499,121503],\"valid\"],[[121504,121504],\"disallowed\"],[[121505,121519],\"valid\"],[[121520,124927],\"disallowed\"],[[124928,125124],\"valid\"],[[125125,125126],\"disallowed\"],[[125127,125135],\"valid\",[],\"NV8\"],[[125136,125142],\"valid\"],[[125143,126463],\"disallowed\"],[[126464,126464],\"mapped\",[1575]],[[126465,126465],\"mapped\",[1576]],[[126466,126466],\"mapped\",[1580]],[[126467,126467],\"mapped\",[1583]],[[126468,126468],\"disallowed\"],[[126469,126469],\"mapped\",[1608]],[[126470,126470],\"mapped\",[1586]],[[126471,126471],\"mapped\",[1581]],[[126472,126472],\"mapped\",[1591]],[[126473,126473],\"mapped\",[1610]],[[126474,126474],\"mapped\",[1603]],[[126475,126475],\"mapped\",[1604]],[[126476,126476],\"mapped\",[1605]],[[126477,126477],\"mapped\",[1606]],[[126478,126478],\"mapped\",[1587]],[[126479,126479],\"mapped\",[1593]],[[126480,126480],\"mapped\",[1601]],[[126481,126481],\"mapped\",[1589]],[[126482,126482],\"mapped\",[1602]],[[126483,126483],\"mapped\",[1585]],[[126484,126484],\"mapped\",[1588]],[[126485,126485],\"mapped\",[1578]],[[126486,126486],\"mapped\",[1579]],[[126487,126487],\"mapped\",[1582]],[[126488,126488],\"mapped\",[1584]],[[126489,126489],\"mapped\",[1590]],[[126490,126490],\"mapped\",[1592]],[[126491,126491],\"mapped\",[1594]],[[126492,126492],\"mapped\",[1646]],[[126493,126493],\"mapped\",[1722]],[[126494,126494],\"mapped\",[1697]],[[126495,126495],\"mapped\",[1647]],[[126496,126496],\"disallowed\"],[[126497,126497],\"mapped\",[1576]],[[126498,126498],\"mapped\",[1580]],[[126499,126499],\"disallowed\"],[[126500,126500],\"mapped\",[1607]],[[126501,126502],\"disallowed\"],[[126503,126503],\"mapped\",[1581]],[[126504,126504],\"disallowed\"],[[126505,126505],\"mapped\",[1610]],[[126506,126506],\"mapped\",[1603]],[[126507,126507],\"mapped\",[1604]],[[126508,126508],\"mapped\",[1605]],[[126509,126509],\"mapped\",[1606]],[[126510,126510],\"mapped\",[1587]],[[126511,126511],\"mapped\",[1593]],[[126512,126512],\"mapped\",[1601]],[[126513,126513],\"mapped\",[1589]],[[126514,126514],\"mapped\",[1602]],[[126515,126515],\"disallowed\"],[[126516,126516],\"mapped\",[1588]],[[126517,126517],\"mapped\",[1578]],[[126518,126518],\"mapped\",[1579]],[[126519,126519],\"mapped\",[1582]],[[126520,126520],\"disallowed\"],[[126521,126521],\"mapped\",[1590]],[[126522,126522],\"disallowed\"],[[126523,126523],\"mapped\",[1594]],[[126524,126529],\"disallowed\"],[[126530,126530],\"mapped\",[1580]],[[126531,126534],\"disallowed\"],[[126535,126535],\"mapped\",[1581]],[[126536,126536],\"disallowed\"],[[126537,126537],\"mapped\",[1610]],[[126538,126538],\"disallowed\"],[[126539,126539],\"mapped\",[1604]],[[126540,126540],\"disallowed\"],[[126541,126541],\"mapped\",[1606]],[[126542,126542],\"mapped\",[1587]],[[126543,126543],\"mapped\",[1593]],[[126544,126544],\"disallowed\"],[[126545,126545],\"mapped\",[1589]],[[126546,126546],\"mapped\",[1602]],[[126547,126547],\"disallowed\"],[[126548,126548],\"mapped\",[1588]],[[126549,126550],\"disallowed\"],[[126551,126551],\"mapped\",[1582]],[[126552,126552],\"disallowed\"],[[126553,126553],\"mapped\",[1590]],[[126554,126554],\"disallowed\"],[[126555,126555],\"mapped\",[1594]],[[126556,126556],\"disallowed\"],[[126557,126557],\"mapped\",[1722]],[[126558,126558],\"disallowed\"],[[126559,126559],\"mapped\",[1647]],[[126560,126560],\"disallowed\"],[[126561,126561],\"mapped\",[1576]],[[126562,126562],\"mapped\",[1580]],[[126563,126563],\"disallowed\"],[[126564,126564],\"mapped\",[1607]],[[126565,126566],\"disallowed\"],[[126567,126567],\"mapped\",[1581]],[[126568,126568],\"mapped\",[1591]],[[126569,126569],\"mapped\",[1610]],[[126570,126570],\"mapped\",[1603]],[[126571,126571],\"disallowed\"],[[126572,126572],\"mapped\",[1605]],[[126573,126573],\"mapped\",[1606]],[[126574,126574],\"mapped\",[1587]],[[126575,126575],\"mapped\",[1593]],[[126576,126576],\"mapped\",[1601]],[[126577,126577],\"mapped\",[1589]],[[126578,126578],\"mapped\",[1602]],[[126579,126579],\"disallowed\"],[[126580,126580],\"mapped\",[1588]],[[126581,126581],\"mapped\",[1578]],[[126582,126582],\"mapped\",[1579]],[[126583,126583],\"mapped\",[1582]],[[126584,126584],\"disallowed\"],[[126585,126585],\"mapped\",[1590]],[[126586,126586],\"mapped\",[1592]],[[126587,126587],\"mapped\",[1594]],[[126588,126588],\"mapped\",[1646]],[[126589,126589],\"disallowed\"],[[126590,126590],\"mapped\",[1697]],[[126591,126591],\"disallowed\"],[[126592,126592],\"mapped\",[1575]],[[126593,126593],\"mapped\",[1576]],[[126594,126594],\"mapped\",[1580]],[[126595,126595],\"mapped\",[1583]],[[126596,126596],\"mapped\",[1607]],[[126597,126597],\"mapped\",[1608]],[[126598,126598],\"mapped\",[1586]],[[126599,126599],\"mapped\",[1581]],[[126600,126600],\"mapped\",[1591]],[[126601,126601],\"mapped\",[1610]],[[126602,126602],\"disallowed\"],[[126603,126603],\"mapped\",[1604]],[[126604,126604],\"mapped\",[1605]],[[126605,126605],\"mapped\",[1606]],[[126606,126606],\"mapped\",[1587]],[[126607,126607],\"mapped\",[1593]],[[126608,126608],\"mapped\",[1601]],[[126609,126609],\"mapped\",[1589]],[[126610,126610],\"mapped\",[1602]],[[126611,126611],\"mapped\",[1585]],[[126612,126612],\"mapped\",[1588]],[[126613,126613],\"mapped\",[1578]],[[126614,126614],\"mapped\",[1579]],[[126615,126615],\"mapped\",[1582]],[[126616,126616],\"mapped\",[1584]],[[126617,126617],\"mapped\",[1590]],[[126618,126618],\"mapped\",[1592]],[[126619,126619],\"mapped\",[1594]],[[126620,126624],\"disallowed\"],[[126625,126625],\"mapped\",[1576]],[[126626,126626],\"mapped\",[1580]],[[126627,126627],\"mapped\",[1583]],[[126628,126628],\"disallowed\"],[[126629,126629],\"mapped\",[1608]],[[126630,126630],\"mapped\",[1586]],[[126631,126631],\"mapped\",[1581]],[[126632,126632],\"mapped\",[1591]],[[126633,126633],\"mapped\",[1610]],[[126634,126634],\"disallowed\"],[[126635,126635],\"mapped\",[1604]],[[126636,126636],\"mapped\",[1605]],[[126637,126637],\"mapped\",[1606]],[[126638,126638],\"mapped\",[1587]],[[126639,126639],\"mapped\",[1593]],[[126640,126640],\"mapped\",[1601]],[[126641,126641],\"mapped\",[1589]],[[126642,126642],\"mapped\",[1602]],[[126643,126643],\"mapped\",[1585]],[[126644,126644],\"mapped\",[1588]],[[126645,126645],\"mapped\",[1578]],[[126646,126646],\"mapped\",[1579]],[[126647,126647],\"mapped\",[1582]],[[126648,126648],\"mapped\",[1584]],[[126649,126649],\"mapped\",[1590]],[[126650,126650],\"mapped\",[1592]],[[126651,126651],\"mapped\",[1594]],[[126652,126703],\"disallowed\"],[[126704,126705],\"valid\",[],\"NV8\"],[[126706,126975],\"disallowed\"],[[126976,127019],\"valid\",[],\"NV8\"],[[127020,127023],\"disallowed\"],[[127024,127123],\"valid\",[],\"NV8\"],[[127124,127135],\"disallowed\"],[[127136,127150],\"valid\",[],\"NV8\"],[[127151,127152],\"disallowed\"],[[127153,127166],\"valid\",[],\"NV8\"],[[127167,127167],\"valid\",[],\"NV8\"],[[127168,127168],\"disallowed\"],[[127169,127183],\"valid\",[],\"NV8\"],[[127184,127184],\"disallowed\"],[[127185,127199],\"valid\",[],\"NV8\"],[[127200,127221],\"valid\",[],\"NV8\"],[[127222,127231],\"disallowed\"],[[127232,127232],\"disallowed\"],[[127233,127233],\"disallowed_STD3_mapped\",[48,44]],[[127234,127234],\"disallowed_STD3_mapped\",[49,44]],[[127235,127235],\"disallowed_STD3_mapped\",[50,44]],[[127236,127236],\"disallowed_STD3_mapped\",[51,44]],[[127237,127237],\"disallowed_STD3_mapped\",[52,44]],[[127238,127238],\"disallowed_STD3_mapped\",[53,44]],[[127239,127239],\"disallowed_STD3_mapped\",[54,44]],[[127240,127240],\"disallowed_STD3_mapped\",[55,44]],[[127241,127241],\"disallowed_STD3_mapped\",[56,44]],[[127242,127242],\"disallowed_STD3_mapped\",[57,44]],[[127243,127244],\"valid\",[],\"NV8\"],[[127245,127247],\"disallowed\"],[[127248,127248],\"disallowed_STD3_mapped\",[40,97,41]],[[127249,127249],\"disallowed_STD3_mapped\",[40,98,41]],[[127250,127250],\"disallowed_STD3_mapped\",[40,99,41]],[[127251,127251],\"disallowed_STD3_mapped\",[40,100,41]],[[127252,127252],\"disallowed_STD3_mapped\",[40,101,41]],[[127253,127253],\"disallowed_STD3_mapped\",[40,102,41]],[[127254,127254],\"disallowed_STD3_mapped\",[40,103,41]],[[127255,127255],\"disallowed_STD3_mapped\",[40,104,41]],[[127256,127256],\"disallowed_STD3_mapped\",[40,105,41]],[[127257,127257],\"disallowed_STD3_mapped\",[40,106,41]],[[127258,127258],\"disallowed_STD3_mapped\",[40,107,41]],[[127259,127259],\"disallowed_STD3_mapped\",[40,108,41]],[[127260,127260],\"disallowed_STD3_mapped\",[40,109,41]],[[127261,127261],\"disallowed_STD3_mapped\",[40,110,41]],[[127262,127262],\"disallowed_STD3_mapped\",[40,111,41]],[[127263,127263],\"disallowed_STD3_mapped\",[40,112,41]],[[127264,127264],\"disallowed_STD3_mapped\",[40,113,41]],[[127265,127265],\"disallowed_STD3_mapped\",[40,114,41]],[[127266,127266],\"disallowed_STD3_mapped\",[40,115,41]],[[127267,127267],\"disallowed_STD3_mapped\",[40,116,41]],[[127268,127268],\"disallowed_STD3_mapped\",[40,117,41]],[[127269,127269],\"disallowed_STD3_mapped\",[40,118,41]],[[127270,127270],\"disallowed_STD3_mapped\",[40,119,41]],[[127271,127271],\"disallowed_STD3_mapped\",[40,120,41]],[[127272,127272],\"disallowed_STD3_mapped\",[40,121,41]],[[127273,127273],\"disallowed_STD3_mapped\",[40,122,41]],[[127274,127274],\"mapped\",[12308,115,12309]],[[127275,127275],\"mapped\",[99]],[[127276,127276],\"mapped\",[114]],[[127277,127277],\"mapped\",[99,100]],[[127278,127278],\"mapped\",[119,122]],[[127279,127279],\"disallowed\"],[[127280,127280],\"mapped\",[97]],[[127281,127281],\"mapped\",[98]],[[127282,127282],\"mapped\",[99]],[[127283,127283],\"mapped\",[100]],[[127284,127284],\"mapped\",[101]],[[127285,127285],\"mapped\",[102]],[[127286,127286],\"mapped\",[103]],[[127287,127287],\"mapped\",[104]],[[127288,127288],\"mapped\",[105]],[[127289,127289],\"mapped\",[106]],[[127290,127290],\"mapped\",[107]],[[127291,127291],\"mapped\",[108]],[[127292,127292],\"mapped\",[109]],[[127293,127293],\"mapped\",[110]],[[127294,127294],\"mapped\",[111]],[[127295,127295],\"mapped\",[112]],[[127296,127296],\"mapped\",[113]],[[127297,127297],\"mapped\",[114]],[[127298,127298],\"mapped\",[115]],[[127299,127299],\"mapped\",[116]],[[127300,127300],\"mapped\",[117]],[[127301,127301],\"mapped\",[118]],[[127302,127302],\"mapped\",[119]],[[127303,127303],\"mapped\",[120]],[[127304,127304],\"mapped\",[121]],[[127305,127305],\"mapped\",[122]],[[127306,127306],\"mapped\",[104,118]],[[127307,127307],\"mapped\",[109,118]],[[127308,127308],\"mapped\",[115,100]],[[127309,127309],\"mapped\",[115,115]],[[127310,127310],\"mapped\",[112,112,118]],[[127311,127311],\"mapped\",[119,99]],[[127312,127318],\"valid\",[],\"NV8\"],[[127319,127319],\"valid\",[],\"NV8\"],[[127320,127326],\"valid\",[],\"NV8\"],[[127327,127327],\"valid\",[],\"NV8\"],[[127328,127337],\"valid\",[],\"NV8\"],[[127338,127338],\"mapped\",[109,99]],[[127339,127339],\"mapped\",[109,100]],[[127340,127343],\"disallowed\"],[[127344,127352],\"valid\",[],\"NV8\"],[[127353,127353],\"valid\",[],\"NV8\"],[[127354,127354],\"valid\",[],\"NV8\"],[[127355,127356],\"valid\",[],\"NV8\"],[[127357,127358],\"valid\",[],\"NV8\"],[[127359,127359],\"valid\",[],\"NV8\"],[[127360,127369],\"valid\",[],\"NV8\"],[[127370,127373],\"valid\",[],\"NV8\"],[[127374,127375],\"valid\",[],\"NV8\"],[[127376,127376],\"mapped\",[100,106]],[[127377,127386],\"valid\",[],\"NV8\"],[[127387,127461],\"disallowed\"],[[127462,127487],\"valid\",[],\"NV8\"],[[127488,127488],\"mapped\",[12411,12363]],[[127489,127489],\"mapped\",[12467,12467]],[[127490,127490],\"mapped\",[12469]],[[127491,127503],\"disallowed\"],[[127504,127504],\"mapped\",[25163]],[[127505,127505],\"mapped\",[23383]],[[127506,127506],\"mapped\",[21452]],[[127507,127507],\"mapped\",[12487]],[[127508,127508],\"mapped\",[20108]],[[127509,127509],\"mapped\",[22810]],[[127510,127510],\"mapped\",[35299]],[[127511,127511],\"mapped\",[22825]],[[127512,127512],\"mapped\",[20132]],[[127513,127513],\"mapped\",[26144]],[[127514,127514],\"mapped\",[28961]],[[127515,127515],\"mapped\",[26009]],[[127516,127516],\"mapped\",[21069]],[[127517,127517],\"mapped\",[24460]],[[127518,127518],\"mapped\",[20877]],[[127519,127519],\"mapped\",[26032]],[[127520,127520],\"mapped\",[21021]],[[127521,127521],\"mapped\",[32066]],[[127522,127522],\"mapped\",[29983]],[[127523,127523],\"mapped\",[36009]],[[127524,127524],\"mapped\",[22768]],[[127525,127525],\"mapped\",[21561]],[[127526,127526],\"mapped\",[28436]],[[127527,127527],\"mapped\",[25237]],[[127528,127528],\"mapped\",[25429]],[[127529,127529],\"mapped\",[19968]],[[127530,127530],\"mapped\",[19977]],[[127531,127531],\"mapped\",[36938]],[[127532,127532],\"mapped\",[24038]],[[127533,127533],\"mapped\",[20013]],[[127534,127534],\"mapped\",[21491]],[[127535,127535],\"mapped\",[25351]],[[127536,127536],\"mapped\",[36208]],[[127537,127537],\"mapped\",[25171]],[[127538,127538],\"mapped\",[31105]],[[127539,127539],\"mapped\",[31354]],[[127540,127540],\"mapped\",[21512]],[[127541,127541],\"mapped\",[28288]],[[127542,127542],\"mapped\",[26377]],[[127543,127543],\"mapped\",[26376]],[[127544,127544],\"mapped\",[30003]],[[127545,127545],\"mapped\",[21106]],[[127546,127546],\"mapped\",[21942]],[[127547,127551],\"disallowed\"],[[127552,127552],\"mapped\",[12308,26412,12309]],[[127553,127553],\"mapped\",[12308,19977,12309]],[[127554,127554],\"mapped\",[12308,20108,12309]],[[127555,127555],\"mapped\",[12308,23433,12309]],[[127556,127556],\"mapped\",[12308,28857,12309]],[[127557,127557],\"mapped\",[12308,25171,12309]],[[127558,127558],\"mapped\",[12308,30423,12309]],[[127559,127559],\"mapped\",[12308,21213,12309]],[[127560,127560],\"mapped\",[12308,25943,12309]],[[127561,127567],\"disallowed\"],[[127568,127568],\"mapped\",[24471]],[[127569,127569],\"mapped\",[21487]],[[127570,127743],\"disallowed\"],[[127744,127776],\"valid\",[],\"NV8\"],[[127777,127788],\"valid\",[],\"NV8\"],[[127789,127791],\"valid\",[],\"NV8\"],[[127792,127797],\"valid\",[],\"NV8\"],[[127798,127798],\"valid\",[],\"NV8\"],[[127799,127868],\"valid\",[],\"NV8\"],[[127869,127869],\"valid\",[],\"NV8\"],[[127870,127871],\"valid\",[],\"NV8\"],[[127872,127891],\"valid\",[],\"NV8\"],[[127892,127903],\"valid\",[],\"NV8\"],[[127904,127940],\"valid\",[],\"NV8\"],[[127941,127941],\"valid\",[],\"NV8\"],[[127942,127946],\"valid\",[],\"NV8\"],[[127947,127950],\"valid\",[],\"NV8\"],[[127951,127955],\"valid\",[],\"NV8\"],[[127956,127967],\"valid\",[],\"NV8\"],[[127968,127984],\"valid\",[],\"NV8\"],[[127985,127991],\"valid\",[],\"NV8\"],[[127992,127999],\"valid\",[],\"NV8\"],[[128000,128062],\"valid\",[],\"NV8\"],[[128063,128063],\"valid\",[],\"NV8\"],[[128064,128064],\"valid\",[],\"NV8\"],[[128065,128065],\"valid\",[],\"NV8\"],[[128066,128247],\"valid\",[],\"NV8\"],[[128248,128248],\"valid\",[],\"NV8\"],[[128249,128252],\"valid\",[],\"NV8\"],[[128253,128254],\"valid\",[],\"NV8\"],[[128255,128255],\"valid\",[],\"NV8\"],[[128256,128317],\"valid\",[],\"NV8\"],[[128318,128319],\"valid\",[],\"NV8\"],[[128320,128323],\"valid\",[],\"NV8\"],[[128324,128330],\"valid\",[],\"NV8\"],[[128331,128335],\"valid\",[],\"NV8\"],[[128336,128359],\"valid\",[],\"NV8\"],[[128360,128377],\"valid\",[],\"NV8\"],[[128378,128378],\"disallowed\"],[[128379,128419],\"valid\",[],\"NV8\"],[[128420,128420],\"disallowed\"],[[128421,128506],\"valid\",[],\"NV8\"],[[128507,128511],\"valid\",[],\"NV8\"],[[128512,128512],\"valid\",[],\"NV8\"],[[128513,128528],\"valid\",[],\"NV8\"],[[128529,128529],\"valid\",[],\"NV8\"],[[128530,128532],\"valid\",[],\"NV8\"],[[128533,128533],\"valid\",[],\"NV8\"],[[128534,128534],\"valid\",[],\"NV8\"],[[128535,128535],\"valid\",[],\"NV8\"],[[128536,128536],\"valid\",[],\"NV8\"],[[128537,128537],\"valid\",[],\"NV8\"],[[128538,128538],\"valid\",[],\"NV8\"],[[128539,128539],\"valid\",[],\"NV8\"],[[128540,128542],\"valid\",[],\"NV8\"],[[128543,128543],\"valid\",[],\"NV8\"],[[128544,128549],\"valid\",[],\"NV8\"],[[128550,128551],\"valid\",[],\"NV8\"],[[128552,128555],\"valid\",[],\"NV8\"],[[128556,128556],\"valid\",[],\"NV8\"],[[128557,128557],\"valid\",[],\"NV8\"],[[128558,128559],\"valid\",[],\"NV8\"],[[128560,128563],\"valid\",[],\"NV8\"],[[128564,128564],\"valid\",[],\"NV8\"],[[128565,128576],\"valid\",[],\"NV8\"],[[128577,128578],\"valid\",[],\"NV8\"],[[128579,128580],\"valid\",[],\"NV8\"],[[128581,128591],\"valid\",[],\"NV8\"],[[128592,128639],\"valid\",[],\"NV8\"],[[128640,128709],\"valid\",[],\"NV8\"],[[128710,128719],\"valid\",[],\"NV8\"],[[128720,128720],\"valid\",[],\"NV8\"],[[128721,128735],\"disallowed\"],[[128736,128748],\"valid\",[],\"NV8\"],[[128749,128751],\"disallowed\"],[[128752,128755],\"valid\",[],\"NV8\"],[[128756,128767],\"disallowed\"],[[128768,128883],\"valid\",[],\"NV8\"],[[128884,128895],\"disallowed\"],[[128896,128980],\"valid\",[],\"NV8\"],[[128981,129023],\"disallowed\"],[[129024,129035],\"valid\",[],\"NV8\"],[[129036,129039],\"disallowed\"],[[129040,129095],\"valid\",[],\"NV8\"],[[129096,129103],\"disallowed\"],[[129104,129113],\"valid\",[],\"NV8\"],[[129114,129119],\"disallowed\"],[[129120,129159],\"valid\",[],\"NV8\"],[[129160,129167],\"disallowed\"],[[129168,129197],\"valid\",[],\"NV8\"],[[129198,129295],\"disallowed\"],[[129296,129304],\"valid\",[],\"NV8\"],[[129305,129407],\"disallowed\"],[[129408,129412],\"valid\",[],\"NV8\"],[[129413,129471],\"disallowed\"],[[129472,129472],\"valid\",[],\"NV8\"],[[129473,131069],\"disallowed\"],[[131070,131071],\"disallowed\"],[[131072,173782],\"valid\"],[[173783,173823],\"disallowed\"],[[173824,177972],\"valid\"],[[177973,177983],\"disallowed\"],[[177984,178205],\"valid\"],[[178206,178207],\"disallowed\"],[[178208,183969],\"valid\"],[[183970,194559],\"disallowed\"],[[194560,194560],\"mapped\",[20029]],[[194561,194561],\"mapped\",[20024]],[[194562,194562],\"mapped\",[20033]],[[194563,194563],\"mapped\",[131362]],[[194564,194564],\"mapped\",[20320]],[[194565,194565],\"mapped\",[20398]],[[194566,194566],\"mapped\",[20411]],[[194567,194567],\"mapped\",[20482]],[[194568,194568],\"mapped\",[20602]],[[194569,194569],\"mapped\",[20633]],[[194570,194570],\"mapped\",[20711]],[[194571,194571],\"mapped\",[20687]],[[194572,194572],\"mapped\",[13470]],[[194573,194573],\"mapped\",[132666]],[[194574,194574],\"mapped\",[20813]],[[194575,194575],\"mapped\",[20820]],[[194576,194576],\"mapped\",[20836]],[[194577,194577],\"mapped\",[20855]],[[194578,194578],\"mapped\",[132380]],[[194579,194579],\"mapped\",[13497]],[[194580,194580],\"mapped\",[20839]],[[194581,194581],\"mapped\",[20877]],[[194582,194582],\"mapped\",[132427]],[[194583,194583],\"mapped\",[20887]],[[194584,194584],\"mapped\",[20900]],[[194585,194585],\"mapped\",[20172]],[[194586,194586],\"mapped\",[20908]],[[194587,194587],\"mapped\",[20917]],[[194588,194588],\"mapped\",[168415]],[[194589,194589],\"mapped\",[20981]],[[194590,194590],\"mapped\",[20995]],[[194591,194591],\"mapped\",[13535]],[[194592,194592],\"mapped\",[21051]],[[194593,194593],\"mapped\",[21062]],[[194594,194594],\"mapped\",[21106]],[[194595,194595],\"mapped\",[21111]],[[194596,194596],\"mapped\",[13589]],[[194597,194597],\"mapped\",[21191]],[[194598,194598],\"mapped\",[21193]],[[194599,194599],\"mapped\",[21220]],[[194600,194600],\"mapped\",[21242]],[[194601,194601],\"mapped\",[21253]],[[194602,194602],\"mapped\",[21254]],[[194603,194603],\"mapped\",[21271]],[[194604,194604],\"mapped\",[21321]],[[194605,194605],\"mapped\",[21329]],[[194606,194606],\"mapped\",[21338]],[[194607,194607],\"mapped\",[21363]],[[194608,194608],\"mapped\",[21373]],[[194609,194611],\"mapped\",[21375]],[[194612,194612],\"mapped\",[133676]],[[194613,194613],\"mapped\",[28784]],[[194614,194614],\"mapped\",[21450]],[[194615,194615],\"mapped\",[21471]],[[194616,194616],\"mapped\",[133987]],[[194617,194617],\"mapped\",[21483]],[[194618,194618],\"mapped\",[21489]],[[194619,194619],\"mapped\",[21510]],[[194620,194620],\"mapped\",[21662]],[[194621,194621],\"mapped\",[21560]],[[194622,194622],\"mapped\",[21576]],[[194623,194623],\"mapped\",[21608]],[[194624,194624],\"mapped\",[21666]],[[194625,194625],\"mapped\",[21750]],[[194626,194626],\"mapped\",[21776]],[[194627,194627],\"mapped\",[21843]],[[194628,194628],\"mapped\",[21859]],[[194629,194630],\"mapped\",[21892]],[[194631,194631],\"mapped\",[21913]],[[194632,194632],\"mapped\",[21931]],[[194633,194633],\"mapped\",[21939]],[[194634,194634],\"mapped\",[21954]],[[194635,194635],\"mapped\",[22294]],[[194636,194636],\"mapped\",[22022]],[[194637,194637],\"mapped\",[22295]],[[194638,194638],\"mapped\",[22097]],[[194639,194639],\"mapped\",[22132]],[[194640,194640],\"mapped\",[20999]],[[194641,194641],\"mapped\",[22766]],[[194642,194642],\"mapped\",[22478]],[[194643,194643],\"mapped\",[22516]],[[194644,194644],\"mapped\",[22541]],[[194645,194645],\"mapped\",[22411]],[[194646,194646],\"mapped\",[22578]],[[194647,194647],\"mapped\",[22577]],[[194648,194648],\"mapped\",[22700]],[[194649,194649],\"mapped\",[136420]],[[194650,194650],\"mapped\",[22770]],[[194651,194651],\"mapped\",[22775]],[[194652,194652],\"mapped\",[22790]],[[194653,194653],\"mapped\",[22810]],[[194654,194654],\"mapped\",[22818]],[[194655,194655],\"mapped\",[22882]],[[194656,194656],\"mapped\",[136872]],[[194657,194657],\"mapped\",[136938]],[[194658,194658],\"mapped\",[23020]],[[194659,194659],\"mapped\",[23067]],[[194660,194660],\"mapped\",[23079]],[[194661,194661],\"mapped\",[23000]],[[194662,194662],\"mapped\",[23142]],[[194663,194663],\"mapped\",[14062]],[[194664,194664],\"disallowed\"],[[194665,194665],\"mapped\",[23304]],[[194666,194667],\"mapped\",[23358]],[[194668,194668],\"mapped\",[137672]],[[194669,194669],\"mapped\",[23491]],[[194670,194670],\"mapped\",[23512]],[[194671,194671],\"mapped\",[23527]],[[194672,194672],\"mapped\",[23539]],[[194673,194673],\"mapped\",[138008]],[[194674,194674],\"mapped\",[23551]],[[194675,194675],\"mapped\",[23558]],[[194676,194676],\"disallowed\"],[[194677,194677],\"mapped\",[23586]],[[194678,194678],\"mapped\",[14209]],[[194679,194679],\"mapped\",[23648]],[[194680,194680],\"mapped\",[23662]],[[194681,194681],\"mapped\",[23744]],[[194682,194682],\"mapped\",[23693]],[[194683,194683],\"mapped\",[138724]],[[194684,194684],\"mapped\",[23875]],[[194685,194685],\"mapped\",[138726]],[[194686,194686],\"mapped\",[23918]],[[194687,194687],\"mapped\",[23915]],[[194688,194688],\"mapped\",[23932]],[[194689,194689],\"mapped\",[24033]],[[194690,194690],\"mapped\",[24034]],[[194691,194691],\"mapped\",[14383]],[[194692,194692],\"mapped\",[24061]],[[194693,194693],\"mapped\",[24104]],[[194694,194694],\"mapped\",[24125]],[[194695,194695],\"mapped\",[24169]],[[194696,194696],\"mapped\",[14434]],[[194697,194697],\"mapped\",[139651]],[[194698,194698],\"mapped\",[14460]],[[194699,194699],\"mapped\",[24240]],[[194700,194700],\"mapped\",[24243]],[[194701,194701],\"mapped\",[24246]],[[194702,194702],\"mapped\",[24266]],[[194703,194703],\"mapped\",[172946]],[[194704,194704],\"mapped\",[24318]],[[194705,194706],\"mapped\",[140081]],[[194707,194707],\"mapped\",[33281]],[[194708,194709],\"mapped\",[24354]],[[194710,194710],\"mapped\",[14535]],[[194711,194711],\"mapped\",[144056]],[[194712,194712],\"mapped\",[156122]],[[194713,194713],\"mapped\",[24418]],[[194714,194714],\"mapped\",[24427]],[[194715,194715],\"mapped\",[14563]],[[194716,194716],\"mapped\",[24474]],[[194717,194717],\"mapped\",[24525]],[[194718,194718],\"mapped\",[24535]],[[194719,194719],\"mapped\",[24569]],[[194720,194720],\"mapped\",[24705]],[[194721,194721],\"mapped\",[14650]],[[194722,194722],\"mapped\",[14620]],[[194723,194723],\"mapped\",[24724]],[[194724,194724],\"mapped\",[141012]],[[194725,194725],\"mapped\",[24775]],[[194726,194726],\"mapped\",[24904]],[[194727,194727],\"mapped\",[24908]],[[194728,194728],\"mapped\",[24910]],[[194729,194729],\"mapped\",[24908]],[[194730,194730],\"mapped\",[24954]],[[194731,194731],\"mapped\",[24974]],[[194732,194732],\"mapped\",[25010]],[[194733,194733],\"mapped\",[24996]],[[194734,194734],\"mapped\",[25007]],[[194735,194735],\"mapped\",[25054]],[[194736,194736],\"mapped\",[25074]],[[194737,194737],\"mapped\",[25078]],[[194738,194738],\"mapped\",[25104]],[[194739,194739],\"mapped\",[25115]],[[194740,194740],\"mapped\",[25181]],[[194741,194741],\"mapped\",[25265]],[[194742,194742],\"mapped\",[25300]],[[194743,194743],\"mapped\",[25424]],[[194744,194744],\"mapped\",[142092]],[[194745,194745],\"mapped\",[25405]],[[194746,194746],\"mapped\",[25340]],[[194747,194747],\"mapped\",[25448]],[[194748,194748],\"mapped\",[25475]],[[194749,194749],\"mapped\",[25572]],[[194750,194750],\"mapped\",[142321]],[[194751,194751],\"mapped\",[25634]],[[194752,194752],\"mapped\",[25541]],[[194753,194753],\"mapped\",[25513]],[[194754,194754],\"mapped\",[14894]],[[194755,194755],\"mapped\",[25705]],[[194756,194756],\"mapped\",[25726]],[[194757,194757],\"mapped\",[25757]],[[194758,194758],\"mapped\",[25719]],[[194759,194759],\"mapped\",[14956]],[[194760,194760],\"mapped\",[25935]],[[194761,194761],\"mapped\",[25964]],[[194762,194762],\"mapped\",[143370]],[[194763,194763],\"mapped\",[26083]],[[194764,194764],\"mapped\",[26360]],[[194765,194765],\"mapped\",[26185]],[[194766,194766],\"mapped\",[15129]],[[194767,194767],\"mapped\",[26257]],[[194768,194768],\"mapped\",[15112]],[[194769,194769],\"mapped\",[15076]],[[194770,194770],\"mapped\",[20882]],[[194771,194771],\"mapped\",[20885]],[[194772,194772],\"mapped\",[26368]],[[194773,194773],\"mapped\",[26268]],[[194774,194774],\"mapped\",[32941]],[[194775,194775],\"mapped\",[17369]],[[194776,194776],\"mapped\",[26391]],[[194777,194777],\"mapped\",[26395]],[[194778,194778],\"mapped\",[26401]],[[194779,194779],\"mapped\",[26462]],[[194780,194780],\"mapped\",[26451]],[[194781,194781],\"mapped\",[144323]],[[194782,194782],\"mapped\",[15177]],[[194783,194783],\"mapped\",[26618]],[[194784,194784],\"mapped\",[26501]],[[194785,194785],\"mapped\",[26706]],[[194786,194786],\"mapped\",[26757]],[[194787,194787],\"mapped\",[144493]],[[194788,194788],\"mapped\",[26766]],[[194789,194789],\"mapped\",[26655]],[[194790,194790],\"mapped\",[26900]],[[194791,194791],\"mapped\",[15261]],[[194792,194792],\"mapped\",[26946]],[[194793,194793],\"mapped\",[27043]],[[194794,194794],\"mapped\",[27114]],[[194795,194795],\"mapped\",[27304]],[[194796,194796],\"mapped\",[145059]],[[194797,194797],\"mapped\",[27355]],[[194798,194798],\"mapped\",[15384]],[[194799,194799],\"mapped\",[27425]],[[194800,194800],\"mapped\",[145575]],[[194801,194801],\"mapped\",[27476]],[[194802,194802],\"mapped\",[15438]],[[194803,194803],\"mapped\",[27506]],[[194804,194804],\"mapped\",[27551]],[[194805,194805],\"mapped\",[27578]],[[194806,194806],\"mapped\",[27579]],[[194807,194807],\"mapped\",[146061]],[[194808,194808],\"mapped\",[138507]],[[194809,194809],\"mapped\",[146170]],[[194810,194810],\"mapped\",[27726]],[[194811,194811],\"mapped\",[146620]],[[194812,194812],\"mapped\",[27839]],[[194813,194813],\"mapped\",[27853]],[[194814,194814],\"mapped\",[27751]],[[194815,194815],\"mapped\",[27926]],[[194816,194816],\"mapped\",[27966]],[[194817,194817],\"mapped\",[28023]],[[194818,194818],\"mapped\",[27969]],[[194819,194819],\"mapped\",[28009]],[[194820,194820],\"mapped\",[28024]],[[194821,194821],\"mapped\",[28037]],[[194822,194822],\"mapped\",[146718]],[[194823,194823],\"mapped\",[27956]],[[194824,194824],\"mapped\",[28207]],[[194825,194825],\"mapped\",[28270]],[[194826,194826],\"mapped\",[15667]],[[194827,194827],\"mapped\",[28363]],[[194828,194828],\"mapped\",[28359]],[[194829,194829],\"mapped\",[147153]],[[194830,194830],\"mapped\",[28153]],[[194831,194831],\"mapped\",[28526]],[[194832,194832],\"mapped\",[147294]],[[194833,194833],\"mapped\",[147342]],[[194834,194834],\"mapped\",[28614]],[[194835,194835],\"mapped\",[28729]],[[194836,194836],\"mapped\",[28702]],[[194837,194837],\"mapped\",[28699]],[[194838,194838],\"mapped\",[15766]],[[194839,194839],\"mapped\",[28746]],[[194840,194840],\"mapped\",[28797]],[[194841,194841],\"mapped\",[28791]],[[194842,194842],\"mapped\",[28845]],[[194843,194843],\"mapped\",[132389]],[[194844,194844],\"mapped\",[28997]],[[194845,194845],\"mapped\",[148067]],[[194846,194846],\"mapped\",[29084]],[[194847,194847],\"disallowed\"],[[194848,194848],\"mapped\",[29224]],[[194849,194849],\"mapped\",[29237]],[[194850,194850],\"mapped\",[29264]],[[194851,194851],\"mapped\",[149000]],[[194852,194852],\"mapped\",[29312]],[[194853,194853],\"mapped\",[29333]],[[194854,194854],\"mapped\",[149301]],[[194855,194855],\"mapped\",[149524]],[[194856,194856],\"mapped\",[29562]],[[194857,194857],\"mapped\",[29579]],[[194858,194858],\"mapped\",[16044]],[[194859,194859],\"mapped\",[29605]],[[194860,194861],\"mapped\",[16056]],[[194862,194862],\"mapped\",[29767]],[[194863,194863],\"mapped\",[29788]],[[194864,194864],\"mapped\",[29809]],[[194865,194865],\"mapped\",[29829]],[[194866,194866],\"mapped\",[29898]],[[194867,194867],\"mapped\",[16155]],[[194868,194868],\"mapped\",[29988]],[[194869,194869],\"mapped\",[150582]],[[194870,194870],\"mapped\",[30014]],[[194871,194871],\"mapped\",[150674]],[[194872,194872],\"mapped\",[30064]],[[194873,194873],\"mapped\",[139679]],[[194874,194874],\"mapped\",[30224]],[[194875,194875],\"mapped\",[151457]],[[194876,194876],\"mapped\",[151480]],[[194877,194877],\"mapped\",[151620]],[[194878,194878],\"mapped\",[16380]],[[194879,194879],\"mapped\",[16392]],[[194880,194880],\"mapped\",[30452]],[[194881,194881],\"mapped\",[151795]],[[194882,194882],\"mapped\",[151794]],[[194883,194883],\"mapped\",[151833]],[[194884,194884],\"mapped\",[151859]],[[194885,194885],\"mapped\",[30494]],[[194886,194887],\"mapped\",[30495]],[[194888,194888],\"mapped\",[30538]],[[194889,194889],\"mapped\",[16441]],[[194890,194890],\"mapped\",[30603]],[[194891,194891],\"mapped\",[16454]],[[194892,194892],\"mapped\",[16534]],[[194893,194893],\"mapped\",[152605]],[[194894,194894],\"mapped\",[30798]],[[194895,194895],\"mapped\",[30860]],[[194896,194896],\"mapped\",[30924]],[[194897,194897],\"mapped\",[16611]],[[194898,194898],\"mapped\",[153126]],[[194899,194899],\"mapped\",[31062]],[[194900,194900],\"mapped\",[153242]],[[194901,194901],\"mapped\",[153285]],[[194902,194902],\"mapped\",[31119]],[[194903,194903],\"mapped\",[31211]],[[194904,194904],\"mapped\",[16687]],[[194905,194905],\"mapped\",[31296]],[[194906,194906],\"mapped\",[31306]],[[194907,194907],\"mapped\",[31311]],[[194908,194908],\"mapped\",[153980]],[[194909,194910],\"mapped\",[154279]],[[194911,194911],\"disallowed\"],[[194912,194912],\"mapped\",[16898]],[[194913,194913],\"mapped\",[154539]],[[194914,194914],\"mapped\",[31686]],[[194915,194915],\"mapped\",[31689]],[[194916,194916],\"mapped\",[16935]],[[194917,194917],\"mapped\",[154752]],[[194918,194918],\"mapped\",[31954]],[[194919,194919],\"mapped\",[17056]],[[194920,194920],\"mapped\",[31976]],[[194921,194921],\"mapped\",[31971]],[[194922,194922],\"mapped\",[32000]],[[194923,194923],\"mapped\",[155526]],[[194924,194924],\"mapped\",[32099]],[[194925,194925],\"mapped\",[17153]],[[194926,194926],\"mapped\",[32199]],[[194927,194927],\"mapped\",[32258]],[[194928,194928],\"mapped\",[32325]],[[194929,194929],\"mapped\",[17204]],[[194930,194930],\"mapped\",[156200]],[[194931,194931],\"mapped\",[156231]],[[194932,194932],\"mapped\",[17241]],[[194933,194933],\"mapped\",[156377]],[[194934,194934],\"mapped\",[32634]],[[194935,194935],\"mapped\",[156478]],[[194936,194936],\"mapped\",[32661]],[[194937,194937],\"mapped\",[32762]],[[194938,194938],\"mapped\",[32773]],[[194939,194939],\"mapped\",[156890]],[[194940,194940],\"mapped\",[156963]],[[194941,194941],\"mapped\",[32864]],[[194942,194942],\"mapped\",[157096]],[[194943,194943],\"mapped\",[32880]],[[194944,194944],\"mapped\",[144223]],[[194945,194945],\"mapped\",[17365]],[[194946,194946],\"mapped\",[32946]],[[194947,194947],\"mapped\",[33027]],[[194948,194948],\"mapped\",[17419]],[[194949,194949],\"mapped\",[33086]],[[194950,194950],\"mapped\",[23221]],[[194951,194951],\"mapped\",[157607]],[[194952,194952],\"mapped\",[157621]],[[194953,194953],\"mapped\",[144275]],[[194954,194954],\"mapped\",[144284]],[[194955,194955],\"mapped\",[33281]],[[194956,194956],\"mapped\",[33284]],[[194957,194957],\"mapped\",[36766]],[[194958,194958],\"mapped\",[17515]],[[194959,194959],\"mapped\",[33425]],[[194960,194960],\"mapped\",[33419]],[[194961,194961],\"mapped\",[33437]],[[194962,194962],\"mapped\",[21171]],[[194963,194963],\"mapped\",[33457]],[[194964,194964],\"mapped\",[33459]],[[194965,194965],\"mapped\",[33469]],[[194966,194966],\"mapped\",[33510]],[[194967,194967],\"mapped\",[158524]],[[194968,194968],\"mapped\",[33509]],[[194969,194969],\"mapped\",[33565]],[[194970,194970],\"mapped\",[33635]],[[194971,194971],\"mapped\",[33709]],[[194972,194972],\"mapped\",[33571]],[[194973,194973],\"mapped\",[33725]],[[194974,194974],\"mapped\",[33767]],[[194975,194975],\"mapped\",[33879]],[[194976,194976],\"mapped\",[33619]],[[194977,194977],\"mapped\",[33738]],[[194978,194978],\"mapped\",[33740]],[[194979,194979],\"mapped\",[33756]],[[194980,194980],\"mapped\",[158774]],[[194981,194981],\"mapped\",[159083]],[[194982,194982],\"mapped\",[158933]],[[194983,194983],\"mapped\",[17707]],[[194984,194984],\"mapped\",[34033]],[[194985,194985],\"mapped\",[34035]],[[194986,194986],\"mapped\",[34070]],[[194987,194987],\"mapped\",[160714]],[[194988,194988],\"mapped\",[34148]],[[194989,194989],\"mapped\",[159532]],[[194990,194990],\"mapped\",[17757]],[[194991,194991],\"mapped\",[17761]],[[194992,194992],\"mapped\",[159665]],[[194993,194993],\"mapped\",[159954]],[[194994,194994],\"mapped\",[17771]],[[194995,194995],\"mapped\",[34384]],[[194996,194996],\"mapped\",[34396]],[[194997,194997],\"mapped\",[34407]],[[194998,194998],\"mapped\",[34409]],[[194999,194999],\"mapped\",[34473]],[[195000,195000],\"mapped\",[34440]],[[195001,195001],\"mapped\",[34574]],[[195002,195002],\"mapped\",[34530]],[[195003,195003],\"mapped\",[34681]],[[195004,195004],\"mapped\",[34600]],[[195005,195005],\"mapped\",[34667]],[[195006,195006],\"mapped\",[34694]],[[195007,195007],\"disallowed\"],[[195008,195008],\"mapped\",[34785]],[[195009,195009],\"mapped\",[34817]],[[195010,195010],\"mapped\",[17913]],[[195011,195011],\"mapped\",[34912]],[[195012,195012],\"mapped\",[34915]],[[195013,195013],\"mapped\",[161383]],[[195014,195014],\"mapped\",[35031]],[[195015,195015],\"mapped\",[35038]],[[195016,195016],\"mapped\",[17973]],[[195017,195017],\"mapped\",[35066]],[[195018,195018],\"mapped\",[13499]],[[195019,195019],\"mapped\",[161966]],[[195020,195020],\"mapped\",[162150]],[[195021,195021],\"mapped\",[18110]],[[195022,195022],\"mapped\",[18119]],[[195023,195023],\"mapped\",[35488]],[[195024,195024],\"mapped\",[35565]],[[195025,195025],\"mapped\",[35722]],[[195026,195026],\"mapped\",[35925]],[[195027,195027],\"mapped\",[162984]],[[195028,195028],\"mapped\",[36011]],[[195029,195029],\"mapped\",[36033]],[[195030,195030],\"mapped\",[36123]],[[195031,195031],\"mapped\",[36215]],[[195032,195032],\"mapped\",[163631]],[[195033,195033],\"mapped\",[133124]],[[195034,195034],\"mapped\",[36299]],[[195035,195035],\"mapped\",[36284]],[[195036,195036],\"mapped\",[36336]],[[195037,195037],\"mapped\",[133342]],[[195038,195038],\"mapped\",[36564]],[[195039,195039],\"mapped\",[36664]],[[195040,195040],\"mapped\",[165330]],[[195041,195041],\"mapped\",[165357]],[[195042,195042],\"mapped\",[37012]],[[195043,195043],\"mapped\",[37105]],[[195044,195044],\"mapped\",[37137]],[[195045,195045],\"mapped\",[165678]],[[195046,195046],\"mapped\",[37147]],[[195047,195047],\"mapped\",[37432]],[[195048,195048],\"mapped\",[37591]],[[195049,195049],\"mapped\",[37592]],[[195050,195050],\"mapped\",[37500]],[[195051,195051],\"mapped\",[37881]],[[195052,195052],\"mapped\",[37909]],[[195053,195053],\"mapped\",[166906]],[[195054,195054],\"mapped\",[38283]],[[195055,195055],\"mapped\",[18837]],[[195056,195056],\"mapped\",[38327]],[[195057,195057],\"mapped\",[167287]],[[195058,195058],\"mapped\",[18918]],[[195059,195059],\"mapped\",[38595]],[[195060,195060],\"mapped\",[23986]],[[195061,195061],\"mapped\",[38691]],[[195062,195062],\"mapped\",[168261]],[[195063,195063],\"mapped\",[168474]],[[195064,195064],\"mapped\",[19054]],[[195065,195065],\"mapped\",[19062]],[[195066,195066],\"mapped\",[38880]],[[195067,195067],\"mapped\",[168970]],[[195068,195068],\"mapped\",[19122]],[[195069,195069],\"mapped\",[169110]],[[195070,195071],\"mapped\",[38923]],[[195072,195072],\"mapped\",[38953]],[[195073,195073],\"mapped\",[169398]],[[195074,195074],\"mapped\",[39138]],[[195075,195075],\"mapped\",[19251]],[[195076,195076],\"mapped\",[39209]],[[195077,195077],\"mapped\",[39335]],[[195078,195078],\"mapped\",[39362]],[[195079,195079],\"mapped\",[39422]],[[195080,195080],\"mapped\",[19406]],[[195081,195081],\"mapped\",[170800]],[[195082,195082],\"mapped\",[39698]],[[195083,195083],\"mapped\",[40000]],[[195084,195084],\"mapped\",[40189]],[[195085,195085],\"mapped\",[19662]],[[195086,195086],\"mapped\",[19693]],[[195087,195087],\"mapped\",[40295]],[[195088,195088],\"mapped\",[172238]],[[195089,195089],\"mapped\",[19704]],[[195090,195090],\"mapped\",[172293]],[[195091,195091],\"mapped\",[172558]],[[195092,195092],\"mapped\",[172689]],[[195093,195093],\"mapped\",[40635]],[[195094,195094],\"mapped\",[19798]],[[195095,195095],\"mapped\",[40697]],[[195096,195096],\"mapped\",[40702]],[[195097,195097],\"mapped\",[40709]],[[195098,195098],\"mapped\",[40719]],[[195099,195099],\"mapped\",[40726]],[[195100,195100],\"mapped\",[40763]],[[195101,195101],\"mapped\",[173568]],[[195102,196605],\"disallowed\"],[[196606,196607],\"disallowed\"],[[196608,262141],\"disallowed\"],[[262142,262143],\"disallowed\"],[[262144,327677],\"disallowed\"],[[327678,327679],\"disallowed\"],[[327680,393213],\"disallowed\"],[[393214,393215],\"disallowed\"],[[393216,458749],\"disallowed\"],[[458750,458751],\"disallowed\"],[[458752,524285],\"disallowed\"],[[524286,524287],\"disallowed\"],[[524288,589821],\"disallowed\"],[[589822,589823],\"disallowed\"],[[589824,655357],\"disallowed\"],[[655358,655359],\"disallowed\"],[[655360,720893],\"disallowed\"],[[720894,720895],\"disallowed\"],[[720896,786429],\"disallowed\"],[[786430,786431],\"disallowed\"],[[786432,851965],\"disallowed\"],[[851966,851967],\"disallowed\"],[[851968,917501],\"disallowed\"],[[917502,917503],\"disallowed\"],[[917504,917504],\"disallowed\"],[[917505,917505],\"disallowed\"],[[917506,917535],\"disallowed\"],[[917536,917631],\"disallowed\"],[[917632,917759],\"disallowed\"],[[917760,917999],\"ignored\"],[[918000,983037],\"disallowed\"],[[983038,983039],\"disallowed\"],[[983040,1048573],\"disallowed\"],[[1048574,1048575],\"disallowed\"],[[1048576,1114109],\"disallowed\"],[[1114110,1114111],\"disallowed\"]]");
-
-/***/ }),
-/* 737 */
-/***/ (function(module, exports) {
-
-module.exports = require("https");
-
-/***/ }),
-/* 738 */
-/***/ (function(module, exports) {
-
-module.exports = require("zlib");
-
-/***/ }),
-/* 739 */
-/***/ (function(module, exports) {
-
-(function () {
-  "use strict";
-
-  function btoa(str) {
-    var buffer;
-
-    if (str instanceof Buffer) {
-      buffer = str;
-    } else {
-      buffer = Buffer.from(str.toString(), 'binary');
-    }
-
-    return buffer.toString('base64');
-  }
-
-  module.exports = btoa;
-}());
-
-
-/***/ }),
-/* 740 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var _interopRequireWildcard = __webpack_require__(277);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.user = exports.paper = exports.dacc = exports.sharing = exports.timeseries = exports.document = exports.contact = exports.utils = exports.permission = exports.note = exports.account = exports.folder = exports.file = exports.applications = exports.instance = exports.trigger = exports.accounts = exports.triggers = void 0;
-
-var trigger = _interopRequireWildcard(__webpack_require__(741));
-
-exports.trigger = trigger;
-
-var instance = _interopRequireWildcard(__webpack_require__(743));
-
-exports.instance = instance;
-
-var applications = _interopRequireWildcard(__webpack_require__(744));
-
-exports.applications = applications;
-
-var file = _interopRequireWildcard(__webpack_require__(745));
-
-exports.file = file;
-
-var folder = _interopRequireWildcard(__webpack_require__(750));
-
-exports.folder = folder;
-
-var account = _interopRequireWildcard(__webpack_require__(742));
-
-exports.account = account;
-
-var note = _interopRequireWildcard(__webpack_require__(752));
-
-exports.note = note;
-
-var permission = _interopRequireWildcard(__webpack_require__(753));
-
-exports.permission = permission;
-
-var utils = _interopRequireWildcard(__webpack_require__(754));
-
-exports.utils = utils;
-
-var contact = _interopRequireWildcard(__webpack_require__(755));
-
-exports.contact = contact;
-
-var document = _interopRequireWildcard(__webpack_require__(757));
-
-exports.document = document;
-
-var timeseries = _interopRequireWildcard(__webpack_require__(821));
-
-exports.timeseries = timeseries;
-
-var sharing = _interopRequireWildcard(__webpack_require__(822));
-
-exports.sharing = sharing;
-
-var dacc = _interopRequireWildcard(__webpack_require__(823));
-
-exports.dacc = dacc;
-
-var paper = _interopRequireWildcard(__webpack_require__(824));
-
-exports.paper = paper;
-
-var user = _interopRequireWildcard(__webpack_require__(834));
-
-exports.user = user;
-// For backward compatibility before 9.0.0
-var triggers = trigger;
-exports.triggers = triggers;
-var accounts = account;
-exports.accounts = accounts;
-
-/***/ }),
-/* 741 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.triggers = exports.triggerStates = void 0;
-
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
-
-var _account = __webpack_require__(742);
-
-var _logger = _interopRequireDefault(__webpack_require__(498));
-
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-var actionableErrors = ['CHALLENGE_ASKED', 'DISK_QUOTA_EXCEEDED', 'TERMS_VERSION_MISMATCH', 'USER_ACTION_NEEDED', 'USER_ACTION_NEEDED.CHANGE_PASSWORD', 'USER_ACTION_NEEDED.ACCOUNT_REMOVED', 'USER_ACTION_NEEDED.WEBAUTH_REQUIRED', 'USER_ACTION_NEEDED.SCA_REQUIRED', 'LOGIN_FAILED'];
-/** Trigger states come from /jobs/triggers */
-
-var triggerStates = {
-  /**
-   * Returns when the trigger was last executed
-   *
-   * @param {import('../types').IOCozyTrigger} trigger - trigger object
-   * @returns {String} last execution date of any job related to the given trigger
-   */
-  getLastExecution: function getLastExecution(trigger) {
-    var _trigger$current_stat;
-
-    return trigger === null || trigger === void 0 ? void 0 : (_trigger$current_stat = trigger.current_state) === null || _trigger$current_stat === void 0 ? void 0 : _trigger$current_stat.last_execution;
-  },
-
-  /**
-   * Returns when the trigger was last executed with success
-   *
-   * @param {import('../types').IOCozyTrigger} trigger - trigger object
-   * @returns {String} last execution date of any job related to the given trigger and with success
-   */
-  getLastSuccess: function getLastSuccess(trigger) {
-    var _trigger$current_stat2;
-
-    return trigger === null || trigger === void 0 ? void 0 : (_trigger$current_stat2 = trigger.current_state) === null || _trigger$current_stat2 === void 0 ? void 0 : _trigger$current_stat2.last_success;
-  },
-
-  /**
-   * Returns when the trigger was last executed with success
-   *
-   * @param {import('../types').IOCozyTrigger} trigger - trigger object
-   * @returns {String} last execution date of any job related to the given trigger and with success
-   */
-  getLastsuccess: function getLastsuccess(trigger) {
-    var _trigger$current_stat3;
-
-    _logger.default.warn('Deprecated, please use getLastSuccess instead of getLastsuccess');
-
-    return trigger === null || trigger === void 0 ? void 0 : (_trigger$current_stat3 = trigger.current_state) === null || _trigger$current_stat3 === void 0 ? void 0 : _trigger$current_stat3.last_success;
-  },
-
-  /**
-   * Returns whether last job failed
-   *
-   * @param {import('../types').IOCozyTrigger} trigger - trigger object
-   * @returns {Boolean}
-   */
-  isErrored: function isErrored(trigger) {
-    var _trigger$current_stat4;
-
-    return (trigger === null || trigger === void 0 ? void 0 : (_trigger$current_stat4 = trigger.current_state) === null || _trigger$current_stat4 === void 0 ? void 0 : _trigger$current_stat4.status) === 'errored';
-  },
-
-  /**
-   * Returns the type of the last error to occur
-   *
-   * @param {import('../types').IOCozyTrigger} trigger - trigger object
-   * @returns {String}
-   */
-  getLastErrorType: function getLastErrorType(trigger) {
-    var _trigger$current_stat5;
-
-    return trigger === null || trigger === void 0 ? void 0 : (_trigger$current_stat5 = trigger.current_state) === null || _trigger$current_stat5 === void 0 ? void 0 : _trigger$current_stat5.last_error;
-  }
-};
-exports.triggerStates = triggerStates;
-var DEFAULT_CRON = '0 0 0 * * 0'; // Once a week, sunday at midnight
-
-var triggers = {
-  /**
-   * Returns whether the given trigger is associated to a konnector or not
-   *
-   * @param {import('../types').IOCozyTrigger} trigger - trigger object
-   * @returns {Boolean}
-   */
-  isKonnectorWorker: function isKonnectorWorker(trigger) {
-    return trigger.worker === 'konnector';
-  },
-
-  /**
-   * Returns the konnector slug that executed a trigger
-   *
-   * @param {import('../types').IOCozyTrigger} trigger - io.cozy.triggers
-   *
-   * @returns {string|void} A konnector slug
-   */
-  getKonnector: function getKonnector(trigger) {
-    if (!triggers.isKonnectorWorker(trigger)) {
-      return null;
-    }
-
-    if (trigger.message && trigger.message.konnector) {
-      return trigger.message.konnector;
-    } else if (trigger.message && trigger.message.Data) {
-      // Legacy triggers
-      var message = JSON.parse(atob(trigger.message.Data));
-      return message.konnector;
-    }
-  },
-
-  /**
-   * getAccountId - Returns the account id for a trigger
-   *
-   * @param {import('../types').IOCozyTrigger} trigger io.cozy.triggers
-   *
-   * @returns {String} Id for an io.cozy.accounts
-   */
-  getAccountId: function getAccountId(trigger) {
-    var _trigger$message;
-
-    var legacyData = trigger === null || trigger === void 0 ? void 0 : (_trigger$message = trigger.message) === null || _trigger$message === void 0 ? void 0 : _trigger$message.Data;
-
-    if (legacyData) {
-      var message = JSON.parse(atob(legacyData));
-      return message.account;
-    } else {
-      var _trigger$message2;
-
-      return trigger === null || trigger === void 0 ? void 0 : (_trigger$message2 = trigger.message) === null || _trigger$message2 === void 0 ? void 0 : _trigger$message2.account;
-    }
-  },
-
-  /**
-   * Checks if the triggers current error has been muted in the corresponding io.cozy.accounts
-   *
-   * @param {import('../types').IOCozyTrigger} trigger      io.cozy.triggers
-   * @param {import('../types').IOCozyAccount} account      io.cozy.accounts used by the trigger
-   *
-   * @returns {Boolean} Whether the error is muted or not
-   */
-  isLatestErrorMuted: function isLatestErrorMuted(trigger, account) {
-    var lastErrorType = triggerStates.getLastErrorType(trigger);
-    var lastSuccess = triggerStates.getLastSuccess(trigger);
-    var lastSuccessDate = lastSuccess ? new Date(lastSuccess) : new Date();
-    var mutedErrors = (0, _account.getMutedErrors)(account);
-    var isErrorMuted = mutedErrors.some(function (mutedError) {
-      return mutedError.type === lastErrorType && (!lastSuccess || new Date(mutedError.mutedAt) > lastSuccessDate);
-    });
-    return isErrorMuted;
-  },
-
-  /**
-   * Returns whether the error in trigger can be solved by the user
-   *
-   * @param {import('../types').IOCozyTrigger} trigger      io.cozy.triggers
-   *
-   * @returns {Boolean} Whether the error is muted or not
-   */
-  hasActionableError: function hasActionableError(trigger) {
-    var _trigger$current_stat6;
-
-    return actionableErrors.includes(trigger === null || trigger === void 0 ? void 0 : (_trigger$current_stat6 = trigger.current_state) === null || _trigger$current_stat6 === void 0 ? void 0 : _trigger$current_stat6.last_error);
-  },
-
-  /**
-   * Build trigger attributes given konnector and account
-   *
-   * @param  {Object} options - options object
-   * @param  {import('../types').IOCozyKonnector} options.konnector - konnector object
-   * @param  {import('../types').IOCozyAccount} options.account - account object
-   * @param  {String} [options.cron] - cron string. Defaults to '0 0 0 * * 0'
-   * @param  {object} [options.folder] - folder object
-   * @returns {import('../types').IOCozyTrigger} created trigger
-   */
-  buildTriggerAttributes: function buildTriggerAttributes(_ref) {
-    var account = _ref.account,
-        _ref$cron = _ref.cron,
-        cron = _ref$cron === void 0 ? DEFAULT_CRON : _ref$cron,
-        folder = _ref.folder,
-        konnector = _ref.konnector;
-    var message = {
-      account: account._id,
-      konnector: konnector.slug
-    };
-
-    if (folder) {
-      message['folder_to_save'] = folder._id;
-    }
-
-    var result = {
-      worker: 'konnector',
-      message: message
-    };
-    var options = konnector.clientSide ? {
-      type: '@client'
-    } : {
-      type: '@cron',
-      arguments: cron
-    };
-    return _objectSpread(_objectSpread({}, result), options);
-  }
-};
-exports.triggers = triggers;
-
-/***/ }),
-/* 742 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.isAccountWithTrigger = exports.buildAccount = exports.getAccountName = exports.getAccountLogin = exports.setContractSyncStatusInAccount = exports.getContractSyncStatusFromAccount = exports.muteError = exports.getMutedErrors = void 0;
-
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
-
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
-
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
-
-var _merge = _interopRequireDefault(__webpack_require__(532));
-
-var _dsl = __webpack_require__(495);
-
-var _HasMany = __webpack_require__(656);
-
-var _manifest = __webpack_require__(715);
-
-function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
-
-function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
-
-function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
-
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-/**
- * getMutedErrors - Returns the list of errors that have been muted for the given account
- *
- * @param {import('../types').IOCozyAccount} account io.cozy.accounts
- *
- * @returns {Array} An array of errors with a `type` and `mutedAt` field
- */
-var getMutedErrors = function getMutedErrors(account) {
-  return (account === null || account === void 0 ? void 0 : account.mutedErrors) || [];
-};
-/**
- * muteError - Adds an error to the list of muted errors for the given account
- *
- * @param {import('../types').IOCozyAccount} account   io.cozy.accounts
- * @param {string} errorType The type of the error to mute
- *
- * @returns {import('../types').IOCozyAccount} An updated io.cozy.accounts
- */
-
-
-exports.getMutedErrors = getMutedErrors;
-
-var muteError = function muteError(account, errorType) {
-  var mutedErrors = getMutedErrors(account);
-  mutedErrors.push({
-    type: errorType,
-    mutedAt: new Date().toISOString()
-  });
-  return _objectSpread(_objectSpread({}, account), {}, {
-    mutedErrors: mutedErrors
-  });
-};
-
-exports.muteError = muteError;
-var DEFAULT_CONTRACT_SYNC_STATUS = true;
-/**
- * Returns whether a contract is synced from account relationship
- *
- * @param  {import('../types').IOCozyAccount} account - Cozy account
- * @param  {String} contractId - contract identifier
- * @returns  {Boolean} synchronisation status
- */
-
-var getContractSyncStatusFromAccount = function getContractSyncStatusFromAccount(account, contractId) {
-  var _relItem$metadata$imp, _relItem$metadata;
-
-  var relItem = (0, _HasMany.getHasManyItem)(account, 'contracts', contractId);
-
-  if (!relItem) {
-    throw new Error("Cannot find contrat ".concat(contractId, " in account"));
-  }
-
-  return (_relItem$metadata$imp = relItem === null || relItem === void 0 ? void 0 : (_relItem$metadata = relItem.metadata) === null || _relItem$metadata === void 0 ? void 0 : _relItem$metadata.imported) !== null && _relItem$metadata$imp !== void 0 ? _relItem$metadata$imp : DEFAULT_CONTRACT_SYNC_STATUS;
-};
-/**
- * Sets contract sync status into account relationship
- *
- * @param  {import('../types').IOCozyAccount} account - Cozy account
- * @param  {String} contractId - contract identifier
- * @param  {String} syncStatus - synchronisation status
- * @returns {import('../types').IOCozyAccount}
- */
-
-
-exports.getContractSyncStatusFromAccount = getContractSyncStatusFromAccount;
-
-var setContractSyncStatusInAccount = function setContractSyncStatusInAccount(account, contractId, syncStatus) {
-  return (0, _HasMany.updateHasManyItem)(account, 'contracts', contractId, function (contractRel) {
-    if (contractRel === undefined) {
-      throw new Error("Cannot find contrat ".concat(contractId, " in account"));
-    }
-
-    return (0, _merge.default)({}, contractRel, {
-      metadata: {
-        imported: syncStatus
-      }
-    });
-  });
-};
-/**
- * Get the account login field value from a given account
- *
- * @param {import('../types').IOCozyAccount} account - the given cozy account
- * @returns {String|null} - Account login
- */
-
-
-exports.setContractSyncStatusInAccount = setContractSyncStatusInAccount;
-
-var getAccountLogin = function getAccountLogin(account) {
-  if (account && account.auth) {
-    var _iterator = _createForOfIteratorHelper(_manifest.legacyLoginFields),
-        _step;
-
-    try {
-      for (_iterator.s(); !(_step = _iterator.n()).done;) {
-        var fieldName = _step.value;
-        if (account.auth[fieldName]) return account.auth[fieldName];
-      }
-    } catch (err) {
-      _iterator.e(err);
-    } finally {
-      _iterator.f();
-    }
-  }
-
-  return null;
-};
-/**
- * Get the account name from a given account
- *
- * @param {import('../types').IOCozyAccount} account - the given cozy account
- * @returns {String|null} - Account name
- */
-
-
-exports.getAccountLogin = getAccountLogin;
-
-var getAccountName = function getAccountName(account) {
-  if (!account) return null;
-
-  if (account.auth) {
-    return account.auth.accountName || getAccountLogin(account) || account._id;
-  } else {
-    return account._id;
-  }
-};
-/**
- * Transforms account auth data to io.cozy.accounts document
- *
- * @param  {import('../types').IOCozyKonnector} konnector Konnector related to account
- * @param  {object} authData  Authentication data
- * @returns {import('../types').IOCozyAccount}          io.cozy.accounts attributes
- */
-
-
-exports.getAccountName = getAccountName;
-
-var buildAccount = function buildAccount(konnector, authData) {
-  return {
-    auth: authData,
-    account_type: konnector.slug,
-    identifier: (0, _manifest.getIdentifier)(konnector.fields),
-    state: null
-  };
-};
-/**
- * Look if the given account has an associated trigger or not.
- *
- * @param {import('../CozyClient').default} client - CozyClient instance
- * @param {import('../types').IOCozyAccount} account - account document
- * @returns {Promise<Boolean>}
- */
-
-
-exports.buildAccount = buildAccount;
-
-var isAccountWithTrigger = /*#__PURE__*/function () {
-  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client, account) {
-    var result;
-    return _regenerator.default.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            _context.next = 2;
-            return client.query((0, _dsl.Q)('io.cozy.triggers').where({
-              'message.account': account._id
-            }).indexFields(['message.account']).limitBy(1));
-
-          case 2:
-            result = _context.sent;
-            return _context.abrupt("return", result.data.length > 0);
-
-          case 4:
-          case "end":
-            return _context.stop();
-        }
-      }
-    }, _callee);
-  }));
-
-  return function isAccountWithTrigger(_x, _x2) {
-    return _ref.apply(this, arguments);
-  };
-}();
-
-exports.isAccountWithTrigger = isAccountWithTrigger;
-
-/***/ }),
-/* 743 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.makeDiskInfos = exports.hasPasswordDefinedAttribute = exports.buildPremiumLink = exports.hasAnOffer = exports.shouldDisplayOffers = exports.getUuid = exports.isFreemiumUser = exports.arePremiumLinksEnabled = exports.isSelfHosted = void 0;
-
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
-
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
-
-var _get = _interopRequireDefault(__webpack_require__(399));
-
-var _dsl = __webpack_require__(495);
-
-var FallbackQuota = 1e11;
-var GB = 1000 * 1000 * 1000;
-var PREMIUM_QUOTA = 50 * GB;
-/**
- * @typedef {object} InstanceInfo
- * @typedef {object} ContextInfo
- * @typedef {object} DiskUsageInfo
- */
-
-/**
- * @typedef SettingsInfo
- * @property {ContextInfo} context - Object returned by /settings/context
- * @property {InstanceInfo} instance - Object returned by /settings/instance
- * @property {DiskUsageInfo} diskUsage - Object returned by /settings/disk-usage
- */
-// If manager URL is present, then the instance is not self-hosted
-
-var isSelfHosted = function isSelfHosted(instanceInfo) {
-  return (0, _get.default)(instanceInfo, 'context.data.attributes.manager_url') ? false : true;
-};
-
-exports.isSelfHosted = isSelfHosted;
-
-var arePremiumLinksEnabled = function arePremiumLinksEnabled(instanceInfo) {
-  return (0, _get.default)(instanceInfo, 'context.data.attributes.enable_premium_links') ? true : false;
-};
-
-exports.arePremiumLinksEnabled = arePremiumLinksEnabled;
-
-var isFreemiumUser = function isFreemiumUser(instanceInfo) {
-  var quota = (0, _get.default)(instanceInfo, 'diskUsage.data.attributes.quota', false);
-  return parseInt(quota) <= PREMIUM_QUOTA;
-};
-
-exports.isFreemiumUser = isFreemiumUser;
-
-var getUuid = function getUuid(instanceInfo) {
-  return (0, _get.default)(instanceInfo, 'instance.data.attributes.uuid');
-};
-/**
- * Returns whether an instance is concerned by our offers
- *
- * @param {SettingsInfo} data Object containing all the results from /settings/*
- * @returns {boolean} Should we display offers
- */
-
-
-exports.getUuid = getUuid;
-
-var shouldDisplayOffers = function shouldDisplayOffers(data) {
-  return !isSelfHosted(data) && arePremiumLinksEnabled(data) && getUuid(data) && isFreemiumUser(data);
-};
-/**
- * Returns if an instance has subscribed to one of our offers
- *
- * @param {SettingsInfo} data Object containing all the results from /settings/*
- * @returns {boolean} Does the cozy have offers
- */
-
-
-exports.shouldDisplayOffers = shouldDisplayOffers;
-
-var hasAnOffer = function hasAnOffer(data) {
-  return !isSelfHosted(data) && arePremiumLinksEnabled(data) && getUuid(data) && !isFreemiumUser(data);
-};
-/**
- * Returns the link to the Premium page on the Cozy's Manager
- *
- * @param {InstanceInfo} instanceInfo - Instance information
- */
-
-
-exports.hasAnOffer = hasAnOffer;
-
-var buildPremiumLink = function buildPremiumLink(instanceInfo) {
-  var managerUrl = (0, _get.default)(instanceInfo, 'context.data.attributes.manager_url', false);
-  var uuid = getUuid(instanceInfo);
-
-  if (managerUrl && uuid) {
-    return "".concat(managerUrl, "/cozy/instances/").concat(uuid, "/premium");
-  } else {
-    return null;
-  }
-};
-/**
- * Checks the value of the password_defined attribute
- *
- * @param {import("../CozyClient").default} client - The CozyClient instance
- * @returns {Promise<boolean>} - Returns the value of the password_defined attribute
- */
-
-
-exports.buildPremiumLink = buildPremiumLink;
-
-var hasPasswordDefinedAttribute = /*#__PURE__*/function () {
-  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client) {
-    var _yield$client$fetchQu, password_defined;
-
-    return _regenerator.default.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            _context.prev = 0;
-            _context.next = 3;
-            return client.fetchQueryAndGetFromState({
-              definition: (0, _dsl.Q)('io.cozy.settings').getById('io.cozy.settings.instance'),
-              options: {
-                as: 'io.cozy.settings/io.cozy.settings.instance',
-                singleDocData: true
-              }
-            });
-
-          case 3:
-            _yield$client$fetchQu = _context.sent;
-            password_defined = _yield$client$fetchQu.data.attributes.password_defined;
-            return _context.abrupt("return", Boolean(password_defined));
-
-          case 8:
-            _context.prev = 8;
-            _context.t0 = _context["catch"](0);
-            return _context.abrupt("return", false);
-
-          case 11:
-          case "end":
-            return _context.stop();
-        }
-      }
-    }, _callee, null, [[0, 8]]);
-  }));
-
-  return function hasPasswordDefinedAttribute(_x) {
-    return _ref.apply(this, arguments);
-  };
-}();
-/**
- * @typedef DiskInfosRaw
- * @property diskQuota {number} - Space used in GB
- * @property diskUsage {number} -  Maximum space available in GB
- * @property percentUsage {number} - Usage percent of the disk
- */
-
-/**
- * @typedef DiskInfos
- * @property humanDiskQuota {string} - Space used in GB rounded
- * @property humanDiskUsage {string} - Maximum space available in GB rounded
- * @property percentUsage {string} - Usage percent of the disk rounded
- */
-
-/**
- * Convert input value into GB
- *
- * @param {number} bytes - Value in bytes
- * @returns {number} - Returns the value in GB
- */
-
-
-exports.hasPasswordDefinedAttribute = hasPasswordDefinedAttribute;
-
-var convertBytesToGB = function convertBytesToGB(bytes) {
-  return bytes * 1e-9;
-};
-/**
- * Computes `value` rounded to `fractionDigits`.
- *
- * @param {number} value - Value to format
- * @param {number} fractionDigits - Number of decimal numbers
- * @returns {string} - Returns the rounded number as a string
- */
-
-
-var formatDecimals = function formatDecimals(value) {
-  var fractionDigits = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
-  return "".concat(value % 1 ? value.toFixed(fractionDigits) : value);
-};
-/**
- * Transform bytes data to GB data and compute percent usage
- *
- * @param {number} usage - Value in bytes representing the space used
- * @param {number} quota - Value in bytes representing the maximum space available
- * @returns {DiskInfosRaw} - Returns an transform data to GB and usage percent of the disk
- */
-
-
-var computeDiskInfos = function computeDiskInfos(usage) {
-  var quota = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : FallbackQuota;
-  return {
-    diskQuota: convertBytesToGB(quota),
-    diskUsage: convertBytesToGB(usage),
-    percentUsage: usage / quota * 100
-  };
-};
-/**
- * Make human readable information from disk information (usage, quota)
- *
- * @param {number|string} usage - Value in bytes representing the space used
- * @param {number|string} [quota] - Value in bytes representing the maximum space available
- * @returns {DiskInfos} - Return a set of human readable information about disk
- */
-
-
-var makeDiskInfos = function makeDiskInfos(usage, quota) {
-  var _computeDiskInfos = computeDiskInfos(+usage, quota ? +quota : undefined),
-      diskQuota = _computeDiskInfos.diskQuota,
-      diskUsage = _computeDiskInfos.diskUsage,
-      percentUsage = _computeDiskInfos.percentUsage;
-
-  return {
-    humanDiskQuota: formatDecimals(diskQuota),
-    humanDiskUsage: formatDecimals(diskUsage),
-    percentUsage: Math.round(percentUsage).toString()
-  };
-};
-
-exports.makeDiskInfos = makeDiskInfos;
-
-/***/ }),
-/* 744 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.getAppDisplayName = exports.getUrl = exports.isInstalled = exports.getStoreInstallationURL = exports.getStoreURL = void 0;
-
-var _get = _interopRequireDefault(__webpack_require__(399));
-
-var STORE_SLUG = 'store';
-/**
- * Returns the store URL of an app/konnector
- *
- * @param {Array} [appData=[]] Apps data, as returned by endpoint /apps/ or /konnectors
- * @param {object} [app={}] AppObject
- * @returns {string} URL as string
- */
-
-var getStoreURL = function getStoreURL() {
-  var appData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
-  var app = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
-  if (!app.slug) {
-    throw new Error('Expected app / konnector with the defined slug');
-  }
-
-  var storeApp = isInstalled(appData, {
-    slug: STORE_SLUG
-  });
-  if (!storeApp) return null;
-  var storeUrl = storeApp.links && storeApp.links.related;
-  if (!storeUrl) return null;
-  return "".concat(storeUrl, "#/discover/").concat(app.slug);
-};
-/**
- * Returns the store URL to install/update an app/konnector
- *
- * @param  {Array}  [appData=[]]   Apps data, as returned by endpoint /apps/ or
- * /konnectors/
- * @param  {object} [app={}] AppObject
- * @returns {string}                URL as string
- */
-
-
-exports.getStoreURL = getStoreURL;
-
-var getStoreInstallationURL = function getStoreInstallationURL() {
-  var appData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
-  var app = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  var storeUrl = getStoreURL(appData, app);
-
-  if (!storeUrl) {
-    return null;
-  }
-
-  return "".concat(storeUrl, "/install");
-};
-/**
- *
- * @param {Array} apps Array of apps returned by /apps /konnectors
- * @param {object} wantedApp io.cozy.app with at least a slug
- * @returns {object} The io.cozy.app is installed or undefined if not
- */
-
-
-exports.getStoreInstallationURL = getStoreInstallationURL;
-
-var isInstalled = function isInstalled() {
-  var apps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
-  var wantedApp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  return apps.find(function (app) {
-    return app.attributes && app.attributes.slug === wantedApp.slug;
-  });
-};
-/**
- *
- * @param {object} app io.cozy.apps document
- * @returns {string} url to the app
- */
-
-
-exports.isInstalled = isInstalled;
-
-var getUrl = function getUrl(app) {
-  return app.links && app.links.related;
-};
-/**
- * getAppDisplayName - Combines the translated prefix and name of the app into a single string.
- *
- * @param {object} app io.cozy.apps or io.cozy.konnectors document
- * @param {string} lang Locale to use
- *
- * @returns {string} Name of the app suitable for display
- */
-
-
-exports.getUrl = getUrl;
-
-var getAppDisplayName = function getAppDisplayName(app, lang) {
-  var basePrefix = (0, _get.default)(app, 'name_prefix');
-  var baseName = (0, _get.default)(app, 'name');
-  var translatedName = (0, _get.default)(app, ['locales', lang, 'name'], baseName);
-  var translatedPrefix = (0, _get.default)(app, ['locales', lang, 'name_prefix'], basePrefix);
-  return translatedPrefix && translatedPrefix.toLowerCase() !== 'cozy' ? "".concat(translatedPrefix, " ").concat(translatedName) : translatedName;
-};
-
-exports.getAppDisplayName = getAppDisplayName;
-
-/***/ }),
-/* 745 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.normalize = normalize;
-exports.ensureFilePath = ensureFilePath;
-exports.getParentFolderId = getParentFolderId;
-exports.fetchBlobFileById = exports.isFromKonnector = exports.hasCertifications = exports.hasQualifications = exports.isPlainText = exports.doMobileUpload = exports.readMobileFile = exports.uploadFileWithConflictStrategy = exports.generateFileNameForRevision = exports.generateNewFileNameOnConflict = exports.overrideFileForPath = exports.move = exports.getFullpath = exports.hasMetadataAttribute = exports.fetchFilesByQualificationRules = exports.saveFileQualification = exports.isSharingShorcutNew = exports.isSharingShortcutNew = exports.isSharingShorcut = exports.isSharingShortcut = exports.getSharingShortcutTargetDoctype = exports.getSharingShortcutTargetMime = exports.getSharingShortcutStatus = exports.isShortcut = exports.shouldBeOpenedByOnlyOffice = exports.isOnlyOfficeFile = exports.isEncrypted = exports.isNote = exports.isDirectory = exports.isFile = exports.splitFilename = exports.ALBUMS_DOCTYPE = void 0;
-
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
-
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
-
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
-
-var _get = _interopRequireDefault(__webpack_require__(399));
-
-var _isString = _interopRequireDefault(__webpack_require__(651));
-
-var _has = _interopRequireDefault(__webpack_require__(594));
-
-var _trimEnd = _interopRequireDefault(__webpack_require__(746));
-
-var _qualification = __webpack_require__(748);
-
-var _dsl = __webpack_require__(495);
-
-var _const = __webpack_require__(619);
-
-var _CozyClient = _interopRequireDefault(__webpack_require__(279));
-
-var _logger = _interopRequireDefault(__webpack_require__(498));
-
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-var FILE_TYPE = 'file';
-var DIR_TYPE = 'directory';
-var ALBUMS_DOCTYPE = 'io.cozy.photos.albums';
-exports.ALBUMS_DOCTYPE = ALBUMS_DOCTYPE;
-var FILENAME_WITH_EXTENSION_REGEX = /(.+)(\..*)$/;
-/**
- * Returns base filename and extension
- *
- * @param {import("../types").IOCozyFile} file An io.cozy.files
- * @returns {object}  {filename, extension}
- */
-
-var splitFilename = function splitFilename(file) {
-  if (!(0, _isString.default)(file.name)) throw new Error('file should have a name property');
-
-  if (file.type === 'file') {
-    var match = file.name.match(FILENAME_WITH_EXTENSION_REGEX);
-
-    if (match) {
-      return {
-        filename: match[1],
-        extension: match[2]
-      };
-    }
-  }
-
-  return {
-    filename: file.name,
-    extension: ''
-  };
-};
-/**
- *
- * @param {import("../types").IOCozyFile} file io.cozy.files
- */
-
-
-exports.splitFilename = splitFilename;
-
-var isFile = function isFile(file) {
-  return file && file.type === FILE_TYPE;
-};
-/**
- *
- * @param {import("../types").IOCozyFile} file io.cozy.files
- */
-
-
-exports.isFile = isFile;
-
-var isDirectory = function isDirectory(file) {
-  return file && file.type === DIR_TYPE;
-};
-/**
- * Is file param a correct note
- *
- * @param {import("../types").IOCozyFile} file io.cozy.files
- * @returns {boolean}
- */
-
-
-exports.isDirectory = isDirectory;
-
-var isNote = function isNote(file) {
-  if (file && file.name && file.name.endsWith('.cozy-note') && file.type === FILE_TYPE && file.metadata && file.metadata.title !== undefined && file.metadata.version !== undefined) return true;
-  return false;
-};
-/**
- * Whether the file is client-side encrypted
- *
- * @param {import("../types").IOCozyFile} file - io.cozy.files document
- * @returns {boolean}
- */
-
-
-exports.isNote = isNote;
-
-var isEncrypted = function isEncrypted(file) {
-  return !!file.encrypted;
-};
-/**
- * Whether the file is supported by Only Office
- *
- * @param {import("../types").IOCozyFile} file - io.cozy.file document
- * @returns {boolean}
- */
-
-
-exports.isEncrypted = isEncrypted;
-
-var isOnlyOfficeFile = function isOnlyOfficeFile(file) {
-  return isFile(file) && !isNote(file) && (file.class === 'text' || file.class === 'spreadsheet' || file.class === 'slide');
-};
-/**
- * Whether the file should be opened by only office
- * We want to be consistent with the stack so we check the class attributes
- * But we want to exclude .txt and .md because the CozyUI Viewer can already show them
- *
- * @param {import("../types").IOCozyFile} file - io.cozy.file document
- * @returns {boolean}
- */
-
-
-exports.isOnlyOfficeFile = isOnlyOfficeFile;
-
-var shouldBeOpenedByOnlyOffice = function shouldBeOpenedByOnlyOffice(file) {
-  return isOnlyOfficeFile(file) && !file.name.endsWith('.txt') && !file.name.endsWith('.md');
-};
-/**
- *
- * @param {import("../types").IOCozyFile} file - io.cozy.files document
- * @returns {boolean} true if the file is a shortcut
- */
-
-
-exports.shouldBeOpenedByOnlyOffice = shouldBeOpenedByOnlyOffice;
-
-var isShortcut = function isShortcut(file) {
-  return file && file.class === 'shortcut';
-};
-/**
- * Normalizes an object representing a io.cozy.files object
- *
- * Ensures existence of `_id` and `_type`
- *
- * @public
- * @param {object} file - object representing the file
- * @returns {object} full normalized object
- */
-
-
-exports.isShortcut = isShortcut;
-
-function normalize(file) {
-  var id = file._id || file.id;
-  var doctype = file._type || _const.DOCTYPE_FILES;
-  return _objectSpread({
-    _id: id,
-    id: id,
-    _type: doctype
-  }, file);
-}
-/**
- * Ensure the file has a `path` attribute, or build it
- *
- * @public
- * @param {object} file - object representing the file
- * @param {object} parent - parent directory for the file
- * @returns {object} file object with path attribute
- */
-
-
-function ensureFilePath(file, parent) {
-  if (file.path) return file;
-  if (!parent || !parent.path) throw new Error("Could not define a file path for ".concat(file._id || file.id));
-  var path = parent.path + '/' + file.name;
-  return _objectSpread({
-    path: path
-  }, file);
-}
-/**
- * Get the id of the parent folder (`null` for the root folder)
- *
- * @param {object} file  - io.cozy.files document
- * @returns {string|null} id of the parent folder, if any
- */
-
-
-function getParentFolderId(file) {
-  var parentId = (0, _get.default)(file, 'attributes.dir_id');
-  return parentId === '' ? null : parentId;
-}
-/**
- * Returns the status of a sharing shortcut.
- *
- * @param {import("../types").IOCozyFile} file - io.cozy.files document
- *
- * @returns {string} A description of the status
- */
-
-
-var getSharingShortcutStatus = function getSharingShortcutStatus(file) {
-  return (0, _get.default)(file, 'metadata.sharing.status');
-};
-/**
- * Returns the mime type of the target of the sharing shortcut, if it is a file.
- *
- * @param {import("../types").IOCozyFile} file  - io.cozy.files document
- *
- * @returns {string} The mime-type of the target file, or an empty string is the target is not a file.
- */
-
-
-exports.getSharingShortcutStatus = getSharingShortcutStatus;
-
-var getSharingShortcutTargetMime = function getSharingShortcutTargetMime(file) {
-  return (0, _get.default)(file, 'metadata.target.mime');
-};
-/**
- * Returns the doctype of the target of the sharing shortcut.
- *
- * @param {import("../types").IOCozyFile} file - io.cozy.files document
- *
- * @returns {string} A doctype
- */
-
-
-exports.getSharingShortcutTargetMime = getSharingShortcutTargetMime;
-
-var getSharingShortcutTargetDoctype = function getSharingShortcutTargetDoctype(file) {
-  return (0, _get.default)(file, 'metadata.target._type');
-};
-/**
- * Returns whether the file is a shortcut to a sharing
- *
- * @param {import("../types").IOCozyFile} file - io.cozy.files document
- *
- * @returns {boolean}
- */
-
-
-exports.getSharingShortcutTargetDoctype = getSharingShortcutTargetDoctype;
-
-var isSharingShortcut = function isSharingShortcut(file) {
-  return Boolean(getSharingShortcutStatus(file));
-};
-/**
- * Returns whether the file is a shortcut to a sharing
- *
- * @deprecated Prefer to use isSharingShortcut.
- * @param {import("../types").IOCozyFile} file - io.cozy.files document
- *
- * @returns {boolean}
- */
-
-
-exports.isSharingShortcut = isSharingShortcut;
-
-var isSharingShorcut = function isSharingShorcut(file) {
-  _logger.default.warn('Deprecation: `isSharingShorcut` is deprecated, please use `isSharingShortcut` instead');
-
-  return isSharingShortcut(file);
-};
-/**
- * Returns whether the sharing shortcut is new
- *
- * @param {import("../types").IOCozyFile} file - io.cozy.files document
- *
- * @returns {boolean}
- */
-
-
-exports.isSharingShorcut = isSharingShorcut;
-
-var isSharingShortcutNew = function isSharingShortcutNew(file) {
-  return getSharingShortcutStatus(file) === 'new';
-};
-/**
- * Returns whether the sharing shortcut is new
- *
- * @deprecated Prefer to use isSharingShortcutNew.
- * @param {object} file - io.cozy.files document
- *
- * @returns {boolean}
- */
-
-
-exports.isSharingShortcutNew = isSharingShortcutNew;
-
-var isSharingShorcutNew = function isSharingShorcutNew(file) {
-  _logger.default.warn('Deprecation: `isSharingShorcutNew` is deprecated, please use `isSharingShortcutNew` instead');
-
-  return isSharingShortcutNew(file);
-};
-/**
- * Save the file with the given qualification
- *
- * @param {CozyClient} client - The CozyClient instance
- * @param {import("../types").IOCozyFile} file - The file to qualify
- * @param {object} qualification - The file qualification
- * @returns {Promise<import("../types").IOCozyFile>} The saved file
- */
-
-
-exports.isSharingShorcutNew = isSharingShorcutNew;
-
-var saveFileQualification = /*#__PURE__*/function () {
-  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client, file, qualification) {
-    var qualifiedFile;
-    return _regenerator.default.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            qualifiedFile = (0, _qualification.setQualification)(file, qualification);
-            return _context.abrupt("return", client.collection(_const.DOCTYPE_FILES).updateMetadataAttribute(file._id, qualifiedFile.metadata));
-
-          case 2:
-          case "end":
-            return _context.stop();
-        }
-      }
-    }, _callee);
-  }));
-
-  return function saveFileQualification(_x, _x2, _x3) {
-    return _ref.apply(this, arguments);
-  };
-}();
-/**
- * Helper to query files based on qualification rules
- *
- * @param {object} client - The CozyClient instance
- * @param {object} docRules - the rules containing the searched qualification and the count
- * @returns {Promise<import("../types").QueryResult>} The files found by the rules
- */
-
-
-exports.saveFileQualification = saveFileQualification;
-
-var fetchFilesByQualificationRules = /*#__PURE__*/function () {
-  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(client, docRules) {
-    var rules, count, query, result;
-    return _regenerator.default.wrap(function _callee2$(_context2) {
-      while (1) {
-        switch (_context2.prev = _context2.next) {
-          case 0:
-            rules = docRules.rules, count = docRules.count;
-            query = (0, _dsl.Q)(_const.DOCTYPE_FILES).where(_objectSpread({}, rules)).partialIndex({
-              trashed: false
-            }).indexFields(['cozyMetadata.updatedAt', 'metadata.qualification']).sortBy([{
-              'cozyMetadata.updatedAt': 'desc'
-            }]).limitBy(count ? count : 1);
-            _context2.next = 4;
-            return client.query(query);
-
-          case 4:
-            result = _context2.sent;
-            return _context2.abrupt("return", result);
-
-          case 6:
-          case "end":
-            return _context2.stop();
-        }
-      }
-    }, _callee2);
-  }));
-
-  return function fetchFilesByQualificationRules(_x4, _x5) {
-    return _ref2.apply(this, arguments);
-  };
-}();
-/**
- * Whether the file's metadata attribute exists
- *
- * @param {object} params - Param
- * @param {import("../types").IOCozyFile} params.file - An io.cozy.files document
- * @param {string} params.attribute - Metadata attribute to check
- * @returns {boolean}
- */
-
-
-exports.fetchFilesByQualificationRules = fetchFilesByQualificationRules;
-
-var hasMetadataAttribute = function hasMetadataAttribute(_ref3) {
-  var file = _ref3.file,
-      attribute = _ref3.attribute;
-  return (0, _has.default)(file, "metadata.".concat(attribute));
-};
-/**
- * async getFullpath - Gets a file's path
- *
- * @param {CozyClient} client - The CozyClient instance
- * @param {string} dirId  - The id of the parent directory
- * @param {string} name  - The file's name
- * @returns {Promise<string>} The full path of the file in the cozy
- **/
-
-
-exports.hasMetadataAttribute = hasMetadataAttribute;
-
-var getFullpath = /*#__PURE__*/function () {
-  var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(client, dirId, name) {
-    var _yield$client$query, parentDir, parentDirectoryPath;
-
-    return _regenerator.default.wrap(function _callee3$(_context3) {
-      while (1) {
-        switch (_context3.prev = _context3.next) {
-          case 0:
-            if (dirId) {
-              _context3.next = 2;
-              break;
-            }
-
-            throw new Error('You must provide a dirId');
-
-          case 2:
-            _context3.next = 4;
-            return client.query((0, _dsl.Q)(_const.DOCTYPE_FILES).getById(dirId));
-
-          case 4:
-            _yield$client$query = _context3.sent;
-            parentDir = _yield$client$query.data;
-            parentDirectoryPath = (0, _trimEnd.default)(parentDir.path, '/');
-            return _context3.abrupt("return", "".concat(parentDirectoryPath, "/").concat(name));
-
-          case 8:
-          case "end":
-            return _context3.stop();
-        }
-      }
-    }, _callee3);
-  }));
-
-  return function getFullpath(_x6, _x7, _x8) {
-    return _ref4.apply(this, arguments);
-  };
-}();
-/**
- * Move file to destination.
- *
- * @param {CozyClient} client             - The CozyClient instance
- * @param   {string} fileId               - The file's id (required)
- * @param   {object} destination          - The destination object containing:
- * @param   {string} destination.folderId - The destination folder's id (required)
- * @param   {string} destination.path     - The file's path after the move (optional, used to optimize performance in case of conflict)
- * @param   {boolean} force               - Whether we should overwrite, i.e. put to trash, the destination in case of conflict (defaults to false).
- * @returns {Promise}                     - A promise that returns the move action response and the deleted file id (if any) if resolved or an Error if rejected
- *
- */
-
-
-exports.getFullpath = getFullpath;
-
-var move = /*#__PURE__*/function () {
-  var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(client, fileId, destination) {
-    var force,
-        folderId,
-        path,
-        resp,
-        destinationPath,
-        _yield$client$query2,
-        movedFile,
-        filename,
-        conflictResp,
-        _resp,
-        _args4 = arguments;
-
-    return _regenerator.default.wrap(function _callee4$(_context4) {
-      while (1) {
-        switch (_context4.prev = _context4.next) {
-          case 0:
-            force = _args4.length > 3 && _args4[3] !== undefined ? _args4[3] : false;
-            folderId = destination.folderId, path = destination.path;
-            _context4.prev = 2;
-            _context4.next = 5;
-            return client.collection(_const.DOCTYPE_FILES).updateFileMetadata(fileId, {
-              dir_id: folderId
-            });
-
-          case 5:
-            resp = _context4.sent;
-            return _context4.abrupt("return", {
-              moved: resp.data,
-              deleted: null
-            });
-
-          case 9:
-            _context4.prev = 9;
-            _context4.t0 = _context4["catch"](2);
-
-            if (!(_context4.t0.status === 409 && force)) {
-              _context4.next = 35;
-              break;
-            }
-
-            if (!path) {
-              _context4.next = 16;
-              break;
-            }
-
-            destinationPath = path;
-            _context4.next = 24;
-            break;
-
-          case 16:
-            _context4.next = 18;
-            return client.query((0, _dsl.Q)(_const.DOCTYPE_FILES).getById(fileId));
-
-          case 18:
-            _yield$client$query2 = _context4.sent;
-            movedFile = _yield$client$query2.data;
-            filename = movedFile.name;
-            _context4.next = 23;
-            return getFullpath(client, folderId, filename);
-
-          case 23:
-            destinationPath = _context4.sent;
-
-          case 24:
-            _context4.next = 26;
-            return client.collection(_const.DOCTYPE_FILES).statByPath(destinationPath);
-
-          case 26:
-            conflictResp = _context4.sent;
-            _context4.next = 29;
-            return client.collection(_const.DOCTYPE_FILES).destroy(conflictResp.data);
-
-          case 29:
-            _context4.next = 31;
-            return client.collection(_const.DOCTYPE_FILES).updateFileMetadata(fileId, {
-              dir_id: folderId
-            });
-
-          case 31:
-            _resp = _context4.sent;
-            return _context4.abrupt("return", {
-              moved: _resp.data,
-              deleted: conflictResp.data.id
-            });
-
-          case 35:
-            throw _context4.t0;
-
-          case 36:
-          case "end":
-            return _context4.stop();
-        }
-      }
-    }, _callee4, null, [[2, 9]]);
-  }));
-
-  return function move(_x9, _x10, _x11) {
-    return _ref5.apply(this, arguments);
-  };
-}();
-/**
- *
- * Method to upload a file even if a file with the same name already exists.
- *
- * @param {CozyClient} client   - The CozyClient instance
- * @param {string} dirPath      - Fullpath of directory to upload to ex: path/to/
- * @param {object} file         - HTML Object file
- * @param {object} metadata     - An object containing the wanted metadata to attach
- * @returns {Promise<import("../types").IOCozyFile>} The overrided file
- */
-
-
-exports.move = move;
-
-var overrideFileForPath = /*#__PURE__*/function () {
-  var _ref6 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(client, dirPath, file, metadata) {
-    var path, filesCollection, existingFile, _existingFile$data, fileId, dirId, resp, _dirId, createdFile;
-
-    return _regenerator.default.wrap(function _callee5$(_context5) {
-      while (1) {
-        switch (_context5.prev = _context5.next) {
-          case 0:
-            path = dirPath;
-            if (!path.endsWith('/')) path = path + '/';
-            filesCollection = client.collection(_const.DOCTYPE_FILES);
-            _context5.prev = 3;
-            _context5.next = 6;
-            return filesCollection.statByPath(path + file.name);
-
-          case 6:
-            existingFile = _context5.sent;
-            _existingFile$data = existingFile.data, fileId = _existingFile$data.id, dirId = _existingFile$data.dir_id;
-            _context5.next = 10;
-            return filesCollection.updateFile(file, {
-              dirId: dirId,
-              fileId: fileId,
-              metadata: metadata
-            });
-
-          case 10:
-            resp = _context5.sent;
-            return _context5.abrupt("return", resp);
-
-          case 14:
-            _context5.prev = 14;
-            _context5.t0 = _context5["catch"](3);
-
-            if (!/Not Found/.test(_context5.t0)) {
-              _context5.next = 24;
-              break;
-            }
-
-            _context5.next = 19;
-            return filesCollection.ensureDirectoryExists(path);
-
-          case 19:
-            _dirId = _context5.sent;
-            _context5.next = 22;
-            return filesCollection.createFile(file, {
-              dirId: _dirId,
-              metadata: metadata
-            });
-
-          case 22:
-            createdFile = _context5.sent;
-            return _context5.abrupt("return", createdFile);
-
-          case 24:
-            throw _context5.t0;
-
-          case 25:
-          case "end":
-            return _context5.stop();
-        }
-      }
-    }, _callee5, null, [[3, 14]]);
-  }));
-
-  return function overrideFileForPath(_x12, _x13, _x14, _x15) {
-    return _ref6.apply(this, arguments);
-  };
-}();
-/**
- * Method to generate a new filename if there is a conflict
- *
- * @param {string} filenameWithoutExtension - A filename without the extension
- * @param {RegExp} [originalNameFormatRegex] - A regex to check if the name is still in his original format
- * @returns {string} A filename with the right suffix
- */
-
-
-exports.overrideFileForPath = overrideFileForPath;
-
-var generateNewFileNameOnConflict = function generateNewFileNameOnConflict(filenameWithoutExtension, originalNameFormatRegex) {
-  var isOriginalNameFormat = false;
-
-  if (originalNameFormatRegex && originalNameFormatRegex.test(filenameWithoutExtension)) {
-    isOriginalNameFormat = true;
-  } //Check if the string ends by _1
-
-
-  var regex = new RegExp('(_)([0-9]+)$');
-  var matches = filenameWithoutExtension.match(regex);
-  var shouldIncrement = matches && !isOriginalNameFormat;
-
-  if (shouldIncrement) {
-    var versionNumber = parseInt(matches[2]); //increment versionNumber
-
-    versionNumber++;
-    var newFilenameWithoutExtension = filenameWithoutExtension.replace(new RegExp('(_)([0-9]+)$'), "_".concat(versionNumber));
-    return newFilenameWithoutExtension;
-  } else {
-    return "".concat(filenameWithoutExtension, "_1");
-  }
-};
-/**
- * Generate a file name for a revision
- *
- * @param {import("../types").IOCozyFile} file - io.cozy.files document
- * @param {object} revision - The revision containing the updated_at
- * @param {function} f      - A function taking a a date and a format as arguments to generate the name.
- */
-
-
-exports.generateNewFileNameOnConflict = generateNewFileNameOnConflict;
-
-var generateFileNameForRevision = function generateFileNameForRevision(file, revision, f) {
-  var _splitFilename = splitFilename(file),
-      filename = _splitFilename.filename,
-      extension = _splitFilename.extension;
-
-  return "".concat(filename, "_").concat(f(revision.updated_at, 'DD MMMM - HH[h]mm')).concat(extension);
-};
-/**
- * @typedef FileUploadOptions
- * @property {string} [name]              - The file name to upload
- * @property {string} [dirId]             - The dirId to upload the file to
- * @property {object} [metadata]          - An object containing the metadata to attach
- * @property {string} [contentType]       - The file Content-Type
- * @property {string} [conflictStrategy]  - Erase / rename
- */
-
-/**
- * The goal of this method is to upload a file based on a conflict strategy.
- * Be careful: We need to check if the file exists by doing a statByPath query
- * before trying to upload the file since if we post and the stack return a
- * 409 conflict, we will get a SPDY_ERROR_PROTOCOL on Chrome. This is the only
- * viable workaround
- * If there is no conflict, then we upload the file.
- * If there is a conflict, then we apply the conflict strategy : `erase` or `rename`:
- *   - The `erase` strategy means an upload with a new version
- *   - The `rename` strategy means a new upload with a new name
- *
- * @param {CozyClient} client         - The CozyClient instance
- * @param {string|ArrayBuffer} file   - Can be the file path (file://) or the binary itself
- * @param {FileUploadOptions} options - The upload options
- */
-
-
-exports.generateFileNameForRevision = generateFileNameForRevision;
-
-var uploadFileWithConflictStrategy = /*#__PURE__*/function () {
-  var _ref7 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(client, file, options) {
-    var name, dirId, conflictStrategy, path, existingFile, fileId, resp, _splitFilename2, filename, extension, newFileName;
-
-    return _regenerator.default.wrap(function _callee6$(_context6) {
-      while (1) {
-        switch (_context6.prev = _context6.next) {
-          case 0:
-            name = options.name, dirId = options.dirId, conflictStrategy = options.conflictStrategy;
-            _context6.prev = 1;
-            _context6.next = 4;
-            return getFullpath(client, dirId, name);
-
-          case 4:
-            path = _context6.sent;
-            _context6.next = 7;
-            return client.collection(_const.DOCTYPE_FILES).statByPath(path);
-
-          case 7:
-            existingFile = _context6.sent;
-            fileId = existingFile.data.id;
-
-            if (!(conflictStrategy === 'erase')) {
-              _context6.next = 16;
-              break;
-            }
-
-            _context6.next = 12;
-            return client.collection(_const.DOCTYPE_FILES).updateFile(file, _objectSpread(_objectSpread({}, options), {}, {
-              fileId: fileId
-            }));
-
-          case 12:
-            resp = _context6.sent;
-            return _context6.abrupt("return", resp);
-
-          case 16:
-            // @ts-ignore
-            _splitFilename2 = splitFilename({
-              name: name,
-              type: 'file'
-            }), filename = _splitFilename2.filename, extension = _splitFilename2.extension;
-            newFileName = generateNewFileNameOnConflict(filename) + extension; //recall itself with the newFilename.
-
-            return _context6.abrupt("return", uploadFileWithConflictStrategy(client, file, _objectSpread(_objectSpread({}, options), {}, {
-              name: newFileName
-            })));
-
-          case 19:
-            _context6.next = 26;
-            break;
-
-          case 21:
-            _context6.prev = 21;
-            _context6.t0 = _context6["catch"](1);
-
-            if (!/Not Found/.test(_context6.t0.message)) {
-              _context6.next = 25;
-              break;
-            }
-
-            return _context6.abrupt("return", client.collection(_const.DOCTYPE_FILES).createFile(file, options));
-
-          case 25:
-            throw _context6.t0;
-
-          case 26:
-          case "end":
-            return _context6.stop();
-        }
-      }
-    }, _callee6, null, [[1, 21]]);
-  }));
-
-  return function uploadFileWithConflictStrategy(_x16, _x17, _x18) {
-    return _ref7.apply(this, arguments);
-  };
-}();
-/**
- * Read a file on a mobile
- *
- * @param {string} fileURL - The local file path (file://)
- */
-
-
-exports.uploadFileWithConflictStrategy = uploadFileWithConflictStrategy;
-
-var readMobileFile = /*#__PURE__*/function () {
-  var _ref8 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(fileURL) {
-    var p;
-    return _regenerator.default.wrap(function _callee10$(_context10) {
-      while (1) {
-        switch (_context10.prev = _context10.next) {
-          case 0:
-            /** Cordova plugin doesn't support promise since they are supporting Android 4.X.X
-             * so we have to create manually a promise to be able to write beautiful code ;)
-             */
-            p = new Promise(function (resolve, reject) {
-              var onResolvedLocalFS = /*#__PURE__*/function () {
-                var _ref9 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(fileEntry) {
-                  return _regenerator.default.wrap(function _callee9$(_context9) {
-                    while (1) {
-                      switch (_context9.prev = _context9.next) {
-                        case 0:
-                          fileEntry.file( /*#__PURE__*/function () {
-                            var _ref10 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(file) {
-                              var reader;
-                              return _regenerator.default.wrap(function _callee8$(_context8) {
-                                while (1) {
-                                  switch (_context8.prev = _context8.next) {
-                                    case 0:
-                                      reader = new FileReader();
-                                      reader.onloadend = /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
-                                        return _regenerator.default.wrap(function _callee7$(_context7) {
-                                          while (1) {
-                                            switch (_context7.prev = _context7.next) {
-                                              case 0:
-                                                resolve(reader.result);
-
-                                              case 1:
-                                              case "end":
-                                                return _context7.stop();
-                                            }
-                                          }
-                                        }, _callee7);
-                                      })); // Read the file as an ArrayBuffer
-
-                                      reader.readAsArrayBuffer(file);
-
-                                    case 3:
-                                    case "end":
-                                      return _context8.stop();
-                                  }
-                                }
-                              }, _callee8);
-                            }));
-
-                            return function (_x21) {
-                              return _ref10.apply(this, arguments);
-                            };
-                          }(), function (err) {
-                            // Since this module is pretty recent, let's have this info in sentry if needed
-                            console.error('error getting fileentry file!' + err); // eslint-disable-line no-console
-
-                            reject(err);
-                          });
-
-                        case 1:
-                        case "end":
-                          return _context9.stop();
-                      }
-                    }
-                  }, _callee9);
-                }));
-
-                return function onResolvedLocalFS(_x20) {
-                  return _ref9.apply(this, arguments);
-                };
-              }();
-
-              var onError = function onError(error) {
-                reject(error);
-              };
-              /**
-               * file:/// can not be converted to a fileEntry without the Cordova's File plugin.
-               * `resolveLocalFileSystemURL` is provided by this plugin and can resolve the native
-               * path to a fileEntry readable by a `FileReader`
-               *
-               * When we finished to read the fileEntry as buffer, we start the upload process
-               *
-               */
-              // @ts-ignore
-
-
-              window.resolveLocalFileSystemURL(fileURL, onResolvedLocalFS, onError);
-            });
-            return _context10.abrupt("return", p);
-
-          case 2:
-          case "end":
-            return _context10.stop();
-        }
-      }
-    }, _callee10);
-  }));
-
-  return function readMobileFile(_x19) {
-    return _ref8.apply(this, arguments);
-  };
-}();
-/**
- * Upload a file on a mobile
- *
- * @param {CozyClient} client         - The CozyClient instance
- * @param {string} fileURL            - The local file path (file://)
- * @param {FileUploadOptions} options - The upload options
- */
-
-
-exports.readMobileFile = readMobileFile;
-
-var doMobileUpload = /*#__PURE__*/function () {
-  var _ref12 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(client, fileURL, options) {
-    var file;
-    return _regenerator.default.wrap(function _callee11$(_context11) {
-      while (1) {
-        switch (_context11.prev = _context11.next) {
-          case 0:
-            _context11.next = 2;
-            return readMobileFile(fileURL);
-
-          case 2:
-            file = _context11.sent;
-            return _context11.abrupt("return", uploadFileWithConflictStrategy(client, file, options));
-
-          case 4:
-          case "end":
-            return _context11.stop();
-        }
-      }
-    }, _callee11);
-  }));
-
-  return function doMobileUpload(_x22, _x23, _x24) {
-    return _ref12.apply(this, arguments);
-  };
-}();
-/**
- * @param {string} [mimeType=''] - Mime type of file
- * @param {string} [fileName=''] - Name of file
- * @returns {boolean}
- */
-
-
-exports.doMobileUpload = doMobileUpload;
-
-var isPlainText = function isPlainText() {
-  var mimeType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
-  var fileName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
-  return mimeType ? /^text\//.test(mimeType) : /\.(txt|md)$/.test(fileName);
-};
-/**
- * @param {import("../types").IOCozyFile} file - io.cozy.files document
- * @returns {boolean}
- */
-
-
-exports.isPlainText = isPlainText;
-
-var hasQualifications = function hasQualifications(file) {
-  return (0, _has.default)(file, 'metadata.qualification');
-};
-/**
- * @param {import("../types").IOCozyFile} file - io.cozy.files document
- * @returns {boolean}
- */
-
-
-exports.hasQualifications = hasQualifications;
-
-var hasCertifications = function hasCertifications(file) {
-  return (0, _get.default)(file, 'metadata.carbonCopy', false) || (0, _get.default)(file, 'metadata.electronicSafe', false);
-};
-/**
- * @param {import("../types").IOCozyFile} file - io.cozy.files document
- * @returns {boolean}
- */
-
-
-exports.hasCertifications = hasCertifications;
-
-var isFromKonnector = function isFromKonnector(file) {
-  return (0, _has.default)(file, 'cozyMetadata.sourceAccount');
-};
-/**
- * @param {CozyClient} client - Instance of CozyClient
- * @param {string} fileId - Id of io.cozy.files document
- * @returns {Promise<Blob>}
- */
-
-
-exports.isFromKonnector = isFromKonnector;
-
-var fetchBlobFileById = /*#__PURE__*/function () {
-  var _ref13 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(client, fileId) {
-    var fileColl, fileBin, fileBlob;
-    return _regenerator.default.wrap(function _callee12$(_context12) {
-      while (1) {
-        switch (_context12.prev = _context12.next) {
-          case 0:
-            fileColl = client.collection(_const.DOCTYPE_FILES);
-            _context12.next = 3;
-            return fileColl.fetchFileContentById(fileId);
-
-          case 3:
-            fileBin = _context12.sent;
-            _context12.next = 6;
-            return fileBin.blob();
-
-          case 6:
-            fileBlob = _context12.sent;
-            return _context12.abrupt("return", fileBlob);
-
-          case 8:
-          case "end":
-            return _context12.stop();
-        }
-      }
-    }, _callee12);
-  }));
-
-  return function fetchBlobFileById(_x25, _x26) {
-    return _ref13.apply(this, arguments);
-  };
-}();
-
-exports.fetchBlobFileById = fetchBlobFileById;
-
-/***/ }),
-/* 746 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseToString = __webpack_require__(408),
-    castSlice = __webpack_require__(674),
-    charsEndIndex = __webpack_require__(747),
-    stringToArray = __webpack_require__(676),
-    toString = __webpack_require__(407),
-    trimmedEndIndex = __webpack_require__(546);
-
-/**
- * Removes trailing whitespace or specified characters from `string`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to trim.
- * @param {string} [chars=whitespace] The characters to trim.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {string} Returns the trimmed string.
- * @example
- *
- * _.trimEnd('  abc  ');
- * // => '  abc'
- *
- * _.trimEnd('-_-abc-_-', '_-');
- * // => '-_-abc'
- */
-function trimEnd(string, chars, guard) {
-  string = toString(string);
-  if (string && (guard || chars === undefined)) {
-    return string.slice(0, trimmedEndIndex(string) + 1);
-  }
-  if (!string || !(chars = baseToString(chars))) {
-    return string;
-  }
-  var strSymbols = stringToArray(string),
-      end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
-
-  return castSlice(strSymbols, 0, end).join('');
-}
-
-module.exports = trimEnd;
-
-
-/***/ }),
-/* 747 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseIndexOf = __webpack_require__(425);
-
-/**
- * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol
- * that is not found in the character symbols.
- *
- * @private
- * @param {Array} strSymbols The string symbols to inspect.
- * @param {Array} chrSymbols The character symbols to find.
- * @returns {number} Returns the index of the last unmatched string symbol.
- */
-function charsEndIndex(strSymbols, chrSymbols) {
-  var index = strSymbols.length;
-
-  while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
-  return index;
-}
-
-module.exports = charsEndIndex;
-
-
-/***/ }),
-/* 748 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var _interopRequireWildcard = __webpack_require__(277);
-
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.getQualification = exports.setQualification = exports.Qualification = void 0;
-
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
-
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
-
-var _createClass2 = _interopRequireDefault(__webpack_require__(297));
-
-var _lodash = __webpack_require__(249);
-
-var qualificationModel = _interopRequireWildcard(__webpack_require__(749));
-
-var _logger = _interopRequireDefault(__webpack_require__(498));
-
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-/**
- * @typedef {object} QualificationAttributes
- * @property {string} [label] - The qualification label.
- * @property {string} [purpose] - The document purpose.
- * @property {string} [sourceCategory] - The activity field of the document source.
- * @property {string} [sourceSubCategory] - The sub-activity field of the document source.
- * @property {Array<string>} [subjects] - On what is about the document.
- */
-
-/**
- * This class is used to create document Qualification, i.e. metadata
- * attributes used to describe the document.
- * The qualifications model is stored in the assets, associating
- * labels to attributes, namely: purpose, sourceCategory, sourceSubCategory
- * and subjects.
- * A qualification can be customized accordingly to rules detailed in
- * the checkValueAttributes method.
- */
-var Qualification = /*#__PURE__*/function () {
-  /**
-   * @param {string} label - The qualification label
-   * @param {QualificationAttributes} attributes - Qualification's attributes
-   */
-  function Qualification(label) {
-    var attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-    (0, _classCallCheck2.default)(this, Qualification);
-    var qualification = qualificationModel.qualifications.find(function (qualif) {
-      return qualif.label === label;
-    });
-
-    if (qualification) {
-      /**
-       * @type {string?}
-       */
-      this.label = qualification.label;
-      /**
-       * @type {string?}
-       */
-
-      this.purpose = attributes.purpose || qualification.purpose;
-      this.sourceCategory = attributes.sourceCategory || qualification.sourceCategory;
-      this.sourceSubCategory = attributes.sourceSubCategory || qualification.sourceSubCategory;
-      this.subjects = attributes.subjects || qualification.subjects;
-    } else {
-      throw new Error("No qualification found for the label ".concat(label));
-    }
-  }
-  /**
-   * Check the given qualification attributes respects the following rules:
-   *   - For the given label, if a purpose, sourceCategory or sourceSubCategory
-   *     attribute is defined in the model, it must match the given qualification.
-   *   - If not defined in the model for the label, a custom purpose, sourceCategory or
-   *     sourceSubCategory value can be defined, if it exist in their respective
-   *     known values list.
-   *   - For the given label, if subjects are defined in the model, they must be included
-   *     in the given qualification.
-   *   - If extra subjects are set, they should exist in the known values.
-   *
-   * @param {object} attributes - The qualification attributes to check
-   */
-
-
-  (0, _createClass2.default)(Qualification, [{
-    key: "checkAttributes",
-    value: function checkAttributes(attributes) {
-      if (this.purpose !== attributes.purpose) {
-        if (!this.purpose) {
-          var isKnownValue = qualificationModel.purposeKnownValues.includes(attributes.purpose);
-
-          if (!isKnownValue) {
-            _logger.default.info("This purpose is not listed among the known values: ".concat(attributes.purpose, ". ") + "Please open an issue on https://github.com/cozy/cozy-client/issues");
-          }
-        } else {
-          throw new Error("The purpose for the label ".concat(this.label, " should be ").concat(this.purpose, ". ") + "Please use this or open an issue on https://github.com/cozy/cozy-client/issues");
-        }
-      }
-
-      if (this.sourceCategory !== attributes.sourceCategory) {
-        if (!this.sourceCategory) {
-          var _isKnownValue = qualificationModel.sourceCategoryKnownValues.includes(attributes.sourceCategory);
-
-          if (!_isKnownValue) {
-            _logger.default.info("This sourceCategory is not listed among the known values: ".concat(attributes.sourceCategory, ". ") + "Please open an issue on https://github.com/cozy/cozy-client/issues");
-          }
-        } else {
-          throw new Error("The sourceCategory for the label ".concat(this.label, " should be ").concat(this.sourceCategory, ". ") + "Please use this or open an issue on https://github.com/cozy/cozy-client/issues");
-        }
-      }
-
-      if (this.sourceSubCategory !== attributes.sourceSubCategory) {
-        if (!this.sourceSubCategory) {
-          var _isKnownValue2 = qualificationModel.sourceSubCategoryKnownValues.includes(attributes.sourceSubCategory);
-
-          if (!_isKnownValue2) {
-            _logger.default.info("This sourceSubCategory is not listed among the known values: ".concat(attributes.sourceSubCategory, ". ") + "Please open an issue on https://github.com/cozy/cozy-client/issues");
-          }
-        } else {
-          throw new Error("The sourceSubCategory for the label ".concat(this.label, " should be ").concat(this.sourceSubCategory, ". ") + "Please use this or open an issue on https://github.com/cozy/cozy-client/issues");
-        }
-      }
-
-      var missingSubjects = (0, _lodash.difference)(this.subjects, attributes.subjects);
-
-      if (missingSubjects.length > 0) {
-        throw new Error("The subjects for the label ".concat(this.label, " should include ").concat(this.subjects, ". ") + "Please use this or open an issue on https://github.com/cozy/cozy-client/issues");
-      }
-
-      var extraSubjects = (0, _lodash.difference)(attributes.subjects, this.subjects);
-
-      if (extraSubjects.length > 0) {
-        var unknownSubjects = (0, _lodash.difference)(extraSubjects, qualificationModel.subjectsKnownValues);
-        if (unknownSubjects.length > 0) _logger.default.info("These subjects are not listed among the known values: ".concat(unknownSubjects, ". ") + "Please open an issue on https://github.com/cozy/cozy-client/issues");
-      }
-    }
-    /**
-     * Set purpose to the qualification.
-     *
-     * @param {Array} purpose - The purpose to set.
-     * @returns {Qualification} The Qualification object.
-     */
-
-  }, {
-    key: "setPurpose",
-    value: function setPurpose(purpose) {
-      return new Qualification(this.label, _objectSpread(_objectSpread({}, this.toQualification()), {}, {
-        purpose: purpose
-      }));
-    }
-    /**
-     * Set sourceCategory to the qualification.
-     *
-     * @param {Array} sourceCategory - The sourceCategory to set.
-     * @returns {Qualification} The Qualification object.
-     */
-
-  }, {
-    key: "setSourceCategory",
-    value: function setSourceCategory(sourceCategory) {
-      return new Qualification(this.label, _objectSpread(_objectSpread({}, this.toQualification()), {}, {
-        sourceCategory: sourceCategory
-      }));
-    }
-    /**
-     * Set sourceSubCategory to the qualification.
-     *
-     * @param {Array} sourceSubCategory - The sourceSubCategory to set.
-     * @returns {Qualification} The Qualification object.
-     */
-
-  }, {
-    key: "setSourceSubCategory",
-    value: function setSourceSubCategory(sourceSubCategory) {
-      return new Qualification(this.label, _objectSpread(_objectSpread({}, this.toQualification()), {}, {
-        sourceSubCategory: sourceSubCategory
-      }));
-    }
-    /**
-     * Set subjects to the qualification.
-     *
-     * @param {Array} subjects - The subjects to set.
-     * @returns {Qualification} The Qualification object.
-     */
-
-  }, {
-    key: "setSubjects",
-    value: function setSubjects(subjects) {
-      return new Qualification(this.label, _objectSpread(_objectSpread({}, this.toQualification()), {}, {
-        subjects: subjects
-      }));
-    }
-    /**
-     * Returns the qualification attributes
-     *
-     * @returns {object} The qualification attributes
-     */
-
-  }, {
-    key: "toQualification",
-    value: function toQualification() {
-      return {
-        label: this.label,
-        purpose: this.purpose,
-        sourceCategory: this.sourceCategory,
-        sourceSubCategory: this.sourceSubCategory,
-        subjects: this.subjects
-      };
-    }
-  }]);
-  return Qualification;
-}();
-/**
- * Returns the qualification associated to a label.
- *
- * @param {string} label - The label to qualify
- * @returns {Qualification} - The qualification
- */
-
-
-exports.Qualification = Qualification;
-
-Qualification.getByLabel = function (label) {
-  return new Qualification(label);
-};
-/**
- * Set the qualification to the document metadata
- *
- * @param {object} document - The document to set the qualification
- * @param {Qualification} qualification - The qualification to set
- * @returns {object} - The qualified document
- */
-
-
-var setQualification = function setQualification(document, qualification) {
-  if (qualification.label) {
-    new Qualification(qualification.label).checkAttributes(qualification);
-  } else {
-    throw new Error('You must set a label to qualify');
-  }
-
-  return (0, _lodash.set)(document, 'metadata.qualification', qualification);
-};
-/**
- * Helper to get the qualification from a document
- *
- * @param {object} document - The document
- * @returns {Qualification} - The document qualification
- *
- */
-
-
-exports.setQualification = setQualification;
-
-var getQualification = function getQualification(document) {
-  var docQualification = (0, _lodash.get)(document, 'metadata.qualification');
-  var qualification = new Qualification(docQualification.label, docQualification.qualification);
-  return qualification.toQualification();
-};
-
-exports.getQualification = getQualification;
-
-/***/ }),
-/* 749 */
-/***/ (function(module) {
-
-module.exports = JSON.parse("{\"qualifications\":[{\"label\":\"identity_photo\",\"purpose\":\"attestation\",\"subjects\":[\"identity\"]},{\"label\":\"national_id_card\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"civil_registration\",\"subjects\":[\"identity\"]},{\"label\":\"passport\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"civil_registration\",\"subjects\":[\"identity\"]},{\"label\":\"residence_permit\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"immigration\",\"subjects\":[\"permit\",\"identity\"]},{\"label\":\"family_record_book\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"civil_registration\",\"subjects\":[\"family\"]},{\"label\":\"birth_certificate\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"civil_registration\",\"subjects\":[\"identity\",\"family\"]},{\"label\":\"driver_license\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"transport\",\"subjects\":[\"permit\",\"driving\"]},{\"label\":\"other_identity_document\",\"purpose\":\"attestation\",\"subjects\":[\"identity\"]},{\"label\":\"wedding\",\"purpose\":\"contract\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"civil_registration\",\"subjects\":[\"family\"]},{\"label\":\"pacs\",\"purpose\":\"contract\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"civil_registration\",\"subjects\":[\"family\"]},{\"label\":\"divorce\",\"purpose\":\"contract\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"civil_registration\",\"subjects\":[\"family\"]},{\"label\":\"large_family_card\",\"purpose\":\"attestation\",\"sourceCategory\":\"transport\",\"subjects\":[\"right\"]},{\"label\":\"caf\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"family\",\"subjects\":[\"right\"]},{\"label\":\"other_family_document\",\"subjects\":[\"family\"]},{\"label\":\"diploma\",\"purpose\":\"attestation\",\"sourceCategory\":\"education\",\"subjects\":[\"achievement\"]},{\"label\":\"work_contract\",\"purpose\":\"contract\",\"sourceCategory\":\"employer\",\"subjects\":[\"work\",\"employment\"]},{\"label\":\"pay_sheet\",\"purpose\":\"attestation\",\"sourceCategory\":\"employer\",\"subjects\":[\"work\",\"revenues\"]},{\"label\":\"fidelity_card\",\"sourceCategory\":\"shopping\"},{\"label\":\"library_card\",\"sourceCategory\":\"individual\"},{\"label\":\"single_parent_benefit\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"family\",\"subjects\":[\"revenues\"]},{\"label\":\"transport_card\",\"sourceCategory\":\"transport\",\"subjects\":[\"vehicule\"]},{\"label\":\"electoral_card\",\"sourceCategory\":\"gov\"},{\"label\":\"employment_center_certificate\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"subjects\":[\"employment\"]},{\"label\":\"unemployment_benefit\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"subjects\":[\"revenues\"]},{\"label\":\"pension\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"subjects\":[\"revenues\"]},{\"label\":\"other_revenue\",\"purpose\":\"attestation\",\"subjects\":[\"revenues\"]},{\"label\":\"gradebook\",\"purpose\":\"report\",\"sourceCategory\":\"education\",\"subjects\":[\"history\"]},{\"label\":\"student_card\",\"purpose\":\"attestation\",\"sourceCategory\":\"education\",\"subjects\":[\"identity\",\"right\",\"employment\",\"education\"]},{\"label\":\"resume\",\"purpose\":\"description\",\"subjects\":[\"employment\"]},{\"label\":\"motivation_letter\",\"purpose\":\"description\",\"subjects\":[\"employment\"]},{\"label\":\"other_work_document\",\"purpose\":\"employment\"},{\"label\":\"health_book\",\"purpose\":\"attestation\",\"sourceCategory\":\"health\",\"subjects\":[\"capacity\",\"vaccine\"]},{\"label\":\"health_certificate\",\"purpose\":\"attestation\",\"sourceCategory\":\"health\",\"subjects\":[\"capacity\",\"vaccine\"]},{\"label\":\"pregnancy_medical_certificate\",\"purpose\":\"attestation\",\"sourceCategory\":\"health\",\"subjects\":[\"pregnancy\"]},{\"label\":\"work_disability_recognition\",\"purpose\":\"attestation\",\"sourceCategory\":\"health\",\"subjects\":[\"right\"]},{\"label\":\"national_health_insurance_card\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"health\",\"subjects\":[\"insurance\"]},{\"label\":\"national_health_insurance_right_certificate\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"health\",\"subjects\":[\"right\",\"insurance\"]},{\"label\":\"health_insurance_card\",\"purpose\":\"attestation\",\"sourceCategory\":\"insurance\",\"sourceSubCategory\":\"health\",\"subjects\":[\"insurance\"]},{\"label\":\"prescription\",\"purpose\":\"attestation\",\"sourceCategory\":\"health\",\"subjects\":[\"right\",\"medecine\"]},{\"label\":\"health_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"health\"},{\"label\":\"other_health_document\",\"subjects\":[\"health\"]},{\"label\":\"vehicle_registration\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"transport\",\"subjects\":[\"vehicule\",\"identity\",\"right\"]},{\"label\":\"car_insurance\",\"purpose\":\"attestation\",\"sourceCategory\":\"insurance\",\"sourceSubCategory\":\"transport\",\"subjects\":[\"insurance\",\"car\"]},{\"label\":\"mechanic_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"transport\"},{\"label\":\"transport_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"transport\"},{\"label\":\"other_transport_document\",\"sourceCategory\":\"transport\"},{\"label\":\"house_sale_agreeement\",\"purpose\":\"contract\",\"sourceCategory\":\"real_estate\",\"subjects\":[\"house\"]},{\"label\":\"real_estate_tax\",\"purpose\":\"invoice\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"real_estate\",\"subjects\":[\"tax\",\"house\"]},{\"label\":\"building_permit\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"real_estate\",\"subjects\":[\"permit\",\"house\"]},{\"label\":\"technical_diagnostic_record\",\"purpose\":\"report\",\"sourceCategory\":\"real_estate\",\"subjects\":[\"compliance\",\"house\"]},{\"label\":\"lease\",\"purpose\":\"contract\",\"sourceCategory\":\"real_estate\",\"subjects\":[\"house\"]},{\"label\":\"rent_receipt\",\"purpose\":\"invoice\",\"sourceCategory\":\"real_estate\",\"subjects\":[\"house\"]},{\"label\":\"house_insurance\",\"purpose\":\"contract\",\"sourceCategory\":\"insurance\",\"sourceSubCategory\":\"real_estate\",\"subjects\":[\"insurance\",\"house\"]},{\"label\":\"work_quote\",\"purpose\":\"description\",\"sourceCategory\":\"building\",\"subjects\":[\"building\",\"house\"]},{\"label\":\"work_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"building\",\"subjects\":[\"building\",\"house\"]},{\"label\":\"other_house_document\",\"subjects\":[\"house\"]},{\"label\":\"phone_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"telecom\",\"sourceSubCategory\":\"mobile\"},{\"label\":\"isp_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"telecom\",\"sourceSubCategory\":\"internet\",\"subjects\":[\"subscription\"]},{\"label\":\"telecom_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"telecom\"},{\"label\":\"energy_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"energy\"},{\"label\":\"water_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"water\"},{\"label\":\"energy_contract\",\"purpose\":\"contract\",\"sourceCategory\":\"energy\"},{\"label\":\"appliance_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"retail\"},{\"label\":\"web_service_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"web\"},{\"label\":\"restaurant_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"alimentation\"},{\"label\":\"grocery_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"shopping\"},{\"label\":\"other_invoice\",\"purpose\":\"invoice\"},{\"label\":\"tax_return\",\"purpose\":\"report\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"tax\",\"subjects\":[\"tax\"]},{\"label\":\"tax_notice\",\"purpose\":\"invoice\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"tax\",\"subjects\":[\"tax\"]},{\"label\":\"tax_timetable\",\"purpose\":\"report\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"tax\",\"subjects\":[\"tax\"]},{\"label\":\"other_tax_document\",\"subjects\":[\"tax\"]},{\"label\":\"bank_details\",\"purpose\":\"attestation\",\"sourceCategory\":\"bank\",\"subjects\":[\"bank_account\"]},{\"label\":\"bank_statement\",\"purpose\":\"report\",\"sourceCategory\":\"bank\",\"subjects\":[\"history\"]},{\"label\":\"loan_agreement\",\"purpose\":\"contract\",\"sourceCategory\":\"bank\"},{\"label\":\"other_bank_document\",\"sourceCategory\":\"bank\"},{\"label\":\"receipt\",\"purpose\":\"report\"},{\"label\":\"payment_proof_family_allowance\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"tax\",\"subjects\":[\"subvention\"]},{\"label\":\"school_attendance_certificate\",\"purpose\":\"attestation\",\"sourceCategory\":\"education\",\"subjects\":[\"identity\",\"right\",\"education\"]},{\"label\":\"school_insurance_certificate\",\"purpose\":\"attestation\",\"sourceCategory\":\"education\",\"subjects\":[\"education\",\"insurance\"]},{\"label\":\"unfit_for_habitation_declaration\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"real_estate\",\"subjects\":[\"compliance\"]},{\"label\":\"accommodation_proof\",\"purpose\":\"attestation\",\"sourceCategory\":\"individual\",\"subjects\":[\"address\"]},{\"label\":\"citizen_registration_certificate\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"civil_registration\",\"subjects\":[\"achievement\",\"education\"]},{\"label\":\"personal_sporting_licence\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"sport\",\"subjects\":[\"permit\",\"invoice\"]},{\"label\":\"other_activity_document\",\"sourceSubCategory\":\"sport\",\"subjects\":[\"permit\",\"invoice\"]},{\"label\":\"other_administrative_document\"},{\"label\":\"note_identity_document\"},{\"label\":\"note_family_document\"},{\"label\":\"note_work_document\"},{\"label\":\"note_health_document\"},{\"label\":\"note_house_document\"},{\"label\":\"note_transport_document\"},{\"label\":\"note_activity_document\"},{\"label\":\"note_finance\"},{\"label\":\"note_invoice\"}],\"purposeKnownValues\":[\"attestation\",\"contract\",\"invoice\",\"report\",\"description\",\"evaluation\",\"employment\"],\"sourceCategoryKnownValues\":[\"bank\",\"insurance\",\"retail\",\"telecom\",\"energy\",\"water\",\"health\",\"gov\",\"association\",\"education\",\"employer\",\"transport\",\"goods\",\"alimentation\",\"building\",\"real_estate\",\"web\",\"individual\",\"shopping\"],\"sourceSubCategoryKnownValues\":[\"civil_registration\",\"immigration\",\"transport\",\"family\",\"tax\",\"health\",\"real_estate\",\"mobile\",\"internet\",\"citizen\",\"sport\"],\"subjectsKnownValues\":[\"identity\",\"permit\",\"family\",\"address\",\"driving\",\"right\",\"subvention\",\"achievement\",\"degree\",\"work\",\"employment\",\"revenues\",\"history\",\"insurance\",\"medical_act\",\"vehicule\",\"car\",\"moto\",\"truck\",\"boat\",\"subscription\",\"buy/sale\",\"house\",\"compliance\",\"building\",\"food\",\"real_estate\",\"tax\",\"address\",\"education\",\"statement\",\"course\",\"internet\",\"phone\",\"vaccine\",\"capacity\",\"health\",\"drugs\",\"child\",\"pregnancy\",\"bank_account\"]}");
-
-/***/ }),
-/* 750 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.getReferencedFolder = exports.createFolderWithReference = exports.ensureMagicFolder = exports.MAGIC_FOLDERS = void 0;
-
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
-
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
-
-var _sortBy = _interopRequireDefault(__webpack_require__(751));
-
-var _CozyClient = _interopRequireDefault(__webpack_require__(279));
-
-var _const = __webpack_require__(619);
-
-var APP_DOCTYPE = 'io.cozy.apps';
-var administrative = 'administrative';
-var photos = 'photos';
-var MAGIC_FOLDERS = {
-  ADMINISTRATIVE: "".concat(APP_DOCTYPE, "/").concat(administrative),
-  PHOTOS: "".concat(APP_DOCTYPE, "/").concat(photos),
-  PHOTOS_BACKUP: "".concat(APP_DOCTYPE, "/").concat(photos, "/mobile"),
-  PHOTOS_UPLOAD: "".concat(APP_DOCTYPE, "/").concat(photos, "/upload"),
-  NOTES: "".concat(APP_DOCTYPE, "/notes"),
-  HOME: "".concat(APP_DOCTYPE, "/home"),
-  PAPERS: "".concat(APP_DOCTYPE, "/").concat(administrative, "/papers"),
-  COACH_CO2: "".concat(APP_DOCTYPE, "/").concat(administrative, "/coachco2")
-};
-/**
- * Returns a "Magic Folder", given its id. See https://docs.cozy.io/en/cozy-doctypes/docs/io.cozy.apps/#special-iocozyapps-doctypes
- *
- * @param  {CozyClient} client    cozy-client instance
- * @param  {string} id Magic Folder id. `CozyFolder.magicFolders` contains the
- * ids of folders that can be magic folders.
- * @param {string} path Default path to use if magic folder does not exist
- * @returns {Promise<import("../types").IOCozyFolder>} Folder document
- */
-
-exports.MAGIC_FOLDERS = MAGIC_FOLDERS;
-
-var ensureMagicFolder = /*#__PURE__*/function () {
-  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client, id, path) {
-    var magicFolderDocument, existingMagicFolder, magicFoldersValues;
-    return _regenerator.default.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            magicFolderDocument = {
-              _type: APP_DOCTYPE,
-              _id: id
-            };
-            _context.next = 3;
-            return getReferencedFolder(client, magicFolderDocument);
-
-          case 3:
-            existingMagicFolder = _context.sent;
-
-            if (!existingMagicFolder) {
-              _context.next = 6;
-              break;
-            }
-
-            return _context.abrupt("return", existingMagicFolder);
-
-          case 6:
-            magicFoldersValues = Object.values(MAGIC_FOLDERS);
-
-            if (magicFoldersValues.includes(id)) {
-              _context.next = 9;
-              break;
-            }
-
-            throw new Error("Cannot create Magic folder with id ".concat(id, ". Allowed values are ").concat(magicFoldersValues.join(', '), "."));
-
-          case 9:
-            if (path) {
-              _context.next = 11;
-              break;
-            }
-
-            throw new Error('Magic folder default path must be defined');
-
-          case 11:
-            return _context.abrupt("return", createFolderWithReference(client, path, magicFolderDocument));
-
-          case 12:
-          case "end":
-            return _context.stop();
-        }
-      }
-    }, _callee);
-  }));
-
-  return function ensureMagicFolder(_x, _x2, _x3) {
-    return _ref.apply(this, arguments);
-  };
-}();
-/**
- * The next functions are considered private and only exported for unit tests
- */
-
-/**
- * Create a folder with a reference to the given document
- *
- * @param  {CozyClient}  client - cozy-client instance
- * @param  {string}  path - Folder path
- * @param  {import("../types").CozyClientDocument}  document - Document to make reference to. Any doctype.
- * @returns {Promise<import("../types").IOCozyFolder>}  Folder document
- */
-
-
-exports.ensureMagicFolder = ensureMagicFolder;
-
-var createFolderWithReference = /*#__PURE__*/function () {
-  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(client, path, document) {
-    var collection, dirId, _yield$collection$get, dirInfos;
-
-    return _regenerator.default.wrap(function _callee2$(_context2) {
-      while (1) {
-        switch (_context2.prev = _context2.next) {
-          case 0:
-            collection = client.collection(_const.DOCTYPE_FILES);
-            _context2.next = 3;
-            return collection.ensureDirectoryExists(path);
-
-          case 3:
-            dirId = _context2.sent;
-            _context2.next = 6;
-            return collection.addReferencesTo(document, [{
-              _id: dirId
-            }]);
-
-          case 6:
-            _context2.next = 8;
-            return collection.get(dirId);
-
-          case 8:
-            _yield$collection$get = _context2.sent;
-            dirInfos = _yield$collection$get.data;
-            return _context2.abrupt("return", dirInfos);
-
-          case 11:
-          case "end":
-            return _context2.stop();
-        }
-      }
-    }, _callee2);
-  }));
-
-  return function createFolderWithReference(_x4, _x5, _x6) {
-    return _ref2.apply(this, arguments);
-  };
-}();
-/**
- * Returns the most recent folder referenced by the given document
- *
- * @param  {CozyClient}  client    cozy-client instance
- * @param  {import("../types").CozyClientDocument}  document  Document to get references from
- * @returns {Promise<import("../types").IOCozyFolder>} Folder referenced by the given document
- */
-
-
-exports.createFolderWithReference = createFolderWithReference;
-
-var getReferencedFolder = /*#__PURE__*/function () {
-  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(client, document) {
-    var _yield$client$collect, included, foldersOutsideTrash;
-
-    return _regenerator.default.wrap(function _callee3$(_context3) {
-      while (1) {
-        switch (_context3.prev = _context3.next) {
-          case 0:
-            _context3.next = 2;
-            return client.collection(_const.DOCTYPE_FILES).findReferencedBy(document);
-
-          case 2:
-            _yield$client$collect = _context3.sent;
-            included = _yield$client$collect.included;
-            foldersOutsideTrash = included.filter(function (folder) {
-              return !/^\/\.cozy_trash/.test(folder.attributes.path);
-            }); // there can be multiple folders with the same reference in some edge cases
-            // when this happens we return the most recent one
-
-            return _context3.abrupt("return", foldersOutsideTrash.length > 0 ? (0, _sortBy.default)(foldersOutsideTrash, 'created_at').pop() : null);
-
-          case 6:
-          case "end":
-            return _context3.stop();
-        }
-      }
-    }, _callee3);
-  }));
-
-  return function getReferencedFolder(_x7, _x8) {
-    return _ref3.apply(this, arguments);
-  };
-}();
-
-exports.getReferencedFolder = getReferencedFolder;
-
-/***/ }),
-/* 751 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseFlatten = __webpack_require__(420),
-    baseOrderBy = __webpack_require__(646),
-    baseRest = __webpack_require__(433),
-    isIterateeCall = __webpack_require__(539);
-
-/**
- * Creates an array of elements, sorted in ascending order by the results of
- * running each element in a collection thru each iteratee. This method
- * performs a stable sort, that is, it preserves the original sort order of
- * equal elements. The iteratees are invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {...(Function|Function[])} [iteratees=[_.identity]]
- *  The iteratees to sort by.
- * @returns {Array} Returns the new sorted array.
- * @example
- *
- * var users = [
- *   { 'user': 'fred',   'age': 48 },
- *   { 'user': 'barney', 'age': 36 },
- *   { 'user': 'fred',   'age': 30 },
- *   { 'user': 'barney', 'age': 34 }
- * ];
- *
- * _.sortBy(users, [function(o) { return o.user; }]);
- * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]
- *
- * _.sortBy(users, ['user', 'age']);
- * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]
- */
-var sortBy = baseRest(function(collection, iteratees) {
-  if (collection == null) {
-    return [];
-  }
-  var length = iteratees.length;
-  if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
-    iteratees = [];
-  } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
-    iteratees = [iteratees[0]];
-  }
-  return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
-});
-
-module.exports = sortBy;
-
-
-/***/ }),
-/* 752 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.fetchURL = exports.generateUrlForNote = exports.generatePrivateUrl = void 0;
-
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
-
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
-
-var _helpers = __webpack_require__(663);
-
-var _logger = _interopRequireDefault(__webpack_require__(498));
-
-/**
- *
- * @param {string} notesAppUrl URL to the Notes App (https://notes.foo.mycozy.cloud)
- * @param {object} file io.cozy.files object
- */
-var generatePrivateUrl = function generatePrivateUrl(notesAppUrl, file) {
-  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-  var returnUrl = options.returnUrl;
-  var url = new URL(notesAppUrl);
-
-  if (returnUrl) {
-    url.searchParams.set('returnUrl', returnUrl);
-  }
-
-  url.hash = "#/n/".concat(file.id);
-  return url.toString();
-};
-
-exports.generatePrivateUrl = generatePrivateUrl;
-
-var generateUrlForNote = function generateUrlForNote(notesAppUrl, file) {
-  _logger.default.warn('generateUrlForNote is deprecated. Please use models.note.generatePrivateUrl instead');
-
-  return generatePrivateUrl(notesAppUrl, file);
-};
-/**
- * Fetch and build an URL to open a note.
- *
- * @param {object} client CozyClient instance
- * @param {object} file io.cozy.file object
- * @returns {Promise<string>} url
- */
-
-
-exports.generateUrlForNote = generateUrlForNote;
-
-var fetchURL = /*#__PURE__*/function () {
-  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client, file) {
-    var _yield$client$getStac, _yield$client$getStac2, note_id, subdomain, protocol, instance, sharecode, public_name, searchParams;
-
-    return _regenerator.default.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            _context.next = 2;
-            return client.getStackClient().collection('io.cozy.notes').fetchURL({
-              _id: file.id
-            });
-
-          case 2:
-            _yield$client$getStac = _context.sent;
-            _yield$client$getStac2 = _yield$client$getStac.data;
-            note_id = _yield$client$getStac2.note_id;
-            subdomain = _yield$client$getStac2.subdomain;
-            protocol = _yield$client$getStac2.protocol;
-            instance = _yield$client$getStac2.instance;
-            sharecode = _yield$client$getStac2.sharecode;
-            public_name = _yield$client$getStac2.public_name;
-
-            if (!sharecode) {
-              _context.next = 17;
-              break;
-            }
-
-            searchParams = [['id', note_id]];
-            searchParams.push(['sharecode', sharecode]);
-            if (public_name) searchParams.push(['username', public_name]);
-            return _context.abrupt("return", (0, _helpers.generateWebLink)({
-              cozyUrl: "".concat(protocol, "://").concat(instance),
-              searchParams: searchParams,
-              pathname: '/public/',
-              slug: 'notes',
-              subDomainType: subdomain
-            }));
-
-          case 17:
-            return _context.abrupt("return", (0, _helpers.generateWebLink)({
-              cozyUrl: "".concat(protocol, "://").concat(instance),
-              pathname: '',
-              slug: 'notes',
-              subDomainType: subdomain,
-              hash: "/n/".concat(note_id)
-            }));
-
-          case 18:
-          case "end":
-            return _context.stop();
-        }
-      }
-    }, _callee);
-  }));
-
-  return function fetchURL(_x, _x2) {
-    return _ref.apply(this, arguments);
-  };
-}();
-
-exports.fetchURL = fetchURL;
-
-/***/ }),
-/* 753 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.isReadOnly = isReadOnly;
-exports.fetchOwn = fetchOwn;
-exports.isForType = isForType;
-exports.isDocumentReadOnly = isDocumentReadOnly;
-exports.isShortcutCreatedOnTheRecipientCozy = void 0;
-
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
-
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
-
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
-
-var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
-
-var _intersection = _interopRequireDefault(__webpack_require__(641));
-
-var _get = _interopRequireDefault(__webpack_require__(399));
-
-var _CozyClient = _interopRequireDefault(__webpack_require__(279));
-
-var _dsl = __webpack_require__(495);
-
-var _file = __webpack_require__(745);
-
-var _const = __webpack_require__(619);
-
-var _logger = _interopRequireDefault(__webpack_require__(498));
-
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-/**
- * @typedef {object} Document - Couchdb document like an io.cozy.files
- * @property {string} _id
- * @property {string} id
- * @property {string} _type
- * @property {string} type
- */
-
-/**
- * @typedef {('ALL'|'GET'|'PATCH'|'POST'|'PUT'|'DELETE')} PermissionVerb
- */
-
-/**
- * @typedef {object} PermissionItem
- * @property {PermissionVerb[]} verbs - ALL, GET, PUT, PATCH, DELETE, POST…
- * @property {string} selector - defaults to `id`
- * @property {string[]} values
- * @property {string} type - a couch db database like 'io.cozy.files'
- */
-
-/**
- * Is this permission read only ?
- *
- * @private
- * @param {PermissionItem} perm - permission node in a io.cozy.permissions document
- * @param {object} options - Options
- * @param {PermissionVerb[]} [options.writability] - Writability
- * @returns {boolean} true if the note should be displayed read-only
- */
-function isReadOnly(perm) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  var _options$writability = options.writability,
-      writability = _options$writability === void 0 ? ['PATCH', 'POST', 'PUT', 'DELETE'] : _options$writability;
-  return perm.verbs && // no verbs is equivalent to ['ALL']
-  perm.verbs.length > 0 && // empty array is equivalent to ['ALL']
-  (0, _intersection.default)(perm.verbs, ['ALL'].concat((0, _toConsumableArray2.default)(writability))).length === 0;
-}
-/**
- * Fetches the list of permissions blocks
- *
- * @param {CozyClient} client -
- * @returns {Promise<PermissionItem[]>} list of permissions
- */
-
-
-function fetchOwn(_x) {
-  return _fetchOwn.apply(this, arguments);
-}
-/**
- * Checks if the permission item is about a specific doctype
- *
- * @param {PermissionItem} permission -
- * @param {string} type - doctype
- */
-
-
-function _fetchOwn() {
-  _fetchOwn = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client) {
-    var collection, data, permissions;
-    return _regenerator.default.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            collection = client.collection('io.cozy.permissions');
-            _context.next = 3;
-            return collection.fetchOwnPermissions();
-
-          case 3:
-            data = _context.sent;
-            permissions = (0, _get.default)(data, 'data.attributes.permissions');
-
-            if (permissions) {
-              _context.next = 7;
-              break;
-            }
-
-            throw "Can't get self permissions";
-
-          case 7:
-            return _context.abrupt("return", Object.values(permissions));
-
-          case 8:
-          case "end":
-            return _context.stop();
-        }
-      }
-    }, _callee);
-  }));
-  return _fetchOwn.apply(this, arguments);
-}
-
-function isForType(permission, type) {
-  return permission.type === type || permission.type + '.*' === type;
-}
-/**
- * Finds the permission block for the the file
- * in the permissions owned by the current cozy-client.
- *
- * Iterates through parent folders if needed
- * until we can find the permissions attached to the share
- *
- * @private
- * @param {object} options - Options
- * @param {Document} options.document - a couchdb document
- * @param {CozyClient} options.client - A cozy client
- * @param {PermissionItem[]} options.permissions -
- * @returns {Promise<PermissionItem|undefined>} the corresponding permission block
- */
-
-
-function findPermissionFor(_x2) {
-  return _findPermissionFor2.apply(this, arguments);
-}
-
-function _findPermissionFor2() {
-  _findPermissionFor2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(options) {
-    var document, client, permissions, id, type, doc, definedPermissions, perms, getFile, _getFile, _findPermissionFor, _findPermissionFor3;
-
-    return _regenerator.default.wrap(function _callee4$(_context4) {
-      while (1) {
-        switch (_context4.prev = _context4.next) {
-          case 0:
-            _findPermissionFor3 = function _findPermissionFor5() {
-              _findPermissionFor3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(_ref) {
-                var doc, client, perms, perm, parentId, parentFolder;
-                return _regenerator.default.wrap(function _callee3$(_context3) {
-                  while (1) {
-                    switch (_context3.prev = _context3.next) {
-                      case 0:
-                        doc = _ref.doc, client = _ref.client, perms = _ref.perms;
-                        perm = perms.find(function (perm) {
-                          if (perm.values) {
-                            var selector = perm.selector || 'id';
-                            var value = doc[selector];
-                            return perm.values.includes(value);
-                          } else {
-                            return true;
-                          }
-                        });
-
-                        if (!perm) {
-                          _context3.next = 6;
-                          break;
-                        }
-
-                        return _context3.abrupt("return", perm);
-
-                      case 6:
-                        if (!(type === _const.DOCTYPE_FILES)) {
-                          _context3.next = 16;
-                          break;
-                        }
-
-                        // for files, we recursively try to check for parent folders
-                        parentId = (0, _file.getParentFolderId)(doc);
-                        _context3.t0 = parentId;
-
-                        if (!_context3.t0) {
-                          _context3.next = 13;
-                          break;
-                        }
-
-                        _context3.next = 12;
-                        return getFile(parentId);
-
-                      case 12:
-                        _context3.t0 = _context3.sent;
-
-                      case 13:
-                        parentFolder = _context3.t0;
-
-                        if (!parentFolder) {
-                          _context3.next = 16;
-                          break;
-                        }
-
-                        return _context3.abrupt("return", _findPermissionFor({
-                          doc: parentFolder,
-                          perms: perms,
-                          client: client
-                        }));
-
-                      case 16:
-                        return _context3.abrupt("return", undefined);
-
-                      case 17:
-                      case "end":
-                        return _context3.stop();
-                    }
-                  }
-                }, _callee3);
-              }));
-              return _findPermissionFor3.apply(this, arguments);
-            };
-
-            _findPermissionFor = function _findPermissionFor4(_x5) {
-              return _findPermissionFor3.apply(this, arguments);
-            };
-
-            _getFile = function _getFile3() {
-              _getFile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(id) {
-                var query, data;
-                return _regenerator.default.wrap(function _callee2$(_context2) {
-                  while (1) {
-                    switch (_context2.prev = _context2.next) {
-                      case 0:
-                        query = (0, _dsl.Q)(_const.DOCTYPE_FILES).getById(id);
-                        _context2.next = 3;
-                        return client.query(query);
-
-                      case 3:
-                        data = _context2.sent;
-                        return _context2.abrupt("return", data && data.data);
-
-                      case 5:
-                      case "end":
-                        return _context2.stop();
-                    }
-                  }
-                }, _callee2);
-              }));
-              return _getFile.apply(this, arguments);
-            };
-
-            getFile = function _getFile2(_x4) {
-              return _getFile.apply(this, arguments);
-            };
-
-            document = options.document, client = options.client, permissions = options.permissions;
-            id = document._id || document.id;
-            type = document._type || document.type;
-            doc = _objectSpread(_objectSpread({}, document), {}, {
-              id: id,
-              type: type
-            });
-
-            if (!permissions) {
-              _context4.next = 12;
-              break;
-            }
-
-            _context4.t0 = permissions;
-            _context4.next = 15;
-            break;
-
-          case 12:
-            _context4.next = 14;
-            return fetchOwn(client);
-
-          case 14:
-            _context4.t0 = _context4.sent;
-
-          case 15:
-            definedPermissions = _context4.t0;
-            perms = definedPermissions.filter(function (p) {
-              return isForType(p, type);
-            });
-            return _context4.abrupt("return", _findPermissionFor({
-              doc: doc,
-              client: client,
-              perms: perms
-            }));
-
-          case 18:
-          case "end":
-            return _context4.stop();
-        }
-      }
-    }, _callee4);
-  }));
-  return _findPermissionFor2.apply(this, arguments);
-}
-
-function isDocumentReadOnly(_x3) {
-  return _isDocumentReadOnly.apply(this, arguments);
-}
-/**
- * When a cozy to cozy sharing is created Cozy's stack creates a
- * shortcut in `/Inbox of sharing` on the recipient's cozy to have a
- * quick access even when the sharing is not accepted yet.
- *
- * However, this file is created only if the stack knows the URL of the cozy.
- * This is not always the case.
- *
- * This method is here to tell us if the shortcut's file is created
- * on the recipient's cozy. It can be used to make an UI distinction between the
- * both situation.
- *
- * @typedef  {object} Permission
- * @property {object} data Permission document
- * @property {Array} included Member information from the sharing
- *
- * @param {Permission} permission From getOwnPermissions mainly
- */
-
-
-function _isDocumentReadOnly() {
-  _isDocumentReadOnly = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(args) {
-    var document, client, writability, _args$permissions, permissions, perm;
-
-    return _regenerator.default.wrap(function _callee5$(_context5) {
-      while (1) {
-        switch (_context5.prev = _context5.next) {
-          case 0:
-            document = args.document;
-            client = args.client;
-            writability = args.writability;
-            _args$permissions = args.permissions;
-
-            if (!(_args$permissions === void 0)) {
-              _context5.next = 10;
-              break;
-            }
-
-            _context5.next = 7;
-            return fetchOwn(client);
-
-          case 7:
-            _context5.t0 = _context5.sent;
-            _context5.next = 11;
-            break;
-
-          case 10:
-            _context5.t0 = _args$permissions;
-
-          case 11:
-            permissions = _context5.t0;
-
-            if (!(permissions.length <= 1)) {
-              _context5.next = 16;
-              break;
-            }
-
-            _context5.t1 = permissions[0] // shortcut because most of time, there will be only one permission block
-            ;
-            _context5.next = 19;
-            break;
-
-          case 16:
-            _context5.next = 18;
-            return findPermissionFor({
-              document: document,
-              client: client,
-              permissions: permissions
-            });
-
-          case 18:
-            _context5.t1 = _context5.sent;
-
-          case 19:
-            perm = _context5.t1;
-
-            if (!perm) {
-              _context5.next = 24;
-              break;
-            }
-
-            return _context5.abrupt("return", isReadOnly(perm, {
-              writability: writability
-            }));
-
-          case 24:
-            _logger.default.warn("can't find the document in current attached permissions");
-
-            return _context5.abrupt("return", undefined);
-
-          case 26:
-          case "end":
-            return _context5.stop();
-        }
-      }
-    }, _callee5);
-  }));
-  return _isDocumentReadOnly.apply(this, arguments);
-}
-
-var isShortcutCreatedOnTheRecipientCozy = function isShortcutCreatedOnTheRecipientCozy(permission) {
-  if (!permission.included) return false;
-  var sharingMember = permission.included.find(function (item) {
-    return item.type === 'io.cozy.sharings.members';
-  });
-
-  if (sharingMember && sharingMember.attributes.instance) {
-    return true;
-  }
 
-  return false;
-};
+/***/ }),
+/* 734 */
+/***/ (function(module, exports) {
 
-exports.isShortcutCreatedOnTheRecipientCozy = isShortcutCreatedOnTheRecipientCozy;
+module.exports = require("punycode");
 
 /***/ }),
-/* 754 */
+/* 735 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.getCreatedByApp = exports.hasBeenUpdatedByApp = void 0;
-
-var _get = _interopRequireDefault(__webpack_require__(399));
+var punycode = __webpack_require__(734);
+var mappingTable = __webpack_require__(736);
 
-var hasBeenUpdatedByApp = function hasBeenUpdatedByApp(doc, appSlug) {
-  var updatedByApps = (0, _get.default)(doc, 'cozyMetadata.updatedByApps');
-  return Boolean(updatedByApps && updatedByApps.find(function (x) {
-    return x.slug === appSlug;
-  }));
+var PROCESSING_OPTIONS = {
+  TRANSITIONAL: 0,
+  NONTRANSITIONAL: 1
 };
 
-exports.hasBeenUpdatedByApp = hasBeenUpdatedByApp;
-
-var getCreatedByApp = function getCreatedByApp(doc) {
-  return (0, _get.default)(doc, 'cozyMetadata.createdByApp');
-};
+function normalize(str) { // fix bug in v8
+  return str.split('\u0000').map(function (s) { return s.normalize('NFC'); }).join('\u0000');
+}
 
-exports.getCreatedByApp = getCreatedByApp;
+function findStatus(val) {
+  var start = 0;
+  var end = mappingTable.length - 1;
 
-/***/ }),
-/* 755 */
-/***/ (function(module, exports, __webpack_require__) {
+  while (start <= end) {
+    var mid = Math.floor((start + end) / 2);
 
-"use strict";
+    var target = mappingTable[mid];
+    if (target[0][0] <= val && target[0][1] >= val) {
+      return target;
+    } else if (target[0][0] > val) {
+      end = mid - 1;
+    } else {
+      start = mid + 1;
+    }
+  }
 
+  return null;
+}
 
-var _interopRequireDefault = __webpack_require__(1);
+var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.isContact = exports.getIndexByFamilyNameGivenNameEmailCozyUrl = exports.getDefaultSortIndexValue = exports.makeDefaultSortIndexValue = exports.getDisplayName = exports.makeDisplayName = exports.getFullname = exports.makeFullname = exports.getPrimaryAddress = exports.getPrimaryPhone = exports.getPrimaryCozyDomain = exports.getPrimaryCozy = exports.getPrimaryEmail = exports.getInitials = exports.getPrimaryOrFirst = exports.CONTACTS_DOCTYPE = void 0;
+function countSymbols(string) {
+  return string
+    // replace every surrogate pair with a BMP symbol
+    .replace(regexAstralSymbols, '_')
+    // then get the length
+    .length;
+}
 
-var _get = _interopRequireDefault(__webpack_require__(399));
+function mapChars(domain_name, useSTD3, processing_option) {
+  var hasError = false;
+  var processed = "";
 
-var _isEmpty = _interopRequireDefault(__webpack_require__(756));
+  var len = countSymbols(domain_name);
+  for (var i = 0; i < len; ++i) {
+    var codePoint = domain_name.codePointAt(i);
+    var status = findStatus(codePoint);
 
-var _logger = _interopRequireDefault(__webpack_require__(498));
+    switch (status[1]) {
+      case "disallowed":
+        hasError = true;
+        processed += String.fromCodePoint(codePoint);
+        break;
+      case "ignored":
+        break;
+      case "mapped":
+        processed += String.fromCodePoint.apply(String, status[2]);
+        break;
+      case "deviation":
+        if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {
+          processed += String.fromCodePoint.apply(String, status[2]);
+        } else {
+          processed += String.fromCodePoint(codePoint);
+        }
+        break;
+      case "valid":
+        processed += String.fromCodePoint(codePoint);
+        break;
+      case "disallowed_STD3_mapped":
+        if (useSTD3) {
+          hasError = true;
+          processed += String.fromCodePoint(codePoint);
+        } else {
+          processed += String.fromCodePoint.apply(String, status[2]);
+        }
+        break;
+      case "disallowed_STD3_valid":
+        if (useSTD3) {
+          hasError = true;
+        }
 
-var CONTACTS_DOCTYPE = 'io.cozy.contacts';
-exports.CONTACTS_DOCTYPE = CONTACTS_DOCTYPE;
+        processed += String.fromCodePoint(codePoint);
+        break;
+    }
+  }
 
-var getPrimaryOrFirst = function getPrimaryOrFirst(property) {
-  return function (obj) {
-    return !obj[property] || obj[property].length === 0 ? '' : obj[property].find(function (property) {
-      return property.primary;
-    }) || obj[property][0];
+  return {
+    string: processed,
+    error: hasError
   };
-};
-/**
- * Returns the initials of the contact.
- *
- * @param {object} contact - A contact
- * @returns {string} - the contact's initials
- */
-
+}
 
-exports.getPrimaryOrFirst = getPrimaryOrFirst;
+var combiningMarksRegex = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/;
 
-var getInitials = function getInitials(contact) {
-  if (contact.name && !(0, _isEmpty.default)(contact.name)) {
-    return ['givenName', 'familyName'].map(function (part) {
-      return (0, _get.default)(contact, ['name', part, 0], '');
-    }).join('').toUpperCase();
+function validateLabel(label, processing_option) {
+  if (label.substr(0, 4) === "xn--") {
+    label = punycode.toUnicode(label);
+    processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;
   }
 
-  var email = getPrimaryEmail(contact);
+  var error = false;
 
-  if (email) {
-    return email[0].toUpperCase();
+  if (normalize(label) !== label ||
+      (label[3] === "-" && label[4] === "-") ||
+      label[0] === "-" || label[label.length - 1] === "-" ||
+      label.indexOf(".") !== -1 ||
+      label.search(combiningMarksRegex) === 0) {
+    error = true;
   }
 
-  var cozy = getPrimaryCozyDomain(contact);
-
-  if (cozy) {
-    return cozy[0].toUpperCase();
+  var len = countSymbols(label);
+  for (var i = 0; i < len; ++i) {
+    var status = findStatus(label.codePointAt(i));
+    if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== "valid") ||
+        (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&
+         status[1] !== "valid" && status[1] !== "deviation")) {
+      error = true;
+      break;
+    }
   }
 
-  return '';
-};
-/**
- * Returns the contact's main email
- *
- * @param {object} contact - A contact
- * @returns {string} - The contact's main email
- */
-
-
-exports.getInitials = getInitials;
-
-var getPrimaryEmail = function getPrimaryEmail(contact) {
-  return Array.isArray(contact.email) ? getPrimaryOrFirst('email')(contact).address || '' : contact.email;
-};
-/**
- * Returns the contact's main cozy
- *
- * @param {object} contact - A contact
- * @returns {string} - The contact's main cozy
- */
-
-
-exports.getPrimaryEmail = getPrimaryEmail;
-
-var getPrimaryCozy = function getPrimaryCozy(contact) {
-  return Array.isArray(contact.cozy) ? getPrimaryOrFirst('cozy')(contact).url || '' : contact.url;
-};
-/**
- * Returns the contact's main cozy url without protocol
- *
- * @param {object} contact - A contact
- * @returns {string} - The contact's main cozy url
- */
-
+  return {
+    label: label,
+    error: error
+  };
+}
 
-exports.getPrimaryCozy = getPrimaryCozy;
+function processing(domain_name, useSTD3, processing_option) {
+  var result = mapChars(domain_name, useSTD3, processing_option);
+  result.string = normalize(result.string);
 
-var getPrimaryCozyDomain = function getPrimaryCozyDomain(contact) {
-  try {
-    var url = new URL(getPrimaryCozy(contact));
-    return url.hostname.replace(/^(www.)/g, '');
-  } catch (_unused) {
-    return getPrimaryCozy(contact);
+  var labels = result.string.split(".");
+  for (var i = 0; i < labels.length; ++i) {
+    try {
+      var validation = validateLabel(labels[i]);
+      labels[i] = validation.label;
+      result.error = result.error || validation.error;
+    } catch(e) {
+      result.error = true;
+    }
   }
-};
-/**
- * Returns the contact's main phone number
- *
- * @param {object} contact - A contact
- * @returns {string} - The contact's main phone number
- */
-
 
-exports.getPrimaryCozyDomain = getPrimaryCozyDomain;
+  return {
+    string: labels.join("."),
+    error: result.error
+  };
+}
 
-var getPrimaryPhone = function getPrimaryPhone(contact) {
-  return getPrimaryOrFirst('phone')(contact).number || '';
-};
-/**
- * Returns the contact's main address
- *
- * @param {object} contact - A contact
- * @returns {string} - The contact's main address
- */
+module.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {
+  var result = processing(domain_name, useSTD3, processing_option);
+  var labels = result.string.split(".");
+  labels = labels.map(function(l) {
+    try {
+      return punycode.toASCII(l);
+    } catch(e) {
+      result.error = true;
+      return l;
+    }
+  });
 
+  if (verifyDnsLength) {
+    var total = labels.slice(0, labels.length - 1).join(".").length;
+    if (total.length > 253 || total.length === 0) {
+      result.error = true;
+    }
 
-exports.getPrimaryPhone = getPrimaryPhone;
+    for (var i=0; i < labels.length; ++i) {
+      if (labels.length > 63 || labels.length === 0) {
+        result.error = true;
+        break;
+      }
+    }
+  }
 
-var getPrimaryAddress = function getPrimaryAddress(contact) {
-  return getPrimaryOrFirst('address')(contact).formattedAddress || '';
+  if (result.error) return null;
+  return labels.join(".");
 };
-/**
- * Makes fullname from contact name
- *
- * @param {*} contact - A contact
- * @returns {string} - The contact's fullname
- */
-
-
-exports.getPrimaryAddress = getPrimaryAddress;
 
-var makeFullname = function makeFullname(contact) {
-  if (contact.name) {
-    return ['namePrefix', 'givenName', 'additionalName', 'familyName', 'nameSuffix'].map(function (part) {
-      return contact.name[part];
-    }).filter(function (part) {
-      return part !== undefined;
-    }).join(' ').trim();
-  }
+module.exports.toUnicode = function(domain_name, useSTD3) {
+  var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);
 
-  return '';
+  return {
+    domain: result.string,
+    error: result.error
+  };
 };
-/**
- * Returns the contact's fullname
- *
- * @param {object} contact - A contact
- * @returns {string} - The contact's fullname
- */
-
 
-exports.makeFullname = makeFullname;
+module.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;
 
-var getFullname = function getFullname(contact) {
-  if ((0, _get.default)(contact, 'fullname')) {
-    return contact.fullname;
-  }
 
-  return makeFullname(contact);
-};
-/**
- * Makes displayName from contact data
- *
- * @param {*} contact - A contact
- * @returns {string} - The contact's displayName
- */
+/***/ }),
+/* 736 */
+/***/ (function(module) {
 
+module.exports = JSON.parse("[[[0,44],\"disallowed_STD3_valid\"],[[45,46],\"valid\"],[[47,47],\"disallowed_STD3_valid\"],[[48,57],\"valid\"],[[58,64],\"disallowed_STD3_valid\"],[[65,65],\"mapped\",[97]],[[66,66],\"mapped\",[98]],[[67,67],\"mapped\",[99]],[[68,68],\"mapped\",[100]],[[69,69],\"mapped\",[101]],[[70,70],\"mapped\",[102]],[[71,71],\"mapped\",[103]],[[72,72],\"mapped\",[104]],[[73,73],\"mapped\",[105]],[[74,74],\"mapped\",[106]],[[75,75],\"mapped\",[107]],[[76,76],\"mapped\",[108]],[[77,77],\"mapped\",[109]],[[78,78],\"mapped\",[110]],[[79,79],\"mapped\",[111]],[[80,80],\"mapped\",[112]],[[81,81],\"mapped\",[113]],[[82,82],\"mapped\",[114]],[[83,83],\"mapped\",[115]],[[84,84],\"mapped\",[116]],[[85,85],\"mapped\",[117]],[[86,86],\"mapped\",[118]],[[87,87],\"mapped\",[119]],[[88,88],\"mapped\",[120]],[[89,89],\"mapped\",[121]],[[90,90],\"mapped\",[122]],[[91,96],\"disallowed_STD3_valid\"],[[97,122],\"valid\"],[[123,127],\"disallowed_STD3_valid\"],[[128,159],\"disallowed\"],[[160,160],\"disallowed_STD3_mapped\",[32]],[[161,167],\"valid\",[],\"NV8\"],[[168,168],\"disallowed_STD3_mapped\",[32,776]],[[169,169],\"valid\",[],\"NV8\"],[[170,170],\"mapped\",[97]],[[171,172],\"valid\",[],\"NV8\"],[[173,173],\"ignored\"],[[174,174],\"valid\",[],\"NV8\"],[[175,175],\"disallowed_STD3_mapped\",[32,772]],[[176,177],\"valid\",[],\"NV8\"],[[178,178],\"mapped\",[50]],[[179,179],\"mapped\",[51]],[[180,180],\"disallowed_STD3_mapped\",[32,769]],[[181,181],\"mapped\",[956]],[[182,182],\"valid\",[],\"NV8\"],[[183,183],\"valid\"],[[184,184],\"disallowed_STD3_mapped\",[32,807]],[[185,185],\"mapped\",[49]],[[186,186],\"mapped\",[111]],[[187,187],\"valid\",[],\"NV8\"],[[188,188],\"mapped\",[49,8260,52]],[[189,189],\"mapped\",[49,8260,50]],[[190,190],\"mapped\",[51,8260,52]],[[191,191],\"valid\",[],\"NV8\"],[[192,192],\"mapped\",[224]],[[193,193],\"mapped\",[225]],[[194,194],\"mapped\",[226]],[[195,195],\"mapped\",[227]],[[196,196],\"mapped\",[228]],[[197,197],\"mapped\",[229]],[[198,198],\"mapped\",[230]],[[199,199],\"mapped\",[231]],[[200,200],\"mapped\",[232]],[[201,201],\"mapped\",[233]],[[202,202],\"mapped\",[234]],[[203,203],\"mapped\",[235]],[[204,204],\"mapped\",[236]],[[205,205],\"mapped\",[237]],[[206,206],\"mapped\",[238]],[[207,207],\"mapped\",[239]],[[208,208],\"mapped\",[240]],[[209,209],\"mapped\",[241]],[[210,210],\"mapped\",[242]],[[211,211],\"mapped\",[243]],[[212,212],\"mapped\",[244]],[[213,213],\"mapped\",[245]],[[214,214],\"mapped\",[246]],[[215,215],\"valid\",[],\"NV8\"],[[216,216],\"mapped\",[248]],[[217,217],\"mapped\",[249]],[[218,218],\"mapped\",[250]],[[219,219],\"mapped\",[251]],[[220,220],\"mapped\",[252]],[[221,221],\"mapped\",[253]],[[222,222],\"mapped\",[254]],[[223,223],\"deviation\",[115,115]],[[224,246],\"valid\"],[[247,247],\"valid\",[],\"NV8\"],[[248,255],\"valid\"],[[256,256],\"mapped\",[257]],[[257,257],\"valid\"],[[258,258],\"mapped\",[259]],[[259,259],\"valid\"],[[260,260],\"mapped\",[261]],[[261,261],\"valid\"],[[262,262],\"mapped\",[263]],[[263,263],\"valid\"],[[264,264],\"mapped\",[265]],[[265,265],\"valid\"],[[266,266],\"mapped\",[267]],[[267,267],\"valid\"],[[268,268],\"mapped\",[269]],[[269,269],\"valid\"],[[270,270],\"mapped\",[271]],[[271,271],\"valid\"],[[272,272],\"mapped\",[273]],[[273,273],\"valid\"],[[274,274],\"mapped\",[275]],[[275,275],\"valid\"],[[276,276],\"mapped\",[277]],[[277,277],\"valid\"],[[278,278],\"mapped\",[279]],[[279,279],\"valid\"],[[280,280],\"mapped\",[281]],[[281,281],\"valid\"],[[282,282],\"mapped\",[283]],[[283,283],\"valid\"],[[284,284],\"mapped\",[285]],[[285,285],\"valid\"],[[286,286],\"mapped\",[287]],[[287,287],\"valid\"],[[288,288],\"mapped\",[289]],[[289,289],\"valid\"],[[290,290],\"mapped\",[291]],[[291,291],\"valid\"],[[292,292],\"mapped\",[293]],[[293,293],\"valid\"],[[294,294],\"mapped\",[295]],[[295,295],\"valid\"],[[296,296],\"mapped\",[297]],[[297,297],\"valid\"],[[298,298],\"mapped\",[299]],[[299,299],\"valid\"],[[300,300],\"mapped\",[301]],[[301,301],\"valid\"],[[302,302],\"mapped\",[303]],[[303,303],\"valid\"],[[304,304],\"mapped\",[105,775]],[[305,305],\"valid\"],[[306,307],\"mapped\",[105,106]],[[308,308],\"mapped\",[309]],[[309,309],\"valid\"],[[310,310],\"mapped\",[311]],[[311,312],\"valid\"],[[313,313],\"mapped\",[314]],[[314,314],\"valid\"],[[315,315],\"mapped\",[316]],[[316,316],\"valid\"],[[317,317],\"mapped\",[318]],[[318,318],\"valid\"],[[319,320],\"mapped\",[108,183]],[[321,321],\"mapped\",[322]],[[322,322],\"valid\"],[[323,323],\"mapped\",[324]],[[324,324],\"valid\"],[[325,325],\"mapped\",[326]],[[326,326],\"valid\"],[[327,327],\"mapped\",[328]],[[328,328],\"valid\"],[[329,329],\"mapped\",[700,110]],[[330,330],\"mapped\",[331]],[[331,331],\"valid\"],[[332,332],\"mapped\",[333]],[[333,333],\"valid\"],[[334,334],\"mapped\",[335]],[[335,335],\"valid\"],[[336,336],\"mapped\",[337]],[[337,337],\"valid\"],[[338,338],\"mapped\",[339]],[[339,339],\"valid\"],[[340,340],\"mapped\",[341]],[[341,341],\"valid\"],[[342,342],\"mapped\",[343]],[[343,343],\"valid\"],[[344,344],\"mapped\",[345]],[[345,345],\"valid\"],[[346,346],\"mapped\",[347]],[[347,347],\"valid\"],[[348,348],\"mapped\",[349]],[[349,349],\"valid\"],[[350,350],\"mapped\",[351]],[[351,351],\"valid\"],[[352,352],\"mapped\",[353]],[[353,353],\"valid\"],[[354,354],\"mapped\",[355]],[[355,355],\"valid\"],[[356,356],\"mapped\",[357]],[[357,357],\"valid\"],[[358,358],\"mapped\",[359]],[[359,359],\"valid\"],[[360,360],\"mapped\",[361]],[[361,361],\"valid\"],[[362,362],\"mapped\",[363]],[[363,363],\"valid\"],[[364,364],\"mapped\",[365]],[[365,365],\"valid\"],[[366,366],\"mapped\",[367]],[[367,367],\"valid\"],[[368,368],\"mapped\",[369]],[[369,369],\"valid\"],[[370,370],\"mapped\",[371]],[[371,371],\"valid\"],[[372,372],\"mapped\",[373]],[[373,373],\"valid\"],[[374,374],\"mapped\",[375]],[[375,375],\"valid\"],[[376,376],\"mapped\",[255]],[[377,377],\"mapped\",[378]],[[378,378],\"valid\"],[[379,379],\"mapped\",[380]],[[380,380],\"valid\"],[[381,381],\"mapped\",[382]],[[382,382],\"valid\"],[[383,383],\"mapped\",[115]],[[384,384],\"valid\"],[[385,385],\"mapped\",[595]],[[386,386],\"mapped\",[387]],[[387,387],\"valid\"],[[388,388],\"mapped\",[389]],[[389,389],\"valid\"],[[390,390],\"mapped\",[596]],[[391,391],\"mapped\",[392]],[[392,392],\"valid\"],[[393,393],\"mapped\",[598]],[[394,394],\"mapped\",[599]],[[395,395],\"mapped\",[396]],[[396,397],\"valid\"],[[398,398],\"mapped\",[477]],[[399,399],\"mapped\",[601]],[[400,400],\"mapped\",[603]],[[401,401],\"mapped\",[402]],[[402,402],\"valid\"],[[403,403],\"mapped\",[608]],[[404,404],\"mapped\",[611]],[[405,405],\"valid\"],[[406,406],\"mapped\",[617]],[[407,407],\"mapped\",[616]],[[408,408],\"mapped\",[409]],[[409,411],\"valid\"],[[412,412],\"mapped\",[623]],[[413,413],\"mapped\",[626]],[[414,414],\"valid\"],[[415,415],\"mapped\",[629]],[[416,416],\"mapped\",[417]],[[417,417],\"valid\"],[[418,418],\"mapped\",[419]],[[419,419],\"valid\"],[[420,420],\"mapped\",[421]],[[421,421],\"valid\"],[[422,422],\"mapped\",[640]],[[423,423],\"mapped\",[424]],[[424,424],\"valid\"],[[425,425],\"mapped\",[643]],[[426,427],\"valid\"],[[428,428],\"mapped\",[429]],[[429,429],\"valid\"],[[430,430],\"mapped\",[648]],[[431,431],\"mapped\",[432]],[[432,432],\"valid\"],[[433,433],\"mapped\",[650]],[[434,434],\"mapped\",[651]],[[435,435],\"mapped\",[436]],[[436,436],\"valid\"],[[437,437],\"mapped\",[438]],[[438,438],\"valid\"],[[439,439],\"mapped\",[658]],[[440,440],\"mapped\",[441]],[[441,443],\"valid\"],[[444,444],\"mapped\",[445]],[[445,451],\"valid\"],[[452,454],\"mapped\",[100,382]],[[455,457],\"mapped\",[108,106]],[[458,460],\"mapped\",[110,106]],[[461,461],\"mapped\",[462]],[[462,462],\"valid\"],[[463,463],\"mapped\",[464]],[[464,464],\"valid\"],[[465,465],\"mapped\",[466]],[[466,466],\"valid\"],[[467,467],\"mapped\",[468]],[[468,468],\"valid\"],[[469,469],\"mapped\",[470]],[[470,470],\"valid\"],[[471,471],\"mapped\",[472]],[[472,472],\"valid\"],[[473,473],\"mapped\",[474]],[[474,474],\"valid\"],[[475,475],\"mapped\",[476]],[[476,477],\"valid\"],[[478,478],\"mapped\",[479]],[[479,479],\"valid\"],[[480,480],\"mapped\",[481]],[[481,481],\"valid\"],[[482,482],\"mapped\",[483]],[[483,483],\"valid\"],[[484,484],\"mapped\",[485]],[[485,485],\"valid\"],[[486,486],\"mapped\",[487]],[[487,487],\"valid\"],[[488,488],\"mapped\",[489]],[[489,489],\"valid\"],[[490,490],\"mapped\",[491]],[[491,491],\"valid\"],[[492,492],\"mapped\",[493]],[[493,493],\"valid\"],[[494,494],\"mapped\",[495]],[[495,496],\"valid\"],[[497,499],\"mapped\",[100,122]],[[500,500],\"mapped\",[501]],[[501,501],\"valid\"],[[502,502],\"mapped\",[405]],[[503,503],\"mapped\",[447]],[[504,504],\"mapped\",[505]],[[505,505],\"valid\"],[[506,506],\"mapped\",[507]],[[507,507],\"valid\"],[[508,508],\"mapped\",[509]],[[509,509],\"valid\"],[[510,510],\"mapped\",[511]],[[511,511],\"valid\"],[[512,512],\"mapped\",[513]],[[513,513],\"valid\"],[[514,514],\"mapped\",[515]],[[515,515],\"valid\"],[[516,516],\"mapped\",[517]],[[517,517],\"valid\"],[[518,518],\"mapped\",[519]],[[519,519],\"valid\"],[[520,520],\"mapped\",[521]],[[521,521],\"valid\"],[[522,522],\"mapped\",[523]],[[523,523],\"valid\"],[[524,524],\"mapped\",[525]],[[525,525],\"valid\"],[[526,526],\"mapped\",[527]],[[527,527],\"valid\"],[[528,528],\"mapped\",[529]],[[529,529],\"valid\"],[[530,530],\"mapped\",[531]],[[531,531],\"valid\"],[[532,532],\"mapped\",[533]],[[533,533],\"valid\"],[[534,534],\"mapped\",[535]],[[535,535],\"valid\"],[[536,536],\"mapped\",[537]],[[537,537],\"valid\"],[[538,538],\"mapped\",[539]],[[539,539],\"valid\"],[[540,540],\"mapped\",[541]],[[541,541],\"valid\"],[[542,542],\"mapped\",[543]],[[543,543],\"valid\"],[[544,544],\"mapped\",[414]],[[545,545],\"valid\"],[[546,546],\"mapped\",[547]],[[547,547],\"valid\"],[[548,548],\"mapped\",[549]],[[549,549],\"valid\"],[[550,550],\"mapped\",[551]],[[551,551],\"valid\"],[[552,552],\"mapped\",[553]],[[553,553],\"valid\"],[[554,554],\"mapped\",[555]],[[555,555],\"valid\"],[[556,556],\"mapped\",[557]],[[557,557],\"valid\"],[[558,558],\"mapped\",[559]],[[559,559],\"valid\"],[[560,560],\"mapped\",[561]],[[561,561],\"valid\"],[[562,562],\"mapped\",[563]],[[563,563],\"valid\"],[[564,566],\"valid\"],[[567,569],\"valid\"],[[570,570],\"mapped\",[11365]],[[571,571],\"mapped\",[572]],[[572,572],\"valid\"],[[573,573],\"mapped\",[410]],[[574,574],\"mapped\",[11366]],[[575,576],\"valid\"],[[577,577],\"mapped\",[578]],[[578,578],\"valid\"],[[579,579],\"mapped\",[384]],[[580,580],\"mapped\",[649]],[[581,581],\"mapped\",[652]],[[582,582],\"mapped\",[583]],[[583,583],\"valid\"],[[584,584],\"mapped\",[585]],[[585,585],\"valid\"],[[586,586],\"mapped\",[587]],[[587,587],\"valid\"],[[588,588],\"mapped\",[589]],[[589,589],\"valid\"],[[590,590],\"mapped\",[591]],[[591,591],\"valid\"],[[592,680],\"valid\"],[[681,685],\"valid\"],[[686,687],\"valid\"],[[688,688],\"mapped\",[104]],[[689,689],\"mapped\",[614]],[[690,690],\"mapped\",[106]],[[691,691],\"mapped\",[114]],[[692,692],\"mapped\",[633]],[[693,693],\"mapped\",[635]],[[694,694],\"mapped\",[641]],[[695,695],\"mapped\",[119]],[[696,696],\"mapped\",[121]],[[697,705],\"valid\"],[[706,709],\"valid\",[],\"NV8\"],[[710,721],\"valid\"],[[722,727],\"valid\",[],\"NV8\"],[[728,728],\"disallowed_STD3_mapped\",[32,774]],[[729,729],\"disallowed_STD3_mapped\",[32,775]],[[730,730],\"disallowed_STD3_mapped\",[32,778]],[[731,731],\"disallowed_STD3_mapped\",[32,808]],[[732,732],\"disallowed_STD3_mapped\",[32,771]],[[733,733],\"disallowed_STD3_mapped\",[32,779]],[[734,734],\"valid\",[],\"NV8\"],[[735,735],\"valid\",[],\"NV8\"],[[736,736],\"mapped\",[611]],[[737,737],\"mapped\",[108]],[[738,738],\"mapped\",[115]],[[739,739],\"mapped\",[120]],[[740,740],\"mapped\",[661]],[[741,745],\"valid\",[],\"NV8\"],[[746,747],\"valid\",[],\"NV8\"],[[748,748],\"valid\"],[[749,749],\"valid\",[],\"NV8\"],[[750,750],\"valid\"],[[751,767],\"valid\",[],\"NV8\"],[[768,831],\"valid\"],[[832,832],\"mapped\",[768]],[[833,833],\"mapped\",[769]],[[834,834],\"valid\"],[[835,835],\"mapped\",[787]],[[836,836],\"mapped\",[776,769]],[[837,837],\"mapped\",[953]],[[838,846],\"valid\"],[[847,847],\"ignored\"],[[848,855],\"valid\"],[[856,860],\"valid\"],[[861,863],\"valid\"],[[864,865],\"valid\"],[[866,866],\"valid\"],[[867,879],\"valid\"],[[880,880],\"mapped\",[881]],[[881,881],\"valid\"],[[882,882],\"mapped\",[883]],[[883,883],\"valid\"],[[884,884],\"mapped\",[697]],[[885,885],\"valid\"],[[886,886],\"mapped\",[887]],[[887,887],\"valid\"],[[888,889],\"disallowed\"],[[890,890],\"disallowed_STD3_mapped\",[32,953]],[[891,893],\"valid\"],[[894,894],\"disallowed_STD3_mapped\",[59]],[[895,895],\"mapped\",[1011]],[[896,899],\"disallowed\"],[[900,900],\"disallowed_STD3_mapped\",[32,769]],[[901,901],\"disallowed_STD3_mapped\",[32,776,769]],[[902,902],\"mapped\",[940]],[[903,903],\"mapped\",[183]],[[904,904],\"mapped\",[941]],[[905,905],\"mapped\",[942]],[[906,906],\"mapped\",[943]],[[907,907],\"disallowed\"],[[908,908],\"mapped\",[972]],[[909,909],\"disallowed\"],[[910,910],\"mapped\",[973]],[[911,911],\"mapped\",[974]],[[912,912],\"valid\"],[[913,913],\"mapped\",[945]],[[914,914],\"mapped\",[946]],[[915,915],\"mapped\",[947]],[[916,916],\"mapped\",[948]],[[917,917],\"mapped\",[949]],[[918,918],\"mapped\",[950]],[[919,919],\"mapped\",[951]],[[920,920],\"mapped\",[952]],[[921,921],\"mapped\",[953]],[[922,922],\"mapped\",[954]],[[923,923],\"mapped\",[955]],[[924,924],\"mapped\",[956]],[[925,925],\"mapped\",[957]],[[926,926],\"mapped\",[958]],[[927,927],\"mapped\",[959]],[[928,928],\"mapped\",[960]],[[929,929],\"mapped\",[961]],[[930,930],\"disallowed\"],[[931,931],\"mapped\",[963]],[[932,932],\"mapped\",[964]],[[933,933],\"mapped\",[965]],[[934,934],\"mapped\",[966]],[[935,935],\"mapped\",[967]],[[936,936],\"mapped\",[968]],[[937,937],\"mapped\",[969]],[[938,938],\"mapped\",[970]],[[939,939],\"mapped\",[971]],[[940,961],\"valid\"],[[962,962],\"deviation\",[963]],[[963,974],\"valid\"],[[975,975],\"mapped\",[983]],[[976,976],\"mapped\",[946]],[[977,977],\"mapped\",[952]],[[978,978],\"mapped\",[965]],[[979,979],\"mapped\",[973]],[[980,980],\"mapped\",[971]],[[981,981],\"mapped\",[966]],[[982,982],\"mapped\",[960]],[[983,983],\"valid\"],[[984,984],\"mapped\",[985]],[[985,985],\"valid\"],[[986,986],\"mapped\",[987]],[[987,987],\"valid\"],[[988,988],\"mapped\",[989]],[[989,989],\"valid\"],[[990,990],\"mapped\",[991]],[[991,991],\"valid\"],[[992,992],\"mapped\",[993]],[[993,993],\"valid\"],[[994,994],\"mapped\",[995]],[[995,995],\"valid\"],[[996,996],\"mapped\",[997]],[[997,997],\"valid\"],[[998,998],\"mapped\",[999]],[[999,999],\"valid\"],[[1000,1000],\"mapped\",[1001]],[[1001,1001],\"valid\"],[[1002,1002],\"mapped\",[1003]],[[1003,1003],\"valid\"],[[1004,1004],\"mapped\",[1005]],[[1005,1005],\"valid\"],[[1006,1006],\"mapped\",[1007]],[[1007,1007],\"valid\"],[[1008,1008],\"mapped\",[954]],[[1009,1009],\"mapped\",[961]],[[1010,1010],\"mapped\",[963]],[[1011,1011],\"valid\"],[[1012,1012],\"mapped\",[952]],[[1013,1013],\"mapped\",[949]],[[1014,1014],\"valid\",[],\"NV8\"],[[1015,1015],\"mapped\",[1016]],[[1016,1016],\"valid\"],[[1017,1017],\"mapped\",[963]],[[1018,1018],\"mapped\",[1019]],[[1019,1019],\"valid\"],[[1020,1020],\"valid\"],[[1021,1021],\"mapped\",[891]],[[1022,1022],\"mapped\",[892]],[[1023,1023],\"mapped\",[893]],[[1024,1024],\"mapped\",[1104]],[[1025,1025],\"mapped\",[1105]],[[1026,1026],\"mapped\",[1106]],[[1027,1027],\"mapped\",[1107]],[[1028,1028],\"mapped\",[1108]],[[1029,1029],\"mapped\",[1109]],[[1030,1030],\"mapped\",[1110]],[[1031,1031],\"mapped\",[1111]],[[1032,1032],\"mapped\",[1112]],[[1033,1033],\"mapped\",[1113]],[[1034,1034],\"mapped\",[1114]],[[1035,1035],\"mapped\",[1115]],[[1036,1036],\"mapped\",[1116]],[[1037,1037],\"mapped\",[1117]],[[1038,1038],\"mapped\",[1118]],[[1039,1039],\"mapped\",[1119]],[[1040,1040],\"mapped\",[1072]],[[1041,1041],\"mapped\",[1073]],[[1042,1042],\"mapped\",[1074]],[[1043,1043],\"mapped\",[1075]],[[1044,1044],\"mapped\",[1076]],[[1045,1045],\"mapped\",[1077]],[[1046,1046],\"mapped\",[1078]],[[1047,1047],\"mapped\",[1079]],[[1048,1048],\"mapped\",[1080]],[[1049,1049],\"mapped\",[1081]],[[1050,1050],\"mapped\",[1082]],[[1051,1051],\"mapped\",[1083]],[[1052,1052],\"mapped\",[1084]],[[1053,1053],\"mapped\",[1085]],[[1054,1054],\"mapped\",[1086]],[[1055,1055],\"mapped\",[1087]],[[1056,1056],\"mapped\",[1088]],[[1057,1057],\"mapped\",[1089]],[[1058,1058],\"mapped\",[1090]],[[1059,1059],\"mapped\",[1091]],[[1060,1060],\"mapped\",[1092]],[[1061,1061],\"mapped\",[1093]],[[1062,1062],\"mapped\",[1094]],[[1063,1063],\"mapped\",[1095]],[[1064,1064],\"mapped\",[1096]],[[1065,1065],\"mapped\",[1097]],[[1066,1066],\"mapped\",[1098]],[[1067,1067],\"mapped\",[1099]],[[1068,1068],\"mapped\",[1100]],[[1069,1069],\"mapped\",[1101]],[[1070,1070],\"mapped\",[1102]],[[1071,1071],\"mapped\",[1103]],[[1072,1103],\"valid\"],[[1104,1104],\"valid\"],[[1105,1116],\"valid\"],[[1117,1117],\"valid\"],[[1118,1119],\"valid\"],[[1120,1120],\"mapped\",[1121]],[[1121,1121],\"valid\"],[[1122,1122],\"mapped\",[1123]],[[1123,1123],\"valid\"],[[1124,1124],\"mapped\",[1125]],[[1125,1125],\"valid\"],[[1126,1126],\"mapped\",[1127]],[[1127,1127],\"valid\"],[[1128,1128],\"mapped\",[1129]],[[1129,1129],\"valid\"],[[1130,1130],\"mapped\",[1131]],[[1131,1131],\"valid\"],[[1132,1132],\"mapped\",[1133]],[[1133,1133],\"valid\"],[[1134,1134],\"mapped\",[1135]],[[1135,1135],\"valid\"],[[1136,1136],\"mapped\",[1137]],[[1137,1137],\"valid\"],[[1138,1138],\"mapped\",[1139]],[[1139,1139],\"valid\"],[[1140,1140],\"mapped\",[1141]],[[1141,1141],\"valid\"],[[1142,1142],\"mapped\",[1143]],[[1143,1143],\"valid\"],[[1144,1144],\"mapped\",[1145]],[[1145,1145],\"valid\"],[[1146,1146],\"mapped\",[1147]],[[1147,1147],\"valid\"],[[1148,1148],\"mapped\",[1149]],[[1149,1149],\"valid\"],[[1150,1150],\"mapped\",[1151]],[[1151,1151],\"valid\"],[[1152,1152],\"mapped\",[1153]],[[1153,1153],\"valid\"],[[1154,1154],\"valid\",[],\"NV8\"],[[1155,1158],\"valid\"],[[1159,1159],\"valid\"],[[1160,1161],\"valid\",[],\"NV8\"],[[1162,1162],\"mapped\",[1163]],[[1163,1163],\"valid\"],[[1164,1164],\"mapped\",[1165]],[[1165,1165],\"valid\"],[[1166,1166],\"mapped\",[1167]],[[1167,1167],\"valid\"],[[1168,1168],\"mapped\",[1169]],[[1169,1169],\"valid\"],[[1170,1170],\"mapped\",[1171]],[[1171,1171],\"valid\"],[[1172,1172],\"mapped\",[1173]],[[1173,1173],\"valid\"],[[1174,1174],\"mapped\",[1175]],[[1175,1175],\"valid\"],[[1176,1176],\"mapped\",[1177]],[[1177,1177],\"valid\"],[[1178,1178],\"mapped\",[1179]],[[1179,1179],\"valid\"],[[1180,1180],\"mapped\",[1181]],[[1181,1181],\"valid\"],[[1182,1182],\"mapped\",[1183]],[[1183,1183],\"valid\"],[[1184,1184],\"mapped\",[1185]],[[1185,1185],\"valid\"],[[1186,1186],\"mapped\",[1187]],[[1187,1187],\"valid\"],[[1188,1188],\"mapped\",[1189]],[[1189,1189],\"valid\"],[[1190,1190],\"mapped\",[1191]],[[1191,1191],\"valid\"],[[1192,1192],\"mapped\",[1193]],[[1193,1193],\"valid\"],[[1194,1194],\"mapped\",[1195]],[[1195,1195],\"valid\"],[[1196,1196],\"mapped\",[1197]],[[1197,1197],\"valid\"],[[1198,1198],\"mapped\",[1199]],[[1199,1199],\"valid\"],[[1200,1200],\"mapped\",[1201]],[[1201,1201],\"valid\"],[[1202,1202],\"mapped\",[1203]],[[1203,1203],\"valid\"],[[1204,1204],\"mapped\",[1205]],[[1205,1205],\"valid\"],[[1206,1206],\"mapped\",[1207]],[[1207,1207],\"valid\"],[[1208,1208],\"mapped\",[1209]],[[1209,1209],\"valid\"],[[1210,1210],\"mapped\",[1211]],[[1211,1211],\"valid\"],[[1212,1212],\"mapped\",[1213]],[[1213,1213],\"valid\"],[[1214,1214],\"mapped\",[1215]],[[1215,1215],\"valid\"],[[1216,1216],\"disallowed\"],[[1217,1217],\"mapped\",[1218]],[[1218,1218],\"valid\"],[[1219,1219],\"mapped\",[1220]],[[1220,1220],\"valid\"],[[1221,1221],\"mapped\",[1222]],[[1222,1222],\"valid\"],[[1223,1223],\"mapped\",[1224]],[[1224,1224],\"valid\"],[[1225,1225],\"mapped\",[1226]],[[1226,1226],\"valid\"],[[1227,1227],\"mapped\",[1228]],[[1228,1228],\"valid\"],[[1229,1229],\"mapped\",[1230]],[[1230,1230],\"valid\"],[[1231,1231],\"valid\"],[[1232,1232],\"mapped\",[1233]],[[1233,1233],\"valid\"],[[1234,1234],\"mapped\",[1235]],[[1235,1235],\"valid\"],[[1236,1236],\"mapped\",[1237]],[[1237,1237],\"valid\"],[[1238,1238],\"mapped\",[1239]],[[1239,1239],\"valid\"],[[1240,1240],\"mapped\",[1241]],[[1241,1241],\"valid\"],[[1242,1242],\"mapped\",[1243]],[[1243,1243],\"valid\"],[[1244,1244],\"mapped\",[1245]],[[1245,1245],\"valid\"],[[1246,1246],\"mapped\",[1247]],[[1247,1247],\"valid\"],[[1248,1248],\"mapped\",[1249]],[[1249,1249],\"valid\"],[[1250,1250],\"mapped\",[1251]],[[1251,1251],\"valid\"],[[1252,1252],\"mapped\",[1253]],[[1253,1253],\"valid\"],[[1254,1254],\"mapped\",[1255]],[[1255,1255],\"valid\"],[[1256,1256],\"mapped\",[1257]],[[1257,1257],\"valid\"],[[1258,1258],\"mapped\",[1259]],[[1259,1259],\"valid\"],[[1260,1260],\"mapped\",[1261]],[[1261,1261],\"valid\"],[[1262,1262],\"mapped\",[1263]],[[1263,1263],\"valid\"],[[1264,1264],\"mapped\",[1265]],[[1265,1265],\"valid\"],[[1266,1266],\"mapped\",[1267]],[[1267,1267],\"valid\"],[[1268,1268],\"mapped\",[1269]],[[1269,1269],\"valid\"],[[1270,1270],\"mapped\",[1271]],[[1271,1271],\"valid\"],[[1272,1272],\"mapped\",[1273]],[[1273,1273],\"valid\"],[[1274,1274],\"mapped\",[1275]],[[1275,1275],\"valid\"],[[1276,1276],\"mapped\",[1277]],[[1277,1277],\"valid\"],[[1278,1278],\"mapped\",[1279]],[[1279,1279],\"valid\"],[[1280,1280],\"mapped\",[1281]],[[1281,1281],\"valid\"],[[1282,1282],\"mapped\",[1283]],[[1283,1283],\"valid\"],[[1284,1284],\"mapped\",[1285]],[[1285,1285],\"valid\"],[[1286,1286],\"mapped\",[1287]],[[1287,1287],\"valid\"],[[1288,1288],\"mapped\",[1289]],[[1289,1289],\"valid\"],[[1290,1290],\"mapped\",[1291]],[[1291,1291],\"valid\"],[[1292,1292],\"mapped\",[1293]],[[1293,1293],\"valid\"],[[1294,1294],\"mapped\",[1295]],[[1295,1295],\"valid\"],[[1296,1296],\"mapped\",[1297]],[[1297,1297],\"valid\"],[[1298,1298],\"mapped\",[1299]],[[1299,1299],\"valid\"],[[1300,1300],\"mapped\",[1301]],[[1301,1301],\"valid\"],[[1302,1302],\"mapped\",[1303]],[[1303,1303],\"valid\"],[[1304,1304],\"mapped\",[1305]],[[1305,1305],\"valid\"],[[1306,1306],\"mapped\",[1307]],[[1307,1307],\"valid\"],[[1308,1308],\"mapped\",[1309]],[[1309,1309],\"valid\"],[[1310,1310],\"mapped\",[1311]],[[1311,1311],\"valid\"],[[1312,1312],\"mapped\",[1313]],[[1313,1313],\"valid\"],[[1314,1314],\"mapped\",[1315]],[[1315,1315],\"valid\"],[[1316,1316],\"mapped\",[1317]],[[1317,1317],\"valid\"],[[1318,1318],\"mapped\",[1319]],[[1319,1319],\"valid\"],[[1320,1320],\"mapped\",[1321]],[[1321,1321],\"valid\"],[[1322,1322],\"mapped\",[1323]],[[1323,1323],\"valid\"],[[1324,1324],\"mapped\",[1325]],[[1325,1325],\"valid\"],[[1326,1326],\"mapped\",[1327]],[[1327,1327],\"valid\"],[[1328,1328],\"disallowed\"],[[1329,1329],\"mapped\",[1377]],[[1330,1330],\"mapped\",[1378]],[[1331,1331],\"mapped\",[1379]],[[1332,1332],\"mapped\",[1380]],[[1333,1333],\"mapped\",[1381]],[[1334,1334],\"mapped\",[1382]],[[1335,1335],\"mapped\",[1383]],[[1336,1336],\"mapped\",[1384]],[[1337,1337],\"mapped\",[1385]],[[1338,1338],\"mapped\",[1386]],[[1339,1339],\"mapped\",[1387]],[[1340,1340],\"mapped\",[1388]],[[1341,1341],\"mapped\",[1389]],[[1342,1342],\"mapped\",[1390]],[[1343,1343],\"mapped\",[1391]],[[1344,1344],\"mapped\",[1392]],[[1345,1345],\"mapped\",[1393]],[[1346,1346],\"mapped\",[1394]],[[1347,1347],\"mapped\",[1395]],[[1348,1348],\"mapped\",[1396]],[[1349,1349],\"mapped\",[1397]],[[1350,1350],\"mapped\",[1398]],[[1351,1351],\"mapped\",[1399]],[[1352,1352],\"mapped\",[1400]],[[1353,1353],\"mapped\",[1401]],[[1354,1354],\"mapped\",[1402]],[[1355,1355],\"mapped\",[1403]],[[1356,1356],\"mapped\",[1404]],[[1357,1357],\"mapped\",[1405]],[[1358,1358],\"mapped\",[1406]],[[1359,1359],\"mapped\",[1407]],[[1360,1360],\"mapped\",[1408]],[[1361,1361],\"mapped\",[1409]],[[1362,1362],\"mapped\",[1410]],[[1363,1363],\"mapped\",[1411]],[[1364,1364],\"mapped\",[1412]],[[1365,1365],\"mapped\",[1413]],[[1366,1366],\"mapped\",[1414]],[[1367,1368],\"disallowed\"],[[1369,1369],\"valid\"],[[1370,1375],\"valid\",[],\"NV8\"],[[1376,1376],\"disallowed\"],[[1377,1414],\"valid\"],[[1415,1415],\"mapped\",[1381,1410]],[[1416,1416],\"disallowed\"],[[1417,1417],\"valid\",[],\"NV8\"],[[1418,1418],\"valid\",[],\"NV8\"],[[1419,1420],\"disallowed\"],[[1421,1422],\"valid\",[],\"NV8\"],[[1423,1423],\"valid\",[],\"NV8\"],[[1424,1424],\"disallowed\"],[[1425,1441],\"valid\"],[[1442,1442],\"valid\"],[[1443,1455],\"valid\"],[[1456,1465],\"valid\"],[[1466,1466],\"valid\"],[[1467,1469],\"valid\"],[[1470,1470],\"valid\",[],\"NV8\"],[[1471,1471],\"valid\"],[[1472,1472],\"valid\",[],\"NV8\"],[[1473,1474],\"valid\"],[[1475,1475],\"valid\",[],\"NV8\"],[[1476,1476],\"valid\"],[[1477,1477],\"valid\"],[[1478,1478],\"valid\",[],\"NV8\"],[[1479,1479],\"valid\"],[[1480,1487],\"disallowed\"],[[1488,1514],\"valid\"],[[1515,1519],\"disallowed\"],[[1520,1524],\"valid\"],[[1525,1535],\"disallowed\"],[[1536,1539],\"disallowed\"],[[1540,1540],\"disallowed\"],[[1541,1541],\"disallowed\"],[[1542,1546],\"valid\",[],\"NV8\"],[[1547,1547],\"valid\",[],\"NV8\"],[[1548,1548],\"valid\",[],\"NV8\"],[[1549,1551],\"valid\",[],\"NV8\"],[[1552,1557],\"valid\"],[[1558,1562],\"valid\"],[[1563,1563],\"valid\",[],\"NV8\"],[[1564,1564],\"disallowed\"],[[1565,1565],\"disallowed\"],[[1566,1566],\"valid\",[],\"NV8\"],[[1567,1567],\"valid\",[],\"NV8\"],[[1568,1568],\"valid\"],[[1569,1594],\"valid\"],[[1595,1599],\"valid\"],[[1600,1600],\"valid\",[],\"NV8\"],[[1601,1618],\"valid\"],[[1619,1621],\"valid\"],[[1622,1624],\"valid\"],[[1625,1630],\"valid\"],[[1631,1631],\"valid\"],[[1632,1641],\"valid\"],[[1642,1645],\"valid\",[],\"NV8\"],[[1646,1647],\"valid\"],[[1648,1652],\"valid\"],[[1653,1653],\"mapped\",[1575,1652]],[[1654,1654],\"mapped\",[1608,1652]],[[1655,1655],\"mapped\",[1735,1652]],[[1656,1656],\"mapped\",[1610,1652]],[[1657,1719],\"valid\"],[[1720,1721],\"valid\"],[[1722,1726],\"valid\"],[[1727,1727],\"valid\"],[[1728,1742],\"valid\"],[[1743,1743],\"valid\"],[[1744,1747],\"valid\"],[[1748,1748],\"valid\",[],\"NV8\"],[[1749,1756],\"valid\"],[[1757,1757],\"disallowed\"],[[1758,1758],\"valid\",[],\"NV8\"],[[1759,1768],\"valid\"],[[1769,1769],\"valid\",[],\"NV8\"],[[1770,1773],\"valid\"],[[1774,1775],\"valid\"],[[1776,1785],\"valid\"],[[1786,1790],\"valid\"],[[1791,1791],\"valid\"],[[1792,1805],\"valid\",[],\"NV8\"],[[1806,1806],\"disallowed\"],[[1807,1807],\"disallowed\"],[[1808,1836],\"valid\"],[[1837,1839],\"valid\"],[[1840,1866],\"valid\"],[[1867,1868],\"disallowed\"],[[1869,1871],\"valid\"],[[1872,1901],\"valid\"],[[1902,1919],\"valid\"],[[1920,1968],\"valid\"],[[1969,1969],\"valid\"],[[1970,1983],\"disallowed\"],[[1984,2037],\"valid\"],[[2038,2042],\"valid\",[],\"NV8\"],[[2043,2047],\"disallowed\"],[[2048,2093],\"valid\"],[[2094,2095],\"disallowed\"],[[2096,2110],\"valid\",[],\"NV8\"],[[2111,2111],\"disallowed\"],[[2112,2139],\"valid\"],[[2140,2141],\"disallowed\"],[[2142,2142],\"valid\",[],\"NV8\"],[[2143,2207],\"disallowed\"],[[2208,2208],\"valid\"],[[2209,2209],\"valid\"],[[2210,2220],\"valid\"],[[2221,2226],\"valid\"],[[2227,2228],\"valid\"],[[2229,2274],\"disallowed\"],[[2275,2275],\"valid\"],[[2276,2302],\"valid\"],[[2303,2303],\"valid\"],[[2304,2304],\"valid\"],[[2305,2307],\"valid\"],[[2308,2308],\"valid\"],[[2309,2361],\"valid\"],[[2362,2363],\"valid\"],[[2364,2381],\"valid\"],[[2382,2382],\"valid\"],[[2383,2383],\"valid\"],[[2384,2388],\"valid\"],[[2389,2389],\"valid\"],[[2390,2391],\"valid\"],[[2392,2392],\"mapped\",[2325,2364]],[[2393,2393],\"mapped\",[2326,2364]],[[2394,2394],\"mapped\",[2327,2364]],[[2395,2395],\"mapped\",[2332,2364]],[[2396,2396],\"mapped\",[2337,2364]],[[2397,2397],\"mapped\",[2338,2364]],[[2398,2398],\"mapped\",[2347,2364]],[[2399,2399],\"mapped\",[2351,2364]],[[2400,2403],\"valid\"],[[2404,2405],\"valid\",[],\"NV8\"],[[2406,2415],\"valid\"],[[2416,2416],\"valid\",[],\"NV8\"],[[2417,2418],\"valid\"],[[2419,2423],\"valid\"],[[2424,2424],\"valid\"],[[2425,2426],\"valid\"],[[2427,2428],\"valid\"],[[2429,2429],\"valid\"],[[2430,2431],\"valid\"],[[2432,2432],\"valid\"],[[2433,2435],\"valid\"],[[2436,2436],\"disallowed\"],[[2437,2444],\"valid\"],[[2445,2446],\"disallowed\"],[[2447,2448],\"valid\"],[[2449,2450],\"disallowed\"],[[2451,2472],\"valid\"],[[2473,2473],\"disallowed\"],[[2474,2480],\"valid\"],[[2481,2481],\"disallowed\"],[[2482,2482],\"valid\"],[[2483,2485],\"disallowed\"],[[2486,2489],\"valid\"],[[2490,2491],\"disallowed\"],[[2492,2492],\"valid\"],[[2493,2493],\"valid\"],[[2494,2500],\"valid\"],[[2501,2502],\"disallowed\"],[[2503,2504],\"valid\"],[[2505,2506],\"disallowed\"],[[2507,2509],\"valid\"],[[2510,2510],\"valid\"],[[2511,2518],\"disallowed\"],[[2519,2519],\"valid\"],[[2520,2523],\"disallowed\"],[[2524,2524],\"mapped\",[2465,2492]],[[2525,2525],\"mapped\",[2466,2492]],[[2526,2526],\"disallowed\"],[[2527,2527],\"mapped\",[2479,2492]],[[2528,2531],\"valid\"],[[2532,2533],\"disallowed\"],[[2534,2545],\"valid\"],[[2546,2554],\"valid\",[],\"NV8\"],[[2555,2555],\"valid\",[],\"NV8\"],[[2556,2560],\"disallowed\"],[[2561,2561],\"valid\"],[[2562,2562],\"valid\"],[[2563,2563],\"valid\"],[[2564,2564],\"disallowed\"],[[2565,2570],\"valid\"],[[2571,2574],\"disallowed\"],[[2575,2576],\"valid\"],[[2577,2578],\"disallowed\"],[[2579,2600],\"valid\"],[[2601,2601],\"disallowed\"],[[2602,2608],\"valid\"],[[2609,2609],\"disallowed\"],[[2610,2610],\"valid\"],[[2611,2611],\"mapped\",[2610,2620]],[[2612,2612],\"disallowed\"],[[2613,2613],\"valid\"],[[2614,2614],\"mapped\",[2616,2620]],[[2615,2615],\"disallowed\"],[[2616,2617],\"valid\"],[[2618,2619],\"disallowed\"],[[2620,2620],\"valid\"],[[2621,2621],\"disallowed\"],[[2622,2626],\"valid\"],[[2627,2630],\"disallowed\"],[[2631,2632],\"valid\"],[[2633,2634],\"disallowed\"],[[2635,2637],\"valid\"],[[2638,2640],\"disallowed\"],[[2641,2641],\"valid\"],[[2642,2648],\"disallowed\"],[[2649,2649],\"mapped\",[2582,2620]],[[2650,2650],\"mapped\",[2583,2620]],[[2651,2651],\"mapped\",[2588,2620]],[[2652,2652],\"valid\"],[[2653,2653],\"disallowed\"],[[2654,2654],\"mapped\",[2603,2620]],[[2655,2661],\"disallowed\"],[[2662,2676],\"valid\"],[[2677,2677],\"valid\"],[[2678,2688],\"disallowed\"],[[2689,2691],\"valid\"],[[2692,2692],\"disallowed\"],[[2693,2699],\"valid\"],[[2700,2700],\"valid\"],[[2701,2701],\"valid\"],[[2702,2702],\"disallowed\"],[[2703,2705],\"valid\"],[[2706,2706],\"disallowed\"],[[2707,2728],\"valid\"],[[2729,2729],\"disallowed\"],[[2730,2736],\"valid\"],[[2737,2737],\"disallowed\"],[[2738,2739],\"valid\"],[[2740,2740],\"disallowed\"],[[2741,2745],\"valid\"],[[2746,2747],\"disallowed\"],[[2748,2757],\"valid\"],[[2758,2758],\"disallowed\"],[[2759,2761],\"valid\"],[[2762,2762],\"disallowed\"],[[2763,2765],\"valid\"],[[2766,2767],\"disallowed\"],[[2768,2768],\"valid\"],[[2769,2783],\"disallowed\"],[[2784,2784],\"valid\"],[[2785,2787],\"valid\"],[[2788,2789],\"disallowed\"],[[2790,2799],\"valid\"],[[2800,2800],\"valid\",[],\"NV8\"],[[2801,2801],\"valid\",[],\"NV8\"],[[2802,2808],\"disallowed\"],[[2809,2809],\"valid\"],[[2810,2816],\"disallowed\"],[[2817,2819],\"valid\"],[[2820,2820],\"disallowed\"],[[2821,2828],\"valid\"],[[2829,2830],\"disallowed\"],[[2831,2832],\"valid\"],[[2833,2834],\"disallowed\"],[[2835,2856],\"valid\"],[[2857,2857],\"disallowed\"],[[2858,2864],\"valid\"],[[2865,2865],\"disallowed\"],[[2866,2867],\"valid\"],[[2868,2868],\"disallowed\"],[[2869,2869],\"valid\"],[[2870,2873],\"valid\"],[[2874,2875],\"disallowed\"],[[2876,2883],\"valid\"],[[2884,2884],\"valid\"],[[2885,2886],\"disallowed\"],[[2887,2888],\"valid\"],[[2889,2890],\"disallowed\"],[[2891,2893],\"valid\"],[[2894,2901],\"disallowed\"],[[2902,2903],\"valid\"],[[2904,2907],\"disallowed\"],[[2908,2908],\"mapped\",[2849,2876]],[[2909,2909],\"mapped\",[2850,2876]],[[2910,2910],\"disallowed\"],[[2911,2913],\"valid\"],[[2914,2915],\"valid\"],[[2916,2917],\"disallowed\"],[[2918,2927],\"valid\"],[[2928,2928],\"valid\",[],\"NV8\"],[[2929,2929],\"valid\"],[[2930,2935],\"valid\",[],\"NV8\"],[[2936,2945],\"disallowed\"],[[2946,2947],\"valid\"],[[2948,2948],\"disallowed\"],[[2949,2954],\"valid\"],[[2955,2957],\"disallowed\"],[[2958,2960],\"valid\"],[[2961,2961],\"disallowed\"],[[2962,2965],\"valid\"],[[2966,2968],\"disallowed\"],[[2969,2970],\"valid\"],[[2971,2971],\"disallowed\"],[[2972,2972],\"valid\"],[[2973,2973],\"disallowed\"],[[2974,2975],\"valid\"],[[2976,2978],\"disallowed\"],[[2979,2980],\"valid\"],[[2981,2983],\"disallowed\"],[[2984,2986],\"valid\"],[[2987,2989],\"disallowed\"],[[2990,2997],\"valid\"],[[2998,2998],\"valid\"],[[2999,3001],\"valid\"],[[3002,3005],\"disallowed\"],[[3006,3010],\"valid\"],[[3011,3013],\"disallowed\"],[[3014,3016],\"valid\"],[[3017,3017],\"disallowed\"],[[3018,3021],\"valid\"],[[3022,3023],\"disallowed\"],[[3024,3024],\"valid\"],[[3025,3030],\"disallowed\"],[[3031,3031],\"valid\"],[[3032,3045],\"disallowed\"],[[3046,3046],\"valid\"],[[3047,3055],\"valid\"],[[3056,3058],\"valid\",[],\"NV8\"],[[3059,3066],\"valid\",[],\"NV8\"],[[3067,3071],\"disallowed\"],[[3072,3072],\"valid\"],[[3073,3075],\"valid\"],[[3076,3076],\"disallowed\"],[[3077,3084],\"valid\"],[[3085,3085],\"disallowed\"],[[3086,3088],\"valid\"],[[3089,3089],\"disallowed\"],[[3090,3112],\"valid\"],[[3113,3113],\"disallowed\"],[[3114,3123],\"valid\"],[[3124,3124],\"valid\"],[[3125,3129],\"valid\"],[[3130,3132],\"disallowed\"],[[3133,3133],\"valid\"],[[3134,3140],\"valid\"],[[3141,3141],\"disallowed\"],[[3142,3144],\"valid\"],[[3145,3145],\"disallowed\"],[[3146,3149],\"valid\"],[[3150,3156],\"disallowed\"],[[3157,3158],\"valid\"],[[3159,3159],\"disallowed\"],[[3160,3161],\"valid\"],[[3162,3162],\"valid\"],[[3163,3167],\"disallowed\"],[[3168,3169],\"valid\"],[[3170,3171],\"valid\"],[[3172,3173],\"disallowed\"],[[3174,3183],\"valid\"],[[3184,3191],\"disallowed\"],[[3192,3199],\"valid\",[],\"NV8\"],[[3200,3200],\"disallowed\"],[[3201,3201],\"valid\"],[[3202,3203],\"valid\"],[[3204,3204],\"disallowed\"],[[3205,3212],\"valid\"],[[3213,3213],\"disallowed\"],[[3214,3216],\"valid\"],[[3217,3217],\"disallowed\"],[[3218,3240],\"valid\"],[[3241,3241],\"disallowed\"],[[3242,3251],\"valid\"],[[3252,3252],\"disallowed\"],[[3253,3257],\"valid\"],[[3258,3259],\"disallowed\"],[[3260,3261],\"valid\"],[[3262,3268],\"valid\"],[[3269,3269],\"disallowed\"],[[3270,3272],\"valid\"],[[3273,3273],\"disallowed\"],[[3274,3277],\"valid\"],[[3278,3284],\"disallowed\"],[[3285,3286],\"valid\"],[[3287,3293],\"disallowed\"],[[3294,3294],\"valid\"],[[3295,3295],\"disallowed\"],[[3296,3297],\"valid\"],[[3298,3299],\"valid\"],[[3300,3301],\"disallowed\"],[[3302,3311],\"valid\"],[[3312,3312],\"disallowed\"],[[3313,3314],\"valid\"],[[3315,3328],\"disallowed\"],[[3329,3329],\"valid\"],[[3330,3331],\"valid\"],[[3332,3332],\"disallowed\"],[[3333,3340],\"valid\"],[[3341,3341],\"disallowed\"],[[3342,3344],\"valid\"],[[3345,3345],\"disallowed\"],[[3346,3368],\"valid\"],[[3369,3369],\"valid\"],[[3370,3385],\"valid\"],[[3386,3386],\"valid\"],[[3387,3388],\"disallowed\"],[[3389,3389],\"valid\"],[[3390,3395],\"valid\"],[[3396,3396],\"valid\"],[[3397,3397],\"disallowed\"],[[3398,3400],\"valid\"],[[3401,3401],\"disallowed\"],[[3402,3405],\"valid\"],[[3406,3406],\"valid\"],[[3407,3414],\"disallowed\"],[[3415,3415],\"valid\"],[[3416,3422],\"disallowed\"],[[3423,3423],\"valid\"],[[3424,3425],\"valid\"],[[3426,3427],\"valid\"],[[3428,3429],\"disallowed\"],[[3430,3439],\"valid\"],[[3440,3445],\"valid\",[],\"NV8\"],[[3446,3448],\"disallowed\"],[[3449,3449],\"valid\",[],\"NV8\"],[[3450,3455],\"valid\"],[[3456,3457],\"disallowed\"],[[3458,3459],\"valid\"],[[3460,3460],\"disallowed\"],[[3461,3478],\"valid\"],[[3479,3481],\"disallowed\"],[[3482,3505],\"valid\"],[[3506,3506],\"disallowed\"],[[3507,3515],\"valid\"],[[3516,3516],\"disallowed\"],[[3517,3517],\"valid\"],[[3518,3519],\"disallowed\"],[[3520,3526],\"valid\"],[[3527,3529],\"disallowed\"],[[3530,3530],\"valid\"],[[3531,3534],\"disallowed\"],[[3535,3540],\"valid\"],[[3541,3541],\"disallowed\"],[[3542,3542],\"valid\"],[[3543,3543],\"disallowed\"],[[3544,3551],\"valid\"],[[3552,3557],\"disallowed\"],[[3558,3567],\"valid\"],[[3568,3569],\"disallowed\"],[[3570,3571],\"valid\"],[[3572,3572],\"valid\",[],\"NV8\"],[[3573,3584],\"disallowed\"],[[3585,3634],\"valid\"],[[3635,3635],\"mapped\",[3661,3634]],[[3636,3642],\"valid\"],[[3643,3646],\"disallowed\"],[[3647,3647],\"valid\",[],\"NV8\"],[[3648,3662],\"valid\"],[[3663,3663],\"valid\",[],\"NV8\"],[[3664,3673],\"valid\"],[[3674,3675],\"valid\",[],\"NV8\"],[[3676,3712],\"disallowed\"],[[3713,3714],\"valid\"],[[3715,3715],\"disallowed\"],[[3716,3716],\"valid\"],[[3717,3718],\"disallowed\"],[[3719,3720],\"valid\"],[[3721,3721],\"disallowed\"],[[3722,3722],\"valid\"],[[3723,3724],\"disallowed\"],[[3725,3725],\"valid\"],[[3726,3731],\"disallowed\"],[[3732,3735],\"valid\"],[[3736,3736],\"disallowed\"],[[3737,3743],\"valid\"],[[3744,3744],\"disallowed\"],[[3745,3747],\"valid\"],[[3748,3748],\"disallowed\"],[[3749,3749],\"valid\"],[[3750,3750],\"disallowed\"],[[3751,3751],\"valid\"],[[3752,3753],\"disallowed\"],[[3754,3755],\"valid\"],[[3756,3756],\"disallowed\"],[[3757,3762],\"valid\"],[[3763,3763],\"mapped\",[3789,3762]],[[3764,3769],\"valid\"],[[3770,3770],\"disallowed\"],[[3771,3773],\"valid\"],[[3774,3775],\"disallowed\"],[[3776,3780],\"valid\"],[[3781,3781],\"disallowed\"],[[3782,3782],\"valid\"],[[3783,3783],\"disallowed\"],[[3784,3789],\"valid\"],[[3790,3791],\"disallowed\"],[[3792,3801],\"valid\"],[[3802,3803],\"disallowed\"],[[3804,3804],\"mapped\",[3755,3737]],[[3805,3805],\"mapped\",[3755,3745]],[[3806,3807],\"valid\"],[[3808,3839],\"disallowed\"],[[3840,3840],\"valid\"],[[3841,3850],\"valid\",[],\"NV8\"],[[3851,3851],\"valid\"],[[3852,3852],\"mapped\",[3851]],[[3853,3863],\"valid\",[],\"NV8\"],[[3864,3865],\"valid\"],[[3866,3871],\"valid\",[],\"NV8\"],[[3872,3881],\"valid\"],[[3882,3892],\"valid\",[],\"NV8\"],[[3893,3893],\"valid\"],[[3894,3894],\"valid\",[],\"NV8\"],[[3895,3895],\"valid\"],[[3896,3896],\"valid\",[],\"NV8\"],[[3897,3897],\"valid\"],[[3898,3901],\"valid\",[],\"NV8\"],[[3902,3906],\"valid\"],[[3907,3907],\"mapped\",[3906,4023]],[[3908,3911],\"valid\"],[[3912,3912],\"disallowed\"],[[3913,3916],\"valid\"],[[3917,3917],\"mapped\",[3916,4023]],[[3918,3921],\"valid\"],[[3922,3922],\"mapped\",[3921,4023]],[[3923,3926],\"valid\"],[[3927,3927],\"mapped\",[3926,4023]],[[3928,3931],\"valid\"],[[3932,3932],\"mapped\",[3931,4023]],[[3933,3944],\"valid\"],[[3945,3945],\"mapped\",[3904,4021]],[[3946,3946],\"valid\"],[[3947,3948],\"valid\"],[[3949,3952],\"disallowed\"],[[3953,3954],\"valid\"],[[3955,3955],\"mapped\",[3953,3954]],[[3956,3956],\"valid\"],[[3957,3957],\"mapped\",[3953,3956]],[[3958,3958],\"mapped\",[4018,3968]],[[3959,3959],\"mapped\",[4018,3953,3968]],[[3960,3960],\"mapped\",[4019,3968]],[[3961,3961],\"mapped\",[4019,3953,3968]],[[3962,3968],\"valid\"],[[3969,3969],\"mapped\",[3953,3968]],[[3970,3972],\"valid\"],[[3973,3973],\"valid\",[],\"NV8\"],[[3974,3979],\"valid\"],[[3980,3983],\"valid\"],[[3984,3986],\"valid\"],[[3987,3987],\"mapped\",[3986,4023]],[[3988,3989],\"valid\"],[[3990,3990],\"valid\"],[[3991,3991],\"valid\"],[[3992,3992],\"disallowed\"],[[3993,3996],\"valid\"],[[3997,3997],\"mapped\",[3996,4023]],[[3998,4001],\"valid\"],[[4002,4002],\"mapped\",[4001,4023]],[[4003,4006],\"valid\"],[[4007,4007],\"mapped\",[4006,4023]],[[4008,4011],\"valid\"],[[4012,4012],\"mapped\",[4011,4023]],[[4013,4013],\"valid\"],[[4014,4016],\"valid\"],[[4017,4023],\"valid\"],[[4024,4024],\"valid\"],[[4025,4025],\"mapped\",[3984,4021]],[[4026,4028],\"valid\"],[[4029,4029],\"disallowed\"],[[4030,4037],\"valid\",[],\"NV8\"],[[4038,4038],\"valid\"],[[4039,4044],\"valid\",[],\"NV8\"],[[4045,4045],\"disallowed\"],[[4046,4046],\"valid\",[],\"NV8\"],[[4047,4047],\"valid\",[],\"NV8\"],[[4048,4049],\"valid\",[],\"NV8\"],[[4050,4052],\"valid\",[],\"NV8\"],[[4053,4056],\"valid\",[],\"NV8\"],[[4057,4058],\"valid\",[],\"NV8\"],[[4059,4095],\"disallowed\"],[[4096,4129],\"valid\"],[[4130,4130],\"valid\"],[[4131,4135],\"valid\"],[[4136,4136],\"valid\"],[[4137,4138],\"valid\"],[[4139,4139],\"valid\"],[[4140,4146],\"valid\"],[[4147,4149],\"valid\"],[[4150,4153],\"valid\"],[[4154,4159],\"valid\"],[[4160,4169],\"valid\"],[[4170,4175],\"valid\",[],\"NV8\"],[[4176,4185],\"valid\"],[[4186,4249],\"valid\"],[[4250,4253],\"valid\"],[[4254,4255],\"valid\",[],\"NV8\"],[[4256,4293],\"disallowed\"],[[4294,4294],\"disallowed\"],[[4295,4295],\"mapped\",[11559]],[[4296,4300],\"disallowed\"],[[4301,4301],\"mapped\",[11565]],[[4302,4303],\"disallowed\"],[[4304,4342],\"valid\"],[[4343,4344],\"valid\"],[[4345,4346],\"valid\"],[[4347,4347],\"valid\",[],\"NV8\"],[[4348,4348],\"mapped\",[4316]],[[4349,4351],\"valid\"],[[4352,4441],\"valid\",[],\"NV8\"],[[4442,4446],\"valid\",[],\"NV8\"],[[4447,4448],\"disallowed\"],[[4449,4514],\"valid\",[],\"NV8\"],[[4515,4519],\"valid\",[],\"NV8\"],[[4520,4601],\"valid\",[],\"NV8\"],[[4602,4607],\"valid\",[],\"NV8\"],[[4608,4614],\"valid\"],[[4615,4615],\"valid\"],[[4616,4678],\"valid\"],[[4679,4679],\"valid\"],[[4680,4680],\"valid\"],[[4681,4681],\"disallowed\"],[[4682,4685],\"valid\"],[[4686,4687],\"disallowed\"],[[4688,4694],\"valid\"],[[4695,4695],\"disallowed\"],[[4696,4696],\"valid\"],[[4697,4697],\"disallowed\"],[[4698,4701],\"valid\"],[[4702,4703],\"disallowed\"],[[4704,4742],\"valid\"],[[4743,4743],\"valid\"],[[4744,4744],\"valid\"],[[4745,4745],\"disallowed\"],[[4746,4749],\"valid\"],[[4750,4751],\"disallowed\"],[[4752,4782],\"valid\"],[[4783,4783],\"valid\"],[[4784,4784],\"valid\"],[[4785,4785],\"disallowed\"],[[4786,4789],\"valid\"],[[4790,4791],\"disallowed\"],[[4792,4798],\"valid\"],[[4799,4799],\"disallowed\"],[[4800,4800],\"valid\"],[[4801,4801],\"disallowed\"],[[4802,4805],\"valid\"],[[4806,4807],\"disallowed\"],[[4808,4814],\"valid\"],[[4815,4815],\"valid\"],[[4816,4822],\"valid\"],[[4823,4823],\"disallowed\"],[[4824,4846],\"valid\"],[[4847,4847],\"valid\"],[[4848,4878],\"valid\"],[[4879,4879],\"valid\"],[[4880,4880],\"valid\"],[[4881,4881],\"disallowed\"],[[4882,4885],\"valid\"],[[4886,4887],\"disallowed\"],[[4888,4894],\"valid\"],[[4895,4895],\"valid\"],[[4896,4934],\"valid\"],[[4935,4935],\"valid\"],[[4936,4954],\"valid\"],[[4955,4956],\"disallowed\"],[[4957,4958],\"valid\"],[[4959,4959],\"valid\"],[[4960,4960],\"valid\",[],\"NV8\"],[[4961,4988],\"valid\",[],\"NV8\"],[[4989,4991],\"disallowed\"],[[4992,5007],\"valid\"],[[5008,5017],\"valid\",[],\"NV8\"],[[5018,5023],\"disallowed\"],[[5024,5108],\"valid\"],[[5109,5109],\"valid\"],[[5110,5111],\"disallowed\"],[[5112,5112],\"mapped\",[5104]],[[5113,5113],\"mapped\",[5105]],[[5114,5114],\"mapped\",[5106]],[[5115,5115],\"mapped\",[5107]],[[5116,5116],\"mapped\",[5108]],[[5117,5117],\"mapped\",[5109]],[[5118,5119],\"disallowed\"],[[5120,5120],\"valid\",[],\"NV8\"],[[5121,5740],\"valid\"],[[5741,5742],\"valid\",[],\"NV8\"],[[5743,5750],\"valid\"],[[5751,5759],\"valid\"],[[5760,5760],\"disallowed\"],[[5761,5786],\"valid\"],[[5787,5788],\"valid\",[],\"NV8\"],[[5789,5791],\"disallowed\"],[[5792,5866],\"valid\"],[[5867,5872],\"valid\",[],\"NV8\"],[[5873,5880],\"valid\"],[[5881,5887],\"disallowed\"],[[5888,5900],\"valid\"],[[5901,5901],\"disallowed\"],[[5902,5908],\"valid\"],[[5909,5919],\"disallowed\"],[[5920,5940],\"valid\"],[[5941,5942],\"valid\",[],\"NV8\"],[[5943,5951],\"disallowed\"],[[5952,5971],\"valid\"],[[5972,5983],\"disallowed\"],[[5984,5996],\"valid\"],[[5997,5997],\"disallowed\"],[[5998,6000],\"valid\"],[[6001,6001],\"disallowed\"],[[6002,6003],\"valid\"],[[6004,6015],\"disallowed\"],[[6016,6067],\"valid\"],[[6068,6069],\"disallowed\"],[[6070,6099],\"valid\"],[[6100,6102],\"valid\",[],\"NV8\"],[[6103,6103],\"valid\"],[[6104,6107],\"valid\",[],\"NV8\"],[[6108,6108],\"valid\"],[[6109,6109],\"valid\"],[[6110,6111],\"disallowed\"],[[6112,6121],\"valid\"],[[6122,6127],\"disallowed\"],[[6128,6137],\"valid\",[],\"NV8\"],[[6138,6143],\"disallowed\"],[[6144,6149],\"valid\",[],\"NV8\"],[[6150,6150],\"disallowed\"],[[6151,6154],\"valid\",[],\"NV8\"],[[6155,6157],\"ignored\"],[[6158,6158],\"disallowed\"],[[6159,6159],\"disallowed\"],[[6160,6169],\"valid\"],[[6170,6175],\"disallowed\"],[[6176,6263],\"valid\"],[[6264,6271],\"disallowed\"],[[6272,6313],\"valid\"],[[6314,6314],\"valid\"],[[6315,6319],\"disallowed\"],[[6320,6389],\"valid\"],[[6390,6399],\"disallowed\"],[[6400,6428],\"valid\"],[[6429,6430],\"valid\"],[[6431,6431],\"disallowed\"],[[6432,6443],\"valid\"],[[6444,6447],\"disallowed\"],[[6448,6459],\"valid\"],[[6460,6463],\"disallowed\"],[[6464,6464],\"valid\",[],\"NV8\"],[[6465,6467],\"disallowed\"],[[6468,6469],\"valid\",[],\"NV8\"],[[6470,6509],\"valid\"],[[6510,6511],\"disallowed\"],[[6512,6516],\"valid\"],[[6517,6527],\"disallowed\"],[[6528,6569],\"valid\"],[[6570,6571],\"valid\"],[[6572,6575],\"disallowed\"],[[6576,6601],\"valid\"],[[6602,6607],\"disallowed\"],[[6608,6617],\"valid\"],[[6618,6618],\"valid\",[],\"XV8\"],[[6619,6621],\"disallowed\"],[[6622,6623],\"valid\",[],\"NV8\"],[[6624,6655],\"valid\",[],\"NV8\"],[[6656,6683],\"valid\"],[[6684,6685],\"disallowed\"],[[6686,6687],\"valid\",[],\"NV8\"],[[6688,6750],\"valid\"],[[6751,6751],\"disallowed\"],[[6752,6780],\"valid\"],[[6781,6782],\"disallowed\"],[[6783,6793],\"valid\"],[[6794,6799],\"disallowed\"],[[6800,6809],\"valid\"],[[6810,6815],\"disallowed\"],[[6816,6822],\"valid\",[],\"NV8\"],[[6823,6823],\"valid\"],[[6824,6829],\"valid\",[],\"NV8\"],[[6830,6831],\"disallowed\"],[[6832,6845],\"valid\"],[[6846,6846],\"valid\",[],\"NV8\"],[[6847,6911],\"disallowed\"],[[6912,6987],\"valid\"],[[6988,6991],\"disallowed\"],[[6992,7001],\"valid\"],[[7002,7018],\"valid\",[],\"NV8\"],[[7019,7027],\"valid\"],[[7028,7036],\"valid\",[],\"NV8\"],[[7037,7039],\"disallowed\"],[[7040,7082],\"valid\"],[[7083,7085],\"valid\"],[[7086,7097],\"valid\"],[[7098,7103],\"valid\"],[[7104,7155],\"valid\"],[[7156,7163],\"disallowed\"],[[7164,7167],\"valid\",[],\"NV8\"],[[7168,7223],\"valid\"],[[7224,7226],\"disallowed\"],[[7227,7231],\"valid\",[],\"NV8\"],[[7232,7241],\"valid\"],[[7242,7244],\"disallowed\"],[[7245,7293],\"valid\"],[[7294,7295],\"valid\",[],\"NV8\"],[[7296,7359],\"disallowed\"],[[7360,7367],\"valid\",[],\"NV8\"],[[7368,7375],\"disallowed\"],[[7376,7378],\"valid\"],[[7379,7379],\"valid\",[],\"NV8\"],[[7380,7410],\"valid\"],[[7411,7414],\"valid\"],[[7415,7415],\"disallowed\"],[[7416,7417],\"valid\"],[[7418,7423],\"disallowed\"],[[7424,7467],\"valid\"],[[7468,7468],\"mapped\",[97]],[[7469,7469],\"mapped\",[230]],[[7470,7470],\"mapped\",[98]],[[7471,7471],\"valid\"],[[7472,7472],\"mapped\",[100]],[[7473,7473],\"mapped\",[101]],[[7474,7474],\"mapped\",[477]],[[7475,7475],\"mapped\",[103]],[[7476,7476],\"mapped\",[104]],[[7477,7477],\"mapped\",[105]],[[7478,7478],\"mapped\",[106]],[[7479,7479],\"mapped\",[107]],[[7480,7480],\"mapped\",[108]],[[7481,7481],\"mapped\",[109]],[[7482,7482],\"mapped\",[110]],[[7483,7483],\"valid\"],[[7484,7484],\"mapped\",[111]],[[7485,7485],\"mapped\",[547]],[[7486,7486],\"mapped\",[112]],[[7487,7487],\"mapped\",[114]],[[7488,7488],\"mapped\",[116]],[[7489,7489],\"mapped\",[117]],[[7490,7490],\"mapped\",[119]],[[7491,7491],\"mapped\",[97]],[[7492,7492],\"mapped\",[592]],[[7493,7493],\"mapped\",[593]],[[7494,7494],\"mapped\",[7426]],[[7495,7495],\"mapped\",[98]],[[7496,7496],\"mapped\",[100]],[[7497,7497],\"mapped\",[101]],[[7498,7498],\"mapped\",[601]],[[7499,7499],\"mapped\",[603]],[[7500,7500],\"mapped\",[604]],[[7501,7501],\"mapped\",[103]],[[7502,7502],\"valid\"],[[7503,7503],\"mapped\",[107]],[[7504,7504],\"mapped\",[109]],[[7505,7505],\"mapped\",[331]],[[7506,7506],\"mapped\",[111]],[[7507,7507],\"mapped\",[596]],[[7508,7508],\"mapped\",[7446]],[[7509,7509],\"mapped\",[7447]],[[7510,7510],\"mapped\",[112]],[[7511,7511],\"mapped\",[116]],[[7512,7512],\"mapped\",[117]],[[7513,7513],\"mapped\",[7453]],[[7514,7514],\"mapped\",[623]],[[7515,7515],\"mapped\",[118]],[[7516,7516],\"mapped\",[7461]],[[7517,7517],\"mapped\",[946]],[[7518,7518],\"mapped\",[947]],[[7519,7519],\"mapped\",[948]],[[7520,7520],\"mapped\",[966]],[[7521,7521],\"mapped\",[967]],[[7522,7522],\"mapped\",[105]],[[7523,7523],\"mapped\",[114]],[[7524,7524],\"mapped\",[117]],[[7525,7525],\"mapped\",[118]],[[7526,7526],\"mapped\",[946]],[[7527,7527],\"mapped\",[947]],[[7528,7528],\"mapped\",[961]],[[7529,7529],\"mapped\",[966]],[[7530,7530],\"mapped\",[967]],[[7531,7531],\"valid\"],[[7532,7543],\"valid\"],[[7544,7544],\"mapped\",[1085]],[[7545,7578],\"valid\"],[[7579,7579],\"mapped\",[594]],[[7580,7580],\"mapped\",[99]],[[7581,7581],\"mapped\",[597]],[[7582,7582],\"mapped\",[240]],[[7583,7583],\"mapped\",[604]],[[7584,7584],\"mapped\",[102]],[[7585,7585],\"mapped\",[607]],[[7586,7586],\"mapped\",[609]],[[7587,7587],\"mapped\",[613]],[[7588,7588],\"mapped\",[616]],[[7589,7589],\"mapped\",[617]],[[7590,7590],\"mapped\",[618]],[[7591,7591],\"mapped\",[7547]],[[7592,7592],\"mapped\",[669]],[[7593,7593],\"mapped\",[621]],[[7594,7594],\"mapped\",[7557]],[[7595,7595],\"mapped\",[671]],[[7596,7596],\"mapped\",[625]],[[7597,7597],\"mapped\",[624]],[[7598,7598],\"mapped\",[626]],[[7599,7599],\"mapped\",[627]],[[7600,7600],\"mapped\",[628]],[[7601,7601],\"mapped\",[629]],[[7602,7602],\"mapped\",[632]],[[7603,7603],\"mapped\",[642]],[[7604,7604],\"mapped\",[643]],[[7605,7605],\"mapped\",[427]],[[7606,7606],\"mapped\",[649]],[[7607,7607],\"mapped\",[650]],[[7608,7608],\"mapped\",[7452]],[[7609,7609],\"mapped\",[651]],[[7610,7610],\"mapped\",[652]],[[7611,7611],\"mapped\",[122]],[[7612,7612],\"mapped\",[656]],[[7613,7613],\"mapped\",[657]],[[7614,7614],\"mapped\",[658]],[[7615,7615],\"mapped\",[952]],[[7616,7619],\"valid\"],[[7620,7626],\"valid\"],[[7627,7654],\"valid\"],[[7655,7669],\"valid\"],[[7670,7675],\"disallowed\"],[[7676,7676],\"valid\"],[[7677,7677],\"valid\"],[[7678,7679],\"valid\"],[[7680,7680],\"mapped\",[7681]],[[7681,7681],\"valid\"],[[7682,7682],\"mapped\",[7683]],[[7683,7683],\"valid\"],[[7684,7684],\"mapped\",[7685]],[[7685,7685],\"valid\"],[[7686,7686],\"mapped\",[7687]],[[7687,7687],\"valid\"],[[7688,7688],\"mapped\",[7689]],[[7689,7689],\"valid\"],[[7690,7690],\"mapped\",[7691]],[[7691,7691],\"valid\"],[[7692,7692],\"mapped\",[7693]],[[7693,7693],\"valid\"],[[7694,7694],\"mapped\",[7695]],[[7695,7695],\"valid\"],[[7696,7696],\"mapped\",[7697]],[[7697,7697],\"valid\"],[[7698,7698],\"mapped\",[7699]],[[7699,7699],\"valid\"],[[7700,7700],\"mapped\",[7701]],[[7701,7701],\"valid\"],[[7702,7702],\"mapped\",[7703]],[[7703,7703],\"valid\"],[[7704,7704],\"mapped\",[7705]],[[7705,7705],\"valid\"],[[7706,7706],\"mapped\",[7707]],[[7707,7707],\"valid\"],[[7708,7708],\"mapped\",[7709]],[[7709,7709],\"valid\"],[[7710,7710],\"mapped\",[7711]],[[7711,7711],\"valid\"],[[7712,7712],\"mapped\",[7713]],[[7713,7713],\"valid\"],[[7714,7714],\"mapped\",[7715]],[[7715,7715],\"valid\"],[[7716,7716],\"mapped\",[7717]],[[7717,7717],\"valid\"],[[7718,7718],\"mapped\",[7719]],[[7719,7719],\"valid\"],[[7720,7720],\"mapped\",[7721]],[[7721,7721],\"valid\"],[[7722,7722],\"mapped\",[7723]],[[7723,7723],\"valid\"],[[7724,7724],\"mapped\",[7725]],[[7725,7725],\"valid\"],[[7726,7726],\"mapped\",[7727]],[[7727,7727],\"valid\"],[[7728,7728],\"mapped\",[7729]],[[7729,7729],\"valid\"],[[7730,7730],\"mapped\",[7731]],[[7731,7731],\"valid\"],[[7732,7732],\"mapped\",[7733]],[[7733,7733],\"valid\"],[[7734,7734],\"mapped\",[7735]],[[7735,7735],\"valid\"],[[7736,7736],\"mapped\",[7737]],[[7737,7737],\"valid\"],[[7738,7738],\"mapped\",[7739]],[[7739,7739],\"valid\"],[[7740,7740],\"mapped\",[7741]],[[7741,7741],\"valid\"],[[7742,7742],\"mapped\",[7743]],[[7743,7743],\"valid\"],[[7744,7744],\"mapped\",[7745]],[[7745,7745],\"valid\"],[[7746,7746],\"mapped\",[7747]],[[7747,7747],\"valid\"],[[7748,7748],\"mapped\",[7749]],[[7749,7749],\"valid\"],[[7750,7750],\"mapped\",[7751]],[[7751,7751],\"valid\"],[[7752,7752],\"mapped\",[7753]],[[7753,7753],\"valid\"],[[7754,7754],\"mapped\",[7755]],[[7755,7755],\"valid\"],[[7756,7756],\"mapped\",[7757]],[[7757,7757],\"valid\"],[[7758,7758],\"mapped\",[7759]],[[7759,7759],\"valid\"],[[7760,7760],\"mapped\",[7761]],[[7761,7761],\"valid\"],[[7762,7762],\"mapped\",[7763]],[[7763,7763],\"valid\"],[[7764,7764],\"mapped\",[7765]],[[7765,7765],\"valid\"],[[7766,7766],\"mapped\",[7767]],[[7767,7767],\"valid\"],[[7768,7768],\"mapped\",[7769]],[[7769,7769],\"valid\"],[[7770,7770],\"mapped\",[7771]],[[7771,7771],\"valid\"],[[7772,7772],\"mapped\",[7773]],[[7773,7773],\"valid\"],[[7774,7774],\"mapped\",[7775]],[[7775,7775],\"valid\"],[[7776,7776],\"mapped\",[7777]],[[7777,7777],\"valid\"],[[7778,7778],\"mapped\",[7779]],[[7779,7779],\"valid\"],[[7780,7780],\"mapped\",[7781]],[[7781,7781],\"valid\"],[[7782,7782],\"mapped\",[7783]],[[7783,7783],\"valid\"],[[7784,7784],\"mapped\",[7785]],[[7785,7785],\"valid\"],[[7786,7786],\"mapped\",[7787]],[[7787,7787],\"valid\"],[[7788,7788],\"mapped\",[7789]],[[7789,7789],\"valid\"],[[7790,7790],\"mapped\",[7791]],[[7791,7791],\"valid\"],[[7792,7792],\"mapped\",[7793]],[[7793,7793],\"valid\"],[[7794,7794],\"mapped\",[7795]],[[7795,7795],\"valid\"],[[7796,7796],\"mapped\",[7797]],[[7797,7797],\"valid\"],[[7798,7798],\"mapped\",[7799]],[[7799,7799],\"valid\"],[[7800,7800],\"mapped\",[7801]],[[7801,7801],\"valid\"],[[7802,7802],\"mapped\",[7803]],[[7803,7803],\"valid\"],[[7804,7804],\"mapped\",[7805]],[[7805,7805],\"valid\"],[[7806,7806],\"mapped\",[7807]],[[7807,7807],\"valid\"],[[7808,7808],\"mapped\",[7809]],[[7809,7809],\"valid\"],[[7810,7810],\"mapped\",[7811]],[[7811,7811],\"valid\"],[[7812,7812],\"mapped\",[7813]],[[7813,7813],\"valid\"],[[7814,7814],\"mapped\",[7815]],[[7815,7815],\"valid\"],[[7816,7816],\"mapped\",[7817]],[[7817,7817],\"valid\"],[[7818,7818],\"mapped\",[7819]],[[7819,7819],\"valid\"],[[7820,7820],\"mapped\",[7821]],[[7821,7821],\"valid\"],[[7822,7822],\"mapped\",[7823]],[[7823,7823],\"valid\"],[[7824,7824],\"mapped\",[7825]],[[7825,7825],\"valid\"],[[7826,7826],\"mapped\",[7827]],[[7827,7827],\"valid\"],[[7828,7828],\"mapped\",[7829]],[[7829,7833],\"valid\"],[[7834,7834],\"mapped\",[97,702]],[[7835,7835],\"mapped\",[7777]],[[7836,7837],\"valid\"],[[7838,7838],\"mapped\",[115,115]],[[7839,7839],\"valid\"],[[7840,7840],\"mapped\",[7841]],[[7841,7841],\"valid\"],[[7842,7842],\"mapped\",[7843]],[[7843,7843],\"valid\"],[[7844,7844],\"mapped\",[7845]],[[7845,7845],\"valid\"],[[7846,7846],\"mapped\",[7847]],[[7847,7847],\"valid\"],[[7848,7848],\"mapped\",[7849]],[[7849,7849],\"valid\"],[[7850,7850],\"mapped\",[7851]],[[7851,7851],\"valid\"],[[7852,7852],\"mapped\",[7853]],[[7853,7853],\"valid\"],[[7854,7854],\"mapped\",[7855]],[[7855,7855],\"valid\"],[[7856,7856],\"mapped\",[7857]],[[7857,7857],\"valid\"],[[7858,7858],\"mapped\",[7859]],[[7859,7859],\"valid\"],[[7860,7860],\"mapped\",[7861]],[[7861,7861],\"valid\"],[[7862,7862],\"mapped\",[7863]],[[7863,7863],\"valid\"],[[7864,7864],\"mapped\",[7865]],[[7865,7865],\"valid\"],[[7866,7866],\"mapped\",[7867]],[[7867,7867],\"valid\"],[[7868,7868],\"mapped\",[7869]],[[7869,7869],\"valid\"],[[7870,7870],\"mapped\",[7871]],[[7871,7871],\"valid\"],[[7872,7872],\"mapped\",[7873]],[[7873,7873],\"valid\"],[[7874,7874],\"mapped\",[7875]],[[7875,7875],\"valid\"],[[7876,7876],\"mapped\",[7877]],[[7877,7877],\"valid\"],[[7878,7878],\"mapped\",[7879]],[[7879,7879],\"valid\"],[[7880,7880],\"mapped\",[7881]],[[7881,7881],\"valid\"],[[7882,7882],\"mapped\",[7883]],[[7883,7883],\"valid\"],[[7884,7884],\"mapped\",[7885]],[[7885,7885],\"valid\"],[[7886,7886],\"mapped\",[7887]],[[7887,7887],\"valid\"],[[7888,7888],\"mapped\",[7889]],[[7889,7889],\"valid\"],[[7890,7890],\"mapped\",[7891]],[[7891,7891],\"valid\"],[[7892,7892],\"mapped\",[7893]],[[7893,7893],\"valid\"],[[7894,7894],\"mapped\",[7895]],[[7895,7895],\"valid\"],[[7896,7896],\"mapped\",[7897]],[[7897,7897],\"valid\"],[[7898,7898],\"mapped\",[7899]],[[7899,7899],\"valid\"],[[7900,7900],\"mapped\",[7901]],[[7901,7901],\"valid\"],[[7902,7902],\"mapped\",[7903]],[[7903,7903],\"valid\"],[[7904,7904],\"mapped\",[7905]],[[7905,7905],\"valid\"],[[7906,7906],\"mapped\",[7907]],[[7907,7907],\"valid\"],[[7908,7908],\"mapped\",[7909]],[[7909,7909],\"valid\"],[[7910,7910],\"mapped\",[7911]],[[7911,7911],\"valid\"],[[7912,7912],\"mapped\",[7913]],[[7913,7913],\"valid\"],[[7914,7914],\"mapped\",[7915]],[[7915,7915],\"valid\"],[[7916,7916],\"mapped\",[7917]],[[7917,7917],\"valid\"],[[7918,7918],\"mapped\",[7919]],[[7919,7919],\"valid\"],[[7920,7920],\"mapped\",[7921]],[[7921,7921],\"valid\"],[[7922,7922],\"mapped\",[7923]],[[7923,7923],\"valid\"],[[7924,7924],\"mapped\",[7925]],[[7925,7925],\"valid\"],[[7926,7926],\"mapped\",[7927]],[[7927,7927],\"valid\"],[[7928,7928],\"mapped\",[7929]],[[7929,7929],\"valid\"],[[7930,7930],\"mapped\",[7931]],[[7931,7931],\"valid\"],[[7932,7932],\"mapped\",[7933]],[[7933,7933],\"valid\"],[[7934,7934],\"mapped\",[7935]],[[7935,7935],\"valid\"],[[7936,7943],\"valid\"],[[7944,7944],\"mapped\",[7936]],[[7945,7945],\"mapped\",[7937]],[[7946,7946],\"mapped\",[7938]],[[7947,7947],\"mapped\",[7939]],[[7948,7948],\"mapped\",[7940]],[[7949,7949],\"mapped\",[7941]],[[7950,7950],\"mapped\",[7942]],[[7951,7951],\"mapped\",[7943]],[[7952,7957],\"valid\"],[[7958,7959],\"disallowed\"],[[7960,7960],\"mapped\",[7952]],[[7961,7961],\"mapped\",[7953]],[[7962,7962],\"mapped\",[7954]],[[7963,7963],\"mapped\",[7955]],[[7964,7964],\"mapped\",[7956]],[[7965,7965],\"mapped\",[7957]],[[7966,7967],\"disallowed\"],[[7968,7975],\"valid\"],[[7976,7976],\"mapped\",[7968]],[[7977,7977],\"mapped\",[7969]],[[7978,7978],\"mapped\",[7970]],[[7979,7979],\"mapped\",[7971]],[[7980,7980],\"mapped\",[7972]],[[7981,7981],\"mapped\",[7973]],[[7982,7982],\"mapped\",[7974]],[[7983,7983],\"mapped\",[7975]],[[7984,7991],\"valid\"],[[7992,7992],\"mapped\",[7984]],[[7993,7993],\"mapped\",[7985]],[[7994,7994],\"mapped\",[7986]],[[7995,7995],\"mapped\",[7987]],[[7996,7996],\"mapped\",[7988]],[[7997,7997],\"mapped\",[7989]],[[7998,7998],\"mapped\",[7990]],[[7999,7999],\"mapped\",[7991]],[[8000,8005],\"valid\"],[[8006,8007],\"disallowed\"],[[8008,8008],\"mapped\",[8000]],[[8009,8009],\"mapped\",[8001]],[[8010,8010],\"mapped\",[8002]],[[8011,8011],\"mapped\",[8003]],[[8012,8012],\"mapped\",[8004]],[[8013,8013],\"mapped\",[8005]],[[8014,8015],\"disallowed\"],[[8016,8023],\"valid\"],[[8024,8024],\"disallowed\"],[[8025,8025],\"mapped\",[8017]],[[8026,8026],\"disallowed\"],[[8027,8027],\"mapped\",[8019]],[[8028,8028],\"disallowed\"],[[8029,8029],\"mapped\",[8021]],[[8030,8030],\"disallowed\"],[[8031,8031],\"mapped\",[8023]],[[8032,8039],\"valid\"],[[8040,8040],\"mapped\",[8032]],[[8041,8041],\"mapped\",[8033]],[[8042,8042],\"mapped\",[8034]],[[8043,8043],\"mapped\",[8035]],[[8044,8044],\"mapped\",[8036]],[[8045,8045],\"mapped\",[8037]],[[8046,8046],\"mapped\",[8038]],[[8047,8047],\"mapped\",[8039]],[[8048,8048],\"valid\"],[[8049,8049],\"mapped\",[940]],[[8050,8050],\"valid\"],[[8051,8051],\"mapped\",[941]],[[8052,8052],\"valid\"],[[8053,8053],\"mapped\",[942]],[[8054,8054],\"valid\"],[[8055,8055],\"mapped\",[943]],[[8056,8056],\"valid\"],[[8057,8057],\"mapped\",[972]],[[8058,8058],\"valid\"],[[8059,8059],\"mapped\",[973]],[[8060,8060],\"valid\"],[[8061,8061],\"mapped\",[974]],[[8062,8063],\"disallowed\"],[[8064,8064],\"mapped\",[7936,953]],[[8065,8065],\"mapped\",[7937,953]],[[8066,8066],\"mapped\",[7938,953]],[[8067,8067],\"mapped\",[7939,953]],[[8068,8068],\"mapped\",[7940,953]],[[8069,8069],\"mapped\",[7941,953]],[[8070,8070],\"mapped\",[7942,953]],[[8071,8071],\"mapped\",[7943,953]],[[8072,8072],\"mapped\",[7936,953]],[[8073,8073],\"mapped\",[7937,953]],[[8074,8074],\"mapped\",[7938,953]],[[8075,8075],\"mapped\",[7939,953]],[[8076,8076],\"mapped\",[7940,953]],[[8077,8077],\"mapped\",[7941,953]],[[8078,8078],\"mapped\",[7942,953]],[[8079,8079],\"mapped\",[7943,953]],[[8080,8080],\"mapped\",[7968,953]],[[8081,8081],\"mapped\",[7969,953]],[[8082,8082],\"mapped\",[7970,953]],[[8083,8083],\"mapped\",[7971,953]],[[8084,8084],\"mapped\",[7972,953]],[[8085,8085],\"mapped\",[7973,953]],[[8086,8086],\"mapped\",[7974,953]],[[8087,8087],\"mapped\",[7975,953]],[[8088,8088],\"mapped\",[7968,953]],[[8089,8089],\"mapped\",[7969,953]],[[8090,8090],\"mapped\",[7970,953]],[[8091,8091],\"mapped\",[7971,953]],[[8092,8092],\"mapped\",[7972,953]],[[8093,8093],\"mapped\",[7973,953]],[[8094,8094],\"mapped\",[7974,953]],[[8095,8095],\"mapped\",[7975,953]],[[8096,8096],\"mapped\",[8032,953]],[[8097,8097],\"mapped\",[8033,953]],[[8098,8098],\"mapped\",[8034,953]],[[8099,8099],\"mapped\",[8035,953]],[[8100,8100],\"mapped\",[8036,953]],[[8101,8101],\"mapped\",[8037,953]],[[8102,8102],\"mapped\",[8038,953]],[[8103,8103],\"mapped\",[8039,953]],[[8104,8104],\"mapped\",[8032,953]],[[8105,8105],\"mapped\",[8033,953]],[[8106,8106],\"mapped\",[8034,953]],[[8107,8107],\"mapped\",[8035,953]],[[8108,8108],\"mapped\",[8036,953]],[[8109,8109],\"mapped\",[8037,953]],[[8110,8110],\"mapped\",[8038,953]],[[8111,8111],\"mapped\",[8039,953]],[[8112,8113],\"valid\"],[[8114,8114],\"mapped\",[8048,953]],[[8115,8115],\"mapped\",[945,953]],[[8116,8116],\"mapped\",[940,953]],[[8117,8117],\"disallowed\"],[[8118,8118],\"valid\"],[[8119,8119],\"mapped\",[8118,953]],[[8120,8120],\"mapped\",[8112]],[[8121,8121],\"mapped\",[8113]],[[8122,8122],\"mapped\",[8048]],[[8123,8123],\"mapped\",[940]],[[8124,8124],\"mapped\",[945,953]],[[8125,8125],\"disallowed_STD3_mapped\",[32,787]],[[8126,8126],\"mapped\",[953]],[[8127,8127],\"disallowed_STD3_mapped\",[32,787]],[[8128,8128],\"disallowed_STD3_mapped\",[32,834]],[[8129,8129],\"disallowed_STD3_mapped\",[32,776,834]],[[8130,8130],\"mapped\",[8052,953]],[[8131,8131],\"mapped\",[951,953]],[[8132,8132],\"mapped\",[942,953]],[[8133,8133],\"disallowed\"],[[8134,8134],\"valid\"],[[8135,8135],\"mapped\",[8134,953]],[[8136,8136],\"mapped\",[8050]],[[8137,8137],\"mapped\",[941]],[[8138,8138],\"mapped\",[8052]],[[8139,8139],\"mapped\",[942]],[[8140,8140],\"mapped\",[951,953]],[[8141,8141],\"disallowed_STD3_mapped\",[32,787,768]],[[8142,8142],\"disallowed_STD3_mapped\",[32,787,769]],[[8143,8143],\"disallowed_STD3_mapped\",[32,787,834]],[[8144,8146],\"valid\"],[[8147,8147],\"mapped\",[912]],[[8148,8149],\"disallowed\"],[[8150,8151],\"valid\"],[[8152,8152],\"mapped\",[8144]],[[8153,8153],\"mapped\",[8145]],[[8154,8154],\"mapped\",[8054]],[[8155,8155],\"mapped\",[943]],[[8156,8156],\"disallowed\"],[[8157,8157],\"disallowed_STD3_mapped\",[32,788,768]],[[8158,8158],\"disallowed_STD3_mapped\",[32,788,769]],[[8159,8159],\"disallowed_STD3_mapped\",[32,788,834]],[[8160,8162],\"valid\"],[[8163,8163],\"mapped\",[944]],[[8164,8167],\"valid\"],[[8168,8168],\"mapped\",[8160]],[[8169,8169],\"mapped\",[8161]],[[8170,8170],\"mapped\",[8058]],[[8171,8171],\"mapped\",[973]],[[8172,8172],\"mapped\",[8165]],[[8173,8173],\"disallowed_STD3_mapped\",[32,776,768]],[[8174,8174],\"disallowed_STD3_mapped\",[32,776,769]],[[8175,8175],\"disallowed_STD3_mapped\",[96]],[[8176,8177],\"disallowed\"],[[8178,8178],\"mapped\",[8060,953]],[[8179,8179],\"mapped\",[969,953]],[[8180,8180],\"mapped\",[974,953]],[[8181,8181],\"disallowed\"],[[8182,8182],\"valid\"],[[8183,8183],\"mapped\",[8182,953]],[[8184,8184],\"mapped\",[8056]],[[8185,8185],\"mapped\",[972]],[[8186,8186],\"mapped\",[8060]],[[8187,8187],\"mapped\",[974]],[[8188,8188],\"mapped\",[969,953]],[[8189,8189],\"disallowed_STD3_mapped\",[32,769]],[[8190,8190],\"disallowed_STD3_mapped\",[32,788]],[[8191,8191],\"disallowed\"],[[8192,8202],\"disallowed_STD3_mapped\",[32]],[[8203,8203],\"ignored\"],[[8204,8205],\"deviation\",[]],[[8206,8207],\"disallowed\"],[[8208,8208],\"valid\",[],\"NV8\"],[[8209,8209],\"mapped\",[8208]],[[8210,8214],\"valid\",[],\"NV8\"],[[8215,8215],\"disallowed_STD3_mapped\",[32,819]],[[8216,8227],\"valid\",[],\"NV8\"],[[8228,8230],\"disallowed\"],[[8231,8231],\"valid\",[],\"NV8\"],[[8232,8238],\"disallowed\"],[[8239,8239],\"disallowed_STD3_mapped\",[32]],[[8240,8242],\"valid\",[],\"NV8\"],[[8243,8243],\"mapped\",[8242,8242]],[[8244,8244],\"mapped\",[8242,8242,8242]],[[8245,8245],\"valid\",[],\"NV8\"],[[8246,8246],\"mapped\",[8245,8245]],[[8247,8247],\"mapped\",[8245,8245,8245]],[[8248,8251],\"valid\",[],\"NV8\"],[[8252,8252],\"disallowed_STD3_mapped\",[33,33]],[[8253,8253],\"valid\",[],\"NV8\"],[[8254,8254],\"disallowed_STD3_mapped\",[32,773]],[[8255,8262],\"valid\",[],\"NV8\"],[[8263,8263],\"disallowed_STD3_mapped\",[63,63]],[[8264,8264],\"disallowed_STD3_mapped\",[63,33]],[[8265,8265],\"disallowed_STD3_mapped\",[33,63]],[[8266,8269],\"valid\",[],\"NV8\"],[[8270,8274],\"valid\",[],\"NV8\"],[[8275,8276],\"valid\",[],\"NV8\"],[[8277,8278],\"valid\",[],\"NV8\"],[[8279,8279],\"mapped\",[8242,8242,8242,8242]],[[8280,8286],\"valid\",[],\"NV8\"],[[8287,8287],\"disallowed_STD3_mapped\",[32]],[[8288,8288],\"ignored\"],[[8289,8291],\"disallowed\"],[[8292,8292],\"ignored\"],[[8293,8293],\"disallowed\"],[[8294,8297],\"disallowed\"],[[8298,8303],\"disallowed\"],[[8304,8304],\"mapped\",[48]],[[8305,8305],\"mapped\",[105]],[[8306,8307],\"disallowed\"],[[8308,8308],\"mapped\",[52]],[[8309,8309],\"mapped\",[53]],[[8310,8310],\"mapped\",[54]],[[8311,8311],\"mapped\",[55]],[[8312,8312],\"mapped\",[56]],[[8313,8313],\"mapped\",[57]],[[8314,8314],\"disallowed_STD3_mapped\",[43]],[[8315,8315],\"mapped\",[8722]],[[8316,8316],\"disallowed_STD3_mapped\",[61]],[[8317,8317],\"disallowed_STD3_mapped\",[40]],[[8318,8318],\"disallowed_STD3_mapped\",[41]],[[8319,8319],\"mapped\",[110]],[[8320,8320],\"mapped\",[48]],[[8321,8321],\"mapped\",[49]],[[8322,8322],\"mapped\",[50]],[[8323,8323],\"mapped\",[51]],[[8324,8324],\"mapped\",[52]],[[8325,8325],\"mapped\",[53]],[[8326,8326],\"mapped\",[54]],[[8327,8327],\"mapped\",[55]],[[8328,8328],\"mapped\",[56]],[[8329,8329],\"mapped\",[57]],[[8330,8330],\"disallowed_STD3_mapped\",[43]],[[8331,8331],\"mapped\",[8722]],[[8332,8332],\"disallowed_STD3_mapped\",[61]],[[8333,8333],\"disallowed_STD3_mapped\",[40]],[[8334,8334],\"disallowed_STD3_mapped\",[41]],[[8335,8335],\"disallowed\"],[[8336,8336],\"mapped\",[97]],[[8337,8337],\"mapped\",[101]],[[8338,8338],\"mapped\",[111]],[[8339,8339],\"mapped\",[120]],[[8340,8340],\"mapped\",[601]],[[8341,8341],\"mapped\",[104]],[[8342,8342],\"mapped\",[107]],[[8343,8343],\"mapped\",[108]],[[8344,8344],\"mapped\",[109]],[[8345,8345],\"mapped\",[110]],[[8346,8346],\"mapped\",[112]],[[8347,8347],\"mapped\",[115]],[[8348,8348],\"mapped\",[116]],[[8349,8351],\"disallowed\"],[[8352,8359],\"valid\",[],\"NV8\"],[[8360,8360],\"mapped\",[114,115]],[[8361,8362],\"valid\",[],\"NV8\"],[[8363,8363],\"valid\",[],\"NV8\"],[[8364,8364],\"valid\",[],\"NV8\"],[[8365,8367],\"valid\",[],\"NV8\"],[[8368,8369],\"valid\",[],\"NV8\"],[[8370,8373],\"valid\",[],\"NV8\"],[[8374,8376],\"valid\",[],\"NV8\"],[[8377,8377],\"valid\",[],\"NV8\"],[[8378,8378],\"valid\",[],\"NV8\"],[[8379,8381],\"valid\",[],\"NV8\"],[[8382,8382],\"valid\",[],\"NV8\"],[[8383,8399],\"disallowed\"],[[8400,8417],\"valid\",[],\"NV8\"],[[8418,8419],\"valid\",[],\"NV8\"],[[8420,8426],\"valid\",[],\"NV8\"],[[8427,8427],\"valid\",[],\"NV8\"],[[8428,8431],\"valid\",[],\"NV8\"],[[8432,8432],\"valid\",[],\"NV8\"],[[8433,8447],\"disallowed\"],[[8448,8448],\"disallowed_STD3_mapped\",[97,47,99]],[[8449,8449],\"disallowed_STD3_mapped\",[97,47,115]],[[8450,8450],\"mapped\",[99]],[[8451,8451],\"mapped\",[176,99]],[[8452,8452],\"valid\",[],\"NV8\"],[[8453,8453],\"disallowed_STD3_mapped\",[99,47,111]],[[8454,8454],\"disallowed_STD3_mapped\",[99,47,117]],[[8455,8455],\"mapped\",[603]],[[8456,8456],\"valid\",[],\"NV8\"],[[8457,8457],\"mapped\",[176,102]],[[8458,8458],\"mapped\",[103]],[[8459,8462],\"mapped\",[104]],[[8463,8463],\"mapped\",[295]],[[8464,8465],\"mapped\",[105]],[[8466,8467],\"mapped\",[108]],[[8468,8468],\"valid\",[],\"NV8\"],[[8469,8469],\"mapped\",[110]],[[8470,8470],\"mapped\",[110,111]],[[8471,8472],\"valid\",[],\"NV8\"],[[8473,8473],\"mapped\",[112]],[[8474,8474],\"mapped\",[113]],[[8475,8477],\"mapped\",[114]],[[8478,8479],\"valid\",[],\"NV8\"],[[8480,8480],\"mapped\",[115,109]],[[8481,8481],\"mapped\",[116,101,108]],[[8482,8482],\"mapped\",[116,109]],[[8483,8483],\"valid\",[],\"NV8\"],[[8484,8484],\"mapped\",[122]],[[8485,8485],\"valid\",[],\"NV8\"],[[8486,8486],\"mapped\",[969]],[[8487,8487],\"valid\",[],\"NV8\"],[[8488,8488],\"mapped\",[122]],[[8489,8489],\"valid\",[],\"NV8\"],[[8490,8490],\"mapped\",[107]],[[8491,8491],\"mapped\",[229]],[[8492,8492],\"mapped\",[98]],[[8493,8493],\"mapped\",[99]],[[8494,8494],\"valid\",[],\"NV8\"],[[8495,8496],\"mapped\",[101]],[[8497,8497],\"mapped\",[102]],[[8498,8498],\"disallowed\"],[[8499,8499],\"mapped\",[109]],[[8500,8500],\"mapped\",[111]],[[8501,8501],\"mapped\",[1488]],[[8502,8502],\"mapped\",[1489]],[[8503,8503],\"mapped\",[1490]],[[8504,8504],\"mapped\",[1491]],[[8505,8505],\"mapped\",[105]],[[8506,8506],\"valid\",[],\"NV8\"],[[8507,8507],\"mapped\",[102,97,120]],[[8508,8508],\"mapped\",[960]],[[8509,8510],\"mapped\",[947]],[[8511,8511],\"mapped\",[960]],[[8512,8512],\"mapped\",[8721]],[[8513,8516],\"valid\",[],\"NV8\"],[[8517,8518],\"mapped\",[100]],[[8519,8519],\"mapped\",[101]],[[8520,8520],\"mapped\",[105]],[[8521,8521],\"mapped\",[106]],[[8522,8523],\"valid\",[],\"NV8\"],[[8524,8524],\"valid\",[],\"NV8\"],[[8525,8525],\"valid\",[],\"NV8\"],[[8526,8526],\"valid\"],[[8527,8527],\"valid\",[],\"NV8\"],[[8528,8528],\"mapped\",[49,8260,55]],[[8529,8529],\"mapped\",[49,8260,57]],[[8530,8530],\"mapped\",[49,8260,49,48]],[[8531,8531],\"mapped\",[49,8260,51]],[[8532,8532],\"mapped\",[50,8260,51]],[[8533,8533],\"mapped\",[49,8260,53]],[[8534,8534],\"mapped\",[50,8260,53]],[[8535,8535],\"mapped\",[51,8260,53]],[[8536,8536],\"mapped\",[52,8260,53]],[[8537,8537],\"mapped\",[49,8260,54]],[[8538,8538],\"mapped\",[53,8260,54]],[[8539,8539],\"mapped\",[49,8260,56]],[[8540,8540],\"mapped\",[51,8260,56]],[[8541,8541],\"mapped\",[53,8260,56]],[[8542,8542],\"mapped\",[55,8260,56]],[[8543,8543],\"mapped\",[49,8260]],[[8544,8544],\"mapped\",[105]],[[8545,8545],\"mapped\",[105,105]],[[8546,8546],\"mapped\",[105,105,105]],[[8547,8547],\"mapped\",[105,118]],[[8548,8548],\"mapped\",[118]],[[8549,8549],\"mapped\",[118,105]],[[8550,8550],\"mapped\",[118,105,105]],[[8551,8551],\"mapped\",[118,105,105,105]],[[8552,8552],\"mapped\",[105,120]],[[8553,8553],\"mapped\",[120]],[[8554,8554],\"mapped\",[120,105]],[[8555,8555],\"mapped\",[120,105,105]],[[8556,8556],\"mapped\",[108]],[[8557,8557],\"mapped\",[99]],[[8558,8558],\"mapped\",[100]],[[8559,8559],\"mapped\",[109]],[[8560,8560],\"mapped\",[105]],[[8561,8561],\"mapped\",[105,105]],[[8562,8562],\"mapped\",[105,105,105]],[[8563,8563],\"mapped\",[105,118]],[[8564,8564],\"mapped\",[118]],[[8565,8565],\"mapped\",[118,105]],[[8566,8566],\"mapped\",[118,105,105]],[[8567,8567],\"mapped\",[118,105,105,105]],[[8568,8568],\"mapped\",[105,120]],[[8569,8569],\"mapped\",[120]],[[8570,8570],\"mapped\",[120,105]],[[8571,8571],\"mapped\",[120,105,105]],[[8572,8572],\"mapped\",[108]],[[8573,8573],\"mapped\",[99]],[[8574,8574],\"mapped\",[100]],[[8575,8575],\"mapped\",[109]],[[8576,8578],\"valid\",[],\"NV8\"],[[8579,8579],\"disallowed\"],[[8580,8580],\"valid\"],[[8581,8584],\"valid\",[],\"NV8\"],[[8585,8585],\"mapped\",[48,8260,51]],[[8586,8587],\"valid\",[],\"NV8\"],[[8588,8591],\"disallowed\"],[[8592,8682],\"valid\",[],\"NV8\"],[[8683,8691],\"valid\",[],\"NV8\"],[[8692,8703],\"valid\",[],\"NV8\"],[[8704,8747],\"valid\",[],\"NV8\"],[[8748,8748],\"mapped\",[8747,8747]],[[8749,8749],\"mapped\",[8747,8747,8747]],[[8750,8750],\"valid\",[],\"NV8\"],[[8751,8751],\"mapped\",[8750,8750]],[[8752,8752],\"mapped\",[8750,8750,8750]],[[8753,8799],\"valid\",[],\"NV8\"],[[8800,8800],\"disallowed_STD3_valid\"],[[8801,8813],\"valid\",[],\"NV8\"],[[8814,8815],\"disallowed_STD3_valid\"],[[8816,8945],\"valid\",[],\"NV8\"],[[8946,8959],\"valid\",[],\"NV8\"],[[8960,8960],\"valid\",[],\"NV8\"],[[8961,8961],\"valid\",[],\"NV8\"],[[8962,9000],\"valid\",[],\"NV8\"],[[9001,9001],\"mapped\",[12296]],[[9002,9002],\"mapped\",[12297]],[[9003,9082],\"valid\",[],\"NV8\"],[[9083,9083],\"valid\",[],\"NV8\"],[[9084,9084],\"valid\",[],\"NV8\"],[[9085,9114],\"valid\",[],\"NV8\"],[[9115,9166],\"valid\",[],\"NV8\"],[[9167,9168],\"valid\",[],\"NV8\"],[[9169,9179],\"valid\",[],\"NV8\"],[[9180,9191],\"valid\",[],\"NV8\"],[[9192,9192],\"valid\",[],\"NV8\"],[[9193,9203],\"valid\",[],\"NV8\"],[[9204,9210],\"valid\",[],\"NV8\"],[[9211,9215],\"disallowed\"],[[9216,9252],\"valid\",[],\"NV8\"],[[9253,9254],\"valid\",[],\"NV8\"],[[9255,9279],\"disallowed\"],[[9280,9290],\"valid\",[],\"NV8\"],[[9291,9311],\"disallowed\"],[[9312,9312],\"mapped\",[49]],[[9313,9313],\"mapped\",[50]],[[9314,9314],\"mapped\",[51]],[[9315,9315],\"mapped\",[52]],[[9316,9316],\"mapped\",[53]],[[9317,9317],\"mapped\",[54]],[[9318,9318],\"mapped\",[55]],[[9319,9319],\"mapped\",[56]],[[9320,9320],\"mapped\",[57]],[[9321,9321],\"mapped\",[49,48]],[[9322,9322],\"mapped\",[49,49]],[[9323,9323],\"mapped\",[49,50]],[[9324,9324],\"mapped\",[49,51]],[[9325,9325],\"mapped\",[49,52]],[[9326,9326],\"mapped\",[49,53]],[[9327,9327],\"mapped\",[49,54]],[[9328,9328],\"mapped\",[49,55]],[[9329,9329],\"mapped\",[49,56]],[[9330,9330],\"mapped\",[49,57]],[[9331,9331],\"mapped\",[50,48]],[[9332,9332],\"disallowed_STD3_mapped\",[40,49,41]],[[9333,9333],\"disallowed_STD3_mapped\",[40,50,41]],[[9334,9334],\"disallowed_STD3_mapped\",[40,51,41]],[[9335,9335],\"disallowed_STD3_mapped\",[40,52,41]],[[9336,9336],\"disallowed_STD3_mapped\",[40,53,41]],[[9337,9337],\"disallowed_STD3_mapped\",[40,54,41]],[[9338,9338],\"disallowed_STD3_mapped\",[40,55,41]],[[9339,9339],\"disallowed_STD3_mapped\",[40,56,41]],[[9340,9340],\"disallowed_STD3_mapped\",[40,57,41]],[[9341,9341],\"disallowed_STD3_mapped\",[40,49,48,41]],[[9342,9342],\"disallowed_STD3_mapped\",[40,49,49,41]],[[9343,9343],\"disallowed_STD3_mapped\",[40,49,50,41]],[[9344,9344],\"disallowed_STD3_mapped\",[40,49,51,41]],[[9345,9345],\"disallowed_STD3_mapped\",[40,49,52,41]],[[9346,9346],\"disallowed_STD3_mapped\",[40,49,53,41]],[[9347,9347],\"disallowed_STD3_mapped\",[40,49,54,41]],[[9348,9348],\"disallowed_STD3_mapped\",[40,49,55,41]],[[9349,9349],\"disallowed_STD3_mapped\",[40,49,56,41]],[[9350,9350],\"disallowed_STD3_mapped\",[40,49,57,41]],[[9351,9351],\"disallowed_STD3_mapped\",[40,50,48,41]],[[9352,9371],\"disallowed\"],[[9372,9372],\"disallowed_STD3_mapped\",[40,97,41]],[[9373,9373],\"disallowed_STD3_mapped\",[40,98,41]],[[9374,9374],\"disallowed_STD3_mapped\",[40,99,41]],[[9375,9375],\"disallowed_STD3_mapped\",[40,100,41]],[[9376,9376],\"disallowed_STD3_mapped\",[40,101,41]],[[9377,9377],\"disallowed_STD3_mapped\",[40,102,41]],[[9378,9378],\"disallowed_STD3_mapped\",[40,103,41]],[[9379,9379],\"disallowed_STD3_mapped\",[40,104,41]],[[9380,9380],\"disallowed_STD3_mapped\",[40,105,41]],[[9381,9381],\"disallowed_STD3_mapped\",[40,106,41]],[[9382,9382],\"disallowed_STD3_mapped\",[40,107,41]],[[9383,9383],\"disallowed_STD3_mapped\",[40,108,41]],[[9384,9384],\"disallowed_STD3_mapped\",[40,109,41]],[[9385,9385],\"disallowed_STD3_mapped\",[40,110,41]],[[9386,9386],\"disallowed_STD3_mapped\",[40,111,41]],[[9387,9387],\"disallowed_STD3_mapped\",[40,112,41]],[[9388,9388],\"disallowed_STD3_mapped\",[40,113,41]],[[9389,9389],\"disallowed_STD3_mapped\",[40,114,41]],[[9390,9390],\"disallowed_STD3_mapped\",[40,115,41]],[[9391,9391],\"disallowed_STD3_mapped\",[40,116,41]],[[9392,9392],\"disallowed_STD3_mapped\",[40,117,41]],[[9393,9393],\"disallowed_STD3_mapped\",[40,118,41]],[[9394,9394],\"disallowed_STD3_mapped\",[40,119,41]],[[9395,9395],\"disallowed_STD3_mapped\",[40,120,41]],[[9396,9396],\"disallowed_STD3_mapped\",[40,121,41]],[[9397,9397],\"disallowed_STD3_mapped\",[40,122,41]],[[9398,9398],\"mapped\",[97]],[[9399,9399],\"mapped\",[98]],[[9400,9400],\"mapped\",[99]],[[9401,9401],\"mapped\",[100]],[[9402,9402],\"mapped\",[101]],[[9403,9403],\"mapped\",[102]],[[9404,9404],\"mapped\",[103]],[[9405,9405],\"mapped\",[104]],[[9406,9406],\"mapped\",[105]],[[9407,9407],\"mapped\",[106]],[[9408,9408],\"mapped\",[107]],[[9409,9409],\"mapped\",[108]],[[9410,9410],\"mapped\",[109]],[[9411,9411],\"mapped\",[110]],[[9412,9412],\"mapped\",[111]],[[9413,9413],\"mapped\",[112]],[[9414,9414],\"mapped\",[113]],[[9415,9415],\"mapped\",[114]],[[9416,9416],\"mapped\",[115]],[[9417,9417],\"mapped\",[116]],[[9418,9418],\"mapped\",[117]],[[9419,9419],\"mapped\",[118]],[[9420,9420],\"mapped\",[119]],[[9421,9421],\"mapped\",[120]],[[9422,9422],\"mapped\",[121]],[[9423,9423],\"mapped\",[122]],[[9424,9424],\"mapped\",[97]],[[9425,9425],\"mapped\",[98]],[[9426,9426],\"mapped\",[99]],[[9427,9427],\"mapped\",[100]],[[9428,9428],\"mapped\",[101]],[[9429,9429],\"mapped\",[102]],[[9430,9430],\"mapped\",[103]],[[9431,9431],\"mapped\",[104]],[[9432,9432],\"mapped\",[105]],[[9433,9433],\"mapped\",[106]],[[9434,9434],\"mapped\",[107]],[[9435,9435],\"mapped\",[108]],[[9436,9436],\"mapped\",[109]],[[9437,9437],\"mapped\",[110]],[[9438,9438],\"mapped\",[111]],[[9439,9439],\"mapped\",[112]],[[9440,9440],\"mapped\",[113]],[[9441,9441],\"mapped\",[114]],[[9442,9442],\"mapped\",[115]],[[9443,9443],\"mapped\",[116]],[[9444,9444],\"mapped\",[117]],[[9445,9445],\"mapped\",[118]],[[9446,9446],\"mapped\",[119]],[[9447,9447],\"mapped\",[120]],[[9448,9448],\"mapped\",[121]],[[9449,9449],\"mapped\",[122]],[[9450,9450],\"mapped\",[48]],[[9451,9470],\"valid\",[],\"NV8\"],[[9471,9471],\"valid\",[],\"NV8\"],[[9472,9621],\"valid\",[],\"NV8\"],[[9622,9631],\"valid\",[],\"NV8\"],[[9632,9711],\"valid\",[],\"NV8\"],[[9712,9719],\"valid\",[],\"NV8\"],[[9720,9727],\"valid\",[],\"NV8\"],[[9728,9747],\"valid\",[],\"NV8\"],[[9748,9749],\"valid\",[],\"NV8\"],[[9750,9751],\"valid\",[],\"NV8\"],[[9752,9752],\"valid\",[],\"NV8\"],[[9753,9753],\"valid\",[],\"NV8\"],[[9754,9839],\"valid\",[],\"NV8\"],[[9840,9841],\"valid\",[],\"NV8\"],[[9842,9853],\"valid\",[],\"NV8\"],[[9854,9855],\"valid\",[],\"NV8\"],[[9856,9865],\"valid\",[],\"NV8\"],[[9866,9873],\"valid\",[],\"NV8\"],[[9874,9884],\"valid\",[],\"NV8\"],[[9885,9885],\"valid\",[],\"NV8\"],[[9886,9887],\"valid\",[],\"NV8\"],[[9888,9889],\"valid\",[],\"NV8\"],[[9890,9905],\"valid\",[],\"NV8\"],[[9906,9906],\"valid\",[],\"NV8\"],[[9907,9916],\"valid\",[],\"NV8\"],[[9917,9919],\"valid\",[],\"NV8\"],[[9920,9923],\"valid\",[],\"NV8\"],[[9924,9933],\"valid\",[],\"NV8\"],[[9934,9934],\"valid\",[],\"NV8\"],[[9935,9953],\"valid\",[],\"NV8\"],[[9954,9954],\"valid\",[],\"NV8\"],[[9955,9955],\"valid\",[],\"NV8\"],[[9956,9959],\"valid\",[],\"NV8\"],[[9960,9983],\"valid\",[],\"NV8\"],[[9984,9984],\"valid\",[],\"NV8\"],[[9985,9988],\"valid\",[],\"NV8\"],[[9989,9989],\"valid\",[],\"NV8\"],[[9990,9993],\"valid\",[],\"NV8\"],[[9994,9995],\"valid\",[],\"NV8\"],[[9996,10023],\"valid\",[],\"NV8\"],[[10024,10024],\"valid\",[],\"NV8\"],[[10025,10059],\"valid\",[],\"NV8\"],[[10060,10060],\"valid\",[],\"NV8\"],[[10061,10061],\"valid\",[],\"NV8\"],[[10062,10062],\"valid\",[],\"NV8\"],[[10063,10066],\"valid\",[],\"NV8\"],[[10067,10069],\"valid\",[],\"NV8\"],[[10070,10070],\"valid\",[],\"NV8\"],[[10071,10071],\"valid\",[],\"NV8\"],[[10072,10078],\"valid\",[],\"NV8\"],[[10079,10080],\"valid\",[],\"NV8\"],[[10081,10087],\"valid\",[],\"NV8\"],[[10088,10101],\"valid\",[],\"NV8\"],[[10102,10132],\"valid\",[],\"NV8\"],[[10133,10135],\"valid\",[],\"NV8\"],[[10136,10159],\"valid\",[],\"NV8\"],[[10160,10160],\"valid\",[],\"NV8\"],[[10161,10174],\"valid\",[],\"NV8\"],[[10175,10175],\"valid\",[],\"NV8\"],[[10176,10182],\"valid\",[],\"NV8\"],[[10183,10186],\"valid\",[],\"NV8\"],[[10187,10187],\"valid\",[],\"NV8\"],[[10188,10188],\"valid\",[],\"NV8\"],[[10189,10189],\"valid\",[],\"NV8\"],[[10190,10191],\"valid\",[],\"NV8\"],[[10192,10219],\"valid\",[],\"NV8\"],[[10220,10223],\"valid\",[],\"NV8\"],[[10224,10239],\"valid\",[],\"NV8\"],[[10240,10495],\"valid\",[],\"NV8\"],[[10496,10763],\"valid\",[],\"NV8\"],[[10764,10764],\"mapped\",[8747,8747,8747,8747]],[[10765,10867],\"valid\",[],\"NV8\"],[[10868,10868],\"disallowed_STD3_mapped\",[58,58,61]],[[10869,10869],\"disallowed_STD3_mapped\",[61,61]],[[10870,10870],\"disallowed_STD3_mapped\",[61,61,61]],[[10871,10971],\"valid\",[],\"NV8\"],[[10972,10972],\"mapped\",[10973,824]],[[10973,11007],\"valid\",[],\"NV8\"],[[11008,11021],\"valid\",[],\"NV8\"],[[11022,11027],\"valid\",[],\"NV8\"],[[11028,11034],\"valid\",[],\"NV8\"],[[11035,11039],\"valid\",[],\"NV8\"],[[11040,11043],\"valid\",[],\"NV8\"],[[11044,11084],\"valid\",[],\"NV8\"],[[11085,11087],\"valid\",[],\"NV8\"],[[11088,11092],\"valid\",[],\"NV8\"],[[11093,11097],\"valid\",[],\"NV8\"],[[11098,11123],\"valid\",[],\"NV8\"],[[11124,11125],\"disallowed\"],[[11126,11157],\"valid\",[],\"NV8\"],[[11158,11159],\"disallowed\"],[[11160,11193],\"valid\",[],\"NV8\"],[[11194,11196],\"disallowed\"],[[11197,11208],\"valid\",[],\"NV8\"],[[11209,11209],\"disallowed\"],[[11210,11217],\"valid\",[],\"NV8\"],[[11218,11243],\"disallowed\"],[[11244,11247],\"valid\",[],\"NV8\"],[[11248,11263],\"disallowed\"],[[11264,11264],\"mapped\",[11312]],[[11265,11265],\"mapped\",[11313]],[[11266,11266],\"mapped\",[11314]],[[11267,11267],\"mapped\",[11315]],[[11268,11268],\"mapped\",[11316]],[[11269,11269],\"mapped\",[11317]],[[11270,11270],\"mapped\",[11318]],[[11271,11271],\"mapped\",[11319]],[[11272,11272],\"mapped\",[11320]],[[11273,11273],\"mapped\",[11321]],[[11274,11274],\"mapped\",[11322]],[[11275,11275],\"mapped\",[11323]],[[11276,11276],\"mapped\",[11324]],[[11277,11277],\"mapped\",[11325]],[[11278,11278],\"mapped\",[11326]],[[11279,11279],\"mapped\",[11327]],[[11280,11280],\"mapped\",[11328]],[[11281,11281],\"mapped\",[11329]],[[11282,11282],\"mapped\",[11330]],[[11283,11283],\"mapped\",[11331]],[[11284,11284],\"mapped\",[11332]],[[11285,11285],\"mapped\",[11333]],[[11286,11286],\"mapped\",[11334]],[[11287,11287],\"mapped\",[11335]],[[11288,11288],\"mapped\",[11336]],[[11289,11289],\"mapped\",[11337]],[[11290,11290],\"mapped\",[11338]],[[11291,11291],\"mapped\",[11339]],[[11292,11292],\"mapped\",[11340]],[[11293,11293],\"mapped\",[11341]],[[11294,11294],\"mapped\",[11342]],[[11295,11295],\"mapped\",[11343]],[[11296,11296],\"mapped\",[11344]],[[11297,11297],\"mapped\",[11345]],[[11298,11298],\"mapped\",[11346]],[[11299,11299],\"mapped\",[11347]],[[11300,11300],\"mapped\",[11348]],[[11301,11301],\"mapped\",[11349]],[[11302,11302],\"mapped\",[11350]],[[11303,11303],\"mapped\",[11351]],[[11304,11304],\"mapped\",[11352]],[[11305,11305],\"mapped\",[11353]],[[11306,11306],\"mapped\",[11354]],[[11307,11307],\"mapped\",[11355]],[[11308,11308],\"mapped\",[11356]],[[11309,11309],\"mapped\",[11357]],[[11310,11310],\"mapped\",[11358]],[[11311,11311],\"disallowed\"],[[11312,11358],\"valid\"],[[11359,11359],\"disallowed\"],[[11360,11360],\"mapped\",[11361]],[[11361,11361],\"valid\"],[[11362,11362],\"mapped\",[619]],[[11363,11363],\"mapped\",[7549]],[[11364,11364],\"mapped\",[637]],[[11365,11366],\"valid\"],[[11367,11367],\"mapped\",[11368]],[[11368,11368],\"valid\"],[[11369,11369],\"mapped\",[11370]],[[11370,11370],\"valid\"],[[11371,11371],\"mapped\",[11372]],[[11372,11372],\"valid\"],[[11373,11373],\"mapped\",[593]],[[11374,11374],\"mapped\",[625]],[[11375,11375],\"mapped\",[592]],[[11376,11376],\"mapped\",[594]],[[11377,11377],\"valid\"],[[11378,11378],\"mapped\",[11379]],[[11379,11379],\"valid\"],[[11380,11380],\"valid\"],[[11381,11381],\"mapped\",[11382]],[[11382,11383],\"valid\"],[[11384,11387],\"valid\"],[[11388,11388],\"mapped\",[106]],[[11389,11389],\"mapped\",[118]],[[11390,11390],\"mapped\",[575]],[[11391,11391],\"mapped\",[576]],[[11392,11392],\"mapped\",[11393]],[[11393,11393],\"valid\"],[[11394,11394],\"mapped\",[11395]],[[11395,11395],\"valid\"],[[11396,11396],\"mapped\",[11397]],[[11397,11397],\"valid\"],[[11398,11398],\"mapped\",[11399]],[[11399,11399],\"valid\"],[[11400,11400],\"mapped\",[11401]],[[11401,11401],\"valid\"],[[11402,11402],\"mapped\",[11403]],[[11403,11403],\"valid\"],[[11404,11404],\"mapped\",[11405]],[[11405,11405],\"valid\"],[[11406,11406],\"mapped\",[11407]],[[11407,11407],\"valid\"],[[11408,11408],\"mapped\",[11409]],[[11409,11409],\"valid\"],[[11410,11410],\"mapped\",[11411]],[[11411,11411],\"valid\"],[[11412,11412],\"mapped\",[11413]],[[11413,11413],\"valid\"],[[11414,11414],\"mapped\",[11415]],[[11415,11415],\"valid\"],[[11416,11416],\"mapped\",[11417]],[[11417,11417],\"valid\"],[[11418,11418],\"mapped\",[11419]],[[11419,11419],\"valid\"],[[11420,11420],\"mapped\",[11421]],[[11421,11421],\"valid\"],[[11422,11422],\"mapped\",[11423]],[[11423,11423],\"valid\"],[[11424,11424],\"mapped\",[11425]],[[11425,11425],\"valid\"],[[11426,11426],\"mapped\",[11427]],[[11427,11427],\"valid\"],[[11428,11428],\"mapped\",[11429]],[[11429,11429],\"valid\"],[[11430,11430],\"mapped\",[11431]],[[11431,11431],\"valid\"],[[11432,11432],\"mapped\",[11433]],[[11433,11433],\"valid\"],[[11434,11434],\"mapped\",[11435]],[[11435,11435],\"valid\"],[[11436,11436],\"mapped\",[11437]],[[11437,11437],\"valid\"],[[11438,11438],\"mapped\",[11439]],[[11439,11439],\"valid\"],[[11440,11440],\"mapped\",[11441]],[[11441,11441],\"valid\"],[[11442,11442],\"mapped\",[11443]],[[11443,11443],\"valid\"],[[11444,11444],\"mapped\",[11445]],[[11445,11445],\"valid\"],[[11446,11446],\"mapped\",[11447]],[[11447,11447],\"valid\"],[[11448,11448],\"mapped\",[11449]],[[11449,11449],\"valid\"],[[11450,11450],\"mapped\",[11451]],[[11451,11451],\"valid\"],[[11452,11452],\"mapped\",[11453]],[[11453,11453],\"valid\"],[[11454,11454],\"mapped\",[11455]],[[11455,11455],\"valid\"],[[11456,11456],\"mapped\",[11457]],[[11457,11457],\"valid\"],[[11458,11458],\"mapped\",[11459]],[[11459,11459],\"valid\"],[[11460,11460],\"mapped\",[11461]],[[11461,11461],\"valid\"],[[11462,11462],\"mapped\",[11463]],[[11463,11463],\"valid\"],[[11464,11464],\"mapped\",[11465]],[[11465,11465],\"valid\"],[[11466,11466],\"mapped\",[11467]],[[11467,11467],\"valid\"],[[11468,11468],\"mapped\",[11469]],[[11469,11469],\"valid\"],[[11470,11470],\"mapped\",[11471]],[[11471,11471],\"valid\"],[[11472,11472],\"mapped\",[11473]],[[11473,11473],\"valid\"],[[11474,11474],\"mapped\",[11475]],[[11475,11475],\"valid\"],[[11476,11476],\"mapped\",[11477]],[[11477,11477],\"valid\"],[[11478,11478],\"mapped\",[11479]],[[11479,11479],\"valid\"],[[11480,11480],\"mapped\",[11481]],[[11481,11481],\"valid\"],[[11482,11482],\"mapped\",[11483]],[[11483,11483],\"valid\"],[[11484,11484],\"mapped\",[11485]],[[11485,11485],\"valid\"],[[11486,11486],\"mapped\",[11487]],[[11487,11487],\"valid\"],[[11488,11488],\"mapped\",[11489]],[[11489,11489],\"valid\"],[[11490,11490],\"mapped\",[11491]],[[11491,11492],\"valid\"],[[11493,11498],\"valid\",[],\"NV8\"],[[11499,11499],\"mapped\",[11500]],[[11500,11500],\"valid\"],[[11501,11501],\"mapped\",[11502]],[[11502,11505],\"valid\"],[[11506,11506],\"mapped\",[11507]],[[11507,11507],\"valid\"],[[11508,11512],\"disallowed\"],[[11513,11519],\"valid\",[],\"NV8\"],[[11520,11557],\"valid\"],[[11558,11558],\"disallowed\"],[[11559,11559],\"valid\"],[[11560,11564],\"disallowed\"],[[11565,11565],\"valid\"],[[11566,11567],\"disallowed\"],[[11568,11621],\"valid\"],[[11622,11623],\"valid\"],[[11624,11630],\"disallowed\"],[[11631,11631],\"mapped\",[11617]],[[11632,11632],\"valid\",[],\"NV8\"],[[11633,11646],\"disallowed\"],[[11647,11647],\"valid\"],[[11648,11670],\"valid\"],[[11671,11679],\"disallowed\"],[[11680,11686],\"valid\"],[[11687,11687],\"disallowed\"],[[11688,11694],\"valid\"],[[11695,11695],\"disallowed\"],[[11696,11702],\"valid\"],[[11703,11703],\"disallowed\"],[[11704,11710],\"valid\"],[[11711,11711],\"disallowed\"],[[11712,11718],\"valid\"],[[11719,11719],\"disallowed\"],[[11720,11726],\"valid\"],[[11727,11727],\"disallowed\"],[[11728,11734],\"valid\"],[[11735,11735],\"disallowed\"],[[11736,11742],\"valid\"],[[11743,11743],\"disallowed\"],[[11744,11775],\"valid\"],[[11776,11799],\"valid\",[],\"NV8\"],[[11800,11803],\"valid\",[],\"NV8\"],[[11804,11805],\"valid\",[],\"NV8\"],[[11806,11822],\"valid\",[],\"NV8\"],[[11823,11823],\"valid\"],[[11824,11824],\"valid\",[],\"NV8\"],[[11825,11825],\"valid\",[],\"NV8\"],[[11826,11835],\"valid\",[],\"NV8\"],[[11836,11842],\"valid\",[],\"NV8\"],[[11843,11903],\"disallowed\"],[[11904,11929],\"valid\",[],\"NV8\"],[[11930,11930],\"disallowed\"],[[11931,11934],\"valid\",[],\"NV8\"],[[11935,11935],\"mapped\",[27597]],[[11936,12018],\"valid\",[],\"NV8\"],[[12019,12019],\"mapped\",[40863]],[[12020,12031],\"disallowed\"],[[12032,12032],\"mapped\",[19968]],[[12033,12033],\"mapped\",[20008]],[[12034,12034],\"mapped\",[20022]],[[12035,12035],\"mapped\",[20031]],[[12036,12036],\"mapped\",[20057]],[[12037,12037],\"mapped\",[20101]],[[12038,12038],\"mapped\",[20108]],[[12039,12039],\"mapped\",[20128]],[[12040,12040],\"mapped\",[20154]],[[12041,12041],\"mapped\",[20799]],[[12042,12042],\"mapped\",[20837]],[[12043,12043],\"mapped\",[20843]],[[12044,12044],\"mapped\",[20866]],[[12045,12045],\"mapped\",[20886]],[[12046,12046],\"mapped\",[20907]],[[12047,12047],\"mapped\",[20960]],[[12048,12048],\"mapped\",[20981]],[[12049,12049],\"mapped\",[20992]],[[12050,12050],\"mapped\",[21147]],[[12051,12051],\"mapped\",[21241]],[[12052,12052],\"mapped\",[21269]],[[12053,12053],\"mapped\",[21274]],[[12054,12054],\"mapped\",[21304]],[[12055,12055],\"mapped\",[21313]],[[12056,12056],\"mapped\",[21340]],[[12057,12057],\"mapped\",[21353]],[[12058,12058],\"mapped\",[21378]],[[12059,12059],\"mapped\",[21430]],[[12060,12060],\"mapped\",[21448]],[[12061,12061],\"mapped\",[21475]],[[12062,12062],\"mapped\",[22231]],[[12063,12063],\"mapped\",[22303]],[[12064,12064],\"mapped\",[22763]],[[12065,12065],\"mapped\",[22786]],[[12066,12066],\"mapped\",[22794]],[[12067,12067],\"mapped\",[22805]],[[12068,12068],\"mapped\",[22823]],[[12069,12069],\"mapped\",[22899]],[[12070,12070],\"mapped\",[23376]],[[12071,12071],\"mapped\",[23424]],[[12072,12072],\"mapped\",[23544]],[[12073,12073],\"mapped\",[23567]],[[12074,12074],\"mapped\",[23586]],[[12075,12075],\"mapped\",[23608]],[[12076,12076],\"mapped\",[23662]],[[12077,12077],\"mapped\",[23665]],[[12078,12078],\"mapped\",[24027]],[[12079,12079],\"mapped\",[24037]],[[12080,12080],\"mapped\",[24049]],[[12081,12081],\"mapped\",[24062]],[[12082,12082],\"mapped\",[24178]],[[12083,12083],\"mapped\",[24186]],[[12084,12084],\"mapped\",[24191]],[[12085,12085],\"mapped\",[24308]],[[12086,12086],\"mapped\",[24318]],[[12087,12087],\"mapped\",[24331]],[[12088,12088],\"mapped\",[24339]],[[12089,12089],\"mapped\",[24400]],[[12090,12090],\"mapped\",[24417]],[[12091,12091],\"mapped\",[24435]],[[12092,12092],\"mapped\",[24515]],[[12093,12093],\"mapped\",[25096]],[[12094,12094],\"mapped\",[25142]],[[12095,12095],\"mapped\",[25163]],[[12096,12096],\"mapped\",[25903]],[[12097,12097],\"mapped\",[25908]],[[12098,12098],\"mapped\",[25991]],[[12099,12099],\"mapped\",[26007]],[[12100,12100],\"mapped\",[26020]],[[12101,12101],\"mapped\",[26041]],[[12102,12102],\"mapped\",[26080]],[[12103,12103],\"mapped\",[26085]],[[12104,12104],\"mapped\",[26352]],[[12105,12105],\"mapped\",[26376]],[[12106,12106],\"mapped\",[26408]],[[12107,12107],\"mapped\",[27424]],[[12108,12108],\"mapped\",[27490]],[[12109,12109],\"mapped\",[27513]],[[12110,12110],\"mapped\",[27571]],[[12111,12111],\"mapped\",[27595]],[[12112,12112],\"mapped\",[27604]],[[12113,12113],\"mapped\",[27611]],[[12114,12114],\"mapped\",[27663]],[[12115,12115],\"mapped\",[27668]],[[12116,12116],\"mapped\",[27700]],[[12117,12117],\"mapped\",[28779]],[[12118,12118],\"mapped\",[29226]],[[12119,12119],\"mapped\",[29238]],[[12120,12120],\"mapped\",[29243]],[[12121,12121],\"mapped\",[29247]],[[12122,12122],\"mapped\",[29255]],[[12123,12123],\"mapped\",[29273]],[[12124,12124],\"mapped\",[29275]],[[12125,12125],\"mapped\",[29356]],[[12126,12126],\"mapped\",[29572]],[[12127,12127],\"mapped\",[29577]],[[12128,12128],\"mapped\",[29916]],[[12129,12129],\"mapped\",[29926]],[[12130,12130],\"mapped\",[29976]],[[12131,12131],\"mapped\",[29983]],[[12132,12132],\"mapped\",[29992]],[[12133,12133],\"mapped\",[30000]],[[12134,12134],\"mapped\",[30091]],[[12135,12135],\"mapped\",[30098]],[[12136,12136],\"mapped\",[30326]],[[12137,12137],\"mapped\",[30333]],[[12138,12138],\"mapped\",[30382]],[[12139,12139],\"mapped\",[30399]],[[12140,12140],\"mapped\",[30446]],[[12141,12141],\"mapped\",[30683]],[[12142,12142],\"mapped\",[30690]],[[12143,12143],\"mapped\",[30707]],[[12144,12144],\"mapped\",[31034]],[[12145,12145],\"mapped\",[31160]],[[12146,12146],\"mapped\",[31166]],[[12147,12147],\"mapped\",[31348]],[[12148,12148],\"mapped\",[31435]],[[12149,12149],\"mapped\",[31481]],[[12150,12150],\"mapped\",[31859]],[[12151,12151],\"mapped\",[31992]],[[12152,12152],\"mapped\",[32566]],[[12153,12153],\"mapped\",[32593]],[[12154,12154],\"mapped\",[32650]],[[12155,12155],\"mapped\",[32701]],[[12156,12156],\"mapped\",[32769]],[[12157,12157],\"mapped\",[32780]],[[12158,12158],\"mapped\",[32786]],[[12159,12159],\"mapped\",[32819]],[[12160,12160],\"mapped\",[32895]],[[12161,12161],\"mapped\",[32905]],[[12162,12162],\"mapped\",[33251]],[[12163,12163],\"mapped\",[33258]],[[12164,12164],\"mapped\",[33267]],[[12165,12165],\"mapped\",[33276]],[[12166,12166],\"mapped\",[33292]],[[12167,12167],\"mapped\",[33307]],[[12168,12168],\"mapped\",[33311]],[[12169,12169],\"mapped\",[33390]],[[12170,12170],\"mapped\",[33394]],[[12171,12171],\"mapped\",[33400]],[[12172,12172],\"mapped\",[34381]],[[12173,12173],\"mapped\",[34411]],[[12174,12174],\"mapped\",[34880]],[[12175,12175],\"mapped\",[34892]],[[12176,12176],\"mapped\",[34915]],[[12177,12177],\"mapped\",[35198]],[[12178,12178],\"mapped\",[35211]],[[12179,12179],\"mapped\",[35282]],[[12180,12180],\"mapped\",[35328]],[[12181,12181],\"mapped\",[35895]],[[12182,12182],\"mapped\",[35910]],[[12183,12183],\"mapped\",[35925]],[[12184,12184],\"mapped\",[35960]],[[12185,12185],\"mapped\",[35997]],[[12186,12186],\"mapped\",[36196]],[[12187,12187],\"mapped\",[36208]],[[12188,12188],\"mapped\",[36275]],[[12189,12189],\"mapped\",[36523]],[[12190,12190],\"mapped\",[36554]],[[12191,12191],\"mapped\",[36763]],[[12192,12192],\"mapped\",[36784]],[[12193,12193],\"mapped\",[36789]],[[12194,12194],\"mapped\",[37009]],[[12195,12195],\"mapped\",[37193]],[[12196,12196],\"mapped\",[37318]],[[12197,12197],\"mapped\",[37324]],[[12198,12198],\"mapped\",[37329]],[[12199,12199],\"mapped\",[38263]],[[12200,12200],\"mapped\",[38272]],[[12201,12201],\"mapped\",[38428]],[[12202,12202],\"mapped\",[38582]],[[12203,12203],\"mapped\",[38585]],[[12204,12204],\"mapped\",[38632]],[[12205,12205],\"mapped\",[38737]],[[12206,12206],\"mapped\",[38750]],[[12207,12207],\"mapped\",[38754]],[[12208,12208],\"mapped\",[38761]],[[12209,12209],\"mapped\",[38859]],[[12210,12210],\"mapped\",[38893]],[[12211,12211],\"mapped\",[38899]],[[12212,12212],\"mapped\",[38913]],[[12213,12213],\"mapped\",[39080]],[[12214,12214],\"mapped\",[39131]],[[12215,12215],\"mapped\",[39135]],[[12216,12216],\"mapped\",[39318]],[[12217,12217],\"mapped\",[39321]],[[12218,12218],\"mapped\",[39340]],[[12219,12219],\"mapped\",[39592]],[[12220,12220],\"mapped\",[39640]],[[12221,12221],\"mapped\",[39647]],[[12222,12222],\"mapped\",[39717]],[[12223,12223],\"mapped\",[39727]],[[12224,12224],\"mapped\",[39730]],[[12225,12225],\"mapped\",[39740]],[[12226,12226],\"mapped\",[39770]],[[12227,12227],\"mapped\",[40165]],[[12228,12228],\"mapped\",[40565]],[[12229,12229],\"mapped\",[40575]],[[12230,12230],\"mapped\",[40613]],[[12231,12231],\"mapped\",[40635]],[[12232,12232],\"mapped\",[40643]],[[12233,12233],\"mapped\",[40653]],[[12234,12234],\"mapped\",[40657]],[[12235,12235],\"mapped\",[40697]],[[12236,12236],\"mapped\",[40701]],[[12237,12237],\"mapped\",[40718]],[[12238,12238],\"mapped\",[40723]],[[12239,12239],\"mapped\",[40736]],[[12240,12240],\"mapped\",[40763]],[[12241,12241],\"mapped\",[40778]],[[12242,12242],\"mapped\",[40786]],[[12243,12243],\"mapped\",[40845]],[[12244,12244],\"mapped\",[40860]],[[12245,12245],\"mapped\",[40864]],[[12246,12271],\"disallowed\"],[[12272,12283],\"disallowed\"],[[12284,12287],\"disallowed\"],[[12288,12288],\"disallowed_STD3_mapped\",[32]],[[12289,12289],\"valid\",[],\"NV8\"],[[12290,12290],\"mapped\",[46]],[[12291,12292],\"valid\",[],\"NV8\"],[[12293,12295],\"valid\"],[[12296,12329],\"valid\",[],\"NV8\"],[[12330,12333],\"valid\"],[[12334,12341],\"valid\",[],\"NV8\"],[[12342,12342],\"mapped\",[12306]],[[12343,12343],\"valid\",[],\"NV8\"],[[12344,12344],\"mapped\",[21313]],[[12345,12345],\"mapped\",[21316]],[[12346,12346],\"mapped\",[21317]],[[12347,12347],\"valid\",[],\"NV8\"],[[12348,12348],\"valid\"],[[12349,12349],\"valid\",[],\"NV8\"],[[12350,12350],\"valid\",[],\"NV8\"],[[12351,12351],\"valid\",[],\"NV8\"],[[12352,12352],\"disallowed\"],[[12353,12436],\"valid\"],[[12437,12438],\"valid\"],[[12439,12440],\"disallowed\"],[[12441,12442],\"valid\"],[[12443,12443],\"disallowed_STD3_mapped\",[32,12441]],[[12444,12444],\"disallowed_STD3_mapped\",[32,12442]],[[12445,12446],\"valid\"],[[12447,12447],\"mapped\",[12424,12426]],[[12448,12448],\"valid\",[],\"NV8\"],[[12449,12542],\"valid\"],[[12543,12543],\"mapped\",[12467,12488]],[[12544,12548],\"disallowed\"],[[12549,12588],\"valid\"],[[12589,12589],\"valid\"],[[12590,12592],\"disallowed\"],[[12593,12593],\"mapped\",[4352]],[[12594,12594],\"mapped\",[4353]],[[12595,12595],\"mapped\",[4522]],[[12596,12596],\"mapped\",[4354]],[[12597,12597],\"mapped\",[4524]],[[12598,12598],\"mapped\",[4525]],[[12599,12599],\"mapped\",[4355]],[[12600,12600],\"mapped\",[4356]],[[12601,12601],\"mapped\",[4357]],[[12602,12602],\"mapped\",[4528]],[[12603,12603],\"mapped\",[4529]],[[12604,12604],\"mapped\",[4530]],[[12605,12605],\"mapped\",[4531]],[[12606,12606],\"mapped\",[4532]],[[12607,12607],\"mapped\",[4533]],[[12608,12608],\"mapped\",[4378]],[[12609,12609],\"mapped\",[4358]],[[12610,12610],\"mapped\",[4359]],[[12611,12611],\"mapped\",[4360]],[[12612,12612],\"mapped\",[4385]],[[12613,12613],\"mapped\",[4361]],[[12614,12614],\"mapped\",[4362]],[[12615,12615],\"mapped\",[4363]],[[12616,12616],\"mapped\",[4364]],[[12617,12617],\"mapped\",[4365]],[[12618,12618],\"mapped\",[4366]],[[12619,12619],\"mapped\",[4367]],[[12620,12620],\"mapped\",[4368]],[[12621,12621],\"mapped\",[4369]],[[12622,12622],\"mapped\",[4370]],[[12623,12623],\"mapped\",[4449]],[[12624,12624],\"mapped\",[4450]],[[12625,12625],\"mapped\",[4451]],[[12626,12626],\"mapped\",[4452]],[[12627,12627],\"mapped\",[4453]],[[12628,12628],\"mapped\",[4454]],[[12629,12629],\"mapped\",[4455]],[[12630,12630],\"mapped\",[4456]],[[12631,12631],\"mapped\",[4457]],[[12632,12632],\"mapped\",[4458]],[[12633,12633],\"mapped\",[4459]],[[12634,12634],\"mapped\",[4460]],[[12635,12635],\"mapped\",[4461]],[[12636,12636],\"mapped\",[4462]],[[12637,12637],\"mapped\",[4463]],[[12638,12638],\"mapped\",[4464]],[[12639,12639],\"mapped\",[4465]],[[12640,12640],\"mapped\",[4466]],[[12641,12641],\"mapped\",[4467]],[[12642,12642],\"mapped\",[4468]],[[12643,12643],\"mapped\",[4469]],[[12644,12644],\"disallowed\"],[[12645,12645],\"mapped\",[4372]],[[12646,12646],\"mapped\",[4373]],[[12647,12647],\"mapped\",[4551]],[[12648,12648],\"mapped\",[4552]],[[12649,12649],\"mapped\",[4556]],[[12650,12650],\"mapped\",[4558]],[[12651,12651],\"mapped\",[4563]],[[12652,12652],\"mapped\",[4567]],[[12653,12653],\"mapped\",[4569]],[[12654,12654],\"mapped\",[4380]],[[12655,12655],\"mapped\",[4573]],[[12656,12656],\"mapped\",[4575]],[[12657,12657],\"mapped\",[4381]],[[12658,12658],\"mapped\",[4382]],[[12659,12659],\"mapped\",[4384]],[[12660,12660],\"mapped\",[4386]],[[12661,12661],\"mapped\",[4387]],[[12662,12662],\"mapped\",[4391]],[[12663,12663],\"mapped\",[4393]],[[12664,12664],\"mapped\",[4395]],[[12665,12665],\"mapped\",[4396]],[[12666,12666],\"mapped\",[4397]],[[12667,12667],\"mapped\",[4398]],[[12668,12668],\"mapped\",[4399]],[[12669,12669],\"mapped\",[4402]],[[12670,12670],\"mapped\",[4406]],[[12671,12671],\"mapped\",[4416]],[[12672,12672],\"mapped\",[4423]],[[12673,12673],\"mapped\",[4428]],[[12674,12674],\"mapped\",[4593]],[[12675,12675],\"mapped\",[4594]],[[12676,12676],\"mapped\",[4439]],[[12677,12677],\"mapped\",[4440]],[[12678,12678],\"mapped\",[4441]],[[12679,12679],\"mapped\",[4484]],[[12680,12680],\"mapped\",[4485]],[[12681,12681],\"mapped\",[4488]],[[12682,12682],\"mapped\",[4497]],[[12683,12683],\"mapped\",[4498]],[[12684,12684],\"mapped\",[4500]],[[12685,12685],\"mapped\",[4510]],[[12686,12686],\"mapped\",[4513]],[[12687,12687],\"disallowed\"],[[12688,12689],\"valid\",[],\"NV8\"],[[12690,12690],\"mapped\",[19968]],[[12691,12691],\"mapped\",[20108]],[[12692,12692],\"mapped\",[19977]],[[12693,12693],\"mapped\",[22235]],[[12694,12694],\"mapped\",[19978]],[[12695,12695],\"mapped\",[20013]],[[12696,12696],\"mapped\",[19979]],[[12697,12697],\"mapped\",[30002]],[[12698,12698],\"mapped\",[20057]],[[12699,12699],\"mapped\",[19993]],[[12700,12700],\"mapped\",[19969]],[[12701,12701],\"mapped\",[22825]],[[12702,12702],\"mapped\",[22320]],[[12703,12703],\"mapped\",[20154]],[[12704,12727],\"valid\"],[[12728,12730],\"valid\"],[[12731,12735],\"disallowed\"],[[12736,12751],\"valid\",[],\"NV8\"],[[12752,12771],\"valid\",[],\"NV8\"],[[12772,12783],\"disallowed\"],[[12784,12799],\"valid\"],[[12800,12800],\"disallowed_STD3_mapped\",[40,4352,41]],[[12801,12801],\"disallowed_STD3_mapped\",[40,4354,41]],[[12802,12802],\"disallowed_STD3_mapped\",[40,4355,41]],[[12803,12803],\"disallowed_STD3_mapped\",[40,4357,41]],[[12804,12804],\"disallowed_STD3_mapped\",[40,4358,41]],[[12805,12805],\"disallowed_STD3_mapped\",[40,4359,41]],[[12806,12806],\"disallowed_STD3_mapped\",[40,4361,41]],[[12807,12807],\"disallowed_STD3_mapped\",[40,4363,41]],[[12808,12808],\"disallowed_STD3_mapped\",[40,4364,41]],[[12809,12809],\"disallowed_STD3_mapped\",[40,4366,41]],[[12810,12810],\"disallowed_STD3_mapped\",[40,4367,41]],[[12811,12811],\"disallowed_STD3_mapped\",[40,4368,41]],[[12812,12812],\"disallowed_STD3_mapped\",[40,4369,41]],[[12813,12813],\"disallowed_STD3_mapped\",[40,4370,41]],[[12814,12814],\"disallowed_STD3_mapped\",[40,44032,41]],[[12815,12815],\"disallowed_STD3_mapped\",[40,45208,41]],[[12816,12816],\"disallowed_STD3_mapped\",[40,45796,41]],[[12817,12817],\"disallowed_STD3_mapped\",[40,46972,41]],[[12818,12818],\"disallowed_STD3_mapped\",[40,47560,41]],[[12819,12819],\"disallowed_STD3_mapped\",[40,48148,41]],[[12820,12820],\"disallowed_STD3_mapped\",[40,49324,41]],[[12821,12821],\"disallowed_STD3_mapped\",[40,50500,41]],[[12822,12822],\"disallowed_STD3_mapped\",[40,51088,41]],[[12823,12823],\"disallowed_STD3_mapped\",[40,52264,41]],[[12824,12824],\"disallowed_STD3_mapped\",[40,52852,41]],[[12825,12825],\"disallowed_STD3_mapped\",[40,53440,41]],[[12826,12826],\"disallowed_STD3_mapped\",[40,54028,41]],[[12827,12827],\"disallowed_STD3_mapped\",[40,54616,41]],[[12828,12828],\"disallowed_STD3_mapped\",[40,51452,41]],[[12829,12829],\"disallowed_STD3_mapped\",[40,50724,51204,41]],[[12830,12830],\"disallowed_STD3_mapped\",[40,50724,54980,41]],[[12831,12831],\"disallowed\"],[[12832,12832],\"disallowed_STD3_mapped\",[40,19968,41]],[[12833,12833],\"disallowed_STD3_mapped\",[40,20108,41]],[[12834,12834],\"disallowed_STD3_mapped\",[40,19977,41]],[[12835,12835],\"disallowed_STD3_mapped\",[40,22235,41]],[[12836,12836],\"disallowed_STD3_mapped\",[40,20116,41]],[[12837,12837],\"disallowed_STD3_mapped\",[40,20845,41]],[[12838,12838],\"disallowed_STD3_mapped\",[40,19971,41]],[[12839,12839],\"disallowed_STD3_mapped\",[40,20843,41]],[[12840,12840],\"disallowed_STD3_mapped\",[40,20061,41]],[[12841,12841],\"disallowed_STD3_mapped\",[40,21313,41]],[[12842,12842],\"disallowed_STD3_mapped\",[40,26376,41]],[[12843,12843],\"disallowed_STD3_mapped\",[40,28779,41]],[[12844,12844],\"disallowed_STD3_mapped\",[40,27700,41]],[[12845,12845],\"disallowed_STD3_mapped\",[40,26408,41]],[[12846,12846],\"disallowed_STD3_mapped\",[40,37329,41]],[[12847,12847],\"disallowed_STD3_mapped\",[40,22303,41]],[[12848,12848],\"disallowed_STD3_mapped\",[40,26085,41]],[[12849,12849],\"disallowed_STD3_mapped\",[40,26666,41]],[[12850,12850],\"disallowed_STD3_mapped\",[40,26377,41]],[[12851,12851],\"disallowed_STD3_mapped\",[40,31038,41]],[[12852,12852],\"disallowed_STD3_mapped\",[40,21517,41]],[[12853,12853],\"disallowed_STD3_mapped\",[40,29305,41]],[[12854,12854],\"disallowed_STD3_mapped\",[40,36001,41]],[[12855,12855],\"disallowed_STD3_mapped\",[40,31069,41]],[[12856,12856],\"disallowed_STD3_mapped\",[40,21172,41]],[[12857,12857],\"disallowed_STD3_mapped\",[40,20195,41]],[[12858,12858],\"disallowed_STD3_mapped\",[40,21628,41]],[[12859,12859],\"disallowed_STD3_mapped\",[40,23398,41]],[[12860,12860],\"disallowed_STD3_mapped\",[40,30435,41]],[[12861,12861],\"disallowed_STD3_mapped\",[40,20225,41]],[[12862,12862],\"disallowed_STD3_mapped\",[40,36039,41]],[[12863,12863],\"disallowed_STD3_mapped\",[40,21332,41]],[[12864,12864],\"disallowed_STD3_mapped\",[40,31085,41]],[[12865,12865],\"disallowed_STD3_mapped\",[40,20241,41]],[[12866,12866],\"disallowed_STD3_mapped\",[40,33258,41]],[[12867,12867],\"disallowed_STD3_mapped\",[40,33267,41]],[[12868,12868],\"mapped\",[21839]],[[12869,12869],\"mapped\",[24188]],[[12870,12870],\"mapped\",[25991]],[[12871,12871],\"mapped\",[31631]],[[12872,12879],\"valid\",[],\"NV8\"],[[12880,12880],\"mapped\",[112,116,101]],[[12881,12881],\"mapped\",[50,49]],[[12882,12882],\"mapped\",[50,50]],[[12883,12883],\"mapped\",[50,51]],[[12884,12884],\"mapped\",[50,52]],[[12885,12885],\"mapped\",[50,53]],[[12886,12886],\"mapped\",[50,54]],[[12887,12887],\"mapped\",[50,55]],[[12888,12888],\"mapped\",[50,56]],[[12889,12889],\"mapped\",[50,57]],[[12890,12890],\"mapped\",[51,48]],[[12891,12891],\"mapped\",[51,49]],[[12892,12892],\"mapped\",[51,50]],[[12893,12893],\"mapped\",[51,51]],[[12894,12894],\"mapped\",[51,52]],[[12895,12895],\"mapped\",[51,53]],[[12896,12896],\"mapped\",[4352]],[[12897,12897],\"mapped\",[4354]],[[12898,12898],\"mapped\",[4355]],[[12899,12899],\"mapped\",[4357]],[[12900,12900],\"mapped\",[4358]],[[12901,12901],\"mapped\",[4359]],[[12902,12902],\"mapped\",[4361]],[[12903,12903],\"mapped\",[4363]],[[12904,12904],\"mapped\",[4364]],[[12905,12905],\"mapped\",[4366]],[[12906,12906],\"mapped\",[4367]],[[12907,12907],\"mapped\",[4368]],[[12908,12908],\"mapped\",[4369]],[[12909,12909],\"mapped\",[4370]],[[12910,12910],\"mapped\",[44032]],[[12911,12911],\"mapped\",[45208]],[[12912,12912],\"mapped\",[45796]],[[12913,12913],\"mapped\",[46972]],[[12914,12914],\"mapped\",[47560]],[[12915,12915],\"mapped\",[48148]],[[12916,12916],\"mapped\",[49324]],[[12917,12917],\"mapped\",[50500]],[[12918,12918],\"mapped\",[51088]],[[12919,12919],\"mapped\",[52264]],[[12920,12920],\"mapped\",[52852]],[[12921,12921],\"mapped\",[53440]],[[12922,12922],\"mapped\",[54028]],[[12923,12923],\"mapped\",[54616]],[[12924,12924],\"mapped\",[52280,44256]],[[12925,12925],\"mapped\",[51452,51032]],[[12926,12926],\"mapped\",[50864]],[[12927,12927],\"valid\",[],\"NV8\"],[[12928,12928],\"mapped\",[19968]],[[12929,12929],\"mapped\",[20108]],[[12930,12930],\"mapped\",[19977]],[[12931,12931],\"mapped\",[22235]],[[12932,12932],\"mapped\",[20116]],[[12933,12933],\"mapped\",[20845]],[[12934,12934],\"mapped\",[19971]],[[12935,12935],\"mapped\",[20843]],[[12936,12936],\"mapped\",[20061]],[[12937,12937],\"mapped\",[21313]],[[12938,12938],\"mapped\",[26376]],[[12939,12939],\"mapped\",[28779]],[[12940,12940],\"mapped\",[27700]],[[12941,12941],\"mapped\",[26408]],[[12942,12942],\"mapped\",[37329]],[[12943,12943],\"mapped\",[22303]],[[12944,12944],\"mapped\",[26085]],[[12945,12945],\"mapped\",[26666]],[[12946,12946],\"mapped\",[26377]],[[12947,12947],\"mapped\",[31038]],[[12948,12948],\"mapped\",[21517]],[[12949,12949],\"mapped\",[29305]],[[12950,12950],\"mapped\",[36001]],[[12951,12951],\"mapped\",[31069]],[[12952,12952],\"mapped\",[21172]],[[12953,12953],\"mapped\",[31192]],[[12954,12954],\"mapped\",[30007]],[[12955,12955],\"mapped\",[22899]],[[12956,12956],\"mapped\",[36969]],[[12957,12957],\"mapped\",[20778]],[[12958,12958],\"mapped\",[21360]],[[12959,12959],\"mapped\",[27880]],[[12960,12960],\"mapped\",[38917]],[[12961,12961],\"mapped\",[20241]],[[12962,12962],\"mapped\",[20889]],[[12963,12963],\"mapped\",[27491]],[[12964,12964],\"mapped\",[19978]],[[12965,12965],\"mapped\",[20013]],[[12966,12966],\"mapped\",[19979]],[[12967,12967],\"mapped\",[24038]],[[12968,12968],\"mapped\",[21491]],[[12969,12969],\"mapped\",[21307]],[[12970,12970],\"mapped\",[23447]],[[12971,12971],\"mapped\",[23398]],[[12972,12972],\"mapped\",[30435]],[[12973,12973],\"mapped\",[20225]],[[12974,12974],\"mapped\",[36039]],[[12975,12975],\"mapped\",[21332]],[[12976,12976],\"mapped\",[22812]],[[12977,12977],\"mapped\",[51,54]],[[12978,12978],\"mapped\",[51,55]],[[12979,12979],\"mapped\",[51,56]],[[12980,12980],\"mapped\",[51,57]],[[12981,12981],\"mapped\",[52,48]],[[12982,12982],\"mapped\",[52,49]],[[12983,12983],\"mapped\",[52,50]],[[12984,12984],\"mapped\",[52,51]],[[12985,12985],\"mapped\",[52,52]],[[12986,12986],\"mapped\",[52,53]],[[12987,12987],\"mapped\",[52,54]],[[12988,12988],\"mapped\",[52,55]],[[12989,12989],\"mapped\",[52,56]],[[12990,12990],\"mapped\",[52,57]],[[12991,12991],\"mapped\",[53,48]],[[12992,12992],\"mapped\",[49,26376]],[[12993,12993],\"mapped\",[50,26376]],[[12994,12994],\"mapped\",[51,26376]],[[12995,12995],\"mapped\",[52,26376]],[[12996,12996],\"mapped\",[53,26376]],[[12997,12997],\"mapped\",[54,26376]],[[12998,12998],\"mapped\",[55,26376]],[[12999,12999],\"mapped\",[56,26376]],[[13000,13000],\"mapped\",[57,26376]],[[13001,13001],\"mapped\",[49,48,26376]],[[13002,13002],\"mapped\",[49,49,26376]],[[13003,13003],\"mapped\",[49,50,26376]],[[13004,13004],\"mapped\",[104,103]],[[13005,13005],\"mapped\",[101,114,103]],[[13006,13006],\"mapped\",[101,118]],[[13007,13007],\"mapped\",[108,116,100]],[[13008,13008],\"mapped\",[12450]],[[13009,13009],\"mapped\",[12452]],[[13010,13010],\"mapped\",[12454]],[[13011,13011],\"mapped\",[12456]],[[13012,13012],\"mapped\",[12458]],[[13013,13013],\"mapped\",[12459]],[[13014,13014],\"mapped\",[12461]],[[13015,13015],\"mapped\",[12463]],[[13016,13016],\"mapped\",[12465]],[[13017,13017],\"mapped\",[12467]],[[13018,13018],\"mapped\",[12469]],[[13019,13019],\"mapped\",[12471]],[[13020,13020],\"mapped\",[12473]],[[13021,13021],\"mapped\",[12475]],[[13022,13022],\"mapped\",[12477]],[[13023,13023],\"mapped\",[12479]],[[13024,13024],\"mapped\",[12481]],[[13025,13025],\"mapped\",[12484]],[[13026,13026],\"mapped\",[12486]],[[13027,13027],\"mapped\",[12488]],[[13028,13028],\"mapped\",[12490]],[[13029,13029],\"mapped\",[12491]],[[13030,13030],\"mapped\",[12492]],[[13031,13031],\"mapped\",[12493]],[[13032,13032],\"mapped\",[12494]],[[13033,13033],\"mapped\",[12495]],[[13034,13034],\"mapped\",[12498]],[[13035,13035],\"mapped\",[12501]],[[13036,13036],\"mapped\",[12504]],[[13037,13037],\"mapped\",[12507]],[[13038,13038],\"mapped\",[12510]],[[13039,13039],\"mapped\",[12511]],[[13040,13040],\"mapped\",[12512]],[[13041,13041],\"mapped\",[12513]],[[13042,13042],\"mapped\",[12514]],[[13043,13043],\"mapped\",[12516]],[[13044,13044],\"mapped\",[12518]],[[13045,13045],\"mapped\",[12520]],[[13046,13046],\"mapped\",[12521]],[[13047,13047],\"mapped\",[12522]],[[13048,13048],\"mapped\",[12523]],[[13049,13049],\"mapped\",[12524]],[[13050,13050],\"mapped\",[12525]],[[13051,13051],\"mapped\",[12527]],[[13052,13052],\"mapped\",[12528]],[[13053,13053],\"mapped\",[12529]],[[13054,13054],\"mapped\",[12530]],[[13055,13055],\"disallowed\"],[[13056,13056],\"mapped\",[12450,12497,12540,12488]],[[13057,13057],\"mapped\",[12450,12523,12501,12449]],[[13058,13058],\"mapped\",[12450,12531,12506,12450]],[[13059,13059],\"mapped\",[12450,12540,12523]],[[13060,13060],\"mapped\",[12452,12491,12531,12464]],[[13061,13061],\"mapped\",[12452,12531,12481]],[[13062,13062],\"mapped\",[12454,12457,12531]],[[13063,13063],\"mapped\",[12456,12473,12463,12540,12489]],[[13064,13064],\"mapped\",[12456,12540,12459,12540]],[[13065,13065],\"mapped\",[12458,12531,12473]],[[13066,13066],\"mapped\",[12458,12540,12512]],[[13067,13067],\"mapped\",[12459,12452,12522]],[[13068,13068],\"mapped\",[12459,12521,12483,12488]],[[13069,13069],\"mapped\",[12459,12525,12522,12540]],[[13070,13070],\"mapped\",[12460,12525,12531]],[[13071,13071],\"mapped\",[12460,12531,12510]],[[13072,13072],\"mapped\",[12462,12460]],[[13073,13073],\"mapped\",[12462,12491,12540]],[[13074,13074],\"mapped\",[12461,12517,12522,12540]],[[13075,13075],\"mapped\",[12462,12523,12480,12540]],[[13076,13076],\"mapped\",[12461,12525]],[[13077,13077],\"mapped\",[12461,12525,12464,12521,12512]],[[13078,13078],\"mapped\",[12461,12525,12513,12540,12488,12523]],[[13079,13079],\"mapped\",[12461,12525,12527,12483,12488]],[[13080,13080],\"mapped\",[12464,12521,12512]],[[13081,13081],\"mapped\",[12464,12521,12512,12488,12531]],[[13082,13082],\"mapped\",[12463,12523,12476,12452,12525]],[[13083,13083],\"mapped\",[12463,12525,12540,12493]],[[13084,13084],\"mapped\",[12465,12540,12473]],[[13085,13085],\"mapped\",[12467,12523,12490]],[[13086,13086],\"mapped\",[12467,12540,12509]],[[13087,13087],\"mapped\",[12469,12452,12463,12523]],[[13088,13088],\"mapped\",[12469,12531,12481,12540,12512]],[[13089,13089],\"mapped\",[12471,12522,12531,12464]],[[13090,13090],\"mapped\",[12475,12531,12481]],[[13091,13091],\"mapped\",[12475,12531,12488]],[[13092,13092],\"mapped\",[12480,12540,12473]],[[13093,13093],\"mapped\",[12487,12471]],[[13094,13094],\"mapped\",[12489,12523]],[[13095,13095],\"mapped\",[12488,12531]],[[13096,13096],\"mapped\",[12490,12494]],[[13097,13097],\"mapped\",[12494,12483,12488]],[[13098,13098],\"mapped\",[12495,12452,12484]],[[13099,13099],\"mapped\",[12497,12540,12475,12531,12488]],[[13100,13100],\"mapped\",[12497,12540,12484]],[[13101,13101],\"mapped\",[12496,12540,12524,12523]],[[13102,13102],\"mapped\",[12500,12450,12473,12488,12523]],[[13103,13103],\"mapped\",[12500,12463,12523]],[[13104,13104],\"mapped\",[12500,12467]],[[13105,13105],\"mapped\",[12499,12523]],[[13106,13106],\"mapped\",[12501,12449,12521,12483,12489]],[[13107,13107],\"mapped\",[12501,12451,12540,12488]],[[13108,13108],\"mapped\",[12502,12483,12471,12455,12523]],[[13109,13109],\"mapped\",[12501,12521,12531]],[[13110,13110],\"mapped\",[12504,12463,12479,12540,12523]],[[13111,13111],\"mapped\",[12506,12477]],[[13112,13112],\"mapped\",[12506,12491,12498]],[[13113,13113],\"mapped\",[12504,12523,12484]],[[13114,13114],\"mapped\",[12506,12531,12473]],[[13115,13115],\"mapped\",[12506,12540,12472]],[[13116,13116],\"mapped\",[12505,12540,12479]],[[13117,13117],\"mapped\",[12509,12452,12531,12488]],[[13118,13118],\"mapped\",[12508,12523,12488]],[[13119,13119],\"mapped\",[12507,12531]],[[13120,13120],\"mapped\",[12509,12531,12489]],[[13121,13121],\"mapped\",[12507,12540,12523]],[[13122,13122],\"mapped\",[12507,12540,12531]],[[13123,13123],\"mapped\",[12510,12452,12463,12525]],[[13124,13124],\"mapped\",[12510,12452,12523]],[[13125,13125],\"mapped\",[12510,12483,12495]],[[13126,13126],\"mapped\",[12510,12523,12463]],[[13127,13127],\"mapped\",[12510,12531,12471,12519,12531]],[[13128,13128],\"mapped\",[12511,12463,12525,12531]],[[13129,13129],\"mapped\",[12511,12522]],[[13130,13130],\"mapped\",[12511,12522,12496,12540,12523]],[[13131,13131],\"mapped\",[12513,12460]],[[13132,13132],\"mapped\",[12513,12460,12488,12531]],[[13133,13133],\"mapped\",[12513,12540,12488,12523]],[[13134,13134],\"mapped\",[12516,12540,12489]],[[13135,13135],\"mapped\",[12516,12540,12523]],[[13136,13136],\"mapped\",[12518,12450,12531]],[[13137,13137],\"mapped\",[12522,12483,12488,12523]],[[13138,13138],\"mapped\",[12522,12521]],[[13139,13139],\"mapped\",[12523,12500,12540]],[[13140,13140],\"mapped\",[12523,12540,12502,12523]],[[13141,13141],\"mapped\",[12524,12512]],[[13142,13142],\"mapped\",[12524,12531,12488,12466,12531]],[[13143,13143],\"mapped\",[12527,12483,12488]],[[13144,13144],\"mapped\",[48,28857]],[[13145,13145],\"mapped\",[49,28857]],[[13146,13146],\"mapped\",[50,28857]],[[13147,13147],\"mapped\",[51,28857]],[[13148,13148],\"mapped\",[52,28857]],[[13149,13149],\"mapped\",[53,28857]],[[13150,13150],\"mapped\",[54,28857]],[[13151,13151],\"mapped\",[55,28857]],[[13152,13152],\"mapped\",[56,28857]],[[13153,13153],\"mapped\",[57,28857]],[[13154,13154],\"mapped\",[49,48,28857]],[[13155,13155],\"mapped\",[49,49,28857]],[[13156,13156],\"mapped\",[49,50,28857]],[[13157,13157],\"mapped\",[49,51,28857]],[[13158,13158],\"mapped\",[49,52,28857]],[[13159,13159],\"mapped\",[49,53,28857]],[[13160,13160],\"mapped\",[49,54,28857]],[[13161,13161],\"mapped\",[49,55,28857]],[[13162,13162],\"mapped\",[49,56,28857]],[[13163,13163],\"mapped\",[49,57,28857]],[[13164,13164],\"mapped\",[50,48,28857]],[[13165,13165],\"mapped\",[50,49,28857]],[[13166,13166],\"mapped\",[50,50,28857]],[[13167,13167],\"mapped\",[50,51,28857]],[[13168,13168],\"mapped\",[50,52,28857]],[[13169,13169],\"mapped\",[104,112,97]],[[13170,13170],\"mapped\",[100,97]],[[13171,13171],\"mapped\",[97,117]],[[13172,13172],\"mapped\",[98,97,114]],[[13173,13173],\"mapped\",[111,118]],[[13174,13174],\"mapped\",[112,99]],[[13175,13175],\"mapped\",[100,109]],[[13176,13176],\"mapped\",[100,109,50]],[[13177,13177],\"mapped\",[100,109,51]],[[13178,13178],\"mapped\",[105,117]],[[13179,13179],\"mapped\",[24179,25104]],[[13180,13180],\"mapped\",[26157,21644]],[[13181,13181],\"mapped\",[22823,27491]],[[13182,13182],\"mapped\",[26126,27835]],[[13183,13183],\"mapped\",[26666,24335,20250,31038]],[[13184,13184],\"mapped\",[112,97]],[[13185,13185],\"mapped\",[110,97]],[[13186,13186],\"mapped\",[956,97]],[[13187,13187],\"mapped\",[109,97]],[[13188,13188],\"mapped\",[107,97]],[[13189,13189],\"mapped\",[107,98]],[[13190,13190],\"mapped\",[109,98]],[[13191,13191],\"mapped\",[103,98]],[[13192,13192],\"mapped\",[99,97,108]],[[13193,13193],\"mapped\",[107,99,97,108]],[[13194,13194],\"mapped\",[112,102]],[[13195,13195],\"mapped\",[110,102]],[[13196,13196],\"mapped\",[956,102]],[[13197,13197],\"mapped\",[956,103]],[[13198,13198],\"mapped\",[109,103]],[[13199,13199],\"mapped\",[107,103]],[[13200,13200],\"mapped\",[104,122]],[[13201,13201],\"mapped\",[107,104,122]],[[13202,13202],\"mapped\",[109,104,122]],[[13203,13203],\"mapped\",[103,104,122]],[[13204,13204],\"mapped\",[116,104,122]],[[13205,13205],\"mapped\",[956,108]],[[13206,13206],\"mapped\",[109,108]],[[13207,13207],\"mapped\",[100,108]],[[13208,13208],\"mapped\",[107,108]],[[13209,13209],\"mapped\",[102,109]],[[13210,13210],\"mapped\",[110,109]],[[13211,13211],\"mapped\",[956,109]],[[13212,13212],\"mapped\",[109,109]],[[13213,13213],\"mapped\",[99,109]],[[13214,13214],\"mapped\",[107,109]],[[13215,13215],\"mapped\",[109,109,50]],[[13216,13216],\"mapped\",[99,109,50]],[[13217,13217],\"mapped\",[109,50]],[[13218,13218],\"mapped\",[107,109,50]],[[13219,13219],\"mapped\",[109,109,51]],[[13220,13220],\"mapped\",[99,109,51]],[[13221,13221],\"mapped\",[109,51]],[[13222,13222],\"mapped\",[107,109,51]],[[13223,13223],\"mapped\",[109,8725,115]],[[13224,13224],\"mapped\",[109,8725,115,50]],[[13225,13225],\"mapped\",[112,97]],[[13226,13226],\"mapped\",[107,112,97]],[[13227,13227],\"mapped\",[109,112,97]],[[13228,13228],\"mapped\",[103,112,97]],[[13229,13229],\"mapped\",[114,97,100]],[[13230,13230],\"mapped\",[114,97,100,8725,115]],[[13231,13231],\"mapped\",[114,97,100,8725,115,50]],[[13232,13232],\"mapped\",[112,115]],[[13233,13233],\"mapped\",[110,115]],[[13234,13234],\"mapped\",[956,115]],[[13235,13235],\"mapped\",[109,115]],[[13236,13236],\"mapped\",[112,118]],[[13237,13237],\"mapped\",[110,118]],[[13238,13238],\"mapped\",[956,118]],[[13239,13239],\"mapped\",[109,118]],[[13240,13240],\"mapped\",[107,118]],[[13241,13241],\"mapped\",[109,118]],[[13242,13242],\"mapped\",[112,119]],[[13243,13243],\"mapped\",[110,119]],[[13244,13244],\"mapped\",[956,119]],[[13245,13245],\"mapped\",[109,119]],[[13246,13246],\"mapped\",[107,119]],[[13247,13247],\"mapped\",[109,119]],[[13248,13248],\"mapped\",[107,969]],[[13249,13249],\"mapped\",[109,969]],[[13250,13250],\"disallowed\"],[[13251,13251],\"mapped\",[98,113]],[[13252,13252],\"mapped\",[99,99]],[[13253,13253],\"mapped\",[99,100]],[[13254,13254],\"mapped\",[99,8725,107,103]],[[13255,13255],\"disallowed\"],[[13256,13256],\"mapped\",[100,98]],[[13257,13257],\"mapped\",[103,121]],[[13258,13258],\"mapped\",[104,97]],[[13259,13259],\"mapped\",[104,112]],[[13260,13260],\"mapped\",[105,110]],[[13261,13261],\"mapped\",[107,107]],[[13262,13262],\"mapped\",[107,109]],[[13263,13263],\"mapped\",[107,116]],[[13264,13264],\"mapped\",[108,109]],[[13265,13265],\"mapped\",[108,110]],[[13266,13266],\"mapped\",[108,111,103]],[[13267,13267],\"mapped\",[108,120]],[[13268,13268],\"mapped\",[109,98]],[[13269,13269],\"mapped\",[109,105,108]],[[13270,13270],\"mapped\",[109,111,108]],[[13271,13271],\"mapped\",[112,104]],[[13272,13272],\"disallowed\"],[[13273,13273],\"mapped\",[112,112,109]],[[13274,13274],\"mapped\",[112,114]],[[13275,13275],\"mapped\",[115,114]],[[13276,13276],\"mapped\",[115,118]],[[13277,13277],\"mapped\",[119,98]],[[13278,13278],\"mapped\",[118,8725,109]],[[13279,13279],\"mapped\",[97,8725,109]],[[13280,13280],\"mapped\",[49,26085]],[[13281,13281],\"mapped\",[50,26085]],[[13282,13282],\"mapped\",[51,26085]],[[13283,13283],\"mapped\",[52,26085]],[[13284,13284],\"mapped\",[53,26085]],[[13285,13285],\"mapped\",[54,26085]],[[13286,13286],\"mapped\",[55,26085]],[[13287,13287],\"mapped\",[56,26085]],[[13288,13288],\"mapped\",[57,26085]],[[13289,13289],\"mapped\",[49,48,26085]],[[13290,13290],\"mapped\",[49,49,26085]],[[13291,13291],\"mapped\",[49,50,26085]],[[13292,13292],\"mapped\",[49,51,26085]],[[13293,13293],\"mapped\",[49,52,26085]],[[13294,13294],\"mapped\",[49,53,26085]],[[13295,13295],\"mapped\",[49,54,26085]],[[13296,13296],\"mapped\",[49,55,26085]],[[13297,13297],\"mapped\",[49,56,26085]],[[13298,13298],\"mapped\",[49,57,26085]],[[13299,13299],\"mapped\",[50,48,26085]],[[13300,13300],\"mapped\",[50,49,26085]],[[13301,13301],\"mapped\",[50,50,26085]],[[13302,13302],\"mapped\",[50,51,26085]],[[13303,13303],\"mapped\",[50,52,26085]],[[13304,13304],\"mapped\",[50,53,26085]],[[13305,13305],\"mapped\",[50,54,26085]],[[13306,13306],\"mapped\",[50,55,26085]],[[13307,13307],\"mapped\",[50,56,26085]],[[13308,13308],\"mapped\",[50,57,26085]],[[13309,13309],\"mapped\",[51,48,26085]],[[13310,13310],\"mapped\",[51,49,26085]],[[13311,13311],\"mapped\",[103,97,108]],[[13312,19893],\"valid\"],[[19894,19903],\"disallowed\"],[[19904,19967],\"valid\",[],\"NV8\"],[[19968,40869],\"valid\"],[[40870,40891],\"valid\"],[[40892,40899],\"valid\"],[[40900,40907],\"valid\"],[[40908,40908],\"valid\"],[[40909,40917],\"valid\"],[[40918,40959],\"disallowed\"],[[40960,42124],\"valid\"],[[42125,42127],\"disallowed\"],[[42128,42145],\"valid\",[],\"NV8\"],[[42146,42147],\"valid\",[],\"NV8\"],[[42148,42163],\"valid\",[],\"NV8\"],[[42164,42164],\"valid\",[],\"NV8\"],[[42165,42176],\"valid\",[],\"NV8\"],[[42177,42177],\"valid\",[],\"NV8\"],[[42178,42180],\"valid\",[],\"NV8\"],[[42181,42181],\"valid\",[],\"NV8\"],[[42182,42182],\"valid\",[],\"NV8\"],[[42183,42191],\"disallowed\"],[[42192,42237],\"valid\"],[[42238,42239],\"valid\",[],\"NV8\"],[[42240,42508],\"valid\"],[[42509,42511],\"valid\",[],\"NV8\"],[[42512,42539],\"valid\"],[[42540,42559],\"disallowed\"],[[42560,42560],\"mapped\",[42561]],[[42561,42561],\"valid\"],[[42562,42562],\"mapped\",[42563]],[[42563,42563],\"valid\"],[[42564,42564],\"mapped\",[42565]],[[42565,42565],\"valid\"],[[42566,42566],\"mapped\",[42567]],[[42567,42567],\"valid\"],[[42568,42568],\"mapped\",[42569]],[[42569,42569],\"valid\"],[[42570,42570],\"mapped\",[42571]],[[42571,42571],\"valid\"],[[42572,42572],\"mapped\",[42573]],[[42573,42573],\"valid\"],[[42574,42574],\"mapped\",[42575]],[[42575,42575],\"valid\"],[[42576,42576],\"mapped\",[42577]],[[42577,42577],\"valid\"],[[42578,42578],\"mapped\",[42579]],[[42579,42579],\"valid\"],[[42580,42580],\"mapped\",[42581]],[[42581,42581],\"valid\"],[[42582,42582],\"mapped\",[42583]],[[42583,42583],\"valid\"],[[42584,42584],\"mapped\",[42585]],[[42585,42585],\"valid\"],[[42586,42586],\"mapped\",[42587]],[[42587,42587],\"valid\"],[[42588,42588],\"mapped\",[42589]],[[42589,42589],\"valid\"],[[42590,42590],\"mapped\",[42591]],[[42591,42591],\"valid\"],[[42592,42592],\"mapped\",[42593]],[[42593,42593],\"valid\"],[[42594,42594],\"mapped\",[42595]],[[42595,42595],\"valid\"],[[42596,42596],\"mapped\",[42597]],[[42597,42597],\"valid\"],[[42598,42598],\"mapped\",[42599]],[[42599,42599],\"valid\"],[[42600,42600],\"mapped\",[42601]],[[42601,42601],\"valid\"],[[42602,42602],\"mapped\",[42603]],[[42603,42603],\"valid\"],[[42604,42604],\"mapped\",[42605]],[[42605,42607],\"valid\"],[[42608,42611],\"valid\",[],\"NV8\"],[[42612,42619],\"valid\"],[[42620,42621],\"valid\"],[[42622,42622],\"valid\",[],\"NV8\"],[[42623,42623],\"valid\"],[[42624,42624],\"mapped\",[42625]],[[42625,42625],\"valid\"],[[42626,42626],\"mapped\",[42627]],[[42627,42627],\"valid\"],[[42628,42628],\"mapped\",[42629]],[[42629,42629],\"valid\"],[[42630,42630],\"mapped\",[42631]],[[42631,42631],\"valid\"],[[42632,42632],\"mapped\",[42633]],[[42633,42633],\"valid\"],[[42634,42634],\"mapped\",[42635]],[[42635,42635],\"valid\"],[[42636,42636],\"mapped\",[42637]],[[42637,42637],\"valid\"],[[42638,42638],\"mapped\",[42639]],[[42639,42639],\"valid\"],[[42640,42640],\"mapped\",[42641]],[[42641,42641],\"valid\"],[[42642,42642],\"mapped\",[42643]],[[42643,42643],\"valid\"],[[42644,42644],\"mapped\",[42645]],[[42645,42645],\"valid\"],[[42646,42646],\"mapped\",[42647]],[[42647,42647],\"valid\"],[[42648,42648],\"mapped\",[42649]],[[42649,42649],\"valid\"],[[42650,42650],\"mapped\",[42651]],[[42651,42651],\"valid\"],[[42652,42652],\"mapped\",[1098]],[[42653,42653],\"mapped\",[1100]],[[42654,42654],\"valid\"],[[42655,42655],\"valid\"],[[42656,42725],\"valid\"],[[42726,42735],\"valid\",[],\"NV8\"],[[42736,42737],\"valid\"],[[42738,42743],\"valid\",[],\"NV8\"],[[42744,42751],\"disallowed\"],[[42752,42774],\"valid\",[],\"NV8\"],[[42775,42778],\"valid\"],[[42779,42783],\"valid\"],[[42784,42785],\"valid\",[],\"NV8\"],[[42786,42786],\"mapped\",[42787]],[[42787,42787],\"valid\"],[[42788,42788],\"mapped\",[42789]],[[42789,42789],\"valid\"],[[42790,42790],\"mapped\",[42791]],[[42791,42791],\"valid\"],[[42792,42792],\"mapped\",[42793]],[[42793,42793],\"valid\"],[[42794,42794],\"mapped\",[42795]],[[42795,42795],\"valid\"],[[42796,42796],\"mapped\",[42797]],[[42797,42797],\"valid\"],[[42798,42798],\"mapped\",[42799]],[[42799,42801],\"valid\"],[[42802,42802],\"mapped\",[42803]],[[42803,42803],\"valid\"],[[42804,42804],\"mapped\",[42805]],[[42805,42805],\"valid\"],[[42806,42806],\"mapped\",[42807]],[[42807,42807],\"valid\"],[[42808,42808],\"mapped\",[42809]],[[42809,42809],\"valid\"],[[42810,42810],\"mapped\",[42811]],[[42811,42811],\"valid\"],[[42812,42812],\"mapped\",[42813]],[[42813,42813],\"valid\"],[[42814,42814],\"mapped\",[42815]],[[42815,42815],\"valid\"],[[42816,42816],\"mapped\",[42817]],[[42817,42817],\"valid\"],[[42818,42818],\"mapped\",[42819]],[[42819,42819],\"valid\"],[[42820,42820],\"mapped\",[42821]],[[42821,42821],\"valid\"],[[42822,42822],\"mapped\",[42823]],[[42823,42823],\"valid\"],[[42824,42824],\"mapped\",[42825]],[[42825,42825],\"valid\"],[[42826,42826],\"mapped\",[42827]],[[42827,42827],\"valid\"],[[42828,42828],\"mapped\",[42829]],[[42829,42829],\"valid\"],[[42830,42830],\"mapped\",[42831]],[[42831,42831],\"valid\"],[[42832,42832],\"mapped\",[42833]],[[42833,42833],\"valid\"],[[42834,42834],\"mapped\",[42835]],[[42835,42835],\"valid\"],[[42836,42836],\"mapped\",[42837]],[[42837,42837],\"valid\"],[[42838,42838],\"mapped\",[42839]],[[42839,42839],\"valid\"],[[42840,42840],\"mapped\",[42841]],[[42841,42841],\"valid\"],[[42842,42842],\"mapped\",[42843]],[[42843,42843],\"valid\"],[[42844,42844],\"mapped\",[42845]],[[42845,42845],\"valid\"],[[42846,42846],\"mapped\",[42847]],[[42847,42847],\"valid\"],[[42848,42848],\"mapped\",[42849]],[[42849,42849],\"valid\"],[[42850,42850],\"mapped\",[42851]],[[42851,42851],\"valid\"],[[42852,42852],\"mapped\",[42853]],[[42853,42853],\"valid\"],[[42854,42854],\"mapped\",[42855]],[[42855,42855],\"valid\"],[[42856,42856],\"mapped\",[42857]],[[42857,42857],\"valid\"],[[42858,42858],\"mapped\",[42859]],[[42859,42859],\"valid\"],[[42860,42860],\"mapped\",[42861]],[[42861,42861],\"valid\"],[[42862,42862],\"mapped\",[42863]],[[42863,42863],\"valid\"],[[42864,42864],\"mapped\",[42863]],[[42865,42872],\"valid\"],[[42873,42873],\"mapped\",[42874]],[[42874,42874],\"valid\"],[[42875,42875],\"mapped\",[42876]],[[42876,42876],\"valid\"],[[42877,42877],\"mapped\",[7545]],[[42878,42878],\"mapped\",[42879]],[[42879,42879],\"valid\"],[[42880,42880],\"mapped\",[42881]],[[42881,42881],\"valid\"],[[42882,42882],\"mapped\",[42883]],[[42883,42883],\"valid\"],[[42884,42884],\"mapped\",[42885]],[[42885,42885],\"valid\"],[[42886,42886],\"mapped\",[42887]],[[42887,42888],\"valid\"],[[42889,42890],\"valid\",[],\"NV8\"],[[42891,42891],\"mapped\",[42892]],[[42892,42892],\"valid\"],[[42893,42893],\"mapped\",[613]],[[42894,42894],\"valid\"],[[42895,42895],\"valid\"],[[42896,42896],\"mapped\",[42897]],[[42897,42897],\"valid\"],[[42898,42898],\"mapped\",[42899]],[[42899,42899],\"valid\"],[[42900,42901],\"valid\"],[[42902,42902],\"mapped\",[42903]],[[42903,42903],\"valid\"],[[42904,42904],\"mapped\",[42905]],[[42905,42905],\"valid\"],[[42906,42906],\"mapped\",[42907]],[[42907,42907],\"valid\"],[[42908,42908],\"mapped\",[42909]],[[42909,42909],\"valid\"],[[42910,42910],\"mapped\",[42911]],[[42911,42911],\"valid\"],[[42912,42912],\"mapped\",[42913]],[[42913,42913],\"valid\"],[[42914,42914],\"mapped\",[42915]],[[42915,42915],\"valid\"],[[42916,42916],\"mapped\",[42917]],[[42917,42917],\"valid\"],[[42918,42918],\"mapped\",[42919]],[[42919,42919],\"valid\"],[[42920,42920],\"mapped\",[42921]],[[42921,42921],\"valid\"],[[42922,42922],\"mapped\",[614]],[[42923,42923],\"mapped\",[604]],[[42924,42924],\"mapped\",[609]],[[42925,42925],\"mapped\",[620]],[[42926,42927],\"disallowed\"],[[42928,42928],\"mapped\",[670]],[[42929,42929],\"mapped\",[647]],[[42930,42930],\"mapped\",[669]],[[42931,42931],\"mapped\",[43859]],[[42932,42932],\"mapped\",[42933]],[[42933,42933],\"valid\"],[[42934,42934],\"mapped\",[42935]],[[42935,42935],\"valid\"],[[42936,42998],\"disallowed\"],[[42999,42999],\"valid\"],[[43000,43000],\"mapped\",[295]],[[43001,43001],\"mapped\",[339]],[[43002,43002],\"valid\"],[[43003,43007],\"valid\"],[[43008,43047],\"valid\"],[[43048,43051],\"valid\",[],\"NV8\"],[[43052,43055],\"disallowed\"],[[43056,43065],\"valid\",[],\"NV8\"],[[43066,43071],\"disallowed\"],[[43072,43123],\"valid\"],[[43124,43127],\"valid\",[],\"NV8\"],[[43128,43135],\"disallowed\"],[[43136,43204],\"valid\"],[[43205,43213],\"disallowed\"],[[43214,43215],\"valid\",[],\"NV8\"],[[43216,43225],\"valid\"],[[43226,43231],\"disallowed\"],[[43232,43255],\"valid\"],[[43256,43258],\"valid\",[],\"NV8\"],[[43259,43259],\"valid\"],[[43260,43260],\"valid\",[],\"NV8\"],[[43261,43261],\"valid\"],[[43262,43263],\"disallowed\"],[[43264,43309],\"valid\"],[[43310,43311],\"valid\",[],\"NV8\"],[[43312,43347],\"valid\"],[[43348,43358],\"disallowed\"],[[43359,43359],\"valid\",[],\"NV8\"],[[43360,43388],\"valid\",[],\"NV8\"],[[43389,43391],\"disallowed\"],[[43392,43456],\"valid\"],[[43457,43469],\"valid\",[],\"NV8\"],[[43470,43470],\"disallowed\"],[[43471,43481],\"valid\"],[[43482,43485],\"disallowed\"],[[43486,43487],\"valid\",[],\"NV8\"],[[43488,43518],\"valid\"],[[43519,43519],\"disallowed\"],[[43520,43574],\"valid\"],[[43575,43583],\"disallowed\"],[[43584,43597],\"valid\"],[[43598,43599],\"disallowed\"],[[43600,43609],\"valid\"],[[43610,43611],\"disallowed\"],[[43612,43615],\"valid\",[],\"NV8\"],[[43616,43638],\"valid\"],[[43639,43641],\"valid\",[],\"NV8\"],[[43642,43643],\"valid\"],[[43644,43647],\"valid\"],[[43648,43714],\"valid\"],[[43715,43738],\"disallowed\"],[[43739,43741],\"valid\"],[[43742,43743],\"valid\",[],\"NV8\"],[[43744,43759],\"valid\"],[[43760,43761],\"valid\",[],\"NV8\"],[[43762,43766],\"valid\"],[[43767,43776],\"disallowed\"],[[43777,43782],\"valid\"],[[43783,43784],\"disallowed\"],[[43785,43790],\"valid\"],[[43791,43792],\"disallowed\"],[[43793,43798],\"valid\"],[[43799,43807],\"disallowed\"],[[43808,43814],\"valid\"],[[43815,43815],\"disallowed\"],[[43816,43822],\"valid\"],[[43823,43823],\"disallowed\"],[[43824,43866],\"valid\"],[[43867,43867],\"valid\",[],\"NV8\"],[[43868,43868],\"mapped\",[42791]],[[43869,43869],\"mapped\",[43831]],[[43870,43870],\"mapped\",[619]],[[43871,43871],\"mapped\",[43858]],[[43872,43875],\"valid\"],[[43876,43877],\"valid\"],[[43878,43887],\"disallowed\"],[[43888,43888],\"mapped\",[5024]],[[43889,43889],\"mapped\",[5025]],[[43890,43890],\"mapped\",[5026]],[[43891,43891],\"mapped\",[5027]],[[43892,43892],\"mapped\",[5028]],[[43893,43893],\"mapped\",[5029]],[[43894,43894],\"mapped\",[5030]],[[43895,43895],\"mapped\",[5031]],[[43896,43896],\"mapped\",[5032]],[[43897,43897],\"mapped\",[5033]],[[43898,43898],\"mapped\",[5034]],[[43899,43899],\"mapped\",[5035]],[[43900,43900],\"mapped\",[5036]],[[43901,43901],\"mapped\",[5037]],[[43902,43902],\"mapped\",[5038]],[[43903,43903],\"mapped\",[5039]],[[43904,43904],\"mapped\",[5040]],[[43905,43905],\"mapped\",[5041]],[[43906,43906],\"mapped\",[5042]],[[43907,43907],\"mapped\",[5043]],[[43908,43908],\"mapped\",[5044]],[[43909,43909],\"mapped\",[5045]],[[43910,43910],\"mapped\",[5046]],[[43911,43911],\"mapped\",[5047]],[[43912,43912],\"mapped\",[5048]],[[43913,43913],\"mapped\",[5049]],[[43914,43914],\"mapped\",[5050]],[[43915,43915],\"mapped\",[5051]],[[43916,43916],\"mapped\",[5052]],[[43917,43917],\"mapped\",[5053]],[[43918,43918],\"mapped\",[5054]],[[43919,43919],\"mapped\",[5055]],[[43920,43920],\"mapped\",[5056]],[[43921,43921],\"mapped\",[5057]],[[43922,43922],\"mapped\",[5058]],[[43923,43923],\"mapped\",[5059]],[[43924,43924],\"mapped\",[5060]],[[43925,43925],\"mapped\",[5061]],[[43926,43926],\"mapped\",[5062]],[[43927,43927],\"mapped\",[5063]],[[43928,43928],\"mapped\",[5064]],[[43929,43929],\"mapped\",[5065]],[[43930,43930],\"mapped\",[5066]],[[43931,43931],\"mapped\",[5067]],[[43932,43932],\"mapped\",[5068]],[[43933,43933],\"mapped\",[5069]],[[43934,43934],\"mapped\",[5070]],[[43935,43935],\"mapped\",[5071]],[[43936,43936],\"mapped\",[5072]],[[43937,43937],\"mapped\",[5073]],[[43938,43938],\"mapped\",[5074]],[[43939,43939],\"mapped\",[5075]],[[43940,43940],\"mapped\",[5076]],[[43941,43941],\"mapped\",[5077]],[[43942,43942],\"mapped\",[5078]],[[43943,43943],\"mapped\",[5079]],[[43944,43944],\"mapped\",[5080]],[[43945,43945],\"mapped\",[5081]],[[43946,43946],\"mapped\",[5082]],[[43947,43947],\"mapped\",[5083]],[[43948,43948],\"mapped\",[5084]],[[43949,43949],\"mapped\",[5085]],[[43950,43950],\"mapped\",[5086]],[[43951,43951],\"mapped\",[5087]],[[43952,43952],\"mapped\",[5088]],[[43953,43953],\"mapped\",[5089]],[[43954,43954],\"mapped\",[5090]],[[43955,43955],\"mapped\",[5091]],[[43956,43956],\"mapped\",[5092]],[[43957,43957],\"mapped\",[5093]],[[43958,43958],\"mapped\",[5094]],[[43959,43959],\"mapped\",[5095]],[[43960,43960],\"mapped\",[5096]],[[43961,43961],\"mapped\",[5097]],[[43962,43962],\"mapped\",[5098]],[[43963,43963],\"mapped\",[5099]],[[43964,43964],\"mapped\",[5100]],[[43965,43965],\"mapped\",[5101]],[[43966,43966],\"mapped\",[5102]],[[43967,43967],\"mapped\",[5103]],[[43968,44010],\"valid\"],[[44011,44011],\"valid\",[],\"NV8\"],[[44012,44013],\"valid\"],[[44014,44015],\"disallowed\"],[[44016,44025],\"valid\"],[[44026,44031],\"disallowed\"],[[44032,55203],\"valid\"],[[55204,55215],\"disallowed\"],[[55216,55238],\"valid\",[],\"NV8\"],[[55239,55242],\"disallowed\"],[[55243,55291],\"valid\",[],\"NV8\"],[[55292,55295],\"disallowed\"],[[55296,57343],\"disallowed\"],[[57344,63743],\"disallowed\"],[[63744,63744],\"mapped\",[35912]],[[63745,63745],\"mapped\",[26356]],[[63746,63746],\"mapped\",[36554]],[[63747,63747],\"mapped\",[36040]],[[63748,63748],\"mapped\",[28369]],[[63749,63749],\"mapped\",[20018]],[[63750,63750],\"mapped\",[21477]],[[63751,63752],\"mapped\",[40860]],[[63753,63753],\"mapped\",[22865]],[[63754,63754],\"mapped\",[37329]],[[63755,63755],\"mapped\",[21895]],[[63756,63756],\"mapped\",[22856]],[[63757,63757],\"mapped\",[25078]],[[63758,63758],\"mapped\",[30313]],[[63759,63759],\"mapped\",[32645]],[[63760,63760],\"mapped\",[34367]],[[63761,63761],\"mapped\",[34746]],[[63762,63762],\"mapped\",[35064]],[[63763,63763],\"mapped\",[37007]],[[63764,63764],\"mapped\",[27138]],[[63765,63765],\"mapped\",[27931]],[[63766,63766],\"mapped\",[28889]],[[63767,63767],\"mapped\",[29662]],[[63768,63768],\"mapped\",[33853]],[[63769,63769],\"mapped\",[37226]],[[63770,63770],\"mapped\",[39409]],[[63771,63771],\"mapped\",[20098]],[[63772,63772],\"mapped\",[21365]],[[63773,63773],\"mapped\",[27396]],[[63774,63774],\"mapped\",[29211]],[[63775,63775],\"mapped\",[34349]],[[63776,63776],\"mapped\",[40478]],[[63777,63777],\"mapped\",[23888]],[[63778,63778],\"mapped\",[28651]],[[63779,63779],\"mapped\",[34253]],[[63780,63780],\"mapped\",[35172]],[[63781,63781],\"mapped\",[25289]],[[63782,63782],\"mapped\",[33240]],[[63783,63783],\"mapped\",[34847]],[[63784,63784],\"mapped\",[24266]],[[63785,63785],\"mapped\",[26391]],[[63786,63786],\"mapped\",[28010]],[[63787,63787],\"mapped\",[29436]],[[63788,63788],\"mapped\",[37070]],[[63789,63789],\"mapped\",[20358]],[[63790,63790],\"mapped\",[20919]],[[63791,63791],\"mapped\",[21214]],[[63792,63792],\"mapped\",[25796]],[[63793,63793],\"mapped\",[27347]],[[63794,63794],\"mapped\",[29200]],[[63795,63795],\"mapped\",[30439]],[[63796,63796],\"mapped\",[32769]],[[63797,63797],\"mapped\",[34310]],[[63798,63798],\"mapped\",[34396]],[[63799,63799],\"mapped\",[36335]],[[63800,63800],\"mapped\",[38706]],[[63801,63801],\"mapped\",[39791]],[[63802,63802],\"mapped\",[40442]],[[63803,63803],\"mapped\",[30860]],[[63804,63804],\"mapped\",[31103]],[[63805,63805],\"mapped\",[32160]],[[63806,63806],\"mapped\",[33737]],[[63807,63807],\"mapped\",[37636]],[[63808,63808],\"mapped\",[40575]],[[63809,63809],\"mapped\",[35542]],[[63810,63810],\"mapped\",[22751]],[[63811,63811],\"mapped\",[24324]],[[63812,63812],\"mapped\",[31840]],[[63813,63813],\"mapped\",[32894]],[[63814,63814],\"mapped\",[29282]],[[63815,63815],\"mapped\",[30922]],[[63816,63816],\"mapped\",[36034]],[[63817,63817],\"mapped\",[38647]],[[63818,63818],\"mapped\",[22744]],[[63819,63819],\"mapped\",[23650]],[[63820,63820],\"mapped\",[27155]],[[63821,63821],\"mapped\",[28122]],[[63822,63822],\"mapped\",[28431]],[[63823,63823],\"mapped\",[32047]],[[63824,63824],\"mapped\",[32311]],[[63825,63825],\"mapped\",[38475]],[[63826,63826],\"mapped\",[21202]],[[63827,63827],\"mapped\",[32907]],[[63828,63828],\"mapped\",[20956]],[[63829,63829],\"mapped\",[20940]],[[63830,63830],\"mapped\",[31260]],[[63831,63831],\"mapped\",[32190]],[[63832,63832],\"mapped\",[33777]],[[63833,63833],\"mapped\",[38517]],[[63834,63834],\"mapped\",[35712]],[[63835,63835],\"mapped\",[25295]],[[63836,63836],\"mapped\",[27138]],[[63837,63837],\"mapped\",[35582]],[[63838,63838],\"mapped\",[20025]],[[63839,63839],\"mapped\",[23527]],[[63840,63840],\"mapped\",[24594]],[[63841,63841],\"mapped\",[29575]],[[63842,63842],\"mapped\",[30064]],[[63843,63843],\"mapped\",[21271]],[[63844,63844],\"mapped\",[30971]],[[63845,63845],\"mapped\",[20415]],[[63846,63846],\"mapped\",[24489]],[[63847,63847],\"mapped\",[19981]],[[63848,63848],\"mapped\",[27852]],[[63849,63849],\"mapped\",[25976]],[[63850,63850],\"mapped\",[32034]],[[63851,63851],\"mapped\",[21443]],[[63852,63852],\"mapped\",[22622]],[[63853,63853],\"mapped\",[30465]],[[63854,63854],\"mapped\",[33865]],[[63855,63855],\"mapped\",[35498]],[[63856,63856],\"mapped\",[27578]],[[63857,63857],\"mapped\",[36784]],[[63858,63858],\"mapped\",[27784]],[[63859,63859],\"mapped\",[25342]],[[63860,63860],\"mapped\",[33509]],[[63861,63861],\"mapped\",[25504]],[[63862,63862],\"mapped\",[30053]],[[63863,63863],\"mapped\",[20142]],[[63864,63864],\"mapped\",[20841]],[[63865,63865],\"mapped\",[20937]],[[63866,63866],\"mapped\",[26753]],[[63867,63867],\"mapped\",[31975]],[[63868,63868],\"mapped\",[33391]],[[63869,63869],\"mapped\",[35538]],[[63870,63870],\"mapped\",[37327]],[[63871,63871],\"mapped\",[21237]],[[63872,63872],\"mapped\",[21570]],[[63873,63873],\"mapped\",[22899]],[[63874,63874],\"mapped\",[24300]],[[63875,63875],\"mapped\",[26053]],[[63876,63876],\"mapped\",[28670]],[[63877,63877],\"mapped\",[31018]],[[63878,63878],\"mapped\",[38317]],[[63879,63879],\"mapped\",[39530]],[[63880,63880],\"mapped\",[40599]],[[63881,63881],\"mapped\",[40654]],[[63882,63882],\"mapped\",[21147]],[[63883,63883],\"mapped\",[26310]],[[63884,63884],\"mapped\",[27511]],[[63885,63885],\"mapped\",[36706]],[[63886,63886],\"mapped\",[24180]],[[63887,63887],\"mapped\",[24976]],[[63888,63888],\"mapped\",[25088]],[[63889,63889],\"mapped\",[25754]],[[63890,63890],\"mapped\",[28451]],[[63891,63891],\"mapped\",[29001]],[[63892,63892],\"mapped\",[29833]],[[63893,63893],\"mapped\",[31178]],[[63894,63894],\"mapped\",[32244]],[[63895,63895],\"mapped\",[32879]],[[63896,63896],\"mapped\",[36646]],[[63897,63897],\"mapped\",[34030]],[[63898,63898],\"mapped\",[36899]],[[63899,63899],\"mapped\",[37706]],[[63900,63900],\"mapped\",[21015]],[[63901,63901],\"mapped\",[21155]],[[63902,63902],\"mapped\",[21693]],[[63903,63903],\"mapped\",[28872]],[[63904,63904],\"mapped\",[35010]],[[63905,63905],\"mapped\",[35498]],[[63906,63906],\"mapped\",[24265]],[[63907,63907],\"mapped\",[24565]],[[63908,63908],\"mapped\",[25467]],[[63909,63909],\"mapped\",[27566]],[[63910,63910],\"mapped\",[31806]],[[63911,63911],\"mapped\",[29557]],[[63912,63912],\"mapped\",[20196]],[[63913,63913],\"mapped\",[22265]],[[63914,63914],\"mapped\",[23527]],[[63915,63915],\"mapped\",[23994]],[[63916,63916],\"mapped\",[24604]],[[63917,63917],\"mapped\",[29618]],[[63918,63918],\"mapped\",[29801]],[[63919,63919],\"mapped\",[32666]],[[63920,63920],\"mapped\",[32838]],[[63921,63921],\"mapped\",[37428]],[[63922,63922],\"mapped\",[38646]],[[63923,63923],\"mapped\",[38728]],[[63924,63924],\"mapped\",[38936]],[[63925,63925],\"mapped\",[20363]],[[63926,63926],\"mapped\",[31150]],[[63927,63927],\"mapped\",[37300]],[[63928,63928],\"mapped\",[38584]],[[63929,63929],\"mapped\",[24801]],[[63930,63930],\"mapped\",[20102]],[[63931,63931],\"mapped\",[20698]],[[63932,63932],\"mapped\",[23534]],[[63933,63933],\"mapped\",[23615]],[[63934,63934],\"mapped\",[26009]],[[63935,63935],\"mapped\",[27138]],[[63936,63936],\"mapped\",[29134]],[[63937,63937],\"mapped\",[30274]],[[63938,63938],\"mapped\",[34044]],[[63939,63939],\"mapped\",[36988]],[[63940,63940],\"mapped\",[40845]],[[63941,63941],\"mapped\",[26248]],[[63942,63942],\"mapped\",[38446]],[[63943,63943],\"mapped\",[21129]],[[63944,63944],\"mapped\",[26491]],[[63945,63945],\"mapped\",[26611]],[[63946,63946],\"mapped\",[27969]],[[63947,63947],\"mapped\",[28316]],[[63948,63948],\"mapped\",[29705]],[[63949,63949],\"mapped\",[30041]],[[63950,63950],\"mapped\",[30827]],[[63951,63951],\"mapped\",[32016]],[[63952,63952],\"mapped\",[39006]],[[63953,63953],\"mapped\",[20845]],[[63954,63954],\"mapped\",[25134]],[[63955,63955],\"mapped\",[38520]],[[63956,63956],\"mapped\",[20523]],[[63957,63957],\"mapped\",[23833]],[[63958,63958],\"mapped\",[28138]],[[63959,63959],\"mapped\",[36650]],[[63960,63960],\"mapped\",[24459]],[[63961,63961],\"mapped\",[24900]],[[63962,63962],\"mapped\",[26647]],[[63963,63963],\"mapped\",[29575]],[[63964,63964],\"mapped\",[38534]],[[63965,63965],\"mapped\",[21033]],[[63966,63966],\"mapped\",[21519]],[[63967,63967],\"mapped\",[23653]],[[63968,63968],\"mapped\",[26131]],[[63969,63969],\"mapped\",[26446]],[[63970,63970],\"mapped\",[26792]],[[63971,63971],\"mapped\",[27877]],[[63972,63972],\"mapped\",[29702]],[[63973,63973],\"mapped\",[30178]],[[63974,63974],\"mapped\",[32633]],[[63975,63975],\"mapped\",[35023]],[[63976,63976],\"mapped\",[35041]],[[63977,63977],\"mapped\",[37324]],[[63978,63978],\"mapped\",[38626]],[[63979,63979],\"mapped\",[21311]],[[63980,63980],\"mapped\",[28346]],[[63981,63981],\"mapped\",[21533]],[[63982,63982],\"mapped\",[29136]],[[63983,63983],\"mapped\",[29848]],[[63984,63984],\"mapped\",[34298]],[[63985,63985],\"mapped\",[38563]],[[63986,63986],\"mapped\",[40023]],[[63987,63987],\"mapped\",[40607]],[[63988,63988],\"mapped\",[26519]],[[63989,63989],\"mapped\",[28107]],[[63990,63990],\"mapped\",[33256]],[[63991,63991],\"mapped\",[31435]],[[63992,63992],\"mapped\",[31520]],[[63993,63993],\"mapped\",[31890]],[[63994,63994],\"mapped\",[29376]],[[63995,63995],\"mapped\",[28825]],[[63996,63996],\"mapped\",[35672]],[[63997,63997],\"mapped\",[20160]],[[63998,63998],\"mapped\",[33590]],[[63999,63999],\"mapped\",[21050]],[[64000,64000],\"mapped\",[20999]],[[64001,64001],\"mapped\",[24230]],[[64002,64002],\"mapped\",[25299]],[[64003,64003],\"mapped\",[31958]],[[64004,64004],\"mapped\",[23429]],[[64005,64005],\"mapped\",[27934]],[[64006,64006],\"mapped\",[26292]],[[64007,64007],\"mapped\",[36667]],[[64008,64008],\"mapped\",[34892]],[[64009,64009],\"mapped\",[38477]],[[64010,64010],\"mapped\",[35211]],[[64011,64011],\"mapped\",[24275]],[[64012,64012],\"mapped\",[20800]],[[64013,64013],\"mapped\",[21952]],[[64014,64015],\"valid\"],[[64016,64016],\"mapped\",[22618]],[[64017,64017],\"valid\"],[[64018,64018],\"mapped\",[26228]],[[64019,64020],\"valid\"],[[64021,64021],\"mapped\",[20958]],[[64022,64022],\"mapped\",[29482]],[[64023,64023],\"mapped\",[30410]],[[64024,64024],\"mapped\",[31036]],[[64025,64025],\"mapped\",[31070]],[[64026,64026],\"mapped\",[31077]],[[64027,64027],\"mapped\",[31119]],[[64028,64028],\"mapped\",[38742]],[[64029,64029],\"mapped\",[31934]],[[64030,64030],\"mapped\",[32701]],[[64031,64031],\"valid\"],[[64032,64032],\"mapped\",[34322]],[[64033,64033],\"valid\"],[[64034,64034],\"mapped\",[35576]],[[64035,64036],\"valid\"],[[64037,64037],\"mapped\",[36920]],[[64038,64038],\"mapped\",[37117]],[[64039,64041],\"valid\"],[[64042,64042],\"mapped\",[39151]],[[64043,64043],\"mapped\",[39164]],[[64044,64044],\"mapped\",[39208]],[[64045,64045],\"mapped\",[40372]],[[64046,64046],\"mapped\",[37086]],[[64047,64047],\"mapped\",[38583]],[[64048,64048],\"mapped\",[20398]],[[64049,64049],\"mapped\",[20711]],[[64050,64050],\"mapped\",[20813]],[[64051,64051],\"mapped\",[21193]],[[64052,64052],\"mapped\",[21220]],[[64053,64053],\"mapped\",[21329]],[[64054,64054],\"mapped\",[21917]],[[64055,64055],\"mapped\",[22022]],[[64056,64056],\"mapped\",[22120]],[[64057,64057],\"mapped\",[22592]],[[64058,64058],\"mapped\",[22696]],[[64059,64059],\"mapped\",[23652]],[[64060,64060],\"mapped\",[23662]],[[64061,64061],\"mapped\",[24724]],[[64062,64062],\"mapped\",[24936]],[[64063,64063],\"mapped\",[24974]],[[64064,64064],\"mapped\",[25074]],[[64065,64065],\"mapped\",[25935]],[[64066,64066],\"mapped\",[26082]],[[64067,64067],\"mapped\",[26257]],[[64068,64068],\"mapped\",[26757]],[[64069,64069],\"mapped\",[28023]],[[64070,64070],\"mapped\",[28186]],[[64071,64071],\"mapped\",[28450]],[[64072,64072],\"mapped\",[29038]],[[64073,64073],\"mapped\",[29227]],[[64074,64074],\"mapped\",[29730]],[[64075,64075],\"mapped\",[30865]],[[64076,64076],\"mapped\",[31038]],[[64077,64077],\"mapped\",[31049]],[[64078,64078],\"mapped\",[31048]],[[64079,64079],\"mapped\",[31056]],[[64080,64080],\"mapped\",[31062]],[[64081,64081],\"mapped\",[31069]],[[64082,64082],\"mapped\",[31117]],[[64083,64083],\"mapped\",[31118]],[[64084,64084],\"mapped\",[31296]],[[64085,64085],\"mapped\",[31361]],[[64086,64086],\"mapped\",[31680]],[[64087,64087],\"mapped\",[32244]],[[64088,64088],\"mapped\",[32265]],[[64089,64089],\"mapped\",[32321]],[[64090,64090],\"mapped\",[32626]],[[64091,64091],\"mapped\",[32773]],[[64092,64092],\"mapped\",[33261]],[[64093,64094],\"mapped\",[33401]],[[64095,64095],\"mapped\",[33879]],[[64096,64096],\"mapped\",[35088]],[[64097,64097],\"mapped\",[35222]],[[64098,64098],\"mapped\",[35585]],[[64099,64099],\"mapped\",[35641]],[[64100,64100],\"mapped\",[36051]],[[64101,64101],\"mapped\",[36104]],[[64102,64102],\"mapped\",[36790]],[[64103,64103],\"mapped\",[36920]],[[64104,64104],\"mapped\",[38627]],[[64105,64105],\"mapped\",[38911]],[[64106,64106],\"mapped\",[38971]],[[64107,64107],\"mapped\",[24693]],[[64108,64108],\"mapped\",[148206]],[[64109,64109],\"mapped\",[33304]],[[64110,64111],\"disallowed\"],[[64112,64112],\"mapped\",[20006]],[[64113,64113],\"mapped\",[20917]],[[64114,64114],\"mapped\",[20840]],[[64115,64115],\"mapped\",[20352]],[[64116,64116],\"mapped\",[20805]],[[64117,64117],\"mapped\",[20864]],[[64118,64118],\"mapped\",[21191]],[[64119,64119],\"mapped\",[21242]],[[64120,64120],\"mapped\",[21917]],[[64121,64121],\"mapped\",[21845]],[[64122,64122],\"mapped\",[21913]],[[64123,64123],\"mapped\",[21986]],[[64124,64124],\"mapped\",[22618]],[[64125,64125],\"mapped\",[22707]],[[64126,64126],\"mapped\",[22852]],[[64127,64127],\"mapped\",[22868]],[[64128,64128],\"mapped\",[23138]],[[64129,64129],\"mapped\",[23336]],[[64130,64130],\"mapped\",[24274]],[[64131,64131],\"mapped\",[24281]],[[64132,64132],\"mapped\",[24425]],[[64133,64133],\"mapped\",[24493]],[[64134,64134],\"mapped\",[24792]],[[64135,64135],\"mapped\",[24910]],[[64136,64136],\"mapped\",[24840]],[[64137,64137],\"mapped\",[24974]],[[64138,64138],\"mapped\",[24928]],[[64139,64139],\"mapped\",[25074]],[[64140,64140],\"mapped\",[25140]],[[64141,64141],\"mapped\",[25540]],[[64142,64142],\"mapped\",[25628]],[[64143,64143],\"mapped\",[25682]],[[64144,64144],\"mapped\",[25942]],[[64145,64145],\"mapped\",[26228]],[[64146,64146],\"mapped\",[26391]],[[64147,64147],\"mapped\",[26395]],[[64148,64148],\"mapped\",[26454]],[[64149,64149],\"mapped\",[27513]],[[64150,64150],\"mapped\",[27578]],[[64151,64151],\"mapped\",[27969]],[[64152,64152],\"mapped\",[28379]],[[64153,64153],\"mapped\",[28363]],[[64154,64154],\"mapped\",[28450]],[[64155,64155],\"mapped\",[28702]],[[64156,64156],\"mapped\",[29038]],[[64157,64157],\"mapped\",[30631]],[[64158,64158],\"mapped\",[29237]],[[64159,64159],\"mapped\",[29359]],[[64160,64160],\"mapped\",[29482]],[[64161,64161],\"mapped\",[29809]],[[64162,64162],\"mapped\",[29958]],[[64163,64163],\"mapped\",[30011]],[[64164,64164],\"mapped\",[30237]],[[64165,64165],\"mapped\",[30239]],[[64166,64166],\"mapped\",[30410]],[[64167,64167],\"mapped\",[30427]],[[64168,64168],\"mapped\",[30452]],[[64169,64169],\"mapped\",[30538]],[[64170,64170],\"mapped\",[30528]],[[64171,64171],\"mapped\",[30924]],[[64172,64172],\"mapped\",[31409]],[[64173,64173],\"mapped\",[31680]],[[64174,64174],\"mapped\",[31867]],[[64175,64175],\"mapped\",[32091]],[[64176,64176],\"mapped\",[32244]],[[64177,64177],\"mapped\",[32574]],[[64178,64178],\"mapped\",[32773]],[[64179,64179],\"mapped\",[33618]],[[64180,64180],\"mapped\",[33775]],[[64181,64181],\"mapped\",[34681]],[[64182,64182],\"mapped\",[35137]],[[64183,64183],\"mapped\",[35206]],[[64184,64184],\"mapped\",[35222]],[[64185,64185],\"mapped\",[35519]],[[64186,64186],\"mapped\",[35576]],[[64187,64187],\"mapped\",[35531]],[[64188,64188],\"mapped\",[35585]],[[64189,64189],\"mapped\",[35582]],[[64190,64190],\"mapped\",[35565]],[[64191,64191],\"mapped\",[35641]],[[64192,64192],\"mapped\",[35722]],[[64193,64193],\"mapped\",[36104]],[[64194,64194],\"mapped\",[36664]],[[64195,64195],\"mapped\",[36978]],[[64196,64196],\"mapped\",[37273]],[[64197,64197],\"mapped\",[37494]],[[64198,64198],\"mapped\",[38524]],[[64199,64199],\"mapped\",[38627]],[[64200,64200],\"mapped\",[38742]],[[64201,64201],\"mapped\",[38875]],[[64202,64202],\"mapped\",[38911]],[[64203,64203],\"mapped\",[38923]],[[64204,64204],\"mapped\",[38971]],[[64205,64205],\"mapped\",[39698]],[[64206,64206],\"mapped\",[40860]],[[64207,64207],\"mapped\",[141386]],[[64208,64208],\"mapped\",[141380]],[[64209,64209],\"mapped\",[144341]],[[64210,64210],\"mapped\",[15261]],[[64211,64211],\"mapped\",[16408]],[[64212,64212],\"mapped\",[16441]],[[64213,64213],\"mapped\",[152137]],[[64214,64214],\"mapped\",[154832]],[[64215,64215],\"mapped\",[163539]],[[64216,64216],\"mapped\",[40771]],[[64217,64217],\"mapped\",[40846]],[[64218,64255],\"disallowed\"],[[64256,64256],\"mapped\",[102,102]],[[64257,64257],\"mapped\",[102,105]],[[64258,64258],\"mapped\",[102,108]],[[64259,64259],\"mapped\",[102,102,105]],[[64260,64260],\"mapped\",[102,102,108]],[[64261,64262],\"mapped\",[115,116]],[[64263,64274],\"disallowed\"],[[64275,64275],\"mapped\",[1396,1398]],[[64276,64276],\"mapped\",[1396,1381]],[[64277,64277],\"mapped\",[1396,1387]],[[64278,64278],\"mapped\",[1406,1398]],[[64279,64279],\"mapped\",[1396,1389]],[[64280,64284],\"disallowed\"],[[64285,64285],\"mapped\",[1497,1460]],[[64286,64286],\"valid\"],[[64287,64287],\"mapped\",[1522,1463]],[[64288,64288],\"mapped\",[1506]],[[64289,64289],\"mapped\",[1488]],[[64290,64290],\"mapped\",[1491]],[[64291,64291],\"mapped\",[1492]],[[64292,64292],\"mapped\",[1499]],[[64293,64293],\"mapped\",[1500]],[[64294,64294],\"mapped\",[1501]],[[64295,64295],\"mapped\",[1512]],[[64296,64296],\"mapped\",[1514]],[[64297,64297],\"disallowed_STD3_mapped\",[43]],[[64298,64298],\"mapped\",[1513,1473]],[[64299,64299],\"mapped\",[1513,1474]],[[64300,64300],\"mapped\",[1513,1468,1473]],[[64301,64301],\"mapped\",[1513,1468,1474]],[[64302,64302],\"mapped\",[1488,1463]],[[64303,64303],\"mapped\",[1488,1464]],[[64304,64304],\"mapped\",[1488,1468]],[[64305,64305],\"mapped\",[1489,1468]],[[64306,64306],\"mapped\",[1490,1468]],[[64307,64307],\"mapped\",[1491,1468]],[[64308,64308],\"mapped\",[1492,1468]],[[64309,64309],\"mapped\",[1493,1468]],[[64310,64310],\"mapped\",[1494,1468]],[[64311,64311],\"disallowed\"],[[64312,64312],\"mapped\",[1496,1468]],[[64313,64313],\"mapped\",[1497,1468]],[[64314,64314],\"mapped\",[1498,1468]],[[64315,64315],\"mapped\",[1499,1468]],[[64316,64316],\"mapped\",[1500,1468]],[[64317,64317],\"disallowed\"],[[64318,64318],\"mapped\",[1502,1468]],[[64319,64319],\"disallowed\"],[[64320,64320],\"mapped\",[1504,1468]],[[64321,64321],\"mapped\",[1505,1468]],[[64322,64322],\"disallowed\"],[[64323,64323],\"mapped\",[1507,1468]],[[64324,64324],\"mapped\",[1508,1468]],[[64325,64325],\"disallowed\"],[[64326,64326],\"mapped\",[1510,1468]],[[64327,64327],\"mapped\",[1511,1468]],[[64328,64328],\"mapped\",[1512,1468]],[[64329,64329],\"mapped\",[1513,1468]],[[64330,64330],\"mapped\",[1514,1468]],[[64331,64331],\"mapped\",[1493,1465]],[[64332,64332],\"mapped\",[1489,1471]],[[64333,64333],\"mapped\",[1499,1471]],[[64334,64334],\"mapped\",[1508,1471]],[[64335,64335],\"mapped\",[1488,1500]],[[64336,64337],\"mapped\",[1649]],[[64338,64341],\"mapped\",[1659]],[[64342,64345],\"mapped\",[1662]],[[64346,64349],\"mapped\",[1664]],[[64350,64353],\"mapped\",[1658]],[[64354,64357],\"mapped\",[1663]],[[64358,64361],\"mapped\",[1657]],[[64362,64365],\"mapped\",[1700]],[[64366,64369],\"mapped\",[1702]],[[64370,64373],\"mapped\",[1668]],[[64374,64377],\"mapped\",[1667]],[[64378,64381],\"mapped\",[1670]],[[64382,64385],\"mapped\",[1671]],[[64386,64387],\"mapped\",[1677]],[[64388,64389],\"mapped\",[1676]],[[64390,64391],\"mapped\",[1678]],[[64392,64393],\"mapped\",[1672]],[[64394,64395],\"mapped\",[1688]],[[64396,64397],\"mapped\",[1681]],[[64398,64401],\"mapped\",[1705]],[[64402,64405],\"mapped\",[1711]],[[64406,64409],\"mapped\",[1715]],[[64410,64413],\"mapped\",[1713]],[[64414,64415],\"mapped\",[1722]],[[64416,64419],\"mapped\",[1723]],[[64420,64421],\"mapped\",[1728]],[[64422,64425],\"mapped\",[1729]],[[64426,64429],\"mapped\",[1726]],[[64430,64431],\"mapped\",[1746]],[[64432,64433],\"mapped\",[1747]],[[64434,64449],\"valid\",[],\"NV8\"],[[64450,64466],\"disallowed\"],[[64467,64470],\"mapped\",[1709]],[[64471,64472],\"mapped\",[1735]],[[64473,64474],\"mapped\",[1734]],[[64475,64476],\"mapped\",[1736]],[[64477,64477],\"mapped\",[1735,1652]],[[64478,64479],\"mapped\",[1739]],[[64480,64481],\"mapped\",[1733]],[[64482,64483],\"mapped\",[1737]],[[64484,64487],\"mapped\",[1744]],[[64488,64489],\"mapped\",[1609]],[[64490,64491],\"mapped\",[1574,1575]],[[64492,64493],\"mapped\",[1574,1749]],[[64494,64495],\"mapped\",[1574,1608]],[[64496,64497],\"mapped\",[1574,1735]],[[64498,64499],\"mapped\",[1574,1734]],[[64500,64501],\"mapped\",[1574,1736]],[[64502,64504],\"mapped\",[1574,1744]],[[64505,64507],\"mapped\",[1574,1609]],[[64508,64511],\"mapped\",[1740]],[[64512,64512],\"mapped\",[1574,1580]],[[64513,64513],\"mapped\",[1574,1581]],[[64514,64514],\"mapped\",[1574,1605]],[[64515,64515],\"mapped\",[1574,1609]],[[64516,64516],\"mapped\",[1574,1610]],[[64517,64517],\"mapped\",[1576,1580]],[[64518,64518],\"mapped\",[1576,1581]],[[64519,64519],\"mapped\",[1576,1582]],[[64520,64520],\"mapped\",[1576,1605]],[[64521,64521],\"mapped\",[1576,1609]],[[64522,64522],\"mapped\",[1576,1610]],[[64523,64523],\"mapped\",[1578,1580]],[[64524,64524],\"mapped\",[1578,1581]],[[64525,64525],\"mapped\",[1578,1582]],[[64526,64526],\"mapped\",[1578,1605]],[[64527,64527],\"mapped\",[1578,1609]],[[64528,64528],\"mapped\",[1578,1610]],[[64529,64529],\"mapped\",[1579,1580]],[[64530,64530],\"mapped\",[1579,1605]],[[64531,64531],\"mapped\",[1579,1609]],[[64532,64532],\"mapped\",[1579,1610]],[[64533,64533],\"mapped\",[1580,1581]],[[64534,64534],\"mapped\",[1580,1605]],[[64535,64535],\"mapped\",[1581,1580]],[[64536,64536],\"mapped\",[1581,1605]],[[64537,64537],\"mapped\",[1582,1580]],[[64538,64538],\"mapped\",[1582,1581]],[[64539,64539],\"mapped\",[1582,1605]],[[64540,64540],\"mapped\",[1587,1580]],[[64541,64541],\"mapped\",[1587,1581]],[[64542,64542],\"mapped\",[1587,1582]],[[64543,64543],\"mapped\",[1587,1605]],[[64544,64544],\"mapped\",[1589,1581]],[[64545,64545],\"mapped\",[1589,1605]],[[64546,64546],\"mapped\",[1590,1580]],[[64547,64547],\"mapped\",[1590,1581]],[[64548,64548],\"mapped\",[1590,1582]],[[64549,64549],\"mapped\",[1590,1605]],[[64550,64550],\"mapped\",[1591,1581]],[[64551,64551],\"mapped\",[1591,1605]],[[64552,64552],\"mapped\",[1592,1605]],[[64553,64553],\"mapped\",[1593,1580]],[[64554,64554],\"mapped\",[1593,1605]],[[64555,64555],\"mapped\",[1594,1580]],[[64556,64556],\"mapped\",[1594,1605]],[[64557,64557],\"mapped\",[1601,1580]],[[64558,64558],\"mapped\",[1601,1581]],[[64559,64559],\"mapped\",[1601,1582]],[[64560,64560],\"mapped\",[1601,1605]],[[64561,64561],\"mapped\",[1601,1609]],[[64562,64562],\"mapped\",[1601,1610]],[[64563,64563],\"mapped\",[1602,1581]],[[64564,64564],\"mapped\",[1602,1605]],[[64565,64565],\"mapped\",[1602,1609]],[[64566,64566],\"mapped\",[1602,1610]],[[64567,64567],\"mapped\",[1603,1575]],[[64568,64568],\"mapped\",[1603,1580]],[[64569,64569],\"mapped\",[1603,1581]],[[64570,64570],\"mapped\",[1603,1582]],[[64571,64571],\"mapped\",[1603,1604]],[[64572,64572],\"mapped\",[1603,1605]],[[64573,64573],\"mapped\",[1603,1609]],[[64574,64574],\"mapped\",[1603,1610]],[[64575,64575],\"mapped\",[1604,1580]],[[64576,64576],\"mapped\",[1604,1581]],[[64577,64577],\"mapped\",[1604,1582]],[[64578,64578],\"mapped\",[1604,1605]],[[64579,64579],\"mapped\",[1604,1609]],[[64580,64580],\"mapped\",[1604,1610]],[[64581,64581],\"mapped\",[1605,1580]],[[64582,64582],\"mapped\",[1605,1581]],[[64583,64583],\"mapped\",[1605,1582]],[[64584,64584],\"mapped\",[1605,1605]],[[64585,64585],\"mapped\",[1605,1609]],[[64586,64586],\"mapped\",[1605,1610]],[[64587,64587],\"mapped\",[1606,1580]],[[64588,64588],\"mapped\",[1606,1581]],[[64589,64589],\"mapped\",[1606,1582]],[[64590,64590],\"mapped\",[1606,1605]],[[64591,64591],\"mapped\",[1606,1609]],[[64592,64592],\"mapped\",[1606,1610]],[[64593,64593],\"mapped\",[1607,1580]],[[64594,64594],\"mapped\",[1607,1605]],[[64595,64595],\"mapped\",[1607,1609]],[[64596,64596],\"mapped\",[1607,1610]],[[64597,64597],\"mapped\",[1610,1580]],[[64598,64598],\"mapped\",[1610,1581]],[[64599,64599],\"mapped\",[1610,1582]],[[64600,64600],\"mapped\",[1610,1605]],[[64601,64601],\"mapped\",[1610,1609]],[[64602,64602],\"mapped\",[1610,1610]],[[64603,64603],\"mapped\",[1584,1648]],[[64604,64604],\"mapped\",[1585,1648]],[[64605,64605],\"mapped\",[1609,1648]],[[64606,64606],\"disallowed_STD3_mapped\",[32,1612,1617]],[[64607,64607],\"disallowed_STD3_mapped\",[32,1613,1617]],[[64608,64608],\"disallowed_STD3_mapped\",[32,1614,1617]],[[64609,64609],\"disallowed_STD3_mapped\",[32,1615,1617]],[[64610,64610],\"disallowed_STD3_mapped\",[32,1616,1617]],[[64611,64611],\"disallowed_STD3_mapped\",[32,1617,1648]],[[64612,64612],\"mapped\",[1574,1585]],[[64613,64613],\"mapped\",[1574,1586]],[[64614,64614],\"mapped\",[1574,1605]],[[64615,64615],\"mapped\",[1574,1606]],[[64616,64616],\"mapped\",[1574,1609]],[[64617,64617],\"mapped\",[1574,1610]],[[64618,64618],\"mapped\",[1576,1585]],[[64619,64619],\"mapped\",[1576,1586]],[[64620,64620],\"mapped\",[1576,1605]],[[64621,64621],\"mapped\",[1576,1606]],[[64622,64622],\"mapped\",[1576,1609]],[[64623,64623],\"mapped\",[1576,1610]],[[64624,64624],\"mapped\",[1578,1585]],[[64625,64625],\"mapped\",[1578,1586]],[[64626,64626],\"mapped\",[1578,1605]],[[64627,64627],\"mapped\",[1578,1606]],[[64628,64628],\"mapped\",[1578,1609]],[[64629,64629],\"mapped\",[1578,1610]],[[64630,64630],\"mapped\",[1579,1585]],[[64631,64631],\"mapped\",[1579,1586]],[[64632,64632],\"mapped\",[1579,1605]],[[64633,64633],\"mapped\",[1579,1606]],[[64634,64634],\"mapped\",[1579,1609]],[[64635,64635],\"mapped\",[1579,1610]],[[64636,64636],\"mapped\",[1601,1609]],[[64637,64637],\"mapped\",[1601,1610]],[[64638,64638],\"mapped\",[1602,1609]],[[64639,64639],\"mapped\",[1602,1610]],[[64640,64640],\"mapped\",[1603,1575]],[[64641,64641],\"mapped\",[1603,1604]],[[64642,64642],\"mapped\",[1603,1605]],[[64643,64643],\"mapped\",[1603,1609]],[[64644,64644],\"mapped\",[1603,1610]],[[64645,64645],\"mapped\",[1604,1605]],[[64646,64646],\"mapped\",[1604,1609]],[[64647,64647],\"mapped\",[1604,1610]],[[64648,64648],\"mapped\",[1605,1575]],[[64649,64649],\"mapped\",[1605,1605]],[[64650,64650],\"mapped\",[1606,1585]],[[64651,64651],\"mapped\",[1606,1586]],[[64652,64652],\"mapped\",[1606,1605]],[[64653,64653],\"mapped\",[1606,1606]],[[64654,64654],\"mapped\",[1606,1609]],[[64655,64655],\"mapped\",[1606,1610]],[[64656,64656],\"mapped\",[1609,1648]],[[64657,64657],\"mapped\",[1610,1585]],[[64658,64658],\"mapped\",[1610,1586]],[[64659,64659],\"mapped\",[1610,1605]],[[64660,64660],\"mapped\",[1610,1606]],[[64661,64661],\"mapped\",[1610,1609]],[[64662,64662],\"mapped\",[1610,1610]],[[64663,64663],\"mapped\",[1574,1580]],[[64664,64664],\"mapped\",[1574,1581]],[[64665,64665],\"mapped\",[1574,1582]],[[64666,64666],\"mapped\",[1574,1605]],[[64667,64667],\"mapped\",[1574,1607]],[[64668,64668],\"mapped\",[1576,1580]],[[64669,64669],\"mapped\",[1576,1581]],[[64670,64670],\"mapped\",[1576,1582]],[[64671,64671],\"mapped\",[1576,1605]],[[64672,64672],\"mapped\",[1576,1607]],[[64673,64673],\"mapped\",[1578,1580]],[[64674,64674],\"mapped\",[1578,1581]],[[64675,64675],\"mapped\",[1578,1582]],[[64676,64676],\"mapped\",[1578,1605]],[[64677,64677],\"mapped\",[1578,1607]],[[64678,64678],\"mapped\",[1579,1605]],[[64679,64679],\"mapped\",[1580,1581]],[[64680,64680],\"mapped\",[1580,1605]],[[64681,64681],\"mapped\",[1581,1580]],[[64682,64682],\"mapped\",[1581,1605]],[[64683,64683],\"mapped\",[1582,1580]],[[64684,64684],\"mapped\",[1582,1605]],[[64685,64685],\"mapped\",[1587,1580]],[[64686,64686],\"mapped\",[1587,1581]],[[64687,64687],\"mapped\",[1587,1582]],[[64688,64688],\"mapped\",[1587,1605]],[[64689,64689],\"mapped\",[1589,1581]],[[64690,64690],\"mapped\",[1589,1582]],[[64691,64691],\"mapped\",[1589,1605]],[[64692,64692],\"mapped\",[1590,1580]],[[64693,64693],\"mapped\",[1590,1581]],[[64694,64694],\"mapped\",[1590,1582]],[[64695,64695],\"mapped\",[1590,1605]],[[64696,64696],\"mapped\",[1591,1581]],[[64697,64697],\"mapped\",[1592,1605]],[[64698,64698],\"mapped\",[1593,1580]],[[64699,64699],\"mapped\",[1593,1605]],[[64700,64700],\"mapped\",[1594,1580]],[[64701,64701],\"mapped\",[1594,1605]],[[64702,64702],\"mapped\",[1601,1580]],[[64703,64703],\"mapped\",[1601,1581]],[[64704,64704],\"mapped\",[1601,1582]],[[64705,64705],\"mapped\",[1601,1605]],[[64706,64706],\"mapped\",[1602,1581]],[[64707,64707],\"mapped\",[1602,1605]],[[64708,64708],\"mapped\",[1603,1580]],[[64709,64709],\"mapped\",[1603,1581]],[[64710,64710],\"mapped\",[1603,1582]],[[64711,64711],\"mapped\",[1603,1604]],[[64712,64712],\"mapped\",[1603,1605]],[[64713,64713],\"mapped\",[1604,1580]],[[64714,64714],\"mapped\",[1604,1581]],[[64715,64715],\"mapped\",[1604,1582]],[[64716,64716],\"mapped\",[1604,1605]],[[64717,64717],\"mapped\",[1604,1607]],[[64718,64718],\"mapped\",[1605,1580]],[[64719,64719],\"mapped\",[1605,1581]],[[64720,64720],\"mapped\",[1605,1582]],[[64721,64721],\"mapped\",[1605,1605]],[[64722,64722],\"mapped\",[1606,1580]],[[64723,64723],\"mapped\",[1606,1581]],[[64724,64724],\"mapped\",[1606,1582]],[[64725,64725],\"mapped\",[1606,1605]],[[64726,64726],\"mapped\",[1606,1607]],[[64727,64727],\"mapped\",[1607,1580]],[[64728,64728],\"mapped\",[1607,1605]],[[64729,64729],\"mapped\",[1607,1648]],[[64730,64730],\"mapped\",[1610,1580]],[[64731,64731],\"mapped\",[1610,1581]],[[64732,64732],\"mapped\",[1610,1582]],[[64733,64733],\"mapped\",[1610,1605]],[[64734,64734],\"mapped\",[1610,1607]],[[64735,64735],\"mapped\",[1574,1605]],[[64736,64736],\"mapped\",[1574,1607]],[[64737,64737],\"mapped\",[1576,1605]],[[64738,64738],\"mapped\",[1576,1607]],[[64739,64739],\"mapped\",[1578,1605]],[[64740,64740],\"mapped\",[1578,1607]],[[64741,64741],\"mapped\",[1579,1605]],[[64742,64742],\"mapped\",[1579,1607]],[[64743,64743],\"mapped\",[1587,1605]],[[64744,64744],\"mapped\",[1587,1607]],[[64745,64745],\"mapped\",[1588,1605]],[[64746,64746],\"mapped\",[1588,1607]],[[64747,64747],\"mapped\",[1603,1604]],[[64748,64748],\"mapped\",[1603,1605]],[[64749,64749],\"mapped\",[1604,1605]],[[64750,64750],\"mapped\",[1606,1605]],[[64751,64751],\"mapped\",[1606,1607]],[[64752,64752],\"mapped\",[1610,1605]],[[64753,64753],\"mapped\",[1610,1607]],[[64754,64754],\"mapped\",[1600,1614,1617]],[[64755,64755],\"mapped\",[1600,1615,1617]],[[64756,64756],\"mapped\",[1600,1616,1617]],[[64757,64757],\"mapped\",[1591,1609]],[[64758,64758],\"mapped\",[1591,1610]],[[64759,64759],\"mapped\",[1593,1609]],[[64760,64760],\"mapped\",[1593,1610]],[[64761,64761],\"mapped\",[1594,1609]],[[64762,64762],\"mapped\",[1594,1610]],[[64763,64763],\"mapped\",[1587,1609]],[[64764,64764],\"mapped\",[1587,1610]],[[64765,64765],\"mapped\",[1588,1609]],[[64766,64766],\"mapped\",[1588,1610]],[[64767,64767],\"mapped\",[1581,1609]],[[64768,64768],\"mapped\",[1581,1610]],[[64769,64769],\"mapped\",[1580,1609]],[[64770,64770],\"mapped\",[1580,1610]],[[64771,64771],\"mapped\",[1582,1609]],[[64772,64772],\"mapped\",[1582,1610]],[[64773,64773],\"mapped\",[1589,1609]],[[64774,64774],\"mapped\",[1589,1610]],[[64775,64775],\"mapped\",[1590,1609]],[[64776,64776],\"mapped\",[1590,1610]],[[64777,64777],\"mapped\",[1588,1580]],[[64778,64778],\"mapped\",[1588,1581]],[[64779,64779],\"mapped\",[1588,1582]],[[64780,64780],\"mapped\",[1588,1605]],[[64781,64781],\"mapped\",[1588,1585]],[[64782,64782],\"mapped\",[1587,1585]],[[64783,64783],\"mapped\",[1589,1585]],[[64784,64784],\"mapped\",[1590,1585]],[[64785,64785],\"mapped\",[1591,1609]],[[64786,64786],\"mapped\",[1591,1610]],[[64787,64787],\"mapped\",[1593,1609]],[[64788,64788],\"mapped\",[1593,1610]],[[64789,64789],\"mapped\",[1594,1609]],[[64790,64790],\"mapped\",[1594,1610]],[[64791,64791],\"mapped\",[1587,1609]],[[64792,64792],\"mapped\",[1587,1610]],[[64793,64793],\"mapped\",[1588,1609]],[[64794,64794],\"mapped\",[1588,1610]],[[64795,64795],\"mapped\",[1581,1609]],[[64796,64796],\"mapped\",[1581,1610]],[[64797,64797],\"mapped\",[1580,1609]],[[64798,64798],\"mapped\",[1580,1610]],[[64799,64799],\"mapped\",[1582,1609]],[[64800,64800],\"mapped\",[1582,1610]],[[64801,64801],\"mapped\",[1589,1609]],[[64802,64802],\"mapped\",[1589,1610]],[[64803,64803],\"mapped\",[1590,1609]],[[64804,64804],\"mapped\",[1590,1610]],[[64805,64805],\"mapped\",[1588,1580]],[[64806,64806],\"mapped\",[1588,1581]],[[64807,64807],\"mapped\",[1588,1582]],[[64808,64808],\"mapped\",[1588,1605]],[[64809,64809],\"mapped\",[1588,1585]],[[64810,64810],\"mapped\",[1587,1585]],[[64811,64811],\"mapped\",[1589,1585]],[[64812,64812],\"mapped\",[1590,1585]],[[64813,64813],\"mapped\",[1588,1580]],[[64814,64814],\"mapped\",[1588,1581]],[[64815,64815],\"mapped\",[1588,1582]],[[64816,64816],\"mapped\",[1588,1605]],[[64817,64817],\"mapped\",[1587,1607]],[[64818,64818],\"mapped\",[1588,1607]],[[64819,64819],\"mapped\",[1591,1605]],[[64820,64820],\"mapped\",[1587,1580]],[[64821,64821],\"mapped\",[1587,1581]],[[64822,64822],\"mapped\",[1587,1582]],[[64823,64823],\"mapped\",[1588,1580]],[[64824,64824],\"mapped\",[1588,1581]],[[64825,64825],\"mapped\",[1588,1582]],[[64826,64826],\"mapped\",[1591,1605]],[[64827,64827],\"mapped\",[1592,1605]],[[64828,64829],\"mapped\",[1575,1611]],[[64830,64831],\"valid\",[],\"NV8\"],[[64832,64847],\"disallowed\"],[[64848,64848],\"mapped\",[1578,1580,1605]],[[64849,64850],\"mapped\",[1578,1581,1580]],[[64851,64851],\"mapped\",[1578,1581,1605]],[[64852,64852],\"mapped\",[1578,1582,1605]],[[64853,64853],\"mapped\",[1578,1605,1580]],[[64854,64854],\"mapped\",[1578,1605,1581]],[[64855,64855],\"mapped\",[1578,1605,1582]],[[64856,64857],\"mapped\",[1580,1605,1581]],[[64858,64858],\"mapped\",[1581,1605,1610]],[[64859,64859],\"mapped\",[1581,1605,1609]],[[64860,64860],\"mapped\",[1587,1581,1580]],[[64861,64861],\"mapped\",[1587,1580,1581]],[[64862,64862],\"mapped\",[1587,1580,1609]],[[64863,64864],\"mapped\",[1587,1605,1581]],[[64865,64865],\"mapped\",[1587,1605,1580]],[[64866,64867],\"mapped\",[1587,1605,1605]],[[64868,64869],\"mapped\",[1589,1581,1581]],[[64870,64870],\"mapped\",[1589,1605,1605]],[[64871,64872],\"mapped\",[1588,1581,1605]],[[64873,64873],\"mapped\",[1588,1580,1610]],[[64874,64875],\"mapped\",[1588,1605,1582]],[[64876,64877],\"mapped\",[1588,1605,1605]],[[64878,64878],\"mapped\",[1590,1581,1609]],[[64879,64880],\"mapped\",[1590,1582,1605]],[[64881,64882],\"mapped\",[1591,1605,1581]],[[64883,64883],\"mapped\",[1591,1605,1605]],[[64884,64884],\"mapped\",[1591,1605,1610]],[[64885,64885],\"mapped\",[1593,1580,1605]],[[64886,64887],\"mapped\",[1593,1605,1605]],[[64888,64888],\"mapped\",[1593,1605,1609]],[[64889,64889],\"mapped\",[1594,1605,1605]],[[64890,64890],\"mapped\",[1594,1605,1610]],[[64891,64891],\"mapped\",[1594,1605,1609]],[[64892,64893],\"mapped\",[1601,1582,1605]],[[64894,64894],\"mapped\",[1602,1605,1581]],[[64895,64895],\"mapped\",[1602,1605,1605]],[[64896,64896],\"mapped\",[1604,1581,1605]],[[64897,64897],\"mapped\",[1604,1581,1610]],[[64898,64898],\"mapped\",[1604,1581,1609]],[[64899,64900],\"mapped\",[1604,1580,1580]],[[64901,64902],\"mapped\",[1604,1582,1605]],[[64903,64904],\"mapped\",[1604,1605,1581]],[[64905,64905],\"mapped\",[1605,1581,1580]],[[64906,64906],\"mapped\",[1605,1581,1605]],[[64907,64907],\"mapped\",[1605,1581,1610]],[[64908,64908],\"mapped\",[1605,1580,1581]],[[64909,64909],\"mapped\",[1605,1580,1605]],[[64910,64910],\"mapped\",[1605,1582,1580]],[[64911,64911],\"mapped\",[1605,1582,1605]],[[64912,64913],\"disallowed\"],[[64914,64914],\"mapped\",[1605,1580,1582]],[[64915,64915],\"mapped\",[1607,1605,1580]],[[64916,64916],\"mapped\",[1607,1605,1605]],[[64917,64917],\"mapped\",[1606,1581,1605]],[[64918,64918],\"mapped\",[1606,1581,1609]],[[64919,64920],\"mapped\",[1606,1580,1605]],[[64921,64921],\"mapped\",[1606,1580,1609]],[[64922,64922],\"mapped\",[1606,1605,1610]],[[64923,64923],\"mapped\",[1606,1605,1609]],[[64924,64925],\"mapped\",[1610,1605,1605]],[[64926,64926],\"mapped\",[1576,1582,1610]],[[64927,64927],\"mapped\",[1578,1580,1610]],[[64928,64928],\"mapped\",[1578,1580,1609]],[[64929,64929],\"mapped\",[1578,1582,1610]],[[64930,64930],\"mapped\",[1578,1582,1609]],[[64931,64931],\"mapped\",[1578,1605,1610]],[[64932,64932],\"mapped\",[1578,1605,1609]],[[64933,64933],\"mapped\",[1580,1605,1610]],[[64934,64934],\"mapped\",[1580,1581,1609]],[[64935,64935],\"mapped\",[1580,1605,1609]],[[64936,64936],\"mapped\",[1587,1582,1609]],[[64937,64937],\"mapped\",[1589,1581,1610]],[[64938,64938],\"mapped\",[1588,1581,1610]],[[64939,64939],\"mapped\",[1590,1581,1610]],[[64940,64940],\"mapped\",[1604,1580,1610]],[[64941,64941],\"mapped\",[1604,1605,1610]],[[64942,64942],\"mapped\",[1610,1581,1610]],[[64943,64943],\"mapped\",[1610,1580,1610]],[[64944,64944],\"mapped\",[1610,1605,1610]],[[64945,64945],\"mapped\",[1605,1605,1610]],[[64946,64946],\"mapped\",[1602,1605,1610]],[[64947,64947],\"mapped\",[1606,1581,1610]],[[64948,64948],\"mapped\",[1602,1605,1581]],[[64949,64949],\"mapped\",[1604,1581,1605]],[[64950,64950],\"mapped\",[1593,1605,1610]],[[64951,64951],\"mapped\",[1603,1605,1610]],[[64952,64952],\"mapped\",[1606,1580,1581]],[[64953,64953],\"mapped\",[1605,1582,1610]],[[64954,64954],\"mapped\",[1604,1580,1605]],[[64955,64955],\"mapped\",[1603,1605,1605]],[[64956,64956],\"mapped\",[1604,1580,1605]],[[64957,64957],\"mapped\",[1606,1580,1581]],[[64958,64958],\"mapped\",[1580,1581,1610]],[[64959,64959],\"mapped\",[1581,1580,1610]],[[64960,64960],\"mapped\",[1605,1580,1610]],[[64961,64961],\"mapped\",[1601,1605,1610]],[[64962,64962],\"mapped\",[1576,1581,1610]],[[64963,64963],\"mapped\",[1603,1605,1605]],[[64964,64964],\"mapped\",[1593,1580,1605]],[[64965,64965],\"mapped\",[1589,1605,1605]],[[64966,64966],\"mapped\",[1587,1582,1610]],[[64967,64967],\"mapped\",[1606,1580,1610]],[[64968,64975],\"disallowed\"],[[64976,65007],\"disallowed\"],[[65008,65008],\"mapped\",[1589,1604,1746]],[[65009,65009],\"mapped\",[1602,1604,1746]],[[65010,65010],\"mapped\",[1575,1604,1604,1607]],[[65011,65011],\"mapped\",[1575,1603,1576,1585]],[[65012,65012],\"mapped\",[1605,1581,1605,1583]],[[65013,65013],\"mapped\",[1589,1604,1593,1605]],[[65014,65014],\"mapped\",[1585,1587,1608,1604]],[[65015,65015],\"mapped\",[1593,1604,1610,1607]],[[65016,65016],\"mapped\",[1608,1587,1604,1605]],[[65017,65017],\"mapped\",[1589,1604,1609]],[[65018,65018],\"disallowed_STD3_mapped\",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],\"disallowed_STD3_mapped\",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],\"mapped\",[1585,1740,1575,1604]],[[65021,65021],\"valid\",[],\"NV8\"],[[65022,65023],\"disallowed\"],[[65024,65039],\"ignored\"],[[65040,65040],\"disallowed_STD3_mapped\",[44]],[[65041,65041],\"mapped\",[12289]],[[65042,65042],\"disallowed\"],[[65043,65043],\"disallowed_STD3_mapped\",[58]],[[65044,65044],\"disallowed_STD3_mapped\",[59]],[[65045,65045],\"disallowed_STD3_mapped\",[33]],[[65046,65046],\"disallowed_STD3_mapped\",[63]],[[65047,65047],\"mapped\",[12310]],[[65048,65048],\"mapped\",[12311]],[[65049,65049],\"disallowed\"],[[65050,65055],\"disallowed\"],[[65056,65059],\"valid\"],[[65060,65062],\"valid\"],[[65063,65069],\"valid\"],[[65070,65071],\"valid\"],[[65072,65072],\"disallowed\"],[[65073,65073],\"mapped\",[8212]],[[65074,65074],\"mapped\",[8211]],[[65075,65076],\"disallowed_STD3_mapped\",[95]],[[65077,65077],\"disallowed_STD3_mapped\",[40]],[[65078,65078],\"disallowed_STD3_mapped\",[41]],[[65079,65079],\"disallowed_STD3_mapped\",[123]],[[65080,65080],\"disallowed_STD3_mapped\",[125]],[[65081,65081],\"mapped\",[12308]],[[65082,65082],\"mapped\",[12309]],[[65083,65083],\"mapped\",[12304]],[[65084,65084],\"mapped\",[12305]],[[65085,65085],\"mapped\",[12298]],[[65086,65086],\"mapped\",[12299]],[[65087,65087],\"mapped\",[12296]],[[65088,65088],\"mapped\",[12297]],[[65089,65089],\"mapped\",[12300]],[[65090,65090],\"mapped\",[12301]],[[65091,65091],\"mapped\",[12302]],[[65092,65092],\"mapped\",[12303]],[[65093,65094],\"valid\",[],\"NV8\"],[[65095,65095],\"disallowed_STD3_mapped\",[91]],[[65096,65096],\"disallowed_STD3_mapped\",[93]],[[65097,65100],\"disallowed_STD3_mapped\",[32,773]],[[65101,65103],\"disallowed_STD3_mapped\",[95]],[[65104,65104],\"disallowed_STD3_mapped\",[44]],[[65105,65105],\"mapped\",[12289]],[[65106,65106],\"disallowed\"],[[65107,65107],\"disallowed\"],[[65108,65108],\"disallowed_STD3_mapped\",[59]],[[65109,65109],\"disallowed_STD3_mapped\",[58]],[[65110,65110],\"disallowed_STD3_mapped\",[63]],[[65111,65111],\"disallowed_STD3_mapped\",[33]],[[65112,65112],\"mapped\",[8212]],[[65113,65113],\"disallowed_STD3_mapped\",[40]],[[65114,65114],\"disallowed_STD3_mapped\",[41]],[[65115,65115],\"disallowed_STD3_mapped\",[123]],[[65116,65116],\"disallowed_STD3_mapped\",[125]],[[65117,65117],\"mapped\",[12308]],[[65118,65118],\"mapped\",[12309]],[[65119,65119],\"disallowed_STD3_mapped\",[35]],[[65120,65120],\"disallowed_STD3_mapped\",[38]],[[65121,65121],\"disallowed_STD3_mapped\",[42]],[[65122,65122],\"disallowed_STD3_mapped\",[43]],[[65123,65123],\"mapped\",[45]],[[65124,65124],\"disallowed_STD3_mapped\",[60]],[[65125,65125],\"disallowed_STD3_mapped\",[62]],[[65126,65126],\"disallowed_STD3_mapped\",[61]],[[65127,65127],\"disallowed\"],[[65128,65128],\"disallowed_STD3_mapped\",[92]],[[65129,65129],\"disallowed_STD3_mapped\",[36]],[[65130,65130],\"disallowed_STD3_mapped\",[37]],[[65131,65131],\"disallowed_STD3_mapped\",[64]],[[65132,65135],\"disallowed\"],[[65136,65136],\"disallowed_STD3_mapped\",[32,1611]],[[65137,65137],\"mapped\",[1600,1611]],[[65138,65138],\"disallowed_STD3_mapped\",[32,1612]],[[65139,65139],\"valid\"],[[65140,65140],\"disallowed_STD3_mapped\",[32,1613]],[[65141,65141],\"disallowed\"],[[65142,65142],\"disallowed_STD3_mapped\",[32,1614]],[[65143,65143],\"mapped\",[1600,1614]],[[65144,65144],\"disallowed_STD3_mapped\",[32,1615]],[[65145,65145],\"mapped\",[1600,1615]],[[65146,65146],\"disallowed_STD3_mapped\",[32,1616]],[[65147,65147],\"mapped\",[1600,1616]],[[65148,65148],\"disallowed_STD3_mapped\",[32,1617]],[[65149,65149],\"mapped\",[1600,1617]],[[65150,65150],\"disallowed_STD3_mapped\",[32,1618]],[[65151,65151],\"mapped\",[1600,1618]],[[65152,65152],\"mapped\",[1569]],[[65153,65154],\"mapped\",[1570]],[[65155,65156],\"mapped\",[1571]],[[65157,65158],\"mapped\",[1572]],[[65159,65160],\"mapped\",[1573]],[[65161,65164],\"mapped\",[1574]],[[65165,65166],\"mapped\",[1575]],[[65167,65170],\"mapped\",[1576]],[[65171,65172],\"mapped\",[1577]],[[65173,65176],\"mapped\",[1578]],[[65177,65180],\"mapped\",[1579]],[[65181,65184],\"mapped\",[1580]],[[65185,65188],\"mapped\",[1581]],[[65189,65192],\"mapped\",[1582]],[[65193,65194],\"mapped\",[1583]],[[65195,65196],\"mapped\",[1584]],[[65197,65198],\"mapped\",[1585]],[[65199,65200],\"mapped\",[1586]],[[65201,65204],\"mapped\",[1587]],[[65205,65208],\"mapped\",[1588]],[[65209,65212],\"mapped\",[1589]],[[65213,65216],\"mapped\",[1590]],[[65217,65220],\"mapped\",[1591]],[[65221,65224],\"mapped\",[1592]],[[65225,65228],\"mapped\",[1593]],[[65229,65232],\"mapped\",[1594]],[[65233,65236],\"mapped\",[1601]],[[65237,65240],\"mapped\",[1602]],[[65241,65244],\"mapped\",[1603]],[[65245,65248],\"mapped\",[1604]],[[65249,65252],\"mapped\",[1605]],[[65253,65256],\"mapped\",[1606]],[[65257,65260],\"mapped\",[1607]],[[65261,65262],\"mapped\",[1608]],[[65263,65264],\"mapped\",[1609]],[[65265,65268],\"mapped\",[1610]],[[65269,65270],\"mapped\",[1604,1570]],[[65271,65272],\"mapped\",[1604,1571]],[[65273,65274],\"mapped\",[1604,1573]],[[65275,65276],\"mapped\",[1604,1575]],[[65277,65278],\"disallowed\"],[[65279,65279],\"ignored\"],[[65280,65280],\"disallowed\"],[[65281,65281],\"disallowed_STD3_mapped\",[33]],[[65282,65282],\"disallowed_STD3_mapped\",[34]],[[65283,65283],\"disallowed_STD3_mapped\",[35]],[[65284,65284],\"disallowed_STD3_mapped\",[36]],[[65285,65285],\"disallowed_STD3_mapped\",[37]],[[65286,65286],\"disallowed_STD3_mapped\",[38]],[[65287,65287],\"disallowed_STD3_mapped\",[39]],[[65288,65288],\"disallowed_STD3_mapped\",[40]],[[65289,65289],\"disallowed_STD3_mapped\",[41]],[[65290,65290],\"disallowed_STD3_mapped\",[42]],[[65291,65291],\"disallowed_STD3_mapped\",[43]],[[65292,65292],\"disallowed_STD3_mapped\",[44]],[[65293,65293],\"mapped\",[45]],[[65294,65294],\"mapped\",[46]],[[65295,65295],\"disallowed_STD3_mapped\",[47]],[[65296,65296],\"mapped\",[48]],[[65297,65297],\"mapped\",[49]],[[65298,65298],\"mapped\",[50]],[[65299,65299],\"mapped\",[51]],[[65300,65300],\"mapped\",[52]],[[65301,65301],\"mapped\",[53]],[[65302,65302],\"mapped\",[54]],[[65303,65303],\"mapped\",[55]],[[65304,65304],\"mapped\",[56]],[[65305,65305],\"mapped\",[57]],[[65306,65306],\"disallowed_STD3_mapped\",[58]],[[65307,65307],\"disallowed_STD3_mapped\",[59]],[[65308,65308],\"disallowed_STD3_mapped\",[60]],[[65309,65309],\"disallowed_STD3_mapped\",[61]],[[65310,65310],\"disallowed_STD3_mapped\",[62]],[[65311,65311],\"disallowed_STD3_mapped\",[63]],[[65312,65312],\"disallowed_STD3_mapped\",[64]],[[65313,65313],\"mapped\",[97]],[[65314,65314],\"mapped\",[98]],[[65315,65315],\"mapped\",[99]],[[65316,65316],\"mapped\",[100]],[[65317,65317],\"mapped\",[101]],[[65318,65318],\"mapped\",[102]],[[65319,65319],\"mapped\",[103]],[[65320,65320],\"mapped\",[104]],[[65321,65321],\"mapped\",[105]],[[65322,65322],\"mapped\",[106]],[[65323,65323],\"mapped\",[107]],[[65324,65324],\"mapped\",[108]],[[65325,65325],\"mapped\",[109]],[[65326,65326],\"mapped\",[110]],[[65327,65327],\"mapped\",[111]],[[65328,65328],\"mapped\",[112]],[[65329,65329],\"mapped\",[113]],[[65330,65330],\"mapped\",[114]],[[65331,65331],\"mapped\",[115]],[[65332,65332],\"mapped\",[116]],[[65333,65333],\"mapped\",[117]],[[65334,65334],\"mapped\",[118]],[[65335,65335],\"mapped\",[119]],[[65336,65336],\"mapped\",[120]],[[65337,65337],\"mapped\",[121]],[[65338,65338],\"mapped\",[122]],[[65339,65339],\"disallowed_STD3_mapped\",[91]],[[65340,65340],\"disallowed_STD3_mapped\",[92]],[[65341,65341],\"disallowed_STD3_mapped\",[93]],[[65342,65342],\"disallowed_STD3_mapped\",[94]],[[65343,65343],\"disallowed_STD3_mapped\",[95]],[[65344,65344],\"disallowed_STD3_mapped\",[96]],[[65345,65345],\"mapped\",[97]],[[65346,65346],\"mapped\",[98]],[[65347,65347],\"mapped\",[99]],[[65348,65348],\"mapped\",[100]],[[65349,65349],\"mapped\",[101]],[[65350,65350],\"mapped\",[102]],[[65351,65351],\"mapped\",[103]],[[65352,65352],\"mapped\",[104]],[[65353,65353],\"mapped\",[105]],[[65354,65354],\"mapped\",[106]],[[65355,65355],\"mapped\",[107]],[[65356,65356],\"mapped\",[108]],[[65357,65357],\"mapped\",[109]],[[65358,65358],\"mapped\",[110]],[[65359,65359],\"mapped\",[111]],[[65360,65360],\"mapped\",[112]],[[65361,65361],\"mapped\",[113]],[[65362,65362],\"mapped\",[114]],[[65363,65363],\"mapped\",[115]],[[65364,65364],\"mapped\",[116]],[[65365,65365],\"mapped\",[117]],[[65366,65366],\"mapped\",[118]],[[65367,65367],\"mapped\",[119]],[[65368,65368],\"mapped\",[120]],[[65369,65369],\"mapped\",[121]],[[65370,65370],\"mapped\",[122]],[[65371,65371],\"disallowed_STD3_mapped\",[123]],[[65372,65372],\"disallowed_STD3_mapped\",[124]],[[65373,65373],\"disallowed_STD3_mapped\",[125]],[[65374,65374],\"disallowed_STD3_mapped\",[126]],[[65375,65375],\"mapped\",[10629]],[[65376,65376],\"mapped\",[10630]],[[65377,65377],\"mapped\",[46]],[[65378,65378],\"mapped\",[12300]],[[65379,65379],\"mapped\",[12301]],[[65380,65380],\"mapped\",[12289]],[[65381,65381],\"mapped\",[12539]],[[65382,65382],\"mapped\",[12530]],[[65383,65383],\"mapped\",[12449]],[[65384,65384],\"mapped\",[12451]],[[65385,65385],\"mapped\",[12453]],[[65386,65386],\"mapped\",[12455]],[[65387,65387],\"mapped\",[12457]],[[65388,65388],\"mapped\",[12515]],[[65389,65389],\"mapped\",[12517]],[[65390,65390],\"mapped\",[12519]],[[65391,65391],\"mapped\",[12483]],[[65392,65392],\"mapped\",[12540]],[[65393,65393],\"mapped\",[12450]],[[65394,65394],\"mapped\",[12452]],[[65395,65395],\"mapped\",[12454]],[[65396,65396],\"mapped\",[12456]],[[65397,65397],\"mapped\",[12458]],[[65398,65398],\"mapped\",[12459]],[[65399,65399],\"mapped\",[12461]],[[65400,65400],\"mapped\",[12463]],[[65401,65401],\"mapped\",[12465]],[[65402,65402],\"mapped\",[12467]],[[65403,65403],\"mapped\",[12469]],[[65404,65404],\"mapped\",[12471]],[[65405,65405],\"mapped\",[12473]],[[65406,65406],\"mapped\",[12475]],[[65407,65407],\"mapped\",[12477]],[[65408,65408],\"mapped\",[12479]],[[65409,65409],\"mapped\",[12481]],[[65410,65410],\"mapped\",[12484]],[[65411,65411],\"mapped\",[12486]],[[65412,65412],\"mapped\",[12488]],[[65413,65413],\"mapped\",[12490]],[[65414,65414],\"mapped\",[12491]],[[65415,65415],\"mapped\",[12492]],[[65416,65416],\"mapped\",[12493]],[[65417,65417],\"mapped\",[12494]],[[65418,65418],\"mapped\",[12495]],[[65419,65419],\"mapped\",[12498]],[[65420,65420],\"mapped\",[12501]],[[65421,65421],\"mapped\",[12504]],[[65422,65422],\"mapped\",[12507]],[[65423,65423],\"mapped\",[12510]],[[65424,65424],\"mapped\",[12511]],[[65425,65425],\"mapped\",[12512]],[[65426,65426],\"mapped\",[12513]],[[65427,65427],\"mapped\",[12514]],[[65428,65428],\"mapped\",[12516]],[[65429,65429],\"mapped\",[12518]],[[65430,65430],\"mapped\",[12520]],[[65431,65431],\"mapped\",[12521]],[[65432,65432],\"mapped\",[12522]],[[65433,65433],\"mapped\",[12523]],[[65434,65434],\"mapped\",[12524]],[[65435,65435],\"mapped\",[12525]],[[65436,65436],\"mapped\",[12527]],[[65437,65437],\"mapped\",[12531]],[[65438,65438],\"mapped\",[12441]],[[65439,65439],\"mapped\",[12442]],[[65440,65440],\"disallowed\"],[[65441,65441],\"mapped\",[4352]],[[65442,65442],\"mapped\",[4353]],[[65443,65443],\"mapped\",[4522]],[[65444,65444],\"mapped\",[4354]],[[65445,65445],\"mapped\",[4524]],[[65446,65446],\"mapped\",[4525]],[[65447,65447],\"mapped\",[4355]],[[65448,65448],\"mapped\",[4356]],[[65449,65449],\"mapped\",[4357]],[[65450,65450],\"mapped\",[4528]],[[65451,65451],\"mapped\",[4529]],[[65452,65452],\"mapped\",[4530]],[[65453,65453],\"mapped\",[4531]],[[65454,65454],\"mapped\",[4532]],[[65455,65455],\"mapped\",[4533]],[[65456,65456],\"mapped\",[4378]],[[65457,65457],\"mapped\",[4358]],[[65458,65458],\"mapped\",[4359]],[[65459,65459],\"mapped\",[4360]],[[65460,65460],\"mapped\",[4385]],[[65461,65461],\"mapped\",[4361]],[[65462,65462],\"mapped\",[4362]],[[65463,65463],\"mapped\",[4363]],[[65464,65464],\"mapped\",[4364]],[[65465,65465],\"mapped\",[4365]],[[65466,65466],\"mapped\",[4366]],[[65467,65467],\"mapped\",[4367]],[[65468,65468],\"mapped\",[4368]],[[65469,65469],\"mapped\",[4369]],[[65470,65470],\"mapped\",[4370]],[[65471,65473],\"disallowed\"],[[65474,65474],\"mapped\",[4449]],[[65475,65475],\"mapped\",[4450]],[[65476,65476],\"mapped\",[4451]],[[65477,65477],\"mapped\",[4452]],[[65478,65478],\"mapped\",[4453]],[[65479,65479],\"mapped\",[4454]],[[65480,65481],\"disallowed\"],[[65482,65482],\"mapped\",[4455]],[[65483,65483],\"mapped\",[4456]],[[65484,65484],\"mapped\",[4457]],[[65485,65485],\"mapped\",[4458]],[[65486,65486],\"mapped\",[4459]],[[65487,65487],\"mapped\",[4460]],[[65488,65489],\"disallowed\"],[[65490,65490],\"mapped\",[4461]],[[65491,65491],\"mapped\",[4462]],[[65492,65492],\"mapped\",[4463]],[[65493,65493],\"mapped\",[4464]],[[65494,65494],\"mapped\",[4465]],[[65495,65495],\"mapped\",[4466]],[[65496,65497],\"disallowed\"],[[65498,65498],\"mapped\",[4467]],[[65499,65499],\"mapped\",[4468]],[[65500,65500],\"mapped\",[4469]],[[65501,65503],\"disallowed\"],[[65504,65504],\"mapped\",[162]],[[65505,65505],\"mapped\",[163]],[[65506,65506],\"mapped\",[172]],[[65507,65507],\"disallowed_STD3_mapped\",[32,772]],[[65508,65508],\"mapped\",[166]],[[65509,65509],\"mapped\",[165]],[[65510,65510],\"mapped\",[8361]],[[65511,65511],\"disallowed\"],[[65512,65512],\"mapped\",[9474]],[[65513,65513],\"mapped\",[8592]],[[65514,65514],\"mapped\",[8593]],[[65515,65515],\"mapped\",[8594]],[[65516,65516],\"mapped\",[8595]],[[65517,65517],\"mapped\",[9632]],[[65518,65518],\"mapped\",[9675]],[[65519,65528],\"disallowed\"],[[65529,65531],\"disallowed\"],[[65532,65532],\"disallowed\"],[[65533,65533],\"disallowed\"],[[65534,65535],\"disallowed\"],[[65536,65547],\"valid\"],[[65548,65548],\"disallowed\"],[[65549,65574],\"valid\"],[[65575,65575],\"disallowed\"],[[65576,65594],\"valid\"],[[65595,65595],\"disallowed\"],[[65596,65597],\"valid\"],[[65598,65598],\"disallowed\"],[[65599,65613],\"valid\"],[[65614,65615],\"disallowed\"],[[65616,65629],\"valid\"],[[65630,65663],\"disallowed\"],[[65664,65786],\"valid\"],[[65787,65791],\"disallowed\"],[[65792,65794],\"valid\",[],\"NV8\"],[[65795,65798],\"disallowed\"],[[65799,65843],\"valid\",[],\"NV8\"],[[65844,65846],\"disallowed\"],[[65847,65855],\"valid\",[],\"NV8\"],[[65856,65930],\"valid\",[],\"NV8\"],[[65931,65932],\"valid\",[],\"NV8\"],[[65933,65935],\"disallowed\"],[[65936,65947],\"valid\",[],\"NV8\"],[[65948,65951],\"disallowed\"],[[65952,65952],\"valid\",[],\"NV8\"],[[65953,65999],\"disallowed\"],[[66000,66044],\"valid\",[],\"NV8\"],[[66045,66045],\"valid\"],[[66046,66175],\"disallowed\"],[[66176,66204],\"valid\"],[[66205,66207],\"disallowed\"],[[66208,66256],\"valid\"],[[66257,66271],\"disallowed\"],[[66272,66272],\"valid\"],[[66273,66299],\"valid\",[],\"NV8\"],[[66300,66303],\"disallowed\"],[[66304,66334],\"valid\"],[[66335,66335],\"valid\"],[[66336,66339],\"valid\",[],\"NV8\"],[[66340,66351],\"disallowed\"],[[66352,66368],\"valid\"],[[66369,66369],\"valid\",[],\"NV8\"],[[66370,66377],\"valid\"],[[66378,66378],\"valid\",[],\"NV8\"],[[66379,66383],\"disallowed\"],[[66384,66426],\"valid\"],[[66427,66431],\"disallowed\"],[[66432,66461],\"valid\"],[[66462,66462],\"disallowed\"],[[66463,66463],\"valid\",[],\"NV8\"],[[66464,66499],\"valid\"],[[66500,66503],\"disallowed\"],[[66504,66511],\"valid\"],[[66512,66517],\"valid\",[],\"NV8\"],[[66518,66559],\"disallowed\"],[[66560,66560],\"mapped\",[66600]],[[66561,66561],\"mapped\",[66601]],[[66562,66562],\"mapped\",[66602]],[[66563,66563],\"mapped\",[66603]],[[66564,66564],\"mapped\",[66604]],[[66565,66565],\"mapped\",[66605]],[[66566,66566],\"mapped\",[66606]],[[66567,66567],\"mapped\",[66607]],[[66568,66568],\"mapped\",[66608]],[[66569,66569],\"mapped\",[66609]],[[66570,66570],\"mapped\",[66610]],[[66571,66571],\"mapped\",[66611]],[[66572,66572],\"mapped\",[66612]],[[66573,66573],\"mapped\",[66613]],[[66574,66574],\"mapped\",[66614]],[[66575,66575],\"mapped\",[66615]],[[66576,66576],\"mapped\",[66616]],[[66577,66577],\"mapped\",[66617]],[[66578,66578],\"mapped\",[66618]],[[66579,66579],\"mapped\",[66619]],[[66580,66580],\"mapped\",[66620]],[[66581,66581],\"mapped\",[66621]],[[66582,66582],\"mapped\",[66622]],[[66583,66583],\"mapped\",[66623]],[[66584,66584],\"mapped\",[66624]],[[66585,66585],\"mapped\",[66625]],[[66586,66586],\"mapped\",[66626]],[[66587,66587],\"mapped\",[66627]],[[66588,66588],\"mapped\",[66628]],[[66589,66589],\"mapped\",[66629]],[[66590,66590],\"mapped\",[66630]],[[66591,66591],\"mapped\",[66631]],[[66592,66592],\"mapped\",[66632]],[[66593,66593],\"mapped\",[66633]],[[66594,66594],\"mapped\",[66634]],[[66595,66595],\"mapped\",[66635]],[[66596,66596],\"mapped\",[66636]],[[66597,66597],\"mapped\",[66637]],[[66598,66598],\"mapped\",[66638]],[[66599,66599],\"mapped\",[66639]],[[66600,66637],\"valid\"],[[66638,66717],\"valid\"],[[66718,66719],\"disallowed\"],[[66720,66729],\"valid\"],[[66730,66815],\"disallowed\"],[[66816,66855],\"valid\"],[[66856,66863],\"disallowed\"],[[66864,66915],\"valid\"],[[66916,66926],\"disallowed\"],[[66927,66927],\"valid\",[],\"NV8\"],[[66928,67071],\"disallowed\"],[[67072,67382],\"valid\"],[[67383,67391],\"disallowed\"],[[67392,67413],\"valid\"],[[67414,67423],\"disallowed\"],[[67424,67431],\"valid\"],[[67432,67583],\"disallowed\"],[[67584,67589],\"valid\"],[[67590,67591],\"disallowed\"],[[67592,67592],\"valid\"],[[67593,67593],\"disallowed\"],[[67594,67637],\"valid\"],[[67638,67638],\"disallowed\"],[[67639,67640],\"valid\"],[[67641,67643],\"disallowed\"],[[67644,67644],\"valid\"],[[67645,67646],\"disallowed\"],[[67647,67647],\"valid\"],[[67648,67669],\"valid\"],[[67670,67670],\"disallowed\"],[[67671,67679],\"valid\",[],\"NV8\"],[[67680,67702],\"valid\"],[[67703,67711],\"valid\",[],\"NV8\"],[[67712,67742],\"valid\"],[[67743,67750],\"disallowed\"],[[67751,67759],\"valid\",[],\"NV8\"],[[67760,67807],\"disallowed\"],[[67808,67826],\"valid\"],[[67827,67827],\"disallowed\"],[[67828,67829],\"valid\"],[[67830,67834],\"disallowed\"],[[67835,67839],\"valid\",[],\"NV8\"],[[67840,67861],\"valid\"],[[67862,67865],\"valid\",[],\"NV8\"],[[67866,67867],\"valid\",[],\"NV8\"],[[67868,67870],\"disallowed\"],[[67871,67871],\"valid\",[],\"NV8\"],[[67872,67897],\"valid\"],[[67898,67902],\"disallowed\"],[[67903,67903],\"valid\",[],\"NV8\"],[[67904,67967],\"disallowed\"],[[67968,68023],\"valid\"],[[68024,68027],\"disallowed\"],[[68028,68029],\"valid\",[],\"NV8\"],[[68030,68031],\"valid\"],[[68032,68047],\"valid\",[],\"NV8\"],[[68048,68049],\"disallowed\"],[[68050,68095],\"valid\",[],\"NV8\"],[[68096,68099],\"valid\"],[[68100,68100],\"disallowed\"],[[68101,68102],\"valid\"],[[68103,68107],\"disallowed\"],[[68108,68115],\"valid\"],[[68116,68116],\"disallowed\"],[[68117,68119],\"valid\"],[[68120,68120],\"disallowed\"],[[68121,68147],\"valid\"],[[68148,68151],\"disallowed\"],[[68152,68154],\"valid\"],[[68155,68158],\"disallowed\"],[[68159,68159],\"valid\"],[[68160,68167],\"valid\",[],\"NV8\"],[[68168,68175],\"disallowed\"],[[68176,68184],\"valid\",[],\"NV8\"],[[68185,68191],\"disallowed\"],[[68192,68220],\"valid\"],[[68221,68223],\"valid\",[],\"NV8\"],[[68224,68252],\"valid\"],[[68253,68255],\"valid\",[],\"NV8\"],[[68256,68287],\"disallowed\"],[[68288,68295],\"valid\"],[[68296,68296],\"valid\",[],\"NV8\"],[[68297,68326],\"valid\"],[[68327,68330],\"disallowed\"],[[68331,68342],\"valid\",[],\"NV8\"],[[68343,68351],\"disallowed\"],[[68352,68405],\"valid\"],[[68406,68408],\"disallowed\"],[[68409,68415],\"valid\",[],\"NV8\"],[[68416,68437],\"valid\"],[[68438,68439],\"disallowed\"],[[68440,68447],\"valid\",[],\"NV8\"],[[68448,68466],\"valid\"],[[68467,68471],\"disallowed\"],[[68472,68479],\"valid\",[],\"NV8\"],[[68480,68497],\"valid\"],[[68498,68504],\"disallowed\"],[[68505,68508],\"valid\",[],\"NV8\"],[[68509,68520],\"disallowed\"],[[68521,68527],\"valid\",[],\"NV8\"],[[68528,68607],\"disallowed\"],[[68608,68680],\"valid\"],[[68681,68735],\"disallowed\"],[[68736,68736],\"mapped\",[68800]],[[68737,68737],\"mapped\",[68801]],[[68738,68738],\"mapped\",[68802]],[[68739,68739],\"mapped\",[68803]],[[68740,68740],\"mapped\",[68804]],[[68741,68741],\"mapped\",[68805]],[[68742,68742],\"mapped\",[68806]],[[68743,68743],\"mapped\",[68807]],[[68744,68744],\"mapped\",[68808]],[[68745,68745],\"mapped\",[68809]],[[68746,68746],\"mapped\",[68810]],[[68747,68747],\"mapped\",[68811]],[[68748,68748],\"mapped\",[68812]],[[68749,68749],\"mapped\",[68813]],[[68750,68750],\"mapped\",[68814]],[[68751,68751],\"mapped\",[68815]],[[68752,68752],\"mapped\",[68816]],[[68753,68753],\"mapped\",[68817]],[[68754,68754],\"mapped\",[68818]],[[68755,68755],\"mapped\",[68819]],[[68756,68756],\"mapped\",[68820]],[[68757,68757],\"mapped\",[68821]],[[68758,68758],\"mapped\",[68822]],[[68759,68759],\"mapped\",[68823]],[[68760,68760],\"mapped\",[68824]],[[68761,68761],\"mapped\",[68825]],[[68762,68762],\"mapped\",[68826]],[[68763,68763],\"mapped\",[68827]],[[68764,68764],\"mapped\",[68828]],[[68765,68765],\"mapped\",[68829]],[[68766,68766],\"mapped\",[68830]],[[68767,68767],\"mapped\",[68831]],[[68768,68768],\"mapped\",[68832]],[[68769,68769],\"mapped\",[68833]],[[68770,68770],\"mapped\",[68834]],[[68771,68771],\"mapped\",[68835]],[[68772,68772],\"mapped\",[68836]],[[68773,68773],\"mapped\",[68837]],[[68774,68774],\"mapped\",[68838]],[[68775,68775],\"mapped\",[68839]],[[68776,68776],\"mapped\",[68840]],[[68777,68777],\"mapped\",[68841]],[[68778,68778],\"mapped\",[68842]],[[68779,68779],\"mapped\",[68843]],[[68780,68780],\"mapped\",[68844]],[[68781,68781],\"mapped\",[68845]],[[68782,68782],\"mapped\",[68846]],[[68783,68783],\"mapped\",[68847]],[[68784,68784],\"mapped\",[68848]],[[68785,68785],\"mapped\",[68849]],[[68786,68786],\"mapped\",[68850]],[[68787,68799],\"disallowed\"],[[68800,68850],\"valid\"],[[68851,68857],\"disallowed\"],[[68858,68863],\"valid\",[],\"NV8\"],[[68864,69215],\"disallowed\"],[[69216,69246],\"valid\",[],\"NV8\"],[[69247,69631],\"disallowed\"],[[69632,69702],\"valid\"],[[69703,69709],\"valid\",[],\"NV8\"],[[69710,69713],\"disallowed\"],[[69714,69733],\"valid\",[],\"NV8\"],[[69734,69743],\"valid\"],[[69744,69758],\"disallowed\"],[[69759,69759],\"valid\"],[[69760,69818],\"valid\"],[[69819,69820],\"valid\",[],\"NV8\"],[[69821,69821],\"disallowed\"],[[69822,69825],\"valid\",[],\"NV8\"],[[69826,69839],\"disallowed\"],[[69840,69864],\"valid\"],[[69865,69871],\"disallowed\"],[[69872,69881],\"valid\"],[[69882,69887],\"disallowed\"],[[69888,69940],\"valid\"],[[69941,69941],\"disallowed\"],[[69942,69951],\"valid\"],[[69952,69955],\"valid\",[],\"NV8\"],[[69956,69967],\"disallowed\"],[[69968,70003],\"valid\"],[[70004,70005],\"valid\",[],\"NV8\"],[[70006,70006],\"valid\"],[[70007,70015],\"disallowed\"],[[70016,70084],\"valid\"],[[70085,70088],\"valid\",[],\"NV8\"],[[70089,70089],\"valid\",[],\"NV8\"],[[70090,70092],\"valid\"],[[70093,70093],\"valid\",[],\"NV8\"],[[70094,70095],\"disallowed\"],[[70096,70105],\"valid\"],[[70106,70106],\"valid\"],[[70107,70107],\"valid\",[],\"NV8\"],[[70108,70108],\"valid\"],[[70109,70111],\"valid\",[],\"NV8\"],[[70112,70112],\"disallowed\"],[[70113,70132],\"valid\",[],\"NV8\"],[[70133,70143],\"disallowed\"],[[70144,70161],\"valid\"],[[70162,70162],\"disallowed\"],[[70163,70199],\"valid\"],[[70200,70205],\"valid\",[],\"NV8\"],[[70206,70271],\"disallowed\"],[[70272,70278],\"valid\"],[[70279,70279],\"disallowed\"],[[70280,70280],\"valid\"],[[70281,70281],\"disallowed\"],[[70282,70285],\"valid\"],[[70286,70286],\"disallowed\"],[[70287,70301],\"valid\"],[[70302,70302],\"disallowed\"],[[70303,70312],\"valid\"],[[70313,70313],\"valid\",[],\"NV8\"],[[70314,70319],\"disallowed\"],[[70320,70378],\"valid\"],[[70379,70383],\"disallowed\"],[[70384,70393],\"valid\"],[[70394,70399],\"disallowed\"],[[70400,70400],\"valid\"],[[70401,70403],\"valid\"],[[70404,70404],\"disallowed\"],[[70405,70412],\"valid\"],[[70413,70414],\"disallowed\"],[[70415,70416],\"valid\"],[[70417,70418],\"disallowed\"],[[70419,70440],\"valid\"],[[70441,70441],\"disallowed\"],[[70442,70448],\"valid\"],[[70449,70449],\"disallowed\"],[[70450,70451],\"valid\"],[[70452,70452],\"disallowed\"],[[70453,70457],\"valid\"],[[70458,70459],\"disallowed\"],[[70460,70468],\"valid\"],[[70469,70470],\"disallowed\"],[[70471,70472],\"valid\"],[[70473,70474],\"disallowed\"],[[70475,70477],\"valid\"],[[70478,70479],\"disallowed\"],[[70480,70480],\"valid\"],[[70481,70486],\"disallowed\"],[[70487,70487],\"valid\"],[[70488,70492],\"disallowed\"],[[70493,70499],\"valid\"],[[70500,70501],\"disallowed\"],[[70502,70508],\"valid\"],[[70509,70511],\"disallowed\"],[[70512,70516],\"valid\"],[[70517,70783],\"disallowed\"],[[70784,70853],\"valid\"],[[70854,70854],\"valid\",[],\"NV8\"],[[70855,70855],\"valid\"],[[70856,70863],\"disallowed\"],[[70864,70873],\"valid\"],[[70874,71039],\"disallowed\"],[[71040,71093],\"valid\"],[[71094,71095],\"disallowed\"],[[71096,71104],\"valid\"],[[71105,71113],\"valid\",[],\"NV8\"],[[71114,71127],\"valid\",[],\"NV8\"],[[71128,71133],\"valid\"],[[71134,71167],\"disallowed\"],[[71168,71232],\"valid\"],[[71233,71235],\"valid\",[],\"NV8\"],[[71236,71236],\"valid\"],[[71237,71247],\"disallowed\"],[[71248,71257],\"valid\"],[[71258,71295],\"disallowed\"],[[71296,71351],\"valid\"],[[71352,71359],\"disallowed\"],[[71360,71369],\"valid\"],[[71370,71423],\"disallowed\"],[[71424,71449],\"valid\"],[[71450,71452],\"disallowed\"],[[71453,71467],\"valid\"],[[71468,71471],\"disallowed\"],[[71472,71481],\"valid\"],[[71482,71487],\"valid\",[],\"NV8\"],[[71488,71839],\"disallowed\"],[[71840,71840],\"mapped\",[71872]],[[71841,71841],\"mapped\",[71873]],[[71842,71842],\"mapped\",[71874]],[[71843,71843],\"mapped\",[71875]],[[71844,71844],\"mapped\",[71876]],[[71845,71845],\"mapped\",[71877]],[[71846,71846],\"mapped\",[71878]],[[71847,71847],\"mapped\",[71879]],[[71848,71848],\"mapped\",[71880]],[[71849,71849],\"mapped\",[71881]],[[71850,71850],\"mapped\",[71882]],[[71851,71851],\"mapped\",[71883]],[[71852,71852],\"mapped\",[71884]],[[71853,71853],\"mapped\",[71885]],[[71854,71854],\"mapped\",[71886]],[[71855,71855],\"mapped\",[71887]],[[71856,71856],\"mapped\",[71888]],[[71857,71857],\"mapped\",[71889]],[[71858,71858],\"mapped\",[71890]],[[71859,71859],\"mapped\",[71891]],[[71860,71860],\"mapped\",[71892]],[[71861,71861],\"mapped\",[71893]],[[71862,71862],\"mapped\",[71894]],[[71863,71863],\"mapped\",[71895]],[[71864,71864],\"mapped\",[71896]],[[71865,71865],\"mapped\",[71897]],[[71866,71866],\"mapped\",[71898]],[[71867,71867],\"mapped\",[71899]],[[71868,71868],\"mapped\",[71900]],[[71869,71869],\"mapped\",[71901]],[[71870,71870],\"mapped\",[71902]],[[71871,71871],\"mapped\",[71903]],[[71872,71913],\"valid\"],[[71914,71922],\"valid\",[],\"NV8\"],[[71923,71934],\"disallowed\"],[[71935,71935],\"valid\"],[[71936,72383],\"disallowed\"],[[72384,72440],\"valid\"],[[72441,73727],\"disallowed\"],[[73728,74606],\"valid\"],[[74607,74648],\"valid\"],[[74649,74649],\"valid\"],[[74650,74751],\"disallowed\"],[[74752,74850],\"valid\",[],\"NV8\"],[[74851,74862],\"valid\",[],\"NV8\"],[[74863,74863],\"disallowed\"],[[74864,74867],\"valid\",[],\"NV8\"],[[74868,74868],\"valid\",[],\"NV8\"],[[74869,74879],\"disallowed\"],[[74880,75075],\"valid\"],[[75076,77823],\"disallowed\"],[[77824,78894],\"valid\"],[[78895,82943],\"disallowed\"],[[82944,83526],\"valid\"],[[83527,92159],\"disallowed\"],[[92160,92728],\"valid\"],[[92729,92735],\"disallowed\"],[[92736,92766],\"valid\"],[[92767,92767],\"disallowed\"],[[92768,92777],\"valid\"],[[92778,92781],\"disallowed\"],[[92782,92783],\"valid\",[],\"NV8\"],[[92784,92879],\"disallowed\"],[[92880,92909],\"valid\"],[[92910,92911],\"disallowed\"],[[92912,92916],\"valid\"],[[92917,92917],\"valid\",[],\"NV8\"],[[92918,92927],\"disallowed\"],[[92928,92982],\"valid\"],[[92983,92991],\"valid\",[],\"NV8\"],[[92992,92995],\"valid\"],[[92996,92997],\"valid\",[],\"NV8\"],[[92998,93007],\"disallowed\"],[[93008,93017],\"valid\"],[[93018,93018],\"disallowed\"],[[93019,93025],\"valid\",[],\"NV8\"],[[93026,93026],\"disallowed\"],[[93027,93047],\"valid\"],[[93048,93052],\"disallowed\"],[[93053,93071],\"valid\"],[[93072,93951],\"disallowed\"],[[93952,94020],\"valid\"],[[94021,94031],\"disallowed\"],[[94032,94078],\"valid\"],[[94079,94094],\"disallowed\"],[[94095,94111],\"valid\"],[[94112,110591],\"disallowed\"],[[110592,110593],\"valid\"],[[110594,113663],\"disallowed\"],[[113664,113770],\"valid\"],[[113771,113775],\"disallowed\"],[[113776,113788],\"valid\"],[[113789,113791],\"disallowed\"],[[113792,113800],\"valid\"],[[113801,113807],\"disallowed\"],[[113808,113817],\"valid\"],[[113818,113819],\"disallowed\"],[[113820,113820],\"valid\",[],\"NV8\"],[[113821,113822],\"valid\"],[[113823,113823],\"valid\",[],\"NV8\"],[[113824,113827],\"ignored\"],[[113828,118783],\"disallowed\"],[[118784,119029],\"valid\",[],\"NV8\"],[[119030,119039],\"disallowed\"],[[119040,119078],\"valid\",[],\"NV8\"],[[119079,119080],\"disallowed\"],[[119081,119081],\"valid\",[],\"NV8\"],[[119082,119133],\"valid\",[],\"NV8\"],[[119134,119134],\"mapped\",[119127,119141]],[[119135,119135],\"mapped\",[119128,119141]],[[119136,119136],\"mapped\",[119128,119141,119150]],[[119137,119137],\"mapped\",[119128,119141,119151]],[[119138,119138],\"mapped\",[119128,119141,119152]],[[119139,119139],\"mapped\",[119128,119141,119153]],[[119140,119140],\"mapped\",[119128,119141,119154]],[[119141,119154],\"valid\",[],\"NV8\"],[[119155,119162],\"disallowed\"],[[119163,119226],\"valid\",[],\"NV8\"],[[119227,119227],\"mapped\",[119225,119141]],[[119228,119228],\"mapped\",[119226,119141]],[[119229,119229],\"mapped\",[119225,119141,119150]],[[119230,119230],\"mapped\",[119226,119141,119150]],[[119231,119231],\"mapped\",[119225,119141,119151]],[[119232,119232],\"mapped\",[119226,119141,119151]],[[119233,119261],\"valid\",[],\"NV8\"],[[119262,119272],\"valid\",[],\"NV8\"],[[119273,119295],\"disallowed\"],[[119296,119365],\"valid\",[],\"NV8\"],[[119366,119551],\"disallowed\"],[[119552,119638],\"valid\",[],\"NV8\"],[[119639,119647],\"disallowed\"],[[119648,119665],\"valid\",[],\"NV8\"],[[119666,119807],\"disallowed\"],[[119808,119808],\"mapped\",[97]],[[119809,119809],\"mapped\",[98]],[[119810,119810],\"mapped\",[99]],[[119811,119811],\"mapped\",[100]],[[119812,119812],\"mapped\",[101]],[[119813,119813],\"mapped\",[102]],[[119814,119814],\"mapped\",[103]],[[119815,119815],\"mapped\",[104]],[[119816,119816],\"mapped\",[105]],[[119817,119817],\"mapped\",[106]],[[119818,119818],\"mapped\",[107]],[[119819,119819],\"mapped\",[108]],[[119820,119820],\"mapped\",[109]],[[119821,119821],\"mapped\",[110]],[[119822,119822],\"mapped\",[111]],[[119823,119823],\"mapped\",[112]],[[119824,119824],\"mapped\",[113]],[[119825,119825],\"mapped\",[114]],[[119826,119826],\"mapped\",[115]],[[119827,119827],\"mapped\",[116]],[[119828,119828],\"mapped\",[117]],[[119829,119829],\"mapped\",[118]],[[119830,119830],\"mapped\",[119]],[[119831,119831],\"mapped\",[120]],[[119832,119832],\"mapped\",[121]],[[119833,119833],\"mapped\",[122]],[[119834,119834],\"mapped\",[97]],[[119835,119835],\"mapped\",[98]],[[119836,119836],\"mapped\",[99]],[[119837,119837],\"mapped\",[100]],[[119838,119838],\"mapped\",[101]],[[119839,119839],\"mapped\",[102]],[[119840,119840],\"mapped\",[103]],[[119841,119841],\"mapped\",[104]],[[119842,119842],\"mapped\",[105]],[[119843,119843],\"mapped\",[106]],[[119844,119844],\"mapped\",[107]],[[119845,119845],\"mapped\",[108]],[[119846,119846],\"mapped\",[109]],[[119847,119847],\"mapped\",[110]],[[119848,119848],\"mapped\",[111]],[[119849,119849],\"mapped\",[112]],[[119850,119850],\"mapped\",[113]],[[119851,119851],\"mapped\",[114]],[[119852,119852],\"mapped\",[115]],[[119853,119853],\"mapped\",[116]],[[119854,119854],\"mapped\",[117]],[[119855,119855],\"mapped\",[118]],[[119856,119856],\"mapped\",[119]],[[119857,119857],\"mapped\",[120]],[[119858,119858],\"mapped\",[121]],[[119859,119859],\"mapped\",[122]],[[119860,119860],\"mapped\",[97]],[[119861,119861],\"mapped\",[98]],[[119862,119862],\"mapped\",[99]],[[119863,119863],\"mapped\",[100]],[[119864,119864],\"mapped\",[101]],[[119865,119865],\"mapped\",[102]],[[119866,119866],\"mapped\",[103]],[[119867,119867],\"mapped\",[104]],[[119868,119868],\"mapped\",[105]],[[119869,119869],\"mapped\",[106]],[[119870,119870],\"mapped\",[107]],[[119871,119871],\"mapped\",[108]],[[119872,119872],\"mapped\",[109]],[[119873,119873],\"mapped\",[110]],[[119874,119874],\"mapped\",[111]],[[119875,119875],\"mapped\",[112]],[[119876,119876],\"mapped\",[113]],[[119877,119877],\"mapped\",[114]],[[119878,119878],\"mapped\",[115]],[[119879,119879],\"mapped\",[116]],[[119880,119880],\"mapped\",[117]],[[119881,119881],\"mapped\",[118]],[[119882,119882],\"mapped\",[119]],[[119883,119883],\"mapped\",[120]],[[119884,119884],\"mapped\",[121]],[[119885,119885],\"mapped\",[122]],[[119886,119886],\"mapped\",[97]],[[119887,119887],\"mapped\",[98]],[[119888,119888],\"mapped\",[99]],[[119889,119889],\"mapped\",[100]],[[119890,119890],\"mapped\",[101]],[[119891,119891],\"mapped\",[102]],[[119892,119892],\"mapped\",[103]],[[119893,119893],\"disallowed\"],[[119894,119894],\"mapped\",[105]],[[119895,119895],\"mapped\",[106]],[[119896,119896],\"mapped\",[107]],[[119897,119897],\"mapped\",[108]],[[119898,119898],\"mapped\",[109]],[[119899,119899],\"mapped\",[110]],[[119900,119900],\"mapped\",[111]],[[119901,119901],\"mapped\",[112]],[[119902,119902],\"mapped\",[113]],[[119903,119903],\"mapped\",[114]],[[119904,119904],\"mapped\",[115]],[[119905,119905],\"mapped\",[116]],[[119906,119906],\"mapped\",[117]],[[119907,119907],\"mapped\",[118]],[[119908,119908],\"mapped\",[119]],[[119909,119909],\"mapped\",[120]],[[119910,119910],\"mapped\",[121]],[[119911,119911],\"mapped\",[122]],[[119912,119912],\"mapped\",[97]],[[119913,119913],\"mapped\",[98]],[[119914,119914],\"mapped\",[99]],[[119915,119915],\"mapped\",[100]],[[119916,119916],\"mapped\",[101]],[[119917,119917],\"mapped\",[102]],[[119918,119918],\"mapped\",[103]],[[119919,119919],\"mapped\",[104]],[[119920,119920],\"mapped\",[105]],[[119921,119921],\"mapped\",[106]],[[119922,119922],\"mapped\",[107]],[[119923,119923],\"mapped\",[108]],[[119924,119924],\"mapped\",[109]],[[119925,119925],\"mapped\",[110]],[[119926,119926],\"mapped\",[111]],[[119927,119927],\"mapped\",[112]],[[119928,119928],\"mapped\",[113]],[[119929,119929],\"mapped\",[114]],[[119930,119930],\"mapped\",[115]],[[119931,119931],\"mapped\",[116]],[[119932,119932],\"mapped\",[117]],[[119933,119933],\"mapped\",[118]],[[119934,119934],\"mapped\",[119]],[[119935,119935],\"mapped\",[120]],[[119936,119936],\"mapped\",[121]],[[119937,119937],\"mapped\",[122]],[[119938,119938],\"mapped\",[97]],[[119939,119939],\"mapped\",[98]],[[119940,119940],\"mapped\",[99]],[[119941,119941],\"mapped\",[100]],[[119942,119942],\"mapped\",[101]],[[119943,119943],\"mapped\",[102]],[[119944,119944],\"mapped\",[103]],[[119945,119945],\"mapped\",[104]],[[119946,119946],\"mapped\",[105]],[[119947,119947],\"mapped\",[106]],[[119948,119948],\"mapped\",[107]],[[119949,119949],\"mapped\",[108]],[[119950,119950],\"mapped\",[109]],[[119951,119951],\"mapped\",[110]],[[119952,119952],\"mapped\",[111]],[[119953,119953],\"mapped\",[112]],[[119954,119954],\"mapped\",[113]],[[119955,119955],\"mapped\",[114]],[[119956,119956],\"mapped\",[115]],[[119957,119957],\"mapped\",[116]],[[119958,119958],\"mapped\",[117]],[[119959,119959],\"mapped\",[118]],[[119960,119960],\"mapped\",[119]],[[119961,119961],\"mapped\",[120]],[[119962,119962],\"mapped\",[121]],[[119963,119963],\"mapped\",[122]],[[119964,119964],\"mapped\",[97]],[[119965,119965],\"disallowed\"],[[119966,119966],\"mapped\",[99]],[[119967,119967],\"mapped\",[100]],[[119968,119969],\"disallowed\"],[[119970,119970],\"mapped\",[103]],[[119971,119972],\"disallowed\"],[[119973,119973],\"mapped\",[106]],[[119974,119974],\"mapped\",[107]],[[119975,119976],\"disallowed\"],[[119977,119977],\"mapped\",[110]],[[119978,119978],\"mapped\",[111]],[[119979,119979],\"mapped\",[112]],[[119980,119980],\"mapped\",[113]],[[119981,119981],\"disallowed\"],[[119982,119982],\"mapped\",[115]],[[119983,119983],\"mapped\",[116]],[[119984,119984],\"mapped\",[117]],[[119985,119985],\"mapped\",[118]],[[119986,119986],\"mapped\",[119]],[[119987,119987],\"mapped\",[120]],[[119988,119988],\"mapped\",[121]],[[119989,119989],\"mapped\",[122]],[[119990,119990],\"mapped\",[97]],[[119991,119991],\"mapped\",[98]],[[119992,119992],\"mapped\",[99]],[[119993,119993],\"mapped\",[100]],[[119994,119994],\"disallowed\"],[[119995,119995],\"mapped\",[102]],[[119996,119996],\"disallowed\"],[[119997,119997],\"mapped\",[104]],[[119998,119998],\"mapped\",[105]],[[119999,119999],\"mapped\",[106]],[[120000,120000],\"mapped\",[107]],[[120001,120001],\"mapped\",[108]],[[120002,120002],\"mapped\",[109]],[[120003,120003],\"mapped\",[110]],[[120004,120004],\"disallowed\"],[[120005,120005],\"mapped\",[112]],[[120006,120006],\"mapped\",[113]],[[120007,120007],\"mapped\",[114]],[[120008,120008],\"mapped\",[115]],[[120009,120009],\"mapped\",[116]],[[120010,120010],\"mapped\",[117]],[[120011,120011],\"mapped\",[118]],[[120012,120012],\"mapped\",[119]],[[120013,120013],\"mapped\",[120]],[[120014,120014],\"mapped\",[121]],[[120015,120015],\"mapped\",[122]],[[120016,120016],\"mapped\",[97]],[[120017,120017],\"mapped\",[98]],[[120018,120018],\"mapped\",[99]],[[120019,120019],\"mapped\",[100]],[[120020,120020],\"mapped\",[101]],[[120021,120021],\"mapped\",[102]],[[120022,120022],\"mapped\",[103]],[[120023,120023],\"mapped\",[104]],[[120024,120024],\"mapped\",[105]],[[120025,120025],\"mapped\",[106]],[[120026,120026],\"mapped\",[107]],[[120027,120027],\"mapped\",[108]],[[120028,120028],\"mapped\",[109]],[[120029,120029],\"mapped\",[110]],[[120030,120030],\"mapped\",[111]],[[120031,120031],\"mapped\",[112]],[[120032,120032],\"mapped\",[113]],[[120033,120033],\"mapped\",[114]],[[120034,120034],\"mapped\",[115]],[[120035,120035],\"mapped\",[116]],[[120036,120036],\"mapped\",[117]],[[120037,120037],\"mapped\",[118]],[[120038,120038],\"mapped\",[119]],[[120039,120039],\"mapped\",[120]],[[120040,120040],\"mapped\",[121]],[[120041,120041],\"mapped\",[122]],[[120042,120042],\"mapped\",[97]],[[120043,120043],\"mapped\",[98]],[[120044,120044],\"mapped\",[99]],[[120045,120045],\"mapped\",[100]],[[120046,120046],\"mapped\",[101]],[[120047,120047],\"mapped\",[102]],[[120048,120048],\"mapped\",[103]],[[120049,120049],\"mapped\",[104]],[[120050,120050],\"mapped\",[105]],[[120051,120051],\"mapped\",[106]],[[120052,120052],\"mapped\",[107]],[[120053,120053],\"mapped\",[108]],[[120054,120054],\"mapped\",[109]],[[120055,120055],\"mapped\",[110]],[[120056,120056],\"mapped\",[111]],[[120057,120057],\"mapped\",[112]],[[120058,120058],\"mapped\",[113]],[[120059,120059],\"mapped\",[114]],[[120060,120060],\"mapped\",[115]],[[120061,120061],\"mapped\",[116]],[[120062,120062],\"mapped\",[117]],[[120063,120063],\"mapped\",[118]],[[120064,120064],\"mapped\",[119]],[[120065,120065],\"mapped\",[120]],[[120066,120066],\"mapped\",[121]],[[120067,120067],\"mapped\",[122]],[[120068,120068],\"mapped\",[97]],[[120069,120069],\"mapped\",[98]],[[120070,120070],\"disallowed\"],[[120071,120071],\"mapped\",[100]],[[120072,120072],\"mapped\",[101]],[[120073,120073],\"mapped\",[102]],[[120074,120074],\"mapped\",[103]],[[120075,120076],\"disallowed\"],[[120077,120077],\"mapped\",[106]],[[120078,120078],\"mapped\",[107]],[[120079,120079],\"mapped\",[108]],[[120080,120080],\"mapped\",[109]],[[120081,120081],\"mapped\",[110]],[[120082,120082],\"mapped\",[111]],[[120083,120083],\"mapped\",[112]],[[120084,120084],\"mapped\",[113]],[[120085,120085],\"disallowed\"],[[120086,120086],\"mapped\",[115]],[[120087,120087],\"mapped\",[116]],[[120088,120088],\"mapped\",[117]],[[120089,120089],\"mapped\",[118]],[[120090,120090],\"mapped\",[119]],[[120091,120091],\"mapped\",[120]],[[120092,120092],\"mapped\",[121]],[[120093,120093],\"disallowed\"],[[120094,120094],\"mapped\",[97]],[[120095,120095],\"mapped\",[98]],[[120096,120096],\"mapped\",[99]],[[120097,120097],\"mapped\",[100]],[[120098,120098],\"mapped\",[101]],[[120099,120099],\"mapped\",[102]],[[120100,120100],\"mapped\",[103]],[[120101,120101],\"mapped\",[104]],[[120102,120102],\"mapped\",[105]],[[120103,120103],\"mapped\",[106]],[[120104,120104],\"mapped\",[107]],[[120105,120105],\"mapped\",[108]],[[120106,120106],\"mapped\",[109]],[[120107,120107],\"mapped\",[110]],[[120108,120108],\"mapped\",[111]],[[120109,120109],\"mapped\",[112]],[[120110,120110],\"mapped\",[113]],[[120111,120111],\"mapped\",[114]],[[120112,120112],\"mapped\",[115]],[[120113,120113],\"mapped\",[116]],[[120114,120114],\"mapped\",[117]],[[120115,120115],\"mapped\",[118]],[[120116,120116],\"mapped\",[119]],[[120117,120117],\"mapped\",[120]],[[120118,120118],\"mapped\",[121]],[[120119,120119],\"mapped\",[122]],[[120120,120120],\"mapped\",[97]],[[120121,120121],\"mapped\",[98]],[[120122,120122],\"disallowed\"],[[120123,120123],\"mapped\",[100]],[[120124,120124],\"mapped\",[101]],[[120125,120125],\"mapped\",[102]],[[120126,120126],\"mapped\",[103]],[[120127,120127],\"disallowed\"],[[120128,120128],\"mapped\",[105]],[[120129,120129],\"mapped\",[106]],[[120130,120130],\"mapped\",[107]],[[120131,120131],\"mapped\",[108]],[[120132,120132],\"mapped\",[109]],[[120133,120133],\"disallowed\"],[[120134,120134],\"mapped\",[111]],[[120135,120137],\"disallowed\"],[[120138,120138],\"mapped\",[115]],[[120139,120139],\"mapped\",[116]],[[120140,120140],\"mapped\",[117]],[[120141,120141],\"mapped\",[118]],[[120142,120142],\"mapped\",[119]],[[120143,120143],\"mapped\",[120]],[[120144,120144],\"mapped\",[121]],[[120145,120145],\"disallowed\"],[[120146,120146],\"mapped\",[97]],[[120147,120147],\"mapped\",[98]],[[120148,120148],\"mapped\",[99]],[[120149,120149],\"mapped\",[100]],[[120150,120150],\"mapped\",[101]],[[120151,120151],\"mapped\",[102]],[[120152,120152],\"mapped\",[103]],[[120153,120153],\"mapped\",[104]],[[120154,120154],\"mapped\",[105]],[[120155,120155],\"mapped\",[106]],[[120156,120156],\"mapped\",[107]],[[120157,120157],\"mapped\",[108]],[[120158,120158],\"mapped\",[109]],[[120159,120159],\"mapped\",[110]],[[120160,120160],\"mapped\",[111]],[[120161,120161],\"mapped\",[112]],[[120162,120162],\"mapped\",[113]],[[120163,120163],\"mapped\",[114]],[[120164,120164],\"mapped\",[115]],[[120165,120165],\"mapped\",[116]],[[120166,120166],\"mapped\",[117]],[[120167,120167],\"mapped\",[118]],[[120168,120168],\"mapped\",[119]],[[120169,120169],\"mapped\",[120]],[[120170,120170],\"mapped\",[121]],[[120171,120171],\"mapped\",[122]],[[120172,120172],\"mapped\",[97]],[[120173,120173],\"mapped\",[98]],[[120174,120174],\"mapped\",[99]],[[120175,120175],\"mapped\",[100]],[[120176,120176],\"mapped\",[101]],[[120177,120177],\"mapped\",[102]],[[120178,120178],\"mapped\",[103]],[[120179,120179],\"mapped\",[104]],[[120180,120180],\"mapped\",[105]],[[120181,120181],\"mapped\",[106]],[[120182,120182],\"mapped\",[107]],[[120183,120183],\"mapped\",[108]],[[120184,120184],\"mapped\",[109]],[[120185,120185],\"mapped\",[110]],[[120186,120186],\"mapped\",[111]],[[120187,120187],\"mapped\",[112]],[[120188,120188],\"mapped\",[113]],[[120189,120189],\"mapped\",[114]],[[120190,120190],\"mapped\",[115]],[[120191,120191],\"mapped\",[116]],[[120192,120192],\"mapped\",[117]],[[120193,120193],\"mapped\",[118]],[[120194,120194],\"mapped\",[119]],[[120195,120195],\"mapped\",[120]],[[120196,120196],\"mapped\",[121]],[[120197,120197],\"mapped\",[122]],[[120198,120198],\"mapped\",[97]],[[120199,120199],\"mapped\",[98]],[[120200,120200],\"mapped\",[99]],[[120201,120201],\"mapped\",[100]],[[120202,120202],\"mapped\",[101]],[[120203,120203],\"mapped\",[102]],[[120204,120204],\"mapped\",[103]],[[120205,120205],\"mapped\",[104]],[[120206,120206],\"mapped\",[105]],[[120207,120207],\"mapped\",[106]],[[120208,120208],\"mapped\",[107]],[[120209,120209],\"mapped\",[108]],[[120210,120210],\"mapped\",[109]],[[120211,120211],\"mapped\",[110]],[[120212,120212],\"mapped\",[111]],[[120213,120213],\"mapped\",[112]],[[120214,120214],\"mapped\",[113]],[[120215,120215],\"mapped\",[114]],[[120216,120216],\"mapped\",[115]],[[120217,120217],\"mapped\",[116]],[[120218,120218],\"mapped\",[117]],[[120219,120219],\"mapped\",[118]],[[120220,120220],\"mapped\",[119]],[[120221,120221],\"mapped\",[120]],[[120222,120222],\"mapped\",[121]],[[120223,120223],\"mapped\",[122]],[[120224,120224],\"mapped\",[97]],[[120225,120225],\"mapped\",[98]],[[120226,120226],\"mapped\",[99]],[[120227,120227],\"mapped\",[100]],[[120228,120228],\"mapped\",[101]],[[120229,120229],\"mapped\",[102]],[[120230,120230],\"mapped\",[103]],[[120231,120231],\"mapped\",[104]],[[120232,120232],\"mapped\",[105]],[[120233,120233],\"mapped\",[106]],[[120234,120234],\"mapped\",[107]],[[120235,120235],\"mapped\",[108]],[[120236,120236],\"mapped\",[109]],[[120237,120237],\"mapped\",[110]],[[120238,120238],\"mapped\",[111]],[[120239,120239],\"mapped\",[112]],[[120240,120240],\"mapped\",[113]],[[120241,120241],\"mapped\",[114]],[[120242,120242],\"mapped\",[115]],[[120243,120243],\"mapped\",[116]],[[120244,120244],\"mapped\",[117]],[[120245,120245],\"mapped\",[118]],[[120246,120246],\"mapped\",[119]],[[120247,120247],\"mapped\",[120]],[[120248,120248],\"mapped\",[121]],[[120249,120249],\"mapped\",[122]],[[120250,120250],\"mapped\",[97]],[[120251,120251],\"mapped\",[98]],[[120252,120252],\"mapped\",[99]],[[120253,120253],\"mapped\",[100]],[[120254,120254],\"mapped\",[101]],[[120255,120255],\"mapped\",[102]],[[120256,120256],\"mapped\",[103]],[[120257,120257],\"mapped\",[104]],[[120258,120258],\"mapped\",[105]],[[120259,120259],\"mapped\",[106]],[[120260,120260],\"mapped\",[107]],[[120261,120261],\"mapped\",[108]],[[120262,120262],\"mapped\",[109]],[[120263,120263],\"mapped\",[110]],[[120264,120264],\"mapped\",[111]],[[120265,120265],\"mapped\",[112]],[[120266,120266],\"mapped\",[113]],[[120267,120267],\"mapped\",[114]],[[120268,120268],\"mapped\",[115]],[[120269,120269],\"mapped\",[116]],[[120270,120270],\"mapped\",[117]],[[120271,120271],\"mapped\",[118]],[[120272,120272],\"mapped\",[119]],[[120273,120273],\"mapped\",[120]],[[120274,120274],\"mapped\",[121]],[[120275,120275],\"mapped\",[122]],[[120276,120276],\"mapped\",[97]],[[120277,120277],\"mapped\",[98]],[[120278,120278],\"mapped\",[99]],[[120279,120279],\"mapped\",[100]],[[120280,120280],\"mapped\",[101]],[[120281,120281],\"mapped\",[102]],[[120282,120282],\"mapped\",[103]],[[120283,120283],\"mapped\",[104]],[[120284,120284],\"mapped\",[105]],[[120285,120285],\"mapped\",[106]],[[120286,120286],\"mapped\",[107]],[[120287,120287],\"mapped\",[108]],[[120288,120288],\"mapped\",[109]],[[120289,120289],\"mapped\",[110]],[[120290,120290],\"mapped\",[111]],[[120291,120291],\"mapped\",[112]],[[120292,120292],\"mapped\",[113]],[[120293,120293],\"mapped\",[114]],[[120294,120294],\"mapped\",[115]],[[120295,120295],\"mapped\",[116]],[[120296,120296],\"mapped\",[117]],[[120297,120297],\"mapped\",[118]],[[120298,120298],\"mapped\",[119]],[[120299,120299],\"mapped\",[120]],[[120300,120300],\"mapped\",[121]],[[120301,120301],\"mapped\",[122]],[[120302,120302],\"mapped\",[97]],[[120303,120303],\"mapped\",[98]],[[120304,120304],\"mapped\",[99]],[[120305,120305],\"mapped\",[100]],[[120306,120306],\"mapped\",[101]],[[120307,120307],\"mapped\",[102]],[[120308,120308],\"mapped\",[103]],[[120309,120309],\"mapped\",[104]],[[120310,120310],\"mapped\",[105]],[[120311,120311],\"mapped\",[106]],[[120312,120312],\"mapped\",[107]],[[120313,120313],\"mapped\",[108]],[[120314,120314],\"mapped\",[109]],[[120315,120315],\"mapped\",[110]],[[120316,120316],\"mapped\",[111]],[[120317,120317],\"mapped\",[112]],[[120318,120318],\"mapped\",[113]],[[120319,120319],\"mapped\",[114]],[[120320,120320],\"mapped\",[115]],[[120321,120321],\"mapped\",[116]],[[120322,120322],\"mapped\",[117]],[[120323,120323],\"mapped\",[118]],[[120324,120324],\"mapped\",[119]],[[120325,120325],\"mapped\",[120]],[[120326,120326],\"mapped\",[121]],[[120327,120327],\"mapped\",[122]],[[120328,120328],\"mapped\",[97]],[[120329,120329],\"mapped\",[98]],[[120330,120330],\"mapped\",[99]],[[120331,120331],\"mapped\",[100]],[[120332,120332],\"mapped\",[101]],[[120333,120333],\"mapped\",[102]],[[120334,120334],\"mapped\",[103]],[[120335,120335],\"mapped\",[104]],[[120336,120336],\"mapped\",[105]],[[120337,120337],\"mapped\",[106]],[[120338,120338],\"mapped\",[107]],[[120339,120339],\"mapped\",[108]],[[120340,120340],\"mapped\",[109]],[[120341,120341],\"mapped\",[110]],[[120342,120342],\"mapped\",[111]],[[120343,120343],\"mapped\",[112]],[[120344,120344],\"mapped\",[113]],[[120345,120345],\"mapped\",[114]],[[120346,120346],\"mapped\",[115]],[[120347,120347],\"mapped\",[116]],[[120348,120348],\"mapped\",[117]],[[120349,120349],\"mapped\",[118]],[[120350,120350],\"mapped\",[119]],[[120351,120351],\"mapped\",[120]],[[120352,120352],\"mapped\",[121]],[[120353,120353],\"mapped\",[122]],[[120354,120354],\"mapped\",[97]],[[120355,120355],\"mapped\",[98]],[[120356,120356],\"mapped\",[99]],[[120357,120357],\"mapped\",[100]],[[120358,120358],\"mapped\",[101]],[[120359,120359],\"mapped\",[102]],[[120360,120360],\"mapped\",[103]],[[120361,120361],\"mapped\",[104]],[[120362,120362],\"mapped\",[105]],[[120363,120363],\"mapped\",[106]],[[120364,120364],\"mapped\",[107]],[[120365,120365],\"mapped\",[108]],[[120366,120366],\"mapped\",[109]],[[120367,120367],\"mapped\",[110]],[[120368,120368],\"mapped\",[111]],[[120369,120369],\"mapped\",[112]],[[120370,120370],\"mapped\",[113]],[[120371,120371],\"mapped\",[114]],[[120372,120372],\"mapped\",[115]],[[120373,120373],\"mapped\",[116]],[[120374,120374],\"mapped\",[117]],[[120375,120375],\"mapped\",[118]],[[120376,120376],\"mapped\",[119]],[[120377,120377],\"mapped\",[120]],[[120378,120378],\"mapped\",[121]],[[120379,120379],\"mapped\",[122]],[[120380,120380],\"mapped\",[97]],[[120381,120381],\"mapped\",[98]],[[120382,120382],\"mapped\",[99]],[[120383,120383],\"mapped\",[100]],[[120384,120384],\"mapped\",[101]],[[120385,120385],\"mapped\",[102]],[[120386,120386],\"mapped\",[103]],[[120387,120387],\"mapped\",[104]],[[120388,120388],\"mapped\",[105]],[[120389,120389],\"mapped\",[106]],[[120390,120390],\"mapped\",[107]],[[120391,120391],\"mapped\",[108]],[[120392,120392],\"mapped\",[109]],[[120393,120393],\"mapped\",[110]],[[120394,120394],\"mapped\",[111]],[[120395,120395],\"mapped\",[112]],[[120396,120396],\"mapped\",[113]],[[120397,120397],\"mapped\",[114]],[[120398,120398],\"mapped\",[115]],[[120399,120399],\"mapped\",[116]],[[120400,120400],\"mapped\",[117]],[[120401,120401],\"mapped\",[118]],[[120402,120402],\"mapped\",[119]],[[120403,120403],\"mapped\",[120]],[[120404,120404],\"mapped\",[121]],[[120405,120405],\"mapped\",[122]],[[120406,120406],\"mapped\",[97]],[[120407,120407],\"mapped\",[98]],[[120408,120408],\"mapped\",[99]],[[120409,120409],\"mapped\",[100]],[[120410,120410],\"mapped\",[101]],[[120411,120411],\"mapped\",[102]],[[120412,120412],\"mapped\",[103]],[[120413,120413],\"mapped\",[104]],[[120414,120414],\"mapped\",[105]],[[120415,120415],\"mapped\",[106]],[[120416,120416],\"mapped\",[107]],[[120417,120417],\"mapped\",[108]],[[120418,120418],\"mapped\",[109]],[[120419,120419],\"mapped\",[110]],[[120420,120420],\"mapped\",[111]],[[120421,120421],\"mapped\",[112]],[[120422,120422],\"mapped\",[113]],[[120423,120423],\"mapped\",[114]],[[120424,120424],\"mapped\",[115]],[[120425,120425],\"mapped\",[116]],[[120426,120426],\"mapped\",[117]],[[120427,120427],\"mapped\",[118]],[[120428,120428],\"mapped\",[119]],[[120429,120429],\"mapped\",[120]],[[120430,120430],\"mapped\",[121]],[[120431,120431],\"mapped\",[122]],[[120432,120432],\"mapped\",[97]],[[120433,120433],\"mapped\",[98]],[[120434,120434],\"mapped\",[99]],[[120435,120435],\"mapped\",[100]],[[120436,120436],\"mapped\",[101]],[[120437,120437],\"mapped\",[102]],[[120438,120438],\"mapped\",[103]],[[120439,120439],\"mapped\",[104]],[[120440,120440],\"mapped\",[105]],[[120441,120441],\"mapped\",[106]],[[120442,120442],\"mapped\",[107]],[[120443,120443],\"mapped\",[108]],[[120444,120444],\"mapped\",[109]],[[120445,120445],\"mapped\",[110]],[[120446,120446],\"mapped\",[111]],[[120447,120447],\"mapped\",[112]],[[120448,120448],\"mapped\",[113]],[[120449,120449],\"mapped\",[114]],[[120450,120450],\"mapped\",[115]],[[120451,120451],\"mapped\",[116]],[[120452,120452],\"mapped\",[117]],[[120453,120453],\"mapped\",[118]],[[120454,120454],\"mapped\",[119]],[[120455,120455],\"mapped\",[120]],[[120456,120456],\"mapped\",[121]],[[120457,120457],\"mapped\",[122]],[[120458,120458],\"mapped\",[97]],[[120459,120459],\"mapped\",[98]],[[120460,120460],\"mapped\",[99]],[[120461,120461],\"mapped\",[100]],[[120462,120462],\"mapped\",[101]],[[120463,120463],\"mapped\",[102]],[[120464,120464],\"mapped\",[103]],[[120465,120465],\"mapped\",[104]],[[120466,120466],\"mapped\",[105]],[[120467,120467],\"mapped\",[106]],[[120468,120468],\"mapped\",[107]],[[120469,120469],\"mapped\",[108]],[[120470,120470],\"mapped\",[109]],[[120471,120471],\"mapped\",[110]],[[120472,120472],\"mapped\",[111]],[[120473,120473],\"mapped\",[112]],[[120474,120474],\"mapped\",[113]],[[120475,120475],\"mapped\",[114]],[[120476,120476],\"mapped\",[115]],[[120477,120477],\"mapped\",[116]],[[120478,120478],\"mapped\",[117]],[[120479,120479],\"mapped\",[118]],[[120480,120480],\"mapped\",[119]],[[120481,120481],\"mapped\",[120]],[[120482,120482],\"mapped\",[121]],[[120483,120483],\"mapped\",[122]],[[120484,120484],\"mapped\",[305]],[[120485,120485],\"mapped\",[567]],[[120486,120487],\"disallowed\"],[[120488,120488],\"mapped\",[945]],[[120489,120489],\"mapped\",[946]],[[120490,120490],\"mapped\",[947]],[[120491,120491],\"mapped\",[948]],[[120492,120492],\"mapped\",[949]],[[120493,120493],\"mapped\",[950]],[[120494,120494],\"mapped\",[951]],[[120495,120495],\"mapped\",[952]],[[120496,120496],\"mapped\",[953]],[[120497,120497],\"mapped\",[954]],[[120498,120498],\"mapped\",[955]],[[120499,120499],\"mapped\",[956]],[[120500,120500],\"mapped\",[957]],[[120501,120501],\"mapped\",[958]],[[120502,120502],\"mapped\",[959]],[[120503,120503],\"mapped\",[960]],[[120504,120504],\"mapped\",[961]],[[120505,120505],\"mapped\",[952]],[[120506,120506],\"mapped\",[963]],[[120507,120507],\"mapped\",[964]],[[120508,120508],\"mapped\",[965]],[[120509,120509],\"mapped\",[966]],[[120510,120510],\"mapped\",[967]],[[120511,120511],\"mapped\",[968]],[[120512,120512],\"mapped\",[969]],[[120513,120513],\"mapped\",[8711]],[[120514,120514],\"mapped\",[945]],[[120515,120515],\"mapped\",[946]],[[120516,120516],\"mapped\",[947]],[[120517,120517],\"mapped\",[948]],[[120518,120518],\"mapped\",[949]],[[120519,120519],\"mapped\",[950]],[[120520,120520],\"mapped\",[951]],[[120521,120521],\"mapped\",[952]],[[120522,120522],\"mapped\",[953]],[[120523,120523],\"mapped\",[954]],[[120524,120524],\"mapped\",[955]],[[120525,120525],\"mapped\",[956]],[[120526,120526],\"mapped\",[957]],[[120527,120527],\"mapped\",[958]],[[120528,120528],\"mapped\",[959]],[[120529,120529],\"mapped\",[960]],[[120530,120530],\"mapped\",[961]],[[120531,120532],\"mapped\",[963]],[[120533,120533],\"mapped\",[964]],[[120534,120534],\"mapped\",[965]],[[120535,120535],\"mapped\",[966]],[[120536,120536],\"mapped\",[967]],[[120537,120537],\"mapped\",[968]],[[120538,120538],\"mapped\",[969]],[[120539,120539],\"mapped\",[8706]],[[120540,120540],\"mapped\",[949]],[[120541,120541],\"mapped\",[952]],[[120542,120542],\"mapped\",[954]],[[120543,120543],\"mapped\",[966]],[[120544,120544],\"mapped\",[961]],[[120545,120545],\"mapped\",[960]],[[120546,120546],\"mapped\",[945]],[[120547,120547],\"mapped\",[946]],[[120548,120548],\"mapped\",[947]],[[120549,120549],\"mapped\",[948]],[[120550,120550],\"mapped\",[949]],[[120551,120551],\"mapped\",[950]],[[120552,120552],\"mapped\",[951]],[[120553,120553],\"mapped\",[952]],[[120554,120554],\"mapped\",[953]],[[120555,120555],\"mapped\",[954]],[[120556,120556],\"mapped\",[955]],[[120557,120557],\"mapped\",[956]],[[120558,120558],\"mapped\",[957]],[[120559,120559],\"mapped\",[958]],[[120560,120560],\"mapped\",[959]],[[120561,120561],\"mapped\",[960]],[[120562,120562],\"mapped\",[961]],[[120563,120563],\"mapped\",[952]],[[120564,120564],\"mapped\",[963]],[[120565,120565],\"mapped\",[964]],[[120566,120566],\"mapped\",[965]],[[120567,120567],\"mapped\",[966]],[[120568,120568],\"mapped\",[967]],[[120569,120569],\"mapped\",[968]],[[120570,120570],\"mapped\",[969]],[[120571,120571],\"mapped\",[8711]],[[120572,120572],\"mapped\",[945]],[[120573,120573],\"mapped\",[946]],[[120574,120574],\"mapped\",[947]],[[120575,120575],\"mapped\",[948]],[[120576,120576],\"mapped\",[949]],[[120577,120577],\"mapped\",[950]],[[120578,120578],\"mapped\",[951]],[[120579,120579],\"mapped\",[952]],[[120580,120580],\"mapped\",[953]],[[120581,120581],\"mapped\",[954]],[[120582,120582],\"mapped\",[955]],[[120583,120583],\"mapped\",[956]],[[120584,120584],\"mapped\",[957]],[[120585,120585],\"mapped\",[958]],[[120586,120586],\"mapped\",[959]],[[120587,120587],\"mapped\",[960]],[[120588,120588],\"mapped\",[961]],[[120589,120590],\"mapped\",[963]],[[120591,120591],\"mapped\",[964]],[[120592,120592],\"mapped\",[965]],[[120593,120593],\"mapped\",[966]],[[120594,120594],\"mapped\",[967]],[[120595,120595],\"mapped\",[968]],[[120596,120596],\"mapped\",[969]],[[120597,120597],\"mapped\",[8706]],[[120598,120598],\"mapped\",[949]],[[120599,120599],\"mapped\",[952]],[[120600,120600],\"mapped\",[954]],[[120601,120601],\"mapped\",[966]],[[120602,120602],\"mapped\",[961]],[[120603,120603],\"mapped\",[960]],[[120604,120604],\"mapped\",[945]],[[120605,120605],\"mapped\",[946]],[[120606,120606],\"mapped\",[947]],[[120607,120607],\"mapped\",[948]],[[120608,120608],\"mapped\",[949]],[[120609,120609],\"mapped\",[950]],[[120610,120610],\"mapped\",[951]],[[120611,120611],\"mapped\",[952]],[[120612,120612],\"mapped\",[953]],[[120613,120613],\"mapped\",[954]],[[120614,120614],\"mapped\",[955]],[[120615,120615],\"mapped\",[956]],[[120616,120616],\"mapped\",[957]],[[120617,120617],\"mapped\",[958]],[[120618,120618],\"mapped\",[959]],[[120619,120619],\"mapped\",[960]],[[120620,120620],\"mapped\",[961]],[[120621,120621],\"mapped\",[952]],[[120622,120622],\"mapped\",[963]],[[120623,120623],\"mapped\",[964]],[[120624,120624],\"mapped\",[965]],[[120625,120625],\"mapped\",[966]],[[120626,120626],\"mapped\",[967]],[[120627,120627],\"mapped\",[968]],[[120628,120628],\"mapped\",[969]],[[120629,120629],\"mapped\",[8711]],[[120630,120630],\"mapped\",[945]],[[120631,120631],\"mapped\",[946]],[[120632,120632],\"mapped\",[947]],[[120633,120633],\"mapped\",[948]],[[120634,120634],\"mapped\",[949]],[[120635,120635],\"mapped\",[950]],[[120636,120636],\"mapped\",[951]],[[120637,120637],\"mapped\",[952]],[[120638,120638],\"mapped\",[953]],[[120639,120639],\"mapped\",[954]],[[120640,120640],\"mapped\",[955]],[[120641,120641],\"mapped\",[956]],[[120642,120642],\"mapped\",[957]],[[120643,120643],\"mapped\",[958]],[[120644,120644],\"mapped\",[959]],[[120645,120645],\"mapped\",[960]],[[120646,120646],\"mapped\",[961]],[[120647,120648],\"mapped\",[963]],[[120649,120649],\"mapped\",[964]],[[120650,120650],\"mapped\",[965]],[[120651,120651],\"mapped\",[966]],[[120652,120652],\"mapped\",[967]],[[120653,120653],\"mapped\",[968]],[[120654,120654],\"mapped\",[969]],[[120655,120655],\"mapped\",[8706]],[[120656,120656],\"mapped\",[949]],[[120657,120657],\"mapped\",[952]],[[120658,120658],\"mapped\",[954]],[[120659,120659],\"mapped\",[966]],[[120660,120660],\"mapped\",[961]],[[120661,120661],\"mapped\",[960]],[[120662,120662],\"mapped\",[945]],[[120663,120663],\"mapped\",[946]],[[120664,120664],\"mapped\",[947]],[[120665,120665],\"mapped\",[948]],[[120666,120666],\"mapped\",[949]],[[120667,120667],\"mapped\",[950]],[[120668,120668],\"mapped\",[951]],[[120669,120669],\"mapped\",[952]],[[120670,120670],\"mapped\",[953]],[[120671,120671],\"mapped\",[954]],[[120672,120672],\"mapped\",[955]],[[120673,120673],\"mapped\",[956]],[[120674,120674],\"mapped\",[957]],[[120675,120675],\"mapped\",[958]],[[120676,120676],\"mapped\",[959]],[[120677,120677],\"mapped\",[960]],[[120678,120678],\"mapped\",[961]],[[120679,120679],\"mapped\",[952]],[[120680,120680],\"mapped\",[963]],[[120681,120681],\"mapped\",[964]],[[120682,120682],\"mapped\",[965]],[[120683,120683],\"mapped\",[966]],[[120684,120684],\"mapped\",[967]],[[120685,120685],\"mapped\",[968]],[[120686,120686],\"mapped\",[969]],[[120687,120687],\"mapped\",[8711]],[[120688,120688],\"mapped\",[945]],[[120689,120689],\"mapped\",[946]],[[120690,120690],\"mapped\",[947]],[[120691,120691],\"mapped\",[948]],[[120692,120692],\"mapped\",[949]],[[120693,120693],\"mapped\",[950]],[[120694,120694],\"mapped\",[951]],[[120695,120695],\"mapped\",[952]],[[120696,120696],\"mapped\",[953]],[[120697,120697],\"mapped\",[954]],[[120698,120698],\"mapped\",[955]],[[120699,120699],\"mapped\",[956]],[[120700,120700],\"mapped\",[957]],[[120701,120701],\"mapped\",[958]],[[120702,120702],\"mapped\",[959]],[[120703,120703],\"mapped\",[960]],[[120704,120704],\"mapped\",[961]],[[120705,120706],\"mapped\",[963]],[[120707,120707],\"mapped\",[964]],[[120708,120708],\"mapped\",[965]],[[120709,120709],\"mapped\",[966]],[[120710,120710],\"mapped\",[967]],[[120711,120711],\"mapped\",[968]],[[120712,120712],\"mapped\",[969]],[[120713,120713],\"mapped\",[8706]],[[120714,120714],\"mapped\",[949]],[[120715,120715],\"mapped\",[952]],[[120716,120716],\"mapped\",[954]],[[120717,120717],\"mapped\",[966]],[[120718,120718],\"mapped\",[961]],[[120719,120719],\"mapped\",[960]],[[120720,120720],\"mapped\",[945]],[[120721,120721],\"mapped\",[946]],[[120722,120722],\"mapped\",[947]],[[120723,120723],\"mapped\",[948]],[[120724,120724],\"mapped\",[949]],[[120725,120725],\"mapped\",[950]],[[120726,120726],\"mapped\",[951]],[[120727,120727],\"mapped\",[952]],[[120728,120728],\"mapped\",[953]],[[120729,120729],\"mapped\",[954]],[[120730,120730],\"mapped\",[955]],[[120731,120731],\"mapped\",[956]],[[120732,120732],\"mapped\",[957]],[[120733,120733],\"mapped\",[958]],[[120734,120734],\"mapped\",[959]],[[120735,120735],\"mapped\",[960]],[[120736,120736],\"mapped\",[961]],[[120737,120737],\"mapped\",[952]],[[120738,120738],\"mapped\",[963]],[[120739,120739],\"mapped\",[964]],[[120740,120740],\"mapped\",[965]],[[120741,120741],\"mapped\",[966]],[[120742,120742],\"mapped\",[967]],[[120743,120743],\"mapped\",[968]],[[120744,120744],\"mapped\",[969]],[[120745,120745],\"mapped\",[8711]],[[120746,120746],\"mapped\",[945]],[[120747,120747],\"mapped\",[946]],[[120748,120748],\"mapped\",[947]],[[120749,120749],\"mapped\",[948]],[[120750,120750],\"mapped\",[949]],[[120751,120751],\"mapped\",[950]],[[120752,120752],\"mapped\",[951]],[[120753,120753],\"mapped\",[952]],[[120754,120754],\"mapped\",[953]],[[120755,120755],\"mapped\",[954]],[[120756,120756],\"mapped\",[955]],[[120757,120757],\"mapped\",[956]],[[120758,120758],\"mapped\",[957]],[[120759,120759],\"mapped\",[958]],[[120760,120760],\"mapped\",[959]],[[120761,120761],\"mapped\",[960]],[[120762,120762],\"mapped\",[961]],[[120763,120764],\"mapped\",[963]],[[120765,120765],\"mapped\",[964]],[[120766,120766],\"mapped\",[965]],[[120767,120767],\"mapped\",[966]],[[120768,120768],\"mapped\",[967]],[[120769,120769],\"mapped\",[968]],[[120770,120770],\"mapped\",[969]],[[120771,120771],\"mapped\",[8706]],[[120772,120772],\"mapped\",[949]],[[120773,120773],\"mapped\",[952]],[[120774,120774],\"mapped\",[954]],[[120775,120775],\"mapped\",[966]],[[120776,120776],\"mapped\",[961]],[[120777,120777],\"mapped\",[960]],[[120778,120779],\"mapped\",[989]],[[120780,120781],\"disallowed\"],[[120782,120782],\"mapped\",[48]],[[120783,120783],\"mapped\",[49]],[[120784,120784],\"mapped\",[50]],[[120785,120785],\"mapped\",[51]],[[120786,120786],\"mapped\",[52]],[[120787,120787],\"mapped\",[53]],[[120788,120788],\"mapped\",[54]],[[120789,120789],\"mapped\",[55]],[[120790,120790],\"mapped\",[56]],[[120791,120791],\"mapped\",[57]],[[120792,120792],\"mapped\",[48]],[[120793,120793],\"mapped\",[49]],[[120794,120794],\"mapped\",[50]],[[120795,120795],\"mapped\",[51]],[[120796,120796],\"mapped\",[52]],[[120797,120797],\"mapped\",[53]],[[120798,120798],\"mapped\",[54]],[[120799,120799],\"mapped\",[55]],[[120800,120800],\"mapped\",[56]],[[120801,120801],\"mapped\",[57]],[[120802,120802],\"mapped\",[48]],[[120803,120803],\"mapped\",[49]],[[120804,120804],\"mapped\",[50]],[[120805,120805],\"mapped\",[51]],[[120806,120806],\"mapped\",[52]],[[120807,120807],\"mapped\",[53]],[[120808,120808],\"mapped\",[54]],[[120809,120809],\"mapped\",[55]],[[120810,120810],\"mapped\",[56]],[[120811,120811],\"mapped\",[57]],[[120812,120812],\"mapped\",[48]],[[120813,120813],\"mapped\",[49]],[[120814,120814],\"mapped\",[50]],[[120815,120815],\"mapped\",[51]],[[120816,120816],\"mapped\",[52]],[[120817,120817],\"mapped\",[53]],[[120818,120818],\"mapped\",[54]],[[120819,120819],\"mapped\",[55]],[[120820,120820],\"mapped\",[56]],[[120821,120821],\"mapped\",[57]],[[120822,120822],\"mapped\",[48]],[[120823,120823],\"mapped\",[49]],[[120824,120824],\"mapped\",[50]],[[120825,120825],\"mapped\",[51]],[[120826,120826],\"mapped\",[52]],[[120827,120827],\"mapped\",[53]],[[120828,120828],\"mapped\",[54]],[[120829,120829],\"mapped\",[55]],[[120830,120830],\"mapped\",[56]],[[120831,120831],\"mapped\",[57]],[[120832,121343],\"valid\",[],\"NV8\"],[[121344,121398],\"valid\"],[[121399,121402],\"valid\",[],\"NV8\"],[[121403,121452],\"valid\"],[[121453,121460],\"valid\",[],\"NV8\"],[[121461,121461],\"valid\"],[[121462,121475],\"valid\",[],\"NV8\"],[[121476,121476],\"valid\"],[[121477,121483],\"valid\",[],\"NV8\"],[[121484,121498],\"disallowed\"],[[121499,121503],\"valid\"],[[121504,121504],\"disallowed\"],[[121505,121519],\"valid\"],[[121520,124927],\"disallowed\"],[[124928,125124],\"valid\"],[[125125,125126],\"disallowed\"],[[125127,125135],\"valid\",[],\"NV8\"],[[125136,125142],\"valid\"],[[125143,126463],\"disallowed\"],[[126464,126464],\"mapped\",[1575]],[[126465,126465],\"mapped\",[1576]],[[126466,126466],\"mapped\",[1580]],[[126467,126467],\"mapped\",[1583]],[[126468,126468],\"disallowed\"],[[126469,126469],\"mapped\",[1608]],[[126470,126470],\"mapped\",[1586]],[[126471,126471],\"mapped\",[1581]],[[126472,126472],\"mapped\",[1591]],[[126473,126473],\"mapped\",[1610]],[[126474,126474],\"mapped\",[1603]],[[126475,126475],\"mapped\",[1604]],[[126476,126476],\"mapped\",[1605]],[[126477,126477],\"mapped\",[1606]],[[126478,126478],\"mapped\",[1587]],[[126479,126479],\"mapped\",[1593]],[[126480,126480],\"mapped\",[1601]],[[126481,126481],\"mapped\",[1589]],[[126482,126482],\"mapped\",[1602]],[[126483,126483],\"mapped\",[1585]],[[126484,126484],\"mapped\",[1588]],[[126485,126485],\"mapped\",[1578]],[[126486,126486],\"mapped\",[1579]],[[126487,126487],\"mapped\",[1582]],[[126488,126488],\"mapped\",[1584]],[[126489,126489],\"mapped\",[1590]],[[126490,126490],\"mapped\",[1592]],[[126491,126491],\"mapped\",[1594]],[[126492,126492],\"mapped\",[1646]],[[126493,126493],\"mapped\",[1722]],[[126494,126494],\"mapped\",[1697]],[[126495,126495],\"mapped\",[1647]],[[126496,126496],\"disallowed\"],[[126497,126497],\"mapped\",[1576]],[[126498,126498],\"mapped\",[1580]],[[126499,126499],\"disallowed\"],[[126500,126500],\"mapped\",[1607]],[[126501,126502],\"disallowed\"],[[126503,126503],\"mapped\",[1581]],[[126504,126504],\"disallowed\"],[[126505,126505],\"mapped\",[1610]],[[126506,126506],\"mapped\",[1603]],[[126507,126507],\"mapped\",[1604]],[[126508,126508],\"mapped\",[1605]],[[126509,126509],\"mapped\",[1606]],[[126510,126510],\"mapped\",[1587]],[[126511,126511],\"mapped\",[1593]],[[126512,126512],\"mapped\",[1601]],[[126513,126513],\"mapped\",[1589]],[[126514,126514],\"mapped\",[1602]],[[126515,126515],\"disallowed\"],[[126516,126516],\"mapped\",[1588]],[[126517,126517],\"mapped\",[1578]],[[126518,126518],\"mapped\",[1579]],[[126519,126519],\"mapped\",[1582]],[[126520,126520],\"disallowed\"],[[126521,126521],\"mapped\",[1590]],[[126522,126522],\"disallowed\"],[[126523,126523],\"mapped\",[1594]],[[126524,126529],\"disallowed\"],[[126530,126530],\"mapped\",[1580]],[[126531,126534],\"disallowed\"],[[126535,126535],\"mapped\",[1581]],[[126536,126536],\"disallowed\"],[[126537,126537],\"mapped\",[1610]],[[126538,126538],\"disallowed\"],[[126539,126539],\"mapped\",[1604]],[[126540,126540],\"disallowed\"],[[126541,126541],\"mapped\",[1606]],[[126542,126542],\"mapped\",[1587]],[[126543,126543],\"mapped\",[1593]],[[126544,126544],\"disallowed\"],[[126545,126545],\"mapped\",[1589]],[[126546,126546],\"mapped\",[1602]],[[126547,126547],\"disallowed\"],[[126548,126548],\"mapped\",[1588]],[[126549,126550],\"disallowed\"],[[126551,126551],\"mapped\",[1582]],[[126552,126552],\"disallowed\"],[[126553,126553],\"mapped\",[1590]],[[126554,126554],\"disallowed\"],[[126555,126555],\"mapped\",[1594]],[[126556,126556],\"disallowed\"],[[126557,126557],\"mapped\",[1722]],[[126558,126558],\"disallowed\"],[[126559,126559],\"mapped\",[1647]],[[126560,126560],\"disallowed\"],[[126561,126561],\"mapped\",[1576]],[[126562,126562],\"mapped\",[1580]],[[126563,126563],\"disallowed\"],[[126564,126564],\"mapped\",[1607]],[[126565,126566],\"disallowed\"],[[126567,126567],\"mapped\",[1581]],[[126568,126568],\"mapped\",[1591]],[[126569,126569],\"mapped\",[1610]],[[126570,126570],\"mapped\",[1603]],[[126571,126571],\"disallowed\"],[[126572,126572],\"mapped\",[1605]],[[126573,126573],\"mapped\",[1606]],[[126574,126574],\"mapped\",[1587]],[[126575,126575],\"mapped\",[1593]],[[126576,126576],\"mapped\",[1601]],[[126577,126577],\"mapped\",[1589]],[[126578,126578],\"mapped\",[1602]],[[126579,126579],\"disallowed\"],[[126580,126580],\"mapped\",[1588]],[[126581,126581],\"mapped\",[1578]],[[126582,126582],\"mapped\",[1579]],[[126583,126583],\"mapped\",[1582]],[[126584,126584],\"disallowed\"],[[126585,126585],\"mapped\",[1590]],[[126586,126586],\"mapped\",[1592]],[[126587,126587],\"mapped\",[1594]],[[126588,126588],\"mapped\",[1646]],[[126589,126589],\"disallowed\"],[[126590,126590],\"mapped\",[1697]],[[126591,126591],\"disallowed\"],[[126592,126592],\"mapped\",[1575]],[[126593,126593],\"mapped\",[1576]],[[126594,126594],\"mapped\",[1580]],[[126595,126595],\"mapped\",[1583]],[[126596,126596],\"mapped\",[1607]],[[126597,126597],\"mapped\",[1608]],[[126598,126598],\"mapped\",[1586]],[[126599,126599],\"mapped\",[1581]],[[126600,126600],\"mapped\",[1591]],[[126601,126601],\"mapped\",[1610]],[[126602,126602],\"disallowed\"],[[126603,126603],\"mapped\",[1604]],[[126604,126604],\"mapped\",[1605]],[[126605,126605],\"mapped\",[1606]],[[126606,126606],\"mapped\",[1587]],[[126607,126607],\"mapped\",[1593]],[[126608,126608],\"mapped\",[1601]],[[126609,126609],\"mapped\",[1589]],[[126610,126610],\"mapped\",[1602]],[[126611,126611],\"mapped\",[1585]],[[126612,126612],\"mapped\",[1588]],[[126613,126613],\"mapped\",[1578]],[[126614,126614],\"mapped\",[1579]],[[126615,126615],\"mapped\",[1582]],[[126616,126616],\"mapped\",[1584]],[[126617,126617],\"mapped\",[1590]],[[126618,126618],\"mapped\",[1592]],[[126619,126619],\"mapped\",[1594]],[[126620,126624],\"disallowed\"],[[126625,126625],\"mapped\",[1576]],[[126626,126626],\"mapped\",[1580]],[[126627,126627],\"mapped\",[1583]],[[126628,126628],\"disallowed\"],[[126629,126629],\"mapped\",[1608]],[[126630,126630],\"mapped\",[1586]],[[126631,126631],\"mapped\",[1581]],[[126632,126632],\"mapped\",[1591]],[[126633,126633],\"mapped\",[1610]],[[126634,126634],\"disallowed\"],[[126635,126635],\"mapped\",[1604]],[[126636,126636],\"mapped\",[1605]],[[126637,126637],\"mapped\",[1606]],[[126638,126638],\"mapped\",[1587]],[[126639,126639],\"mapped\",[1593]],[[126640,126640],\"mapped\",[1601]],[[126641,126641],\"mapped\",[1589]],[[126642,126642],\"mapped\",[1602]],[[126643,126643],\"mapped\",[1585]],[[126644,126644],\"mapped\",[1588]],[[126645,126645],\"mapped\",[1578]],[[126646,126646],\"mapped\",[1579]],[[126647,126647],\"mapped\",[1582]],[[126648,126648],\"mapped\",[1584]],[[126649,126649],\"mapped\",[1590]],[[126650,126650],\"mapped\",[1592]],[[126651,126651],\"mapped\",[1594]],[[126652,126703],\"disallowed\"],[[126704,126705],\"valid\",[],\"NV8\"],[[126706,126975],\"disallowed\"],[[126976,127019],\"valid\",[],\"NV8\"],[[127020,127023],\"disallowed\"],[[127024,127123],\"valid\",[],\"NV8\"],[[127124,127135],\"disallowed\"],[[127136,127150],\"valid\",[],\"NV8\"],[[127151,127152],\"disallowed\"],[[127153,127166],\"valid\",[],\"NV8\"],[[127167,127167],\"valid\",[],\"NV8\"],[[127168,127168],\"disallowed\"],[[127169,127183],\"valid\",[],\"NV8\"],[[127184,127184],\"disallowed\"],[[127185,127199],\"valid\",[],\"NV8\"],[[127200,127221],\"valid\",[],\"NV8\"],[[127222,127231],\"disallowed\"],[[127232,127232],\"disallowed\"],[[127233,127233],\"disallowed_STD3_mapped\",[48,44]],[[127234,127234],\"disallowed_STD3_mapped\",[49,44]],[[127235,127235],\"disallowed_STD3_mapped\",[50,44]],[[127236,127236],\"disallowed_STD3_mapped\",[51,44]],[[127237,127237],\"disallowed_STD3_mapped\",[52,44]],[[127238,127238],\"disallowed_STD3_mapped\",[53,44]],[[127239,127239],\"disallowed_STD3_mapped\",[54,44]],[[127240,127240],\"disallowed_STD3_mapped\",[55,44]],[[127241,127241],\"disallowed_STD3_mapped\",[56,44]],[[127242,127242],\"disallowed_STD3_mapped\",[57,44]],[[127243,127244],\"valid\",[],\"NV8\"],[[127245,127247],\"disallowed\"],[[127248,127248],\"disallowed_STD3_mapped\",[40,97,41]],[[127249,127249],\"disallowed_STD3_mapped\",[40,98,41]],[[127250,127250],\"disallowed_STD3_mapped\",[40,99,41]],[[127251,127251],\"disallowed_STD3_mapped\",[40,100,41]],[[127252,127252],\"disallowed_STD3_mapped\",[40,101,41]],[[127253,127253],\"disallowed_STD3_mapped\",[40,102,41]],[[127254,127254],\"disallowed_STD3_mapped\",[40,103,41]],[[127255,127255],\"disallowed_STD3_mapped\",[40,104,41]],[[127256,127256],\"disallowed_STD3_mapped\",[40,105,41]],[[127257,127257],\"disallowed_STD3_mapped\",[40,106,41]],[[127258,127258],\"disallowed_STD3_mapped\",[40,107,41]],[[127259,127259],\"disallowed_STD3_mapped\",[40,108,41]],[[127260,127260],\"disallowed_STD3_mapped\",[40,109,41]],[[127261,127261],\"disallowed_STD3_mapped\",[40,110,41]],[[127262,127262],\"disallowed_STD3_mapped\",[40,111,41]],[[127263,127263],\"disallowed_STD3_mapped\",[40,112,41]],[[127264,127264],\"disallowed_STD3_mapped\",[40,113,41]],[[127265,127265],\"disallowed_STD3_mapped\",[40,114,41]],[[127266,127266],\"disallowed_STD3_mapped\",[40,115,41]],[[127267,127267],\"disallowed_STD3_mapped\",[40,116,41]],[[127268,127268],\"disallowed_STD3_mapped\",[40,117,41]],[[127269,127269],\"disallowed_STD3_mapped\",[40,118,41]],[[127270,127270],\"disallowed_STD3_mapped\",[40,119,41]],[[127271,127271],\"disallowed_STD3_mapped\",[40,120,41]],[[127272,127272],\"disallowed_STD3_mapped\",[40,121,41]],[[127273,127273],\"disallowed_STD3_mapped\",[40,122,41]],[[127274,127274],\"mapped\",[12308,115,12309]],[[127275,127275],\"mapped\",[99]],[[127276,127276],\"mapped\",[114]],[[127277,127277],\"mapped\",[99,100]],[[127278,127278],\"mapped\",[119,122]],[[127279,127279],\"disallowed\"],[[127280,127280],\"mapped\",[97]],[[127281,127281],\"mapped\",[98]],[[127282,127282],\"mapped\",[99]],[[127283,127283],\"mapped\",[100]],[[127284,127284],\"mapped\",[101]],[[127285,127285],\"mapped\",[102]],[[127286,127286],\"mapped\",[103]],[[127287,127287],\"mapped\",[104]],[[127288,127288],\"mapped\",[105]],[[127289,127289],\"mapped\",[106]],[[127290,127290],\"mapped\",[107]],[[127291,127291],\"mapped\",[108]],[[127292,127292],\"mapped\",[109]],[[127293,127293],\"mapped\",[110]],[[127294,127294],\"mapped\",[111]],[[127295,127295],\"mapped\",[112]],[[127296,127296],\"mapped\",[113]],[[127297,127297],\"mapped\",[114]],[[127298,127298],\"mapped\",[115]],[[127299,127299],\"mapped\",[116]],[[127300,127300],\"mapped\",[117]],[[127301,127301],\"mapped\",[118]],[[127302,127302],\"mapped\",[119]],[[127303,127303],\"mapped\",[120]],[[127304,127304],\"mapped\",[121]],[[127305,127305],\"mapped\",[122]],[[127306,127306],\"mapped\",[104,118]],[[127307,127307],\"mapped\",[109,118]],[[127308,127308],\"mapped\",[115,100]],[[127309,127309],\"mapped\",[115,115]],[[127310,127310],\"mapped\",[112,112,118]],[[127311,127311],\"mapped\",[119,99]],[[127312,127318],\"valid\",[],\"NV8\"],[[127319,127319],\"valid\",[],\"NV8\"],[[127320,127326],\"valid\",[],\"NV8\"],[[127327,127327],\"valid\",[],\"NV8\"],[[127328,127337],\"valid\",[],\"NV8\"],[[127338,127338],\"mapped\",[109,99]],[[127339,127339],\"mapped\",[109,100]],[[127340,127343],\"disallowed\"],[[127344,127352],\"valid\",[],\"NV8\"],[[127353,127353],\"valid\",[],\"NV8\"],[[127354,127354],\"valid\",[],\"NV8\"],[[127355,127356],\"valid\",[],\"NV8\"],[[127357,127358],\"valid\",[],\"NV8\"],[[127359,127359],\"valid\",[],\"NV8\"],[[127360,127369],\"valid\",[],\"NV8\"],[[127370,127373],\"valid\",[],\"NV8\"],[[127374,127375],\"valid\",[],\"NV8\"],[[127376,127376],\"mapped\",[100,106]],[[127377,127386],\"valid\",[],\"NV8\"],[[127387,127461],\"disallowed\"],[[127462,127487],\"valid\",[],\"NV8\"],[[127488,127488],\"mapped\",[12411,12363]],[[127489,127489],\"mapped\",[12467,12467]],[[127490,127490],\"mapped\",[12469]],[[127491,127503],\"disallowed\"],[[127504,127504],\"mapped\",[25163]],[[127505,127505],\"mapped\",[23383]],[[127506,127506],\"mapped\",[21452]],[[127507,127507],\"mapped\",[12487]],[[127508,127508],\"mapped\",[20108]],[[127509,127509],\"mapped\",[22810]],[[127510,127510],\"mapped\",[35299]],[[127511,127511],\"mapped\",[22825]],[[127512,127512],\"mapped\",[20132]],[[127513,127513],\"mapped\",[26144]],[[127514,127514],\"mapped\",[28961]],[[127515,127515],\"mapped\",[26009]],[[127516,127516],\"mapped\",[21069]],[[127517,127517],\"mapped\",[24460]],[[127518,127518],\"mapped\",[20877]],[[127519,127519],\"mapped\",[26032]],[[127520,127520],\"mapped\",[21021]],[[127521,127521],\"mapped\",[32066]],[[127522,127522],\"mapped\",[29983]],[[127523,127523],\"mapped\",[36009]],[[127524,127524],\"mapped\",[22768]],[[127525,127525],\"mapped\",[21561]],[[127526,127526],\"mapped\",[28436]],[[127527,127527],\"mapped\",[25237]],[[127528,127528],\"mapped\",[25429]],[[127529,127529],\"mapped\",[19968]],[[127530,127530],\"mapped\",[19977]],[[127531,127531],\"mapped\",[36938]],[[127532,127532],\"mapped\",[24038]],[[127533,127533],\"mapped\",[20013]],[[127534,127534],\"mapped\",[21491]],[[127535,127535],\"mapped\",[25351]],[[127536,127536],\"mapped\",[36208]],[[127537,127537],\"mapped\",[25171]],[[127538,127538],\"mapped\",[31105]],[[127539,127539],\"mapped\",[31354]],[[127540,127540],\"mapped\",[21512]],[[127541,127541],\"mapped\",[28288]],[[127542,127542],\"mapped\",[26377]],[[127543,127543],\"mapped\",[26376]],[[127544,127544],\"mapped\",[30003]],[[127545,127545],\"mapped\",[21106]],[[127546,127546],\"mapped\",[21942]],[[127547,127551],\"disallowed\"],[[127552,127552],\"mapped\",[12308,26412,12309]],[[127553,127553],\"mapped\",[12308,19977,12309]],[[127554,127554],\"mapped\",[12308,20108,12309]],[[127555,127555],\"mapped\",[12308,23433,12309]],[[127556,127556],\"mapped\",[12308,28857,12309]],[[127557,127557],\"mapped\",[12308,25171,12309]],[[127558,127558],\"mapped\",[12308,30423,12309]],[[127559,127559],\"mapped\",[12308,21213,12309]],[[127560,127560],\"mapped\",[12308,25943,12309]],[[127561,127567],\"disallowed\"],[[127568,127568],\"mapped\",[24471]],[[127569,127569],\"mapped\",[21487]],[[127570,127743],\"disallowed\"],[[127744,127776],\"valid\",[],\"NV8\"],[[127777,127788],\"valid\",[],\"NV8\"],[[127789,127791],\"valid\",[],\"NV8\"],[[127792,127797],\"valid\",[],\"NV8\"],[[127798,127798],\"valid\",[],\"NV8\"],[[127799,127868],\"valid\",[],\"NV8\"],[[127869,127869],\"valid\",[],\"NV8\"],[[127870,127871],\"valid\",[],\"NV8\"],[[127872,127891],\"valid\",[],\"NV8\"],[[127892,127903],\"valid\",[],\"NV8\"],[[127904,127940],\"valid\",[],\"NV8\"],[[127941,127941],\"valid\",[],\"NV8\"],[[127942,127946],\"valid\",[],\"NV8\"],[[127947,127950],\"valid\",[],\"NV8\"],[[127951,127955],\"valid\",[],\"NV8\"],[[127956,127967],\"valid\",[],\"NV8\"],[[127968,127984],\"valid\",[],\"NV8\"],[[127985,127991],\"valid\",[],\"NV8\"],[[127992,127999],\"valid\",[],\"NV8\"],[[128000,128062],\"valid\",[],\"NV8\"],[[128063,128063],\"valid\",[],\"NV8\"],[[128064,128064],\"valid\",[],\"NV8\"],[[128065,128065],\"valid\",[],\"NV8\"],[[128066,128247],\"valid\",[],\"NV8\"],[[128248,128248],\"valid\",[],\"NV8\"],[[128249,128252],\"valid\",[],\"NV8\"],[[128253,128254],\"valid\",[],\"NV8\"],[[128255,128255],\"valid\",[],\"NV8\"],[[128256,128317],\"valid\",[],\"NV8\"],[[128318,128319],\"valid\",[],\"NV8\"],[[128320,128323],\"valid\",[],\"NV8\"],[[128324,128330],\"valid\",[],\"NV8\"],[[128331,128335],\"valid\",[],\"NV8\"],[[128336,128359],\"valid\",[],\"NV8\"],[[128360,128377],\"valid\",[],\"NV8\"],[[128378,128378],\"disallowed\"],[[128379,128419],\"valid\",[],\"NV8\"],[[128420,128420],\"disallowed\"],[[128421,128506],\"valid\",[],\"NV8\"],[[128507,128511],\"valid\",[],\"NV8\"],[[128512,128512],\"valid\",[],\"NV8\"],[[128513,128528],\"valid\",[],\"NV8\"],[[128529,128529],\"valid\",[],\"NV8\"],[[128530,128532],\"valid\",[],\"NV8\"],[[128533,128533],\"valid\",[],\"NV8\"],[[128534,128534],\"valid\",[],\"NV8\"],[[128535,128535],\"valid\",[],\"NV8\"],[[128536,128536],\"valid\",[],\"NV8\"],[[128537,128537],\"valid\",[],\"NV8\"],[[128538,128538],\"valid\",[],\"NV8\"],[[128539,128539],\"valid\",[],\"NV8\"],[[128540,128542],\"valid\",[],\"NV8\"],[[128543,128543],\"valid\",[],\"NV8\"],[[128544,128549],\"valid\",[],\"NV8\"],[[128550,128551],\"valid\",[],\"NV8\"],[[128552,128555],\"valid\",[],\"NV8\"],[[128556,128556],\"valid\",[],\"NV8\"],[[128557,128557],\"valid\",[],\"NV8\"],[[128558,128559],\"valid\",[],\"NV8\"],[[128560,128563],\"valid\",[],\"NV8\"],[[128564,128564],\"valid\",[],\"NV8\"],[[128565,128576],\"valid\",[],\"NV8\"],[[128577,128578],\"valid\",[],\"NV8\"],[[128579,128580],\"valid\",[],\"NV8\"],[[128581,128591],\"valid\",[],\"NV8\"],[[128592,128639],\"valid\",[],\"NV8\"],[[128640,128709],\"valid\",[],\"NV8\"],[[128710,128719],\"valid\",[],\"NV8\"],[[128720,128720],\"valid\",[],\"NV8\"],[[128721,128735],\"disallowed\"],[[128736,128748],\"valid\",[],\"NV8\"],[[128749,128751],\"disallowed\"],[[128752,128755],\"valid\",[],\"NV8\"],[[128756,128767],\"disallowed\"],[[128768,128883],\"valid\",[],\"NV8\"],[[128884,128895],\"disallowed\"],[[128896,128980],\"valid\",[],\"NV8\"],[[128981,129023],\"disallowed\"],[[129024,129035],\"valid\",[],\"NV8\"],[[129036,129039],\"disallowed\"],[[129040,129095],\"valid\",[],\"NV8\"],[[129096,129103],\"disallowed\"],[[129104,129113],\"valid\",[],\"NV8\"],[[129114,129119],\"disallowed\"],[[129120,129159],\"valid\",[],\"NV8\"],[[129160,129167],\"disallowed\"],[[129168,129197],\"valid\",[],\"NV8\"],[[129198,129295],\"disallowed\"],[[129296,129304],\"valid\",[],\"NV8\"],[[129305,129407],\"disallowed\"],[[129408,129412],\"valid\",[],\"NV8\"],[[129413,129471],\"disallowed\"],[[129472,129472],\"valid\",[],\"NV8\"],[[129473,131069],\"disallowed\"],[[131070,131071],\"disallowed\"],[[131072,173782],\"valid\"],[[173783,173823],\"disallowed\"],[[173824,177972],\"valid\"],[[177973,177983],\"disallowed\"],[[177984,178205],\"valid\"],[[178206,178207],\"disallowed\"],[[178208,183969],\"valid\"],[[183970,194559],\"disallowed\"],[[194560,194560],\"mapped\",[20029]],[[194561,194561],\"mapped\",[20024]],[[194562,194562],\"mapped\",[20033]],[[194563,194563],\"mapped\",[131362]],[[194564,194564],\"mapped\",[20320]],[[194565,194565],\"mapped\",[20398]],[[194566,194566],\"mapped\",[20411]],[[194567,194567],\"mapped\",[20482]],[[194568,194568],\"mapped\",[20602]],[[194569,194569],\"mapped\",[20633]],[[194570,194570],\"mapped\",[20711]],[[194571,194571],\"mapped\",[20687]],[[194572,194572],\"mapped\",[13470]],[[194573,194573],\"mapped\",[132666]],[[194574,194574],\"mapped\",[20813]],[[194575,194575],\"mapped\",[20820]],[[194576,194576],\"mapped\",[20836]],[[194577,194577],\"mapped\",[20855]],[[194578,194578],\"mapped\",[132380]],[[194579,194579],\"mapped\",[13497]],[[194580,194580],\"mapped\",[20839]],[[194581,194581],\"mapped\",[20877]],[[194582,194582],\"mapped\",[132427]],[[194583,194583],\"mapped\",[20887]],[[194584,194584],\"mapped\",[20900]],[[194585,194585],\"mapped\",[20172]],[[194586,194586],\"mapped\",[20908]],[[194587,194587],\"mapped\",[20917]],[[194588,194588],\"mapped\",[168415]],[[194589,194589],\"mapped\",[20981]],[[194590,194590],\"mapped\",[20995]],[[194591,194591],\"mapped\",[13535]],[[194592,194592],\"mapped\",[21051]],[[194593,194593],\"mapped\",[21062]],[[194594,194594],\"mapped\",[21106]],[[194595,194595],\"mapped\",[21111]],[[194596,194596],\"mapped\",[13589]],[[194597,194597],\"mapped\",[21191]],[[194598,194598],\"mapped\",[21193]],[[194599,194599],\"mapped\",[21220]],[[194600,194600],\"mapped\",[21242]],[[194601,194601],\"mapped\",[21253]],[[194602,194602],\"mapped\",[21254]],[[194603,194603],\"mapped\",[21271]],[[194604,194604],\"mapped\",[21321]],[[194605,194605],\"mapped\",[21329]],[[194606,194606],\"mapped\",[21338]],[[194607,194607],\"mapped\",[21363]],[[194608,194608],\"mapped\",[21373]],[[194609,194611],\"mapped\",[21375]],[[194612,194612],\"mapped\",[133676]],[[194613,194613],\"mapped\",[28784]],[[194614,194614],\"mapped\",[21450]],[[194615,194615],\"mapped\",[21471]],[[194616,194616],\"mapped\",[133987]],[[194617,194617],\"mapped\",[21483]],[[194618,194618],\"mapped\",[21489]],[[194619,194619],\"mapped\",[21510]],[[194620,194620],\"mapped\",[21662]],[[194621,194621],\"mapped\",[21560]],[[194622,194622],\"mapped\",[21576]],[[194623,194623],\"mapped\",[21608]],[[194624,194624],\"mapped\",[21666]],[[194625,194625],\"mapped\",[21750]],[[194626,194626],\"mapped\",[21776]],[[194627,194627],\"mapped\",[21843]],[[194628,194628],\"mapped\",[21859]],[[194629,194630],\"mapped\",[21892]],[[194631,194631],\"mapped\",[21913]],[[194632,194632],\"mapped\",[21931]],[[194633,194633],\"mapped\",[21939]],[[194634,194634],\"mapped\",[21954]],[[194635,194635],\"mapped\",[22294]],[[194636,194636],\"mapped\",[22022]],[[194637,194637],\"mapped\",[22295]],[[194638,194638],\"mapped\",[22097]],[[194639,194639],\"mapped\",[22132]],[[194640,194640],\"mapped\",[20999]],[[194641,194641],\"mapped\",[22766]],[[194642,194642],\"mapped\",[22478]],[[194643,194643],\"mapped\",[22516]],[[194644,194644],\"mapped\",[22541]],[[194645,194645],\"mapped\",[22411]],[[194646,194646],\"mapped\",[22578]],[[194647,194647],\"mapped\",[22577]],[[194648,194648],\"mapped\",[22700]],[[194649,194649],\"mapped\",[136420]],[[194650,194650],\"mapped\",[22770]],[[194651,194651],\"mapped\",[22775]],[[194652,194652],\"mapped\",[22790]],[[194653,194653],\"mapped\",[22810]],[[194654,194654],\"mapped\",[22818]],[[194655,194655],\"mapped\",[22882]],[[194656,194656],\"mapped\",[136872]],[[194657,194657],\"mapped\",[136938]],[[194658,194658],\"mapped\",[23020]],[[194659,194659],\"mapped\",[23067]],[[194660,194660],\"mapped\",[23079]],[[194661,194661],\"mapped\",[23000]],[[194662,194662],\"mapped\",[23142]],[[194663,194663],\"mapped\",[14062]],[[194664,194664],\"disallowed\"],[[194665,194665],\"mapped\",[23304]],[[194666,194667],\"mapped\",[23358]],[[194668,194668],\"mapped\",[137672]],[[194669,194669],\"mapped\",[23491]],[[194670,194670],\"mapped\",[23512]],[[194671,194671],\"mapped\",[23527]],[[194672,194672],\"mapped\",[23539]],[[194673,194673],\"mapped\",[138008]],[[194674,194674],\"mapped\",[23551]],[[194675,194675],\"mapped\",[23558]],[[194676,194676],\"disallowed\"],[[194677,194677],\"mapped\",[23586]],[[194678,194678],\"mapped\",[14209]],[[194679,194679],\"mapped\",[23648]],[[194680,194680],\"mapped\",[23662]],[[194681,194681],\"mapped\",[23744]],[[194682,194682],\"mapped\",[23693]],[[194683,194683],\"mapped\",[138724]],[[194684,194684],\"mapped\",[23875]],[[194685,194685],\"mapped\",[138726]],[[194686,194686],\"mapped\",[23918]],[[194687,194687],\"mapped\",[23915]],[[194688,194688],\"mapped\",[23932]],[[194689,194689],\"mapped\",[24033]],[[194690,194690],\"mapped\",[24034]],[[194691,194691],\"mapped\",[14383]],[[194692,194692],\"mapped\",[24061]],[[194693,194693],\"mapped\",[24104]],[[194694,194694],\"mapped\",[24125]],[[194695,194695],\"mapped\",[24169]],[[194696,194696],\"mapped\",[14434]],[[194697,194697],\"mapped\",[139651]],[[194698,194698],\"mapped\",[14460]],[[194699,194699],\"mapped\",[24240]],[[194700,194700],\"mapped\",[24243]],[[194701,194701],\"mapped\",[24246]],[[194702,194702],\"mapped\",[24266]],[[194703,194703],\"mapped\",[172946]],[[194704,194704],\"mapped\",[24318]],[[194705,194706],\"mapped\",[140081]],[[194707,194707],\"mapped\",[33281]],[[194708,194709],\"mapped\",[24354]],[[194710,194710],\"mapped\",[14535]],[[194711,194711],\"mapped\",[144056]],[[194712,194712],\"mapped\",[156122]],[[194713,194713],\"mapped\",[24418]],[[194714,194714],\"mapped\",[24427]],[[194715,194715],\"mapped\",[14563]],[[194716,194716],\"mapped\",[24474]],[[194717,194717],\"mapped\",[24525]],[[194718,194718],\"mapped\",[24535]],[[194719,194719],\"mapped\",[24569]],[[194720,194720],\"mapped\",[24705]],[[194721,194721],\"mapped\",[14650]],[[194722,194722],\"mapped\",[14620]],[[194723,194723],\"mapped\",[24724]],[[194724,194724],\"mapped\",[141012]],[[194725,194725],\"mapped\",[24775]],[[194726,194726],\"mapped\",[24904]],[[194727,194727],\"mapped\",[24908]],[[194728,194728],\"mapped\",[24910]],[[194729,194729],\"mapped\",[24908]],[[194730,194730],\"mapped\",[24954]],[[194731,194731],\"mapped\",[24974]],[[194732,194732],\"mapped\",[25010]],[[194733,194733],\"mapped\",[24996]],[[194734,194734],\"mapped\",[25007]],[[194735,194735],\"mapped\",[25054]],[[194736,194736],\"mapped\",[25074]],[[194737,194737],\"mapped\",[25078]],[[194738,194738],\"mapped\",[25104]],[[194739,194739],\"mapped\",[25115]],[[194740,194740],\"mapped\",[25181]],[[194741,194741],\"mapped\",[25265]],[[194742,194742],\"mapped\",[25300]],[[194743,194743],\"mapped\",[25424]],[[194744,194744],\"mapped\",[142092]],[[194745,194745],\"mapped\",[25405]],[[194746,194746],\"mapped\",[25340]],[[194747,194747],\"mapped\",[25448]],[[194748,194748],\"mapped\",[25475]],[[194749,194749],\"mapped\",[25572]],[[194750,194750],\"mapped\",[142321]],[[194751,194751],\"mapped\",[25634]],[[194752,194752],\"mapped\",[25541]],[[194753,194753],\"mapped\",[25513]],[[194754,194754],\"mapped\",[14894]],[[194755,194755],\"mapped\",[25705]],[[194756,194756],\"mapped\",[25726]],[[194757,194757],\"mapped\",[25757]],[[194758,194758],\"mapped\",[25719]],[[194759,194759],\"mapped\",[14956]],[[194760,194760],\"mapped\",[25935]],[[194761,194761],\"mapped\",[25964]],[[194762,194762],\"mapped\",[143370]],[[194763,194763],\"mapped\",[26083]],[[194764,194764],\"mapped\",[26360]],[[194765,194765],\"mapped\",[26185]],[[194766,194766],\"mapped\",[15129]],[[194767,194767],\"mapped\",[26257]],[[194768,194768],\"mapped\",[15112]],[[194769,194769],\"mapped\",[15076]],[[194770,194770],\"mapped\",[20882]],[[194771,194771],\"mapped\",[20885]],[[194772,194772],\"mapped\",[26368]],[[194773,194773],\"mapped\",[26268]],[[194774,194774],\"mapped\",[32941]],[[194775,194775],\"mapped\",[17369]],[[194776,194776],\"mapped\",[26391]],[[194777,194777],\"mapped\",[26395]],[[194778,194778],\"mapped\",[26401]],[[194779,194779],\"mapped\",[26462]],[[194780,194780],\"mapped\",[26451]],[[194781,194781],\"mapped\",[144323]],[[194782,194782],\"mapped\",[15177]],[[194783,194783],\"mapped\",[26618]],[[194784,194784],\"mapped\",[26501]],[[194785,194785],\"mapped\",[26706]],[[194786,194786],\"mapped\",[26757]],[[194787,194787],\"mapped\",[144493]],[[194788,194788],\"mapped\",[26766]],[[194789,194789],\"mapped\",[26655]],[[194790,194790],\"mapped\",[26900]],[[194791,194791],\"mapped\",[15261]],[[194792,194792],\"mapped\",[26946]],[[194793,194793],\"mapped\",[27043]],[[194794,194794],\"mapped\",[27114]],[[194795,194795],\"mapped\",[27304]],[[194796,194796],\"mapped\",[145059]],[[194797,194797],\"mapped\",[27355]],[[194798,194798],\"mapped\",[15384]],[[194799,194799],\"mapped\",[27425]],[[194800,194800],\"mapped\",[145575]],[[194801,194801],\"mapped\",[27476]],[[194802,194802],\"mapped\",[15438]],[[194803,194803],\"mapped\",[27506]],[[194804,194804],\"mapped\",[27551]],[[194805,194805],\"mapped\",[27578]],[[194806,194806],\"mapped\",[27579]],[[194807,194807],\"mapped\",[146061]],[[194808,194808],\"mapped\",[138507]],[[194809,194809],\"mapped\",[146170]],[[194810,194810],\"mapped\",[27726]],[[194811,194811],\"mapped\",[146620]],[[194812,194812],\"mapped\",[27839]],[[194813,194813],\"mapped\",[27853]],[[194814,194814],\"mapped\",[27751]],[[194815,194815],\"mapped\",[27926]],[[194816,194816],\"mapped\",[27966]],[[194817,194817],\"mapped\",[28023]],[[194818,194818],\"mapped\",[27969]],[[194819,194819],\"mapped\",[28009]],[[194820,194820],\"mapped\",[28024]],[[194821,194821],\"mapped\",[28037]],[[194822,194822],\"mapped\",[146718]],[[194823,194823],\"mapped\",[27956]],[[194824,194824],\"mapped\",[28207]],[[194825,194825],\"mapped\",[28270]],[[194826,194826],\"mapped\",[15667]],[[194827,194827],\"mapped\",[28363]],[[194828,194828],\"mapped\",[28359]],[[194829,194829],\"mapped\",[147153]],[[194830,194830],\"mapped\",[28153]],[[194831,194831],\"mapped\",[28526]],[[194832,194832],\"mapped\",[147294]],[[194833,194833],\"mapped\",[147342]],[[194834,194834],\"mapped\",[28614]],[[194835,194835],\"mapped\",[28729]],[[194836,194836],\"mapped\",[28702]],[[194837,194837],\"mapped\",[28699]],[[194838,194838],\"mapped\",[15766]],[[194839,194839],\"mapped\",[28746]],[[194840,194840],\"mapped\",[28797]],[[194841,194841],\"mapped\",[28791]],[[194842,194842],\"mapped\",[28845]],[[194843,194843],\"mapped\",[132389]],[[194844,194844],\"mapped\",[28997]],[[194845,194845],\"mapped\",[148067]],[[194846,194846],\"mapped\",[29084]],[[194847,194847],\"disallowed\"],[[194848,194848],\"mapped\",[29224]],[[194849,194849],\"mapped\",[29237]],[[194850,194850],\"mapped\",[29264]],[[194851,194851],\"mapped\",[149000]],[[194852,194852],\"mapped\",[29312]],[[194853,194853],\"mapped\",[29333]],[[194854,194854],\"mapped\",[149301]],[[194855,194855],\"mapped\",[149524]],[[194856,194856],\"mapped\",[29562]],[[194857,194857],\"mapped\",[29579]],[[194858,194858],\"mapped\",[16044]],[[194859,194859],\"mapped\",[29605]],[[194860,194861],\"mapped\",[16056]],[[194862,194862],\"mapped\",[29767]],[[194863,194863],\"mapped\",[29788]],[[194864,194864],\"mapped\",[29809]],[[194865,194865],\"mapped\",[29829]],[[194866,194866],\"mapped\",[29898]],[[194867,194867],\"mapped\",[16155]],[[194868,194868],\"mapped\",[29988]],[[194869,194869],\"mapped\",[150582]],[[194870,194870],\"mapped\",[30014]],[[194871,194871],\"mapped\",[150674]],[[194872,194872],\"mapped\",[30064]],[[194873,194873],\"mapped\",[139679]],[[194874,194874],\"mapped\",[30224]],[[194875,194875],\"mapped\",[151457]],[[194876,194876],\"mapped\",[151480]],[[194877,194877],\"mapped\",[151620]],[[194878,194878],\"mapped\",[16380]],[[194879,194879],\"mapped\",[16392]],[[194880,194880],\"mapped\",[30452]],[[194881,194881],\"mapped\",[151795]],[[194882,194882],\"mapped\",[151794]],[[194883,194883],\"mapped\",[151833]],[[194884,194884],\"mapped\",[151859]],[[194885,194885],\"mapped\",[30494]],[[194886,194887],\"mapped\",[30495]],[[194888,194888],\"mapped\",[30538]],[[194889,194889],\"mapped\",[16441]],[[194890,194890],\"mapped\",[30603]],[[194891,194891],\"mapped\",[16454]],[[194892,194892],\"mapped\",[16534]],[[194893,194893],\"mapped\",[152605]],[[194894,194894],\"mapped\",[30798]],[[194895,194895],\"mapped\",[30860]],[[194896,194896],\"mapped\",[30924]],[[194897,194897],\"mapped\",[16611]],[[194898,194898],\"mapped\",[153126]],[[194899,194899],\"mapped\",[31062]],[[194900,194900],\"mapped\",[153242]],[[194901,194901],\"mapped\",[153285]],[[194902,194902],\"mapped\",[31119]],[[194903,194903],\"mapped\",[31211]],[[194904,194904],\"mapped\",[16687]],[[194905,194905],\"mapped\",[31296]],[[194906,194906],\"mapped\",[31306]],[[194907,194907],\"mapped\",[31311]],[[194908,194908],\"mapped\",[153980]],[[194909,194910],\"mapped\",[154279]],[[194911,194911],\"disallowed\"],[[194912,194912],\"mapped\",[16898]],[[194913,194913],\"mapped\",[154539]],[[194914,194914],\"mapped\",[31686]],[[194915,194915],\"mapped\",[31689]],[[194916,194916],\"mapped\",[16935]],[[194917,194917],\"mapped\",[154752]],[[194918,194918],\"mapped\",[31954]],[[194919,194919],\"mapped\",[17056]],[[194920,194920],\"mapped\",[31976]],[[194921,194921],\"mapped\",[31971]],[[194922,194922],\"mapped\",[32000]],[[194923,194923],\"mapped\",[155526]],[[194924,194924],\"mapped\",[32099]],[[194925,194925],\"mapped\",[17153]],[[194926,194926],\"mapped\",[32199]],[[194927,194927],\"mapped\",[32258]],[[194928,194928],\"mapped\",[32325]],[[194929,194929],\"mapped\",[17204]],[[194930,194930],\"mapped\",[156200]],[[194931,194931],\"mapped\",[156231]],[[194932,194932],\"mapped\",[17241]],[[194933,194933],\"mapped\",[156377]],[[194934,194934],\"mapped\",[32634]],[[194935,194935],\"mapped\",[156478]],[[194936,194936],\"mapped\",[32661]],[[194937,194937],\"mapped\",[32762]],[[194938,194938],\"mapped\",[32773]],[[194939,194939],\"mapped\",[156890]],[[194940,194940],\"mapped\",[156963]],[[194941,194941],\"mapped\",[32864]],[[194942,194942],\"mapped\",[157096]],[[194943,194943],\"mapped\",[32880]],[[194944,194944],\"mapped\",[144223]],[[194945,194945],\"mapped\",[17365]],[[194946,194946],\"mapped\",[32946]],[[194947,194947],\"mapped\",[33027]],[[194948,194948],\"mapped\",[17419]],[[194949,194949],\"mapped\",[33086]],[[194950,194950],\"mapped\",[23221]],[[194951,194951],\"mapped\",[157607]],[[194952,194952],\"mapped\",[157621]],[[194953,194953],\"mapped\",[144275]],[[194954,194954],\"mapped\",[144284]],[[194955,194955],\"mapped\",[33281]],[[194956,194956],\"mapped\",[33284]],[[194957,194957],\"mapped\",[36766]],[[194958,194958],\"mapped\",[17515]],[[194959,194959],\"mapped\",[33425]],[[194960,194960],\"mapped\",[33419]],[[194961,194961],\"mapped\",[33437]],[[194962,194962],\"mapped\",[21171]],[[194963,194963],\"mapped\",[33457]],[[194964,194964],\"mapped\",[33459]],[[194965,194965],\"mapped\",[33469]],[[194966,194966],\"mapped\",[33510]],[[194967,194967],\"mapped\",[158524]],[[194968,194968],\"mapped\",[33509]],[[194969,194969],\"mapped\",[33565]],[[194970,194970],\"mapped\",[33635]],[[194971,194971],\"mapped\",[33709]],[[194972,194972],\"mapped\",[33571]],[[194973,194973],\"mapped\",[33725]],[[194974,194974],\"mapped\",[33767]],[[194975,194975],\"mapped\",[33879]],[[194976,194976],\"mapped\",[33619]],[[194977,194977],\"mapped\",[33738]],[[194978,194978],\"mapped\",[33740]],[[194979,194979],\"mapped\",[33756]],[[194980,194980],\"mapped\",[158774]],[[194981,194981],\"mapped\",[159083]],[[194982,194982],\"mapped\",[158933]],[[194983,194983],\"mapped\",[17707]],[[194984,194984],\"mapped\",[34033]],[[194985,194985],\"mapped\",[34035]],[[194986,194986],\"mapped\",[34070]],[[194987,194987],\"mapped\",[160714]],[[194988,194988],\"mapped\",[34148]],[[194989,194989],\"mapped\",[159532]],[[194990,194990],\"mapped\",[17757]],[[194991,194991],\"mapped\",[17761]],[[194992,194992],\"mapped\",[159665]],[[194993,194993],\"mapped\",[159954]],[[194994,194994],\"mapped\",[17771]],[[194995,194995],\"mapped\",[34384]],[[194996,194996],\"mapped\",[34396]],[[194997,194997],\"mapped\",[34407]],[[194998,194998],\"mapped\",[34409]],[[194999,194999],\"mapped\",[34473]],[[195000,195000],\"mapped\",[34440]],[[195001,195001],\"mapped\",[34574]],[[195002,195002],\"mapped\",[34530]],[[195003,195003],\"mapped\",[34681]],[[195004,195004],\"mapped\",[34600]],[[195005,195005],\"mapped\",[34667]],[[195006,195006],\"mapped\",[34694]],[[195007,195007],\"disallowed\"],[[195008,195008],\"mapped\",[34785]],[[195009,195009],\"mapped\",[34817]],[[195010,195010],\"mapped\",[17913]],[[195011,195011],\"mapped\",[34912]],[[195012,195012],\"mapped\",[34915]],[[195013,195013],\"mapped\",[161383]],[[195014,195014],\"mapped\",[35031]],[[195015,195015],\"mapped\",[35038]],[[195016,195016],\"mapped\",[17973]],[[195017,195017],\"mapped\",[35066]],[[195018,195018],\"mapped\",[13499]],[[195019,195019],\"mapped\",[161966]],[[195020,195020],\"mapped\",[162150]],[[195021,195021],\"mapped\",[18110]],[[195022,195022],\"mapped\",[18119]],[[195023,195023],\"mapped\",[35488]],[[195024,195024],\"mapped\",[35565]],[[195025,195025],\"mapped\",[35722]],[[195026,195026],\"mapped\",[35925]],[[195027,195027],\"mapped\",[162984]],[[195028,195028],\"mapped\",[36011]],[[195029,195029],\"mapped\",[36033]],[[195030,195030],\"mapped\",[36123]],[[195031,195031],\"mapped\",[36215]],[[195032,195032],\"mapped\",[163631]],[[195033,195033],\"mapped\",[133124]],[[195034,195034],\"mapped\",[36299]],[[195035,195035],\"mapped\",[36284]],[[195036,195036],\"mapped\",[36336]],[[195037,195037],\"mapped\",[133342]],[[195038,195038],\"mapped\",[36564]],[[195039,195039],\"mapped\",[36664]],[[195040,195040],\"mapped\",[165330]],[[195041,195041],\"mapped\",[165357]],[[195042,195042],\"mapped\",[37012]],[[195043,195043],\"mapped\",[37105]],[[195044,195044],\"mapped\",[37137]],[[195045,195045],\"mapped\",[165678]],[[195046,195046],\"mapped\",[37147]],[[195047,195047],\"mapped\",[37432]],[[195048,195048],\"mapped\",[37591]],[[195049,195049],\"mapped\",[37592]],[[195050,195050],\"mapped\",[37500]],[[195051,195051],\"mapped\",[37881]],[[195052,195052],\"mapped\",[37909]],[[195053,195053],\"mapped\",[166906]],[[195054,195054],\"mapped\",[38283]],[[195055,195055],\"mapped\",[18837]],[[195056,195056],\"mapped\",[38327]],[[195057,195057],\"mapped\",[167287]],[[195058,195058],\"mapped\",[18918]],[[195059,195059],\"mapped\",[38595]],[[195060,195060],\"mapped\",[23986]],[[195061,195061],\"mapped\",[38691]],[[195062,195062],\"mapped\",[168261]],[[195063,195063],\"mapped\",[168474]],[[195064,195064],\"mapped\",[19054]],[[195065,195065],\"mapped\",[19062]],[[195066,195066],\"mapped\",[38880]],[[195067,195067],\"mapped\",[168970]],[[195068,195068],\"mapped\",[19122]],[[195069,195069],\"mapped\",[169110]],[[195070,195071],\"mapped\",[38923]],[[195072,195072],\"mapped\",[38953]],[[195073,195073],\"mapped\",[169398]],[[195074,195074],\"mapped\",[39138]],[[195075,195075],\"mapped\",[19251]],[[195076,195076],\"mapped\",[39209]],[[195077,195077],\"mapped\",[39335]],[[195078,195078],\"mapped\",[39362]],[[195079,195079],\"mapped\",[39422]],[[195080,195080],\"mapped\",[19406]],[[195081,195081],\"mapped\",[170800]],[[195082,195082],\"mapped\",[39698]],[[195083,195083],\"mapped\",[40000]],[[195084,195084],\"mapped\",[40189]],[[195085,195085],\"mapped\",[19662]],[[195086,195086],\"mapped\",[19693]],[[195087,195087],\"mapped\",[40295]],[[195088,195088],\"mapped\",[172238]],[[195089,195089],\"mapped\",[19704]],[[195090,195090],\"mapped\",[172293]],[[195091,195091],\"mapped\",[172558]],[[195092,195092],\"mapped\",[172689]],[[195093,195093],\"mapped\",[40635]],[[195094,195094],\"mapped\",[19798]],[[195095,195095],\"mapped\",[40697]],[[195096,195096],\"mapped\",[40702]],[[195097,195097],\"mapped\",[40709]],[[195098,195098],\"mapped\",[40719]],[[195099,195099],\"mapped\",[40726]],[[195100,195100],\"mapped\",[40763]],[[195101,195101],\"mapped\",[173568]],[[195102,196605],\"disallowed\"],[[196606,196607],\"disallowed\"],[[196608,262141],\"disallowed\"],[[262142,262143],\"disallowed\"],[[262144,327677],\"disallowed\"],[[327678,327679],\"disallowed\"],[[327680,393213],\"disallowed\"],[[393214,393215],\"disallowed\"],[[393216,458749],\"disallowed\"],[[458750,458751],\"disallowed\"],[[458752,524285],\"disallowed\"],[[524286,524287],\"disallowed\"],[[524288,589821],\"disallowed\"],[[589822,589823],\"disallowed\"],[[589824,655357],\"disallowed\"],[[655358,655359],\"disallowed\"],[[655360,720893],\"disallowed\"],[[720894,720895],\"disallowed\"],[[720896,786429],\"disallowed\"],[[786430,786431],\"disallowed\"],[[786432,851965],\"disallowed\"],[[851966,851967],\"disallowed\"],[[851968,917501],\"disallowed\"],[[917502,917503],\"disallowed\"],[[917504,917504],\"disallowed\"],[[917505,917505],\"disallowed\"],[[917506,917535],\"disallowed\"],[[917536,917631],\"disallowed\"],[[917632,917759],\"disallowed\"],[[917760,917999],\"ignored\"],[[918000,983037],\"disallowed\"],[[983038,983039],\"disallowed\"],[[983040,1048573],\"disallowed\"],[[1048574,1048575],\"disallowed\"],[[1048576,1114109],\"disallowed\"],[[1114110,1114111],\"disallowed\"]]");
 
-exports.getFullname = getFullname;
+/***/ }),
+/* 737 */
+/***/ (function(module, exports) {
 
-var makeDisplayName = function makeDisplayName(contact) {
-  var fullname = makeFullname(contact);
-  var primaryEmail = getPrimaryEmail(contact);
-  var primaryCozyDomain = getPrimaryCozyDomain(contact);
+module.exports = require("https");
 
-  if (fullname && fullname.length > 0) {
-    return fullname;
-  }
+/***/ }),
+/* 738 */
+/***/ (function(module, exports) {
 
-  if (primaryEmail && primaryEmail.length > 0) {
-    return primaryEmail;
-  }
+module.exports = require("zlib");
 
-  if (primaryCozyDomain && primaryCozyDomain.length > 0) {
-    return primaryCozyDomain;
-  }
+/***/ }),
+/* 739 */
+/***/ (function(module, exports) {
 
-  return '';
-};
-/**
- * Returns a display name for the contact
- *
- * @param {object} contact - A contact
- * @returns {string} - the contact's display name
- **/
+(function () {
+  "use strict";
 
+  function btoa(str) {
+    var buffer;
 
-exports.makeDisplayName = makeDisplayName;
+    if (str instanceof Buffer) {
+      buffer = str;
+    } else {
+      buffer = Buffer.from(str.toString(), 'binary');
+    }
 
-var getDisplayName = function getDisplayName(contact) {
-  if ((0, _get.default)(contact, 'displayName')) {
-    return contact.displayName;
+    return buffer.toString('base64');
   }
 
-  return makeDisplayName(contact);
-};
-/**
- * Makes 'byFamilyNameGivenNameEmailCozyUrl' index of a contact
- *
- * @param {object} contact - A contact
- * @returns {string} - the contact's 'byFamilyNameGivenNameEmailCozyUrl' index
- */
-
+  module.exports = btoa;
+}());
 
-exports.getDisplayName = getDisplayName;
 
-var makeDefaultSortIndexValue = function makeDefaultSortIndexValue(contact) {
-  var defaultSortIndexValue = [(0, _get.default)(contact, 'name.familyName', ''), (0, _get.default)(contact, 'name.givenName', ''), getPrimaryEmail(contact), getPrimaryCozyDomain(contact)].join('').trim().toLowerCase();
+/***/ }),
+/* 740 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  if (defaultSortIndexValue.length === 0) {
-    return null;
-  }
+"use strict";
 
-  return defaultSortIndexValue;
-};
-/**
- * Returns 'byFamilyNameGivenNameEmailCozyUrl' index of a contact
- *
- * @param {object} contact - A contact
- * @returns {string} - the contact's 'byFamilyNameGivenNameEmailCozyUrl' index
- */
 
+var _interopRequireWildcard = __webpack_require__(277);
 
-exports.makeDefaultSortIndexValue = makeDefaultSortIndexValue;
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.user = exports.paper = exports.dacc = exports.sharing = exports.timeseries = exports.document = exports.contact = exports.utils = exports.permission = exports.note = exports.account = exports.folder = exports.file = exports.applications = exports.instance = exports.trigger = exports.accounts = exports.triggers = void 0;
 
-var getDefaultSortIndexValue = function getDefaultSortIndexValue(contact) {
-  var defaultSortIndexValue = (0, _get.default)(contact, 'indexes.byFamilyNameGivenNameEmailCozyUrl', null);
+var trigger = _interopRequireWildcard(__webpack_require__(741));
 
-  if (defaultSortIndexValue !== null) {
-    return (0, _isEmpty.default)(defaultSortIndexValue) ? null : defaultSortIndexValue;
-  }
+exports.trigger = trigger;
 
-  return makeDefaultSortIndexValue(contact);
-};
-/**
- * Returns 'byFamilyNameGivenNameEmailCozyUrl' index of a contact
- *
- * @deprecated Prefer to use getDefaultSortIndexValue.
- * @param {object} contact - A contact
- * @returns {string} - the contact's 'byFamilyNameGivenNameEmailCozyUrl' index
- */
+var instance = _interopRequireWildcard(__webpack_require__(743));
 
+exports.instance = instance;
 
-exports.getDefaultSortIndexValue = getDefaultSortIndexValue;
+var applications = _interopRequireWildcard(__webpack_require__(744));
 
-var getIndexByFamilyNameGivenNameEmailCozyUrl = function getIndexByFamilyNameGivenNameEmailCozyUrl(contact) {
-  _logger.default.warn('Deprecation: `getIndexByFamilyNameGivenNameEmailCozyUrl` is deprecated, please use `getDefaultSortIndexValue` instead');
+exports.applications = applications;
 
-  return getDefaultSortIndexValue(contact);
-};
-/**
- * Whether the document is a contact
- *
- * @param {object} doc - A document (from io.cozy.something, or com.bitwarden or anything else)
- * @returns {boolean}
- */
+var file = _interopRequireWildcard(__webpack_require__(745));
 
+exports.file = file;
 
-exports.getIndexByFamilyNameGivenNameEmailCozyUrl = getIndexByFamilyNameGivenNameEmailCozyUrl;
+var folder = _interopRequireWildcard(__webpack_require__(750));
 
-var isContact = function isContact(doc) {
-  return doc._type === CONTACTS_DOCTYPE;
-};
+exports.folder = folder;
 
-exports.isContact = isContact;
+var account = _interopRequireWildcard(__webpack_require__(742));
 
-/***/ }),
-/* 756 */
-/***/ (function(module, exports, __webpack_require__) {
+exports.account = account;
 
-var baseKeys = __webpack_require__(333),
-    getTag = __webpack_require__(390),
-    isArguments = __webpack_require__(321),
-    isArray = __webpack_require__(324),
-    isArrayLike = __webpack_require__(337),
-    isBuffer = __webpack_require__(325),
-    isPrototype = __webpack_require__(334),
-    isTypedArray = __webpack_require__(328);
+var note = _interopRequireWildcard(__webpack_require__(752));
 
-/** `Object#toString` result references. */
-var mapTag = '[object Map]',
-    setTag = '[object Set]';
+exports.note = note;
 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+var permission = _interopRequireWildcard(__webpack_require__(753));
 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
+exports.permission = permission;
 
-/**
- * Checks if `value` is an empty object, collection, map, or set.
- *
- * Objects are considered empty if they have no own enumerable string keyed
- * properties.
- *
- * Array-like values such as `arguments` objects, arrays, buffers, strings, or
- * jQuery-like collections are considered empty if they have a `length` of `0`.
- * Similarly, maps and sets are considered empty if they have a `size` of `0`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is empty, else `false`.
- * @example
- *
- * _.isEmpty(null);
- * // => true
- *
- * _.isEmpty(true);
- * // => true
- *
- * _.isEmpty(1);
- * // => true
- *
- * _.isEmpty([1, 2, 3]);
- * // => false
- *
- * _.isEmpty({ 'a': 1 });
- * // => false
- */
-function isEmpty(value) {
-  if (value == null) {
-    return true;
-  }
-  if (isArrayLike(value) &&
-      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
-        isBuffer(value) || isTypedArray(value) || isArguments(value))) {
-    return !value.length;
-  }
-  var tag = getTag(value);
-  if (tag == mapTag || tag == setTag) {
-    return !value.size;
-  }
-  if (isPrototype(value)) {
-    return !baseKeys(value).length;
-  }
-  for (var key in value) {
-    if (hasOwnProperty.call(value, key)) {
-      return false;
-    }
-  }
-  return true;
-}
+var utils = _interopRequireWildcard(__webpack_require__(754));
 
-module.exports = isEmpty;
+exports.utils = utils;
 
+var contact = _interopRequireWildcard(__webpack_require__(755));
 
-/***/ }),
-/* 757 */
-/***/ (function(module, exports, __webpack_require__) {
+exports.contact = contact;
 
-"use strict";
+var document = _interopRequireWildcard(__webpack_require__(757));
 
+exports.document = document;
 
-var _interopRequireWildcard = __webpack_require__(277);
+var timeseries = _interopRequireWildcard(__webpack_require__(821));
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-Object.defineProperty(exports, "Qualification", {
-  enumerable: true,
-  get: function get() {
-    return _qualification.Qualification;
-  }
-});
-Object.defineProperty(exports, "setQualification", {
-  enumerable: true,
-  get: function get() {
-    return _qualification.setQualification;
-  }
-});
-Object.defineProperty(exports, "getQualification", {
-  enumerable: true,
-  get: function get() {
-    return _qualification.getQualification;
-  }
-});
-exports.helpers = exports.themes = exports.locales = void 0;
+exports.timeseries = timeseries;
 
-var _qualification = __webpack_require__(748);
+var sharing = _interopRequireWildcard(__webpack_require__(822));
 
-var locales = _interopRequireWildcard(__webpack_require__(758));
+exports.sharing = sharing;
 
-exports.locales = locales;
+var dacc = _interopRequireWildcard(__webpack_require__(823));
 
-var themes = _interopRequireWildcard(__webpack_require__(819));
+exports.dacc = dacc;
 
-exports.themes = themes;
+var paper = _interopRequireWildcard(__webpack_require__(824));
 
-var helpers = _interopRequireWildcard(__webpack_require__(820));
+exports.paper = paper;
 
-exports.helpers = helpers;
+var user = _interopRequireWildcard(__webpack_require__(834));
+
+exports.user = user;
+// For backward compatibility before 9.0.0
+var triggers = trigger;
+exports.triggers = triggers;
+var accounts = account;
+exports.accounts = accounts;
 
 /***/ }),
-/* 758 */
+/* 741 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -119466,2890 +107930,3052 @@ var _interopRequireDefault = __webpack_require__(1);
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.getBoundT = void 0;
+exports.triggers = exports.triggerStates = void 0;
 
 var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-var _nodePolyglot = _interopRequireDefault(__webpack_require__(759));
+var _account = __webpack_require__(742);
 
-var _emojiCountry = __webpack_require__(815);
+var _logger = _interopRequireDefault(__webpack_require__(498));
 
 function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
 function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-var polyglots = {};
-var langs = ['fr', 'en'];
+var actionableErrors = ['CHALLENGE_ASKED', 'DISK_QUOTA_EXCEEDED', 'TERMS_VERSION_MISMATCH', 'USER_ACTION_NEEDED', 'USER_ACTION_NEEDED.CHANGE_PASSWORD', 'USER_ACTION_NEEDED.ACCOUNT_REMOVED', 'USER_ACTION_NEEDED.WEBAUTH_REQUIRED', 'USER_ACTION_NEEDED.SCA_REQUIRED', 'LOGIN_FAILED'];
+/** Trigger states come from /jobs/triggers */
 
-for (var _i = 0, _langs = langs; _i < _langs.length; _i++) {
-  var lang = _langs[_i];
-  var locales = {};
+var triggerStates = {
+  /**
+   * Returns when the trigger was last executed
+   *
+   * @param {import('../types').IOCozyTrigger} trigger - trigger object
+   * @returns {String} last execution date of any job related to the given trigger
+   */
+  getLastExecution: function getLastExecution(trigger) {
+    var _trigger$current_stat;
 
-  try {
-    locales = __webpack_require__(816)("./".concat(lang, ".json"));
-  } catch (e) {// eslint-disable-line no-empty-block
-  }
+    return trigger === null || trigger === void 0 ? void 0 : (_trigger$current_stat = trigger.current_state) === null || _trigger$current_stat === void 0 ? void 0 : _trigger$current_stat.last_execution;
+  },
 
-  var polyglot = new _nodePolyglot.default();
-  polyglot.extend(locales);
-  polyglots[lang] = polyglot;
-}
-/**
- * @param {string} lang - fr, en, etc
- * @returns {(label: string, opts?: {country?: string, smart_count?: number}) => string}
- */
+  /**
+   * Returns when the trigger was last executed with success
+   *
+   * @param {import('../types').IOCozyTrigger} trigger - trigger object
+   * @returns {String} last execution date of any job related to the given trigger and with success
+   */
+  getLastSuccess: function getLastSuccess(trigger) {
+    var _trigger$current_stat2;
 
+    return trigger === null || trigger === void 0 ? void 0 : (_trigger$current_stat2 = trigger.current_state) === null || _trigger$current_stat2 === void 0 ? void 0 : _trigger$current_stat2.last_success;
+  },
 
-var getBoundT = function getBoundT(lang) {
-  var polyglot = polyglots[lang] || polyglots['en'];
-  var t = polyglot.t.bind(polyglot);
-  return function (label) {
-    var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  /**
+   * Returns when the trigger was last executed with success
+   *
+   * @param {import('../types').IOCozyTrigger} trigger - trigger object
+   * @returns {String} last execution date of any job related to the given trigger and with success
+   */
+  getLastsuccess: function getLastsuccess(trigger) {
+    var _trigger$current_stat3;
 
-    var newOpts = _objectSpread(_objectSpread({}, opts), {}, {
-      smart_count: (opts === null || opts === void 0 ? void 0 : opts.smart_count) || 1
-    });
+    _logger.default.warn('Deprecated, please use getLastSuccess instead of getLastsuccess');
 
-    var emojiCountry = (0, _emojiCountry.getEmojiByCountry)(opts === null || opts === void 0 ? void 0 : opts.country, t);
-    return emojiCountry ? "".concat(t(label, newOpts), " ").concat(emojiCountry) : t(label, newOpts);
-  };
-};
+    return trigger === null || trigger === void 0 ? void 0 : (_trigger$current_stat3 = trigger.current_state) === null || _trigger$current_stat3 === void 0 ? void 0 : _trigger$current_stat3.last_success;
+  },
 
-exports.getBoundT = getBoundT;
+  /**
+   * Returns whether last job failed
+   *
+   * @param {import('../types').IOCozyTrigger} trigger - trigger object
+   * @returns {Boolean}
+   */
+  isErrored: function isErrored(trigger) {
+    var _trigger$current_stat4;
 
-/***/ }),
-/* 759 */
-/***/ (function(module, exports, __webpack_require__) {
+    return (trigger === null || trigger === void 0 ? void 0 : (_trigger$current_stat4 = trigger.current_state) === null || _trigger$current_stat4 === void 0 ? void 0 : _trigger$current_stat4.status) === 'errored';
+  },
 
-"use strict";
-//     (c) 2012-2018 Airbnb, Inc.
-//
-//     polyglot.js may be freely distributed under the terms of the BSD
-//     license. For all licensing information, details, and documentation:
-//     http://airbnb.github.com/polyglot.js
-//
-//
-// Polyglot.js is an I18n helper library written in JavaScript, made to
-// work both in the browser and in Node. It provides a simple solution for
-// interpolation and pluralization, based off of Airbnb's
-// experience adding I18n functionality to its Backbone.js and Node apps.
-//
-// Polylglot is agnostic to your translation backend. It doesn't perform any
-// translation; it simply gives you a way to manage translated phrases from
-// your client- or server-side JavaScript application.
-//
+  /**
+   * Returns the type of the last error to occur
+   *
+   * @param {import('../types').IOCozyTrigger} trigger - trigger object
+   * @returns {String}
+   */
+  getLastErrorType: function getLastErrorType(trigger) {
+    var _trigger$current_stat5;
 
+    return trigger === null || trigger === void 0 ? void 0 : (_trigger$current_stat5 = trigger.current_state) === null || _trigger$current_stat5 === void 0 ? void 0 : _trigger$current_stat5.last_error;
+  }
+};
+exports.triggerStates = triggerStates;
+var DEFAULT_CRON = '0 0 0 * * 0'; // Once a week, sunday at midnight
 
+var triggers = {
+  /**
+   * Returns whether the given trigger is associated to a konnector or not
+   *
+   * @param {import('../types').IOCozyTrigger} trigger - trigger object
+   * @returns {Boolean}
+   */
+  isKonnectorWorker: function isKonnectorWorker(trigger) {
+    return trigger.worker === 'konnector';
+  },
 
-var forEach = __webpack_require__(760);
-var entries = __webpack_require__(805);
-var warning = __webpack_require__(809);
-var has = __webpack_require__(810);
-var trim = __webpack_require__(811);
+  /**
+   * Returns the konnector slug that executed a trigger
+   *
+   * @param {import('../types').IOCozyTrigger} trigger - io.cozy.triggers
+   *
+   * @returns {string|void} A konnector slug
+   */
+  getKonnector: function getKonnector(trigger) {
+    if (!triggers.isKonnectorWorker(trigger)) {
+      return null;
+    }
 
-var warn = function warn(message) {
-  warning(false, message);
-};
+    if (trigger.message && trigger.message.konnector) {
+      return trigger.message.konnector;
+    } else if (trigger.message && trigger.message.Data) {
+      // Legacy triggers
+      var message = JSON.parse(atob(trigger.message.Data));
+      return message.konnector;
+    }
+  },
 
-var replace = String.prototype.replace;
-var split = String.prototype.split;
+  /**
+   * getAccountId - Returns the account id for a trigger
+   *
+   * @param {import('../types').IOCozyTrigger} trigger io.cozy.triggers
+   *
+   * @returns {String} Id for an io.cozy.accounts
+   */
+  getAccountId: function getAccountId(trigger) {
+    var _trigger$message;
 
-// #### Pluralization methods
-// The string that separates the different phrase possibilities.
-var delimiter = '||||';
+    var legacyData = trigger === null || trigger === void 0 ? void 0 : (_trigger$message = trigger.message) === null || _trigger$message === void 0 ? void 0 : _trigger$message.Data;
 
-var russianPluralGroups = function (n) {
-  var lastTwo = n % 100;
-  var end = lastTwo % 10;
-  if (lastTwo !== 11 && end === 1) {
-    return 0;
-  }
-  if (2 <= end && end <= 4 && !(lastTwo >= 12 && lastTwo <= 14)) {
-    return 1;
-  }
-  return 2;
-};
+    if (legacyData) {
+      var message = JSON.parse(atob(legacyData));
+      return message.account;
+    } else {
+      var _trigger$message2;
 
-var defaultPluralRules = {
-  // Mapping from pluralization group plural logic.
-  pluralTypes: {
-    arabic: function (n) {
-      // http://www.arabeyes.org/Plural_Forms
-      if (n < 3) { return n; }
-      var lastTwo = n % 100;
-      if (lastTwo >= 3 && lastTwo <= 10) return 3;
-      return lastTwo >= 11 ? 4 : 5;
-    },
-    bosnian_serbian: russianPluralGroups,
-    chinese: function () { return 0; },
-    croatian: russianPluralGroups,
-    french: function (n) { return n >= 2 ? 1 : 0; },
-    german: function (n) { return n !== 1 ? 1 : 0; },
-    russian: russianPluralGroups,
-    lithuanian: function (n) {
-      if (n % 10 === 1 && n % 100 !== 11) { return 0; }
-      return n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19) ? 1 : 2;
-    },
-    czech: function (n) {
-      if (n === 1) { return 0; }
-      return (n >= 2 && n <= 4) ? 1 : 2;
-    },
-    polish: function (n) {
-      if (n === 1) { return 0; }
-      var end = n % 10;
-      return 2 <= end && end <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;
-    },
-    icelandic: function (n) { return (n % 10 !== 1 || n % 100 === 11) ? 1 : 0; },
-    slovenian: function (n) {
-      var lastTwo = n % 100;
-      if (lastTwo === 1) {
-        return 0;
-      }
-      if (lastTwo === 2) {
-        return 1;
-      }
-      if (lastTwo === 3 || lastTwo === 4) {
-        return 2;
-      }
-      return 3;
+      return trigger === null || trigger === void 0 ? void 0 : (_trigger$message2 = trigger.message) === null || _trigger$message2 === void 0 ? void 0 : _trigger$message2.account;
     }
   },
 
-  // Mapping from pluralization group to individual language codes/locales.
-  // Will look up based on exact match, if not found and it's a locale will parse the locale
-  // for language code, and if that does not exist will default to 'en'
-  pluralTypeToLanguages: {
-    arabic: ['ar'],
-    bosnian_serbian: ['bs-Latn-BA', 'bs-Cyrl-BA', 'srl-RS', 'sr-RS'],
-    chinese: ['id', 'id-ID', 'ja', 'ko', 'ko-KR', 'lo', 'ms', 'th', 'th-TH', 'zh'],
-    croatian: ['hr', 'hr-HR'],
-    german: ['fa', 'da', 'de', 'en', 'es', 'fi', 'el', 'he', 'hi-IN', 'hu', 'hu-HU', 'it', 'nl', 'no', 'pt', 'sv', 'tr'],
-    french: ['fr', 'tl', 'pt-br'],
-    russian: ['ru', 'ru-RU'],
-    lithuanian: ['lt'],
-    czech: ['cs', 'cs-CZ', 'sk'],
-    polish: ['pl'],
-    icelandic: ['is'],
-    slovenian: ['sl-SL']
-  }
-};
-
-function langToTypeMap(mapping) {
-  var ret = {};
-  forEach(entries(mapping), function (entry) {
-    var type = entry[0];
-    var langs = entry[1];
-    forEach(langs, function (lang) {
-      ret[lang] = type;
+  /**
+   * Checks if the triggers current error has been muted in the corresponding io.cozy.accounts
+   *
+   * @param {import('../types').IOCozyTrigger} trigger      io.cozy.triggers
+   * @param {import('../types').IOCozyAccount} account      io.cozy.accounts used by the trigger
+   *
+   * @returns {Boolean} Whether the error is muted or not
+   */
+  isLatestErrorMuted: function isLatestErrorMuted(trigger, account) {
+    var lastErrorType = triggerStates.getLastErrorType(trigger);
+    var lastSuccess = triggerStates.getLastSuccess(trigger);
+    var lastSuccessDate = lastSuccess ? new Date(lastSuccess) : new Date();
+    var mutedErrors = (0, _account.getMutedErrors)(account);
+    var isErrorMuted = mutedErrors.some(function (mutedError) {
+      return mutedError.type === lastErrorType && (!lastSuccess || new Date(mutedError.mutedAt) > lastSuccessDate);
     });
-  });
-  return ret;
-}
+    return isErrorMuted;
+  },
+
+  /**
+   * Returns whether the error in trigger can be solved by the user
+   *
+   * @param {import('../types').IOCozyTrigger} trigger      io.cozy.triggers
+   *
+   * @returns {Boolean} Whether the error is muted or not
+   */
+  hasActionableError: function hasActionableError(trigger) {
+    var _trigger$current_stat6;
+
+    return actionableErrors.includes(trigger === null || trigger === void 0 ? void 0 : (_trigger$current_stat6 = trigger.current_state) === null || _trigger$current_stat6 === void 0 ? void 0 : _trigger$current_stat6.last_error);
+  },
+
+  /**
+   * Build trigger attributes given konnector and account
+   *
+   * @param  {Object} options - options object
+   * @param  {import('../types').IOCozyKonnector} options.konnector - konnector object
+   * @param  {import('../types').IOCozyAccount} options.account - account object
+   * @param  {String} [options.cron] - cron string. Defaults to '0 0 0 * * 0'
+   * @param  {object} [options.folder] - folder object
+   * @returns {import('../types').IOCozyTrigger} created trigger
+   */
+  buildTriggerAttributes: function buildTriggerAttributes(_ref) {
+    var account = _ref.account,
+        _ref$cron = _ref.cron,
+        cron = _ref$cron === void 0 ? DEFAULT_CRON : _ref$cron,
+        folder = _ref.folder,
+        konnector = _ref.konnector;
+    var message = {
+      account: account._id,
+      konnector: konnector.slug
+    };
+
+    if (folder) {
+      message['folder_to_save'] = folder._id;
+    }
+
+    var result = {
+      worker: 'konnector',
+      message: message
+    };
+    var options = konnector.clientSide ? {
+      type: '@client'
+    } : {
+      type: '@cron',
+      arguments: cron
+    };
+    return _objectSpread(_objectSpread({}, result), options);
+  }
+};
+exports.triggers = triggers;
 
-function pluralTypeName(pluralRules, locale) {
-  var langToPluralType = langToTypeMap(pluralRules.pluralTypeToLanguages);
-  return langToPluralType[locale]
-    || langToPluralType[split.call(locale, /-/, 1)[0]]
-    || langToPluralType.en;
-}
+/***/ }),
+/* 742 */
+/***/ (function(module, exports, __webpack_require__) {
 
-function pluralTypeIndex(pluralRules, pluralType, count) {
-  return pluralRules.pluralTypes[pluralType](count);
-}
+"use strict";
 
-function createMemoizedPluralTypeNameSelector() {
-  var localePluralTypeStorage = {};
 
-  return function (pluralRules, locale) {
-    var pluralType = localePluralTypeStorage[locale];
+var _interopRequireDefault = __webpack_require__(1);
 
-    if (pluralType && !pluralRules.pluralTypes[pluralType]) {
-      pluralType = null;
-      localePluralTypeStorage[locale] = pluralType;
-    }
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.isAccountWithTrigger = exports.buildAccount = exports.getAccountName = exports.getAccountLogin = exports.setContractSyncStatusInAccount = exports.getContractSyncStatusFromAccount = exports.muteError = exports.getMutedErrors = void 0;
 
-    if (!pluralType) {
-      pluralType = pluralTypeName(pluralRules, locale);
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-      if (pluralType) {
-        localePluralTypeStorage[locale] = pluralType;
-      }
-    }
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-    return pluralType;
-  };
-}
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-function escape(token) {
-  return token.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
-}
+var _merge = _interopRequireDefault(__webpack_require__(532));
 
-function constructTokenRegex(opts) {
-  var prefix = (opts && opts.prefix) || '%{';
-  var suffix = (opts && opts.suffix) || '}';
+var _dsl = __webpack_require__(495);
 
-  if (prefix === delimiter || suffix === delimiter) {
-    throw new RangeError('"' + delimiter + '" token is reserved for pluralization');
-  }
+var _HasMany = __webpack_require__(656);
 
-  return new RegExp(escape(prefix) + '(.*?)' + escape(suffix), 'g');
-}
+var _manifest = __webpack_require__(715);
 
-var memoizedPluralTypeName = createMemoizedPluralTypeNameSelector();
+function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
 
-var defaultTokenRegex = /%\{(.*?)\}/g;
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
 
-// ### transformPhrase(phrase, substitutions, locale)
-//
-// Takes a phrase string and transforms it by choosing the correct
-// plural form and interpolating it.
-//
-//     transformPhrase('Hello, %{name}!', {name: 'Spike'});
-//     // "Hello, Spike!"
-//
-// The correct plural form is selected if substitutions.smart_count
-// is set. You can pass in a number instead of an Object as `substitutions`
-// as a shortcut for `smart_count`.
-//
-//     transformPhrase('%{smart_count} new messages |||| 1 new message', {smart_count: 1}, 'en');
-//     // "1 new message"
-//
-//     transformPhrase('%{smart_count} new messages |||| 1 new message', {smart_count: 2}, 'en');
-//     // "2 new messages"
-//
-//     transformPhrase('%{smart_count} new messages |||| 1 new message', 5, 'en');
-//     // "5 new messages"
-//
-// You should pass in a third argument, the locale, to specify the correct plural type.
-// It defaults to `'en'` with 2 plural forms.
-function transformPhrase(phrase, substitutions, locale, tokenRegex, pluralRules) {
-  if (typeof phrase !== 'string') {
-    throw new TypeError('Polyglot.transformPhrase expects argument #1 to be string');
-  }
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
 
-  if (substitutions == null) {
-    return phrase;
-  }
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-  var result = phrase;
-  var interpolationRegex = tokenRegex || defaultTokenRegex;
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-  // allow number as a pluralization shortcut
-  var options = typeof substitutions === 'number' ? { smart_count: substitutions } : substitutions;
+/**
+ * getMutedErrors - Returns the list of errors that have been muted for the given account
+ *
+ * @param {import('../types').IOCozyAccount} account io.cozy.accounts
+ *
+ * @returns {Array} An array of errors with a `type` and `mutedAt` field
+ */
+var getMutedErrors = function getMutedErrors(account) {
+  return (account === null || account === void 0 ? void 0 : account.mutedErrors) || [];
+};
+/**
+ * muteError - Adds an error to the list of muted errors for the given account
+ *
+ * @param {import('../types').IOCozyAccount} account   io.cozy.accounts
+ * @param {string} errorType The type of the error to mute
+ *
+ * @returns {import('../types').IOCozyAccount} An updated io.cozy.accounts
+ */
 
-  // Select plural form: based on a phrase text that contains `n`
-  // plural forms separated by `delimiter`, a `locale`, and a `substitutions.smart_count`,
-  // choose the correct plural form. This is only done if `count` is set.
-  if (options.smart_count != null && phrase) {
-    var pluralRulesOrDefault = pluralRules || defaultPluralRules;
-    var texts = split.call(phrase, delimiter);
-    var bestLocale = locale || 'en';
-    var pluralType = memoizedPluralTypeName(pluralRulesOrDefault, bestLocale);
-    var pluralTypeWithCount = pluralTypeIndex(
-      pluralRulesOrDefault,
-      pluralType,
-      options.smart_count
-    );
 
-    result = trim(texts[pluralTypeWithCount] || texts[0]);
-  }
+exports.getMutedErrors = getMutedErrors;
 
-  // Interpolate: Creates a `RegExp` object for each interpolation placeholder.
-  result = replace.call(result, interpolationRegex, function (expression, argument) {
-    if (!has(options, argument) || options[argument] == null) { return expression; }
-    return options[argument];
+var muteError = function muteError(account, errorType) {
+  var mutedErrors = getMutedErrors(account);
+  mutedErrors.push({
+    type: errorType,
+    mutedAt: new Date().toISOString()
+  });
+  return _objectSpread(_objectSpread({}, account), {}, {
+    mutedErrors: mutedErrors
   });
+};
 
-  return result;
-}
+exports.muteError = muteError;
+var DEFAULT_CONTRACT_SYNC_STATUS = true;
+/**
+ * Returns whether a contract is synced from account relationship
+ *
+ * @param  {import('../types').IOCozyAccount} account - Cozy account
+ * @param  {String} contractId - contract identifier
+ * @returns  {Boolean} synchronisation status
+ */
 
-// ### Polyglot class constructor
-function Polyglot(options) {
-  var opts = options || {};
-  this.phrases = {};
-  this.extend(opts.phrases || {});
-  this.currentLocale = opts.locale || 'en';
-  var allowMissing = opts.allowMissing ? transformPhrase : null;
-  this.onMissingKey = typeof opts.onMissingKey === 'function' ? opts.onMissingKey : allowMissing;
-  this.warn = opts.warn || warn;
-  this.tokenRegex = constructTokenRegex(opts.interpolation);
-  this.pluralRules = opts.pluralRules || defaultPluralRules;
-}
+var getContractSyncStatusFromAccount = function getContractSyncStatusFromAccount(account, contractId) {
+  var _relItem$metadata$imp, _relItem$metadata;
 
-// ### polyglot.locale([locale])
-//
-// Get or set locale. Internally, Polyglot only uses locale for pluralization.
-Polyglot.prototype.locale = function (newLocale) {
-  if (newLocale) this.currentLocale = newLocale;
-  return this.currentLocale;
+  var relItem = (0, _HasMany.getHasManyItem)(account, 'contracts', contractId);
+
+  if (!relItem) {
+    throw new Error("Cannot find contrat ".concat(contractId, " in account"));
+  }
+
+  return (_relItem$metadata$imp = relItem === null || relItem === void 0 ? void 0 : (_relItem$metadata = relItem.metadata) === null || _relItem$metadata === void 0 ? void 0 : _relItem$metadata.imported) !== null && _relItem$metadata$imp !== void 0 ? _relItem$metadata$imp : DEFAULT_CONTRACT_SYNC_STATUS;
 };
+/**
+ * Sets contract sync status into account relationship
+ *
+ * @param  {import('../types').IOCozyAccount} account - Cozy account
+ * @param  {String} contractId - contract identifier
+ * @param  {String} syncStatus - synchronisation status
+ * @returns {import('../types').IOCozyAccount}
+ */
 
-// ### polyglot.extend(phrases)
-//
-// Use `extend` to tell Polyglot how to translate a given key.
-//
-//     polyglot.extend({
-//       "hello": "Hello",
-//       "hello_name": "Hello, %{name}"
-//     });
-//
-// The key can be any string.  Feel free to call `extend` multiple times;
-// it will override any phrases with the same key, but leave existing phrases
-// untouched.
-//
-// It is also possible to pass nested phrase objects, which get flattened
-// into an object with the nested keys concatenated using dot notation.
-//
-//     polyglot.extend({
-//       "nav": {
-//         "hello": "Hello",
-//         "hello_name": "Hello, %{name}",
-//         "sidebar": {
-//           "welcome": "Welcome"
-//         }
-//       }
-//     });
-//
-//     console.log(polyglot.phrases);
-//     // {
-//     //   'nav.hello': 'Hello',
-//     //   'nav.hello_name': 'Hello, %{name}',
-//     //   'nav.sidebar.welcome': 'Welcome'
-//     // }
-//
-// `extend` accepts an optional second argument, `prefix`, which can be used
-// to prefix every key in the phrases object with some string, using dot
-// notation.
-//
-//     polyglot.extend({
-//       "hello": "Hello",
-//       "hello_name": "Hello, %{name}"
-//     }, "nav");
-//
-//     console.log(polyglot.phrases);
-//     // {
-//     //   'nav.hello': 'Hello',
-//     //   'nav.hello_name': 'Hello, %{name}'
-//     // }
-//
-// This feature is used internally to support nested phrase objects.
-Polyglot.prototype.extend = function (morePhrases, prefix) {
-  forEach(entries(morePhrases || {}), function (entry) {
-    var key = entry[0];
-    var phrase = entry[1];
-    var prefixedKey = prefix ? prefix + '.' + key : key;
-    if (typeof phrase === 'object') {
-      this.extend(phrase, prefixedKey);
-    } else {
-      this.phrases[prefixedKey] = phrase;
+
+exports.getContractSyncStatusFromAccount = getContractSyncStatusFromAccount;
+
+var setContractSyncStatusInAccount = function setContractSyncStatusInAccount(account, contractId, syncStatus) {
+  return (0, _HasMany.updateHasManyItem)(account, 'contracts', contractId, function (contractRel) {
+    if (contractRel === undefined) {
+      throw new Error("Cannot find contrat ".concat(contractId, " in account"));
     }
-  }, this);
+
+    return (0, _merge.default)({}, contractRel, {
+      metadata: {
+        imported: syncStatus
+      }
+    });
+  });
 };
+/**
+ * Get the account login field value from a given account
+ *
+ * @param {import('../types').IOCozyAccount} account - the given cozy account
+ * @returns {String|null} - Account login
+ */
 
-// ### polyglot.unset(phrases)
-// Use `unset` to selectively remove keys from a polyglot instance.
-//
-//     polyglot.unset("some_key");
-//     polyglot.unset({
-//       "hello": "Hello",
-//       "hello_name": "Hello, %{name}"
-//     });
-//
-// The unset method can take either a string (for the key), or an object hash with
-// the keys that you would like to unset.
-Polyglot.prototype.unset = function (morePhrases, prefix) {
-  if (typeof morePhrases === 'string') {
-    delete this.phrases[morePhrases];
-  } else {
-    forEach(entries(morePhrases || {}), function (entry) {
-      var key = entry[0];
-      var phrase = entry[1];
-      var prefixedKey = prefix ? prefix + '.' + key : key;
-      if (typeof phrase === 'object') {
-        this.unset(phrase, prefixedKey);
-      } else {
-        delete this.phrases[prefixedKey];
+
+exports.setContractSyncStatusInAccount = setContractSyncStatusInAccount;
+
+var getAccountLogin = function getAccountLogin(account) {
+  if (account && account.auth) {
+    var _iterator = _createForOfIteratorHelper(_manifest.legacyLoginFields),
+        _step;
+
+    try {
+      for (_iterator.s(); !(_step = _iterator.n()).done;) {
+        var fieldName = _step.value;
+        if (account.auth[fieldName]) return account.auth[fieldName];
       }
-    }, this);
+    } catch (err) {
+      _iterator.e(err);
+    } finally {
+      _iterator.f();
+    }
   }
-};
 
-// ### polyglot.clear()
-//
-// Clears all phrases. Useful for special cases, such as freeing
-// up memory if you have lots of phrases but no longer need to
-// perform any translation. Also used internally by `replace`.
-Polyglot.prototype.clear = function () {
-  this.phrases = {};
+  return null;
 };
+/**
+ * Get the account name from a given account
+ *
+ * @param {import('../types').IOCozyAccount} account - the given cozy account
+ * @returns {String|null} - Account name
+ */
 
-// ### polyglot.replace(phrases)
-//
-// Completely replace the existing phrases with a new set of phrases.
-// Normally, just use `extend` to add more phrases, but under certain
-// circumstances, you may want to make sure no old phrases are lying around.
-Polyglot.prototype.replace = function (newPhrases) {
-  this.clear();
-  this.extend(newPhrases);
-};
 
-// ### polyglot.t(key, options)
-//
-// The most-used method. Provide a key, and `t` will return the
-// phrase.
-//
-//     polyglot.t("hello");
-//     => "Hello"
-//
-// The phrase value is provided first by a call to `polyglot.extend()` or
-// `polyglot.replace()`.
-//
-// Pass in an object as the second argument to perform interpolation.
-//
-//     polyglot.t("hello_name", {name: "Spike"});
-//     => "Hello, Spike"
-//
-// If you like, you can provide a default value in case the phrase is missing.
-// Use the special option key "_" to specify a default.
-//
-//     polyglot.t("i_like_to_write_in_language", {
-//       _: "I like to write in %{language}.",
-//       language: "JavaScript"
-//     });
-//     => "I like to write in JavaScript."
-//
-Polyglot.prototype.t = function (key, options) {
-  var phrase, result;
-  var opts = options == null ? {} : options;
-  if (typeof this.phrases[key] === 'string') {
-    phrase = this.phrases[key];
-  } else if (typeof opts._ === 'string') {
-    phrase = opts._;
-  } else if (this.onMissingKey) {
-    var onMissingKey = this.onMissingKey;
-    result = onMissingKey(key, opts, this.currentLocale, this.tokenRegex, this.pluralRules);
+exports.getAccountLogin = getAccountLogin;
+
+var getAccountName = function getAccountName(account) {
+  if (!account) return null;
+
+  if (account.auth) {
+    return account.auth.accountName || getAccountLogin(account) || account._id;
   } else {
-    this.warn('Missing translation for key: "' + key + '"');
-    result = key;
-  }
-  if (typeof phrase === 'string') {
-    result = transformPhrase(phrase, opts, this.currentLocale, this.tokenRegex, this.pluralRules);
+    return account._id;
   }
-  return result;
 };
+/**
+ * Transforms account auth data to io.cozy.accounts document
+ *
+ * @param  {import('../types').IOCozyKonnector} konnector Konnector related to account
+ * @param  {object} authData  Authentication data
+ * @returns {import('../types').IOCozyAccount}          io.cozy.accounts attributes
+ */
 
-// ### polyglot.has(key)
-//
-// Check if polyglot has a translation for given key
-Polyglot.prototype.has = function (key) {
-  return has(this.phrases, key);
-};
 
-// export transformPhrase
-Polyglot.transformPhrase = function transform(phrase, substitutions, locale) {
-  return transformPhrase(phrase, substitutions, locale);
+exports.getAccountName = getAccountName;
+
+var buildAccount = function buildAccount(konnector, authData) {
+  return {
+    auth: authData,
+    account_type: konnector.slug,
+    identifier: (0, _manifest.getIdentifier)(konnector.fields),
+    state: null
+  };
 };
+/**
+ * Look if the given account has an associated trigger or not.
+ *
+ * @param {import('../CozyClient').default} client - CozyClient instance
+ * @param {import('../types').IOCozyAccount} account - account document
+ * @returns {Promise<Boolean>}
+ */
 
-module.exports = Polyglot;
 
+exports.buildAccount = buildAccount;
+
+var isAccountWithTrigger = /*#__PURE__*/function () {
+  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client, account) {
+    var result;
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            _context.next = 2;
+            return client.query((0, _dsl.Q)('io.cozy.triggers').where({
+              'message.account': account._id
+            }).indexFields(['message.account']).limitBy(1));
+
+          case 2:
+            result = _context.sent;
+            return _context.abrupt("return", result.data.length > 0);
+
+          case 4:
+          case "end":
+            return _context.stop();
+        }
+      }
+    }, _callee);
+  }));
+
+  return function isAccountWithTrigger(_x, _x2) {
+    return _ref.apply(this, arguments);
+  };
+}();
+
+exports.isAccountWithTrigger = isAccountWithTrigger;
 
 /***/ }),
-/* 760 */
+/* 743 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var define = __webpack_require__(761);
-var callBind = __webpack_require__(565);
-var callBound = __webpack_require__(564);
-var RequireObjectCoercible = __webpack_require__(765);
+var _interopRequireDefault = __webpack_require__(1);
 
-var implementation = __webpack_require__(767);
-var getPolyfill = __webpack_require__(802);
-var polyfill = getPolyfill();
-var shim = __webpack_require__(804);
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.makeDiskInfos = exports.hasPasswordDefinedAttribute = exports.buildPremiumLink = exports.hasAnOffer = exports.shouldDisplayOffers = exports.getUuid = exports.isFreemiumUser = exports.arePremiumLinksEnabled = exports.isSelfHosted = void 0;
 
-var $slice = callBound('Array.prototype.slice');
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-var bound = callBind.apply(polyfill);
-// eslint-disable-next-line no-unused-vars
-var boundCoercible = function forEach(array, callbackfn) {
-	RequireObjectCoercible(array);
-	return bound(array, $slice(arguments, 1));
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+
+var _get = _interopRequireDefault(__webpack_require__(399));
+
+var _dsl = __webpack_require__(495);
+
+var FallbackQuota = 1e11;
+var GB = 1000 * 1000 * 1000;
+var PREMIUM_QUOTA = 50 * GB;
+/**
+ * @typedef {object} InstanceInfo
+ * @typedef {object} ContextInfo
+ * @typedef {object} DiskUsageInfo
+ */
+
+/**
+ * @typedef SettingsInfo
+ * @property {ContextInfo} context - Object returned by /settings/context
+ * @property {InstanceInfo} instance - Object returned by /settings/instance
+ * @property {DiskUsageInfo} diskUsage - Object returned by /settings/disk-usage
+ */
+// If manager URL is present, then the instance is not self-hosted
+
+var isSelfHosted = function isSelfHosted(instanceInfo) {
+  return (0, _get.default)(instanceInfo, 'context.data.attributes.manager_url') ? false : true;
+};
+
+exports.isSelfHosted = isSelfHosted;
+
+var arePremiumLinksEnabled = function arePremiumLinksEnabled(instanceInfo) {
+  return (0, _get.default)(instanceInfo, 'context.data.attributes.enable_premium_links') ? true : false;
+};
+
+exports.arePremiumLinksEnabled = arePremiumLinksEnabled;
+
+var isFreemiumUser = function isFreemiumUser(instanceInfo) {
+  var quota = (0, _get.default)(instanceInfo, 'diskUsage.data.attributes.quota', false);
+  return parseInt(quota) <= PREMIUM_QUOTA;
 };
 
-define(boundCoercible, {
-	getPolyfill: getPolyfill,
-	implementation: implementation,
-	shim: shim
-});
-
-module.exports = boundCoercible;
+exports.isFreemiumUser = isFreemiumUser;
 
+var getUuid = function getUuid(instanceInfo) {
+  return (0, _get.default)(instanceInfo, 'instance.data.attributes.uuid');
+};
+/**
+ * Returns whether an instance is concerned by our offers
+ *
+ * @param {SettingsInfo} data Object containing all the results from /settings/*
+ * @returns {boolean} Should we display offers
+ */
 
-/***/ }),
-/* 761 */
-/***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
+exports.getUuid = getUuid;
 
+var shouldDisplayOffers = function shouldDisplayOffers(data) {
+  return !isSelfHosted(data) && arePremiumLinksEnabled(data) && getUuid(data) && isFreemiumUser(data);
+};
+/**
+ * Returns if an instance has subscribed to one of our offers
+ *
+ * @param {SettingsInfo} data Object containing all the results from /settings/*
+ * @returns {boolean} Does the cozy have offers
+ */
 
-var keys = __webpack_require__(762);
-var hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';
 
-var toStr = Object.prototype.toString;
-var concat = Array.prototype.concat;
-var defineDataProperty = __webpack_require__(567);
+exports.shouldDisplayOffers = shouldDisplayOffers;
 
-var isFunction = function (fn) {
-	return typeof fn === 'function' && toStr.call(fn) === '[object Function]';
+var hasAnOffer = function hasAnOffer(data) {
+  return !isSelfHosted(data) && arePremiumLinksEnabled(data) && getUuid(data) && !isFreemiumUser(data);
 };
+/**
+ * Returns the link to the Premium page on the Cozy's Manager
+ *
+ * @param {InstanceInfo} instanceInfo - Instance information
+ */
 
-var supportsDescriptors = __webpack_require__(570)();
 
-var defineProperty = function (object, name, value, predicate) {
-	if (name in object) {
-		if (predicate === true) {
-			if (object[name] === value) {
-				return;
-			}
-		} else if (!isFunction(predicate) || !predicate()) {
-			return;
-		}
-	}
+exports.hasAnOffer = hasAnOffer;
 
-	if (supportsDescriptors) {
-		defineDataProperty(object, name, value, true);
-	} else {
-		defineDataProperty(object, name, value);
-	}
-};
+var buildPremiumLink = function buildPremiumLink(instanceInfo) {
+  var managerUrl = (0, _get.default)(instanceInfo, 'context.data.attributes.manager_url', false);
+  var uuid = getUuid(instanceInfo);
 
-var defineProperties = function (object, map) {
-	var predicates = arguments.length > 2 ? arguments[2] : {};
-	var props = keys(map);
-	if (hasSymbols) {
-		props = concat.call(props, Object.getOwnPropertySymbols(map));
-	}
-	for (var i = 0; i < props.length; i += 1) {
-		defineProperty(object, props[i], map[props[i]], predicates[props[i]]);
-	}
+  if (managerUrl && uuid) {
+    return "".concat(managerUrl, "/cozy/instances/").concat(uuid, "/premium");
+  } else {
+    return null;
+  }
 };
+/**
+ * Checks the value of the password_defined attribute
+ *
+ * @param {import("../CozyClient").default} client - The CozyClient instance
+ * @returns {Promise<boolean>} - Returns the value of the password_defined attribute
+ */
 
-defineProperties.supportsDescriptors = !!supportsDescriptors;
 
-module.exports = defineProperties;
+exports.buildPremiumLink = buildPremiumLink;
 
+var hasPasswordDefinedAttribute = /*#__PURE__*/function () {
+  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client) {
+    var _yield$client$fetchQu, password_defined;
 
-/***/ }),
-/* 762 */
-/***/ (function(module, exports, __webpack_require__) {
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            _context.prev = 0;
+            _context.next = 3;
+            return client.fetchQueryAndGetFromState({
+              definition: (0, _dsl.Q)('io.cozy.settings').getById('io.cozy.settings.instance'),
+              options: {
+                as: 'io.cozy.settings/io.cozy.settings.instance',
+                singleDocData: true
+              }
+            });
 
-"use strict";
+          case 3:
+            _yield$client$fetchQu = _context.sent;
+            password_defined = _yield$client$fetchQu.data.attributes.password_defined;
+            return _context.abrupt("return", Boolean(password_defined));
 
+          case 8:
+            _context.prev = 8;
+            _context.t0 = _context["catch"](0);
+            return _context.abrupt("return", false);
 
-var slice = Array.prototype.slice;
-var isArgs = __webpack_require__(763);
+          case 11:
+          case "end":
+            return _context.stop();
+        }
+      }
+    }, _callee, null, [[0, 8]]);
+  }));
 
-var origKeys = Object.keys;
-var keysShim = origKeys ? function keys(o) { return origKeys(o); } : __webpack_require__(764);
+  return function hasPasswordDefinedAttribute(_x) {
+    return _ref.apply(this, arguments);
+  };
+}();
+/**
+ * @typedef DiskInfosRaw
+ * @property diskQuota {number} - Space used in GB
+ * @property diskUsage {number} -  Maximum space available in GB
+ * @property percentUsage {number} - Usage percent of the disk
+ */
 
-var originalKeys = Object.keys;
+/**
+ * @typedef DiskInfos
+ * @property humanDiskQuota {string} - Space used in GB rounded
+ * @property humanDiskUsage {string} - Maximum space available in GB rounded
+ * @property percentUsage {string} - Usage percent of the disk rounded
+ */
 
-keysShim.shim = function shimObjectKeys() {
-	if (Object.keys) {
-		var keysWorksWithArguments = (function () {
-			// Safari 5.0 bug
-			var args = Object.keys(arguments);
-			return args && args.length === arguments.length;
-		}(1, 2));
-		if (!keysWorksWithArguments) {
-			Object.keys = function keys(object) { // eslint-disable-line func-name-matching
-				if (isArgs(object)) {
-					return originalKeys(slice.call(object));
-				}
-				return originalKeys(object);
-			};
-		}
-	} else {
-		Object.keys = keysShim;
-	}
-	return Object.keys || keysShim;
+/**
+ * Convert input value into GB
+ *
+ * @param {number} bytes - Value in bytes
+ * @returns {number} - Returns the value in GB
+ */
+
+
+exports.hasPasswordDefinedAttribute = hasPasswordDefinedAttribute;
+
+var convertBytesToGB = function convertBytesToGB(bytes) {
+  return bytes * 1e-9;
 };
+/**
+ * Computes `value` rounded to `fractionDigits`.
+ *
+ * @param {number} value - Value to format
+ * @param {number} fractionDigits - Number of decimal numbers
+ * @returns {string} - Returns the rounded number as a string
+ */
 
-module.exports = keysShim;
 
+var formatDecimals = function formatDecimals(value) {
+  var fractionDigits = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
+  return "".concat(value % 1 ? value.toFixed(fractionDigits) : value);
+};
+/**
+ * Transform bytes data to GB data and compute percent usage
+ *
+ * @param {number} usage - Value in bytes representing the space used
+ * @param {number} quota - Value in bytes representing the maximum space available
+ * @returns {DiskInfosRaw} - Returns an transform data to GB and usage percent of the disk
+ */
 
-/***/ }),
-/* 763 */
-/***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
+var computeDiskInfos = function computeDiskInfos(usage) {
+  var quota = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : FallbackQuota;
+  return {
+    diskQuota: convertBytesToGB(quota),
+    diskUsage: convertBytesToGB(usage),
+    percentUsage: usage / quota * 100
+  };
+};
+/**
+ * Make human readable information from disk information (usage, quota)
+ *
+ * @param {number|string} usage - Value in bytes representing the space used
+ * @param {number|string} [quota] - Value in bytes representing the maximum space available
+ * @returns {DiskInfos} - Return a set of human readable information about disk
+ */
 
 
-var toStr = Object.prototype.toString;
+var makeDiskInfos = function makeDiskInfos(usage, quota) {
+  var _computeDiskInfos = computeDiskInfos(+usage, quota ? +quota : undefined),
+      diskQuota = _computeDiskInfos.diskQuota,
+      diskUsage = _computeDiskInfos.diskUsage,
+      percentUsage = _computeDiskInfos.percentUsage;
 
-module.exports = function isArguments(value) {
-	var str = toStr.call(value);
-	var isArgs = str === '[object Arguments]';
-	if (!isArgs) {
-		isArgs = str !== '[object Array]' &&
-			value !== null &&
-			typeof value === 'object' &&
-			typeof value.length === 'number' &&
-			value.length >= 0 &&
-			toStr.call(value.callee) === '[object Function]';
-	}
-	return isArgs;
+  return {
+    humanDiskQuota: formatDecimals(diskQuota),
+    humanDiskUsage: formatDecimals(diskUsage),
+    percentUsage: Math.round(percentUsage).toString()
+  };
 };
 
+exports.makeDiskInfos = makeDiskInfos;
 
 /***/ }),
-/* 764 */
+/* 744 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var keysShim;
-if (!Object.keys) {
-	// modified from https://github.com/es-shims/es5-shim
-	var has = Object.prototype.hasOwnProperty;
-	var toStr = Object.prototype.toString;
-	var isArgs = __webpack_require__(763); // eslint-disable-line global-require
-	var isEnumerable = Object.prototype.propertyIsEnumerable;
-	var hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');
-	var hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');
-	var dontEnums = [
-		'toString',
-		'toLocaleString',
-		'valueOf',
-		'hasOwnProperty',
-		'isPrototypeOf',
-		'propertyIsEnumerable',
-		'constructor'
-	];
-	var equalsConstructorPrototype = function (o) {
-		var ctor = o.constructor;
-		return ctor && ctor.prototype === o;
-	};
-	var excludedKeys = {
-		$applicationCache: true,
-		$console: true,
-		$external: true,
-		$frame: true,
-		$frameElement: true,
-		$frames: true,
-		$innerHeight: true,
-		$innerWidth: true,
-		$onmozfullscreenchange: true,
-		$onmozfullscreenerror: true,
-		$outerHeight: true,
-		$outerWidth: true,
-		$pageXOffset: true,
-		$pageYOffset: true,
-		$parent: true,
-		$scrollLeft: true,
-		$scrollTop: true,
-		$scrollX: true,
-		$scrollY: true,
-		$self: true,
-		$webkitIndexedDB: true,
-		$webkitStorageInfo: true,
-		$window: true
-	};
-	var hasAutomationEqualityBug = (function () {
-		/* global window */
-		if (typeof window === 'undefined') { return false; }
-		for (var k in window) {
-			try {
-				if (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {
-					try {
-						equalsConstructorPrototype(window[k]);
-					} catch (e) {
-						return true;
-					}
-				}
-			} catch (e) {
-				return true;
-			}
-		}
-		return false;
-	}());
-	var equalsConstructorPrototypeIfNotBuggy = function (o) {
-		/* global window */
-		if (typeof window === 'undefined' || !hasAutomationEqualityBug) {
-			return equalsConstructorPrototype(o);
-		}
-		try {
-			return equalsConstructorPrototype(o);
-		} catch (e) {
-			return false;
-		}
-	};
+var _interopRequireDefault = __webpack_require__(1);
 
-	keysShim = function keys(object) {
-		var isObject = object !== null && typeof object === 'object';
-		var isFunction = toStr.call(object) === '[object Function]';
-		var isArguments = isArgs(object);
-		var isString = isObject && toStr.call(object) === '[object String]';
-		var theKeys = [];
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.getAppDisplayName = exports.getUrl = exports.isInstalled = exports.getStoreInstallationURL = exports.getStoreURL = void 0;
 
-		if (!isObject && !isFunction && !isArguments) {
-			throw new TypeError('Object.keys called on a non-object');
-		}
+var _get = _interopRequireDefault(__webpack_require__(399));
 
-		var skipProto = hasProtoEnumBug && isFunction;
-		if (isString && object.length > 0 && !has.call(object, 0)) {
-			for (var i = 0; i < object.length; ++i) {
-				theKeys.push(String(i));
-			}
-		}
+var STORE_SLUG = 'store';
+/**
+ * Returns the store URL of an app/konnector
+ *
+ * @param {Array} [appData=[]] Apps data, as returned by endpoint /apps/ or /konnectors
+ * @param {object} [app={}] AppObject
+ * @returns {string} URL as string
+ */
 
-		if (isArguments && object.length > 0) {
-			for (var j = 0; j < object.length; ++j) {
-				theKeys.push(String(j));
-			}
-		} else {
-			for (var name in object) {
-				if (!(skipProto && name === 'prototype') && has.call(object, name)) {
-					theKeys.push(String(name));
-				}
-			}
-		}
+var getStoreURL = function getStoreURL() {
+  var appData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+  var app = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
 
-		if (hasDontEnumBug) {
-			var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);
+  if (!app.slug) {
+    throw new Error('Expected app / konnector with the defined slug');
+  }
 
-			for (var k = 0; k < dontEnums.length; ++k) {
-				if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {
-					theKeys.push(dontEnums[k]);
-				}
-			}
-		}
-		return theKeys;
-	};
-}
-module.exports = keysShim;
+  var storeApp = isInstalled(appData, {
+    slug: STORE_SLUG
+  });
+  if (!storeApp) return null;
+  var storeUrl = storeApp.links && storeApp.links.related;
+  if (!storeUrl) return null;
+  return "".concat(storeUrl, "#/discover/").concat(app.slug);
+};
+/**
+ * Returns the store URL to install/update an app/konnector
+ *
+ * @param  {Array}  [appData=[]]   Apps data, as returned by endpoint /apps/ or
+ * /konnectors/
+ * @param  {object} [app={}] AppObject
+ * @returns {string}                URL as string
+ */
 
 
-/***/ }),
-/* 765 */
-/***/ (function(module, exports, __webpack_require__) {
+exports.getStoreURL = getStoreURL;
 
-"use strict";
+var getStoreInstallationURL = function getStoreInstallationURL() {
+  var appData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+  var app = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  var storeUrl = getStoreURL(appData, app);
 
+  if (!storeUrl) {
+    return null;
+  }
 
-module.exports = __webpack_require__(766);
+  return "".concat(storeUrl, "/install");
+};
+/**
+ *
+ * @param {Array} apps Array of apps returned by /apps /konnectors
+ * @param {object} wantedApp io.cozy.app with at least a slug
+ * @returns {object} The io.cozy.app is installed or undefined if not
+ */
 
 
-/***/ }),
-/* 766 */
-/***/ (function(module, exports, __webpack_require__) {
+exports.getStoreInstallationURL = getStoreInstallationURL;
 
-"use strict";
+var isInstalled = function isInstalled() {
+  var apps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+  var wantedApp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  return apps.find(function (app) {
+    return app.attributes && app.attributes.slug === wantedApp.slug;
+  });
+};
+/**
+ *
+ * @param {object} app io.cozy.apps document
+ * @returns {string} url to the app
+ */
 
 
-var GetIntrinsic = __webpack_require__(550);
+exports.isInstalled = isInstalled;
 
-var $TypeError = GetIntrinsic('%TypeError%');
+var getUrl = function getUrl(app) {
+  return app.links && app.links.related;
+};
+/**
+ * getAppDisplayName - Combines the translated prefix and name of the app into a single string.
+ *
+ * @param {object} app io.cozy.apps or io.cozy.konnectors document
+ * @param {string} lang Locale to use
+ *
+ * @returns {string} Name of the app suitable for display
+ */
 
-// http://262.ecma-international.org/5.1/#sec-9.10
 
-module.exports = function CheckObjectCoercible(value, optMessage) {
-	if (value == null) {
-		throw new $TypeError(optMessage || ('Cannot call method on ' + value));
-	}
-	return value;
+exports.getUrl = getUrl;
+
+var getAppDisplayName = function getAppDisplayName(app, lang) {
+  var basePrefix = (0, _get.default)(app, 'name_prefix');
+  var baseName = (0, _get.default)(app, 'name');
+  var translatedName = (0, _get.default)(app, ['locales', lang, 'name'], baseName);
+  var translatedPrefix = (0, _get.default)(app, ['locales', lang, 'name_prefix'], basePrefix);
+  return translatedPrefix && translatedPrefix.toLowerCase() !== 'cozy' ? "".concat(translatedPrefix, " ").concat(translatedName) : translatedName;
 };
 
+exports.getAppDisplayName = getAppDisplayName;
 
 /***/ }),
-/* 767 */
+/* 745 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var GetIntrinsic = __webpack_require__(550);
-var callBound = __webpack_require__(564);
-var $TypeError = GetIntrinsic('%TypeError%');
-
-var Call = __webpack_require__(768);
-var Get = __webpack_require__(771);
-var HasProperty = __webpack_require__(777);
-var IsCallable = __webpack_require__(778);
-var LengthOfArrayLike = __webpack_require__(780);
-var ToObject = __webpack_require__(799);
-var ToString = __webpack_require__(800);
-
-var isString = __webpack_require__(801);
-
-var $split = callBound('String.prototype.split');
-
-// Check failure of by-index access of string characters (IE < 9) and failure of `0 in boxedString` (Rhino)
-var boxedString = Object('a');
-var splitString = boxedString[0] !== 'a' || !(0 in boxedString);
-
-module.exports = function forEach(callbackfn) {
-	var thisO = ToObject(this);
-	var O = splitString && isString(this) ? $split(this, '') : thisO;
-
-	var len = LengthOfArrayLike(O);
-
-	if (!IsCallable(callbackfn)) {
-		throw new $TypeError('Array.prototype.forEach callback must be a function');
-	}
+var _interopRequireDefault = __webpack_require__(1);
 
-	var thisArg;
-	if (arguments.length > 1) {
-		thisArg = arguments[1];
-	}
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.normalize = normalize;
+exports.ensureFilePath = ensureFilePath;
+exports.getParentFolderId = getParentFolderId;
+exports.fetchBlobFileById = exports.isFromKonnector = exports.hasCertifications = exports.hasQualifications = exports.isPlainText = exports.doMobileUpload = exports.readMobileFile = exports.uploadFileWithConflictStrategy = exports.generateFileNameForRevision = exports.generateNewFileNameOnConflict = exports.overrideFileForPath = exports.move = exports.getFullpath = exports.hasMetadataAttribute = exports.fetchFilesByQualificationRules = exports.saveFileQualification = exports.isSharingShorcutNew = exports.isSharingShortcutNew = exports.isSharingShorcut = exports.isSharingShortcut = exports.getSharingShortcutTargetDoctype = exports.getSharingShortcutTargetMime = exports.getSharingShortcutStatus = exports.isShortcut = exports.shouldBeOpenedByOnlyOffice = exports.isOnlyOfficeFile = exports.isEncrypted = exports.isNote = exports.isDirectory = exports.isFile = exports.splitFilename = exports.ALBUMS_DOCTYPE = void 0;
 
-	var k = 0;
-	while (k < len) {
-		var Pk = ToString(k);
-		var kPresent = HasProperty(O, Pk);
-		if (kPresent) {
-			var kValue = Get(O, Pk);
-			Call(callbackfn, thisArg, [kValue, k, O]);
-		}
-		k += 1;
-	}
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-	return void undefined;
-};
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-/***/ }),
-/* 768 */
-/***/ (function(module, exports, __webpack_require__) {
+var _get = _interopRequireDefault(__webpack_require__(399));
 
-"use strict";
+var _isString = _interopRequireDefault(__webpack_require__(651));
 
+var _has = _interopRequireDefault(__webpack_require__(594));
 
-var GetIntrinsic = __webpack_require__(550);
-var callBound = __webpack_require__(564);
+var _trimEnd = _interopRequireDefault(__webpack_require__(746));
 
-var $TypeError = GetIntrinsic('%TypeError%');
+var _qualification = __webpack_require__(748);
 
-var IsArray = __webpack_require__(769);
+var _dsl = __webpack_require__(495);
 
-var $apply = GetIntrinsic('%Reflect.apply%', true) || callBound('%Function.prototype.apply%');
+var _const = __webpack_require__(619);
 
-// https://ecma-international.org/ecma-262/6.0/#sec-call
+var _CozyClient = _interopRequireDefault(__webpack_require__(279));
 
-module.exports = function Call(F, V) {
-	var argumentsList = arguments.length > 2 ? arguments[2] : [];
-	if (!IsArray(argumentsList)) {
-		throw new $TypeError('Assertion failed: optional `argumentsList`, if provided, must be a List');
-	}
-	return $apply(F, V, argumentsList);
-};
+var _logger = _interopRequireDefault(__webpack_require__(498));
 
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-/***/ }),
-/* 769 */
-/***/ (function(module, exports, __webpack_require__) {
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-"use strict";
+var FILE_TYPE = 'file';
+var DIR_TYPE = 'directory';
+var ALBUMS_DOCTYPE = 'io.cozy.photos.albums';
+exports.ALBUMS_DOCTYPE = ALBUMS_DOCTYPE;
+var FILENAME_WITH_EXTENSION_REGEX = /(.+)(\..*)$/;
+/**
+ * Returns base filename and extension
+ *
+ * @param {import("../types").IOCozyFile} file An io.cozy.files
+ * @returns {object}  {filename, extension}
+ */
 
+var splitFilename = function splitFilename(file) {
+  if (!(0, _isString.default)(file.name)) throw new Error('file should have a name property');
 
-// https://ecma-international.org/ecma-262/6.0/#sec-isarray
-module.exports = __webpack_require__(770);
+  if (file.type === 'file') {
+    var match = file.name.match(FILENAME_WITH_EXTENSION_REGEX);
 
+    if (match) {
+      return {
+        filename: match[1],
+        extension: match[2]
+      };
+    }
+  }
 
-/***/ }),
-/* 770 */
-/***/ (function(module, exports, __webpack_require__) {
+  return {
+    filename: file.name,
+    extension: ''
+  };
+};
+/**
+ *
+ * @param {import("../types").IOCozyFile} file io.cozy.files
+ */
 
-"use strict";
 
+exports.splitFilename = splitFilename;
 
-var GetIntrinsic = __webpack_require__(550);
+var isFile = function isFile(file) {
+  return file && file.type === FILE_TYPE;
+};
+/**
+ *
+ * @param {import("../types").IOCozyFile} file io.cozy.files
+ */
 
-var $Array = GetIntrinsic('%Array%');
 
-// eslint-disable-next-line global-require
-var toStr = !$Array.isArray && __webpack_require__(564)('Object.prototype.toString');
+exports.isFile = isFile;
 
-module.exports = $Array.isArray || function IsArray(argument) {
-	return toStr(argument) === '[object Array]';
+var isDirectory = function isDirectory(file) {
+  return file && file.type === DIR_TYPE;
 };
+/**
+ * Is file param a correct note
+ *
+ * @param {import("../types").IOCozyFile} file io.cozy.files
+ * @returns {boolean}
+ */
 
 
-/***/ }),
-/* 771 */
-/***/ (function(module, exports, __webpack_require__) {
+exports.isDirectory = isDirectory;
 
-"use strict";
+var isNote = function isNote(file) {
+  if (file && file.name && file.name.endsWith('.cozy-note') && file.type === FILE_TYPE && file.metadata && file.metadata.title !== undefined && file.metadata.version !== undefined) return true;
+  return false;
+};
+/**
+ * Whether the file is client-side encrypted
+ *
+ * @param {import("../types").IOCozyFile} file - io.cozy.files document
+ * @returns {boolean}
+ */
 
 
-var GetIntrinsic = __webpack_require__(550);
+exports.isNote = isNote;
 
-var $TypeError = GetIntrinsic('%TypeError%');
+var isEncrypted = function isEncrypted(file) {
+  return !!file.encrypted;
+};
+/**
+ * Whether the file is supported by Only Office
+ *
+ * @param {import("../types").IOCozyFile} file - io.cozy.file document
+ * @returns {boolean}
+ */
 
-var inspect = __webpack_require__(772);
 
-var IsPropertyKey = __webpack_require__(774);
-var Type = __webpack_require__(775);
+exports.isEncrypted = isEncrypted;
 
-// https://ecma-international.org/ecma-262/6.0/#sec-get-o-p
+var isOnlyOfficeFile = function isOnlyOfficeFile(file) {
+  return isFile(file) && !isNote(file) && (file.class === 'text' || file.class === 'spreadsheet' || file.class === 'slide');
+};
+/**
+ * Whether the file should be opened by only office
+ * We want to be consistent with the stack so we check the class attributes
+ * But we want to exclude .txt and .md because the CozyUI Viewer can already show them
+ *
+ * @param {import("../types").IOCozyFile} file - io.cozy.file document
+ * @returns {boolean}
+ */
 
-module.exports = function Get(O, P) {
-	// 7.3.1.1
-	if (Type(O) !== 'Object') {
-		throw new $TypeError('Assertion failed: Type(O) is not Object');
-	}
-	// 7.3.1.2
-	if (!IsPropertyKey(P)) {
-		throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true, got ' + inspect(P));
-	}
-	// 7.3.1.3
-	return O[P];
+
+exports.isOnlyOfficeFile = isOnlyOfficeFile;
+
+var shouldBeOpenedByOnlyOffice = function shouldBeOpenedByOnlyOffice(file) {
+  return isOnlyOfficeFile(file) && !file.name.endsWith('.txt') && !file.name.endsWith('.md');
 };
+/**
+ *
+ * @param {import("../types").IOCozyFile} file - io.cozy.files document
+ * @returns {boolean} true if the file is a shortcut
+ */
 
 
-/***/ }),
-/* 772 */
-/***/ (function(module, exports, __webpack_require__) {
+exports.shouldBeOpenedByOnlyOffice = shouldBeOpenedByOnlyOffice;
 
-var hasMap = typeof Map === 'function' && Map.prototype;
-var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;
-var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;
-var mapForEach = hasMap && Map.prototype.forEach;
-var hasSet = typeof Set === 'function' && Set.prototype;
-var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;
-var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;
-var setForEach = hasSet && Set.prototype.forEach;
-var hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;
-var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;
-var hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;
-var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;
-var hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;
-var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;
-var booleanValueOf = Boolean.prototype.valueOf;
-var objectToString = Object.prototype.toString;
-var functionToString = Function.prototype.toString;
-var $match = String.prototype.match;
-var $slice = String.prototype.slice;
-var $replace = String.prototype.replace;
-var $toUpperCase = String.prototype.toUpperCase;
-var $toLowerCase = String.prototype.toLowerCase;
-var $test = RegExp.prototype.test;
-var $concat = Array.prototype.concat;
-var $join = Array.prototype.join;
-var $arrSlice = Array.prototype.slice;
-var $floor = Math.floor;
-var bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;
-var gOPS = Object.getOwnPropertySymbols;
-var symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;
-var hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';
-// ie, `has-tostringtag/shams
-var toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')
-    ? Symbol.toStringTag
-    : null;
-var isEnumerable = Object.prototype.propertyIsEnumerable;
+var isShortcut = function isShortcut(file) {
+  return file && file.class === 'shortcut';
+};
+/**
+ * Normalizes an object representing a io.cozy.files object
+ *
+ * Ensures existence of `_id` and `_type`
+ *
+ * @public
+ * @param {object} file - object representing the file
+ * @returns {object} full normalized object
+ */
 
-var gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (
-    [].__proto__ === Array.prototype // eslint-disable-line no-proto
-        ? function (O) {
-            return O.__proto__; // eslint-disable-line no-proto
-        }
-        : null
-);
 
-function addNumericSeparator(num, str) {
-    if (
-        num === Infinity
-        || num === -Infinity
-        || num !== num
-        || (num && num > -1000 && num < 1000)
-        || $test.call(/e/, str)
-    ) {
-        return str;
-    }
-    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;
-    if (typeof num === 'number') {
-        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)
-        if (int !== num) {
-            var intStr = String(int);
-            var dec = $slice.call(str, intStr.length + 1);
-            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');
-        }
-    }
-    return $replace.call(str, sepRegex, '$&_');
+exports.isShortcut = isShortcut;
+
+function normalize(file) {
+  var id = file._id || file.id;
+  var doctype = file._type || _const.DOCTYPE_FILES;
+  return _objectSpread({
+    _id: id,
+    id: id,
+    _type: doctype
+  }, file);
+}
+/**
+ * Ensure the file has a `path` attribute, or build it
+ *
+ * @public
+ * @param {object} file - object representing the file
+ * @param {object} parent - parent directory for the file
+ * @returns {object} file object with path attribute
+ */
+
+
+function ensureFilePath(file, parent) {
+  if (file.path) return file;
+  if (!parent || !parent.path) throw new Error("Could not define a file path for ".concat(file._id || file.id));
+  var path = parent.path + '/' + file.name;
+  return _objectSpread({
+    path: path
+  }, file);
 }
+/**
+ * Get the id of the parent folder (`null` for the root folder)
+ *
+ * @param {object} file  - io.cozy.files document
+ * @returns {string|null} id of the parent folder, if any
+ */
 
-var utilInspect = __webpack_require__(773);
-var inspectCustom = utilInspect.custom;
-var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;
 
-module.exports = function inspect_(obj, options, depth, seen) {
-    var opts = options || {};
+function getParentFolderId(file) {
+  var parentId = (0, _get.default)(file, 'attributes.dir_id');
+  return parentId === '' ? null : parentId;
+}
+/**
+ * Returns the status of a sharing shortcut.
+ *
+ * @param {import("../types").IOCozyFile} file - io.cozy.files document
+ *
+ * @returns {string} A description of the status
+ */
 
-    if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {
-        throw new TypeError('option "quoteStyle" must be "single" or "double"');
-    }
-    if (
-        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'
-            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity
-            : opts.maxStringLength !== null
-        )
-    ) {
-        throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');
-    }
-    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;
-    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {
-        throw new TypeError('option "customInspect", if provided, must be `true`, `false`, or `\'symbol\'`');
-    }
 
-    if (
-        has(opts, 'indent')
-        && opts.indent !== null
-        && opts.indent !== '\t'
-        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)
-    ) {
-        throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');
-    }
-    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {
-        throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');
-    }
-    var numericSeparator = opts.numericSeparator;
+var getSharingShortcutStatus = function getSharingShortcutStatus(file) {
+  return (0, _get.default)(file, 'metadata.sharing.status');
+};
+/**
+ * Returns the mime type of the target of the sharing shortcut, if it is a file.
+ *
+ * @param {import("../types").IOCozyFile} file  - io.cozy.files document
+ *
+ * @returns {string} The mime-type of the target file, or an empty string is the target is not a file.
+ */
 
-    if (typeof obj === 'undefined') {
-        return 'undefined';
-    }
-    if (obj === null) {
-        return 'null';
-    }
-    if (typeof obj === 'boolean') {
-        return obj ? 'true' : 'false';
-    }
 
-    if (typeof obj === 'string') {
-        return inspectString(obj, opts);
-    }
-    if (typeof obj === 'number') {
-        if (obj === 0) {
-            return Infinity / obj > 0 ? '0' : '-0';
-        }
-        var str = String(obj);
-        return numericSeparator ? addNumericSeparator(obj, str) : str;
-    }
-    if (typeof obj === 'bigint') {
-        var bigIntStr = String(obj) + 'n';
-        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;
-    }
+exports.getSharingShortcutStatus = getSharingShortcutStatus;
 
-    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;
-    if (typeof depth === 'undefined') { depth = 0; }
-    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {
-        return isArray(obj) ? '[Array]' : '[Object]';
-    }
+var getSharingShortcutTargetMime = function getSharingShortcutTargetMime(file) {
+  return (0, _get.default)(file, 'metadata.target.mime');
+};
+/**
+ * Returns the doctype of the target of the sharing shortcut.
+ *
+ * @param {import("../types").IOCozyFile} file - io.cozy.files document
+ *
+ * @returns {string} A doctype
+ */
 
-    var indent = getIndent(opts, depth);
 
-    if (typeof seen === 'undefined') {
-        seen = [];
-    } else if (indexOf(seen, obj) >= 0) {
-        return '[Circular]';
-    }
+exports.getSharingShortcutTargetMime = getSharingShortcutTargetMime;
 
-    function inspect(value, from, noIndent) {
-        if (from) {
-            seen = $arrSlice.call(seen);
-            seen.push(from);
-        }
-        if (noIndent) {
-            var newOpts = {
-                depth: opts.depth
-            };
-            if (has(opts, 'quoteStyle')) {
-                newOpts.quoteStyle = opts.quoteStyle;
-            }
-            return inspect_(value, newOpts, depth + 1, seen);
-        }
-        return inspect_(value, opts, depth + 1, seen);
-    }
+var getSharingShortcutTargetDoctype = function getSharingShortcutTargetDoctype(file) {
+  return (0, _get.default)(file, 'metadata.target._type');
+};
+/**
+ * Returns whether the file is a shortcut to a sharing
+ *
+ * @param {import("../types").IOCozyFile} file - io.cozy.files document
+ *
+ * @returns {boolean}
+ */
 
-    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable
-        var name = nameOf(obj);
-        var keys = arrObjKeys(obj, inspect);
-        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');
-    }
-    if (isSymbol(obj)) {
-        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, '$1') : symToString.call(obj);
-        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;
-    }
-    if (isElement(obj)) {
-        var s = '<' + $toLowerCase.call(String(obj.nodeName));
-        var attrs = obj.attributes || [];
-        for (var i = 0; i < attrs.length; i++) {
-            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);
-        }
-        s += '>';
-        if (obj.childNodes && obj.childNodes.length) { s += '...'; }
-        s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';
-        return s;
-    }
-    if (isArray(obj)) {
-        if (obj.length === 0) { return '[]'; }
-        var xs = arrObjKeys(obj, inspect);
-        if (indent && !singleLineValues(xs)) {
-            return '[' + indentedJoin(xs, indent) + ']';
-        }
-        return '[ ' + $join.call(xs, ', ') + ' ]';
-    }
-    if (isError(obj)) {
-        var parts = arrObjKeys(obj, inspect);
-        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {
-            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';
-        }
-        if (parts.length === 0) { return '[' + String(obj) + ']'; }
-        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';
-    }
-    if (typeof obj === 'object' && customInspect) {
-        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {
-            return utilInspect(obj, { depth: maxDepth - depth });
-        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {
-            return obj.inspect();
-        }
-    }
-    if (isMap(obj)) {
-        var mapParts = [];
-        mapForEach.call(obj, function (value, key) {
-            mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));
-        });
-        return collectionOf('Map', mapSize.call(obj), mapParts, indent);
-    }
-    if (isSet(obj)) {
-        var setParts = [];
-        setForEach.call(obj, function (value) {
-            setParts.push(inspect(value, obj));
-        });
-        return collectionOf('Set', setSize.call(obj), setParts, indent);
-    }
-    if (isWeakMap(obj)) {
-        return weakCollectionOf('WeakMap');
-    }
-    if (isWeakSet(obj)) {
-        return weakCollectionOf('WeakSet');
-    }
-    if (isWeakRef(obj)) {
-        return weakCollectionOf('WeakRef');
-    }
-    if (isNumber(obj)) {
-        return markBoxed(inspect(Number(obj)));
-    }
-    if (isBigInt(obj)) {
-        return markBoxed(inspect(bigIntValueOf.call(obj)));
-    }
-    if (isBoolean(obj)) {
-        return markBoxed(booleanValueOf.call(obj));
-    }
-    if (isString(obj)) {
-        return markBoxed(inspect(String(obj)));
-    }
-    if (!isDate(obj) && !isRegExp(obj)) {
-        var ys = arrObjKeys(obj, inspect);
-        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;
-        var protoTag = obj instanceof Object ? '' : 'null prototype';
-        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';
-        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';
-        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');
-        if (ys.length === 0) { return tag + '{}'; }
-        if (indent) {
-            return tag + '{' + indentedJoin(ys, indent) + '}';
-        }
-        return tag + '{ ' + $join.call(ys, ', ') + ' }';
-    }
-    return String(obj);
+
+exports.getSharingShortcutTargetDoctype = getSharingShortcutTargetDoctype;
+
+var isSharingShortcut = function isSharingShortcut(file) {
+  return Boolean(getSharingShortcutStatus(file));
+};
+/**
+ * Returns whether the file is a shortcut to a sharing
+ *
+ * @deprecated Prefer to use isSharingShortcut.
+ * @param {import("../types").IOCozyFile} file - io.cozy.files document
+ *
+ * @returns {boolean}
+ */
+
+
+exports.isSharingShortcut = isSharingShortcut;
+
+var isSharingShorcut = function isSharingShorcut(file) {
+  _logger.default.warn('Deprecation: `isSharingShorcut` is deprecated, please use `isSharingShortcut` instead');
+
+  return isSharingShortcut(file);
 };
+/**
+ * Returns whether the sharing shortcut is new
+ *
+ * @param {import("../types").IOCozyFile} file - io.cozy.files document
+ *
+ * @returns {boolean}
+ */
 
-function wrapQuotes(s, defaultStyle, opts) {
-    var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '"' : "'";
-    return quoteChar + s + quoteChar;
-}
 
-function quote(s) {
-    return $replace.call(String(s), /"/g, '&quot;');
-}
+exports.isSharingShorcut = isSharingShorcut;
 
-function isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
-function isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
-function isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
-function isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
-function isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
-function isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
-function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
+var isSharingShortcutNew = function isSharingShortcutNew(file) {
+  return getSharingShortcutStatus(file) === 'new';
+};
+/**
+ * Returns whether the sharing shortcut is new
+ *
+ * @deprecated Prefer to use isSharingShortcutNew.
+ * @param {object} file - io.cozy.files document
+ *
+ * @returns {boolean}
+ */
 
-// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives
-function isSymbol(obj) {
-    if (hasShammedSymbols) {
-        return obj && typeof obj === 'object' && obj instanceof Symbol;
-    }
-    if (typeof obj === 'symbol') {
-        return true;
-    }
-    if (!obj || typeof obj !== 'object' || !symToString) {
-        return false;
-    }
-    try {
-        symToString.call(obj);
-        return true;
-    } catch (e) {}
-    return false;
-}
 
-function isBigInt(obj) {
-    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {
-        return false;
-    }
-    try {
-        bigIntValueOf.call(obj);
-        return true;
-    } catch (e) {}
-    return false;
-}
+exports.isSharingShortcutNew = isSharingShortcutNew;
 
-var hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };
-function has(obj, key) {
-    return hasOwn.call(obj, key);
-}
+var isSharingShorcutNew = function isSharingShorcutNew(file) {
+  _logger.default.warn('Deprecation: `isSharingShorcutNew` is deprecated, please use `isSharingShortcutNew` instead');
 
-function toStr(obj) {
-    return objectToString.call(obj);
-}
+  return isSharingShortcutNew(file);
+};
+/**
+ * Save the file with the given qualification
+ *
+ * @param {CozyClient} client - The CozyClient instance
+ * @param {import("../types").IOCozyFile} file - The file to qualify
+ * @param {object} qualification - The file qualification
+ * @returns {Promise<import("../types").IOCozyFile>} The saved file
+ */
 
-function nameOf(f) {
-    if (f.name) { return f.name; }
-    var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/);
-    if (m) { return m[1]; }
-    return null;
-}
 
-function indexOf(xs, x) {
-    if (xs.indexOf) { return xs.indexOf(x); }
-    for (var i = 0, l = xs.length; i < l; i++) {
-        if (xs[i] === x) { return i; }
-    }
-    return -1;
-}
+exports.isSharingShorcutNew = isSharingShorcutNew;
 
-function isMap(x) {
-    if (!mapSize || !x || typeof x !== 'object') {
-        return false;
-    }
-    try {
-        mapSize.call(x);
-        try {
-            setSize.call(x);
-        } catch (s) {
-            return true;
-        }
-        return x instanceof Map; // core-js workaround, pre-v2.5.0
-    } catch (e) {}
-    return false;
-}
+var saveFileQualification = /*#__PURE__*/function () {
+  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client, file, qualification) {
+    var qualifiedFile;
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            qualifiedFile = (0, _qualification.setQualification)(file, qualification);
+            return _context.abrupt("return", client.collection(_const.DOCTYPE_FILES).updateMetadataAttribute(file._id, qualifiedFile.metadata));
 
-function isWeakMap(x) {
-    if (!weakMapHas || !x || typeof x !== 'object') {
-        return false;
-    }
-    try {
-        weakMapHas.call(x, weakMapHas);
-        try {
-            weakSetHas.call(x, weakSetHas);
-        } catch (s) {
-            return true;
+          case 2:
+          case "end":
+            return _context.stop();
         }
-        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0
-    } catch (e) {}
-    return false;
-}
+      }
+    }, _callee);
+  }));
 
-function isWeakRef(x) {
-    if (!weakRefDeref || !x || typeof x !== 'object') {
-        return false;
-    }
-    try {
-        weakRefDeref.call(x);
-        return true;
-    } catch (e) {}
-    return false;
-}
+  return function saveFileQualification(_x, _x2, _x3) {
+    return _ref.apply(this, arguments);
+  };
+}();
+/**
+ * Helper to query files based on qualification rules
+ *
+ * @param {object} client - The CozyClient instance
+ * @param {object} docRules - the rules containing the searched qualification and the count
+ * @returns {Promise<import("../types").QueryResult>} The files found by the rules
+ */
 
-function isSet(x) {
-    if (!setSize || !x || typeof x !== 'object') {
-        return false;
-    }
-    try {
-        setSize.call(x);
-        try {
-            mapSize.call(x);
-        } catch (m) {
-            return true;
-        }
-        return x instanceof Set; // core-js workaround, pre-v2.5.0
-    } catch (e) {}
-    return false;
-}
 
-function isWeakSet(x) {
-    if (!weakSetHas || !x || typeof x !== 'object') {
-        return false;
-    }
-    try {
-        weakSetHas.call(x, weakSetHas);
-        try {
-            weakMapHas.call(x, weakMapHas);
-        } catch (s) {
-            return true;
-        }
-        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0
-    } catch (e) {}
-    return false;
-}
+exports.saveFileQualification = saveFileQualification;
 
-function isElement(x) {
-    if (!x || typeof x !== 'object') { return false; }
-    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {
-        return true;
-    }
-    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';
-}
+var fetchFilesByQualificationRules = /*#__PURE__*/function () {
+  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(client, docRules) {
+    var rules, count, query, result;
+    return _regenerator.default.wrap(function _callee2$(_context2) {
+      while (1) {
+        switch (_context2.prev = _context2.next) {
+          case 0:
+            rules = docRules.rules, count = docRules.count;
+            query = (0, _dsl.Q)(_const.DOCTYPE_FILES).where(_objectSpread({}, rules)).partialIndex({
+              trashed: false
+            }).indexFields(['cozyMetadata.updatedAt', 'metadata.qualification']).sortBy([{
+              'cozyMetadata.updatedAt': 'desc'
+            }]).limitBy(count ? count : 1);
+            _context2.next = 4;
+            return client.query(query);
 
-function inspectString(str, opts) {
-    if (str.length > opts.maxStringLength) {
-        var remaining = str.length - opts.maxStringLength;
-        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');
-        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;
-    }
-    // eslint-disable-next-line no-control-regex
-    var s = $replace.call($replace.call(str, /(['\\])/g, '\\$1'), /[\x00-\x1f]/g, lowbyte);
-    return wrapQuotes(s, 'single', opts);
-}
+          case 4:
+            result = _context2.sent;
+            return _context2.abrupt("return", result);
 
-function lowbyte(c) {
-    var n = c.charCodeAt(0);
-    var x = {
-        8: 'b',
-        9: 't',
-        10: 'n',
-        12: 'f',
-        13: 'r'
-    }[n];
-    if (x) { return '\\' + x; }
-    return '\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));
-}
+          case 6:
+          case "end":
+            return _context2.stop();
+        }
+      }
+    }, _callee2);
+  }));
 
-function markBoxed(str) {
-    return 'Object(' + str + ')';
-}
+  return function fetchFilesByQualificationRules(_x4, _x5) {
+    return _ref2.apply(this, arguments);
+  };
+}();
+/**
+ * Whether the file's metadata attribute exists
+ *
+ * @param {object} params - Param
+ * @param {import("../types").IOCozyFile} params.file - An io.cozy.files document
+ * @param {string} params.attribute - Metadata attribute to check
+ * @returns {boolean}
+ */
 
-function weakCollectionOf(type) {
-    return type + ' { ? }';
-}
 
-function collectionOf(type, size, entries, indent) {
-    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');
-    return type + ' (' + size + ') {' + joinedEntries + '}';
-}
+exports.fetchFilesByQualificationRules = fetchFilesByQualificationRules;
 
-function singleLineValues(xs) {
-    for (var i = 0; i < xs.length; i++) {
-        if (indexOf(xs[i], '\n') >= 0) {
-            return false;
-        }
-    }
-    return true;
-}
+var hasMetadataAttribute = function hasMetadataAttribute(_ref3) {
+  var file = _ref3.file,
+      attribute = _ref3.attribute;
+  return (0, _has.default)(file, "metadata.".concat(attribute));
+};
+/**
+ * async getFullpath - Gets a file's path
+ *
+ * @param {CozyClient} client - The CozyClient instance
+ * @param {string} dirId  - The id of the parent directory
+ * @param {string} name  - The file's name
+ * @returns {Promise<string>} The full path of the file in the cozy
+ **/
 
-function getIndent(opts, depth) {
-    var baseIndent;
-    if (opts.indent === '\t') {
-        baseIndent = '\t';
-    } else if (typeof opts.indent === 'number' && opts.indent > 0) {
-        baseIndent = $join.call(Array(opts.indent + 1), ' ');
-    } else {
-        return null;
-    }
-    return {
-        base: baseIndent,
-        prev: $join.call(Array(depth + 1), baseIndent)
-    };
-}
 
-function indentedJoin(xs, indent) {
-    if (xs.length === 0) { return ''; }
-    var lineJoiner = '\n' + indent.prev + indent.base;
-    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\n' + indent.prev;
-}
+exports.hasMetadataAttribute = hasMetadataAttribute;
 
-function arrObjKeys(obj, inspect) {
-    var isArr = isArray(obj);
-    var xs = [];
-    if (isArr) {
-        xs.length = obj.length;
-        for (var i = 0; i < obj.length; i++) {
-            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';
-        }
-    }
-    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];
-    var symMap;
-    if (hasShammedSymbols) {
-        symMap = {};
-        for (var k = 0; k < syms.length; k++) {
-            symMap['$' + syms[k]] = syms[k];
-        }
-    }
+var getFullpath = /*#__PURE__*/function () {
+  var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(client, dirId, name) {
+    var _yield$client$query, parentDir, parentDirectoryPath;
 
-    for (var key in obj) { // eslint-disable-line no-restricted-syntax
-        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue
-        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue
-        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {
-            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section
-            continue; // eslint-disable-line no-restricted-syntax, no-continue
-        } else if ($test.call(/[^\w$]/, key)) {
-            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));
-        } else {
-            xs.push(key + ': ' + inspect(obj[key], obj));
-        }
-    }
-    if (typeof gOPS === 'function') {
-        for (var j = 0; j < syms.length; j++) {
-            if (isEnumerable.call(obj, syms[j])) {
-                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));
+    return _regenerator.default.wrap(function _callee3$(_context3) {
+      while (1) {
+        switch (_context3.prev = _context3.next) {
+          case 0:
+            if (dirId) {
+              _context3.next = 2;
+              break;
             }
+
+            throw new Error('You must provide a dirId');
+
+          case 2:
+            _context3.next = 4;
+            return client.query((0, _dsl.Q)(_const.DOCTYPE_FILES).getById(dirId));
+
+          case 4:
+            _yield$client$query = _context3.sent;
+            parentDir = _yield$client$query.data;
+            parentDirectoryPath = (0, _trimEnd.default)(parentDir.path, '/');
+            return _context3.abrupt("return", "".concat(parentDirectoryPath, "/").concat(name));
+
+          case 8:
+          case "end":
+            return _context3.stop();
         }
-    }
-    return xs;
-}
+      }
+    }, _callee3);
+  }));
+
+  return function getFullpath(_x6, _x7, _x8) {
+    return _ref4.apply(this, arguments);
+  };
+}();
+/**
+ * Move file to destination.
+ *
+ * @param {CozyClient} client             - The CozyClient instance
+ * @param   {string} fileId               - The file's id (required)
+ * @param   {object} destination          - The destination object containing:
+ * @param   {string} destination.folderId - The destination folder's id (required)
+ * @param   {string} destination.path     - The file's path after the move (optional, used to optimize performance in case of conflict)
+ * @param   {boolean} force               - Whether we should overwrite, i.e. put to trash, the destination in case of conflict (defaults to false).
+ * @returns {Promise}                     - A promise that returns the move action response and the deleted file id (if any) if resolved or an Error if rejected
+ *
+ */
 
 
-/***/ }),
-/* 773 */
-/***/ (function(module, exports, __webpack_require__) {
+exports.getFullpath = getFullpath;
 
-module.exports = __webpack_require__(218).inspect;
+var move = /*#__PURE__*/function () {
+  var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(client, fileId, destination) {
+    var force,
+        folderId,
+        path,
+        resp,
+        destinationPath,
+        _yield$client$query2,
+        movedFile,
+        filename,
+        conflictResp,
+        _resp,
+        _args4 = arguments;
 
+    return _regenerator.default.wrap(function _callee4$(_context4) {
+      while (1) {
+        switch (_context4.prev = _context4.next) {
+          case 0:
+            force = _args4.length > 3 && _args4[3] !== undefined ? _args4[3] : false;
+            folderId = destination.folderId, path = destination.path;
+            _context4.prev = 2;
+            _context4.next = 5;
+            return client.collection(_const.DOCTYPE_FILES).updateFileMetadata(fileId, {
+              dir_id: folderId
+            });
 
-/***/ }),
-/* 774 */
-/***/ (function(module, exports, __webpack_require__) {
+          case 5:
+            resp = _context4.sent;
+            return _context4.abrupt("return", {
+              moved: resp.data,
+              deleted: null
+            });
 
-"use strict";
+          case 9:
+            _context4.prev = 9;
+            _context4.t0 = _context4["catch"](2);
 
+            if (!(_context4.t0.status === 409 && force)) {
+              _context4.next = 35;
+              break;
+            }
 
-// https://ecma-international.org/ecma-262/6.0/#sec-ispropertykey
+            if (!path) {
+              _context4.next = 16;
+              break;
+            }
 
-module.exports = function IsPropertyKey(argument) {
-	return typeof argument === 'string' || typeof argument === 'symbol';
-};
+            destinationPath = path;
+            _context4.next = 24;
+            break;
 
+          case 16:
+            _context4.next = 18;
+            return client.query((0, _dsl.Q)(_const.DOCTYPE_FILES).getById(fileId));
 
-/***/ }),
-/* 775 */
-/***/ (function(module, exports, __webpack_require__) {
+          case 18:
+            _yield$client$query2 = _context4.sent;
+            movedFile = _yield$client$query2.data;
+            filename = movedFile.name;
+            _context4.next = 23;
+            return getFullpath(client, folderId, filename);
 
-"use strict";
+          case 23:
+            destinationPath = _context4.sent;
 
+          case 24:
+            _context4.next = 26;
+            return client.collection(_const.DOCTYPE_FILES).statByPath(destinationPath);
 
-var ES5Type = __webpack_require__(776);
+          case 26:
+            conflictResp = _context4.sent;
+            _context4.next = 29;
+            return client.collection(_const.DOCTYPE_FILES).destroy(conflictResp.data);
 
-// https://262.ecma-international.org/11.0/#sec-ecmascript-data-types-and-values
+          case 29:
+            _context4.next = 31;
+            return client.collection(_const.DOCTYPE_FILES).updateFileMetadata(fileId, {
+              dir_id: folderId
+            });
 
-module.exports = function Type(x) {
-	if (typeof x === 'symbol') {
-		return 'Symbol';
-	}
-	if (typeof x === 'bigint') {
-		return 'BigInt';
-	}
-	return ES5Type(x);
-};
+          case 31:
+            _resp = _context4.sent;
+            return _context4.abrupt("return", {
+              moved: _resp.data,
+              deleted: conflictResp.data.id
+            });
 
+          case 35:
+            throw _context4.t0;
 
-/***/ }),
-/* 776 */
-/***/ (function(module, exports, __webpack_require__) {
+          case 36:
+          case "end":
+            return _context4.stop();
+        }
+      }
+    }, _callee4, null, [[2, 9]]);
+  }));
+
+  return function move(_x9, _x10, _x11) {
+    return _ref5.apply(this, arguments);
+  };
+}();
+/**
+ *
+ * Method to upload a file even if a file with the same name already exists.
+ *
+ * @param {CozyClient} client   - The CozyClient instance
+ * @param {string} dirPath      - Fullpath of directory to upload to ex: path/to/
+ * @param {object} file         - HTML Object file
+ * @param {object} metadata     - An object containing the wanted metadata to attach
+ * @returns {Promise<import("../types").IOCozyFile>} The overrided file
+ */
 
-"use strict";
 
+exports.move = move;
 
-// https://262.ecma-international.org/5.1/#sec-8
+var overrideFileForPath = /*#__PURE__*/function () {
+  var _ref6 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(client, dirPath, file, metadata) {
+    var path, filesCollection, existingFile, _existingFile$data, fileId, dirId, resp, _dirId, createdFile;
 
-module.exports = function Type(x) {
-	if (x === null) {
-		return 'Null';
-	}
-	if (typeof x === 'undefined') {
-		return 'Undefined';
-	}
-	if (typeof x === 'function' || typeof x === 'object') {
-		return 'Object';
-	}
-	if (typeof x === 'number') {
-		return 'Number';
-	}
-	if (typeof x === 'boolean') {
-		return 'Boolean';
-	}
-	if (typeof x === 'string') {
-		return 'String';
-	}
-};
+    return _regenerator.default.wrap(function _callee5$(_context5) {
+      while (1) {
+        switch (_context5.prev = _context5.next) {
+          case 0:
+            path = dirPath;
+            if (!path.endsWith('/')) path = path + '/';
+            filesCollection = client.collection(_const.DOCTYPE_FILES);
+            _context5.prev = 3;
+            _context5.next = 6;
+            return filesCollection.statByPath(path + file.name);
 
+          case 6:
+            existingFile = _context5.sent;
+            _existingFile$data = existingFile.data, fileId = _existingFile$data.id, dirId = _existingFile$data.dir_id;
+            _context5.next = 10;
+            return filesCollection.updateFile(file, {
+              dirId: dirId,
+              fileId: fileId,
+              metadata: metadata
+            });
 
-/***/ }),
-/* 777 */
-/***/ (function(module, exports, __webpack_require__) {
+          case 10:
+            resp = _context5.sent;
+            return _context5.abrupt("return", resp);
 
-"use strict";
+          case 14:
+            _context5.prev = 14;
+            _context5.t0 = _context5["catch"](3);
 
+            if (!/Not Found/.test(_context5.t0)) {
+              _context5.next = 24;
+              break;
+            }
 
-var GetIntrinsic = __webpack_require__(550);
+            _context5.next = 19;
+            return filesCollection.ensureDirectoryExists(path);
 
-var $TypeError = GetIntrinsic('%TypeError%');
+          case 19:
+            _dirId = _context5.sent;
+            _context5.next = 22;
+            return filesCollection.createFile(file, {
+              dirId: _dirId,
+              metadata: metadata
+            });
 
-var IsPropertyKey = __webpack_require__(774);
-var Type = __webpack_require__(775);
+          case 22:
+            createdFile = _context5.sent;
+            return _context5.abrupt("return", createdFile);
 
-// https://ecma-international.org/ecma-262/6.0/#sec-hasproperty
+          case 24:
+            throw _context5.t0;
 
-module.exports = function HasProperty(O, P) {
-	if (Type(O) !== 'Object') {
-		throw new $TypeError('Assertion failed: `O` must be an Object');
-	}
-	if (!IsPropertyKey(P)) {
-		throw new $TypeError('Assertion failed: `P` must be a Property Key');
-	}
-	return P in O;
-};
+          case 25:
+          case "end":
+            return _context5.stop();
+        }
+      }
+    }, _callee5, null, [[3, 14]]);
+  }));
 
+  return function overrideFileForPath(_x12, _x13, _x14, _x15) {
+    return _ref6.apply(this, arguments);
+  };
+}();
+/**
+ * Method to generate a new filename if there is a conflict
+ *
+ * @param {string} filenameWithoutExtension - A filename without the extension
+ * @param {RegExp} [originalNameFormatRegex] - A regex to check if the name is still in his original format
+ * @returns {string} A filename with the right suffix
+ */
 
-/***/ }),
-/* 778 */
-/***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
+exports.overrideFileForPath = overrideFileForPath;
 
+var generateNewFileNameOnConflict = function generateNewFileNameOnConflict(filenameWithoutExtension, originalNameFormatRegex) {
+  var isOriginalNameFormat = false;
 
-// http://262.ecma-international.org/5.1/#sec-9.11
+  if (originalNameFormatRegex && originalNameFormatRegex.test(filenameWithoutExtension)) {
+    isOriginalNameFormat = true;
+  } //Check if the string ends by _1
 
-module.exports = __webpack_require__(779);
 
+  var regex = new RegExp('(_)([0-9]+)$');
+  var matches = filenameWithoutExtension.match(regex);
+  var shouldIncrement = matches && !isOriginalNameFormat;
 
-/***/ }),
-/* 779 */
-/***/ (function(module, exports, __webpack_require__) {
+  if (shouldIncrement) {
+    var versionNumber = parseInt(matches[2]); //increment versionNumber
 
-"use strict";
+    versionNumber++;
+    var newFilenameWithoutExtension = filenameWithoutExtension.replace(new RegExp('(_)([0-9]+)$'), "_".concat(versionNumber));
+    return newFilenameWithoutExtension;
+  } else {
+    return "".concat(filenameWithoutExtension, "_1");
+  }
+};
+/**
+ * Generate a file name for a revision
+ *
+ * @param {import("../types").IOCozyFile} file - io.cozy.files document
+ * @param {object} revision - The revision containing the updated_at
+ * @param {function} f      - A function taking a a date and a format as arguments to generate the name.
+ */
 
 
-var fnToStr = Function.prototype.toString;
-var reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;
-var badArrayLike;
-var isCallableMarker;
-if (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {
-	try {
-		badArrayLike = Object.defineProperty({}, 'length', {
-			get: function () {
-				throw isCallableMarker;
-			}
-		});
-		isCallableMarker = {};
-		// eslint-disable-next-line no-throw-literal
-		reflectApply(function () { throw 42; }, null, badArrayLike);
-	} catch (_) {
-		if (_ !== isCallableMarker) {
-			reflectApply = null;
-		}
-	}
-} else {
-	reflectApply = null;
-}
+exports.generateNewFileNameOnConflict = generateNewFileNameOnConflict;
 
-var constructorRegex = /^\s*class\b/;
-var isES6ClassFn = function isES6ClassFunction(value) {
-	try {
-		var fnStr = fnToStr.call(value);
-		return constructorRegex.test(fnStr);
-	} catch (e) {
-		return false; // not a function
-	}
-};
+var generateFileNameForRevision = function generateFileNameForRevision(file, revision, f) {
+  var _splitFilename = splitFilename(file),
+      filename = _splitFilename.filename,
+      extension = _splitFilename.extension;
 
-var tryFunctionObject = function tryFunctionToStr(value) {
-	try {
-		if (isES6ClassFn(value)) { return false; }
-		fnToStr.call(value);
-		return true;
-	} catch (e) {
-		return false;
-	}
+  return "".concat(filename, "_").concat(f(revision.updated_at, 'DD MMMM - HH[h]mm')).concat(extension);
 };
-var toStr = Object.prototype.toString;
-var fnClass = '[object Function]';
-var genClass = '[object GeneratorFunction]';
-var hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`
-/* globals document: false */
-var documentDotAll = typeof document === 'object' && typeof document.all === 'undefined' && document.all !== undefined ? document.all : {};
-
-module.exports = reflectApply
-	? function isCallable(value) {
-		if (value === documentDotAll) { return true; }
-		if (!value) { return false; }
-		if (typeof value !== 'function' && typeof value !== 'object') { return false; }
-		if (typeof value === 'function' && !value.prototype) { return true; }
-		try {
-			reflectApply(value, null, badArrayLike);
-		} catch (e) {
-			if (e !== isCallableMarker) { return false; }
-		}
-		return !isES6ClassFn(value);
-	}
-	: function isCallable(value) {
-		if (value === documentDotAll) { return true; }
-		if (!value) { return false; }
-		if (typeof value !== 'function' && typeof value !== 'object') { return false; }
-		if (typeof value === 'function' && !value.prototype) { return true; }
-		if (hasToStringTag) { return tryFunctionObject(value); }
-		if (isES6ClassFn(value)) { return false; }
-		var strClass = toStr.call(value);
-		return strClass === fnClass || strClass === genClass;
-	};
-
+/**
+ * @typedef FileUploadOptions
+ * @property {string} [name]              - The file name to upload
+ * @property {string} [dirId]             - The dirId to upload the file to
+ * @property {object} [metadata]          - An object containing the metadata to attach
+ * @property {string} [contentType]       - The file Content-Type
+ * @property {string} [conflictStrategy]  - Erase / rename
+ */
 
-/***/ }),
-/* 780 */
-/***/ (function(module, exports, __webpack_require__) {
+/**
+ * The goal of this method is to upload a file based on a conflict strategy.
+ * Be careful: We need to check if the file exists by doing a statByPath query
+ * before trying to upload the file since if we post and the stack return a
+ * 409 conflict, we will get a SPDY_ERROR_PROTOCOL on Chrome. This is the only
+ * viable workaround
+ * If there is no conflict, then we upload the file.
+ * If there is a conflict, then we apply the conflict strategy : `erase` or `rename`:
+ *   - The `erase` strategy means an upload with a new version
+ *   - The `rename` strategy means a new upload with a new name
+ *
+ * @param {CozyClient} client         - The CozyClient instance
+ * @param {string|ArrayBuffer} file   - Can be the file path (file://) or the binary itself
+ * @param {FileUploadOptions} options - The upload options
+ */
 
-"use strict";
 
+exports.generateFileNameForRevision = generateFileNameForRevision;
 
-var GetIntrinsic = __webpack_require__(550);
+var uploadFileWithConflictStrategy = /*#__PURE__*/function () {
+  var _ref7 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(client, file, options) {
+    var name, dirId, conflictStrategy, path, existingFile, fileId, resp, _splitFilename2, filename, extension, newFileName;
 
-var $TypeError = GetIntrinsic('%TypeError%');
+    return _regenerator.default.wrap(function _callee6$(_context6) {
+      while (1) {
+        switch (_context6.prev = _context6.next) {
+          case 0:
+            name = options.name, dirId = options.dirId, conflictStrategy = options.conflictStrategy;
+            _context6.prev = 1;
+            _context6.next = 4;
+            return getFullpath(client, dirId, name);
 
-var Get = __webpack_require__(771);
-var ToLength = __webpack_require__(781);
-var Type = __webpack_require__(775);
+          case 4:
+            path = _context6.sent;
+            _context6.next = 7;
+            return client.collection(_const.DOCTYPE_FILES).statByPath(path);
 
-// https://262.ecma-international.org/11.0/#sec-lengthofarraylike
+          case 7:
+            existingFile = _context6.sent;
+            fileId = existingFile.data.id;
 
-module.exports = function LengthOfArrayLike(obj) {
-	if (Type(obj) !== 'Object') {
-		throw new $TypeError('Assertion failed: `obj` must be an Object');
-	}
-	return ToLength(Get(obj, 'length'));
-};
+            if (!(conflictStrategy === 'erase')) {
+              _context6.next = 16;
+              break;
+            }
 
-// TODO: use this all over
+            _context6.next = 12;
+            return client.collection(_const.DOCTYPE_FILES).updateFile(file, _objectSpread(_objectSpread({}, options), {}, {
+              fileId: fileId
+            }));
 
+          case 12:
+            resp = _context6.sent;
+            return _context6.abrupt("return", resp);
 
-/***/ }),
-/* 781 */
-/***/ (function(module, exports, __webpack_require__) {
+          case 16:
+            // @ts-ignore
+            _splitFilename2 = splitFilename({
+              name: name,
+              type: 'file'
+            }), filename = _splitFilename2.filename, extension = _splitFilename2.extension;
+            newFileName = generateNewFileNameOnConflict(filename) + extension; //recall itself with the newFilename.
 
-"use strict";
+            return _context6.abrupt("return", uploadFileWithConflictStrategy(client, file, _objectSpread(_objectSpread({}, options), {}, {
+              name: newFileName
+            })));
 
+          case 19:
+            _context6.next = 26;
+            break;
 
-var MAX_SAFE_INTEGER = __webpack_require__(782);
+          case 21:
+            _context6.prev = 21;
+            _context6.t0 = _context6["catch"](1);
 
-var ToIntegerOrInfinity = __webpack_require__(783);
+            if (!/Not Found/.test(_context6.t0.message)) {
+              _context6.next = 25;
+              break;
+            }
 
-module.exports = function ToLength(argument) {
-	var len = ToIntegerOrInfinity(argument);
-	if (len <= 0) { return 0; } // includes converting -0 to +0
-	if (len > MAX_SAFE_INTEGER) { return MAX_SAFE_INTEGER; }
-	return len;
-};
+            return _context6.abrupt("return", client.collection(_const.DOCTYPE_FILES).createFile(file, options));
 
+          case 25:
+            throw _context6.t0;
 
-/***/ }),
-/* 782 */
-/***/ (function(module, exports, __webpack_require__) {
+          case 26:
+          case "end":
+            return _context6.stop();
+        }
+      }
+    }, _callee6, null, [[1, 21]]);
+  }));
 
-"use strict";
+  return function uploadFileWithConflictStrategy(_x16, _x17, _x18) {
+    return _ref7.apply(this, arguments);
+  };
+}();
+/**
+ * Read a file on a mobile
+ *
+ * @param {string} fileURL - The local file path (file://)
+ */
 
 
-var GetIntrinsic = __webpack_require__(550);
+exports.uploadFileWithConflictStrategy = uploadFileWithConflictStrategy;
 
-var $Math = GetIntrinsic('%Math%');
-var $Number = GetIntrinsic('%Number%');
+var readMobileFile = /*#__PURE__*/function () {
+  var _ref8 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(fileURL) {
+    var p;
+    return _regenerator.default.wrap(function _callee10$(_context10) {
+      while (1) {
+        switch (_context10.prev = _context10.next) {
+          case 0:
+            /** Cordova plugin doesn't support promise since they are supporting Android 4.X.X
+             * so we have to create manually a promise to be able to write beautiful code ;)
+             */
+            p = new Promise(function (resolve, reject) {
+              var onResolvedLocalFS = /*#__PURE__*/function () {
+                var _ref9 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(fileEntry) {
+                  return _regenerator.default.wrap(function _callee9$(_context9) {
+                    while (1) {
+                      switch (_context9.prev = _context9.next) {
+                        case 0:
+                          fileEntry.file( /*#__PURE__*/function () {
+                            var _ref10 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(file) {
+                              var reader;
+                              return _regenerator.default.wrap(function _callee8$(_context8) {
+                                while (1) {
+                                  switch (_context8.prev = _context8.next) {
+                                    case 0:
+                                      reader = new FileReader();
+                                      reader.onloadend = /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
+                                        return _regenerator.default.wrap(function _callee7$(_context7) {
+                                          while (1) {
+                                            switch (_context7.prev = _context7.next) {
+                                              case 0:
+                                                resolve(reader.result);
 
-module.exports = $Number.MAX_SAFE_INTEGER || $Math.pow(2, 53) - 1;
+                                              case 1:
+                                              case "end":
+                                                return _context7.stop();
+                                            }
+                                          }
+                                        }, _callee7);
+                                      })); // Read the file as an ArrayBuffer
 
+                                      reader.readAsArrayBuffer(file);
 
-/***/ }),
-/* 783 */
-/***/ (function(module, exports, __webpack_require__) {
+                                    case 3:
+                                    case "end":
+                                      return _context8.stop();
+                                  }
+                                }
+                              }, _callee8);
+                            }));
 
-"use strict";
+                            return function (_x21) {
+                              return _ref10.apply(this, arguments);
+                            };
+                          }(), function (err) {
+                            // Since this module is pretty recent, let's have this info in sentry if needed
+                            console.error('error getting fileentry file!' + err); // eslint-disable-line no-console
 
+                            reject(err);
+                          });
 
-var abs = __webpack_require__(784);
-var floor = __webpack_require__(785);
-var ToNumber = __webpack_require__(786);
+                        case 1:
+                        case "end":
+                          return _context9.stop();
+                      }
+                    }
+                  }, _callee9);
+                }));
 
-var $isNaN = __webpack_require__(796);
-var $isFinite = __webpack_require__(797);
-var $sign = __webpack_require__(798);
+                return function onResolvedLocalFS(_x20) {
+                  return _ref9.apply(this, arguments);
+                };
+              }();
 
-// https://262.ecma-international.org/12.0/#sec-tointegerorinfinity
+              var onError = function onError(error) {
+                reject(error);
+              };
+              /**
+               * file:/// can not be converted to a fileEntry without the Cordova's File plugin.
+               * `resolveLocalFileSystemURL` is provided by this plugin and can resolve the native
+               * path to a fileEntry readable by a `FileReader`
+               *
+               * When we finished to read the fileEntry as buffer, we start the upload process
+               *
+               */
+              // @ts-ignore
 
-module.exports = function ToIntegerOrInfinity(value) {
-	var number = ToNumber(value);
-	if ($isNaN(number) || number === 0) { return 0; }
-	if (!$isFinite(number)) { return number; }
-	return $sign(number) * floor(abs(number));
-};
 
+              window.resolveLocalFileSystemURL(fileURL, onResolvedLocalFS, onError);
+            });
+            return _context10.abrupt("return", p);
 
-/***/ }),
-/* 784 */
-/***/ (function(module, exports, __webpack_require__) {
+          case 2:
+          case "end":
+            return _context10.stop();
+        }
+      }
+    }, _callee10);
+  }));
 
-"use strict";
+  return function readMobileFile(_x19) {
+    return _ref8.apply(this, arguments);
+  };
+}();
+/**
+ * Upload a file on a mobile
+ *
+ * @param {CozyClient} client         - The CozyClient instance
+ * @param {string} fileURL            - The local file path (file://)
+ * @param {FileUploadOptions} options - The upload options
+ */
 
 
-var GetIntrinsic = __webpack_require__(550);
+exports.readMobileFile = readMobileFile;
 
-var $abs = GetIntrinsic('%Math.abs%');
+var doMobileUpload = /*#__PURE__*/function () {
+  var _ref12 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(client, fileURL, options) {
+    var file;
+    return _regenerator.default.wrap(function _callee11$(_context11) {
+      while (1) {
+        switch (_context11.prev = _context11.next) {
+          case 0:
+            _context11.next = 2;
+            return readMobileFile(fileURL);
 
-// http://262.ecma-international.org/5.1/#sec-5.2
+          case 2:
+            file = _context11.sent;
+            return _context11.abrupt("return", uploadFileWithConflictStrategy(client, file, options));
 
-module.exports = function abs(x) {
-	return $abs(x);
-};
+          case 4:
+          case "end":
+            return _context11.stop();
+        }
+      }
+    }, _callee11);
+  }));
 
+  return function doMobileUpload(_x22, _x23, _x24) {
+    return _ref12.apply(this, arguments);
+  };
+}();
+/**
+ * @param {string} [mimeType=''] - Mime type of file
+ * @param {string} [fileName=''] - Name of file
+ * @returns {boolean}
+ */
 
-/***/ }),
-/* 785 */
-/***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
+exports.doMobileUpload = doMobileUpload;
 
+var isPlainText = function isPlainText() {
+  var mimeType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
+  var fileName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
+  return mimeType ? /^text\//.test(mimeType) : /\.(txt|md)$/.test(fileName);
+};
+/**
+ * @param {import("../types").IOCozyFile} file - io.cozy.files document
+ * @returns {boolean}
+ */
 
-// var modulo = require('./modulo');
-var $floor = Math.floor;
 
-// http://262.ecma-international.org/5.1/#sec-5.2
+exports.isPlainText = isPlainText;
 
-module.exports = function floor(x) {
-	// return x - modulo(x, 1);
-	return $floor(x);
+var hasQualifications = function hasQualifications(file) {
+  return (0, _has.default)(file, 'metadata.qualification');
 };
+/**
+ * @param {import("../types").IOCozyFile} file - io.cozy.files document
+ * @returns {boolean}
+ */
 
 
-/***/ }),
-/* 786 */
-/***/ (function(module, exports, __webpack_require__) {
+exports.hasQualifications = hasQualifications;
 
-"use strict";
+var hasCertifications = function hasCertifications(file) {
+  return (0, _get.default)(file, 'metadata.carbonCopy', false) || (0, _get.default)(file, 'metadata.electronicSafe', false);
+};
+/**
+ * @param {import("../types").IOCozyFile} file - io.cozy.files document
+ * @returns {boolean}
+ */
 
 
-var GetIntrinsic = __webpack_require__(550);
+exports.hasCertifications = hasCertifications;
 
-var $TypeError = GetIntrinsic('%TypeError%');
-var $Number = GetIntrinsic('%Number%');
-var $RegExp = GetIntrinsic('%RegExp%');
-var $parseInteger = GetIntrinsic('%parseInt%');
+var isFromKonnector = function isFromKonnector(file) {
+  return (0, _has.default)(file, 'cozyMetadata.sourceAccount');
+};
+/**
+ * @param {CozyClient} client - Instance of CozyClient
+ * @param {string} fileId - Id of io.cozy.files document
+ * @returns {Promise<Blob>}
+ */
 
-var callBound = __webpack_require__(564);
-var regexTester = __webpack_require__(787);
-var isPrimitive = __webpack_require__(788);
 
-var $strSlice = callBound('String.prototype.slice');
-var isBinary = regexTester(/^0b[01]+$/i);
-var isOctal = regexTester(/^0o[0-7]+$/i);
-var isInvalidHexLiteral = regexTester(/^[-+]0x[0-9a-f]+$/i);
-var nonWS = ['\u0085', '\u200b', '\ufffe'].join('');
-var nonWSregex = new $RegExp('[' + nonWS + ']', 'g');
-var hasNonWS = regexTester(nonWSregex);
+exports.isFromKonnector = isFromKonnector;
 
-// whitespace from: https://es5.github.io/#x15.5.4.20
-// implementation from https://github.com/es-shims/es5-shim/blob/v3.4.0/es5-shim.js#L1304-L1324
-var ws = [
-	'\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003',
-	'\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028',
-	'\u2029\uFEFF'
-].join('');
-var trimRegex = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g');
-var $replace = callBound('String.prototype.replace');
-var $trim = function (value) {
-	return $replace(value, trimRegex, '');
-};
+var fetchBlobFileById = /*#__PURE__*/function () {
+  var _ref13 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(client, fileId) {
+    var fileColl, fileBin, fileBlob;
+    return _regenerator.default.wrap(function _callee12$(_context12) {
+      while (1) {
+        switch (_context12.prev = _context12.next) {
+          case 0:
+            fileColl = client.collection(_const.DOCTYPE_FILES);
+            _context12.next = 3;
+            return fileColl.fetchFileContentById(fileId);
 
-var ToPrimitive = __webpack_require__(789);
+          case 3:
+            fileBin = _context12.sent;
+            _context12.next = 6;
+            return fileBin.blob();
 
-// https://ecma-international.org/ecma-262/6.0/#sec-tonumber
+          case 6:
+            fileBlob = _context12.sent;
+            return _context12.abrupt("return", fileBlob);
 
-module.exports = function ToNumber(argument) {
-	var value = isPrimitive(argument) ? argument : ToPrimitive(argument, $Number);
-	if (typeof value === 'symbol') {
-		throw new $TypeError('Cannot convert a Symbol value to a number');
-	}
-	if (typeof value === 'bigint') {
-		throw new $TypeError('Conversion from \'BigInt\' to \'number\' is not allowed.');
-	}
-	if (typeof value === 'string') {
-		if (isBinary(value)) {
-			return ToNumber($parseInteger($strSlice(value, 2), 2));
-		} else if (isOctal(value)) {
-			return ToNumber($parseInteger($strSlice(value, 2), 8));
-		} else if (hasNonWS(value) || isInvalidHexLiteral(value)) {
-			return NaN;
-		}
-		var trimmed = $trim(value);
-		if (trimmed !== value) {
-			return ToNumber(trimmed);
-		}
+          case 8:
+          case "end":
+            return _context12.stop();
+        }
+      }
+    }, _callee12);
+  }));
 
-	}
-	return $Number(value);
-};
+  return function fetchBlobFileById(_x25, _x26) {
+    return _ref13.apply(this, arguments);
+  };
+}();
 
+exports.fetchBlobFileById = fetchBlobFileById;
 
 /***/ }),
-/* 787 */
+/* 746 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
-
+var baseToString = __webpack_require__(408),
+    castSlice = __webpack_require__(674),
+    charsEndIndex = __webpack_require__(747),
+    stringToArray = __webpack_require__(676),
+    toString = __webpack_require__(407),
+    trimmedEndIndex = __webpack_require__(546);
 
-var callBound = __webpack_require__(564);
+/**
+ * Removes trailing whitespace or specified characters from `string`.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category String
+ * @param {string} [string=''] The string to trim.
+ * @param {string} [chars=whitespace] The characters to trim.
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
+ * @returns {string} Returns the trimmed string.
+ * @example
+ *
+ * _.trimEnd('  abc  ');
+ * // => '  abc'
+ *
+ * _.trimEnd('-_-abc-_-', '_-');
+ * // => '-_-abc'
+ */
+function trimEnd(string, chars, guard) {
+  string = toString(string);
+  if (string && (guard || chars === undefined)) {
+    return string.slice(0, trimmedEndIndex(string) + 1);
+  }
+  if (!string || !(chars = baseToString(chars))) {
+    return string;
+  }
+  var strSymbols = stringToArray(string),
+      end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
 
-var $exec = callBound('RegExp.prototype.exec');
+  return castSlice(strSymbols, 0, end).join('');
+}
 
-module.exports = function regexTester(regex) {
-	return function test(s) { return $exec(regex, s) !== null; };
-};
+module.exports = trimEnd;
 
 
 /***/ }),
-/* 788 */
+/* 747 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
+var baseIndexOf = __webpack_require__(425);
 
+/**
+ * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol
+ * that is not found in the character symbols.
+ *
+ * @private
+ * @param {Array} strSymbols The string symbols to inspect.
+ * @param {Array} chrSymbols The character symbols to find.
+ * @returns {number} Returns the index of the last unmatched string symbol.
+ */
+function charsEndIndex(strSymbols, chrSymbols) {
+  var index = strSymbols.length;
 
-module.exports = function isPrimitive(value) {
-	return value === null || (typeof value !== 'function' && typeof value !== 'object');
-};
+  while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
+  return index;
+}
+
+module.exports = charsEndIndex;
 
 
 /***/ }),
-/* 789 */
+/* 748 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var toPrimitive = __webpack_require__(790);
+var _interopRequireWildcard = __webpack_require__(277);
 
-// https://ecma-international.org/ecma-262/6.0/#sec-toprimitive
+var _interopRequireDefault = __webpack_require__(1);
 
-module.exports = function ToPrimitive(input) {
-	if (arguments.length > 1) {
-		return toPrimitive(input, arguments[1]);
-	}
-	return toPrimitive(input);
-};
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.getQualification = exports.setQualification = exports.Qualification = void 0;
 
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-/***/ }),
-/* 790 */
-/***/ (function(module, exports, __webpack_require__) {
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(296));
 
-"use strict";
+var _createClass2 = _interopRequireDefault(__webpack_require__(297));
 
+var _lodash = __webpack_require__(249);
 
-var hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol';
+var qualificationModel = _interopRequireWildcard(__webpack_require__(749));
 
-var isPrimitive = __webpack_require__(791);
-var isCallable = __webpack_require__(792);
-var isDate = __webpack_require__(793);
-var isSymbol = __webpack_require__(795);
+var _logger = _interopRequireDefault(__webpack_require__(498));
 
-var ordinaryToPrimitive = function OrdinaryToPrimitive(O, hint) {
-	if (typeof O === 'undefined' || O === null) {
-		throw new TypeError('Cannot call method on ' + O);
-	}
-	if (typeof hint !== 'string' || (hint !== 'number' && hint !== 'string')) {
-		throw new TypeError('hint must be "string" or "number"');
-	}
-	var methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString'];
-	var method, result, i;
-	for (i = 0; i < methodNames.length; ++i) {
-		method = O[methodNames[i]];
-		if (isCallable(method)) {
-			result = method.call(O);
-			if (isPrimitive(result)) {
-				return result;
-			}
-		}
-	}
-	throw new TypeError('No default value');
-};
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-var GetMethod = function GetMethod(O, P) {
-	var func = O[P];
-	if (func !== null && typeof func !== 'undefined') {
-		if (!isCallable(func)) {
-			throw new TypeError(func + ' returned for property ' + P + ' of object ' + O + ' is not a function');
-		}
-		return func;
-	}
-	return void 0;
-};
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-// http://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive
-module.exports = function ToPrimitive(input) {
-	if (isPrimitive(input)) {
-		return input;
-	}
-	var hint = 'default';
-	if (arguments.length > 1) {
-		if (arguments[1] === String) {
-			hint = 'string';
-		} else if (arguments[1] === Number) {
-			hint = 'number';
-		}
-	}
+/**
+ * @typedef {object} QualificationAttributes
+ * @property {string} [label] - The qualification label.
+ * @property {string} [purpose] - The document purpose.
+ * @property {string} [sourceCategory] - The activity field of the document source.
+ * @property {string} [sourceSubCategory] - The sub-activity field of the document source.
+ * @property {Array<string>} [subjects] - On what is about the document.
+ */
 
-	var exoticToPrim;
-	if (hasSymbols) {
-		if (Symbol.toPrimitive) {
-			exoticToPrim = GetMethod(input, Symbol.toPrimitive);
-		} else if (isSymbol(input)) {
-			exoticToPrim = Symbol.prototype.valueOf;
-		}
-	}
-	if (typeof exoticToPrim !== 'undefined') {
-		var result = exoticToPrim.call(input, hint);
-		if (isPrimitive(result)) {
-			return result;
-		}
-		throw new TypeError('unable to convert exotic object to primitive');
-	}
-	if (hint === 'default' && (isDate(input) || isSymbol(input))) {
-		hint = 'string';
-	}
-	return ordinaryToPrimitive(input, hint === 'default' ? 'number' : hint);
-};
+/**
+ * This class is used to create document Qualification, i.e. metadata
+ * attributes used to describe the document.
+ * The qualifications model is stored in the assets, associating
+ * labels to attributes, namely: purpose, sourceCategory, sourceSubCategory
+ * and subjects.
+ * A qualification can be customized accordingly to rules detailed in
+ * the checkValueAttributes method.
+ */
+var Qualification = /*#__PURE__*/function () {
+  /**
+   * @param {string} label - The qualification label
+   * @param {QualificationAttributes} attributes - Qualification's attributes
+   */
+  function Qualification(label) {
+    var attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+    (0, _classCallCheck2.default)(this, Qualification);
+    var qualification = qualificationModel.qualifications.find(function (qualif) {
+      return qualif.label === label;
+    });
 
+    if (qualification) {
+      /**
+       * @type {string?}
+       */
+      this.label = qualification.label;
+      /**
+       * @type {string?}
+       */
 
-/***/ }),
-/* 791 */
-/***/ (function(module, exports, __webpack_require__) {
+      this.purpose = attributes.purpose || qualification.purpose;
+      this.sourceCategory = attributes.sourceCategory || qualification.sourceCategory;
+      this.sourceSubCategory = attributes.sourceSubCategory || qualification.sourceSubCategory;
+      this.subjects = attributes.subjects || qualification.subjects;
+    } else {
+      throw new Error("No qualification found for the label ".concat(label));
+    }
+  }
+  /**
+   * Check the given qualification attributes respects the following rules:
+   *   - For the given label, if a purpose, sourceCategory or sourceSubCategory
+   *     attribute is defined in the model, it must match the given qualification.
+   *   - If not defined in the model for the label, a custom purpose, sourceCategory or
+   *     sourceSubCategory value can be defined, if it exist in their respective
+   *     known values list.
+   *   - For the given label, if subjects are defined in the model, they must be included
+   *     in the given qualification.
+   *   - If extra subjects are set, they should exist in the known values.
+   *
+   * @param {object} attributes - The qualification attributes to check
+   */
 
-"use strict";
 
+  (0, _createClass2.default)(Qualification, [{
+    key: "checkAttributes",
+    value: function checkAttributes(attributes) {
+      if (this.purpose !== attributes.purpose) {
+        if (!this.purpose) {
+          var isKnownValue = qualificationModel.purposeKnownValues.includes(attributes.purpose);
 
-module.exports = function isPrimitive(value) {
-	return value === null || (typeof value !== 'function' && typeof value !== 'object');
-};
+          if (!isKnownValue) {
+            _logger.default.info("This purpose is not listed among the known values: ".concat(attributes.purpose, ". ") + "Please open an issue on https://github.com/cozy/cozy-client/issues");
+          }
+        } else {
+          throw new Error("The purpose for the label ".concat(this.label, " should be ").concat(this.purpose, ". ") + "Please use this or open an issue on https://github.com/cozy/cozy-client/issues");
+        }
+      }
 
+      if (this.sourceCategory !== attributes.sourceCategory) {
+        if (!this.sourceCategory) {
+          var _isKnownValue = qualificationModel.sourceCategoryKnownValues.includes(attributes.sourceCategory);
 
-/***/ }),
-/* 792 */
-/***/ (function(module, exports, __webpack_require__) {
+          if (!_isKnownValue) {
+            _logger.default.info("This sourceCategory is not listed among the known values: ".concat(attributes.sourceCategory, ". ") + "Please open an issue on https://github.com/cozy/cozy-client/issues");
+          }
+        } else {
+          throw new Error("The sourceCategory for the label ".concat(this.label, " should be ").concat(this.sourceCategory, ". ") + "Please use this or open an issue on https://github.com/cozy/cozy-client/issues");
+        }
+      }
 
-"use strict";
+      if (this.sourceSubCategory !== attributes.sourceSubCategory) {
+        if (!this.sourceSubCategory) {
+          var _isKnownValue2 = qualificationModel.sourceSubCategoryKnownValues.includes(attributes.sourceSubCategory);
 
+          if (!_isKnownValue2) {
+            _logger.default.info("This sourceSubCategory is not listed among the known values: ".concat(attributes.sourceSubCategory, ". ") + "Please open an issue on https://github.com/cozy/cozy-client/issues");
+          }
+        } else {
+          throw new Error("The sourceSubCategory for the label ".concat(this.label, " should be ").concat(this.sourceSubCategory, ". ") + "Please use this or open an issue on https://github.com/cozy/cozy-client/issues");
+        }
+      }
 
-var fnToStr = Function.prototype.toString;
-var reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;
-var badArrayLike;
-var isCallableMarker;
-if (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {
-	try {
-		badArrayLike = Object.defineProperty({}, 'length', {
-			get: function () {
-				throw isCallableMarker;
-			}
-		});
-		isCallableMarker = {};
-		// eslint-disable-next-line no-throw-literal
-		reflectApply(function () { throw 42; }, null, badArrayLike);
-	} catch (_) {
-		if (_ !== isCallableMarker) {
-			reflectApply = null;
-		}
-	}
-} else {
-	reflectApply = null;
-}
+      var missingSubjects = (0, _lodash.difference)(this.subjects, attributes.subjects);
 
-var constructorRegex = /^\s*class\b/;
-var isES6ClassFn = function isES6ClassFunction(value) {
-	try {
-		var fnStr = fnToStr.call(value);
-		return constructorRegex.test(fnStr);
-	} catch (e) {
-		return false; // not a function
-	}
-};
+      if (missingSubjects.length > 0) {
+        throw new Error("The subjects for the label ".concat(this.label, " should include ").concat(this.subjects, ". ") + "Please use this or open an issue on https://github.com/cozy/cozy-client/issues");
+      }
 
-var tryFunctionObject = function tryFunctionToStr(value) {
-	try {
-		if (isES6ClassFn(value)) { return false; }
-		fnToStr.call(value);
-		return true;
-	} catch (e) {
-		return false;
-	}
-};
-var toStr = Object.prototype.toString;
-var fnClass = '[object Function]';
-var genClass = '[object GeneratorFunction]';
-var hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`
-/* globals document: false */
-var documentDotAll = typeof document === 'object' && typeof document.all === 'undefined' && document.all !== undefined ? document.all : {};
+      var extraSubjects = (0, _lodash.difference)(attributes.subjects, this.subjects);
 
-module.exports = reflectApply
-	? function isCallable(value) {
-		if (value === documentDotAll) { return true; }
-		if (!value) { return false; }
-		if (typeof value !== 'function' && typeof value !== 'object') { return false; }
-		if (typeof value === 'function' && !value.prototype) { return true; }
-		try {
-			reflectApply(value, null, badArrayLike);
-		} catch (e) {
-			if (e !== isCallableMarker) { return false; }
-		}
-		return !isES6ClassFn(value);
-	}
-	: function isCallable(value) {
-		if (value === documentDotAll) { return true; }
-		if (!value) { return false; }
-		if (typeof value !== 'function' && typeof value !== 'object') { return false; }
-		if (typeof value === 'function' && !value.prototype) { return true; }
-		if (hasToStringTag) { return tryFunctionObject(value); }
-		if (isES6ClassFn(value)) { return false; }
-		var strClass = toStr.call(value);
-		return strClass === fnClass || strClass === genClass;
-	};
+      if (extraSubjects.length > 0) {
+        var unknownSubjects = (0, _lodash.difference)(extraSubjects, qualificationModel.subjectsKnownValues);
+        if (unknownSubjects.length > 0) _logger.default.info("These subjects are not listed among the known values: ".concat(unknownSubjects, ". ") + "Please open an issue on https://github.com/cozy/cozy-client/issues");
+      }
+    }
+    /**
+     * Set purpose to the qualification.
+     *
+     * @param {Array} purpose - The purpose to set.
+     * @returns {Qualification} The Qualification object.
+     */
+
+  }, {
+    key: "setPurpose",
+    value: function setPurpose(purpose) {
+      return new Qualification(this.label, _objectSpread(_objectSpread({}, this.toQualification()), {}, {
+        purpose: purpose
+      }));
+    }
+    /**
+     * Set sourceCategory to the qualification.
+     *
+     * @param {Array} sourceCategory - The sourceCategory to set.
+     * @returns {Qualification} The Qualification object.
+     */
 
+  }, {
+    key: "setSourceCategory",
+    value: function setSourceCategory(sourceCategory) {
+      return new Qualification(this.label, _objectSpread(_objectSpread({}, this.toQualification()), {}, {
+        sourceCategory: sourceCategory
+      }));
+    }
+    /**
+     * Set sourceSubCategory to the qualification.
+     *
+     * @param {Array} sourceSubCategory - The sourceSubCategory to set.
+     * @returns {Qualification} The Qualification object.
+     */
 
-/***/ }),
-/* 793 */
-/***/ (function(module, exports, __webpack_require__) {
+  }, {
+    key: "setSourceSubCategory",
+    value: function setSourceSubCategory(sourceSubCategory) {
+      return new Qualification(this.label, _objectSpread(_objectSpread({}, this.toQualification()), {}, {
+        sourceSubCategory: sourceSubCategory
+      }));
+    }
+    /**
+     * Set subjects to the qualification.
+     *
+     * @param {Array} subjects - The subjects to set.
+     * @returns {Qualification} The Qualification object.
+     */
 
-"use strict";
+  }, {
+    key: "setSubjects",
+    value: function setSubjects(subjects) {
+      return new Qualification(this.label, _objectSpread(_objectSpread({}, this.toQualification()), {}, {
+        subjects: subjects
+      }));
+    }
+    /**
+     * Returns the qualification attributes
+     *
+     * @returns {object} The qualification attributes
+     */
 
+  }, {
+    key: "toQualification",
+    value: function toQualification() {
+      return {
+        label: this.label,
+        purpose: this.purpose,
+        sourceCategory: this.sourceCategory,
+        sourceSubCategory: this.sourceSubCategory,
+        subjects: this.subjects
+      };
+    }
+  }]);
+  return Qualification;
+}();
+/**
+ * Returns the qualification associated to a label.
+ *
+ * @param {string} label - The label to qualify
+ * @returns {Qualification} - The qualification
+ */
 
-var getDay = Date.prototype.getDay;
-var tryDateObject = function tryDateGetDayCall(value) {
-	try {
-		getDay.call(value);
-		return true;
-	} catch (e) {
-		return false;
-	}
-};
 
-var toStr = Object.prototype.toString;
-var dateClass = '[object Date]';
-var hasToStringTag = __webpack_require__(794)();
+exports.Qualification = Qualification;
 
-module.exports = function isDateObject(value) {
-	if (typeof value !== 'object' || value === null) {
-		return false;
-	}
-	return hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;
+Qualification.getByLabel = function (label) {
+  return new Qualification(label);
 };
+/**
+ * Set the qualification to the document metadata
+ *
+ * @param {object} document - The document to set the qualification
+ * @param {Qualification} qualification - The qualification to set
+ * @returns {object} - The qualified document
+ */
 
 
-/***/ }),
-/* 794 */
-/***/ (function(module, exports, __webpack_require__) {
+var setQualification = function setQualification(document, qualification) {
+  if (qualification.label) {
+    new Qualification(qualification.label).checkAttributes(qualification);
+  } else {
+    throw new Error('You must set a label to qualify');
+  }
 
-"use strict";
+  return (0, _lodash.set)(document, 'metadata.qualification', qualification);
+};
+/**
+ * Helper to get the qualification from a document
+ *
+ * @param {object} document - The document
+ * @returns {Qualification} - The document qualification
+ *
+ */
 
 
-var hasSymbols = __webpack_require__(559);
+exports.setQualification = setQualification;
 
-/** @type {import('.')} */
-module.exports = function hasToStringTagShams() {
-	return hasSymbols() && !!Symbol.toStringTag;
+var getQualification = function getQualification(document) {
+  var docQualification = (0, _lodash.get)(document, 'metadata.qualification');
+  var qualification = new Qualification(docQualification.label, docQualification.qualification);
+  return qualification.toQualification();
 };
 
+exports.getQualification = getQualification;
 
 /***/ }),
-/* 795 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var toStr = Object.prototype.toString;
-var hasSymbols = __webpack_require__(558)();
-
-if (hasSymbols) {
-	var symToStr = Symbol.prototype.toString;
-	var symStringRegex = /^Symbol\(.*\)$/;
-	var isSymbolObject = function isRealSymbolObject(value) {
-		if (typeof value.valueOf() !== 'symbol') {
-			return false;
-		}
-		return symStringRegex.test(symToStr.call(value));
-	};
-
-	module.exports = function isSymbol(value) {
-		if (typeof value === 'symbol') {
-			return true;
-		}
-		if (toStr.call(value) !== '[object Symbol]') {
-			return false;
-		}
-		try {
-			return isSymbolObject(value);
-		} catch (e) {
-			return false;
-		}
-	};
-} else {
-
-	module.exports = function isSymbol(value) {
-		// this environment does not support Symbols.
-		return  false && false;
-	};
-}
+/* 749 */
+/***/ (function(module) {
 
+module.exports = JSON.parse("{\"qualifications\":[{\"label\":\"identity_photo\",\"purpose\":\"attestation\",\"subjects\":[\"identity\"]},{\"label\":\"national_id_card\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"civil_registration\",\"subjects\":[\"identity\"]},{\"label\":\"passport\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"civil_registration\",\"subjects\":[\"identity\"]},{\"label\":\"residence_permit\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"immigration\",\"subjects\":[\"permit\",\"identity\"]},{\"label\":\"family_record_book\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"civil_registration\",\"subjects\":[\"family\"]},{\"label\":\"birth_certificate\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"civil_registration\",\"subjects\":[\"identity\",\"family\"]},{\"label\":\"driver_license\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"transport\",\"subjects\":[\"permit\",\"driving\"]},{\"label\":\"other_identity_document\",\"purpose\":\"attestation\",\"subjects\":[\"identity\"]},{\"label\":\"wedding\",\"purpose\":\"contract\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"civil_registration\",\"subjects\":[\"family\"]},{\"label\":\"pacs\",\"purpose\":\"contract\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"civil_registration\",\"subjects\":[\"family\"]},{\"label\":\"divorce\",\"purpose\":\"contract\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"civil_registration\",\"subjects\":[\"family\"]},{\"label\":\"large_family_card\",\"purpose\":\"attestation\",\"sourceCategory\":\"transport\",\"subjects\":[\"right\"]},{\"label\":\"caf\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"family\",\"subjects\":[\"right\"]},{\"label\":\"other_family_document\",\"subjects\":[\"family\"]},{\"label\":\"diploma\",\"purpose\":\"attestation\",\"sourceCategory\":\"education\",\"subjects\":[\"achievement\"]},{\"label\":\"work_contract\",\"purpose\":\"contract\",\"sourceCategory\":\"employer\",\"subjects\":[\"work\",\"employment\"]},{\"label\":\"pay_sheet\",\"purpose\":\"attestation\",\"sourceCategory\":\"employer\",\"subjects\":[\"work\",\"revenues\"]},{\"label\":\"fidelity_card\",\"sourceCategory\":\"shopping\"},{\"label\":\"library_card\",\"sourceCategory\":\"individual\"},{\"label\":\"single_parent_benefit\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"family\",\"subjects\":[\"revenues\"]},{\"label\":\"transport_card\",\"sourceCategory\":\"transport\",\"subjects\":[\"vehicule\"]},{\"label\":\"electoral_card\",\"sourceCategory\":\"gov\"},{\"label\":\"employment_center_certificate\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"subjects\":[\"employment\"]},{\"label\":\"unemployment_benefit\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"subjects\":[\"revenues\"]},{\"label\":\"pension\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"subjects\":[\"revenues\"]},{\"label\":\"other_revenue\",\"purpose\":\"attestation\",\"subjects\":[\"revenues\"]},{\"label\":\"gradebook\",\"purpose\":\"report\",\"sourceCategory\":\"education\",\"subjects\":[\"history\"]},{\"label\":\"student_card\",\"purpose\":\"attestation\",\"sourceCategory\":\"education\",\"subjects\":[\"identity\",\"right\",\"employment\",\"education\"]},{\"label\":\"resume\",\"purpose\":\"description\",\"subjects\":[\"employment\"]},{\"label\":\"motivation_letter\",\"purpose\":\"description\",\"subjects\":[\"employment\"]},{\"label\":\"other_work_document\",\"purpose\":\"employment\"},{\"label\":\"health_book\",\"purpose\":\"attestation\",\"sourceCategory\":\"health\",\"subjects\":[\"capacity\",\"vaccine\"]},{\"label\":\"health_certificate\",\"purpose\":\"attestation\",\"sourceCategory\":\"health\",\"subjects\":[\"capacity\",\"vaccine\"]},{\"label\":\"pregnancy_medical_certificate\",\"purpose\":\"attestation\",\"sourceCategory\":\"health\",\"subjects\":[\"pregnancy\"]},{\"label\":\"work_disability_recognition\",\"purpose\":\"attestation\",\"sourceCategory\":\"health\",\"subjects\":[\"right\"]},{\"label\":\"national_health_insurance_card\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"health\",\"subjects\":[\"insurance\"]},{\"label\":\"national_health_insurance_right_certificate\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"health\",\"subjects\":[\"right\",\"insurance\"]},{\"label\":\"health_insurance_card\",\"purpose\":\"attestation\",\"sourceCategory\":\"insurance\",\"sourceSubCategory\":\"health\",\"subjects\":[\"insurance\"]},{\"label\":\"prescription\",\"purpose\":\"attestation\",\"sourceCategory\":\"health\",\"subjects\":[\"right\",\"medecine\"]},{\"label\":\"health_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"health\"},{\"label\":\"other_health_document\",\"subjects\":[\"health\"]},{\"label\":\"vehicle_registration\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"transport\",\"subjects\":[\"vehicule\",\"identity\",\"right\"]},{\"label\":\"car_insurance\",\"purpose\":\"attestation\",\"sourceCategory\":\"insurance\",\"sourceSubCategory\":\"transport\",\"subjects\":[\"insurance\",\"car\"]},{\"label\":\"mechanic_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"transport\"},{\"label\":\"transport_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"transport\"},{\"label\":\"other_transport_document\",\"sourceCategory\":\"transport\"},{\"label\":\"house_sale_agreeement\",\"purpose\":\"contract\",\"sourceCategory\":\"real_estate\",\"subjects\":[\"house\"]},{\"label\":\"real_estate_tax\",\"purpose\":\"invoice\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"real_estate\",\"subjects\":[\"tax\",\"house\"]},{\"label\":\"building_permit\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"real_estate\",\"subjects\":[\"permit\",\"house\"]},{\"label\":\"technical_diagnostic_record\",\"purpose\":\"report\",\"sourceCategory\":\"real_estate\",\"subjects\":[\"compliance\",\"house\"]},{\"label\":\"lease\",\"purpose\":\"contract\",\"sourceCategory\":\"real_estate\",\"subjects\":[\"house\"]},{\"label\":\"rent_receipt\",\"purpose\":\"invoice\",\"sourceCategory\":\"real_estate\",\"subjects\":[\"house\"]},{\"label\":\"house_insurance\",\"purpose\":\"contract\",\"sourceCategory\":\"insurance\",\"sourceSubCategory\":\"real_estate\",\"subjects\":[\"insurance\",\"house\"]},{\"label\":\"work_quote\",\"purpose\":\"description\",\"sourceCategory\":\"building\",\"subjects\":[\"building\",\"house\"]},{\"label\":\"work_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"building\",\"subjects\":[\"building\",\"house\"]},{\"label\":\"other_house_document\",\"subjects\":[\"house\"]},{\"label\":\"phone_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"telecom\",\"sourceSubCategory\":\"mobile\"},{\"label\":\"isp_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"telecom\",\"sourceSubCategory\":\"internet\",\"subjects\":[\"subscription\"]},{\"label\":\"telecom_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"telecom\"},{\"label\":\"energy_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"energy\"},{\"label\":\"water_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"water\"},{\"label\":\"energy_contract\",\"purpose\":\"contract\",\"sourceCategory\":\"energy\"},{\"label\":\"appliance_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"retail\"},{\"label\":\"web_service_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"web\"},{\"label\":\"restaurant_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"alimentation\"},{\"label\":\"grocery_invoice\",\"purpose\":\"invoice\",\"sourceCategory\":\"shopping\"},{\"label\":\"other_invoice\",\"purpose\":\"invoice\"},{\"label\":\"tax_return\",\"purpose\":\"report\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"tax\",\"subjects\":[\"tax\"]},{\"label\":\"tax_notice\",\"purpose\":\"invoice\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"tax\",\"subjects\":[\"tax\"]},{\"label\":\"tax_timetable\",\"purpose\":\"report\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"tax\",\"subjects\":[\"tax\"]},{\"label\":\"other_tax_document\",\"subjects\":[\"tax\"]},{\"label\":\"bank_details\",\"purpose\":\"attestation\",\"sourceCategory\":\"bank\",\"subjects\":[\"bank_account\"]},{\"label\":\"bank_statement\",\"purpose\":\"report\",\"sourceCategory\":\"bank\",\"subjects\":[\"history\"]},{\"label\":\"loan_agreement\",\"purpose\":\"contract\",\"sourceCategory\":\"bank\"},{\"label\":\"other_bank_document\",\"sourceCategory\":\"bank\"},{\"label\":\"receipt\",\"purpose\":\"report\"},{\"label\":\"payment_proof_family_allowance\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"tax\",\"subjects\":[\"subvention\"]},{\"label\":\"school_attendance_certificate\",\"purpose\":\"attestation\",\"sourceCategory\":\"education\",\"subjects\":[\"identity\",\"right\",\"education\"]},{\"label\":\"school_insurance_certificate\",\"purpose\":\"attestation\",\"sourceCategory\":\"education\",\"subjects\":[\"education\",\"insurance\"]},{\"label\":\"unfit_for_habitation_declaration\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"real_estate\",\"subjects\":[\"compliance\"]},{\"label\":\"accommodation_proof\",\"purpose\":\"attestation\",\"sourceCategory\":\"individual\",\"subjects\":[\"address\"]},{\"label\":\"citizen_registration_certificate\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"civil_registration\",\"subjects\":[\"achievement\",\"education\"]},{\"label\":\"personal_sporting_licence\",\"purpose\":\"attestation\",\"sourceCategory\":\"gov\",\"sourceSubCategory\":\"sport\",\"subjects\":[\"permit\",\"invoice\"]},{\"label\":\"other_activity_document\",\"sourceSubCategory\":\"sport\",\"subjects\":[\"permit\",\"invoice\"]},{\"label\":\"other_administrative_document\"},{\"label\":\"note_identity_document\"},{\"label\":\"note_family_document\"},{\"label\":\"note_work_document\"},{\"label\":\"note_health_document\"},{\"label\":\"note_house_document\"},{\"label\":\"note_transport_document\"},{\"label\":\"note_activity_document\"},{\"label\":\"note_finance\"},{\"label\":\"note_invoice\"}],\"purposeKnownValues\":[\"attestation\",\"contract\",\"invoice\",\"report\",\"description\",\"evaluation\",\"employment\"],\"sourceCategoryKnownValues\":[\"bank\",\"insurance\",\"retail\",\"telecom\",\"energy\",\"water\",\"health\",\"gov\",\"association\",\"education\",\"employer\",\"transport\",\"goods\",\"alimentation\",\"building\",\"real_estate\",\"web\",\"individual\",\"shopping\"],\"sourceSubCategoryKnownValues\":[\"civil_registration\",\"immigration\",\"transport\",\"family\",\"tax\",\"health\",\"real_estate\",\"mobile\",\"internet\",\"citizen\",\"sport\"],\"subjectsKnownValues\":[\"identity\",\"permit\",\"family\",\"address\",\"driving\",\"right\",\"subvention\",\"achievement\",\"degree\",\"work\",\"employment\",\"revenues\",\"history\",\"insurance\",\"medical_act\",\"vehicule\",\"car\",\"moto\",\"truck\",\"boat\",\"subscription\",\"buy/sale\",\"house\",\"compliance\",\"building\",\"food\",\"real_estate\",\"tax\",\"address\",\"education\",\"statement\",\"course\",\"internet\",\"phone\",\"vaccine\",\"capacity\",\"health\",\"drugs\",\"child\",\"pregnancy\",\"bank_account\"]}");
 
 /***/ }),
-/* 796 */
+/* 750 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-module.exports = Number.isNaN || function isNaN(a) {
-	return a !== a;
-};
-
-
-/***/ }),
-/* 797 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
+var _interopRequireDefault = __webpack_require__(1);
 
-var $isNaN = Number.isNaN || function (a) { return a !== a; };
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.getReferencedFolder = exports.createFolderWithReference = exports.ensureMagicFolder = exports.MAGIC_FOLDERS = void 0;
 
-module.exports = Number.isFinite || function (x) { return typeof x === 'number' && !$isNaN(x) && x !== Infinity && x !== -Infinity; };
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-/***/ }),
-/* 798 */
-/***/ (function(module, exports, __webpack_require__) {
+var _sortBy = _interopRequireDefault(__webpack_require__(751));
 
-"use strict";
+var _CozyClient = _interopRequireDefault(__webpack_require__(279));
 
+var _const = __webpack_require__(619);
 
-module.exports = function sign(number) {
-	return number >= 0 ? 1 : -1;
+var APP_DOCTYPE = 'io.cozy.apps';
+var administrative = 'administrative';
+var photos = 'photos';
+var MAGIC_FOLDERS = {
+  ADMINISTRATIVE: "".concat(APP_DOCTYPE, "/").concat(administrative),
+  PHOTOS: "".concat(APP_DOCTYPE, "/").concat(photos),
+  PHOTOS_BACKUP: "".concat(APP_DOCTYPE, "/").concat(photos, "/mobile"),
+  PHOTOS_UPLOAD: "".concat(APP_DOCTYPE, "/").concat(photos, "/upload"),
+  NOTES: "".concat(APP_DOCTYPE, "/notes"),
+  HOME: "".concat(APP_DOCTYPE, "/home"),
+  PAPERS: "".concat(APP_DOCTYPE, "/").concat(administrative, "/papers"),
+  COACH_CO2: "".concat(APP_DOCTYPE, "/").concat(administrative, "/coachco2")
 };
+/**
+ * Returns a "Magic Folder", given its id. See https://docs.cozy.io/en/cozy-doctypes/docs/io.cozy.apps/#special-iocozyapps-doctypes
+ *
+ * @param  {CozyClient} client    cozy-client instance
+ * @param  {string} id Magic Folder id. `CozyFolder.magicFolders` contains the
+ * ids of folders that can be magic folders.
+ * @param {string} path Default path to use if magic folder does not exist
+ * @returns {Promise<import("../types").IOCozyFolder>} Folder document
+ */
+
+exports.MAGIC_FOLDERS = MAGIC_FOLDERS;
 
+var ensureMagicFolder = /*#__PURE__*/function () {
+  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client, id, path) {
+    var magicFolderDocument, existingMagicFolder, magicFoldersValues;
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            magicFolderDocument = {
+              _type: APP_DOCTYPE,
+              _id: id
+            };
+            _context.next = 3;
+            return getReferencedFolder(client, magicFolderDocument);
 
-/***/ }),
-/* 799 */
-/***/ (function(module, exports, __webpack_require__) {
+          case 3:
+            existingMagicFolder = _context.sent;
 
-"use strict";
+            if (!existingMagicFolder) {
+              _context.next = 6;
+              break;
+            }
 
+            return _context.abrupt("return", existingMagicFolder);
 
-var GetIntrinsic = __webpack_require__(550);
+          case 6:
+            magicFoldersValues = Object.values(MAGIC_FOLDERS);
 
-var $Object = GetIntrinsic('%Object%');
+            if (magicFoldersValues.includes(id)) {
+              _context.next = 9;
+              break;
+            }
 
-var RequireObjectCoercible = __webpack_require__(765);
+            throw new Error("Cannot create Magic folder with id ".concat(id, ". Allowed values are ").concat(magicFoldersValues.join(', '), "."));
 
-// https://ecma-international.org/ecma-262/6.0/#sec-toobject
+          case 9:
+            if (path) {
+              _context.next = 11;
+              break;
+            }
 
-module.exports = function ToObject(value) {
-	RequireObjectCoercible(value);
-	return $Object(value);
-};
+            throw new Error('Magic folder default path must be defined');
 
+          case 11:
+            return _context.abrupt("return", createFolderWithReference(client, path, magicFolderDocument));
 
-/***/ }),
-/* 800 */
-/***/ (function(module, exports, __webpack_require__) {
+          case 12:
+          case "end":
+            return _context.stop();
+        }
+      }
+    }, _callee);
+  }));
 
-"use strict";
+  return function ensureMagicFolder(_x, _x2, _x3) {
+    return _ref.apply(this, arguments);
+  };
+}();
+/**
+ * The next functions are considered private and only exported for unit tests
+ */
 
+/**
+ * Create a folder with a reference to the given document
+ *
+ * @param  {CozyClient}  client - cozy-client instance
+ * @param  {string}  path - Folder path
+ * @param  {import("../types").CozyClientDocument}  document - Document to make reference to. Any doctype.
+ * @returns {Promise<import("../types").IOCozyFolder>}  Folder document
+ */
 
-var GetIntrinsic = __webpack_require__(550);
 
-var $String = GetIntrinsic('%String%');
-var $TypeError = GetIntrinsic('%TypeError%');
+exports.ensureMagicFolder = ensureMagicFolder;
 
-// https://ecma-international.org/ecma-262/6.0/#sec-tostring
+var createFolderWithReference = /*#__PURE__*/function () {
+  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(client, path, document) {
+    var collection, dirId, _yield$collection$get, dirInfos;
 
-module.exports = function ToString(argument) {
-	if (typeof argument === 'symbol') {
-		throw new $TypeError('Cannot convert a Symbol value to a string');
-	}
-	return $String(argument);
-};
+    return _regenerator.default.wrap(function _callee2$(_context2) {
+      while (1) {
+        switch (_context2.prev = _context2.next) {
+          case 0:
+            collection = client.collection(_const.DOCTYPE_FILES);
+            _context2.next = 3;
+            return collection.ensureDirectoryExists(path);
 
+          case 3:
+            dirId = _context2.sent;
+            _context2.next = 6;
+            return collection.addReferencesTo(document, [{
+              _id: dirId
+            }]);
 
-/***/ }),
-/* 801 */
-/***/ (function(module, exports, __webpack_require__) {
+          case 6:
+            _context2.next = 8;
+            return collection.get(dirId);
 
-"use strict";
+          case 8:
+            _yield$collection$get = _context2.sent;
+            dirInfos = _yield$collection$get.data;
+            return _context2.abrupt("return", dirInfos);
 
+          case 11:
+          case "end":
+            return _context2.stop();
+        }
+      }
+    }, _callee2);
+  }));
 
-var strValue = String.prototype.valueOf;
-var tryStringObject = function tryStringObject(value) {
-	try {
-		strValue.call(value);
-		return true;
-	} catch (e) {
-		return false;
-	}
-};
-var toStr = Object.prototype.toString;
-var strClass = '[object String]';
-var hasToStringTag = __webpack_require__(794)();
+  return function createFolderWithReference(_x4, _x5, _x6) {
+    return _ref2.apply(this, arguments);
+  };
+}();
+/**
+ * Returns the most recent folder referenced by the given document
+ *
+ * @param  {CozyClient}  client    cozy-client instance
+ * @param  {import("../types").CozyClientDocument}  document  Document to get references from
+ * @returns {Promise<import("../types").IOCozyFolder>} Folder referenced by the given document
+ */
 
-module.exports = function isString(value) {
-	if (typeof value === 'string') {
-		return true;
-	}
-	if (typeof value !== 'object') {
-		return false;
-	}
-	return hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass;
-};
 
+exports.createFolderWithReference = createFolderWithReference;
 
-/***/ }),
-/* 802 */
-/***/ (function(module, exports, __webpack_require__) {
+var getReferencedFolder = /*#__PURE__*/function () {
+  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(client, document) {
+    var _yield$client$collect, included, foldersOutsideTrash;
 
-"use strict";
+    return _regenerator.default.wrap(function _callee3$(_context3) {
+      while (1) {
+        switch (_context3.prev = _context3.next) {
+          case 0:
+            _context3.next = 2;
+            return client.collection(_const.DOCTYPE_FILES).findReferencedBy(document);
 
+          case 2:
+            _yield$client$collect = _context3.sent;
+            included = _yield$client$collect.included;
+            foldersOutsideTrash = included.filter(function (folder) {
+              return !/^\/\.cozy_trash/.test(folder.attributes.path);
+            }); // there can be multiple folders with the same reference in some edge cases
+            // when this happens we return the most recent one
 
-var arrayMethodBoxesProperly = __webpack_require__(803);
+            return _context3.abrupt("return", foldersOutsideTrash.length > 0 ? (0, _sortBy.default)(foldersOutsideTrash, 'created_at').pop() : null);
 
-var implementation = __webpack_require__(767);
+          case 6:
+          case "end":
+            return _context3.stop();
+        }
+      }
+    }, _callee3);
+  }));
 
-module.exports = function getPolyfill() {
-	var method = Array.prototype.forEach;
-	return arrayMethodBoxesProperly(method) ? method : implementation;
-};
+  return function getReferencedFolder(_x7, _x8) {
+    return _ref3.apply(this, arguments);
+  };
+}();
 
+exports.getReferencedFolder = getReferencedFolder;
 
 /***/ }),
-/* 803 */
-/***/ (function(module, exports) {
+/* 751 */
+/***/ (function(module, exports, __webpack_require__) {
 
-module.exports = function properlyBoxed(method) {
-	// Check node 0.6.21 bug where third parameter is not boxed
-	var properlyBoxesNonStrict = true;
-	var properlyBoxesStrict = true;
-	var threwException = false;
-	if (typeof method === 'function') {
-		try {
-			// eslint-disable-next-line max-params
-			method.call('f', function (_, __, O) {
-				if (typeof O !== 'object') {
-					properlyBoxesNonStrict = false;
-				}
-			});
+var baseFlatten = __webpack_require__(420),
+    baseOrderBy = __webpack_require__(646),
+    baseRest = __webpack_require__(433),
+    isIterateeCall = __webpack_require__(539);
 
-			method.call(
-				[null],
-				function () {
-					'use strict';
+/**
+ * Creates an array of elements, sorted in ascending order by the results of
+ * running each element in a collection thru each iteratee. This method
+ * performs a stable sort, that is, it preserves the original sort order of
+ * equal elements. The iteratees are invoked with one argument: (value).
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Collection
+ * @param {Array|Object} collection The collection to iterate over.
+ * @param {...(Function|Function[])} [iteratees=[_.identity]]
+ *  The iteratees to sort by.
+ * @returns {Array} Returns the new sorted array.
+ * @example
+ *
+ * var users = [
+ *   { 'user': 'fred',   'age': 48 },
+ *   { 'user': 'barney', 'age': 36 },
+ *   { 'user': 'fred',   'age': 30 },
+ *   { 'user': 'barney', 'age': 34 }
+ * ];
+ *
+ * _.sortBy(users, [function(o) { return o.user; }]);
+ * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]
+ *
+ * _.sortBy(users, ['user', 'age']);
+ * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]
+ */
+var sortBy = baseRest(function(collection, iteratees) {
+  if (collection == null) {
+    return [];
+  }
+  var length = iteratees.length;
+  if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
+    iteratees = [];
+  } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
+    iteratees = [iteratees[0]];
+  }
+  return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
+});
 
-					properlyBoxesStrict = typeof this === 'string'; // eslint-disable-line no-invalid-this
-				},
-				'x'
-			);
-		} catch (e) {
-			threwException = true;
-		}
-		return !threwException && properlyBoxesNonStrict && properlyBoxesStrict;
-	}
-	return false;
-};
+module.exports = sortBy;
 
 
 /***/ }),
-/* 804 */
+/* 752 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var define = __webpack_require__(761);
-var getPolyfill = __webpack_require__(802);
-
-module.exports = function shimForEach() {
-	var polyfill = getPolyfill();
-	define(
-		Array.prototype,
-		{ forEach: polyfill },
-		{ forEach: function () { return Array.prototype.forEach !== polyfill; } }
-	);
-	return polyfill;
-};
-
+var _interopRequireDefault = __webpack_require__(1);
 
-/***/ }),
-/* 805 */
-/***/ (function(module, exports, __webpack_require__) {
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.fetchURL = exports.generateUrlForNote = exports.generatePrivateUrl = void 0;
 
-"use strict";
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-var define = __webpack_require__(761);
-var callBind = __webpack_require__(565);
+var _helpers = __webpack_require__(663);
 
-var implementation = __webpack_require__(806);
-var getPolyfill = __webpack_require__(807);
-var shim = __webpack_require__(808);
+var _logger = _interopRequireDefault(__webpack_require__(498));
 
-var polyfill = callBind(getPolyfill(), Object);
+/**
+ *
+ * @param {string} notesAppUrl URL to the Notes App (https://notes.foo.mycozy.cloud)
+ * @param {object} file io.cozy.files object
+ */
+var generatePrivateUrl = function generatePrivateUrl(notesAppUrl, file) {
+  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+  var returnUrl = options.returnUrl;
+  var url = new URL(notesAppUrl);
 
-define(polyfill, {
-	getPolyfill: getPolyfill,
-	implementation: implementation,
-	shim: shim
-});
+  if (returnUrl) {
+    url.searchParams.set('returnUrl', returnUrl);
+  }
 
-module.exports = polyfill;
+  url.hash = "#/n/".concat(file.id);
+  return url.toString();
+};
 
+exports.generatePrivateUrl = generatePrivateUrl;
 
-/***/ }),
-/* 806 */
-/***/ (function(module, exports, __webpack_require__) {
+var generateUrlForNote = function generateUrlForNote(notesAppUrl, file) {
+  _logger.default.warn('generateUrlForNote is deprecated. Please use models.note.generatePrivateUrl instead');
 
-"use strict";
+  return generatePrivateUrl(notesAppUrl, file);
+};
+/**
+ * Fetch and build an URL to open a note.
+ *
+ * @param {object} client CozyClient instance
+ * @param {object} file io.cozy.file object
+ * @returns {Promise<string>} url
+ */
 
 
-var RequireObjectCoercible = __webpack_require__(765);
-var callBound = __webpack_require__(564);
-var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');
-var $push = callBound('Array.prototype.push');
+exports.generateUrlForNote = generateUrlForNote;
 
-module.exports = function entries(O) {
-	var obj = RequireObjectCoercible(O);
-	var entrys = [];
-	for (var key in obj) {
-		if ($isEnumerable(obj, key)) { // checks own-ness as well
-			$push(entrys, [key, obj[key]]);
-		}
-	}
-	return entrys;
-};
+var fetchURL = /*#__PURE__*/function () {
+  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client, file) {
+    var _yield$client$getStac, _yield$client$getStac2, note_id, subdomain, protocol, instance, sharecode, public_name, searchParams;
 
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            _context.next = 2;
+            return client.getStackClient().collection('io.cozy.notes').fetchURL({
+              _id: file.id
+            });
 
-/***/ }),
-/* 807 */
-/***/ (function(module, exports, __webpack_require__) {
+          case 2:
+            _yield$client$getStac = _context.sent;
+            _yield$client$getStac2 = _yield$client$getStac.data;
+            note_id = _yield$client$getStac2.note_id;
+            subdomain = _yield$client$getStac2.subdomain;
+            protocol = _yield$client$getStac2.protocol;
+            instance = _yield$client$getStac2.instance;
+            sharecode = _yield$client$getStac2.sharecode;
+            public_name = _yield$client$getStac2.public_name;
 
-"use strict";
+            if (!sharecode) {
+              _context.next = 17;
+              break;
+            }
+
+            searchParams = [['id', note_id]];
+            searchParams.push(['sharecode', sharecode]);
+            if (public_name) searchParams.push(['username', public_name]);
+            return _context.abrupt("return", (0, _helpers.generateWebLink)({
+              cozyUrl: "".concat(protocol, "://").concat(instance),
+              searchParams: searchParams,
+              pathname: '/public/',
+              slug: 'notes',
+              subDomainType: subdomain
+            }));
 
+          case 17:
+            return _context.abrupt("return", (0, _helpers.generateWebLink)({
+              cozyUrl: "".concat(protocol, "://").concat(instance),
+              pathname: '',
+              slug: 'notes',
+              subDomainType: subdomain,
+              hash: "/n/".concat(note_id)
+            }));
 
-var implementation = __webpack_require__(806);
+          case 18:
+          case "end":
+            return _context.stop();
+        }
+      }
+    }, _callee);
+  }));
 
-module.exports = function getPolyfill() {
-	return typeof Object.entries === 'function' ? Object.entries : implementation;
-};
+  return function fetchURL(_x, _x2) {
+    return _ref.apply(this, arguments);
+  };
+}();
 
+exports.fetchURL = fetchURL;
 
 /***/ }),
-/* 808 */
+/* 753 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var getPolyfill = __webpack_require__(807);
-var define = __webpack_require__(761);
-
-module.exports = function shimEntries() {
-	var polyfill = getPolyfill();
-	define(Object, { entries: polyfill }, {
-		entries: function testEntries() {
-			return Object.entries !== polyfill;
-		}
-	});
-	return polyfill;
-};
-
+var _interopRequireDefault = __webpack_require__(1);
 
-/***/ }),
-/* 809 */
-/***/ (function(module, exports, __webpack_require__) {
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.isReadOnly = isReadOnly;
+exports.fetchOwn = fetchOwn;
+exports.isForType = isForType;
+exports.isDocumentReadOnly = isDocumentReadOnly;
+exports.isShortcutCreatedOnTheRecipientCozy = void 0;
 
-"use strict";
-/**
- * Copyright (c) 2014-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-/**
- * Similar to invariant but only logs a warning if the condition is not met.
- * This can be used to log issues in development environments in critical
- * paths. Removing the logging code for production environments will keep the
- * same logic and follow the same code paths.
- */
+var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(288));
 
-var __DEV__ = "none" !== 'production';
+var _intersection = _interopRequireDefault(__webpack_require__(641));
 
-var warning = function() {};
+var _get = _interopRequireDefault(__webpack_require__(399));
 
-if (__DEV__) {
-  var printWarning = function printWarning(format, args) {
-    var len = arguments.length;
-    args = new Array(len > 1 ? len - 1 : 0);
-    for (var key = 1; key < len; key++) {
-      args[key - 1] = arguments[key];
-    }
-    var argIndex = 0;
-    var message = 'Warning: ' +
-      format.replace(/%s/g, function() {
-        return args[argIndex++];
-      });
-    if (typeof console !== 'undefined') {
-      console.error(message);
-    }
-    try {
-      // --- Welcome to debugging React ---
-      // This error was thrown as a convenience so that you can use this stack
-      // to find the callsite that caused this warning to fire.
-      throw new Error(message);
-    } catch (x) {}
-  }
+var _CozyClient = _interopRequireDefault(__webpack_require__(279));
 
-  warning = function(condition, format, args) {
-    var len = arguments.length;
-    args = new Array(len > 2 ? len - 2 : 0);
-    for (var key = 2; key < len; key++) {
-      args[key - 2] = arguments[key];
-    }
-    if (format === undefined) {
-      throw new Error(
-          '`warning(condition, format, ...args)` requires a warning ' +
-          'message argument'
-      );
-    }
-    if (!condition) {
-      printWarning.apply(null, [format].concat(args));
-    }
-  };
-}
+var _dsl = __webpack_require__(495);
 
-module.exports = warning;
+var _file = __webpack_require__(745);
 
+var _const = __webpack_require__(619);
 
-/***/ }),
-/* 810 */
-/***/ (function(module, exports, __webpack_require__) {
+var _logger = _interopRequireDefault(__webpack_require__(498));
 
-"use strict";
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-var hasOwnProperty = {}.hasOwnProperty;
-var call = Function.prototype.call;
+/**
+ * @typedef {object} Document - Couchdb document like an io.cozy.files
+ * @property {string} _id
+ * @property {string} id
+ * @property {string} _type
+ * @property {string} type
+ */
 
-module.exports = call.bind ? call.bind(hasOwnProperty) : function (O, P) {
-  return call.call(hasOwnProperty, O, P);
-};
+/**
+ * @typedef {('ALL'|'GET'|'PATCH'|'POST'|'PUT'|'DELETE')} PermissionVerb
+ */
 
+/**
+ * @typedef {object} PermissionItem
+ * @property {PermissionVerb[]} verbs - ALL, GET, PUT, PATCH, DELETE, POST…
+ * @property {string} selector - defaults to `id`
+ * @property {string[]} values
+ * @property {string} type - a couch db database like 'io.cozy.files'
+ */
 
-/***/ }),
-/* 811 */
-/***/ (function(module, exports, __webpack_require__) {
+/**
+ * Is this permission read only ?
+ *
+ * @private
+ * @param {PermissionItem} perm - permission node in a io.cozy.permissions document
+ * @param {object} options - Options
+ * @param {PermissionVerb[]} [options.writability] - Writability
+ * @returns {boolean} true if the note should be displayed read-only
+ */
+function isReadOnly(perm) {
+  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  var _options$writability = options.writability,
+      writability = _options$writability === void 0 ? ['PATCH', 'POST', 'PUT', 'DELETE'] : _options$writability;
+  return perm.verbs && // no verbs is equivalent to ['ALL']
+  perm.verbs.length > 0 && // empty array is equivalent to ['ALL']
+  (0, _intersection.default)(perm.verbs, ['ALL'].concat((0, _toConsumableArray2.default)(writability))).length === 0;
+}
+/**
+ * Fetches the list of permissions blocks
+ *
+ * @param {CozyClient} client -
+ * @returns {Promise<PermissionItem[]>} list of permissions
+ */
 
-"use strict";
 
+function fetchOwn(_x) {
+  return _fetchOwn.apply(this, arguments);
+}
+/**
+ * Checks if the permission item is about a specific doctype
+ *
+ * @param {PermissionItem} permission -
+ * @param {string} type - doctype
+ */
 
-var callBind = __webpack_require__(565);
-var define = __webpack_require__(761);
-var RequireObjectCoercible = __webpack_require__(765);
 
-var implementation = __webpack_require__(812);
-var getPolyfill = __webpack_require__(813);
-var shim = __webpack_require__(814);
+function _fetchOwn() {
+  _fetchOwn = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client) {
+    var collection, data, permissions;
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            collection = client.collection('io.cozy.permissions');
+            _context.next = 3;
+            return collection.fetchOwnPermissions();
 
-var bound = callBind(getPolyfill());
-var boundMethod = function trim(receiver) {
-	RequireObjectCoercible(receiver);
-	return bound(receiver);
-};
+          case 3:
+            data = _context.sent;
+            permissions = (0, _get.default)(data, 'data.attributes.permissions');
 
-define(boundMethod, {
-	getPolyfill: getPolyfill,
-	implementation: implementation,
-	shim: shim
-});
+            if (permissions) {
+              _context.next = 7;
+              break;
+            }
 
-module.exports = boundMethod;
+            throw "Can't get self permissions";
 
+          case 7:
+            return _context.abrupt("return", Object.values(permissions));
 
-/***/ }),
-/* 812 */
-/***/ (function(module, exports, __webpack_require__) {
+          case 8:
+          case "end":
+            return _context.stop();
+        }
+      }
+    }, _callee);
+  }));
+  return _fetchOwn.apply(this, arguments);
+}
 
-"use strict";
+function isForType(permission, type) {
+  return permission.type === type || permission.type + '.*' === type;
+}
+/**
+ * Finds the permission block for the the file
+ * in the permissions owned by the current cozy-client.
+ *
+ * Iterates through parent folders if needed
+ * until we can find the permissions attached to the share
+ *
+ * @private
+ * @param {object} options - Options
+ * @param {Document} options.document - a couchdb document
+ * @param {CozyClient} options.client - A cozy client
+ * @param {PermissionItem[]} options.permissions -
+ * @returns {Promise<PermissionItem|undefined>} the corresponding permission block
+ */
 
 
-var RequireObjectCoercible = __webpack_require__(765);
-var ToString = __webpack_require__(800);
-var callBound = __webpack_require__(564);
-var $replace = callBound('String.prototype.replace');
+function findPermissionFor(_x2) {
+  return _findPermissionFor2.apply(this, arguments);
+}
 
-var mvsIsWS = (/^\s$/).test('\u180E');
-/* eslint-disable no-control-regex */
-var leftWhitespace = mvsIsWS
-	? /^[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+/
-	: /^[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+/;
-var rightWhitespace = mvsIsWS
-	? /[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+$/
-	: /[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+$/;
-/* eslint-enable no-control-regex */
+function _findPermissionFor2() {
+  _findPermissionFor2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(options) {
+    var document, client, permissions, id, type, doc, definedPermissions, perms, getFile, _getFile, _findPermissionFor, _findPermissionFor3;
 
-module.exports = function trim() {
-	var S = ToString(RequireObjectCoercible(this));
-	return $replace($replace(S, leftWhitespace, ''), rightWhitespace, '');
-};
+    return _regenerator.default.wrap(function _callee4$(_context4) {
+      while (1) {
+        switch (_context4.prev = _context4.next) {
+          case 0:
+            _findPermissionFor3 = function _findPermissionFor5() {
+              _findPermissionFor3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(_ref) {
+                var doc, client, perms, perm, parentId, parentFolder;
+                return _regenerator.default.wrap(function _callee3$(_context3) {
+                  while (1) {
+                    switch (_context3.prev = _context3.next) {
+                      case 0:
+                        doc = _ref.doc, client = _ref.client, perms = _ref.perms;
+                        perm = perms.find(function (perm) {
+                          if (perm.values) {
+                            var selector = perm.selector || 'id';
+                            var value = doc[selector];
+                            return perm.values.includes(value);
+                          } else {
+                            return true;
+                          }
+                        });
 
+                        if (!perm) {
+                          _context3.next = 6;
+                          break;
+                        }
 
-/***/ }),
-/* 813 */
-/***/ (function(module, exports, __webpack_require__) {
+                        return _context3.abrupt("return", perm);
 
-"use strict";
+                      case 6:
+                        if (!(type === _const.DOCTYPE_FILES)) {
+                          _context3.next = 16;
+                          break;
+                        }
 
+                        // for files, we recursively try to check for parent folders
+                        parentId = (0, _file.getParentFolderId)(doc);
+                        _context3.t0 = parentId;
 
-var implementation = __webpack_require__(812);
+                        if (!_context3.t0) {
+                          _context3.next = 13;
+                          break;
+                        }
 
-var zeroWidthSpace = '\u200b';
-var mongolianVowelSeparator = '\u180E';
+                        _context3.next = 12;
+                        return getFile(parentId);
 
-module.exports = function getPolyfill() {
-	if (
-		String.prototype.trim
-		&& zeroWidthSpace.trim() === zeroWidthSpace
-		&& mongolianVowelSeparator.trim() === mongolianVowelSeparator
-		&& ('_' + mongolianVowelSeparator).trim() === ('_' + mongolianVowelSeparator)
-		&& (mongolianVowelSeparator + '_').trim() === (mongolianVowelSeparator + '_')
-	) {
-		return String.prototype.trim;
-	}
-	return implementation;
-};
+                      case 12:
+                        _context3.t0 = _context3.sent;
 
+                      case 13:
+                        parentFolder = _context3.t0;
 
-/***/ }),
-/* 814 */
-/***/ (function(module, exports, __webpack_require__) {
+                        if (!parentFolder) {
+                          _context3.next = 16;
+                          break;
+                        }
 
-"use strict";
+                        return _context3.abrupt("return", _findPermissionFor({
+                          doc: parentFolder,
+                          perms: perms,
+                          client: client
+                        }));
 
+                      case 16:
+                        return _context3.abrupt("return", undefined);
 
-var define = __webpack_require__(761);
-var getPolyfill = __webpack_require__(813);
+                      case 17:
+                      case "end":
+                        return _context3.stop();
+                    }
+                  }
+                }, _callee3);
+              }));
+              return _findPermissionFor3.apply(this, arguments);
+            };
 
-module.exports = function shimStringTrim() {
-	var polyfill = getPolyfill();
-	define(String.prototype, { trim: polyfill }, {
-		trim: function testTrim() {
-			return String.prototype.trim !== polyfill;
-		}
-	});
-	return polyfill;
-};
+            _findPermissionFor = function _findPermissionFor4(_x5) {
+              return _findPermissionFor3.apply(this, arguments);
+            };
 
+            _getFile = function _getFile3() {
+              _getFile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(id) {
+                var query, data;
+                return _regenerator.default.wrap(function _callee2$(_context2) {
+                  while (1) {
+                    switch (_context2.prev = _context2.next) {
+                      case 0:
+                        query = (0, _dsl.Q)(_const.DOCTYPE_FILES).getById(id);
+                        _context2.next = 3;
+                        return client.query(query);
 
-/***/ }),
-/* 815 */
-/***/ (function(module, exports, __webpack_require__) {
+                      case 3:
+                        data = _context2.sent;
+                        return _context2.abrupt("return", data && data.data);
 
-"use strict";
+                      case 5:
+                      case "end":
+                        return _context2.stop();
+                    }
+                  }
+                }, _callee2);
+              }));
+              return _getFile.apply(this, arguments);
+            };
 
+            getFile = function _getFile2(_x4) {
+              return _getFile.apply(this, arguments);
+            };
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.getEmojiByCountry = void 0;
-var emojiCountry = {
-  fr: '🇫🇷'
-};
-/**
- * @param {string} country - fr, en, etc
- * @param {Function} t - Translation function
- * @returns {string} - Emoji of country
- */
+            document = options.document, client = options.client, permissions = options.permissions;
+            id = document._id || document.id;
+            type = document._type || document.type;
+            doc = _objectSpread(_objectSpread({}, document), {}, {
+              id: id,
+              type: type
+            });
 
-var getEmojiByCountry = function getEmojiByCountry(country, t) {
-  if (country === 'stranger') return t('country.stranger');
-  return emojiCountry[country];
-};
+            if (!permissions) {
+              _context4.next = 12;
+              break;
+            }
 
-exports.getEmojiByCountry = getEmojiByCountry;
+            _context4.t0 = permissions;
+            _context4.next = 15;
+            break;
 
-/***/ }),
-/* 816 */
-/***/ (function(module, exports, __webpack_require__) {
+          case 12:
+            _context4.next = 14;
+            return fetchOwn(client);
 
-var map = {
-	"./en.json": 817,
-	"./fr.json": 818
-};
+          case 14:
+            _context4.t0 = _context4.sent;
 
+          case 15:
+            definedPermissions = _context4.t0;
+            perms = definedPermissions.filter(function (p) {
+              return isForType(p, type);
+            });
+            return _context4.abrupt("return", _findPermissionFor({
+              doc: doc,
+              client: client,
+              perms: perms
+            }));
 
-function webpackContext(req) {
-	var id = webpackContextResolve(req);
-	return __webpack_require__(id);
-}
-function webpackContextResolve(req) {
-	if(!__webpack_require__.o(map, req)) {
-		var e = new Error("Cannot find module '" + req + "'");
-		e.code = 'MODULE_NOT_FOUND';
-		throw e;
-	}
-	return map[req];
+          case 18:
+          case "end":
+            return _context4.stop();
+        }
+      }
+    }, _callee4);
+  }));
+  return _findPermissionFor2.apply(this, arguments);
 }
-webpackContext.keys = function webpackContextKeys() {
-	return Object.keys(map);
-};
-webpackContext.resolve = webpackContextResolve;
-module.exports = webpackContext;
-webpackContext.id = 816;
 
-/***/ }),
-/* 817 */
-/***/ (function(module) {
+function isDocumentReadOnly(_x3) {
+  return _isDocumentReadOnly.apply(this, arguments);
+}
+/**
+ * When a cozy to cozy sharing is created Cozy's stack creates a
+ * shortcut in `/Inbox of sharing` on the recipient's cozy to have a
+ * quick access even when the sharing is not accepted yet.
+ *
+ * However, this file is created only if the stack knows the URL of the cozy.
+ * This is not always the case.
+ *
+ * This method is here to tell us if the shortcut's file is created
+ * on the recipient's cozy. It can be used to make an UI distinction between the
+ * both situation.
+ *
+ * @typedef  {object} Permission
+ * @property {object} data Permission document
+ * @property {Array} included Member information from the sharing
+ *
+ * @param {Permission} permission From getOwnPermissions mainly
+ */
 
-module.exports = JSON.parse("{\"country\":{\"stranger\":\"Stranger\"},\"Scan\":{\"scan_a_doc\":\"Scan a doc\",\"save_doc\":\"Save the doc\",\"filename\":\"Filename\",\"save\":\"Save\",\"cancel\":\"Cancel\",\"qualify\":\"Describe\",\"apply\":\"Apply\",\"error\":{\"offline\":\"You are currently offline and you can't use this functionality. Please, try again later.\",\"uploading\":\"You are already uploading a file. Please wait until the end of this upload and try again.\",\"generic\":\"Something went wrong. Please try again.\"},\"successful\":{\"qualified_ok\":\"You just have successfully described your file! \"},\"items\":{\"accommodation_proof\":\"Proof of accommodation |||| Proof of accommodations\",\"appliance_invoice\":\"Appliance invoice |||| Appliance invoices\",\"bank_details\":\"Bank detail |||| Bank details\",\"bank_statement\":\"Bank statement |||| Bank statements\",\"birth_certificate\":\"Birth certificate |||| Birth certificates\",\"building_permit\":\"Building permit |||| Building permits\",\"caf\":\"Social benefit rate |||| Social benefit rates\",\"car_insurance\":\"Car insurance certificate |||| Car insurance certificates\",\"citizen_registration_certificate\":\"Certificate of citizen registration |||| Certificates of citizen registration\",\"diploma\":\"Diploma |||| Diplomas\",\"divorce\":\"Divorce |||| Divorces\",\"driver_license\":\"Driving license |||| Driving licenses\",\"electoral_card\":\"Electoral card |||| Electoral cards\",\"employment_center_certificate\":\"Employment center certificate |||| Employment center certificates\",\"energy_contract\":\"Energy provider contract |||| Energy provider contracts\",\"energy_invoice\":\"Energy invoice |||| Energy invoices\",\"family_record_book\":\"Family record book |||| Family record books\",\"family\":\"Family\",\"fidelity_card\":\"Fidelity card |||| Fidelity cards\",\"gradebook\":\"Gradebook |||| Gradebooks\",\"grocery_invoice\":\"Grocery invoice |||| Grocery invoices\",\"health_book\":\"Health book |||| Health books\",\"health_certificate\":\"Health/Vaccination certificate |||| Health/Vaccination certificates\",\"health_insurance_card\":\"Insurance card |||| Insurance cards\",\"health_invoice\":\"Health invoice |||| Health invoices\",\"health\":\"Health\",\"home\":\"Home\",\"house_insurance\":\"Home insurance |||| Home insurances\",\"house_sale_agreeement\":\"House sale agreement |||| House sale agreements\",\"identity_photo\":\"Identity photo |||| Identity photos\",\"identity\":\"Identity\",\"invoice\":\"Invoice |||| Invoices\",\"isp_invoice\":\"ISP invoice |||| ISP invoices\",\"large_family_card\":\" Large Family Card |||| Large Family Cards\",\"lease\":\"Lease |||| Leases\",\"library_card\":\"library card |||| library cards\",\"loan_agreement\":\"Loan agreement |||| Loan agreements\",\"mechanic_invoice\":\"Repair bill |||| Repair bills\",\"motivation_letter\":\"Motivation letter |||| Motivation letters\",\"national_health_insurance_card\":\"National health insurance card |||| National health insurance cards\",\"national_health_insurance_right_certificate\":\"National health insurance right certificate |||| National health insurance right certificates\",\"national_id_card\":\"ID card |||| ID cards\",\"note_identity_document\":\"Note Identity |||| Notes Identity\",\"note_family_document\":\"Note Family |||| Notes Family\",\"note_work_document\":\"Note Work & Study |||| Notes Work & Study\",\"note_health_document\":\"Note Health |||| Notes Health\",\"note_house_document\":\"Note Home |||| Notes Home\",\"note_transport_document\":\"Note Transport |||| Notes Transport\",\"note_activity_document\":\"Note Activities |||| Notes Activities\",\"note_finance\":\"Note Finance |||| Notes Finance\",\"note_invoice\":\"Note Invoice |||| Notes Invoice\",\"other_activity_document\":\"Other sports document |||| Other sports documents\",\"other_bank_document\":\"Other banking document |||| Other banking documents\",\"other_family_document\":\"Other family document |||| Other family documents\",\"other_health_document\":\"Other health document |||| Other health documents\",\"other_house_document\":\"Other house document |||| Other house documents\",\"other_identity_document\":\"Other document of identity |||| Other documents of identity\",\"other_invoice\":\"Other invoice |||| Other invoices\",\"other_revenue\":\"Other revenue |||| Other revenues\",\"other_tax_document\":\"Other tax document |||| Other tax documents\",\"other_transport_document\":\"Other transport document |||| Other transport documents\",\"other_work_document\":\"Other work document |||| Other work documents\",\"other_administrative_document\":\"Other administrative document |||| Other administrative documents\",\"others\":\"Others\",\"pacs\":\"Civil union |||| Civil unions\",\"passport\":\"Passeport |||| Passeports\",\"pay_sheet\":\"Pay sheet |||| Pay sheets\",\"payment_proof_family_allowance\":\"family allowance payment proof |||| family allowance payment proofs\",\"pension\":\"Pension |||| Pensions\",\"personal_sporting_licence\":\"Sporting licence |||| Sporting licences\",\"phone_invoice\":\"Phone invoice |||| Phone invoices\",\"pregnancy_medical_certificate\":\"Certificate of pregnancy |||| Certificates of pregnancy\",\"prescription\":\"Prescription |||| Prescriptions\",\"real_estate_tax\":\"Real estate tax |||| Real estate taxes\",\"receipt\":\"Receipt |||| Receipts\",\"rent_receipt\":\"Rent receipt |||| Rent receipts\",\"residence_permit\":\"Residence permit |||| Residence permits\",\"restaurant_invoice\":\"Restaurant invoice |||| Restaurant invoices\",\"resume\":\"Resume |||| Resumes\",\"school_attendance_certificate\":\"Certificate of school attendance |||| Certificates of school attendance\",\"school_insurance_certificate\":\"Certificate of school insurance |||| Certificates of school insurance\",\"single_parent_benefit\":\"Single parent benefit |||| Single parent benefits\",\"student_card\":\"Student card |||| Student cards\",\"tax_notice\":\"Tax notice |||| Tax notices\",\"tax_return\":\"Tax return |||| Tax returns\",\"tax_timetable\":\"Payment Plans Installment Agreement |||| Payment Plans Installment Agreements\",\"technical_diagnostic_record\":\"Technical diagnostic record |||| Technical diagnostic records\",\"telecom_invoice\":\"Telecom invoice |||| Telecom invoices\",\"transport_card\":\"Transport card |||| Transport cards\",\"transport_invoice\":\"Transport invoice |||| Transport invoices\",\"transport\":\"Transport\",\"unemployment_benefit\":\"Unemployment benefit |||| Unemployment benefits\",\"unfit_for_habitation_declaration\":\"Declaration of unfit for habitation |||| Declarations of unfit for habitation\",\"vehicle_registration\":\"Vehicle registration |||| Vehicle registrations\",\"water_invoice\":\"Water invoice |||| Water invoices\",\"web_service_invoice\":\"Web service invoice |||| Web service invoices\",\"wedding\":\"Wedding contract |||| Wedding contracts\",\"work_contract\":\"Work contract |||| Work contracts\",\"work_disability_recognition\":\"Recognition of disability |||| Recognitions of disability\",\"work_invoice\":\"Work invoice |||| Work invoices\",\"work_quote\":\"Work quote |||| Work quotes\",\"work_study\":\"Work & Study\"},\"attributes\":{\"contractType\":{\"cdi\":\"CDI\",\"cdd\":\"CDD\",\"alternate\":\"Alternate\",\"internship\":\"Internship\",\"other\":\"Other\"}},\"themes\":{\"activity\":\"Activities\",\"family\":\"Family\",\"finance\":\"Finance\",\"health\":\"Health\",\"home\":\"Home\",\"identity\":\"Identity\",\"invoice\":\"Invoice\",\"others\":\"Others\",\"transport\":\"Transport\",\"undefined\":\"Undefined\",\"work_study\":\"Work & Study\"}}}");
 
-/***/ }),
-/* 818 */
-/***/ (function(module) {
+function _isDocumentReadOnly() {
+  _isDocumentReadOnly = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(args) {
+    var document, client, writability, _args$permissions, permissions, perm;
 
-module.exports = JSON.parse("{\"country\":{\"stranger\":\"Étranger\"},\"Scan\":{\"scan_a_doc\":\"Numériser un doc\",\"save_doc\":\"Enregistrer le document\",\"filename\":\"Nom du fichier\",\"save\":\"Sauvegarder\",\"cancel\":\"Annuler\",\"qualify\":\"Qualifier\",\"apply\":\"Appliquer\",\"error\":{\"offline\":\"Vous êtes actuellement déconnecté, vous ne pouvez donc pas utiliser cette fonctionnalité. Connectez-vous à internet et recommencez. \",\"uploading\":\"Vous avez déjà un fichier en cours de téléchargement. Attendez la fin et recommencez.\",\"generic\":\"Un problème est survenu. Veuillez réessayer. \"},\"successful\":{\"qualified_ok\":\"Vous venez de qualifier votre fichier avec succès !\"},\"items\":{\"accommodation_proof\":\"Attestation d'hébergement |||| Attestations d'hébergement\",\"appliance_invoice\":\"Facture d'électroménager |||| Factures d'électroménager\",\"bank_details\":\"RIB\",\"bank_statement\":\"Relevé de compte |||| Relevés de compte\",\"birth_certificate\":\"Certificat de naissance |||| Certificats de naissance\",\"building_permit\":\"Permis de construire\",\"caf\":\"Attestation de quotient familial CAF |||| Attestations de quotient familial CAF\",\"car_insurance\":\"Attestation d'assurance auto |||| Attestations d'assurance auto\",\"citizen_registration_certificate\":\"Attestation de recensement citoyen |||| Attestations de recensement citoyen\",\"diploma\":\"Diplôme |||| Diplômes\",\"divorce\":\"Attestation de divorce |||| Attestations de divorce\",\"driver_license\":\"Permis de conduire\",\"electoral_card\":\"Carte électorale |||| Cartes électorales\",\"employment_center_certificate\":\"Attestation de Pôle emploi |||| Attestations de Pôle emploi\",\"energy_contract\":\"Contrat de fournisseur d'énergies |||| Contrats de fournisseur d'énergies\",\"energy_invoice\":\"Facture d'énergie |||| Factures d'énergie\",\"family_record_book\":\"Livret de famille |||| Livrets de famille\",\"family\":\"Famille\",\"fidelity_card\":\"Carte de fidélité |||| Cartes de fidélité\",\"gradebook\":\"Bulletin de notes |||| Bulletins de notes\",\"grocery_invoice\":\"Facture de courses |||| Factures de courses\",\"health_book\":\"Carnet de santé |||| Carnets de santé\",\"health_certificate\":\"Certificat de santé/vaccination |||| Certificats de santé/vaccination\",\"health_insurance_card\":\"Carte de mutuelle |||| Cartes de mutuelle\",\"health_invoice\":\"Facture médicale |||| Factures médicales\",\"health\":\"Santé\",\"home\":\"Logement\",\"house_insurance\":\"Assurance logement |||| Assurances logement\",\"house_sale_agreeement\":\"Compromis de vente\",\"identity_photo\":\"Photo d'identité |||| Photos d'identité\",\"identity\":\"Identité\",\"invoice\":\"Facture |||| Factures\",\"isp_invoice\":\"Facture d'internet |||| Factures d'internet\",\"large_family_card\":\"Carte famille nombreuse |||| Cartes famille nombreuse\",\"lease\":\"Bail |||| Baux\",\"library_card\":\"Carte de bibliothèque |||| Cartes de bibliothèque\",\"loan_agreement\":\"Contrat de prêt |||| Contrats de prêt\",\"mechanic_invoice\":\"Facture de réparation |||| Factures de réparation\",\"motivation_letter\":\"Lettre de motivation |||| Lettres de motivation\",\"national_health_insurance_card\":\"Carte vitale |||| Cartes vitales\",\"national_health_insurance_right_certificate\":\"Attestation de droits de l'Assurance Maladie (vitale) |||| Attestations de droits de l'Assurance Maladie (vitale)\",\"national_id_card\":\"Carte d'identité |||| Cartes d'identité\",\"note_identity_document\":\"Note Identité |||| Notes Identité\",\"note_family_document\":\"Note Famille |||| Notes Famille\",\"note_work_document\":\"Note Travail & Études |||| Notes Travail & Études\",\"note_health_document\":\"Note Santé |||| Notes Santé\",\"note_house_document\":\"Note Logement |||| Notes Logement\",\"note_transport_document\":\"Note Transport |||| Notes Transport\",\"note_activity_document\":\"Note Activités & loisirs |||| Notes Activités & loisirs\",\"note_finance\":\"Note Finances |||| Notes Finances\",\"note_invoice\":\"Note Factures |||| Notes Factures\",\"other_activity_document\":\"Autre document sportif |||| Autres documents sportifs\",\"other_bank_document\":\"Autre document bancaire |||| Autres documents bancaires\",\"other_family_document\":\"Autre document de famille |||| Autres documents de famille\",\"other_health_document\":\"Autre document de santé |||| Autres documents de santé\",\"other_house_document\":\"Autre document de logement |||| Autres documents de logement\",\"other_identity_document\":\"Autre document d'identité |||| Autres documents d'identité\",\"other_invoice\":\"Autre facture |||| Autres factures\",\"other_revenue\":\"Autre revenu |||| Autres revenus\",\"other_tax_document\":\"Impôts - Autre document |||| Impôts - Autres documents\",\"other_transport_document\":\"Autre document de transport |||| Autres documents de transport\",\"other_work_document\":\"Autre document de travail |||| Autres documents de travail\",\"other_administrative_document\":\"Autre document administratif |||| Autres documents administratifs\",\"others\":\"Autres\",\"pacs\":\"Attestation de PACS |||| Attestations de PACS\",\"passport\":\"Passeport |||| Passeports\",\"pay_sheet\":\"Fiche de paie |||| Fiches de paie\",\"payment_proof_family_allowance\":\"Attestation de paiement CAF |||| Attestations de paiement CAF\",\"pension\":\"Retraite |||| Retraites\",\"personal_sporting_licence\":\"Licence sportive |||| Licences sportives\",\"phone_invoice\":\"Facture de téléphone |||| Factures de téléphone\",\"pregnancy_medical_certificate\":\"Certificat de grossesse |||| Certificats de grossesse\",\"prescription\":\"Ordonnance |||| Ordonnances\",\"real_estate_tax\":\"Taxe foncière |||| Taxes foncières\",\"receipt\":\"Accusé de réception |||| Accusés de réception\",\"rent_receipt\":\"Quittance de loyer |||| Quittances de loyer\",\"residence_permit\":\"Titre de séjour |||| Titres de séjour\",\"restaurant_invoice\":\"Facture de restaurant |||| Factures de restaurant\",\"resume\":\"CV\",\"school_attendance_certificate\":\"Certificat de scolarité |||| Certificats de scolarité\",\"school_insurance_certificate\":\"Attestation d'assurance scolaire |||| Attestations d'assurance scolaire\",\"single_parent_benefit\":\"Allocation parent isolé |||| Allocations parent isolé\",\"student_card\":\"Carte d'étudiant |||| Cartes d'étudiant\",\"tax_notice\":\"Impôts - Avis d'imposition\",\"tax_return\":\"Impôts - Déclaration de revenus |||| Impôts - Déclarations de revenus\",\"tax_timetable\":\"Impôts - Echéancier |||| Impôts - Echéanciers\",\"technical_diagnostic_record\":\"Dossier de diagnostic technique |||| Dossiers de diagnostic technique\",\"telecom_invoice\":\"Facture de télécom |||| Factures de télécom\",\"transport_card\":\"Carte de transport |||| Cartes de transport\",\"transport_invoice\":\"Facture de transport |||| Factures de transport\",\"transport\":\"Transport\",\"unemployment_benefit\":\"Allocation chômage |||| Allocations chômage\",\"unfit_for_habitation_declaration\":\"Arrêté d'insalubrité |||| Arrêtés d'insalubrité\",\"vehicle_registration\":\"Carte grise |||| Cartes grises\",\"water_invoice\":\"Facture d'eau |||| Factures d'eau\",\"web_service_invoice\":\"Facture de service web |||| Factures de service web\",\"wedding\":\"Contrat de mariage |||| Contrats de mariage\",\"work_contract\":\"Contrat de travail |||| Contrats de travail\",\"work_disability_recognition\":\"Reconnaissance de handicap - RQTH |||| Reconnaissances de handicap - RQTH\",\"work_invoice\":\"Facture de travaux |||| Factures de travaux\",\"work_quote\":\"Devis de travaux\",\"work_study\":\"Travail & Études\"},\"attributes\":{\"contractType\":{\"cdi\":\"CDI\",\"cdd\":\"CDD\",\"alternate\":\"Alternance\",\"internship\":\"Stage\",\"other\":\"Autre\"}},\"themes\":{\"activity\":\"Activités & loisirs\",\"family\":\"Famille\",\"finance\":\"Finances\",\"health\":\"Santé\",\"home\":\"Logement\",\"identity\":\"Identité\",\"invoice\":\"Factures\",\"others\":\"Autres\",\"transport\":\"Transport\",\"undefined\":\"Indéfini\",\"work_study\":\"Travail & Études\"}}}");
+    return _regenerator.default.wrap(function _callee5$(_context5) {
+      while (1) {
+        switch (_context5.prev = _context5.next) {
+          case 0:
+            document = args.document;
+            client = args.client;
+            writability = args.writability;
+            _args$permissions = args.permissions;
 
-/***/ }),
-/* 819 */
-/***/ (function(module, exports, __webpack_require__) {
+            if (!(_args$permissions === void 0)) {
+              _context5.next = 10;
+              break;
+            }
 
-"use strict";
+            _context5.next = 7;
+            return fetchOwn(client);
 
+          case 7:
+            _context5.t0 = _context5.sent;
+            _context5.next = 11;
+            break;
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.themesList = void 0;
+          case 10:
+            _context5.t0 = _args$permissions;
 
-var _qualification = __webpack_require__(748);
+          case 11:
+            permissions = _context5.t0;
 
-/**
- *
- * @param {Array<import("../../types").ItemsLabels>} labels - Array of items labels
- * @returns {Array<import("../../types").QualificationAttributes>}
- */
-var buildItemsByLabel = function buildItemsByLabel(labels) {
-  return labels.map(function (label) {
-    try {
-      return _qualification.Qualification.getByLabel(label);
-    } catch (e) {
-      console.log('error', e); // eslint-disable-line no-console
+            if (!(permissions.length <= 1)) {
+              _context5.next = 16;
+              break;
+            }
 
-      return null;
-    }
-  }).filter(function (item) {
-    return item;
-  });
-};
-/**
- * @type {Array<import("../../types").IdentityLabel>}
- */
+            _context5.t1 = permissions[0] // shortcut because most of time, there will be only one permission block
+            ;
+            _context5.next = 19;
+            break;
 
+          case 16:
+            _context5.next = 18;
+            return findPermissionFor({
+              document: document,
+              client: client,
+              permissions: permissions
+            });
 
-var identityLabels = ['identity_photo', 'national_id_card', 'passport', 'residence_permit', 'electoral_card', 'family_record_book', 'birth_certificate', 'driver_license', 'citizen_registration_certificate', 'note_identity_document', 'other_identity_document'];
-/**
- * @type {Array<import("../../types").FamilyLabel>}
- */
+          case 18:
+            _context5.t1 = _context5.sent;
 
-var familyLabels = ['family_record_book', 'birth_certificate', 'wedding', 'pacs', 'single_parent_benefit', 'divorce', 'large_family_card', 'caf', 'payment_proof_family_allowance', 'note_family_document', 'other_family_document'];
-/**
- * @type {Array<import("../../types").WorkStudyLabels>}
- */
+          case 19:
+            perm = _context5.t1;
 
-var workStudyLabels = ['diploma', 'work_contract', 'pay_sheet', 'unemployment_benefit', 'employment_center_certificate', 'pension', 'work_disability_recognition', 'gradebook', 'student_card', 'school_attendance_certificate', 'school_insurance_certificate', 'resume', 'motivation_letter', 'note_work_document', 'other_work_document'];
-/**
- * @type {Array<import("../../types").HealthLabels>}
- */
+            if (!perm) {
+              _context5.next = 24;
+              break;
+            }
 
-var healthLabels = ['health_certificate', 'health_book', 'national_health_insurance_card', 'national_health_insurance_right_certificate', 'health_insurance_card', 'prescription', 'health_invoice', 'work_disability_recognition', 'pregnancy_medical_certificate', 'note_health_document', 'other_health_document'];
-/**
- * @type {Array<import("../../types").HomeLabels>}
- */
+            return _context5.abrupt("return", isReadOnly(perm, {
+              writability: writability
+            }));
 
-var homeLabels = ['phone_invoice', 'isp_invoice', 'telecom_invoice', 'energy_invoice', 'water_invoice', 'other_invoice', 'work_invoice', 'house_sale_agreeement', 'building_permit', 'technical_diagnostic_record', 'unfit_for_habitation_declaration', 'lease', 'rent_receipt', 'accommodation_proof', 'house_insurance', 'work_quote', 'note_house_document', 'other_house_document'];
-/**
- * @type {Array<import("../../types").TransportLabels>}
- */
+          case 24:
+            _logger.default.warn("can't find the document in current attached permissions");
 
-var transportLabels = ['driver_license', 'vehicle_registration', 'car_insurance', 'transport_card', 'mechanic_invoice', 'transport_invoice', 'note_transport_document', 'other_transport_document'];
-/**
- * @type {Array<import("../../types").ActivityLabels>}
- */
+            return _context5.abrupt("return", undefined);
 
-var activityLabels = ['personal_sporting_licence', 'fidelity_card', 'library_card', 'note_activity_document', 'other_activity_document'];
-/**
- * @type {Array<import("../../types").FinanceLabels>}
- */
+          case 26:
+          case "end":
+            return _context5.stop();
+        }
+      }
+    }, _callee5);
+  }));
+  return _isDocumentReadOnly.apply(this, arguments);
+}
 
-var financeLabels = ['tax_return', 'tax_notice', 'tax_timetable', 'real_estate_tax', 'pay_sheet', 'receipt', 'single_parent_benefit', 'other_tax_document', 'bank_details', 'bank_statement', 'loan_agreement', 'payment_proof_family_allowance', 'note_finance', 'other_bank_document', 'other_revenue'];
-/**
- * @type {Array<import("../../types").InvoiceLabels>}
- */
+var isShortcutCreatedOnTheRecipientCozy = function isShortcutCreatedOnTheRecipientCozy(permission) {
+  if (!permission.included) return false;
+  var sharingMember = permission.included.find(function (item) {
+    return item.type === 'io.cozy.sharings.members';
+  });
 
-var invoiceLabels = ['phone_invoice', 'isp_invoice', 'telecom_invoice', 'energy_invoice', 'water_invoice', 'appliance_invoice', 'web_service_invoice', 'restaurant_invoice', 'work_invoice', 'transport_invoice', 'health_invoice', 'note_invoice', 'other_invoice'];
-/**
- * @type {Array<import("../../types").OthersLabels>}
- */
+  if (sharingMember && sharingMember.attributes.instance) {
+    return true;
+  }
 
-var othersLabels = ['other_administrative_document'];
-/**
- * @type {import("../../types").ThemesList}
- */
+  return false;
+};
 
-var themesList = [{
-  id: 'theme1',
-  label: 'identity',
-  icon: 'people',
-  items: buildItemsByLabel(identityLabels),
-  defaultItems: ['birth_certificate']
-}, {
-  id: 'theme2',
-  label: 'family',
-  icon: 'team',
-  items: buildItemsByLabel(familyLabels),
-  defaultItems: ['family_record_book']
-}, {
-  id: 'theme3',
-  label: 'work_study',
-  icon: 'company',
-  items: buildItemsByLabel(workStudyLabels)
-}, {
-  id: 'theme4',
-  label: 'health',
-  icon: 'heart',
-  items: buildItemsByLabel(healthLabels)
-}, {
-  id: 'theme5',
-  label: 'home',
-  icon: 'home',
-  items: buildItemsByLabel(homeLabels)
-}, {
-  id: 'theme6',
-  label: 'transport',
-  icon: 'car',
-  items: buildItemsByLabel(transportLabels),
-  defaultItems: ['driver_license']
-}, {
-  id: 'theme7',
-  label: 'activity',
-  icon: 'compass',
-  items: buildItemsByLabel(activityLabels)
-}, {
-  id: 'theme8',
-  label: 'finance',
-  icon: 'bank',
-  items: buildItemsByLabel(financeLabels)
-}, {
-  id: 'theme9',
-  label: 'invoice',
-  icon: 'bill',
-  items: buildItemsByLabel(invoiceLabels)
-}, {
-  id: 'theme10',
-  label: 'others',
-  icon: 'dots',
-  items: buildItemsByLabel(othersLabels)
-}];
-exports.themesList = themesList;
+exports.isShortcutCreatedOnTheRecipientCozy = isShortcutCreatedOnTheRecipientCozy;
 
 /***/ }),
-/* 820 */
+/* 754 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
+var _interopRequireDefault = __webpack_require__(1);
+
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.isQualificationNote = exports.getThemeByItem = void 0;
-
-var _documentTypeData = __webpack_require__(819);
-
-/**
- * @param {import("../../types").QualificationAttributes} item - Qualification item
- * @returns {import("../../types").Theme|undefined}
- */
-var findDefaultItemTheme = function findDefaultItemTheme(item) {
-  return _documentTypeData.themesList.find(function (theme) {
-    return theme.defaultItems && theme.defaultItems.includes(item.label);
-  });
-};
-/**
- * @param {import("../../types").QualificationAttributes} item - Qualification item
- * @returns {import("../../types").Theme|undefined}
- */
-
-
-var getThemeByItem = function getThemeByItem(item) {
-  var defaultTheme = findDefaultItemTheme(item);
+exports.getCreatedByApp = exports.hasBeenUpdatedByApp = void 0;
 
-  if (defaultTheme) {
-    return defaultTheme;
-  }
+var _get = _interopRequireDefault(__webpack_require__(399));
 
-  return _documentTypeData.themesList.find(function (theme) {
-    return theme.items.some(function (it) {
-      return it.label === item.label;
-    });
-  });
+var hasBeenUpdatedByApp = function hasBeenUpdatedByApp(doc, appSlug) {
+  var updatedByApps = (0, _get.default)(doc, 'cozyMetadata.updatedByApps');
+  return Boolean(updatedByApps && updatedByApps.find(function (x) {
+    return x.slug === appSlug;
+  }));
 };
-/**
- * Check if a qualification is a note
- *
- * @param {import("../../types").QualificationAttributes} item - Qualification item
- * @returns {boolean}
- */
 
+exports.hasBeenUpdatedByApp = hasBeenUpdatedByApp;
 
-exports.getThemeByItem = getThemeByItem;
-
-var isQualificationNote = function isQualificationNote(item) {
-  return item.label.toLowerCase().startsWith('note_');
+var getCreatedByApp = function getCreatedByApp(doc) {
+  return (0, _get.default)(doc, 'cozyMetadata.createdByApp');
 };
 
-exports.isQualificationNote = isQualificationNote;
+exports.getCreatedByApp = getCreatedByApp;
 
 /***/ }),
-/* 821 */
+/* 755 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -122360,455 +110986,410 @@ var _interopRequireDefault = __webpack_require__(1);
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.fetchTimeSeriesByIntervalAndSource = exports.saveTimeSeries = void 0;
+exports.isContact = exports.getIndexByFamilyNameGivenNameEmailCozyUrl = exports.getDefaultSortIndexValue = exports.makeDefaultSortIndexValue = exports.getDisplayName = exports.makeDisplayName = exports.getFullname = exports.makeFullname = exports.getPrimaryAddress = exports.getPrimaryPhone = exports.getPrimaryCozyDomain = exports.getPrimaryCozy = exports.getPrimaryEmail = exports.getInitials = exports.getPrimaryOrFirst = exports.CONTACTS_DOCTYPE = void 0;
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+var _get = _interopRequireDefault(__webpack_require__(399));
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+var _isEmpty = _interopRequireDefault(__webpack_require__(756));
 
-var _dsl = __webpack_require__(495);
+var _logger = _interopRequireDefault(__webpack_require__(498));
 
-var validateTimeSeriesFormat = function validateTimeSeriesFormat(timeseries) {
-  if (!timeseries.startDate || !timeseries.endDate) {
-    throw new Error('You must specify a startDate and endDate for the time serie');
-  }
+var CONTACTS_DOCTYPE = 'io.cozy.contacts';
+exports.CONTACTS_DOCTYPE = CONTACTS_DOCTYPE;
 
-  if (!Date.parse(timeseries.startDate) || !Date.parse(timeseries.endDate)) {
-    throw new Error('Invalid date format for the time serie');
+var getPrimaryOrFirst = function getPrimaryOrFirst(property) {
+  return function (obj) {
+    return !obj[property] || obj[property].length === 0 ? '' : obj[property].find(function (property) {
+      return property.primary;
+    }) || obj[property][0];
+  };
+};
+/**
+ * Returns the initials of the contact.
+ *
+ * @param {object} contact - A contact
+ * @returns {string} - the contact's initials
+ */
+
+
+exports.getPrimaryOrFirst = getPrimaryOrFirst;
+
+var getInitials = function getInitials(contact) {
+  if (contact.name && !(0, _isEmpty.default)(contact.name)) {
+    return ['givenName', 'familyName'].map(function (part) {
+      return (0, _get.default)(contact, ['name', part, 0], '');
+    }).join('').toUpperCase();
   }
 
-  if (!timeseries.dataType) {
-    throw new Error('You must specify a dataType for the time serie');
+  var email = getPrimaryEmail(contact);
+
+  if (email) {
+    return email[0].toUpperCase();
   }
 
-  if (!timeseries.series || !Array.isArray(timeseries.series)) {
-    throw new Error('You must specify a series array for the time serie');
+  var cozy = getPrimaryCozyDomain(contact);
+
+  if (cozy) {
+    return cozy[0].toUpperCase();
   }
-};
-/**
- * @typedef TimeSeries
- * @property dataType {String} - The type of time series, e.g. 'electricity'
- * @property startDate {Date} - The starting date of the series
- * @property endDate {Date} - The end date of the series
- * @property endType {Date} - The starting date of the series
- * @property source {String} - The data source, e.g. 'enedis.fr'
- * @property theme {String} - The theme used to group time series, e.g. 'energy'
- * @property series {Array} - An array of objects representing the time series
- */
 
+  return '';
+};
 /**
- * Helper to save a time series document.
- *
- * @param {object} client - The CozyClient instance
+ * Returns the contact's main email
  *
- 
- * @param {TimeSeries} timeseriesOption - The time series to save
+ * @param {object} contact - A contact
+ * @returns {string} - The contact's main email
  */
 
 
-var saveTimeSeries = /*#__PURE__*/function () {
-  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client, timeseriesOption) {
-    var dataType, series, startDate, endDate, source, theme, doctype, timeseries;
-    return _regenerator.default.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            dataType = timeseriesOption.dataType, series = timeseriesOption.series, startDate = timeseriesOption.startDate, endDate = timeseriesOption.endDate, source = timeseriesOption.source, theme = timeseriesOption.theme;
-            validateTimeSeriesFormat({
-              dataType: dataType,
-              series: series,
-              startDate: startDate,
-              endDate: endDate,
-              source: source
-            });
-            doctype = "io.cozy.timeseries.".concat(dataType);
-            timeseries = {
-              _type: doctype,
-              startDate: startDate,
-              endDate: endDate,
-              source: source,
-              theme: theme,
-              series: series
-            };
-            return _context.abrupt("return", client.save(timeseries));
-
-          case 5:
-          case "end":
-            return _context.stop();
-        }
-      }
-    }, _callee);
-  }));
+exports.getInitials = getInitials;
 
-  return function saveTimeSeries(_x, _x2) {
-    return _ref.apply(this, arguments);
-  };
-}();
+var getPrimaryEmail = function getPrimaryEmail(contact) {
+  return Array.isArray(contact.email) ? getPrimaryOrFirst('email')(contact).address || '' : contact.email;
+};
 /**
- * Helper to retrieve time series by their date interval and source.
- *
- * @param {object} client - The CozyClient instance
- * @param {object} params - The query params
- * @param {Date} params.startDate - The starting date of the series
- * @param {Date} params.endDate - The end date of the series
- * @param {String} params.dataType - The type of time series, e.g. 'electricity'
- * @param {String} params.source - The data source, e.g. 'enedis.fr'
- * @param {number} params.limit - Number of serie items to retrieve
+ * Returns the contact's main cozy
  *
- * @typedef TimeSeriesJSONAPI
- * @property data {Array<TimeSeries>} - The JSON-API data response
- * @returns {Promise<TimeSeriesJSONAPI>} The TimeSeries found by the query in JSON-API format
+ * @param {object} contact - A contact
+ * @returns {string} - The contact's main cozy
  */
 
 
-exports.saveTimeSeries = saveTimeSeries;
-
-var fetchTimeSeriesByIntervalAndSource = /*#__PURE__*/function () {
-  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(client, _ref2) {
-    var startDate, endDate, dataType, source, limit, doctype, query;
-    return _regenerator.default.wrap(function _callee2$(_context2) {
-      while (1) {
-        switch (_context2.prev = _context2.next) {
-          case 0:
-            startDate = _ref2.startDate, endDate = _ref2.endDate, dataType = _ref2.dataType, source = _ref2.source, limit = _ref2.limit;
-
-            /**
-             * @type {import("../types").Doctype}
-             */
-            doctype = "io.cozy.timeseries.".concat(dataType);
-            query = (0, _dsl.Q)(doctype).where({
-              source: source,
-              startDate: {
-                $gte: startDate
-              },
-              endDate: {
-                $lte: endDate
-              }
-            }).indexFields(['source', 'startDate', 'endDate']).sortBy([{
-              source: 'desc'
-            }, {
-              startDate: 'desc'
-            }, {
-              endDate: 'desc'
-            }]).limitBy(limit || 5);
-            return _context2.abrupt("return", client.query(query));
+exports.getPrimaryEmail = getPrimaryEmail;
 
-          case 4:
-          case "end":
-            return _context2.stop();
-        }
-      }
-    }, _callee2);
-  }));
+var getPrimaryCozy = function getPrimaryCozy(contact) {
+  return Array.isArray(contact.cozy) ? getPrimaryOrFirst('cozy')(contact).url || '' : contact.url;
+};
+/**
+ * Returns the contact's main cozy url without protocol
+ *
+ * @param {object} contact - A contact
+ * @returns {string} - The contact's main cozy url
+ */
 
-  return function fetchTimeSeriesByIntervalAndSource(_x3, _x4) {
-    return _ref3.apply(this, arguments);
-  };
-}();
 
-exports.fetchTimeSeriesByIntervalAndSource = fetchTimeSeriesByIntervalAndSource;
+exports.getPrimaryCozy = getPrimaryCozy;
 
-/***/ }),
-/* 822 */
-/***/ (function(module, exports, __webpack_require__) {
+var getPrimaryCozyDomain = function getPrimaryCozyDomain(contact) {
+  try {
+    var url = new URL(getPrimaryCozy(contact));
+    return url.hostname.replace(/^(www.)/g, '');
+  } catch (_unused) {
+    return getPrimaryCozy(contact);
+  }
+};
+/**
+ * Returns the contact's main phone number
+ *
+ * @param {object} contact - A contact
+ * @returns {string} - The contact's main phone number
+ */
 
-"use strict";
 
+exports.getPrimaryCozyDomain = getPrimaryCozyDomain;
 
-var _interopRequireDefault = __webpack_require__(1);
+var getPrimaryPhone = function getPrimaryPhone(contact) {
+  return getPrimaryOrFirst('phone')(contact).number || '';
+};
+/**
+ * Returns the contact's main address
+ *
+ * @param {object} contact - A contact
+ * @returns {string} - The contact's main address
+ */
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.getSharingLink = void 0;
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+exports.getPrimaryPhone = getPrimaryPhone;
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+var getPrimaryAddress = function getPrimaryAddress(contact) {
+  return getPrimaryOrFirst('address')(contact).formattedAddress || '';
+};
+/**
+ * Makes fullname from contact name
+ *
+ * @param {*} contact - A contact
+ * @returns {string} - The contact's fullname
+ */
 
-var _const = __webpack_require__(619);
 
-var _CozyClient = _interopRequireDefault(__webpack_require__(279));
+exports.getPrimaryAddress = getPrimaryAddress;
 
-var _helpers = __webpack_require__(663);
+var makeFullname = function makeFullname(contact) {
+  if (contact.name) {
+    return ['namePrefix', 'givenName', 'additionalName', 'familyName', 'nameSuffix'].map(function (part) {
+      return contact.name[part];
+    }).filter(function (part) {
+      return part !== undefined;
+    }).join(' ').trim();
+  }
 
+  return '';
+};
 /**
- * Generate Sharing link for one or many files
+ * Returns the contact's fullname
  *
- * @param {CozyClient} client - Instance of CozyClient
- * @param {string[]} filesIds - Array of io.cozy.files ids
- * @param {boolean} [isFlatDomain] -
- * @returns {Promise<string>} Shared link
+ * @param {object} contact - A contact
+ * @returns {string} - The contact's fullname
  */
-var getSharingLink = /*#__PURE__*/function () {
-  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client, filesIds, isFlatDomain) {
-    var _sharedLink$attribute, _sharedLink$attribute2;
 
-    var PERMS, _yield$client$save, sharedLink, webLink;
-
-    return _regenerator.default.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            PERMS = {
-              _type: _const.DOCTYPE_PERMISSIONS,
-              permissions: {
-                files: {
-                  type: _const.DOCTYPE_FILES,
-                  values: filesIds,
-                  verbs: ['GET']
-                }
-              }
-            };
-            _context.next = 3;
-            return client.save(PERMS);
 
-          case 3:
-            _yield$client$save = _context.sent;
-            sharedLink = _yield$client$save.data;
-            webLink = (0, _helpers.generateWebLink)({
-              cozyUrl: client.getStackClient().uri,
-              searchParams: [['sharecode', sharedLink === null || sharedLink === void 0 ? void 0 : (_sharedLink$attribute = sharedLink.attributes) === null || _sharedLink$attribute === void 0 ? void 0 : (_sharedLink$attribute2 = _sharedLink$attribute.shortcodes) === null || _sharedLink$attribute2 === void 0 ? void 0 : _sharedLink$attribute2.code]],
-              pathname: '/public',
-              slug: 'drive',
-              subDomainType: isFlatDomain ? 'flat' : 'nested'
-            });
-            return _context.abrupt("return", webLink);
+exports.makeFullname = makeFullname;
 
-          case 7:
-          case "end":
-            return _context.stop();
-        }
-      }
-    }, _callee);
-  }));
+var getFullname = function getFullname(contact) {
+  if ((0, _get.default)(contact, 'fullname')) {
+    return contact.fullname;
+  }
 
-  return function getSharingLink(_x, _x2, _x3) {
-    return _ref.apply(this, arguments);
-  };
-}();
+  return makeFullname(contact);
+};
+/**
+ * Makes displayName from contact data
+ *
+ * @param {*} contact - A contact
+ * @returns {string} - The contact's displayName
+ */
 
-exports.getSharingLink = getSharingLink;
 
-/***/ }),
-/* 823 */
-/***/ (function(module, exports, __webpack_require__) {
+exports.getFullname = getFullname;
 
-"use strict";
+var makeDisplayName = function makeDisplayName(contact) {
+  var fullname = makeFullname(contact);
+  var primaryEmail = getPrimaryEmail(contact);
+  var primaryCozyDomain = getPrimaryCozyDomain(contact);
 
+  if (fullname && fullname.length > 0) {
+    return fullname;
+  }
 
-var _interopRequireDefault = __webpack_require__(1);
+  if (primaryEmail && primaryEmail.length > 0) {
+    return primaryEmail;
+  }
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.fetchAggregatesFromDACC = exports.buildAggregateParams = exports.sendMeasureToDACC = exports.checkMeasureParams = exports.isCorrectDateFormat = void 0;
+  if (primaryCozyDomain && primaryCozyDomain.length > 0) {
+    return primaryCozyDomain;
+  }
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+  return '';
+};
+/**
+ * Returns a display name for the contact
+ *
+ * @param {object} contact - A contact
+ * @returns {string} - the contact's display name
+ **/
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-var _cozyLogger = _interopRequireDefault(__webpack_require__(211));
+exports.makeDisplayName = makeDisplayName;
 
-var _CozyClient = _interopRequireDefault(__webpack_require__(279));
+var getDisplayName = function getDisplayName(contact) {
+  if ((0, _get.default)(contact, 'displayName')) {
+    return contact.displayName;
+  }
 
+  return makeDisplayName(contact);
+};
 /**
- * Check whether or not the given date is in YYYY-MM-DD format
+ * Makes 'byFamilyNameGivenNameEmailCozyUrl' index of a contact
  *
- * @param {string} date - The date to check
- * @returns {boolean}
+ * @param {object} contact - A contact
+ * @returns {string} - the contact's 'byFamilyNameGivenNameEmailCozyUrl' index
  */
-var isCorrectDateFormat = function isCorrectDateFormat(date) {
-  try {
-    var parsedDate = new Date(Date.parse(date));
-    return !!parsedDate.toISOString().startsWith(date);
-  } catch (err) {
-    return false;
+
+
+exports.getDisplayName = getDisplayName;
+
+var makeDefaultSortIndexValue = function makeDefaultSortIndexValue(contact) {
+  var defaultSortIndexValue = [(0, _get.default)(contact, 'name.familyName', ''), (0, _get.default)(contact, 'name.givenName', ''), getPrimaryEmail(contact), getPrimaryCozyDomain(contact)].join('').trim().toLowerCase();
+
+  if (defaultSortIndexValue.length === 0) {
+    return null;
   }
+
+  return defaultSortIndexValue;
 };
 /**
- * Throw an errror if a DACC parameter is incorrect.
+ * Returns 'byFamilyNameGivenNameEmailCozyUrl' index of a contact
  *
- * @param { import("../types").DACCMeasure} measure - The DACC measure
+ * @param {object} contact - A contact
+ * @returns {string} - the contact's 'byFamilyNameGivenNameEmailCozyUrl' index
  */
 
 
-exports.isCorrectDateFormat = isCorrectDateFormat;
-
-var checkMeasureParams = function checkMeasureParams(measure) {
-  var createdBy = measure.createdBy,
-      measureName = measure.measureName,
-      startDate = measure.startDate,
-      value = measure.value,
-      group1 = measure.group1,
-      group2 = measure.group2,
-      group3 = measure.group3;
+exports.makeDefaultSortIndexValue = makeDefaultSortIndexValue;
 
-  if (!createdBy || typeof createdBy !== 'string') {
-    throw new Error('Missing or wrong type parameter: createdBy');
-  }
+var getDefaultSortIndexValue = function getDefaultSortIndexValue(contact) {
+  var defaultSortIndexValue = (0, _get.default)(contact, 'indexes.byFamilyNameGivenNameEmailCozyUrl', null);
 
-  if (!measureName || typeof measureName !== 'string') {
-    throw new Error('Missing or wrong type parameter: measureName');
+  if (defaultSortIndexValue !== null) {
+    return (0, _isEmpty.default)(defaultSortIndexValue) ? null : defaultSortIndexValue;
   }
 
-  if (!startDate) {
-    throw new Error('Missing parameter: startDate');
-  }
+  return makeDefaultSortIndexValue(contact);
+};
+/**
+ * Returns 'byFamilyNameGivenNameEmailCozyUrl' index of a contact
+ *
+ * @deprecated Prefer to use getDefaultSortIndexValue.
+ * @param {object} contact - A contact
+ * @returns {string} - the contact's 'byFamilyNameGivenNameEmailCozyUrl' index
+ */
 
-  if (!isCorrectDateFormat(startDate)) {
-    throw new Error('Date should be in YYYY-MM-DD format');
-  }
 
-  if (typeof value !== 'number') {
-    throw new Error('Missing or wrong type parameter: value');
-  }
+exports.getDefaultSortIndexValue = getDefaultSortIndexValue;
 
-  if (group1 && (typeof group1 !== 'object' || Object.keys(group1).length === 0) || group2 && (typeof group2 !== 'object' || Object.keys(group2).length === 0) || group3 && (typeof group3 !== 'object' || Object.keys(group3).length === 0)) {
-    throw new Error('Groups should be key-value objects');
-  }
+var getIndexByFamilyNameGivenNameEmailCozyUrl = function getIndexByFamilyNameGivenNameEmailCozyUrl(contact) {
+  _logger.default.warn('Deprecation: `getIndexByFamilyNameGivenNameEmailCozyUrl` is deprecated, please use `getDefaultSortIndexValue` instead');
 
-  if (group3 && (!group2 || !group1) || group2 && !group1) {
-    throw new Error('Group order must be respected');
-  }
+  return getDefaultSortIndexValue(contact);
 };
 /**
- * Send measures to a DACC through a remote doctype
+ * Whether the document is a contact
  *
- * @param {CozyClient} client - The CozyClient instance
- * @param {string} remoteDoctype - The remote doctype to use
- * @param {import("../types").DACCMeasure} measure - The DACC measure
+ * @param {object} doc - A document (from io.cozy.something, or com.bitwarden or anything else)
+ * @returns {boolean}
  */
 
 
-exports.checkMeasureParams = checkMeasureParams;
+exports.getIndexByFamilyNameGivenNameEmailCozyUrl = getIndexByFamilyNameGivenNameEmailCozyUrl;
 
-var sendMeasureToDACC = /*#__PURE__*/function () {
-  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client, remoteDoctype, measure) {
-    return _regenerator.default.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            _context.prev = 0;
-            checkMeasureParams(measure);
-            _context.next = 4;
-            return client.getStackClient().fetchJSON('POST', "/remote/".concat(remoteDoctype), {
-              data: JSON.stringify(measure),
-              path: 'measure'
-            });
+var isContact = function isContact(doc) {
+  return doc._type === CONTACTS_DOCTYPE;
+};
 
-          case 4:
-            _context.next = 10;
-            break;
+exports.isContact = isContact;
 
-          case 6:
-            _context.prev = 6;
-            _context.t0 = _context["catch"](0);
-            (0, _cozyLogger.default)('error', "Error while sending measure to remote doctype: ".concat(_context.t0.message));
-            throw _context.t0;
+/***/ }),
+/* 756 */
+/***/ (function(module, exports, __webpack_require__) {
 
-          case 10:
-          case "end":
-            return _context.stop();
-        }
-      }
-    }, _callee, null, [[0, 6]]);
-  }));
+var baseKeys = __webpack_require__(333),
+    getTag = __webpack_require__(390),
+    isArguments = __webpack_require__(321),
+    isArray = __webpack_require__(324),
+    isArrayLike = __webpack_require__(337),
+    isBuffer = __webpack_require__(325),
+    isPrototype = __webpack_require__(334),
+    isTypedArray = __webpack_require__(328);
+
+/** `Object#toString` result references. */
+var mapTag = '[object Map]',
+    setTag = '[object Set]';
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
 
-  return function sendMeasureToDACC(_x, _x2, _x3) {
-    return _ref.apply(this, arguments);
-  };
-}();
 /**
- * Build parameters to request DACC aggregate
+ * Checks if `value` is an empty object, collection, map, or set.
  *
+ * Objects are considered empty if they have no own enumerable string keyed
+ * properties.
  *
- * @typedef Params - The unformatted DACC aggregate params
- * @property {string} [measureName] - The measure name
- * @property {string} [startDate]   - The measure start date
- * @property {string} [endDate]     - The measure end date
+ * Array-like values such as `arguments` objects, arrays, buffers, strings, or
+ * jQuery-like collections are considered empty if they have a `length` of `0`.
+ * Similarly, maps and sets are considered empty if they have a `size` of `0`.
  *
- * @param {Params} params - The unformatted DACC aggregate params
- * @returns {import("../types").DACCAggregatesParams}
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is empty, else `false`.
+ * @example
+ *
+ * _.isEmpty(null);
+ * // => true
+ *
+ * _.isEmpty(true);
+ * // => true
+ *
+ * _.isEmpty(1);
+ * // => true
+ *
+ * _.isEmpty([1, 2, 3]);
+ * // => false
+ *
+ * _.isEmpty({ 'a': 1 });
+ * // => false
  */
+function isEmpty(value) {
+  if (value == null) {
+    return true;
+  }
+  if (isArrayLike(value) &&
+      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
+        isBuffer(value) || isTypedArray(value) || isArguments(value))) {
+    return !value.length;
+  }
+  var tag = getTag(value);
+  if (tag == mapTag || tag == setTag) {
+    return !value.size;
+  }
+  if (isPrototype(value)) {
+    return !baseKeys(value).length;
+  }
+  for (var key in value) {
+    if (hasOwnProperty.call(value, key)) {
+      return false;
+    }
+  }
+  return true;
+}
 
+module.exports = isEmpty;
 
-exports.sendMeasureToDACC = sendMeasureToDACC;
-
-var buildAggregateParams = function buildAggregateParams(params) {
-  var measureName = params.measureName;
 
-  if (!measureName || typeof measureName !== 'string') {
-    throw new Error('Missing or wrong type parameter: measureName');
-  }
+/***/ }),
+/* 757 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  var startDate = params.startDate || new Date(0).toISOString();
-  var endDate = params.endDate || new Date(Date.now()).toISOString();
+"use strict";
 
-  if (!isCorrectDateFormat(startDate) || !isCorrectDateFormat(endDate)) {
-    (0, _cozyLogger.default)('error', "Date should be in YYYY-MM-DD format but received: startDate: ".concat(startDate, " | endDate: ").concat(endDate));
-    throw new Error('Date should be in YYYY-MM-DD format');
-  }
 
-  return {
-    measureName: measureName,
-    startDate: startDate,
-    endDate: endDate
-  };
-};
-/**
- * Send measures to a DACC through a remote doctype
- *
- * @param {CozyClient} client - The CozyClient instance
- * @param {string} remoteDoctype - The remote doctype to use
- * @param {import("../types").DACCAggregatesParams} params - The request params
- * @returns { Promise<import("../types").DACCAggregatesResponse> }
- */
+var _interopRequireWildcard = __webpack_require__(277);
 
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+Object.defineProperty(exports, "Qualification", {
+  enumerable: true,
+  get: function get() {
+    return _qualification.Qualification;
+  }
+});
+Object.defineProperty(exports, "setQualification", {
+  enumerable: true,
+  get: function get() {
+    return _qualification.setQualification;
+  }
+});
+Object.defineProperty(exports, "getQualification", {
+  enumerable: true,
+  get: function get() {
+    return _qualification.getQualification;
+  }
+});
+exports.helpers = exports.themes = exports.locales = void 0;
 
-exports.buildAggregateParams = buildAggregateParams;
+var _qualification = __webpack_require__(748);
 
-var fetchAggregatesFromDACC = /*#__PURE__*/function () {
-  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(client, remoteDoctype, params) {
-    var aggregateParams;
-    return _regenerator.default.wrap(function _callee2$(_context2) {
-      while (1) {
-        switch (_context2.prev = _context2.next) {
-          case 0:
-            _context2.prev = 0;
-            aggregateParams = buildAggregateParams(params);
-            _context2.next = 4;
-            return client.getStackClient().fetchJSON('POST', "/remote/".concat(remoteDoctype), {
-              data: JSON.stringify(aggregateParams),
-              path: 'aggregate'
-            });
+var locales = _interopRequireWildcard(__webpack_require__(758));
 
-          case 4:
-            return _context2.abrupt("return", _context2.sent);
+exports.locales = locales;
 
-          case 7:
-            _context2.prev = 7;
-            _context2.t0 = _context2["catch"](0);
-            (0, _cozyLogger.default)('error', "Error while fetching aggregates to remote doctype: ".concat(_context2.t0.message));
-            throw _context2.t0;
+var themes = _interopRequireWildcard(__webpack_require__(819));
 
-          case 11:
-          case "end":
-            return _context2.stop();
-        }
-      }
-    }, _callee2, null, [[0, 7]]);
-  }));
+exports.themes = themes;
 
-  return function fetchAggregatesFromDACC(_x4, _x5, _x6) {
-    return _ref2.apply(this, arguments);
-  };
-}();
+var helpers = _interopRequireWildcard(__webpack_require__(820));
 
-exports.fetchAggregatesFromDACC = fetchAggregatesFromDACC;
+exports.helpers = helpers;
 
 /***/ }),
-/* 824 */
+/* 758 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -122819,1823 +111400,2621 @@ var _interopRequireDefault = __webpack_require__(1);
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.isExpiringSoon = exports.isExpired = exports.computeExpirationNoticeLink = exports.computeExpirationNoticeDate = exports.computeExpirationDate = exports.isExpiring = void 0;
+exports.getBoundT = void 0;
 
-var _add = _interopRequireDefault(__webpack_require__(825));
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
 
-var _sub = _interopRequireDefault(__webpack_require__(831));
+var _nodePolyglot = _interopRequireDefault(__webpack_require__(759));
 
-/**
- * @typedef {import("../types").IOCozyFile} IOCozyFile
- */
-var PERSONAL_SPORTING_LICENCE_PERIOD_DAYS = 365;
-var PERSONAL_SPORTING_LICENCE_NOTICE_PERIOD_DAYS = 15;
-var EXPIRATION_LINK_BY_LABEL = {
-  national_id_card: 'https://www.service-public.fr/particuliers/vosdroits/N358',
-  residence_permit: 'https://www.service-public.fr/particuliers/vosdroits/N110',
-  passport: 'https://www.service-public.fr/particuliers/vosdroits/N360',
-  driver_license: 'https://permisdeconduire.ants.gouv.fr/demarches-en-ligne/perte-vol-deterioration-fin-de-validite-ou-changement-d-etat-civil'
-};
-/**
- * @param {IOCozyFile} file - io.cozy.files document
- * @returns {boolean}
- * @description Tells if a given file is a national id card, is French, has an expiration date set and has a notice period set
- */
+var _emojiCountry = __webpack_require__(815);
 
-var isExpiringFrenchNationalIdCard = function isExpiringFrenchNationalIdCard(file) {
-  var _file$metadata, _file$metadata$qualif, _file$metadata2, _file$metadata3, _file$metadata4;
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
-  var label = (_file$metadata = file.metadata) === null || _file$metadata === void 0 ? void 0 : (_file$metadata$qualif = _file$metadata.qualification) === null || _file$metadata$qualif === void 0 ? void 0 : _file$metadata$qualif.label;
-  var country = (_file$metadata2 = file.metadata) === null || _file$metadata2 === void 0 ? void 0 : _file$metadata2.country;
-  var expirationDate = (_file$metadata3 = file.metadata) === null || _file$metadata3 === void 0 ? void 0 : _file$metadata3.expirationDate;
-  var noticePeriod = (_file$metadata4 = file.metadata) === null || _file$metadata4 === void 0 ? void 0 : _file$metadata4.noticePeriod;
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
 
-  if (label === 'national_id_card' && (!country || country === 'fr') && expirationDate && noticePeriod) {
-    return true;
+var polyglots = {};
+var langs = ['fr', 'en'];
+
+for (var _i = 0, _langs = langs; _i < _langs.length; _i++) {
+  var lang = _langs[_i];
+  var locales = {};
+
+  try {
+    locales = __webpack_require__(816)("./".concat(lang, ".json"));
+  } catch (e) {// eslint-disable-line no-empty-block
   }
 
-  return false;
-};
+  var polyglot = new _nodePolyglot.default();
+  polyglot.extend(locales);
+  polyglots[lang] = polyglot;
+}
 /**
- * @param {IOCozyFile} file - io.cozy.files document
- * @returns {boolean}
- * @description Tells if a given file has an expiration date set and a notice period set
+ * @param {string} lang - fr, en, etc
+ * @returns {(label: string, opts?: {country?: string, smart_count?: number}) => string}
  */
 
 
-var isExpiringGeneric = function isExpiringGeneric(file) {
-  var _file$metadata5, _file$metadata6;
-
-  var expirationDate = (_file$metadata5 = file.metadata) === null || _file$metadata5 === void 0 ? void 0 : _file$metadata5.expirationDate;
-  var noticePeriod = (_file$metadata6 = file.metadata) === null || _file$metadata6 === void 0 ? void 0 : _file$metadata6.noticePeriod;
+var getBoundT = function getBoundT(lang) {
+  var polyglot = polyglots[lang] || polyglots['en'];
+  var t = polyglot.t.bind(polyglot);
+  return function (label) {
+    var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
 
-  if (expirationDate && noticePeriod) {
-    return true;
-  }
+    var newOpts = _objectSpread(_objectSpread({}, opts), {}, {
+      smart_count: (opts === null || opts === void 0 ? void 0 : opts.smart_count) || 1
+    });
 
-  return false;
+    var emojiCountry = (0, _emojiCountry.getEmojiByCountry)(opts === null || opts === void 0 ? void 0 : opts.country, t);
+    return emojiCountry ? "".concat(t(label, newOpts), " ").concat(emojiCountry) : t(label, newOpts);
+  };
 };
-/**
- * @param {IOCozyFile} file - io.cozy.files document
- * @returns {boolean}
- * @description Tells if a given file is a sporting license, has a reference date set or a creation date if not
- */
 
+exports.getBoundT = getBoundT;
 
-var isExpiringPersonalSportingLicense = function isExpiringPersonalSportingLicense(file) {
-  var _file$metadata7, _file$metadata7$quali, _file$metadata8;
+/***/ }),
+/* 759 */
+/***/ (function(module, exports, __webpack_require__) {
 
-  var label = (_file$metadata7 = file.metadata) === null || _file$metadata7 === void 0 ? void 0 : (_file$metadata7$quali = _file$metadata7.qualification) === null || _file$metadata7$quali === void 0 ? void 0 : _file$metadata7$quali.label;
-  var referencedDate = (_file$metadata8 = file.metadata) === null || _file$metadata8 === void 0 ? void 0 : _file$metadata8.referencedDate;
-  var created_at = file.created_at;
+"use strict";
+//     (c) 2012-2018 Airbnb, Inc.
+//
+//     polyglot.js may be freely distributed under the terms of the BSD
+//     license. For all licensing information, details, and documentation:
+//     http://airbnb.github.com/polyglot.js
+//
+//
+// Polyglot.js is an I18n helper library written in JavaScript, made to
+// work both in the browser and in Node. It provides a simple solution for
+// interpolation and pluralization, based off of Airbnb's
+// experience adding I18n functionality to its Backbone.js and Node apps.
+//
+// Polylglot is agnostic to your translation backend. It doesn't perform any
+// translation; it simply gives you a way to manage translated phrases from
+// your client- or server-side JavaScript application.
+//
 
-  if (label === 'personal_sporting_licence' && (referencedDate || created_at)) {
-    return true;
-  }
 
-  return false;
+
+var forEach = __webpack_require__(760);
+var entries = __webpack_require__(805);
+var warning = __webpack_require__(809);
+var has = __webpack_require__(810);
+var trim = __webpack_require__(811);
+
+var warn = function warn(message) {
+  warning(false, message);
 };
-/**
- * @param {IOCozyFile} file - io.cozy.files document
- * @returns {boolean}
- * @description Tells if a given file matches one of the known types of expiring papers
- */
 
+var replace = String.prototype.replace;
+var split = String.prototype.split;
 
-var isExpiring = function isExpiring(file) {
-  if (isExpiringFrenchNationalIdCard(file)) {
-    return true;
-  }
+// #### Pluralization methods
+// The string that separates the different phrase possibilities.
+var delimiter = '||||';
 
-  if (isExpiringGeneric(file)) {
-    return true;
+var russianPluralGroups = function (n) {
+  var lastTwo = n % 100;
+  var end = lastTwo % 10;
+  if (lastTwo !== 11 && end === 1) {
+    return 0;
   }
-
-  if (isExpiringPersonalSportingLicense(file)) {
-    return true;
+  if (2 <= end && end <= 4 && !(lastTwo >= 12 && lastTwo <= 14)) {
+    return 1;
   }
+  return 2;
+};
 
-  return false;
+var defaultPluralRules = {
+  // Mapping from pluralization group plural logic.
+  pluralTypes: {
+    arabic: function (n) {
+      // http://www.arabeyes.org/Plural_Forms
+      if (n < 3) { return n; }
+      var lastTwo = n % 100;
+      if (lastTwo >= 3 && lastTwo <= 10) return 3;
+      return lastTwo >= 11 ? 4 : 5;
+    },
+    bosnian_serbian: russianPluralGroups,
+    chinese: function () { return 0; },
+    croatian: russianPluralGroups,
+    french: function (n) { return n >= 2 ? 1 : 0; },
+    german: function (n) { return n !== 1 ? 1 : 0; },
+    russian: russianPluralGroups,
+    lithuanian: function (n) {
+      if (n % 10 === 1 && n % 100 !== 11) { return 0; }
+      return n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19) ? 1 : 2;
+    },
+    czech: function (n) {
+      if (n === 1) { return 0; }
+      return (n >= 2 && n <= 4) ? 1 : 2;
+    },
+    polish: function (n) {
+      if (n === 1) { return 0; }
+      var end = n % 10;
+      return 2 <= end && end <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;
+    },
+    icelandic: function (n) { return (n % 10 !== 1 || n % 100 === 11) ? 1 : 0; },
+    slovenian: function (n) {
+      var lastTwo = n % 100;
+      if (lastTwo === 1) {
+        return 0;
+      }
+      if (lastTwo === 2) {
+        return 1;
+      }
+      if (lastTwo === 3 || lastTwo === 4) {
+        return 2;
+      }
+      return 3;
+    }
+  },
+
+  // Mapping from pluralization group to individual language codes/locales.
+  // Will look up based on exact match, if not found and it's a locale will parse the locale
+  // for language code, and if that does not exist will default to 'en'
+  pluralTypeToLanguages: {
+    arabic: ['ar'],
+    bosnian_serbian: ['bs-Latn-BA', 'bs-Cyrl-BA', 'srl-RS', 'sr-RS'],
+    chinese: ['id', 'id-ID', 'ja', 'ko', 'ko-KR', 'lo', 'ms', 'th', 'th-TH', 'zh'],
+    croatian: ['hr', 'hr-HR'],
+    german: ['fa', 'da', 'de', 'en', 'es', 'fi', 'el', 'he', 'hi-IN', 'hu', 'hu-HU', 'it', 'nl', 'no', 'pt', 'sv', 'tr'],
+    french: ['fr', 'tl', 'pt-br'],
+    russian: ['ru', 'ru-RU'],
+    lithuanian: ['lt'],
+    czech: ['cs', 'cs-CZ', 'sk'],
+    polish: ['pl'],
+    icelandic: ['is'],
+    slovenian: ['sl-SL']
+  }
 };
-/**
- * @param {IOCozyFile} file - io.cozy.files document
- * @returns {Date | null} Expiration date
- * @description Computes et returns the expiration date of the given file, or null if it is not expiring
- */
 
+function langToTypeMap(mapping) {
+  var ret = {};
+  forEach(entries(mapping), function (entry) {
+    var type = entry[0];
+    var langs = entry[1];
+    forEach(langs, function (lang) {
+      ret[lang] = type;
+    });
+  });
+  return ret;
+}
 
-exports.isExpiring = isExpiring;
+function pluralTypeName(pluralRules, locale) {
+  var langToPluralType = langToTypeMap(pluralRules.pluralTypeToLanguages);
+  return langToPluralType[locale]
+    || langToPluralType[split.call(locale, /-/, 1)[0]]
+    || langToPluralType.en;
+}
 
-var computeExpirationDate = function computeExpirationDate(file) {
-  if (isExpiringFrenchNationalIdCard(file) || isExpiringGeneric(file)) {
-    var _file$metadata9;
+function pluralTypeIndex(pluralRules, pluralType, count) {
+  return pluralRules.pluralTypes[pluralType](count);
+}
 
-    var expirationDate = (_file$metadata9 = file.metadata) === null || _file$metadata9 === void 0 ? void 0 : _file$metadata9.expirationDate;
-    return new Date(expirationDate);
-  }
+function createMemoizedPluralTypeNameSelector() {
+  var localePluralTypeStorage = {};
 
-  if (isExpiringPersonalSportingLicense(file)) {
-    var _file$metadata10;
+  return function (pluralRules, locale) {
+    var pluralType = localePluralTypeStorage[locale];
 
-    var referencedDate = (_file$metadata10 = file.metadata) === null || _file$metadata10 === void 0 ? void 0 : _file$metadata10.referencedDate;
-    var created_at = file.created_at;
-    return (0, _add.default)(new Date(referencedDate !== null && referencedDate !== void 0 ? referencedDate : created_at), {
-      days: PERSONAL_SPORTING_LICENCE_PERIOD_DAYS
-    });
-  }
+    if (pluralType && !pluralRules.pluralTypes[pluralType]) {
+      pluralType = null;
+      localePluralTypeStorage[locale] = pluralType;
+    }
 
-  return null;
-};
-/**
- * @param {IOCozyFile} file - io.cozy.files document
- * @returns {number | null} Expiration notice period in days
- * @description Computes et returns the expiration notice period of the given file, or null if it is not expiring
- */
+    if (!pluralType) {
+      pluralType = pluralTypeName(pluralRules, locale);
 
+      if (pluralType) {
+        localePluralTypeStorage[locale] = pluralType;
+      }
+    }
 
-exports.computeExpirationDate = computeExpirationDate;
+    return pluralType;
+  };
+}
 
-var computeExpirationNoticePeriodInDays = function computeExpirationNoticePeriodInDays(file) {
-  if (isExpiringFrenchNationalIdCard(file) || isExpiringGeneric(file)) {
-    var _file$metadata11;
+function escape(token) {
+  return token.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
+}
 
-    var noticePeriodInDays = (_file$metadata11 = file.metadata) === null || _file$metadata11 === void 0 ? void 0 : _file$metadata11.noticePeriod;
-    return parseInt(noticePeriodInDays, 10);
-  }
+function constructTokenRegex(opts) {
+  var prefix = (opts && opts.prefix) || '%{';
+  var suffix = (opts && opts.suffix) || '}';
 
-  if (isExpiringPersonalSportingLicense(file)) {
-    return PERSONAL_SPORTING_LICENCE_NOTICE_PERIOD_DAYS;
+  if (prefix === delimiter || suffix === delimiter) {
+    throw new RangeError('"' + delimiter + '" token is reserved for pluralization');
   }
 
-  return null;
-};
-/**
- * @param {IOCozyFile} file - io.cozy.files document
- * @returns {Date | null} Expiration notice date
- * @description Computes et returns the expiration notice date of the given file, or null if it is not expiring
- */
+  return new RegExp(escape(prefix) + '(.*?)' + escape(suffix), 'g');
+}
 
+var memoizedPluralTypeName = createMemoizedPluralTypeNameSelector();
 
-var computeExpirationNoticeDate = function computeExpirationNoticeDate(file) {
-  var expirationDate = computeExpirationDate(file);
+var defaultTokenRegex = /%\{(.*?)\}/g;
 
-  if (expirationDate == null) {
-    return null;
+// ### transformPhrase(phrase, substitutions, locale)
+//
+// Takes a phrase string and transforms it by choosing the correct
+// plural form and interpolating it.
+//
+//     transformPhrase('Hello, %{name}!', {name: 'Spike'});
+//     // "Hello, Spike!"
+//
+// The correct plural form is selected if substitutions.smart_count
+// is set. You can pass in a number instead of an Object as `substitutions`
+// as a shortcut for `smart_count`.
+//
+//     transformPhrase('%{smart_count} new messages |||| 1 new message', {smart_count: 1}, 'en');
+//     // "1 new message"
+//
+//     transformPhrase('%{smart_count} new messages |||| 1 new message', {smart_count: 2}, 'en');
+//     // "2 new messages"
+//
+//     transformPhrase('%{smart_count} new messages |||| 1 new message', 5, 'en');
+//     // "5 new messages"
+//
+// You should pass in a third argument, the locale, to specify the correct plural type.
+// It defaults to `'en'` with 2 plural forms.
+function transformPhrase(phrase, substitutions, locale, tokenRegex, pluralRules) {
+  if (typeof phrase !== 'string') {
+    throw new TypeError('Polyglot.transformPhrase expects argument #1 to be string');
   }
 
-  var noticePeriodInDays = computeExpirationNoticePeriodInDays(file);
+  if (substitutions == null) {
+    return phrase;
+  }
 
-  if (noticePeriodInDays == null) {
-    return null;
+  var result = phrase;
+  var interpolationRegex = tokenRegex || defaultTokenRegex;
+
+  // allow number as a pluralization shortcut
+  var options = typeof substitutions === 'number' ? { smart_count: substitutions } : substitutions;
+
+  // Select plural form: based on a phrase text that contains `n`
+  // plural forms separated by `delimiter`, a `locale`, and a `substitutions.smart_count`,
+  // choose the correct plural form. This is only done if `count` is set.
+  if (options.smart_count != null && phrase) {
+    var pluralRulesOrDefault = pluralRules || defaultPluralRules;
+    var texts = split.call(phrase, delimiter);
+    var bestLocale = locale || 'en';
+    var pluralType = memoizedPluralTypeName(pluralRulesOrDefault, bestLocale);
+    var pluralTypeWithCount = pluralTypeIndex(
+      pluralRulesOrDefault,
+      pluralType,
+      options.smart_count
+    );
+
+    result = trim(texts[pluralTypeWithCount] || texts[0]);
   }
 
-  return (0, _sub.default)(expirationDate, {
-    days: noticePeriodInDays
+  // Interpolate: Creates a `RegExp` object for each interpolation placeholder.
+  result = replace.call(result, interpolationRegex, function (expression, argument) {
+    if (!has(options, argument) || options[argument] == null) { return expression; }
+    return options[argument];
   });
-};
-/**
- * @param {IOCozyFile} file - io.cozy.files document
- * @returns {string | null} Expiration notice link
- * @description Computes and returns the expiration notice link of the given file, or null if it has none
- */
 
+  return result;
+}
 
-exports.computeExpirationNoticeDate = computeExpirationNoticeDate;
+// ### Polyglot class constructor
+function Polyglot(options) {
+  var opts = options || {};
+  this.phrases = {};
+  this.extend(opts.phrases || {});
+  this.currentLocale = opts.locale || 'en';
+  var allowMissing = opts.allowMissing ? transformPhrase : null;
+  this.onMissingKey = typeof opts.onMissingKey === 'function' ? opts.onMissingKey : allowMissing;
+  this.warn = opts.warn || warn;
+  this.tokenRegex = constructTokenRegex(opts.interpolation);
+  this.pluralRules = opts.pluralRules || defaultPluralRules;
+}
 
-var computeExpirationNoticeLink = function computeExpirationNoticeLink(file) {
-  var _file$metadata12, _file$metadata12$qual;
+// ### polyglot.locale([locale])
+//
+// Get or set locale. Internally, Polyglot only uses locale for pluralization.
+Polyglot.prototype.locale = function (newLocale) {
+  if (newLocale) this.currentLocale = newLocale;
+  return this.currentLocale;
+};
 
-  var qualificationLabel = (_file$metadata12 = file.metadata) === null || _file$metadata12 === void 0 ? void 0 : (_file$metadata12$qual = _file$metadata12.qualification) === null || _file$metadata12$qual === void 0 ? void 0 : _file$metadata12$qual.label;
-  if (!qualificationLabel) return null;
-  return EXPIRATION_LINK_BY_LABEL[qualificationLabel] || null;
+// ### polyglot.extend(phrases)
+//
+// Use `extend` to tell Polyglot how to translate a given key.
+//
+//     polyglot.extend({
+//       "hello": "Hello",
+//       "hello_name": "Hello, %{name}"
+//     });
+//
+// The key can be any string.  Feel free to call `extend` multiple times;
+// it will override any phrases with the same key, but leave existing phrases
+// untouched.
+//
+// It is also possible to pass nested phrase objects, which get flattened
+// into an object with the nested keys concatenated using dot notation.
+//
+//     polyglot.extend({
+//       "nav": {
+//         "hello": "Hello",
+//         "hello_name": "Hello, %{name}",
+//         "sidebar": {
+//           "welcome": "Welcome"
+//         }
+//       }
+//     });
+//
+//     console.log(polyglot.phrases);
+//     // {
+//     //   'nav.hello': 'Hello',
+//     //   'nav.hello_name': 'Hello, %{name}',
+//     //   'nav.sidebar.welcome': 'Welcome'
+//     // }
+//
+// `extend` accepts an optional second argument, `prefix`, which can be used
+// to prefix every key in the phrases object with some string, using dot
+// notation.
+//
+//     polyglot.extend({
+//       "hello": "Hello",
+//       "hello_name": "Hello, %{name}"
+//     }, "nav");
+//
+//     console.log(polyglot.phrases);
+//     // {
+//     //   'nav.hello': 'Hello',
+//     //   'nav.hello_name': 'Hello, %{name}'
+//     // }
+//
+// This feature is used internally to support nested phrase objects.
+Polyglot.prototype.extend = function (morePhrases, prefix) {
+  forEach(entries(morePhrases || {}), function (entry) {
+    var key = entry[0];
+    var phrase = entry[1];
+    var prefixedKey = prefix ? prefix + '.' + key : key;
+    if (typeof phrase === 'object') {
+      this.extend(phrase, prefixedKey);
+    } else {
+      this.phrases[prefixedKey] = phrase;
+    }
+  }, this);
 };
-/**
- * @param {IOCozyFile} file - io.cozy.files document
- * @returns {boolean}
- * @description Tells if the given file is expiring and if today is after its expiration date
- */
 
+// ### polyglot.unset(phrases)
+// Use `unset` to selectively remove keys from a polyglot instance.
+//
+//     polyglot.unset("some_key");
+//     polyglot.unset({
+//       "hello": "Hello",
+//       "hello_name": "Hello, %{name}"
+//     });
+//
+// The unset method can take either a string (for the key), or an object hash with
+// the keys that you would like to unset.
+Polyglot.prototype.unset = function (morePhrases, prefix) {
+  if (typeof morePhrases === 'string') {
+    delete this.phrases[morePhrases];
+  } else {
+    forEach(entries(morePhrases || {}), function (entry) {
+      var key = entry[0];
+      var phrase = entry[1];
+      var prefixedKey = prefix ? prefix + '.' + key : key;
+      if (typeof phrase === 'object') {
+        this.unset(phrase, prefixedKey);
+      } else {
+        delete this.phrases[prefixedKey];
+      }
+    }, this);
+  }
+};
 
-exports.computeExpirationNoticeLink = computeExpirationNoticeLink;
+// ### polyglot.clear()
+//
+// Clears all phrases. Useful for special cases, such as freeing
+// up memory if you have lots of phrases but no longer need to
+// perform any translation. Also used internally by `replace`.
+Polyglot.prototype.clear = function () {
+  this.phrases = {};
+};
 
-var isExpired = function isExpired(file) {
-  var now = new Date();
-  var expirationDate = computeExpirationDate(file);
-  var isExpired = expirationDate != null && expirationDate <= now;
-  return isExpired;
+// ### polyglot.replace(phrases)
+//
+// Completely replace the existing phrases with a new set of phrases.
+// Normally, just use `extend` to add more phrases, but under certain
+// circumstances, you may want to make sure no old phrases are lying around.
+Polyglot.prototype.replace = function (newPhrases) {
+  this.clear();
+  this.extend(newPhrases);
 };
-/**
- * @param {IOCozyFile} file - io.cozy.files document
- * @returns {boolean}
- * @description Tells if the given file is expiring and if today is between its expiration notice date and its expiration date
- */
 
+// ### polyglot.t(key, options)
+//
+// The most-used method. Provide a key, and `t` will return the
+// phrase.
+//
+//     polyglot.t("hello");
+//     => "Hello"
+//
+// The phrase value is provided first by a call to `polyglot.extend()` or
+// `polyglot.replace()`.
+//
+// Pass in an object as the second argument to perform interpolation.
+//
+//     polyglot.t("hello_name", {name: "Spike"});
+//     => "Hello, Spike"
+//
+// If you like, you can provide a default value in case the phrase is missing.
+// Use the special option key "_" to specify a default.
+//
+//     polyglot.t("i_like_to_write_in_language", {
+//       _: "I like to write in %{language}.",
+//       language: "JavaScript"
+//     });
+//     => "I like to write in JavaScript."
+//
+Polyglot.prototype.t = function (key, options) {
+  var phrase, result;
+  var opts = options == null ? {} : options;
+  if (typeof this.phrases[key] === 'string') {
+    phrase = this.phrases[key];
+  } else if (typeof opts._ === 'string') {
+    phrase = opts._;
+  } else if (this.onMissingKey) {
+    var onMissingKey = this.onMissingKey;
+    result = onMissingKey(key, opts, this.currentLocale, this.tokenRegex, this.pluralRules);
+  } else {
+    this.warn('Missing translation for key: "' + key + '"');
+    result = key;
+  }
+  if (typeof phrase === 'string') {
+    result = transformPhrase(phrase, opts, this.currentLocale, this.tokenRegex, this.pluralRules);
+  }
+  return result;
+};
 
-exports.isExpired = isExpired;
+// ### polyglot.has(key)
+//
+// Check if polyglot has a translation for given key
+Polyglot.prototype.has = function (key) {
+  return has(this.phrases, key);
+};
 
-var isExpiringSoon = function isExpiringSoon(file) {
-  var now = new Date();
-  var expirationDate = computeExpirationDate(file);
-  var expirationNoticeDate = computeExpirationNoticeDate(file);
-  var isExpiringSoon = expirationDate != null && expirationNoticeDate != null && expirationNoticeDate <= now && now < expirationDate;
-  return isExpiringSoon;
+// export transformPhrase
+Polyglot.transformPhrase = function transform(phrase, substitutions, locale) {
+  return transformPhrase(phrase, substitutions, locale);
 };
 
-exports.isExpiringSoon = isExpiringSoon;
+module.exports = Polyglot;
+
 
 /***/ }),
-/* 825 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 760 */
+/***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return add; });
-/* harmony import */ var _addDays_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(826);
-/* harmony import */ var _addMonths_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(830);
-/* harmony import */ var _toDate_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(828);
-/* harmony import */ var _lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(829);
-/* harmony import */ var _lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(827);
-function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
-
-
 
 
+var define = __webpack_require__(761);
+var callBind = __webpack_require__(565);
+var callBound = __webpack_require__(564);
+var RequireObjectCoercible = __webpack_require__(765);
 
+var implementation = __webpack_require__(767);
+var getPolyfill = __webpack_require__(802);
+var polyfill = getPolyfill();
+var shim = __webpack_require__(804);
 
+var $slice = callBound('Array.prototype.slice');
 
-/**
- * @name add
- * @category Common Helpers
- * @summary Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.
- *
- * @description
- * Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.
- *
- * @param {Date|Number} date - the date to be changed
- * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
- *
- * | Key            | Description                        |
- * |----------------|------------------------------------|
- * | years          | Amount of years to be added        |
- * | months         | Amount of months to be added       |
- * | weeks          | Amount of weeks to be added        |
- * | days           | Amount of days to be added         |
- * | hours          | Amount of hours to be added        |
- * | minutes        | Amount of minutes to be added      |
- * | seconds        | Amount of seconds to be added      |
- *
- * All values default to 0
- *
- * @returns {Date} the new date with the seconds added
- * @throws {TypeError} 2 arguments required
- *
- * @example
- * // Add the following duration to 1 September 2014, 10:19:50
- * const result = add(new Date(2014, 8, 1, 10, 19, 50), {
- *   years: 2,
- *   months: 9,
- *   weeks: 1,
- *   days: 7,
- *   hours: 5,
- *   minutes: 9,
- *   seconds: 30,
- * })
- * //=> Thu Jun 15 2017 15:29:20
- */
-function add(dirtyDate, duration) {
-  Object(_lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_3__["default"])(2, arguments);
-  if (!duration || _typeof(duration) !== 'object') return new Date(NaN);
-  var years = duration.years ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_4__["default"])(duration.years) : 0;
-  var months = duration.months ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_4__["default"])(duration.months) : 0;
-  var weeks = duration.weeks ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_4__["default"])(duration.weeks) : 0;
-  var days = duration.days ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_4__["default"])(duration.days) : 0;
-  var hours = duration.hours ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_4__["default"])(duration.hours) : 0;
-  var minutes = duration.minutes ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_4__["default"])(duration.minutes) : 0;
-  var seconds = duration.seconds ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_4__["default"])(duration.seconds) : 0; // Add years and months
+var bound = callBind.apply(polyfill);
+// eslint-disable-next-line no-unused-vars
+var boundCoercible = function forEach(array, callbackfn) {
+	RequireObjectCoercible(array);
+	return bound(array, $slice(arguments, 1));
+};
 
-  var date = Object(_toDate_index_js__WEBPACK_IMPORTED_MODULE_2__["default"])(dirtyDate);
-  var dateWithMonths = months || years ? Object(_addMonths_index_js__WEBPACK_IMPORTED_MODULE_1__["default"])(date, months + years * 12) : date; // Add weeks and days
+define(boundCoercible, {
+	getPolyfill: getPolyfill,
+	implementation: implementation,
+	shim: shim
+});
 
-  var dateWithDays = days || weeks ? Object(_addDays_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(dateWithMonths, days + weeks * 7) : dateWithMonths; // Add days, hours, minutes and seconds
+module.exports = boundCoercible;
 
-  var minutesToAdd = minutes + hours * 60;
-  var secondsToAdd = seconds + minutesToAdd * 60;
-  var msToAdd = secondsToAdd * 1000;
-  var finalDate = new Date(dateWithDays.getTime() + msToAdd);
-  return finalDate;
-}
 
 /***/ }),
-/* 826 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 761 */
+/***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return addDays; });
-/* harmony import */ var _lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(827);
-/* harmony import */ var _toDate_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(828);
-/* harmony import */ var _lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(829);
-
 
 
-/**
- * @name addDays
- * @category Day Helpers
- * @summary Add the specified number of days to the given date.
- *
- * @description
- * Add the specified number of days to the given date.
- *
- * @param {Date|Number} date - the date to be changed
- * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
- * @returns {Date} - the new date with the days added
- * @throws {TypeError} - 2 arguments required
- *
- * @example
- * // Add 10 days to 1 September 2014:
- * const result = addDays(new Date(2014, 8, 1), 10)
- * //=> Thu Sep 11 2014 00:00:00
- */
+var keys = __webpack_require__(762);
+var hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';
 
-function addDays(dirtyDate, dirtyAmount) {
-  Object(_lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_2__["default"])(2, arguments);
-  var date = Object(_toDate_index_js__WEBPACK_IMPORTED_MODULE_1__["default"])(dirtyDate);
-  var amount = Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(dirtyAmount);
+var toStr = Object.prototype.toString;
+var concat = Array.prototype.concat;
+var defineDataProperty = __webpack_require__(567);
 
-  if (isNaN(amount)) {
-    return new Date(NaN);
-  }
+var isFunction = function (fn) {
+	return typeof fn === 'function' && toStr.call(fn) === '[object Function]';
+};
 
-  if (!amount) {
-    // If 0 days, no-op to avoid changing times in the hour before end of DST
-    return date;
-  }
+var supportsDescriptors = __webpack_require__(570)();
 
-  date.setDate(date.getDate() + amount);
-  return date;
-}
+var defineProperty = function (object, name, value, predicate) {
+	if (name in object) {
+		if (predicate === true) {
+			if (object[name] === value) {
+				return;
+			}
+		} else if (!isFunction(predicate) || !predicate()) {
+			return;
+		}
+	}
 
-/***/ }),
-/* 827 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+	if (supportsDescriptors) {
+		defineDataProperty(object, name, value, true);
+	} else {
+		defineDataProperty(object, name, value);
+	}
+};
 
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return toInteger; });
-function toInteger(dirtyNumber) {
-  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {
-    return NaN;
-  }
+var defineProperties = function (object, map) {
+	var predicates = arguments.length > 2 ? arguments[2] : {};
+	var props = keys(map);
+	if (hasSymbols) {
+		props = concat.call(props, Object.getOwnPropertySymbols(map));
+	}
+	for (var i = 0; i < props.length; i += 1) {
+		defineProperty(object, props[i], map[props[i]], predicates[props[i]]);
+	}
+};
 
-  var number = Number(dirtyNumber);
+defineProperties.supportsDescriptors = !!supportsDescriptors;
 
-  if (isNaN(number)) {
-    return number;
-  }
+module.exports = defineProperties;
 
-  return number < 0 ? Math.ceil(number) : Math.floor(number);
-}
 
 /***/ }),
-/* 828 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 762 */
+/***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return toDate; });
-/* harmony import */ var _lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(829);
-function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
-
 
-/**
- * @name toDate
- * @category Common Helpers
- * @summary Convert the given argument to an instance of Date.
- *
- * @description
- * Convert the given argument to an instance of Date.
- *
- * If the argument is an instance of Date, the function returns its clone.
- *
- * If the argument is a number, it is treated as a timestamp.
- *
- * If the argument is none of the above, the function returns Invalid Date.
- *
- * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.
- *
- * @param {Date|Number} argument - the value to convert
- * @returns {Date} the parsed date in the local time zone
- * @throws {TypeError} 1 argument required
- *
- * @example
- * // Clone the date:
- * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))
- * //=> Tue Feb 11 2014 11:30:30
- *
- * @example
- * // Convert the timestamp to date:
- * const result = toDate(1392098430000)
- * //=> Tue Feb 11 2014 11:30:30
- */
 
-function toDate(argument) {
-  Object(_lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(1, arguments);
-  var argStr = Object.prototype.toString.call(argument); // Clone the date
+var slice = Array.prototype.slice;
+var isArgs = __webpack_require__(763);
 
-  if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {
-    // Prevent the date to lose the milliseconds when passed to new Date() in IE10
-    return new Date(argument.getTime());
-  } else if (typeof argument === 'number' || argStr === '[object Number]') {
-    return new Date(argument);
-  } else {
-    if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {
-      // eslint-disable-next-line no-console
-      console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"); // eslint-disable-next-line no-console
+var origKeys = Object.keys;
+var keysShim = origKeys ? function keys(o) { return origKeys(o); } : __webpack_require__(764);
 
-      console.warn(new Error().stack);
-    }
+var originalKeys = Object.keys;
 
-    return new Date(NaN);
-  }
-}
+keysShim.shim = function shimObjectKeys() {
+	if (Object.keys) {
+		var keysWorksWithArguments = (function () {
+			// Safari 5.0 bug
+			var args = Object.keys(arguments);
+			return args && args.length === arguments.length;
+		}(1, 2));
+		if (!keysWorksWithArguments) {
+			Object.keys = function keys(object) { // eslint-disable-line func-name-matching
+				if (isArgs(object)) {
+					return originalKeys(slice.call(object));
+				}
+				return originalKeys(object);
+			};
+		}
+	} else {
+		Object.keys = keysShim;
+	}
+	return Object.keys || keysShim;
+};
 
-/***/ }),
-/* 829 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+module.exports = keysShim;
 
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return requiredArgs; });
-function requiredArgs(required, args) {
-  if (args.length < required) {
-    throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');
-  }
-}
 
 /***/ }),
-/* 830 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 763 */
+/***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return addMonths; });
-/* harmony import */ var _lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(827);
-/* harmony import */ var _toDate_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(828);
-/* harmony import */ var _lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(829);
-
-
-
-/**
- * @name addMonths
- * @category Month Helpers
- * @summary Add the specified number of months to the given date.
- *
- * @description
- * Add the specified number of months to the given date.
- *
- * @param {Date|Number} date - the date to be changed
- * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
- * @returns {Date} the new date with the months added
- * @throws {TypeError} 2 arguments required
- *
- * @example
- * // Add 5 months to 1 September 2014:
- * const result = addMonths(new Date(2014, 8, 1), 5)
- * //=> Sun Feb 01 2015 00:00:00
- */
-
-function addMonths(dirtyDate, dirtyAmount) {
-  Object(_lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_2__["default"])(2, arguments);
-  var date = Object(_toDate_index_js__WEBPACK_IMPORTED_MODULE_1__["default"])(dirtyDate);
-  var amount = Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(dirtyAmount);
-
-  if (isNaN(amount)) {
-    return new Date(NaN);
-  }
 
-  if (!amount) {
-    // If 0 months, no-op to avoid changing times in the hour before end of DST
-    return date;
-  }
 
-  var dayOfMonth = date.getDate(); // The JS Date object supports date math by accepting out-of-bounds values for
-  // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and
-  // new Date(2020, 13, 1) returns 1 Feb 2021.  This is *almost* the behavior we
-  // want except that dates will wrap around the end of a month, meaning that
-  // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So
-  // we'll default to the end of the desired month by adding 1 to the desired
-  // month and using a date of 0 to back up one day to the end of the desired
-  // month.
+var toStr = Object.prototype.toString;
 
-  var endOfDesiredMonth = new Date(date.getTime());
-  endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);
-  var daysInMonth = endOfDesiredMonth.getDate();
+module.exports = function isArguments(value) {
+	var str = toStr.call(value);
+	var isArgs = str === '[object Arguments]';
+	if (!isArgs) {
+		isArgs = str !== '[object Array]' &&
+			value !== null &&
+			typeof value === 'object' &&
+			typeof value.length === 'number' &&
+			value.length >= 0 &&
+			toStr.call(value.callee) === '[object Function]';
+	}
+	return isArgs;
+};
 
-  if (dayOfMonth >= daysInMonth) {
-    // If we're already at the end of the month, then this is the correct date
-    // and we're done.
-    return endOfDesiredMonth;
-  } else {
-    // Otherwise, we now know that setting the original day-of-month value won't
-    // cause an overflow, so set the desired day-of-month. Note that we can't
-    // just set the date of `endOfDesiredMonth` because that object may have had
-    // its time changed in the unusual case where where a DST transition was on
-    // the last day of the month and its local time was in the hour skipped or
-    // repeated next to a DST transition.  So we use `date` instead which is
-    // guaranteed to still have the original time.
-    date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);
-    return date;
-  }
-}
 
 /***/ }),
-/* 831 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 764 */
+/***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return sub; });
-/* harmony import */ var _subDays_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(832);
-/* harmony import */ var _subMonths_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(833);
-/* harmony import */ var _lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(829);
-/* harmony import */ var _lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(827);
-function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
-
-
 
 
+var keysShim;
+if (!Object.keys) {
+	// modified from https://github.com/es-shims/es5-shim
+	var has = Object.prototype.hasOwnProperty;
+	var toStr = Object.prototype.toString;
+	var isArgs = __webpack_require__(763); // eslint-disable-line global-require
+	var isEnumerable = Object.prototype.propertyIsEnumerable;
+	var hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');
+	var hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');
+	var dontEnums = [
+		'toString',
+		'toLocaleString',
+		'valueOf',
+		'hasOwnProperty',
+		'isPrototypeOf',
+		'propertyIsEnumerable',
+		'constructor'
+	];
+	var equalsConstructorPrototype = function (o) {
+		var ctor = o.constructor;
+		return ctor && ctor.prototype === o;
+	};
+	var excludedKeys = {
+		$applicationCache: true,
+		$console: true,
+		$external: true,
+		$frame: true,
+		$frameElement: true,
+		$frames: true,
+		$innerHeight: true,
+		$innerWidth: true,
+		$onmozfullscreenchange: true,
+		$onmozfullscreenerror: true,
+		$outerHeight: true,
+		$outerWidth: true,
+		$pageXOffset: true,
+		$pageYOffset: true,
+		$parent: true,
+		$scrollLeft: true,
+		$scrollTop: true,
+		$scrollX: true,
+		$scrollY: true,
+		$self: true,
+		$webkitIndexedDB: true,
+		$webkitStorageInfo: true,
+		$window: true
+	};
+	var hasAutomationEqualityBug = (function () {
+		/* global window */
+		if (typeof window === 'undefined') { return false; }
+		for (var k in window) {
+			try {
+				if (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {
+					try {
+						equalsConstructorPrototype(window[k]);
+					} catch (e) {
+						return true;
+					}
+				}
+			} catch (e) {
+				return true;
+			}
+		}
+		return false;
+	}());
+	var equalsConstructorPrototypeIfNotBuggy = function (o) {
+		/* global window */
+		if (typeof window === 'undefined' || !hasAutomationEqualityBug) {
+			return equalsConstructorPrototype(o);
+		}
+		try {
+			return equalsConstructorPrototype(o);
+		} catch (e) {
+			return false;
+		}
+	};
 
-/**
- * @name sub
- * @category Common Helpers
- * @summary Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.
- *
- * @description
- * Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.
- *
- * @param {Date|Number} date - the date to be changed
- * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be subtracted
- *
- * | Key     | Description                        |
- * |---------|------------------------------------|
- * | years   | Amount of years to be subtracted   |
- * | months  | Amount of months to be subtracted  |
- * | weeks   | Amount of weeks to be subtracted   |
- * | days    | Amount of days to be subtracted    |
- * | hours   | Amount of hours to be subtracted   |
- * | minutes | Amount of minutes to be subtracted |
- * | seconds | Amount of seconds to be subtracted |
- *
- * All values default to 0
- *
- * @returns {Date} the new date with the seconds subtracted
- * @throws {TypeError} 2 arguments required
- *
- * @example
- * // Subtract the following duration from 15 June 2017 15:29:20
- * const result = sub(new Date(2017, 5, 15, 15, 29, 20), {
- *   years: 2,
- *   months: 9,
- *   weeks: 1,
- *   days: 7,
- *   hours: 5,
- *   minutes: 9,
- *   seconds: 30
- * })
- * //=> Mon Sep 1 2014 10:19:50
- */
+	keysShim = function keys(object) {
+		var isObject = object !== null && typeof object === 'object';
+		var isFunction = toStr.call(object) === '[object Function]';
+		var isArguments = isArgs(object);
+		var isString = isObject && toStr.call(object) === '[object String]';
+		var theKeys = [];
 
-function sub(date, duration) {
-  Object(_lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_2__["default"])(2, arguments);
-  if (!duration || _typeof(duration) !== 'object') return new Date(NaN);
-  var years = duration.years ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_3__["default"])(duration.years) : 0;
-  var months = duration.months ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_3__["default"])(duration.months) : 0;
-  var weeks = duration.weeks ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_3__["default"])(duration.weeks) : 0;
-  var days = duration.days ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_3__["default"])(duration.days) : 0;
-  var hours = duration.hours ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_3__["default"])(duration.hours) : 0;
-  var minutes = duration.minutes ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_3__["default"])(duration.minutes) : 0;
-  var seconds = duration.seconds ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_3__["default"])(duration.seconds) : 0; // Subtract years and months
+		if (!isObject && !isFunction && !isArguments) {
+			throw new TypeError('Object.keys called on a non-object');
+		}
 
-  var dateWithoutMonths = Object(_subMonths_index_js__WEBPACK_IMPORTED_MODULE_1__["default"])(date, months + years * 12); // Subtract weeks and days
+		var skipProto = hasProtoEnumBug && isFunction;
+		if (isString && object.length > 0 && !has.call(object, 0)) {
+			for (var i = 0; i < object.length; ++i) {
+				theKeys.push(String(i));
+			}
+		}
 
-  var dateWithoutDays = Object(_subDays_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(dateWithoutMonths, days + weeks * 7); // Subtract hours, minutes and seconds
+		if (isArguments && object.length > 0) {
+			for (var j = 0; j < object.length; ++j) {
+				theKeys.push(String(j));
+			}
+		} else {
+			for (var name in object) {
+				if (!(skipProto && name === 'prototype') && has.call(object, name)) {
+					theKeys.push(String(name));
+				}
+			}
+		}
 
-  var minutestoSub = minutes + hours * 60;
-  var secondstoSub = seconds + minutestoSub * 60;
-  var mstoSub = secondstoSub * 1000;
-  var finalDate = new Date(dateWithoutDays.getTime() - mstoSub);
-  return finalDate;
+		if (hasDontEnumBug) {
+			var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);
+
+			for (var k = 0; k < dontEnums.length; ++k) {
+				if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {
+					theKeys.push(dontEnums[k]);
+				}
+			}
+		}
+		return theKeys;
+	};
 }
+module.exports = keysShim;
+
 
 /***/ }),
-/* 832 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 765 */
+/***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return subDays; });
-/* harmony import */ var _addDays_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(826);
-/* harmony import */ var _lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(829);
-/* harmony import */ var _lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(827);
-
 
 
-/**
- * @name subDays
- * @category Day Helpers
- * @summary Subtract the specified number of days from the given date.
- *
- * @description
- * Subtract the specified number of days from the given date.
- *
- * @param {Date|Number} date - the date to be changed
- * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
- * @returns {Date} the new date with the days subtracted
- * @throws {TypeError} 2 arguments required
- *
- * @example
- * // Subtract 10 days from 1 September 2014:
- * const result = subDays(new Date(2014, 8, 1), 10)
- * //=> Fri Aug 22 2014 00:00:00
- */
+module.exports = __webpack_require__(766);
 
-function subDays(dirtyDate, dirtyAmount) {
-  Object(_lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_1__["default"])(2, arguments);
-  var amount = Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_2__["default"])(dirtyAmount);
-  return Object(_addDays_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(dirtyDate, -amount);
-}
 
 /***/ }),
-/* 833 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/* 766 */
+/***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return subMonths; });
-/* harmony import */ var _lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(827);
-/* harmony import */ var _addMonths_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(830);
-/* harmony import */ var _lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(829);
 
 
+var GetIntrinsic = __webpack_require__(550);
 
-/**
- * @name subMonths
- * @category Month Helpers
- * @summary Subtract the specified number of months from the given date.
- *
- * @description
- * Subtract the specified number of months from the given date.
- *
- * @param {Date|Number} date - the date to be changed
- * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
- * @returns {Date} the new date with the months subtracted
- * @throws {TypeError} 2 arguments required
- *
- * @example
- * // Subtract 5 months from 1 February 2015:
- * const result = subMonths(new Date(2015, 1, 1), 5)
- * //=> Mon Sep 01 2014 00:00:00
- */
+var $TypeError = GetIntrinsic('%TypeError%');
+
+// http://262.ecma-international.org/5.1/#sec-9.10
+
+module.exports = function CheckObjectCoercible(value, optMessage) {
+	if (value == null) {
+		throw new $TypeError(optMessage || ('Cannot call method on ' + value));
+	}
+	return value;
+};
 
-function subMonths(dirtyDate, dirtyAmount) {
-  Object(_lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_2__["default"])(2, arguments);
-  var amount = Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(dirtyAmount);
-  return Object(_addMonths_index_js__WEBPACK_IMPORTED_MODULE_1__["default"])(dirtyDate, -amount);
-}
 
 /***/ }),
-/* 834 */
+/* 767 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.hasPassword = void 0;
+var GetIntrinsic = __webpack_require__(550);
+var callBound = __webpack_require__(564);
+var $TypeError = GetIntrinsic('%TypeError%');
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+var Call = __webpack_require__(768);
+var Get = __webpack_require__(771);
+var HasProperty = __webpack_require__(777);
+var IsCallable = __webpack_require__(778);
+var LengthOfArrayLike = __webpack_require__(780);
+var ToObject = __webpack_require__(799);
+var ToString = __webpack_require__(800);
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+var isString = __webpack_require__(801);
 
-var _instance = __webpack_require__(743);
+var $split = callBound('String.prototype.split');
 
-var _bitwarden = __webpack_require__(835);
+// Check failure of by-index access of string characters (IE < 9) and failure of `0 in boxedString` (Rhino)
+var boxedString = Object('a');
+var splitString = boxedString[0] !== 'a' || !(0 in boxedString);
 
-var _capability = __webpack_require__(836);
+module.exports = function forEach(callbackfn) {
+	var thisO = ToObject(this);
+	var O = splitString && isString(this) ? $split(this, '') : thisO;
 
-/**
- * Checks whether the user has a password
- *
- * @param {import("../CozyClient").default} client - The CozyClient instance
- * @returns {Promise<boolean>} - Returns true if the user has a password
- */
-var hasPassword = /*#__PURE__*/function () {
-  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client) {
-    var hasExtensionInstalled, hasPasswordDefined;
-    return _regenerator.default.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            _context.next = 2;
-            return (0, _bitwarden.hasExtensionInstalledAttribute)(client);
+	var len = LengthOfArrayLike(O);
 
-          case 2:
-            hasExtensionInstalled = _context.sent;
-            _context.next = 5;
-            return (0, _instance.hasPasswordDefinedAttribute)(client);
+	if (!IsCallable(callbackfn)) {
+		throw new $TypeError('Array.prototype.forEach callback must be a function');
+	}
 
-          case 5:
-            hasPasswordDefined = _context.sent;
-            return _context.abrupt("return", !((0, _capability.isMagicLink)(client) || (0, _capability.isOIDC)(client)) || hasExtensionInstalled || hasPasswordDefined);
+	var thisArg;
+	if (arguments.length > 1) {
+		thisArg = arguments[1];
+	}
 
-          case 7:
-          case "end":
-            return _context.stop();
-        }
-      }
-    }, _callee);
-  }));
+	var k = 0;
+	while (k < len) {
+		var Pk = ToString(k);
+		var kPresent = HasProperty(O, Pk);
+		if (kPresent) {
+			var kValue = Get(O, Pk);
+			Call(callbackfn, thisArg, [kValue, k, O]);
+		}
+		k += 1;
+	}
 
-  return function hasPassword(_x) {
-    return _ref.apply(this, arguments);
-  };
-}();
+	return void undefined;
+};
 
-exports.hasPassword = hasPassword;
 
 /***/ }),
-/* 835 */
+/* 768 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _interopRequireDefault = __webpack_require__(1);
+var GetIntrinsic = __webpack_require__(550);
+var callBound = __webpack_require__(564);
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.hasExtensionInstalledAttribute = void 0;
+var $TypeError = GetIntrinsic('%TypeError%');
 
-var _regenerator = _interopRequireDefault(__webpack_require__(293));
+var IsArray = __webpack_require__(769);
 
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+var $apply = GetIntrinsic('%Reflect.apply%', true) || callBound('%Function.prototype.apply%');
 
-var _dsl = __webpack_require__(495);
+// https://ecma-international.org/ecma-262/6.0/#sec-call
 
-/**
- * Checks the value of the extension_installed attribute
- *
- * @param {import("../CozyClient").default} client - The CozyClient instance
- * @returns {Promise<boolean>} - Returns the value of the extension_installed attribute
- */
-var hasExtensionInstalledAttribute = /*#__PURE__*/function () {
-  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client) {
-    var _yield$client$fetchQu, extension_installed;
+module.exports = function Call(F, V) {
+	var argumentsList = arguments.length > 2 ? arguments[2] : [];
+	if (!IsArray(argumentsList)) {
+		throw new $TypeError('Assertion failed: optional `argumentsList`, if provided, must be a List');
+	}
+	return $apply(F, V, argumentsList);
+};
 
-    return _regenerator.default.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            _context.prev = 0;
-            _context.next = 3;
-            return client.fetchQueryAndGetFromState({
-              definition: (0, _dsl.Q)('io.cozy.settings').getById('io.cozy.settings.bitwarden'),
-              options: {
-                as: 'io.cozy.settings/io.cozy.settings.bitwarden',
-                singleDocData: true
-              }
-            });
 
-          case 3:
-            _yield$client$fetchQu = _context.sent;
-            extension_installed = _yield$client$fetchQu.data.extension_installed;
-            return _context.abrupt("return", Boolean(extension_installed));
+/***/ }),
+/* 769 */
+/***/ (function(module, exports, __webpack_require__) {
 
-          case 8:
-            _context.prev = 8;
-            _context.t0 = _context["catch"](0);
-            return _context.abrupt("return", false);
+"use strict";
 
-          case 11:
-          case "end":
-            return _context.stop();
-        }
-      }
-    }, _callee, null, [[0, 8]]);
-  }));
 
-  return function hasExtensionInstalledAttribute(_x) {
-    return _ref.apply(this, arguments);
-  };
-}();
+// https://ecma-international.org/ecma-262/6.0/#sec-isarray
+module.exports = __webpack_require__(770);
 
-exports.hasExtensionInstalledAttribute = hasExtensionInstalledAttribute;
 
 /***/ }),
-/* 836 */
+/* 770 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.isMagicLink = exports.isOIDC = void 0;
+var GetIntrinsic = __webpack_require__(550);
 
-/**
- * Checks if the instance can auth with OIDC
- *
- * @param {import("../CozyClient").default} client - The CozyClient instance
- * @returns {boolean} - Returns true if the instance can auth with OIDC
- */
-var isOIDC = function isOIDC(client) {
-  var _client$capabilities$;
+var $Array = GetIntrinsic('%Array%');
 
-  return (_client$capabilities$ = client.capabilities.can_auth_with_oidc) !== null && _client$capabilities$ !== void 0 ? _client$capabilities$ : false;
+// eslint-disable-next-line global-require
+var toStr = !$Array.isArray && __webpack_require__(564)('Object.prototype.toString');
+
+module.exports = $Array.isArray || function IsArray(argument) {
+	return toStr(argument) === '[object Array]';
 };
-/**
- * Checks if the instance can auth with magic link
- *
- * @param {import("../CozyClient").default} client - The CozyClient instance
- * @returns {boolean} - Returns true if the instance can auth with magic link
- */
 
 
-exports.isOIDC = isOIDC;
+/***/ }),
+/* 771 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var isMagicLink = function isMagicLink(client) {
-  var _client$capabilities$2;
+"use strict";
 
-  return (_client$capabilities$2 = client.capabilities.can_auth_with_magic_links) !== null && _client$capabilities$2 !== void 0 ? _client$capabilities$2 : false;
+
+var GetIntrinsic = __webpack_require__(550);
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var inspect = __webpack_require__(772);
+
+var IsPropertyKey = __webpack_require__(774);
+var Type = __webpack_require__(775);
+
+// https://ecma-international.org/ecma-262/6.0/#sec-get-o-p
+
+module.exports = function Get(O, P) {
+	// 7.3.1.1
+	if (Type(O) !== 'Object') {
+		throw new $TypeError('Assertion failed: Type(O) is not Object');
+	}
+	// 7.3.1.2
+	if (!IsPropertyKey(P)) {
+		throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true, got ' + inspect(P));
+	}
+	// 7.3.1.3
+	return O[P];
 };
 
-exports.isMagicLink = isMagicLink;
 
 /***/ }),
-/* 837 */
+/* 772 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
+var hasMap = typeof Map === 'function' && Map.prototype;
+var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;
+var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;
+var mapForEach = hasMap && Map.prototype.forEach;
+var hasSet = typeof Set === 'function' && Set.prototype;
+var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;
+var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;
+var setForEach = hasSet && Set.prototype.forEach;
+var hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;
+var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;
+var hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;
+var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;
+var hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;
+var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;
+var booleanValueOf = Boolean.prototype.valueOf;
+var objectToString = Object.prototype.toString;
+var functionToString = Function.prototype.toString;
+var $match = String.prototype.match;
+var $slice = String.prototype.slice;
+var $replace = String.prototype.replace;
+var $toUpperCase = String.prototype.toUpperCase;
+var $toLowerCase = String.prototype.toLowerCase;
+var $test = RegExp.prototype.test;
+var $concat = Array.prototype.concat;
+var $join = Array.prototype.join;
+var $arrSlice = Array.prototype.slice;
+var $floor = Math.floor;
+var bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;
+var gOPS = Object.getOwnPropertySymbols;
+var symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;
+var hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';
+// ie, `has-tostringtag/shams
+var toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')
+    ? Symbol.toStringTag
+    : null;
+var isEnumerable = Object.prototype.propertyIsEnumerable;
+
+var gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (
+    [].__proto__ === Array.prototype // eslint-disable-line no-proto
+        ? function (O) {
+            return O.__proto__; // eslint-disable-line no-proto
+        }
+        : null
+);
 
+function addNumericSeparator(num, str) {
+    if (
+        num === Infinity
+        || num === -Infinity
+        || num !== num
+        || (num && num > -1000 && num < 1000)
+        || $test.call(/e/, str)
+    ) {
+        return str;
+    }
+    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;
+    if (typeof num === 'number') {
+        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)
+        if (int !== num) {
+            var intStr = String(int);
+            var dec = $slice.call(str, intStr.length + 1);
+            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');
+        }
+    }
+    return $replace.call(str, sepRegex, '$&_');
+}
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-var _exportNames = {};
-exports.default = void 0;
-var _comGrandlyonEcolyoChallenge = __webpack_require__(838);
-Object.keys(_comGrandlyonEcolyoChallenge).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEcolyoChallenge[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEcolyoChallenge[key];
+var utilInspect = __webpack_require__(773);
+var inspectCustom = utilInspect.custom;
+var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;
+
+module.exports = function inspect_(obj, options, depth, seen) {
+    var opts = options || {};
+
+    if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {
+        throw new TypeError('option "quoteStyle" must be "single" or "double"');
+    }
+    if (
+        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'
+            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity
+            : opts.maxStringLength !== null
+        )
+    ) {
+        throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');
+    }
+    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;
+    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {
+        throw new TypeError('option "customInspect", if provided, must be `true`, `false`, or `\'symbol\'`');
+    }
+
+    if (
+        has(opts, 'indent')
+        && opts.indent !== null
+        && opts.indent !== '\t'
+        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)
+    ) {
+        throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');
+    }
+    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {
+        throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');
+    }
+    var numericSeparator = opts.numericSeparator;
+
+    if (typeof obj === 'undefined') {
+        return 'undefined';
+    }
+    if (obj === null) {
+        return 'null';
+    }
+    if (typeof obj === 'boolean') {
+        return obj ? 'true' : 'false';
+    }
+
+    if (typeof obj === 'string') {
+        return inspectString(obj, opts);
+    }
+    if (typeof obj === 'number') {
+        if (obj === 0) {
+            return Infinity / obj > 0 ? '0' : '-0';
+        }
+        var str = String(obj);
+        return numericSeparator ? addNumericSeparator(obj, str) : str;
+    }
+    if (typeof obj === 'bigint') {
+        var bigIntStr = String(obj) + 'n';
+        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;
+    }
+
+    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;
+    if (typeof depth === 'undefined') { depth = 0; }
+    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {
+        return isArray(obj) ? '[Array]' : '[Object]';
+    }
+
+    var indent = getIndent(opts, depth);
+
+    if (typeof seen === 'undefined') {
+        seen = [];
+    } else if (indexOf(seen, obj) >= 0) {
+        return '[Circular]';
+    }
+
+    function inspect(value, from, noIndent) {
+        if (from) {
+            seen = $arrSlice.call(seen);
+            seen.push(from);
+        }
+        if (noIndent) {
+            var newOpts = {
+                depth: opts.depth
+            };
+            if (has(opts, 'quoteStyle')) {
+                newOpts.quoteStyle = opts.quoteStyle;
+            }
+            return inspect_(value, newOpts, depth + 1, seen);
+        }
+        return inspect_(value, opts, depth + 1, seen);
     }
-  });
-});
-var _comGrandlyonEcolyoDuel = __webpack_require__(839);
-Object.keys(_comGrandlyonEcolyoDuel).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEcolyoDuel[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEcolyoDuel[key];
+
+    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable
+        var name = nameOf(obj);
+        var keys = arrObjKeys(obj, inspect);
+        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');
     }
-  });
-});
-var _comGrandlyonEcolyoEcogesture = __webpack_require__(840);
-Object.keys(_comGrandlyonEcolyoEcogesture).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEcolyoEcogesture[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEcolyoEcogesture[key];
+    if (isSymbol(obj)) {
+        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, '$1') : symToString.call(obj);
+        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;
     }
-  });
-});
-var _comGrandlyonEcolyoExploration = __webpack_require__(841);
-Object.keys(_comGrandlyonEcolyoExploration).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEcolyoExploration[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEcolyoExploration[key];
+    if (isElement(obj)) {
+        var s = '<' + $toLowerCase.call(String(obj.nodeName));
+        var attrs = obj.attributes || [];
+        for (var i = 0; i < attrs.length; i++) {
+            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);
+        }
+        s += '>';
+        if (obj.childNodes && obj.childNodes.length) { s += '...'; }
+        s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';
+        return s;
     }
-  });
-});
-var _comGrandlyonEcolyoFluidsprices = __webpack_require__(842);
-Object.keys(_comGrandlyonEcolyoFluidsprices).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEcolyoFluidsprices[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEcolyoFluidsprices[key];
+    if (isArray(obj)) {
+        if (obj.length === 0) { return '[]'; }
+        var xs = arrObjKeys(obj, inspect);
+        if (indent && !singleLineValues(xs)) {
+            return '[' + indentedJoin(xs, indent) + ']';
+        }
+        return '[ ' + $join.call(xs, ', ') + ' ]';
     }
-  });
-});
-var _comGrandlyonEcolyoProfile = __webpack_require__(843);
-Object.keys(_comGrandlyonEcolyoProfile).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEcolyoProfile[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEcolyoProfile[key];
+    if (isError(obj)) {
+        var parts = arrObjKeys(obj, inspect);
+        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {
+            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';
+        }
+        if (parts.length === 0) { return '[' + String(obj) + ']'; }
+        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';
     }
-  });
-});
-var _comGrandlyonEcolyoProfileecogesture = __webpack_require__(844);
-Object.keys(_comGrandlyonEcolyoProfileecogesture).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEcolyoProfileecogesture[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEcolyoProfileecogesture[key];
+    if (typeof obj === 'object' && customInspect) {
+        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {
+            return utilInspect(obj, { depth: maxDepth - depth });
+        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {
+            return obj.inspect();
+        }
     }
-  });
-});
-var _comGrandlyonEcolyoProfiletype = __webpack_require__(845);
-Object.keys(_comGrandlyonEcolyoProfiletype).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEcolyoProfiletype[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEcolyoProfiletype[key];
+    if (isMap(obj)) {
+        var mapParts = [];
+        mapForEach.call(obj, function (value, key) {
+            mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));
+        });
+        return collectionOf('Map', mapSize.call(obj), mapParts, indent);
     }
-  });
-});
-var _comGrandlyonEcolyoQuiz = __webpack_require__(846);
-Object.keys(_comGrandlyonEcolyoQuiz).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEcolyoQuiz[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEcolyoQuiz[key];
+    if (isSet(obj)) {
+        var setParts = [];
+        setForEach.call(obj, function (value) {
+            setParts.push(inspect(value, obj));
+        });
+        return collectionOf('Set', setSize.call(obj), setParts, indent);
     }
-  });
-});
-var _comGrandlyonEcolyoSchemas = __webpack_require__(847);
-Object.keys(_comGrandlyonEcolyoSchemas).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEcolyoSchemas[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEcolyoSchemas[key];
+    if (isWeakMap(obj)) {
+        return weakCollectionOf('WeakMap');
     }
-  });
-});
-var _comGrandlyonEcolyoUsageevent = __webpack_require__(848);
-Object.keys(_comGrandlyonEcolyoUsageevent).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEcolyoUsageevent[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEcolyoUsageevent[key];
+    if (isWeakSet(obj)) {
+        return weakCollectionOf('WeakSet');
     }
-  });
-});
-var _comGrandlyonEcolyoUserchallenge = __webpack_require__(849);
-Object.keys(_comGrandlyonEcolyoUserchallenge).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEcolyoUserchallenge[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEcolyoUserchallenge[key];
+    if (isWeakRef(obj)) {
+        return weakCollectionOf('WeakRef');
     }
-  });
-});
-var _comGrandlyonEglDay = __webpack_require__(850);
-Object.keys(_comGrandlyonEglDay).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEglDay[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEglDay[key];
+    if (isNumber(obj)) {
+        return markBoxed(inspect(Number(obj)));
     }
-  });
-});
-var _comGrandlyonEglMonth = __webpack_require__(851);
-Object.keys(_comGrandlyonEglMonth).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEglMonth[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEglMonth[key];
+    if (isBigInt(obj)) {
+        return markBoxed(inspect(bigIntValueOf.call(obj)));
     }
-  });
-});
-var _comGrandlyonEglYear = __webpack_require__(852);
-Object.keys(_comGrandlyonEglYear).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEglYear[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEglYear[key];
+    if (isBoolean(obj)) {
+        return markBoxed(booleanValueOf.call(obj));
     }
-  });
-});
-var _comGrandlyonEnedisDay = __webpack_require__(853);
-Object.keys(_comGrandlyonEnedisDay).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEnedisDay[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEnedisDay[key];
+    if (isString(obj)) {
+        return markBoxed(inspect(String(obj)));
     }
-  });
-});
-var _comGrandlyonEnedisMaxpower = __webpack_require__(854);
-Object.keys(_comGrandlyonEnedisMaxpower).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEnedisMaxpower[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEnedisMaxpower[key];
+    if (!isDate(obj) && !isRegExp(obj)) {
+        var ys = arrObjKeys(obj, inspect);
+        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;
+        var protoTag = obj instanceof Object ? '' : 'null prototype';
+        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';
+        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';
+        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');
+        if (ys.length === 0) { return tag + '{}'; }
+        if (indent) {
+            return tag + '{' + indentedJoin(ys, indent) + '}';
+        }
+        return tag + '{ ' + $join.call(ys, ', ') + ' }';
     }
-  });
-});
-var _comGrandlyonEnedisMinute = __webpack_require__(855);
-Object.keys(_comGrandlyonEnedisMinute).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEnedisMinute[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEnedisMinute[key];
+    return String(obj);
+};
+
+function wrapQuotes(s, defaultStyle, opts) {
+    var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '"' : "'";
+    return quoteChar + s + quoteChar;
+}
+
+function quote(s) {
+    return $replace.call(String(s), /"/g, '&quot;');
+}
+
+function isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
+function isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
+function isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
+function isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
+function isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
+function isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
+function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
+
+// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives
+function isSymbol(obj) {
+    if (hasShammedSymbols) {
+        return obj && typeof obj === 'object' && obj instanceof Symbol;
     }
-  });
-});
-var _comGrandlyonEnedisMonth = __webpack_require__(856);
-Object.keys(_comGrandlyonEnedisMonth).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEnedisMonth[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEnedisMonth[key];
+    if (typeof obj === 'symbol') {
+        return true;
     }
-  });
-});
-var _comGrandlyonEnedisMonthlyAnalysisData = __webpack_require__(857);
-Object.keys(_comGrandlyonEnedisMonthlyAnalysisData).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEnedisMonthlyAnalysisData[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEnedisMonthlyAnalysisData[key];
+    if (!obj || typeof obj !== 'object' || !symToString) {
+        return false;
     }
-  });
-});
-var _comGrandlyonEnedisYear = __webpack_require__(858);
-Object.keys(_comGrandlyonEnedisYear).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonEnedisYear[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonEnedisYear[key];
+    try {
+        symToString.call(obj);
+        return true;
+    } catch (e) {}
+    return false;
+}
+
+function isBigInt(obj) {
+    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {
+        return false;
     }
-  });
-});
-var _comGrandlyonGrdfDay = __webpack_require__(859);
-Object.keys(_comGrandlyonGrdfDay).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonGrdfDay[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonGrdfDay[key];
+    try {
+        bigIntValueOf.call(obj);
+        return true;
+    } catch (e) {}
+    return false;
+}
+
+var hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };
+function has(obj, key) {
+    return hasOwn.call(obj, key);
+}
+
+function toStr(obj) {
+    return objectToString.call(obj);
+}
+
+function nameOf(f) {
+    if (f.name) { return f.name; }
+    var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/);
+    if (m) { return m[1]; }
+    return null;
+}
+
+function indexOf(xs, x) {
+    if (xs.indexOf) { return xs.indexOf(x); }
+    for (var i = 0, l = xs.length; i < l; i++) {
+        if (xs[i] === x) { return i; }
     }
-  });
-});
-var _comGrandlyonGrdfMonth = __webpack_require__(860);
-Object.keys(_comGrandlyonGrdfMonth).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonGrdfMonth[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonGrdfMonth[key];
+    return -1;
+}
+
+function isMap(x) {
+    if (!mapSize || !x || typeof x !== 'object') {
+        return false;
     }
-  });
-});
-var _comGrandlyonGrdfYear = __webpack_require__(861);
-Object.keys(_comGrandlyonGrdfYear).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _comGrandlyonGrdfYear[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _comGrandlyonGrdfYear[key];
+    try {
+        mapSize.call(x);
+        try {
+            setSize.call(x);
+        } catch (s) {
+            return true;
+        }
+        return x instanceof Map; // core-js workaround, pre-v2.5.0
+    } catch (e) {}
+    return false;
+}
+
+function isWeakMap(x) {
+    if (!weakMapHas || !x || typeof x !== 'object') {
+        return false;
     }
-  });
-});
-var _ioCozyAccounts = __webpack_require__(862);
-Object.keys(_ioCozyAccounts).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _ioCozyAccounts[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _ioCozyAccounts[key];
+    try {
+        weakMapHas.call(x, weakMapHas);
+        try {
+            weakSetHas.call(x, weakSetHas);
+        } catch (s) {
+            return true;
+        }
+        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0
+    } catch (e) {}
+    return false;
+}
+
+function isWeakRef(x) {
+    if (!weakRefDeref || !x || typeof x !== 'object') {
+        return false;
     }
-  });
-});
-var _ioCozyJobs = __webpack_require__(863);
-Object.keys(_ioCozyJobs).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _ioCozyJobs[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _ioCozyJobs[key];
+    try {
+        weakRefDeref.call(x);
+        return true;
+    } catch (e) {}
+    return false;
+}
+
+function isSet(x) {
+    if (!setSize || !x || typeof x !== 'object') {
+        return false;
     }
-  });
-});
-var _ioCozyKonnectors = __webpack_require__(864);
-Object.keys(_ioCozyKonnectors).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _ioCozyKonnectors[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _ioCozyKonnectors[key];
+    try {
+        setSize.call(x);
+        try {
+            mapSize.call(x);
+        } catch (m) {
+            return true;
+        }
+        return x instanceof Set; // core-js workaround, pre-v2.5.0
+    } catch (e) {}
+    return false;
+}
+
+function isWeakSet(x) {
+    if (!weakSetHas || !x || typeof x !== 'object') {
+        return false;
     }
-  });
-});
-var _ioCozyTerms = __webpack_require__(865);
-Object.keys(_ioCozyTerms).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _ioCozyTerms[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _ioCozyTerms[key];
+    try {
+        weakSetHas.call(x, weakSetHas);
+        try {
+            weakMapHas.call(x, weakMapHas);
+        } catch (s) {
+            return true;
+        }
+        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0
+    } catch (e) {}
+    return false;
+}
+
+function isElement(x) {
+    if (!x || typeof x !== 'object') { return false; }
+    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {
+        return true;
     }
-  });
-});
-var _ioCozyTriggers = __webpack_require__(866);
-Object.keys(_ioCozyTriggers).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _ioCozyTriggers[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _ioCozyTriggers[key];
+    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';
+}
+
+function inspectString(str, opts) {
+    if (str.length > opts.maxStringLength) {
+        var remaining = str.length - opts.maxStringLength;
+        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');
+        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;
     }
-  });
-});
-var _orgEcolyo = __webpack_require__(867);
-Object.keys(_orgEcolyo).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _orgEcolyo[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _orgEcolyo[key];
+    // eslint-disable-next-line no-control-regex
+    var s = $replace.call($replace.call(str, /(['\\])/g, '\\$1'), /[\x00-\x1f]/g, lowbyte);
+    return wrapQuotes(s, 'single', opts);
+}
+
+function lowbyte(c) {
+    var n = c.charCodeAt(0);
+    var x = {
+        8: 'b',
+        9: 't',
+        10: 'n',
+        12: 'f',
+        13: 'r'
+    }[n];
+    if (x) { return '\\' + x; }
+    return '\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));
+}
+
+function markBoxed(str) {
+    return 'Object(' + str + ')';
+}
+
+function weakCollectionOf(type) {
+    return type + ' { ? }';
+}
+
+function collectionOf(type, size, entries, indent) {
+    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');
+    return type + ' (' + size + ') {' + joinedEntries + '}';
+}
+
+function singleLineValues(xs) {
+    for (var i = 0; i < xs.length; i++) {
+        if (indexOf(xs[i], '\n') >= 0) {
+            return false;
+        }
     }
-  });
-});
-var _orgEcolyoAgentCustom = __webpack_require__(868);
-Object.keys(_orgEcolyoAgentCustom).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _orgEcolyoAgentCustom[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _orgEcolyoAgentCustom[key];
+    return true;
+}
+
+function getIndent(opts, depth) {
+    var baseIndent;
+    if (opts.indent === '\t') {
+        baseIndent = '\t';
+    } else if (typeof opts.indent === 'number' && opts.indent > 0) {
+        baseIndent = $join.call(Array(opts.indent + 1), ' ');
+    } else {
+        return null;
     }
-  });
-});
-var _orgEcolyoAgentPartners = __webpack_require__(869);
-Object.keys(_orgEcolyoAgentPartners).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _orgEcolyoAgentPartners[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _orgEcolyoAgentPartners[key];
+    return {
+        base: baseIndent,
+        prev: $join.call(Array(depth + 1), baseIndent)
+    };
+}
+
+function indentedJoin(xs, indent) {
+    if (xs.length === 0) { return ''; }
+    var lineJoiner = '\n' + indent.prev + indent.base;
+    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\n' + indent.prev;
+}
+
+function arrObjKeys(obj, inspect) {
+    var isArr = isArray(obj);
+    var xs = [];
+    if (isArr) {
+        xs.length = obj.length;
+        for (var i = 0; i < obj.length; i++) {
+            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';
+        }
     }
-  });
-});
-var _orgEcolyoAgent = __webpack_require__(870);
-Object.keys(_orgEcolyoAgent).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _orgEcolyoAgent[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _orgEcolyoAgent[key];
+    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];
+    var symMap;
+    if (hasShammedSymbols) {
+        symMap = {};
+        for (var k = 0; k < syms.length; k++) {
+            symMap['$' + syms[k]] = syms[k];
+        }
     }
-  });
-});
-var _orgEcolyo2 = __webpack_require__(871);
-Object.keys(_orgEcolyo2).forEach(function (key) {
-  if (key === "default" || key === "__esModule") return;
-  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
-  if (key in exports && exports[key] === _orgEcolyo2[key]) return;
-  Object.defineProperty(exports, key, {
-    enumerable: true,
-    get: function () {
-      return _orgEcolyo2[key];
+
+    for (var key in obj) { // eslint-disable-line no-restricted-syntax
+        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue
+        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue
+        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {
+            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section
+            continue; // eslint-disable-line no-restricted-syntax, no-continue
+        } else if ($test.call(/[^\w$]/, key)) {
+            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));
+        } else {
+            xs.push(key + ': ' + inspect(obj[key], obj));
+        }
     }
-  });
-});
-// the documents schema, necessary for CozyClient
-const doctypes = {
-  enedisyear: {
-    doctype: _comGrandlyonEnedisYear.ENEDIS_YEAR_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  enedismonth: {
-    doctype: _comGrandlyonEnedisMonth.ENEDIS_MONTH_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  enedisday: {
-    doctype: _comGrandlyonEnedisDay.ENEDIS_DAY_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  enedisminute: {
-    doctype: _comGrandlyonEnedisMinute.ENEDIS_MINUTE_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  grdfyear: {
-    doctype: _comGrandlyonGrdfYear.GRDF_YEAR_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  grdfmonth: {
-    doctype: _comGrandlyonGrdfMonth.GRDF_MONTH_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  grdfday: {
-    doctype: _comGrandlyonGrdfDay.GRDF_DAY_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  eglyear: {
-    doctype: _comGrandlyonEglYear.EGL_YEAR_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  eglmonth: {
-    doctype: _comGrandlyonEglMonth.EGL_MONTH_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  eglday: {
-    doctype: _comGrandlyonEglDay.EGL_DAY_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  konnectors: {
-    doctype: _ioCozyKonnectors.KONNECTORS_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  accounts: {
-    doctype: _ioCozyAccounts.ACCOUNTS_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  jobs: {
-    doctype: _ioCozyJobs.JOBS_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  terms: {
-    doctype: _ioCozyTerms.TERMS_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  ecogesture: {
-    doctype: _comGrandlyonEcolyoEcogesture.ECOGESTURE_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  profile: {
-    doctype: _comGrandlyonEcolyoProfile.PROFILE_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  profiletype: {
-    doctype: _comGrandlyonEcolyoProfiletype.PROFILETYPE_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  challenge: {
-    doctype: _comGrandlyonEcolyoChallenge.CHALLENGE_DOCTYPE,
-    attributes: {},
-    relationships: {
-      quiz: {
-        doctype: _comGrandlyonEcolyoQuiz.QUIZ_DOCTYPE,
-        type: 'has-one'
-      },
-      duel: {
-        doctype: _comGrandlyonEcolyoDuel.DUEL_DOCTYPE,
-        type: 'has-one'
-      },
-      exploration: {
-        doctype: _comGrandlyonEcolyoExploration.EXPLORATION_DOCTYPE,
-        type: 'has-many'
-      }
+    if (typeof gOPS === 'function') {
+        for (var j = 0; j < syms.length; j++) {
+            if (isEnumerable.call(obj, syms[j])) {
+                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));
+            }
+        }
     }
-  },
-  userchallenge: {
-    doctype: _comGrandlyonEcolyoUserchallenge.USERCHALLENGE_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  duel: {
-    doctype: _comGrandlyonEcolyoDuel.DUEL_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  quiz: {
-    doctype: _comGrandlyonEcolyoQuiz.QUIZ_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  exploration: {
-    doctype: _comGrandlyonEcolyoExploration.EXPLORATION_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  usageevents: {
-    doctype: _comGrandlyonEcolyoUsageevent.USAGEEVENT_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  schemas: {
-    doctype: _comGrandlyonEcolyoSchemas.SCHEMAS_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  fluidsPrices: {
-    doctype: _comGrandlyonEcolyoFluidsprices.FLUIDSPRICES_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  enedismonthlyanalysisdata: {
-    doctype: _comGrandlyonEnedisMonthlyAnalysisData.ENEDIS_MONTHLY_ANALYSIS_DATA_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  enedismaxpower: {
-    doctype: _comGrandlyonEnedisMaxpower.ENEDIS_MAXPOWER_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  },
-  profileecogesture: {
-    doctype: _comGrandlyonEcolyoProfileecogesture.PROFILEECOGESTURE_DOCTYPE,
-    attributes: {},
-    relationships: {}
-  }
+    return xs;
+}
+
+
+/***/ }),
+/* 773 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(218).inspect;
+
+
+/***/ }),
+/* 774 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// https://ecma-international.org/ecma-262/6.0/#sec-ispropertykey
+
+module.exports = function IsPropertyKey(argument) {
+	return typeof argument === 'string' || typeof argument === 'symbol';
+};
+
+
+/***/ }),
+/* 775 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var ES5Type = __webpack_require__(776);
+
+// https://262.ecma-international.org/11.0/#sec-ecmascript-data-types-and-values
+
+module.exports = function Type(x) {
+	if (typeof x === 'symbol') {
+		return 'Symbol';
+	}
+	if (typeof x === 'bigint') {
+		return 'BigInt';
+	}
+	return ES5Type(x);
+};
+
+
+/***/ }),
+/* 776 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// https://262.ecma-international.org/5.1/#sec-8
+
+module.exports = function Type(x) {
+	if (x === null) {
+		return 'Null';
+	}
+	if (typeof x === 'undefined') {
+		return 'Undefined';
+	}
+	if (typeof x === 'function' || typeof x === 'object') {
+		return 'Object';
+	}
+	if (typeof x === 'number') {
+		return 'Number';
+	}
+	if (typeof x === 'boolean') {
+		return 'Boolean';
+	}
+	if (typeof x === 'string') {
+		return 'String';
+	}
+};
+
+
+/***/ }),
+/* 777 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var GetIntrinsic = __webpack_require__(550);
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsPropertyKey = __webpack_require__(774);
+var Type = __webpack_require__(775);
+
+// https://ecma-international.org/ecma-262/6.0/#sec-hasproperty
+
+module.exports = function HasProperty(O, P) {
+	if (Type(O) !== 'Object') {
+		throw new $TypeError('Assertion failed: `O` must be an Object');
+	}
+	if (!IsPropertyKey(P)) {
+		throw new $TypeError('Assertion failed: `P` must be a Property Key');
+	}
+	return P in O;
+};
+
+
+/***/ }),
+/* 778 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// http://262.ecma-international.org/5.1/#sec-9.11
+
+module.exports = __webpack_require__(779);
+
+
+/***/ }),
+/* 779 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var fnToStr = Function.prototype.toString;
+var reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;
+var badArrayLike;
+var isCallableMarker;
+if (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {
+	try {
+		badArrayLike = Object.defineProperty({}, 'length', {
+			get: function () {
+				throw isCallableMarker;
+			}
+		});
+		isCallableMarker = {};
+		// eslint-disable-next-line no-throw-literal
+		reflectApply(function () { throw 42; }, null, badArrayLike);
+	} catch (_) {
+		if (_ !== isCallableMarker) {
+			reflectApply = null;
+		}
+	}
+} else {
+	reflectApply = null;
+}
+
+var constructorRegex = /^\s*class\b/;
+var isES6ClassFn = function isES6ClassFunction(value) {
+	try {
+		var fnStr = fnToStr.call(value);
+		return constructorRegex.test(fnStr);
+	} catch (e) {
+		return false; // not a function
+	}
+};
+
+var tryFunctionObject = function tryFunctionToStr(value) {
+	try {
+		if (isES6ClassFn(value)) { return false; }
+		fnToStr.call(value);
+		return true;
+	} catch (e) {
+		return false;
+	}
+};
+var toStr = Object.prototype.toString;
+var fnClass = '[object Function]';
+var genClass = '[object GeneratorFunction]';
+var hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`
+/* globals document: false */
+var documentDotAll = typeof document === 'object' && typeof document.all === 'undefined' && document.all !== undefined ? document.all : {};
+
+module.exports = reflectApply
+	? function isCallable(value) {
+		if (value === documentDotAll) { return true; }
+		if (!value) { return false; }
+		if (typeof value !== 'function' && typeof value !== 'object') { return false; }
+		if (typeof value === 'function' && !value.prototype) { return true; }
+		try {
+			reflectApply(value, null, badArrayLike);
+		} catch (e) {
+			if (e !== isCallableMarker) { return false; }
+		}
+		return !isES6ClassFn(value);
+	}
+	: function isCallable(value) {
+		if (value === documentDotAll) { return true; }
+		if (!value) { return false; }
+		if (typeof value !== 'function' && typeof value !== 'object') { return false; }
+		if (typeof value === 'function' && !value.prototype) { return true; }
+		if (hasToStringTag) { return tryFunctionObject(value); }
+		if (isES6ClassFn(value)) { return false; }
+		var strClass = toStr.call(value);
+		return strClass === fnClass || strClass === genClass;
+	};
+
+
+/***/ }),
+/* 780 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var GetIntrinsic = __webpack_require__(550);
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Get = __webpack_require__(771);
+var ToLength = __webpack_require__(781);
+var Type = __webpack_require__(775);
+
+// https://262.ecma-international.org/11.0/#sec-lengthofarraylike
+
+module.exports = function LengthOfArrayLike(obj) {
+	if (Type(obj) !== 'Object') {
+		throw new $TypeError('Assertion failed: `obj` must be an Object');
+	}
+	return ToLength(Get(obj, 'length'));
 };
-var _default = doctypes; // export all doctypes for the application
-exports.default = _default;
+
+// TODO: use this all over
+
+
+/***/ }),
+/* 781 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var MAX_SAFE_INTEGER = __webpack_require__(782);
+
+var ToIntegerOrInfinity = __webpack_require__(783);
+
+module.exports = function ToLength(argument) {
+	var len = ToIntegerOrInfinity(argument);
+	if (len <= 0) { return 0; } // includes converting -0 to +0
+	if (len > MAX_SAFE_INTEGER) { return MAX_SAFE_INTEGER; }
+	return len;
+};
+
+
+/***/ }),
+/* 782 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var GetIntrinsic = __webpack_require__(550);
+
+var $Math = GetIntrinsic('%Math%');
+var $Number = GetIntrinsic('%Number%');
+
+module.exports = $Number.MAX_SAFE_INTEGER || $Math.pow(2, 53) - 1;
+
+
+/***/ }),
+/* 783 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var abs = __webpack_require__(784);
+var floor = __webpack_require__(785);
+var ToNumber = __webpack_require__(786);
+
+var $isNaN = __webpack_require__(796);
+var $isFinite = __webpack_require__(797);
+var $sign = __webpack_require__(798);
+
+// https://262.ecma-international.org/12.0/#sec-tointegerorinfinity
+
+module.exports = function ToIntegerOrInfinity(value) {
+	var number = ToNumber(value);
+	if ($isNaN(number) || number === 0) { return 0; }
+	if (!$isFinite(number)) { return number; }
+	return $sign(number) * floor(abs(number));
+};
+
+
+/***/ }),
+/* 784 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var GetIntrinsic = __webpack_require__(550);
+
+var $abs = GetIntrinsic('%Math.abs%');
+
+// http://262.ecma-international.org/5.1/#sec-5.2
+
+module.exports = function abs(x) {
+	return $abs(x);
+};
+
+
+/***/ }),
+/* 785 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// var modulo = require('./modulo');
+var $floor = Math.floor;
+
+// http://262.ecma-international.org/5.1/#sec-5.2
+
+module.exports = function floor(x) {
+	// return x - modulo(x, 1);
+	return $floor(x);
+};
+
+
+/***/ }),
+/* 786 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var GetIntrinsic = __webpack_require__(550);
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var $Number = GetIntrinsic('%Number%');
+var $RegExp = GetIntrinsic('%RegExp%');
+var $parseInteger = GetIntrinsic('%parseInt%');
+
+var callBound = __webpack_require__(564);
+var regexTester = __webpack_require__(787);
+var isPrimitive = __webpack_require__(788);
+
+var $strSlice = callBound('String.prototype.slice');
+var isBinary = regexTester(/^0b[01]+$/i);
+var isOctal = regexTester(/^0o[0-7]+$/i);
+var isInvalidHexLiteral = regexTester(/^[-+]0x[0-9a-f]+$/i);
+var nonWS = ['\u0085', '\u200b', '\ufffe'].join('');
+var nonWSregex = new $RegExp('[' + nonWS + ']', 'g');
+var hasNonWS = regexTester(nonWSregex);
+
+// whitespace from: https://es5.github.io/#x15.5.4.20
+// implementation from https://github.com/es-shims/es5-shim/blob/v3.4.0/es5-shim.js#L1304-L1324
+var ws = [
+	'\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003',
+	'\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028',
+	'\u2029\uFEFF'
+].join('');
+var trimRegex = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g');
+var $replace = callBound('String.prototype.replace');
+var $trim = function (value) {
+	return $replace(value, trimRegex, '');
+};
+
+var ToPrimitive = __webpack_require__(789);
+
+// https://ecma-international.org/ecma-262/6.0/#sec-tonumber
+
+module.exports = function ToNumber(argument) {
+	var value = isPrimitive(argument) ? argument : ToPrimitive(argument, $Number);
+	if (typeof value === 'symbol') {
+		throw new $TypeError('Cannot convert a Symbol value to a number');
+	}
+	if (typeof value === 'bigint') {
+		throw new $TypeError('Conversion from \'BigInt\' to \'number\' is not allowed.');
+	}
+	if (typeof value === 'string') {
+		if (isBinary(value)) {
+			return ToNumber($parseInteger($strSlice(value, 2), 2));
+		} else if (isOctal(value)) {
+			return ToNumber($parseInteger($strSlice(value, 2), 8));
+		} else if (hasNonWS(value) || isInvalidHexLiteral(value)) {
+			return NaN;
+		}
+		var trimmed = $trim(value);
+		if (trimmed !== value) {
+			return ToNumber(trimmed);
+		}
+
+	}
+	return $Number(value);
+};
+
+
+/***/ }),
+/* 787 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var callBound = __webpack_require__(564);
+
+var $exec = callBound('RegExp.prototype.exec');
+
+module.exports = function regexTester(regex) {
+	return function test(s) { return $exec(regex, s) !== null; };
+};
+
+
+/***/ }),
+/* 788 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+module.exports = function isPrimitive(value) {
+	return value === null || (typeof value !== 'function' && typeof value !== 'object');
+};
+
+
+/***/ }),
+/* 789 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var toPrimitive = __webpack_require__(790);
+
+// https://ecma-international.org/ecma-262/6.0/#sec-toprimitive
+
+module.exports = function ToPrimitive(input) {
+	if (arguments.length > 1) {
+		return toPrimitive(input, arguments[1]);
+	}
+	return toPrimitive(input);
+};
+
+
+/***/ }),
+/* 790 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol';
+
+var isPrimitive = __webpack_require__(791);
+var isCallable = __webpack_require__(792);
+var isDate = __webpack_require__(793);
+var isSymbol = __webpack_require__(795);
+
+var ordinaryToPrimitive = function OrdinaryToPrimitive(O, hint) {
+	if (typeof O === 'undefined' || O === null) {
+		throw new TypeError('Cannot call method on ' + O);
+	}
+	if (typeof hint !== 'string' || (hint !== 'number' && hint !== 'string')) {
+		throw new TypeError('hint must be "string" or "number"');
+	}
+	var methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString'];
+	var method, result, i;
+	for (i = 0; i < methodNames.length; ++i) {
+		method = O[methodNames[i]];
+		if (isCallable(method)) {
+			result = method.call(O);
+			if (isPrimitive(result)) {
+				return result;
+			}
+		}
+	}
+	throw new TypeError('No default value');
+};
+
+var GetMethod = function GetMethod(O, P) {
+	var func = O[P];
+	if (func !== null && typeof func !== 'undefined') {
+		if (!isCallable(func)) {
+			throw new TypeError(func + ' returned for property ' + P + ' of object ' + O + ' is not a function');
+		}
+		return func;
+	}
+	return void 0;
+};
+
+// http://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive
+module.exports = function ToPrimitive(input) {
+	if (isPrimitive(input)) {
+		return input;
+	}
+	var hint = 'default';
+	if (arguments.length > 1) {
+		if (arguments[1] === String) {
+			hint = 'string';
+		} else if (arguments[1] === Number) {
+			hint = 'number';
+		}
+	}
+
+	var exoticToPrim;
+	if (hasSymbols) {
+		if (Symbol.toPrimitive) {
+			exoticToPrim = GetMethod(input, Symbol.toPrimitive);
+		} else if (isSymbol(input)) {
+			exoticToPrim = Symbol.prototype.valueOf;
+		}
+	}
+	if (typeof exoticToPrim !== 'undefined') {
+		var result = exoticToPrim.call(input, hint);
+		if (isPrimitive(result)) {
+			return result;
+		}
+		throw new TypeError('unable to convert exotic object to primitive');
+	}
+	if (hint === 'default' && (isDate(input) || isSymbol(input))) {
+		hint = 'string';
+	}
+	return ordinaryToPrimitive(input, hint === 'default' ? 'number' : hint);
+};
+
+
+/***/ }),
+/* 791 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+module.exports = function isPrimitive(value) {
+	return value === null || (typeof value !== 'function' && typeof value !== 'object');
+};
+
+
+/***/ }),
+/* 792 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var fnToStr = Function.prototype.toString;
+var reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;
+var badArrayLike;
+var isCallableMarker;
+if (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {
+	try {
+		badArrayLike = Object.defineProperty({}, 'length', {
+			get: function () {
+				throw isCallableMarker;
+			}
+		});
+		isCallableMarker = {};
+		// eslint-disable-next-line no-throw-literal
+		reflectApply(function () { throw 42; }, null, badArrayLike);
+	} catch (_) {
+		if (_ !== isCallableMarker) {
+			reflectApply = null;
+		}
+	}
+} else {
+	reflectApply = null;
+}
+
+var constructorRegex = /^\s*class\b/;
+var isES6ClassFn = function isES6ClassFunction(value) {
+	try {
+		var fnStr = fnToStr.call(value);
+		return constructorRegex.test(fnStr);
+	} catch (e) {
+		return false; // not a function
+	}
+};
+
+var tryFunctionObject = function tryFunctionToStr(value) {
+	try {
+		if (isES6ClassFn(value)) { return false; }
+		fnToStr.call(value);
+		return true;
+	} catch (e) {
+		return false;
+	}
+};
+var toStr = Object.prototype.toString;
+var fnClass = '[object Function]';
+var genClass = '[object GeneratorFunction]';
+var hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`
+/* globals document: false */
+var documentDotAll = typeof document === 'object' && typeof document.all === 'undefined' && document.all !== undefined ? document.all : {};
+
+module.exports = reflectApply
+	? function isCallable(value) {
+		if (value === documentDotAll) { return true; }
+		if (!value) { return false; }
+		if (typeof value !== 'function' && typeof value !== 'object') { return false; }
+		if (typeof value === 'function' && !value.prototype) { return true; }
+		try {
+			reflectApply(value, null, badArrayLike);
+		} catch (e) {
+			if (e !== isCallableMarker) { return false; }
+		}
+		return !isES6ClassFn(value);
+	}
+	: function isCallable(value) {
+		if (value === documentDotAll) { return true; }
+		if (!value) { return false; }
+		if (typeof value !== 'function' && typeof value !== 'object') { return false; }
+		if (typeof value === 'function' && !value.prototype) { return true; }
+		if (hasToStringTag) { return tryFunctionObject(value); }
+		if (isES6ClassFn(value)) { return false; }
+		var strClass = toStr.call(value);
+		return strClass === fnClass || strClass === genClass;
+	};
+
+
+/***/ }),
+/* 793 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var getDay = Date.prototype.getDay;
+var tryDateObject = function tryDateGetDayCall(value) {
+	try {
+		getDay.call(value);
+		return true;
+	} catch (e) {
+		return false;
+	}
+};
+
+var toStr = Object.prototype.toString;
+var dateClass = '[object Date]';
+var hasToStringTag = __webpack_require__(794)();
+
+module.exports = function isDateObject(value) {
+	if (typeof value !== 'object' || value === null) {
+		return false;
+	}
+	return hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;
+};
+
+
+/***/ }),
+/* 794 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var hasSymbols = __webpack_require__(559);
+
+/** @type {import('.')} */
+module.exports = function hasToStringTagShams() {
+	return hasSymbols() && !!Symbol.toStringTag;
+};
+
+
+/***/ }),
+/* 795 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var toStr = Object.prototype.toString;
+var hasSymbols = __webpack_require__(558)();
+
+if (hasSymbols) {
+	var symToStr = Symbol.prototype.toString;
+	var symStringRegex = /^Symbol\(.*\)$/;
+	var isSymbolObject = function isRealSymbolObject(value) {
+		if (typeof value.valueOf() !== 'symbol') {
+			return false;
+		}
+		return symStringRegex.test(symToStr.call(value));
+	};
+
+	module.exports = function isSymbol(value) {
+		if (typeof value === 'symbol') {
+			return true;
+		}
+		if (toStr.call(value) !== '[object Symbol]') {
+			return false;
+		}
+		try {
+			return isSymbolObject(value);
+		} catch (e) {
+			return false;
+		}
+	};
+} else {
+
+	module.exports = function isSymbol(value) {
+		// this environment does not support Symbols.
+		return  false && false;
+	};
+}
+
 
 /***/ }),
-/* 838 */
+/* 796 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.CHALLENGE_DOCTYPE = void 0;
-const CHALLENGE_DOCTYPE = 'com.grandlyon.ecolyo.challenge';
-exports.CHALLENGE_DOCTYPE = CHALLENGE_DOCTYPE;
+module.exports = Number.isNaN || function isNaN(a) {
+	return a !== a;
+};
+
 
 /***/ }),
-/* 839 */
+/* 797 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.DUEL_DOCTYPE = void 0;
-const DUEL_DOCTYPE = 'com.grandlyon.ecolyo.duel';
-exports.DUEL_DOCTYPE = DUEL_DOCTYPE;
+var $isNaN = Number.isNaN || function (a) { return a !== a; };
+
+module.exports = Number.isFinite || function (x) { return typeof x === 'number' && !$isNaN(x) && x !== Infinity && x !== -Infinity; };
+
 
 /***/ }),
-/* 840 */
+/* 798 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.ECOGESTURE_DOCTYPE = void 0;
-const ECOGESTURE_DOCTYPE = 'com.grandlyon.ecolyo.ecogesture';
-exports.ECOGESTURE_DOCTYPE = ECOGESTURE_DOCTYPE;
+module.exports = function sign(number) {
+	return number >= 0 ? 1 : -1;
+};
+
 
 /***/ }),
-/* 841 */
+/* 799 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.EXPLORATION_DOCTYPE = void 0;
-const EXPLORATION_DOCTYPE = 'com.grandlyon.ecolyo.exploration';
-exports.EXPLORATION_DOCTYPE = EXPLORATION_DOCTYPE;
+var GetIntrinsic = __webpack_require__(550);
 
-/***/ }),
-/* 842 */
-/***/ (function(module, exports, __webpack_require__) {
+var $Object = GetIntrinsic('%Object%');
 
-"use strict";
+var RequireObjectCoercible = __webpack_require__(765);
 
+// https://ecma-international.org/ecma-262/6.0/#sec-toobject
+
+module.exports = function ToObject(value) {
+	RequireObjectCoercible(value);
+	return $Object(value);
+};
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.FLUIDSPRICES_DOCTYPE = void 0;
-const FLUIDSPRICES_DOCTYPE = 'com.grandlyon.ecolyo.fluidsprices';
-exports.FLUIDSPRICES_DOCTYPE = FLUIDSPRICES_DOCTYPE;
 
 /***/ }),
-/* 843 */
+/* 800 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.PROFILE_DOCTYPE = void 0;
-const PROFILE_DOCTYPE = 'com.grandlyon.ecolyo.profile';
-exports.PROFILE_DOCTYPE = PROFILE_DOCTYPE;
+var GetIntrinsic = __webpack_require__(550);
 
-/***/ }),
-/* 844 */
-/***/ (function(module, exports, __webpack_require__) {
+var $String = GetIntrinsic('%String%');
+var $TypeError = GetIntrinsic('%TypeError%');
 
-"use strict";
+// https://ecma-international.org/ecma-262/6.0/#sec-tostring
 
+module.exports = function ToString(argument) {
+	if (typeof argument === 'symbol') {
+		throw new $TypeError('Cannot convert a Symbol value to a string');
+	}
+	return $String(argument);
+};
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.PROFILEECOGESTURE_DOCTYPE = void 0;
-const PROFILEECOGESTURE_DOCTYPE = 'com.grandlyon.ecolyo.profileecogesture';
-exports.PROFILEECOGESTURE_DOCTYPE = PROFILEECOGESTURE_DOCTYPE;
 
 /***/ }),
-/* 845 */
+/* 801 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.PROFILETYPE_DOCTYPE = void 0;
-const PROFILETYPE_DOCTYPE = 'com.grandlyon.ecolyo.profiletype';
-exports.PROFILETYPE_DOCTYPE = PROFILETYPE_DOCTYPE;
+var strValue = String.prototype.valueOf;
+var tryStringObject = function tryStringObject(value) {
+	try {
+		strValue.call(value);
+		return true;
+	} catch (e) {
+		return false;
+	}
+};
+var toStr = Object.prototype.toString;
+var strClass = '[object String]';
+var hasToStringTag = __webpack_require__(794)();
+
+module.exports = function isString(value) {
+	if (typeof value === 'string') {
+		return true;
+	}
+	if (typeof value !== 'object') {
+		return false;
+	}
+	return hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass;
+};
+
 
 /***/ }),
-/* 846 */
+/* 802 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.QUIZ_DOCTYPE = void 0;
-const QUIZ_DOCTYPE = 'com.grandlyon.ecolyo.quiz';
-exports.QUIZ_DOCTYPE = QUIZ_DOCTYPE;
-
-/***/ }),
-/* 847 */
-/***/ (function(module, exports, __webpack_require__) {
+var arrayMethodBoxesProperly = __webpack_require__(803);
 
-"use strict";
+var implementation = __webpack_require__(767);
 
+module.exports = function getPolyfill() {
+	var method = Array.prototype.forEach;
+	return arrayMethodBoxesProperly(method) ? method : implementation;
+};
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.SCHEMAS_DOCTYPE = void 0;
-const SCHEMAS_DOCTYPE = 'com.grandlyon.ecolyo.schemas';
-exports.SCHEMAS_DOCTYPE = SCHEMAS_DOCTYPE;
 
 /***/ }),
-/* 848 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 803 */
+/***/ (function(module, exports) {
 
-"use strict";
+module.exports = function properlyBoxed(method) {
+	// Check node 0.6.21 bug where third parameter is not boxed
+	var properlyBoxesNonStrict = true;
+	var properlyBoxesStrict = true;
+	var threwException = false;
+	if (typeof method === 'function') {
+		try {
+			// eslint-disable-next-line max-params
+			method.call('f', function (_, __, O) {
+				if (typeof O !== 'object') {
+					properlyBoxesNonStrict = false;
+				}
+			});
 
+			method.call(
+				[null],
+				function () {
+					'use strict';
+
+					properlyBoxesStrict = typeof this === 'string'; // eslint-disable-line no-invalid-this
+				},
+				'x'
+			);
+		} catch (e) {
+			threwException = true;
+		}
+		return !threwException && properlyBoxesNonStrict && properlyBoxesStrict;
+	}
+	return false;
+};
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.USAGEEVENT_DOCTYPE = void 0;
-const USAGEEVENT_DOCTYPE = 'com.grandlyon.ecolyo.usageevent';
-exports.USAGEEVENT_DOCTYPE = USAGEEVENT_DOCTYPE;
 
 /***/ }),
-/* 849 */
+/* 804 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.USERCHALLENGE_DOCTYPE = void 0;
-const USERCHALLENGE_DOCTYPE = 'com.grandlyon.ecolyo.userchallenge';
-exports.USERCHALLENGE_DOCTYPE = USERCHALLENGE_DOCTYPE;
+var define = __webpack_require__(761);
+var getPolyfill = __webpack_require__(802);
+
+module.exports = function shimForEach() {
+	var polyfill = getPolyfill();
+	define(
+		Array.prototype,
+		{ forEach: polyfill },
+		{ forEach: function () { return Array.prototype.forEach !== polyfill; } }
+	);
+	return polyfill;
+};
+
 
 /***/ }),
-/* 850 */
+/* 805 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.EGL_DAY_DOCTYPE = void 0;
-const EGL_DAY_DOCTYPE = 'com.grandlyon.egl.day';
-exports.EGL_DAY_DOCTYPE = EGL_DAY_DOCTYPE;
-
-/***/ }),
-/* 851 */
-/***/ (function(module, exports, __webpack_require__) {
+var define = __webpack_require__(761);
+var callBind = __webpack_require__(565);
 
-"use strict";
+var implementation = __webpack_require__(806);
+var getPolyfill = __webpack_require__(807);
+var shim = __webpack_require__(808);
 
+var polyfill = callBind(getPolyfill(), Object);
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
+define(polyfill, {
+	getPolyfill: getPolyfill,
+	implementation: implementation,
+	shim: shim
 });
-exports.EGL_MONTH_DOCTYPE = void 0;
-const EGL_MONTH_DOCTYPE = 'com.grandlyon.egl.month';
-exports.EGL_MONTH_DOCTYPE = EGL_MONTH_DOCTYPE;
+
+module.exports = polyfill;
+
 
 /***/ }),
-/* 852 */
+/* 806 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.EGL_YEAR_DOCTYPE = void 0;
-const EGL_YEAR_DOCTYPE = 'com.grandlyon.egl.year';
-exports.EGL_YEAR_DOCTYPE = EGL_YEAR_DOCTYPE;
+var RequireObjectCoercible = __webpack_require__(765);
+var callBound = __webpack_require__(564);
+var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');
+var $push = callBound('Array.prototype.push');
+
+module.exports = function entries(O) {
+	var obj = RequireObjectCoercible(O);
+	var entrys = [];
+	for (var key in obj) {
+		if ($isEnumerable(obj, key)) { // checks own-ness as well
+			$push(entrys, [key, obj[key]]);
+		}
+	}
+	return entrys;
+};
+
 
 /***/ }),
-/* 853 */
+/* 807 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.ENEDIS_DAY_DOCTYPE = void 0;
-const ENEDIS_DAY_DOCTYPE = 'com.grandlyon.enedis.day';
-exports.ENEDIS_DAY_DOCTYPE = ENEDIS_DAY_DOCTYPE;
+var implementation = __webpack_require__(806);
+
+module.exports = function getPolyfill() {
+	return typeof Object.entries === 'function' ? Object.entries : implementation;
+};
+
 
 /***/ }),
-/* 854 */
+/* 808 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.ENEDIS_MAXPOWER_DOCTYPE = void 0;
-const ENEDIS_MAXPOWER_DOCTYPE = 'com.grandlyon.enedis.maxpower';
-exports.ENEDIS_MAXPOWER_DOCTYPE = ENEDIS_MAXPOWER_DOCTYPE;
+var getPolyfill = __webpack_require__(807);
+var define = __webpack_require__(761);
+
+module.exports = function shimEntries() {
+	var polyfill = getPolyfill();
+	define(Object, { entries: polyfill }, {
+		entries: function testEntries() {
+			return Object.entries !== polyfill;
+		}
+	});
+	return polyfill;
+};
+
 
 /***/ }),
-/* 855 */
+/* 809 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
+/**
+ * Copyright (c) 2014-present, Facebook, Inc.
+ *
+ * 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: true
-});
-exports.ENEDIS_MINUTE_DOCTYPE = void 0;
-const ENEDIS_MINUTE_DOCTYPE = 'com.grandlyon.enedis.minute';
-exports.ENEDIS_MINUTE_DOCTYPE = ENEDIS_MINUTE_DOCTYPE;
-
-/***/ }),
-/* 856 */
-/***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
+/**
+ * Similar to invariant but only logs a warning if the condition is not met.
+ * This can be used to log issues in development environments in critical
+ * paths. Removing the logging code for production environments will keep the
+ * same logic and follow the same code paths.
+ */
 
+var __DEV__ = "none" !== 'production';
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.ENEDIS_MONTH_DOCTYPE = void 0;
-const ENEDIS_MONTH_DOCTYPE = 'com.grandlyon.enedis.month';
-exports.ENEDIS_MONTH_DOCTYPE = ENEDIS_MONTH_DOCTYPE;
+var warning = function() {};
 
-/***/ }),
-/* 857 */
-/***/ (function(module, exports, __webpack_require__) {
+if (__DEV__) {
+  var printWarning = function printWarning(format, args) {
+    var len = arguments.length;
+    args = new Array(len > 1 ? len - 1 : 0);
+    for (var key = 1; key < len; key++) {
+      args[key - 1] = arguments[key];
+    }
+    var argIndex = 0;
+    var message = 'Warning: ' +
+      format.replace(/%s/g, function() {
+        return args[argIndex++];
+      });
+    if (typeof console !== 'undefined') {
+      console.error(message);
+    }
+    try {
+      // --- Welcome to debugging React ---
+      // This error was thrown as a convenience so that you can use this stack
+      // to find the callsite that caused this warning to fire.
+      throw new Error(message);
+    } catch (x) {}
+  }
 
-"use strict";
+  warning = function(condition, format, args) {
+    var len = arguments.length;
+    args = new Array(len > 2 ? len - 2 : 0);
+    for (var key = 2; key < len; key++) {
+      args[key - 2] = arguments[key];
+    }
+    if (format === undefined) {
+      throw new Error(
+          '`warning(condition, format, ...args)` requires a warning ' +
+          'message argument'
+      );
+    }
+    if (!condition) {
+      printWarning.apply(null, [format].concat(args));
+    }
+  };
+}
 
+module.exports = warning;
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.ENEDIS_MONTHLY_ANALYSIS_DATA_DOCTYPE = void 0;
-const ENEDIS_MONTHLY_ANALYSIS_DATA_DOCTYPE = 'com.grandlyon.enedis.monthly.analysis.data';
-exports.ENEDIS_MONTHLY_ANALYSIS_DATA_DOCTYPE = ENEDIS_MONTHLY_ANALYSIS_DATA_DOCTYPE;
 
 /***/ }),
-/* 858 */
+/* 810 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.ENEDIS_YEAR_DOCTYPE = void 0;
-const ENEDIS_YEAR_DOCTYPE = 'com.grandlyon.enedis.year';
-exports.ENEDIS_YEAR_DOCTYPE = ENEDIS_YEAR_DOCTYPE;
+var hasOwnProperty = {}.hasOwnProperty;
+var call = Function.prototype.call;
+
+module.exports = call.bind ? call.bind(hasOwnProperty) : function (O, P) {
+  return call.call(hasOwnProperty, O, P);
+};
+
 
 /***/ }),
-/* 859 */
+/* 811 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.GRDF_DAY_DOCTYPE = void 0;
-const GRDF_DAY_DOCTYPE = 'com.grandlyon.grdf.day';
-exports.GRDF_DAY_DOCTYPE = GRDF_DAY_DOCTYPE;
-
-/***/ }),
-/* 860 */
-/***/ (function(module, exports, __webpack_require__) {
+var callBind = __webpack_require__(565);
+var define = __webpack_require__(761);
+var RequireObjectCoercible = __webpack_require__(765);
 
-"use strict";
+var implementation = __webpack_require__(812);
+var getPolyfill = __webpack_require__(813);
+var shim = __webpack_require__(814);
 
+var bound = callBind(getPolyfill());
+var boundMethod = function trim(receiver) {
+	RequireObjectCoercible(receiver);
+	return bound(receiver);
+};
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
+define(boundMethod, {
+	getPolyfill: getPolyfill,
+	implementation: implementation,
+	shim: shim
 });
-exports.GRDF_MONTH_DOCTYPE = void 0;
-const GRDF_MONTH_DOCTYPE = 'com.grandlyon.grdf.month';
-exports.GRDF_MONTH_DOCTYPE = GRDF_MONTH_DOCTYPE;
+
+module.exports = boundMethod;
+
 
 /***/ }),
-/* 861 */
+/* 812 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.GRDF_YEAR_DOCTYPE = void 0;
-const GRDF_YEAR_DOCTYPE = 'com.grandlyon.grdf.year';
-exports.GRDF_YEAR_DOCTYPE = GRDF_YEAR_DOCTYPE;
-
-/***/ }),
-/* 862 */
-/***/ (function(module, exports, __webpack_require__) {
+var RequireObjectCoercible = __webpack_require__(765);
+var ToString = __webpack_require__(800);
+var callBound = __webpack_require__(564);
+var $replace = callBound('String.prototype.replace');
 
-"use strict";
+var mvsIsWS = (/^\s$/).test('\u180E');
+/* eslint-disable no-control-regex */
+var leftWhitespace = mvsIsWS
+	? /^[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+/
+	: /^[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+/;
+var rightWhitespace = mvsIsWS
+	? /[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+$/
+	: /[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+$/;
+/* eslint-enable no-control-regex */
 
+module.exports = function trim() {
+	var S = ToString(RequireObjectCoercible(this));
+	return $replace($replace(S, leftWhitespace, ''), rightWhitespace, '');
+};
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.ACCOUNTS_DOCTYPE = void 0;
-const ACCOUNTS_DOCTYPE = 'io.cozy.accounts';
-exports.ACCOUNTS_DOCTYPE = ACCOUNTS_DOCTYPE;
 
 /***/ }),
-/* 863 */
+/* 813 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.JOBS_DOCTYPE = void 0;
-const JOBS_DOCTYPE = 'io.cozy.jobs';
-exports.JOBS_DOCTYPE = JOBS_DOCTYPE;
+var implementation = __webpack_require__(812);
+
+var zeroWidthSpace = '\u200b';
+var mongolianVowelSeparator = '\u180E';
+
+module.exports = function getPolyfill() {
+	if (
+		String.prototype.trim
+		&& zeroWidthSpace.trim() === zeroWidthSpace
+		&& mongolianVowelSeparator.trim() === mongolianVowelSeparator
+		&& ('_' + mongolianVowelSeparator).trim() === ('_' + mongolianVowelSeparator)
+		&& (mongolianVowelSeparator + '_').trim() === (mongolianVowelSeparator + '_')
+	) {
+		return String.prototype.trim;
+	}
+	return implementation;
+};
+
 
 /***/ }),
-/* 864 */
+/* 814 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.KONNECTORS_DOCTYPE = void 0;
-const KONNECTORS_DOCTYPE = 'io.cozy.konnectors';
-exports.KONNECTORS_DOCTYPE = KONNECTORS_DOCTYPE;
+var define = __webpack_require__(761);
+var getPolyfill = __webpack_require__(813);
+
+module.exports = function shimStringTrim() {
+	var polyfill = getPolyfill();
+	define(String.prototype, { trim: polyfill }, {
+		trim: function testTrim() {
+			return String.prototype.trim !== polyfill;
+		}
+	});
+	return polyfill;
+};
+
 
 /***/ }),
-/* 865 */
+/* 815 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -124644,42 +114023,66 @@ exports.KONNECTORS_DOCTYPE = KONNECTORS_DOCTYPE;
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.TERMS_DOCTYPE = void 0;
-const TERMS_DOCTYPE = 'io.cozy.terms';
-exports.TERMS_DOCTYPE = TERMS_DOCTYPE;
+exports.getEmojiByCountry = void 0;
+var emojiCountry = {
+  fr: '🇫🇷'
+};
+/**
+ * @param {string} country - fr, en, etc
+ * @param {Function} t - Translation function
+ * @returns {string} - Emoji of country
+ */
+
+var getEmojiByCountry = function getEmojiByCountry(country, t) {
+  if (country === 'stranger') return t('country.stranger');
+  return emojiCountry[country];
+};
+
+exports.getEmojiByCountry = getEmojiByCountry;
 
 /***/ }),
-/* 866 */
+/* 816 */
 /***/ (function(module, exports, __webpack_require__) {
 
-"use strict";
+var map = {
+	"./en.json": 817,
+	"./fr.json": 818
+};
 
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.TRIGGERS_DOCTYPE = void 0;
-const TRIGGERS_DOCTYPE = 'io.cozy.triggers';
-exports.TRIGGERS_DOCTYPE = TRIGGERS_DOCTYPE;
+function webpackContext(req) {
+	var id = webpackContextResolve(req);
+	return __webpack_require__(id);
+}
+function webpackContextResolve(req) {
+	if(!__webpack_require__.o(map, req)) {
+		var e = new Error("Cannot find module '" + req + "'");
+		e.code = 'MODULE_NOT_FOUND';
+		throw e;
+	}
+	return map[req];
+}
+webpackContext.keys = function webpackContextKeys() {
+	return Object.keys(map);
+};
+webpackContext.resolve = webpackContextResolve;
+module.exports = webpackContext;
+webpackContext.id = 816;
 
 /***/ }),
-/* 867 */
-/***/ (function(module, exports, __webpack_require__) {
+/* 817 */
+/***/ (function(module) {
 
-"use strict";
+module.exports = JSON.parse("{\"country\":{\"stranger\":\"Stranger\"},\"Scan\":{\"scan_a_doc\":\"Scan a doc\",\"save_doc\":\"Save the doc\",\"filename\":\"Filename\",\"save\":\"Save\",\"cancel\":\"Cancel\",\"qualify\":\"Describe\",\"apply\":\"Apply\",\"error\":{\"offline\":\"You are currently offline and you can't use this functionality. Please, try again later.\",\"uploading\":\"You are already uploading a file. Please wait until the end of this upload and try again.\",\"generic\":\"Something went wrong. Please try again.\"},\"successful\":{\"qualified_ok\":\"You just have successfully described your file! \"},\"items\":{\"accommodation_proof\":\"Proof of accommodation |||| Proof of accommodations\",\"appliance_invoice\":\"Appliance invoice |||| Appliance invoices\",\"bank_details\":\"Bank detail |||| Bank details\",\"bank_statement\":\"Bank statement |||| Bank statements\",\"birth_certificate\":\"Birth certificate |||| Birth certificates\",\"building_permit\":\"Building permit |||| Building permits\",\"caf\":\"Social benefit rate |||| Social benefit rates\",\"car_insurance\":\"Car insurance certificate |||| Car insurance certificates\",\"citizen_registration_certificate\":\"Certificate of citizen registration |||| Certificates of citizen registration\",\"diploma\":\"Diploma |||| Diplomas\",\"divorce\":\"Divorce |||| Divorces\",\"driver_license\":\"Driving license |||| Driving licenses\",\"electoral_card\":\"Electoral card |||| Electoral cards\",\"employment_center_certificate\":\"Employment center certificate |||| Employment center certificates\",\"energy_contract\":\"Energy provider contract |||| Energy provider contracts\",\"energy_invoice\":\"Energy invoice |||| Energy invoices\",\"family_record_book\":\"Family record book |||| Family record books\",\"family\":\"Family\",\"fidelity_card\":\"Fidelity card |||| Fidelity cards\",\"gradebook\":\"Gradebook |||| Gradebooks\",\"grocery_invoice\":\"Grocery invoice |||| Grocery invoices\",\"health_book\":\"Health book |||| Health books\",\"health_certificate\":\"Health/Vaccination certificate |||| Health/Vaccination certificates\",\"health_insurance_card\":\"Insurance card |||| Insurance cards\",\"health_invoice\":\"Health invoice |||| Health invoices\",\"health\":\"Health\",\"home\":\"Home\",\"house_insurance\":\"Home insurance |||| Home insurances\",\"house_sale_agreeement\":\"House sale agreement |||| House sale agreements\",\"identity_photo\":\"Identity photo |||| Identity photos\",\"identity\":\"Identity\",\"invoice\":\"Invoice |||| Invoices\",\"isp_invoice\":\"ISP invoice |||| ISP invoices\",\"large_family_card\":\" Large Family Card |||| Large Family Cards\",\"lease\":\"Lease |||| Leases\",\"library_card\":\"library card |||| library cards\",\"loan_agreement\":\"Loan agreement |||| Loan agreements\",\"mechanic_invoice\":\"Repair bill |||| Repair bills\",\"motivation_letter\":\"Motivation letter |||| Motivation letters\",\"national_health_insurance_card\":\"National health insurance card |||| National health insurance cards\",\"national_health_insurance_right_certificate\":\"National health insurance right certificate |||| National health insurance right certificates\",\"national_id_card\":\"ID card |||| ID cards\",\"note_identity_document\":\"Note Identity |||| Notes Identity\",\"note_family_document\":\"Note Family |||| Notes Family\",\"note_work_document\":\"Note Work & Study |||| Notes Work & Study\",\"note_health_document\":\"Note Health |||| Notes Health\",\"note_house_document\":\"Note Home |||| Notes Home\",\"note_transport_document\":\"Note Transport |||| Notes Transport\",\"note_activity_document\":\"Note Activities |||| Notes Activities\",\"note_finance\":\"Note Finance |||| Notes Finance\",\"note_invoice\":\"Note Invoice |||| Notes Invoice\",\"other_activity_document\":\"Other sports document |||| Other sports documents\",\"other_bank_document\":\"Other banking document |||| Other banking documents\",\"other_family_document\":\"Other family document |||| Other family documents\",\"other_health_document\":\"Other health document |||| Other health documents\",\"other_house_document\":\"Other house document |||| Other house documents\",\"other_identity_document\":\"Other document of identity |||| Other documents of identity\",\"other_invoice\":\"Other invoice |||| Other invoices\",\"other_revenue\":\"Other revenue |||| Other revenues\",\"other_tax_document\":\"Other tax document |||| Other tax documents\",\"other_transport_document\":\"Other transport document |||| Other transport documents\",\"other_work_document\":\"Other work document |||| Other work documents\",\"other_administrative_document\":\"Other administrative document |||| Other administrative documents\",\"others\":\"Others\",\"pacs\":\"Civil union |||| Civil unions\",\"passport\":\"Passeport |||| Passeports\",\"pay_sheet\":\"Pay sheet |||| Pay sheets\",\"payment_proof_family_allowance\":\"family allowance payment proof |||| family allowance payment proofs\",\"pension\":\"Pension |||| Pensions\",\"personal_sporting_licence\":\"Sporting licence |||| Sporting licences\",\"phone_invoice\":\"Phone invoice |||| Phone invoices\",\"pregnancy_medical_certificate\":\"Certificate of pregnancy |||| Certificates of pregnancy\",\"prescription\":\"Prescription |||| Prescriptions\",\"real_estate_tax\":\"Real estate tax |||| Real estate taxes\",\"receipt\":\"Receipt |||| Receipts\",\"rent_receipt\":\"Rent receipt |||| Rent receipts\",\"residence_permit\":\"Residence permit |||| Residence permits\",\"restaurant_invoice\":\"Restaurant invoice |||| Restaurant invoices\",\"resume\":\"Resume |||| Resumes\",\"school_attendance_certificate\":\"Certificate of school attendance |||| Certificates of school attendance\",\"school_insurance_certificate\":\"Certificate of school insurance |||| Certificates of school insurance\",\"single_parent_benefit\":\"Single parent benefit |||| Single parent benefits\",\"student_card\":\"Student card |||| Student cards\",\"tax_notice\":\"Tax notice |||| Tax notices\",\"tax_return\":\"Tax return |||| Tax returns\",\"tax_timetable\":\"Payment Plans Installment Agreement |||| Payment Plans Installment Agreements\",\"technical_diagnostic_record\":\"Technical diagnostic record |||| Technical diagnostic records\",\"telecom_invoice\":\"Telecom invoice |||| Telecom invoices\",\"transport_card\":\"Transport card |||| Transport cards\",\"transport_invoice\":\"Transport invoice |||| Transport invoices\",\"transport\":\"Transport\",\"unemployment_benefit\":\"Unemployment benefit |||| Unemployment benefits\",\"unfit_for_habitation_declaration\":\"Declaration of unfit for habitation |||| Declarations of unfit for habitation\",\"vehicle_registration\":\"Vehicle registration |||| Vehicle registrations\",\"water_invoice\":\"Water invoice |||| Water invoices\",\"web_service_invoice\":\"Web service invoice |||| Web service invoices\",\"wedding\":\"Wedding contract |||| Wedding contracts\",\"work_contract\":\"Work contract |||| Work contracts\",\"work_disability_recognition\":\"Recognition of disability |||| Recognitions of disability\",\"work_invoice\":\"Work invoice |||| Work invoices\",\"work_quote\":\"Work quote |||| Work quotes\",\"work_study\":\"Work & Study\"},\"attributes\":{\"contractType\":{\"cdi\":\"CDI\",\"cdd\":\"CDD\",\"alternate\":\"Alternate\",\"internship\":\"Internship\",\"other\":\"Other\"}},\"themes\":{\"activity\":\"Activities\",\"family\":\"Family\",\"finance\":\"Finance\",\"health\":\"Health\",\"home\":\"Home\",\"identity\":\"Identity\",\"invoice\":\"Invoice\",\"others\":\"Others\",\"transport\":\"Transport\",\"undefined\":\"Undefined\",\"work_study\":\"Work & Study\"}}}");
 
+/***/ }),
+/* 818 */
+/***/ (function(module) {
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.REMOTE_ORG_ECOLYO_AGENT_REC = exports.REMOTE_ORG_ECOLYO_AGENT = void 0;
-const REMOTE_ORG_ECOLYO_AGENT = '/remote/org.ecolyo.agent';
-exports.REMOTE_ORG_ECOLYO_AGENT = REMOTE_ORG_ECOLYO_AGENT;
-const REMOTE_ORG_ECOLYO_AGENT_REC = '/remote/org.ecolyo.agent.rec';
-exports.REMOTE_ORG_ECOLYO_AGENT_REC = REMOTE_ORG_ECOLYO_AGENT_REC;
+module.exports = JSON.parse("{\"country\":{\"stranger\":\"Étranger\"},\"Scan\":{\"scan_a_doc\":\"Numériser un doc\",\"save_doc\":\"Enregistrer le document\",\"filename\":\"Nom du fichier\",\"save\":\"Sauvegarder\",\"cancel\":\"Annuler\",\"qualify\":\"Qualifier\",\"apply\":\"Appliquer\",\"error\":{\"offline\":\"Vous êtes actuellement déconnecté, vous ne pouvez donc pas utiliser cette fonctionnalité. Connectez-vous à internet et recommencez. \",\"uploading\":\"Vous avez déjà un fichier en cours de téléchargement. Attendez la fin et recommencez.\",\"generic\":\"Un problème est survenu. Veuillez réessayer. \"},\"successful\":{\"qualified_ok\":\"Vous venez de qualifier votre fichier avec succès !\"},\"items\":{\"accommodation_proof\":\"Attestation d'hébergement |||| Attestations d'hébergement\",\"appliance_invoice\":\"Facture d'électroménager |||| Factures d'électroménager\",\"bank_details\":\"RIB\",\"bank_statement\":\"Relevé de compte |||| Relevés de compte\",\"birth_certificate\":\"Certificat de naissance |||| Certificats de naissance\",\"building_permit\":\"Permis de construire\",\"caf\":\"Attestation de quotient familial CAF |||| Attestations de quotient familial CAF\",\"car_insurance\":\"Attestation d'assurance auto |||| Attestations d'assurance auto\",\"citizen_registration_certificate\":\"Attestation de recensement citoyen |||| Attestations de recensement citoyen\",\"diploma\":\"Diplôme |||| Diplômes\",\"divorce\":\"Attestation de divorce |||| Attestations de divorce\",\"driver_license\":\"Permis de conduire\",\"electoral_card\":\"Carte électorale |||| Cartes électorales\",\"employment_center_certificate\":\"Attestation de Pôle emploi |||| Attestations de Pôle emploi\",\"energy_contract\":\"Contrat de fournisseur d'énergies |||| Contrats de fournisseur d'énergies\",\"energy_invoice\":\"Facture d'énergie |||| Factures d'énergie\",\"family_record_book\":\"Livret de famille |||| Livrets de famille\",\"family\":\"Famille\",\"fidelity_card\":\"Carte de fidélité |||| Cartes de fidélité\",\"gradebook\":\"Bulletin de notes |||| Bulletins de notes\",\"grocery_invoice\":\"Facture de courses |||| Factures de courses\",\"health_book\":\"Carnet de santé |||| Carnets de santé\",\"health_certificate\":\"Certificat de santé/vaccination |||| Certificats de santé/vaccination\",\"health_insurance_card\":\"Carte de mutuelle |||| Cartes de mutuelle\",\"health_invoice\":\"Facture médicale |||| Factures médicales\",\"health\":\"Santé\",\"home\":\"Logement\",\"house_insurance\":\"Assurance logement |||| Assurances logement\",\"house_sale_agreeement\":\"Compromis de vente\",\"identity_photo\":\"Photo d'identité |||| Photos d'identité\",\"identity\":\"Identité\",\"invoice\":\"Facture |||| Factures\",\"isp_invoice\":\"Facture d'internet |||| Factures d'internet\",\"large_family_card\":\"Carte famille nombreuse |||| Cartes famille nombreuse\",\"lease\":\"Bail |||| Baux\",\"library_card\":\"Carte de bibliothèque |||| Cartes de bibliothèque\",\"loan_agreement\":\"Contrat de prêt |||| Contrats de prêt\",\"mechanic_invoice\":\"Facture de réparation |||| Factures de réparation\",\"motivation_letter\":\"Lettre de motivation |||| Lettres de motivation\",\"national_health_insurance_card\":\"Carte vitale |||| Cartes vitales\",\"national_health_insurance_right_certificate\":\"Attestation de droits de l'Assurance Maladie (vitale) |||| Attestations de droits de l'Assurance Maladie (vitale)\",\"national_id_card\":\"Carte d'identité |||| Cartes d'identité\",\"note_identity_document\":\"Note Identité |||| Notes Identité\",\"note_family_document\":\"Note Famille |||| Notes Famille\",\"note_work_document\":\"Note Travail & Études |||| Notes Travail & Études\",\"note_health_document\":\"Note Santé |||| Notes Santé\",\"note_house_document\":\"Note Logement |||| Notes Logement\",\"note_transport_document\":\"Note Transport |||| Notes Transport\",\"note_activity_document\":\"Note Activités & loisirs |||| Notes Activités & loisirs\",\"note_finance\":\"Note Finances |||| Notes Finances\",\"note_invoice\":\"Note Factures |||| Notes Factures\",\"other_activity_document\":\"Autre document sportif |||| Autres documents sportifs\",\"other_bank_document\":\"Autre document bancaire |||| Autres documents bancaires\",\"other_family_document\":\"Autre document de famille |||| Autres documents de famille\",\"other_health_document\":\"Autre document de santé |||| Autres documents de santé\",\"other_house_document\":\"Autre document de logement |||| Autres documents de logement\",\"other_identity_document\":\"Autre document d'identité |||| Autres documents d'identité\",\"other_invoice\":\"Autre facture |||| Autres factures\",\"other_revenue\":\"Autre revenu |||| Autres revenus\",\"other_tax_document\":\"Impôts - Autre document |||| Impôts - Autres documents\",\"other_transport_document\":\"Autre document de transport |||| Autres documents de transport\",\"other_work_document\":\"Autre document de travail |||| Autres documents de travail\",\"other_administrative_document\":\"Autre document administratif |||| Autres documents administratifs\",\"others\":\"Autres\",\"pacs\":\"Attestation de PACS |||| Attestations de PACS\",\"passport\":\"Passeport |||| Passeports\",\"pay_sheet\":\"Fiche de paie |||| Fiches de paie\",\"payment_proof_family_allowance\":\"Attestation de paiement CAF |||| Attestations de paiement CAF\",\"pension\":\"Retraite |||| Retraites\",\"personal_sporting_licence\":\"Licence sportive |||| Licences sportives\",\"phone_invoice\":\"Facture de téléphone |||| Factures de téléphone\",\"pregnancy_medical_certificate\":\"Certificat de grossesse |||| Certificats de grossesse\",\"prescription\":\"Ordonnance |||| Ordonnances\",\"real_estate_tax\":\"Taxe foncière |||| Taxes foncières\",\"receipt\":\"Accusé de réception |||| Accusés de réception\",\"rent_receipt\":\"Quittance de loyer |||| Quittances de loyer\",\"residence_permit\":\"Titre de séjour |||| Titres de séjour\",\"restaurant_invoice\":\"Facture de restaurant |||| Factures de restaurant\",\"resume\":\"CV\",\"school_attendance_certificate\":\"Certificat de scolarité |||| Certificats de scolarité\",\"school_insurance_certificate\":\"Attestation d'assurance scolaire |||| Attestations d'assurance scolaire\",\"single_parent_benefit\":\"Allocation parent isolé |||| Allocations parent isolé\",\"student_card\":\"Carte d'étudiant |||| Cartes d'étudiant\",\"tax_notice\":\"Impôts - Avis d'imposition\",\"tax_return\":\"Impôts - Déclaration de revenus |||| Impôts - Déclarations de revenus\",\"tax_timetable\":\"Impôts - Echéancier |||| Impôts - Echéanciers\",\"technical_diagnostic_record\":\"Dossier de diagnostic technique |||| Dossiers de diagnostic technique\",\"telecom_invoice\":\"Facture de télécom |||| Factures de télécom\",\"transport_card\":\"Carte de transport |||| Cartes de transport\",\"transport_invoice\":\"Facture de transport |||| Factures de transport\",\"transport\":\"Transport\",\"unemployment_benefit\":\"Allocation chômage |||| Allocations chômage\",\"unfit_for_habitation_declaration\":\"Arrêté d'insalubrité |||| Arrêtés d'insalubrité\",\"vehicle_registration\":\"Carte grise |||| Cartes grises\",\"water_invoice\":\"Facture d'eau |||| Factures d'eau\",\"web_service_invoice\":\"Facture de service web |||| Factures de service web\",\"wedding\":\"Contrat de mariage |||| Contrats de mariage\",\"work_contract\":\"Contrat de travail |||| Contrats de travail\",\"work_disability_recognition\":\"Reconnaissance de handicap - RQTH |||| Reconnaissances de handicap - RQTH\",\"work_invoice\":\"Facture de travaux |||| Factures de travaux\",\"work_quote\":\"Devis de travaux\",\"work_study\":\"Travail & Études\"},\"attributes\":{\"contractType\":{\"cdi\":\"CDI\",\"cdd\":\"CDD\",\"alternate\":\"Alternance\",\"internship\":\"Stage\",\"other\":\"Autre\"}},\"themes\":{\"activity\":\"Activités & loisirs\",\"family\":\"Famille\",\"finance\":\"Finances\",\"health\":\"Santé\",\"home\":\"Logement\",\"identity\":\"Identité\",\"invoice\":\"Factures\",\"others\":\"Autres\",\"transport\":\"Transport\",\"undefined\":\"Indéfini\",\"work_study\":\"Travail & Études\"}}}");
 
 /***/ }),
-/* 868 */
+/* 819 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -124688,60 +114091,141 @@ exports.REMOTE_ORG_ECOLYO_AGENT_REC = REMOTE_ORG_ECOLYO_AGENT_REC;
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.REMOTE_ORG_ECOLYO_AGENT_CUSTOM_POPUP_REC = exports.REMOTE_ORG_ECOLYO_AGENT_CUSTOM_POPUP = void 0;
-const REMOTE_ORG_ECOLYO_AGENT_CUSTOM_POPUP = '/remote/org.ecolyo.agent.custom.popup';
-exports.REMOTE_ORG_ECOLYO_AGENT_CUSTOM_POPUP = REMOTE_ORG_ECOLYO_AGENT_CUSTOM_POPUP;
-const REMOTE_ORG_ECOLYO_AGENT_CUSTOM_POPUP_REC = '/remote/org.ecolyo.agent.custom.popup.rec';
-exports.REMOTE_ORG_ECOLYO_AGENT_CUSTOM_POPUP_REC = REMOTE_ORG_ECOLYO_AGENT_CUSTOM_POPUP_REC;
+exports.themesList = void 0;
 
-/***/ }),
-/* 869 */
-/***/ (function(module, exports, __webpack_require__) {
+var _qualification = __webpack_require__(748);
 
-"use strict";
+/**
+ *
+ * @param {Array<import("../../types").ItemsLabels>} labels - Array of items labels
+ * @returns {Array<import("../../types").QualificationAttributes>}
+ */
+var buildItemsByLabel = function buildItemsByLabel(labels) {
+  return labels.map(function (label) {
+    try {
+      return _qualification.Qualification.getByLabel(label);
+    } catch (e) {
+      console.log('error', e); // eslint-disable-line no-console
 
+      return null;
+    }
+  }).filter(function (item) {
+    return item;
+  });
+};
+/**
+ * @type {Array<import("../../types").IdentityLabel>}
+ */
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.REMOTE_ORG_ECOLYO_AGENT_PARTNERS_INFO_REC = exports.REMOTE_ORG_ECOLYO_AGENT_PARTNERS_INFO = void 0;
-const REMOTE_ORG_ECOLYO_AGENT_PARTNERS_INFO = '/remote/org.ecolyo.agent.partners.info';
-exports.REMOTE_ORG_ECOLYO_AGENT_PARTNERS_INFO = REMOTE_ORG_ECOLYO_AGENT_PARTNERS_INFO;
-const REMOTE_ORG_ECOLYO_AGENT_PARTNERS_INFO_REC = '/remote/org.ecolyo.agent.partners.info.rec';
-exports.REMOTE_ORG_ECOLYO_AGENT_PARTNERS_INFO_REC = REMOTE_ORG_ECOLYO_AGENT_PARTNERS_INFO_REC;
 
-/***/ }),
-/* 870 */
-/***/ (function(module, exports, __webpack_require__) {
+var identityLabels = ['identity_photo', 'national_id_card', 'passport', 'residence_permit', 'electoral_card', 'family_record_book', 'birth_certificate', 'driver_license', 'citizen_registration_certificate', 'note_identity_document', 'other_identity_document'];
+/**
+ * @type {Array<import("../../types").FamilyLabel>}
+ */
 
-"use strict";
+var familyLabels = ['family_record_book', 'birth_certificate', 'wedding', 'pacs', 'single_parent_benefit', 'divorce', 'large_family_card', 'caf', 'payment_proof_family_allowance', 'note_family_document', 'other_family_document'];
+/**
+ * @type {Array<import("../../types").WorkStudyLabels>}
+ */
+
+var workStudyLabels = ['diploma', 'work_contract', 'pay_sheet', 'unemployment_benefit', 'employment_center_certificate', 'pension', 'work_disability_recognition', 'gradebook', 'student_card', 'school_attendance_certificate', 'school_insurance_certificate', 'resume', 'motivation_letter', 'note_work_document', 'other_work_document'];
+/**
+ * @type {Array<import("../../types").HealthLabels>}
+ */
 
+var healthLabels = ['health_certificate', 'health_book', 'national_health_insurance_card', 'national_health_insurance_right_certificate', 'health_insurance_card', 'prescription', 'health_invoice', 'work_disability_recognition', 'pregnancy_medical_certificate', 'note_health_document', 'other_health_document'];
+/**
+ * @type {Array<import("../../types").HomeLabels>}
+ */
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.REMOTE_ORG_ECOLYO_AGENT_PRICES_REC = exports.REMOTE_ORG_ECOLYO_AGENT_PRICES = void 0;
-const REMOTE_ORG_ECOLYO_AGENT_PRICES = '/remote/org.ecolyo.agent.prices';
-exports.REMOTE_ORG_ECOLYO_AGENT_PRICES = REMOTE_ORG_ECOLYO_AGENT_PRICES;
-const REMOTE_ORG_ECOLYO_AGENT_PRICES_REC = '/remote/org.ecolyo.agent.prices.rec';
-exports.REMOTE_ORG_ECOLYO_AGENT_PRICES_REC = REMOTE_ORG_ECOLYO_AGENT_PRICES_REC;
+var homeLabels = ['phone_invoice', 'isp_invoice', 'telecom_invoice', 'energy_invoice', 'water_invoice', 'other_invoice', 'work_invoice', 'house_sale_agreeement', 'building_permit', 'technical_diagnostic_record', 'unfit_for_habitation_declaration', 'lease', 'rent_receipt', 'accommodation_proof', 'house_insurance', 'work_quote', 'note_house_document', 'other_house_document'];
+/**
+ * @type {Array<import("../../types").TransportLabels>}
+ */
 
-/***/ }),
-/* 871 */
-/***/ (function(module, exports, __webpack_require__) {
+var transportLabels = ['driver_license', 'vehicle_registration', 'car_insurance', 'transport_card', 'mechanic_invoice', 'transport_invoice', 'note_transport_document', 'other_transport_document'];
+/**
+ * @type {Array<import("../../types").ActivityLabels>}
+ */
 
-"use strict";
+var activityLabels = ['personal_sporting_licence', 'fidelity_card', 'library_card', 'note_activity_document', 'other_activity_document'];
+/**
+ * @type {Array<import("../../types").FinanceLabels>}
+ */
 
+var financeLabels = ['tax_return', 'tax_notice', 'tax_timetable', 'real_estate_tax', 'pay_sheet', 'receipt', 'single_parent_benefit', 'other_tax_document', 'bank_details', 'bank_statement', 'loan_agreement', 'payment_proof_family_allowance', 'note_finance', 'other_bank_document', 'other_revenue'];
+/**
+ * @type {Array<import("../../types").InvoiceLabels>}
+ */
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.REMOTE_ORG_ECOLYO_DJU = void 0;
-const REMOTE_ORG_ECOLYO_DJU = '/remote/org.ecolyo.dju_v3';
-exports.REMOTE_ORG_ECOLYO_DJU = REMOTE_ORG_ECOLYO_DJU;
+var invoiceLabels = ['phone_invoice', 'isp_invoice', 'telecom_invoice', 'energy_invoice', 'water_invoice', 'appliance_invoice', 'web_service_invoice', 'restaurant_invoice', 'work_invoice', 'transport_invoice', 'health_invoice', 'note_invoice', 'other_invoice'];
+/**
+ * @type {Array<import("../../types").OthersLabels>}
+ */
+
+var othersLabels = ['other_administrative_document'];
+/**
+ * @type {import("../../types").ThemesList}
+ */
+
+var themesList = [{
+  id: 'theme1',
+  label: 'identity',
+  icon: 'people',
+  items: buildItemsByLabel(identityLabels),
+  defaultItems: ['birth_certificate']
+}, {
+  id: 'theme2',
+  label: 'family',
+  icon: 'team',
+  items: buildItemsByLabel(familyLabels),
+  defaultItems: ['family_record_book']
+}, {
+  id: 'theme3',
+  label: 'work_study',
+  icon: 'company',
+  items: buildItemsByLabel(workStudyLabels)
+}, {
+  id: 'theme4',
+  label: 'health',
+  icon: 'heart',
+  items: buildItemsByLabel(healthLabels)
+}, {
+  id: 'theme5',
+  label: 'home',
+  icon: 'home',
+  items: buildItemsByLabel(homeLabels)
+}, {
+  id: 'theme6',
+  label: 'transport',
+  icon: 'car',
+  items: buildItemsByLabel(transportLabels),
+  defaultItems: ['driver_license']
+}, {
+  id: 'theme7',
+  label: 'activity',
+  icon: 'compass',
+  items: buildItemsByLabel(activityLabels)
+}, {
+  id: 'theme8',
+  label: 'finance',
+  icon: 'bank',
+  items: buildItemsByLabel(financeLabels)
+}, {
+  id: 'theme9',
+  label: 'invoice',
+  icon: 'bill',
+  items: buildItemsByLabel(invoiceLabels)
+}, {
+  id: 'theme10',
+  label: 'others',
+  icon: 'dots',
+  items: buildItemsByLabel(othersLabels)
+}];
+exports.themesList = themesList;
 
 /***/ }),
-/* 872 */
+/* 820 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -124750,2432 +114234,2418 @@ exports.REMOTE_ORG_ECOLYO_DJU = REMOTE_ORG_ECOLYO_DJU;
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.REMOTE_ORG_ECOLYO_AVG_TEMPERATURE = void 0;
-const REMOTE_ORG_ECOLYO_AVG_TEMPERATURE = '/remote/org.ecolyo.avg_temperature';
-exports.REMOTE_ORG_ECOLYO_AVG_TEMPERATURE = REMOTE_ORG_ECOLYO_AVG_TEMPERATURE;
+exports.isQualificationNote = exports.getThemeByItem = void 0;
 
-/***/ }),
-/* 873 */
-/***/ (function(module, exports, __webpack_require__) {
+var _documentTypeData = __webpack_require__(819);
 
-"use strict";
+/**
+ * @param {import("../../types").QualificationAttributes} item - Qualification item
+ * @returns {import("../../types").Theme|undefined}
+ */
+var findDefaultItemTheme = function findDefaultItemTheme(item) {
+  return _documentTypeData.themesList.find(function (theme) {
+    return theme.defaultItems && theme.defaultItems.includes(item.label);
+  });
+};
+/**
+ * @param {import("../../types").QualificationAttributes} item - Qualification item
+ * @returns {import("../../types").Theme|undefined}
+ */
 
 
-var _interopRequireDefault = __webpack_require__(1);
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
-var _enums = __webpack_require__(230);
-var _luxon = __webpack_require__(250);
-var _dateChart = _interopRequireDefault(__webpack_require__(874));
-var _date = __webpack_require__(877);
-var _fluidConfig = _interopRequireDefault(__webpack_require__(875));
-function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
-function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
-class ConsumptionFormatterService {
-  formatGraphData(data, timePeriod, timeStep, fluidType, fluidStatus) {
-    // Sort data
-    data.sort((dataA, dataB) => (0, _date.compareDates)(dataA.date, dataB.date));
-    // Set status of data and complete missing/empty data
-    const filledData = [];
-    let parsingDate = timePeriod.startDate;
-    let endDate = timePeriod.endDate;
-    if (timeStep === _enums.TimeStep.HALF_AN_HOUR) {
-      parsingDate = parsingDate.minus({
-        minutes: 30
-      });
-      endDate = endDate.minus({
-        minutes: 30
-      });
-    }
-    const dateChartService = new _dateChart.default();
-    while (parsingDate <= endDate) {
-      const filteredData = data.filter(dt => dateChartService.compareStepDate(timeStep, dt.date, parsingDate));
-      const newElement = this.defineDataloadState(filteredData[0] ? filteredData[0] : {
-        date: parsingDate,
-        value: -1,
-        state: _enums.DataloadState.EMPTY,
-        valueDetail: null
-      }, fluidType, timeStep, fluidStatus);
-      filledData.push(_objectSpread({}, newElement));
-      parsingDate = parsingDate.plus(this.getTimeFromStepTime(timeStep));
-    }
-    return filledData;
-  }
-  defineDataloadState(data, fluidType, timeStep, fluidStatus) {
-    const today = _luxon.DateTime.local().setZone('utc', {
-      keepLocalTime: true
-    });
-    // Return coming state if data data is >= today
-    if (data.date >= today) {
-      return _objectSpread(_objectSpread({}, data), {}, {
-        state: _enums.DataloadState.COMING
-      });
-    }
-    if (!fluidStatus) {
-      return data;
-    }
-    if (data.value !== -1) {
-      return _objectSpread(_objectSpread({}, data), {}, {
-        state: _enums.DataloadState.VALID
-      });
-    }
+var getThemeByItem = function getThemeByItem(item) {
+  var defaultTheme = findDefaultItemTheme(item);
 
-    // Define state in function of first and last fluid data date
-    if (fluidStatus.firstDataDate && timeStep !== _enums.TimeStep.MONTH && timeStep !== _enums.TimeStep.YEAR && data.date < fluidStatus.firstDataDate) {
-      return _objectSpread(_objectSpread({}, data), {}, {
-        state: _enums.DataloadState.EMPTY
-      });
-    }
-    if (fluidStatus.firstDataDate && timeStep === _enums.TimeStep.MONTH && data.date < fluidStatus.firstDataDate.startOf('month')) {
-      return _objectSpread(_objectSpread({}, data), {}, {
-        state: _enums.DataloadState.EMPTY
-      });
-    }
-    if (fluidStatus.firstDataDate && timeStep === _enums.TimeStep.YEAR && data.date < fluidStatus.firstDataDate.startOf('year')) {
-      return _objectSpread(_objectSpread({}, data), {}, {
-        state: _enums.DataloadState.EMPTY
-      });
-    }
-    if (fluidStatus.lastDataDate && data.date > fluidStatus.lastDataDate) {
-      const isDataToCome = this.isDataToCome(data, fluidType);
-      return _objectSpread(_objectSpread({}, data), {}, {
-        state: isDataToCome ? _enums.DataloadState.COMING : _enums.DataloadState.MISSING
-      });
-    }
-    if (fluidStatus.firstDataDate && fluidStatus.lastDataDate && data.date >= (fluidStatus === null || fluidStatus === void 0 ? void 0 : fluidStatus.firstDataDate) && data.date <= (fluidStatus === null || fluidStatus === void 0 ? void 0 : fluidStatus.lastDataDate)) {
-      return _objectSpread(_objectSpread({}, data), {}, {
-        state: data.value === -1 ? _enums.DataloadState.HOLE : _enums.DataloadState.VALID
-      });
-    }
-    return data;
-  }
-  isDataToCome(dataload, fluidType) {
-    const configService = new _fluidConfig.default();
-    const fluidConfig = configService.getFluidConfig();
-    const inter = _luxon.Interval.fromDateTimes(dataload.date.startOf('day'), _luxon.DateTime.local().setZone('utc', {
-      keepLocalTime: true
-    }).startOf('day')).count('days');
-    if (fluidType === _enums.FluidType.ELECTRICITY && inter <= fluidConfig[0].dataDelayOffset + 1) {
-      return true;
-    }
-    if (fluidType === _enums.FluidType.WATER && inter <= fluidConfig[1].dataDelayOffset + 1) {
-      return true;
-    }
-    if (fluidType === _enums.FluidType.GAS && inter <= fluidConfig[2].dataDelayOffset + 1) {
-      return true;
-    } else {
-      return false;
-    }
-  }
-  defineAggregatedDataloadState(dataloadStateArray) {
-    if (dataloadStateArray.includes(_enums.DataloadState.VALID)) {
-      if (dataloadStateArray.includes(_enums.DataloadState.HOLE) || dataloadStateArray.includes(_enums.DataloadState.MISSING)) {
-        return _enums.DataloadState.AGGREGATED_WITH_HOLE_OR_MISSING;
-      }
-      if (dataloadStateArray.includes(_enums.DataloadState.UPCOMING) || dataloadStateArray.includes(_enums.DataloadState.COMING)) {
-        return _enums.DataloadState.AGGREGATED_WITH_COMING;
-      }
-      if (dataloadStateArray.includes(_enums.DataloadState.EMPTY)) {
-        return _enums.DataloadState.AGGREGATED_WITH_EMPTY;
-      }
-      return _enums.DataloadState.AGGREGATED_VALID;
-    }
-    // No valid data but at least one hole or missing data
-    if (dataloadStateArray.includes(_enums.DataloadState.HOLE) || dataloadStateArray.includes(_enums.DataloadState.MISSING)) {
-      return _enums.DataloadState.AGGREGATED_HOLE_OR_MISSING;
-    }
-    // No valid data but at least one upcoming or coming data
-    if (dataloadStateArray.includes(_enums.DataloadState.UPCOMING) || dataloadStateArray.includes(_enums.DataloadState.COMING)) {
-      return _enums.DataloadState.AGGREGATED_COMING;
-    }
-    // No valid data but at least one empty data
-    if (dataloadStateArray.includes(_enums.DataloadState.EMPTY)) {
-      return _enums.DataloadState.AGGREGATED_EMPTY;
-    }
-    // Default
-    return _enums.DataloadState.AGGREGATED_VALID;
-  }
-  getTimeFromStepTime(timeStep) {
-    switch (timeStep) {
-      case _enums.TimeStep.HALF_AN_HOUR:
-        return {
-          minutes: 30
-        };
-      case _enums.TimeStep.DAY:
-        return {
-          days: 1
-        };
-      case _enums.TimeStep.MONTH:
-        return {
-          months: 1
-        };
-      case _enums.TimeStep.YEAR:
-        return {
-          years: 1
-        };
-      default:
-        return {
-          days: 1
-        };
-    }
+  if (defaultTheme) {
+    return defaultTheme;
   }
-}
-exports.default = ConsumptionFormatterService;
+
+  return _documentTypeData.themesList.find(function (theme) {
+    return theme.items.some(function (it) {
+      return it.label === item.label;
+    });
+  });
+};
+/**
+ * Check if a qualification is a note
+ *
+ * @param {import("../../types").QualificationAttributes} item - Qualification item
+ * @returns {boolean}
+ */
+
+
+exports.getThemeByItem = getThemeByItem;
+
+var isQualificationNote = function isQualificationNote(item) {
+  return item.label.toLowerCase().startsWith('note_');
+};
+
+exports.isQualificationNote = isQualificationNote;
 
 /***/ }),
-/* 874 */
+/* 821 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 var _interopRequireDefault = __webpack_require__(1);
+
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.default = void 0;
-var _enums = __webpack_require__(230);
-var _luxon = __webpack_require__(250);
-var _fluidConfig = _interopRequireDefault(__webpack_require__(875));
-class DateChartService {
-  /**
-   * Define a time period for a given slide defined by its index
-   */
-  defineTimePeriod(referenceDate, timeStep, index) {
-    let date;
-    switch (timeStep) {
-      case _enums.TimeStep.YEAR:
-        date = referenceDate.set({
-          month: 1,
-          day: 1,
-          hour: 0,
-          minute: 0,
-          second: 0,
-          millisecond: 0
-        });
-        return {
-          startDate: date.plus({
-            years: -5 * index - (5 - 1)
-          }),
-          endDate: date.plus({
-            years: -5 * index
-          })
-        };
-      case _enums.TimeStep.MONTH:
-        date = referenceDate.set({
-          month: 12,
-          day: 1,
-          hour: 0,
-          minute: 0,
-          second: 0,
-          millisecond: 0
-        });
-        return {
-          startDate: date.plus({
-            months: -12 * index - (12 - 1)
-          }),
-          endDate: date.plus({
-            months: -12 * index
-          })
-        };
-      case _enums.TimeStep.DAY:
-        date = referenceDate.set({
-          day: 1,
-          hour: 0,
-          minute: 0,
-          second: 0,
-          millisecond: 0
-        });
-        return {
-          startDate: date.plus({
-            month: -index
-          }).startOf('day'),
-          endDate: date.plus({
-            month: -index
-          }).endOf('month').startOf('day')
-        };
-      case _enums.TimeStep.WEEK:
-        date = referenceDate.endOf('week').set({
-          hour: 0,
-          minute: 0,
-          second: 0,
-          millisecond: 0
-        });
-        return {
-          startDate: date.plus({
-            days: -7 * index - (7 - 1)
-          }),
-          endDate: date.plus({
-            days: -7 * index
-          })
-        };
-      case _enums.TimeStep.HALF_AN_HOUR:
-        date = referenceDate.set({
-          hour: 23,
-          minute: 30,
-          second: 0,
-          millisecond: 0
-        });
-        return {
-          startDate: date.set({
-            hour: 0,
-            minute: 0
-          }).plus({
-            days: -1 * index
-          }),
-          endDate: date.plus({
-            days: -1 * index
-          })
-        };
-      default:
-        throw new Error('TimeStep unknown');
-    }
+exports.fetchTimeSeriesByIntervalAndSource = exports.saveTimeSeries = void 0;
+
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
+
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+
+var _dsl = __webpack_require__(495);
+
+var validateTimeSeriesFormat = function validateTimeSeriesFormat(timeseries) {
+  if (!timeseries.startDate || !timeseries.endDate) {
+    throw new Error('You must specify a startDate and endDate for the time serie');
   }
 
-  /**
-   * Return first step date
-   * @param {DateTime} referenceDate - reference date
-   * @param {TimeStep} timeStep - time step
-   * @param {number} index - index
-   */
-  defineFirstStepDate(referenceDate, timeStep, index) {
-    const period = this.defineTimePeriod(referenceDate, timeStep, index);
-    return period.startDate;
+  if (!Date.parse(timeseries.startDate) || !Date.parse(timeseries.endDate)) {
+    throw new Error('Invalid date format for the time serie');
   }
 
-  /**
-   * Return last step date
-   * @param {DateTime} referenceDate - reference date
-   * @param {TimeStep} timeStep - time step
-   * @param {number} index - index
-   */
-  defineLastStepDate(referenceDate, timeStep, index) {
-    const period = this.defineTimePeriod(referenceDate, timeStep, index);
-    return period.endDate;
+  if (!timeseries.dataType) {
+    throw new Error('You must specify a dataType for the time serie');
   }
 
-  /**
-   * Compare two date time in function of a time step
-   * @param {TimeStep} timeStep - time step
-   * @param {DateTime} date1 - first date to compare
-   * @param {DateTime} date2 - second date to compare
-   * @returns {boolean} - return true if date are equals for the time step
-   */
-  compareStepDate(timeStep, date1, date2) {
-    switch (timeStep) {
-      case _enums.TimeStep.YEAR:
-        return date1.year === date2.year;
-      case _enums.TimeStep.MONTH:
-        return date1.year === date2.year && date1.month === date2.month;
-      case _enums.TimeStep.DAY:
-      case _enums.TimeStep.WEEK:
-        return date1.year === date2.year && date1.month === date2.month && date1.day === date2.day;
-      case _enums.TimeStep.HALF_AN_HOUR:
-        return date1.year === date2.year && date1.month === date2.month && date1.day === date2.day && date1.hour === date2.hour && Math.abs(date1.minute - date2.minute) === 0;
-      default:
-        throw new Error('TimeStep unknown');
-    }
+  if (!timeseries.series || !Array.isArray(timeseries.series)) {
+    throw new Error('You must specify a series array for the time serie');
   }
+};
+/**
+ * @typedef TimeSeries
+ * @property dataType {String} - The type of time series, e.g. 'electricity'
+ * @property startDate {Date} - The starting date of the series
+ * @property endDate {Date} - The end date of the series
+ * @property endType {Date} - The starting date of the series
+ * @property source {String} - The data source, e.g. 'enedis.fr'
+ * @property theme {String} - The theme used to group time series, e.g. 'energy'
+ * @property series {Array} - An array of objects representing the time series
+ */
 
-  /**
-   * Return the number of increment when changing to previous index
-   * @param {TimeStep} timeStep - current time step
-   * @param {DateTime} selectedDate - current selected date
-   * @param {number} index - current index
-   * @returns {number} - number of increment
-   */
-  defineIncrementForPreviousIndex(timeStep, selectedDate, index) {
-    switch (timeStep) {
-      case _enums.TimeStep.YEAR:
-        return -5 + (_luxon.DateTime.local().year + 5 * -index) - selectedDate.year;
-      case _enums.TimeStep.MONTH:
-        return -selectedDate.month;
-      case _enums.TimeStep.DAY:
-        return -selectedDate.day;
-      case _enums.TimeStep.WEEK:
-        return -selectedDate.weekday;
-      case _enums.TimeStep.HALF_AN_HOUR:
-        if (selectedDate.minute === 30) {
-          return -selectedDate.hour * 2 - 2;
-        } else {
-          return -selectedDate.hour * 2 - 1;
+/**
+ * Helper to save a time series document.
+ *
+ * @param {object} client - The CozyClient instance
+ *
+ 
+ * @param {TimeSeries} timeseriesOption - The time series to save
+ */
+
+
+var saveTimeSeries = /*#__PURE__*/function () {
+  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client, timeseriesOption) {
+    var dataType, series, startDate, endDate, source, theme, doctype, timeseries;
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            dataType = timeseriesOption.dataType, series = timeseriesOption.series, startDate = timeseriesOption.startDate, endDate = timeseriesOption.endDate, source = timeseriesOption.source, theme = timeseriesOption.theme;
+            validateTimeSeriesFormat({
+              dataType: dataType,
+              series: series,
+              startDate: startDate,
+              endDate: endDate,
+              source: source
+            });
+            doctype = "io.cozy.timeseries.".concat(dataType);
+            timeseries = {
+              _type: doctype,
+              startDate: startDate,
+              endDate: endDate,
+              source: source,
+              theme: theme,
+              series: series
+            };
+            return _context.abrupt("return", client.save(timeseries));
+
+          case 5:
+          case "end":
+            return _context.stop();
         }
-      default:
-        return 0;
-    }
-  }
+      }
+    }, _callee);
+  }));
+
+  return function saveTimeSeries(_x, _x2) {
+    return _ref.apply(this, arguments);
+  };
+}();
+/**
+ * Helper to retrieve time series by their date interval and source.
+ *
+ * @param {object} client - The CozyClient instance
+ * @param {object} params - The query params
+ * @param {Date} params.startDate - The starting date of the series
+ * @param {Date} params.endDate - The end date of the series
+ * @param {String} params.dataType - The type of time series, e.g. 'electricity'
+ * @param {String} params.source - The data source, e.g. 'enedis.fr'
+ * @param {number} params.limit - Number of serie items to retrieve
+ *
+ * @typedef TimeSeriesJSONAPI
+ * @property data {Array<TimeSeries>} - The JSON-API data response
+ * @returns {Promise<TimeSeriesJSONAPI>} The TimeSeries found by the query in JSON-API format
+ */
+
+
+exports.saveTimeSeries = saveTimeSeries;
+
+var fetchTimeSeriesByIntervalAndSource = /*#__PURE__*/function () {
+  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(client, _ref2) {
+    var startDate, endDate, dataType, source, limit, doctype, query;
+    return _regenerator.default.wrap(function _callee2$(_context2) {
+      while (1) {
+        switch (_context2.prev = _context2.next) {
+          case 0:
+            startDate = _ref2.startDate, endDate = _ref2.endDate, dataType = _ref2.dataType, source = _ref2.source, limit = _ref2.limit;
+
+            /**
+             * @type {import("../types").Doctype}
+             */
+            doctype = "io.cozy.timeseries.".concat(dataType);
+            query = (0, _dsl.Q)(doctype).where({
+              source: source,
+              startDate: {
+                $gte: startDate
+              },
+              endDate: {
+                $lte: endDate
+              }
+            }).indexFields(['source', 'startDate', 'endDate']).sortBy([{
+              source: 'desc'
+            }, {
+              startDate: 'desc'
+            }, {
+              endDate: 'desc'
+            }]).limitBy(limit || 5);
+            return _context2.abrupt("return", client.query(query));
 
-  /**
-   * Return the number of increment when changing to previous index
-   * @param {TimeStep} timeStep - current time step
-   * @param {DateTime} selectedDate - current selected date
-   * @param {number} index - current index
-   * @returns {number} - number of increment
-   */
-  defineIncrementForNextIndex(timeStep, selectedDate, index) {
-    switch (timeStep) {
-      case _enums.TimeStep.YEAR:
-        return 5 + _luxon.DateTime.local().year - 5 * index - selectedDate.year;
-      case _enums.TimeStep.MONTH:
-        return 12 + 12 - selectedDate.month;
-      case _enums.TimeStep.DAY:
-        return selectedDate.daysInMonth - selectedDate.day + selectedDate.plus({
-          month: 1
-        }).daysInMonth;
-      case _enums.TimeStep.WEEK:
-        return 7 + 7 - selectedDate.weekday;
-      case _enums.TimeStep.HALF_AN_HOUR:
-        if (selectedDate.minute === 30) {
-          return 48 + 48 - selectedDate.hour * 2 - 2;
-        } else {
-          return 48 + 48 - selectedDate.hour * 2 - 1;
+          case 4:
+          case "end":
+            return _context2.stop();
         }
-      default:
-        return 0;
-    }
-  }
-
-  /**
-   * Return the date incremented in function of the timestep
-   * @param {TimeStep} timeStep - current time step
-   * @param {DateTime} selectedDate - current selected date
-   * @param {number} increment - increment
-   * @returns {DateTime} - incremented date
-   */
-  incrementDate(timeStep, selectedDate, increment) {
-    switch (timeStep) {
-      case _enums.TimeStep.YEAR:
-        return selectedDate.plus({
-          year: increment
-        });
-      case _enums.TimeStep.MONTH:
-        return selectedDate.plus({
-          month: increment
-        });
-      case _enums.TimeStep.DAY:
-        return selectedDate.plus({
-          day: increment
-        });
-      case _enums.TimeStep.WEEK:
-        return selectedDate.plus({
-          day: increment
-        });
-      case _enums.TimeStep.HALF_AN_HOUR:
-        return selectedDate.plus({
-          minute: increment * 30
-        });
-      default:
-        return selectedDate;
-    }
-  }
+      }
+    }, _callee2);
+  }));
 
-  /**
-   * Return the chart index in function of the timestep and a given date
-   * @param {TimeStep} timeStep - current time step
-   * @param {DateTime} selectedDate - current selected date
-   * @returns {number} - index
-   */
-  defineDateIndex(timeStep, selectedDate) {
-    const today = _luxon.DateTime.local().setZone('utc', {
-      keepLocalTime: true
-    });
-    switch (timeStep) {
-      case _enums.TimeStep.YEAR:
-        return Math.trunc((today.year - selectedDate.year) / 5);
-      case _enums.TimeStep.MONTH:
-        return today.year - selectedDate.year;
-      case _enums.TimeStep.DAY:
-        return today.startOf('month').diff(selectedDate.startOf('month'), 'month').get('month');
-      case _enums.TimeStep.WEEK:
-        return today.startOf('week').diff(selectedDate.startOf('week'), 'week').get('week');
-      case _enums.TimeStep.HALF_AN_HOUR:
-        return today.startOf('day').diff(selectedDate.startOf('day'), 'day').get('day');
-      default:
-        return 0;
-    }
-  }
+  return function fetchTimeSeriesByIntervalAndSource(_x3, _x4) {
+    return _ref3.apply(this, arguments);
+  };
+}();
 
-  /**
-   * Checks if the last data date is outdated and returns the number of missing days
-   * @returns {number| null} - The number of missing days
-   */
-  isDataOutdated(date, fluidType) {
-    if (date && fluidType !== _enums.FluidType.MULTIFLUID) {
-      const fluidConfig = new _fluidConfig.default().getFluidConfig();
-      const today = _luxon.DateTime.local().setZone('utc', {
-        keepLocalTime: true
-      });
-      const inter = _luxon.Interval.fromDateTimes(date, today).count('days');
-      const limitDate = fluidConfig[fluidType].dataDelayOffset + 2;
-      if (inter > limitDate) {
-        return inter - 2;
-      } else return null;
-    } else return null;
-  }
-}
-exports.default = DateChartService;
+exports.fetchTimeSeriesByIntervalAndSource = fetchTimeSeriesByIntervalAndSource;
 
 /***/ }),
-/* 875 */
+/* 822 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 var _interopRequireDefault = __webpack_require__(1);
+
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.default = void 0;
-var _config = _interopRequireDefault(__webpack_require__(876));
-class ConfigService {
-  getFluidConfig() {
-    return _config.default.fluidConfig;
-  }
+exports.getSharingLink = void 0;
 
-  /**
-   * Generate a cron between min:00:00 and max:59:59
-   * @param min Minimum hour for cron
-   * @param max Maximum hour for cron
-   */
-  getCronArgs(min, max) {
-    const randomHour = Math.floor(Math.random() * (max - min + 1) + min); // NOSONAR
-    const randomMinutes = Math.floor(Math.random() * 60); // NOSONAR
-    const randomSeconds = Math.floor(Math.random() * 60); // NOSONAR
-    return `${randomSeconds} ${randomMinutes} ${randomHour} * * *`;
-  }
-}
-exports.default = ConfigService;
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-/***/ }),
-/* 876 */
-/***/ (function(module) {
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-module.exports = JSON.parse("{\"fluidConfig\":[{\"fluidTypeId\":0,\"name\":\"enedis\",\"coefficient\":0.174,\"startDate\":\"2021-08-01T00:00:00.000\",\"dataDelayOffset\":3,\"konnectorConfig\":{\"name\":\"Enedis\",\"oauth\":false,\"slug\":\"enedissgegrandlyon\",\"siteLink\":\"https://mon-compte-client.enedis.fr/\",\"activation\":\"https://mon-compte-particulier.enedis.fr/donnees/\"}},{\"fluidTypeId\":1,\"name\":\"egl\",\"coefficient\":0.00319,\"startDate\":\"2021-01-01T00:00:00.000\",\"dataDelayOffset\":5,\"konnectorConfig\":{\"name\":\"Eau Publique du Grand Lyon\",\"oauth\":false,\"slug\":\"eglgrandlyon\",\"siteLink\":\"https://www.eaudugrandlyon.com/inscription.aspx#subc-now\",\"activation\":\"\"}},{\"fluidTypeId\":2,\"name\":\"grdf\",\"coefficient\":0.1121,\"startDate\":\"2021-10-01T00:00:00.000\",\"dataDelayOffset\":5,\"konnectorConfig\":{\"name\":\"GRDF\",\"oauth\":false,\"slug\":\"grdfgrandlyon\",\"siteLink\":\"https://monespace.grdf.fr/creation-particulier\",\"activation\":\"\"}}],\"termsVersion\":\"3.0.0\"}");
+var _const = __webpack_require__(619);
 
-/***/ }),
-/* 877 */
-/***/ (function(module, exports, __webpack_require__) {
+var _CozyClient = _interopRequireDefault(__webpack_require__(279));
 
-"use strict";
+var _helpers = __webpack_require__(663);
 
+/**
+ * Generate Sharing link for one or many files
+ *
+ * @param {CozyClient} client - Instance of CozyClient
+ * @param {string[]} filesIds - Array of io.cozy.files ids
+ * @param {boolean} [isFlatDomain] -
+ * @returns {Promise<string>} Shared link
+ */
+var getSharingLink = /*#__PURE__*/function () {
+  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client, filesIds, isFlatDomain) {
+    var _sharedLink$attribute, _sharedLink$attribute2;
 
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.SUMMER_WEEK_DATES = void 0;
-exports.compareDates = compareDates;
-exports.getActualAnalysisDate = exports.formatDate = exports.convertDateToShortDateString = exports.convertDateToMonthYearString = void 0;
-exports.getCurrentSeason = getCurrentSeason;
-exports.getLagDays = void 0;
-exports.getOppositeSeason = getOppositeSeason;
-exports.isLastPeriodReached = exports.isLastDateReached = void 0;
-var _enums = __webpack_require__(230);
-var _luxon = __webpack_require__(250);
-var _utils = __webpack_require__(878);
-/** Between 21st of June and 20th of September */
-const SUMMER_WEEK_DATES = {
-  start: 25,
-  end: 38
-};
+    var PERMS, _yield$client$save, sharedLink, webLink;
 
-/** Between 31st of October and 30th of March */
-exports.SUMMER_WEEK_DATES = SUMMER_WEEK_DATES;
-const WINTER_WEEK_DATES = {
-  start: 44,
-  end: 13
-};
-function compareDates(dateA, dateB) {
-  return dateA < dateB ? -1 : 1;
-}
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            PERMS = {
+              _type: _const.DOCTYPE_PERMISSIONS,
+              permissions: {
+                files: {
+                  type: _const.DOCTYPE_FILES,
+                  values: filesIds,
+                  verbs: ['GET']
+                }
+              }
+            };
+            _context.next = 3;
+            return client.save(PERMS);
 
-// Use to define if the selected date is the last possible for the given timestep
-const isLastDateReached = (date, timeStep) => {
-  const today = _luxon.DateTime.local().setZone('utc', {
-    keepLocalTime: true
-  });
-  switch (timeStep) {
-    case _enums.TimeStep.HALF_AN_HOUR:
-      return date.plus({
-        minute: 30
-      }) > today.endOf('day') ? true : false;
-    case _enums.TimeStep.WEEK:
-    case _enums.TimeStep.DAY:
-      return date.plus({
-        day: 1
-      }) > today ? true : false;
-    case _enums.TimeStep.MONTH:
-      return date.plus({
-        month: 1
-      }) > today ? true : false;
-    case _enums.TimeStep.YEAR:
-      return date.plus({
-        year: 1
-      }) > today ? true : false;
-    default:
-      return false;
-  }
-};
+          case 3:
+            _yield$client$save = _context.sent;
+            sharedLink = _yield$client$save.data;
+            webLink = (0, _helpers.generateWebLink)({
+              cozyUrl: client.getStackClient().uri,
+              searchParams: [['sharecode', sharedLink === null || sharedLink === void 0 ? void 0 : (_sharedLink$attribute = sharedLink.attributes) === null || _sharedLink$attribute === void 0 ? void 0 : (_sharedLink$attribute2 = _sharedLink$attribute.shortcodes) === null || _sharedLink$attribute2 === void 0 ? void 0 : _sharedLink$attribute2.code]],
+              pathname: '/public',
+              slug: 'drive',
+              subDomainType: isFlatDomain ? 'flat' : 'nested'
+            });
+            return _context.abrupt("return", webLink);
 
-// Use to define if the selected date is the last possible
-exports.isLastDateReached = isLastDateReached;
-const isLastPeriodReached = (date, timeStep) => {
-  switch (timeStep) {
-    case _enums.TimeStep.HALF_AN_HOUR:
-      return date.endOf('day').plus({
-        day: 1
-      }) > _luxon.DateTime.local().setZone('utc', {
-        keepLocalTime: true
-      }).endOf('day') ? true : false;
-    case _enums.TimeStep.WEEK:
-      return date.endOf('week').plus({
-        week: 1
-      }) > _luxon.DateTime.local().setZone('utc', {
-        keepLocalTime: true
-      }).endOf('week') ? true : false;
-    case _enums.TimeStep.DAY:
-      return date.endOf('month').plus({
-        month: 1
-      }) > _luxon.DateTime.local().setZone('utc', {
-        keepLocalTime: true
-      }).endOf('month') ? true : false;
-    case _enums.TimeStep.MONTH:
-      return date.endOf('year').plus({
-        year: 1
-      }) > _luxon.DateTime.local().setZone('utc', {
-        keepLocalTime: true
-      }).endOf('year') ? true : false;
-    case _enums.TimeStep.YEAR:
-      return date.year + 5 > _luxon.DateTime.local().setZone('utc', {
-        keepLocalTime: true
-      }).year ? true : false;
-    default:
-      return false;
-  }
-};
+          case 7:
+          case "end":
+            return _context.stop();
+        }
+      }
+    }, _callee);
+  }));
 
-/*
- * Return the diff of day which represent
- * the possible calculation of data based on configured fluidTypes
- */
-exports.isLastPeriodReached = isLastPeriodReached;
-const getLagDays = fluidTypes => {
-  if ((fluidTypes === null || fluidTypes === void 0 ? void 0 : fluidTypes.length) > 0 && fluidTypes !== null && fluidTypes !== void 0 && fluidTypes.includes(_enums.FluidType.WATER)) {
-    return 3;
-  } else if ((fluidTypes === null || fluidTypes === void 0 ? void 0 : fluidTypes.length) > 0 && fluidTypes !== null && fluidTypes !== void 0 && fluidTypes.includes(_enums.FluidType.GAS)) {
-    return 2;
-  } else {
-    return 1;
-  }
-};
-exports.getLagDays = getLagDays;
-const convertDateToShortDateString = (actualData, timeStep) => {
-  if (!actualData || actualData.length === 0) return '';
-  const date = actualData[0].date;
-  switch (timeStep) {
-    case _enums.TimeStep.HALF_AN_HOUR:
-      return `bilan du ${date.setLocale('fr').toFormat('cccc dd LLLL')}`;
-    case _enums.TimeStep.DAY:
-      return `bilan ${(0, _utils.getMonthNameWithPrep)(date)}`;
-    case _enums.TimeStep.WEEK:
-      return `bilan du ${date.toFormat('dd/MM')} au ${actualData[actualData.length - 1].date.toFormat('dd/MM')}`;
-    case _enums.TimeStep.MONTH:
-      return `bilan de l’année ${date.toFormat('y')}`;
-    case _enums.TimeStep.YEAR:
-      return `de ${date.toFormat('y')} à ${actualData[actualData.length - 1].date.toFormat('y')}`;
-    default:
-      return '';
-  }
-};
-exports.convertDateToShortDateString = convertDateToShortDateString;
-const convertDateToMonthYearString = date => {
-  return date.setLocale('fr-FR').toLocaleString({
-    month: 'long',
-    year: 'numeric'
-  });
-};
-exports.convertDateToMonthYearString = convertDateToMonthYearString;
-const getActualAnalysisDate = () => {
-  const now = _luxon.DateTime.local().setZone('utc', {
-    keepLocalTime: true
-  }).startOf('day');
-  if (now.day < 3) {
-    return now.set({
-      day: 3,
-      month: now.month - 1
-    });
-  } else {
-    return now.set({
-      day: 3,
-      month: now.month
-    });
-  }
-};
+  return function getSharingLink(_x, _x2, _x3) {
+    return _ref.apply(this, arguments);
+  };
+}();
 
-/**
- * Determines the current season based on the month of the year.
- * @returns
- * - Returns Season.SUMMER if the current month is between summer dates,
- * - Returns Season.WINTER if the current month is between winter dates,
- * - Otherwise returns null.
- */
-exports.getActualAnalysisDate = getActualAnalysisDate;
-function getCurrentSeason() {
-  const weekNumber = _luxon.DateTime.local().weekNumber;
-  if (weekNumber >= SUMMER_WEEK_DATES.start && weekNumber <= SUMMER_WEEK_DATES.end) {
-    return _enums.Season.SUMMER;
-  } else if (weekNumber >= WINTER_WEEK_DATES.start || weekNumber <= WINTER_WEEK_DATES.end) {
-    return _enums.Season.WINTER;
-  }
-  return null;
-}
-function getOppositeSeason(currentSeason) {
-  if (currentSeason === _enums.Season.WINTER) {
-    return _enums.Season.SUMMER;
-  } else if (currentSeason === _enums.Season.SUMMER) {
-    return _enums.Season.WINTER;
-  } else {
-    throw new Error('Invalid current season.');
-  }
-}
-
-/**
- * Returns an array of the formatted date. It returns an array for display purposes.
- */
-const formatDate = (timeStep, date) => {
-  switch (timeStep) {
-    case _enums.TimeStep.YEAR:
-      return [date.toLocaleString({
-        year: 'numeric'
-      }), ''];
-    case _enums.TimeStep.MONTH:
-      return [date.toLocaleString({
-        month: 'long'
-      }), date.toLocaleString({
-        year: 'numeric'
-      })];
-    case _enums.TimeStep.DAY:
-    case _enums.TimeStep.WEEK:
-      return [date.toLocaleString({
-        weekday: 'long',
-        day: '2-digit'
-      }), date.toLocaleString({
-        month: 'long'
-      })];
-    case _enums.TimeStep.HALF_AN_HOUR:
-      /**
-       * Format date to range:
-       * 9:00 - 9:30
-       * Day 0X Month
-       */
-      return [`${date.toLocaleString({
-        hour: 'numeric',
-        minute: 'numeric'
-      })} - ${date.plus({
-        minutes: 30
-      }).toLocaleString({
-        hour: 'numeric',
-        minute: 'numeric'
-      })}`, date.toLocaleString({
-        weekday: 'long',
-        day: '2-digit',
-        month: 'long'
-      })];
-    default:
-      return [date.toLocaleString(_luxon.DateTime.DATETIME_SHORT), ''];
-  }
-};
-exports.formatDate = formatDate;
+exports.getSharingLink = getSharingLink;
 
 /***/ }),
-/* 878 */
+/* 823 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 var _interopRequireDefault = __webpack_require__(1);
+
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.formatListWithAnd = exports.allFluids = void 0;
-exports.formatNumberValues = formatNumberValues;
-exports.getChallengeTitleWithLineReturn = exports.formatTwoDigits = exports.formatOffPeakHours = void 0;
-exports.getFluidName = getFluidName;
-exports.getFluidUnit = exports.getFluidTypeTranslation = void 0;
-exports.getKonnectorSlug = getKonnectorSlug;
-exports.getKonnectorUpdateError = getKonnectorUpdateError;
-exports.getPartnerKey = exports.getMonthNameWithPrep = exports.getMonthName = exports.getMonthFullName = void 0;
-exports.getRelationship = getRelationship;
-exports.getRelationshipHasMany = getRelationshipHasMany;
-exports.importIconById = exports.getTodayDate = exports.getSeason = void 0;
-exports.isKonnectorActive = isKonnectorActive;
-exports.splitOffPeakHours = exports.roundToNearestHalfHour = exports.roundOffPeakHours = exports.parseOffPeakHours = exports.isValidOffPeakHours = void 0;
-var _react = __webpack_require__(2);
-var _enums = __webpack_require__(230);
-var _get = _interopRequireDefault(__webpack_require__(399));
-var _luxon = __webpack_require__(250);
-var _challengeEntity = _interopRequireDefault(__webpack_require__(879));
-/** Array of elec, water & gas */
-const allFluids = [_enums.FluidType.ELECTRICITY, _enums.FluidType.WATER, _enums.FluidType.GAS];
-exports.allFluids = allFluids;
-function getKonnectorSlug(fluidType) {
-  switch (fluidType) {
-    case _enums.FluidType.ELECTRICITY:
-      return _enums.FluidSlugType.ELECTRICITY;
-    case _enums.FluidType.WATER:
-      return _enums.FluidSlugType.WATER;
-    case _enums.FluidType.GAS:
-      return _enums.FluidSlugType.GAS;
-    default:
-      throw new Error('unknown fluidtype');
-  }
-}
-/**
- * Return lowercase fluidtype
- * @example FluidType.ELECTRICITY => 'electricity'
- */
-function getFluidName(fluidType) {
-  return _enums.FluidType[fluidType].toLowerCase();
-}
-const getFluidTypeTranslation = fluidType => {
-  switch (fluidType) {
-    case _enums.FluidType.GAS:
-      return 'de gaz';
-    case _enums.FluidType.ELECTRICITY:
-      return "d'électricité";
-    case _enums.FluidType.WATER:
-      return "d'eau";
-    default:
-      throw new Error('unexpected fluidtype');
-  }
-};
-exports.getFluidTypeTranslation = getFluidTypeTranslation;
-const getPartnerKey = fluidType => {
-  switch (fluidType) {
-    case _enums.FluidType.ELECTRICITY:
-      return 'enedis';
-    case _enums.FluidType.WATER:
-      return 'egl';
-    case _enums.FluidType.GAS:
-      return 'grdf';
-    default:
-      throw new Error('unknown fluidtype');
-  }
-};
-exports.getPartnerKey = getPartnerKey;
-function getKonnectorUpdateError(type) {
-  switch (type.toUpperCase()) {
-    case 'USER_ACTION_NEEDED.OAUTH_OUTDATED':
-    case 'USER_ACTION_NEEDED.SCA_REQUIRED':
-      return _enums.KonnectorUpdate.ERROR_UPDATE_OAUTH;
-    case 'LOGIN_FAILED':
-      return _enums.KonnectorUpdate.LOGIN_FAILED;
-    default:
-      return _enums.KonnectorUpdate.ERROR_UPDATE;
-  }
-}
-function isKonnectorActive(fluidStatus, fluidType) {
-  if (fluidType === _enums.FluidType.MULTIFLUID) {
-    if (fluidStatus.filter(fluid => fluid.status === _enums.FluidState.NOT_CONNECTED || fluid.status === _enums.FluidState.KONNECTOR_NOT_FOUND).length === 3) {
-      return false;
-    } else {
-      return true;
-    }
-  }
-  if (fluidStatus[fluidType].status === _enums.FluidState.NOT_CONNECTED || fluidStatus[fluidType].status === _enums.FluidState.KONNECTOR_NOT_FOUND) {
-    return false;
-  } else return true;
-}
-function formatNumberValues(value, fluidStyle, toBeCompared = false) {
-  if (value || value === 0) {
-    const localeValue = value.toLocaleString('fr-FR', {
-      minimumFractionDigits: 2,
-      maximumFractionDigits: 2
-    });
-    const noSpaceValue = parseInt(localeValue.replace(/\s/g, ''));
-    if (toBeCompared) return noSpaceValue;
-    if (fluidStyle && noSpaceValue >= 1000) {
-      const convertedValue = (noSpaceValue / 1000).toFixed(2).replace('.', ',');
-      return convertedValue;
-    } else return localeValue;
-  } else {
-    return '--,--';
-  }
-}
+exports.fetchAggregatesFromDACC = exports.buildAggregateParams = exports.sendMeasureToDACC = exports.checkMeasureParams = exports.isCorrectDateFormat = void 0;
 
-/**
- * Get one relation in doc
- * @param {object} doc - DocumentEntity
- * @param {string} relName - Name of the relation
- */
-function getRelationship(doc, relName) {
-  return (0, _get.default)(doc, `relationships.${relName}.data`, []);
-}
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-/**
- * Get array of items in one relation in doc
- * @param {object} doc - DocumentEntity
- * @param {string} relName - Name of the relation
- */
-function getRelationshipHasMany(doc, relName) {
-  return (0, _get.default)(doc, `relationships.${relName}.data`, []);
-}
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
+
+var _cozyLogger = _interopRequireDefault(__webpack_require__(211));
+
+var _CozyClient = _interopRequireDefault(__webpack_require__(279));
 
 /**
- * Import a svg file with format : id.svg
+ * Check whether or not the given date is in YYYY-MM-DD format
+ *
+ * @param {string} date - The date to check
+ * @returns {boolean}
  */
-const importIconById = async (id, pathType) => {
-  let importedChallengeIcon;
+var isCorrectDateFormat = function isCorrectDateFormat(date) {
   try {
-    importedChallengeIcon = await __webpack_require__(880)(`./${pathType}/${id}.svg`);
-    if (importedChallengeIcon) {
-      return importedChallengeIcon.default;
-    }
-  } catch (e) {
-    console.error(`Could not import icon ${pathType}/${id}`);
-    (0, _react.captureException)(e);
+    var parsedDate = new Date(Date.parse(date));
+    return !!parsedDate.toISOString().startsWith(date);
+  } catch (err) {
+    return false;
   }
 };
-exports.importIconById = importIconById;
-const getMonthFullName = month => {
-  const monthNames = ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'];
-  if (month < 1 || month > 12) throw new Error('Invalid month');
-  return monthNames[month - 1];
-};
-
-/**
- * Return month string according to month index
- * @variation Equivalent to date.monthLong
- * @param date - DateTime
- * @returns month in french
- */
-exports.getMonthFullName = getMonthFullName;
-const getMonthName = date => {
-  const monthNames = ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'];
-  return monthNames[date.month - 1];
-};
-
 /**
- * Return month string according to month index
- * @param date - DateTime
- * @returns "de" month in french
+ * Throw an errror if a DACC parameter is incorrect.
+ *
+ * @param { import("../types").DACCMeasure} measure - The DACC measure
  */
-exports.getMonthName = getMonthName;
-const getMonthNameWithPrep = date => {
-  const monthNames = ['de janvier', 'de février', 'de mars', `d’avril`, 'de mai', 'de juin', 'de juillet', `d’août`, 'de septembre', `d’octobre`, 'de novembre', 'de décembre'];
-  return monthNames[date.month - 1];
-};
 
-/**
- * Return season according to following rules
- * - Winter is : 1/11/XXXX => 1/3/XXXX
- * - Summer is : 1/6/XXXX => 1/9/XXXX
- * @returns Season
- */
-exports.getMonthNameWithPrep = getMonthNameWithPrep;
-const getSeason = () => {
-  const currentDate = _luxon.DateTime.local().setZone('utc', {
-    keepLocalTime: true
-  });
-  const currentYear = currentDate.year;
-  const winterStart = _luxon.DateTime.local(currentYear, 11, 1).setZone('utc', {
-    keepLocalTime: true
-  });
-  const winterEnd = _luxon.DateTime.local(currentYear + 1, 3, 1).setZone('utc', {
-    keepLocalTime: true
-  });
-  const summerStart = _luxon.DateTime.local(currentYear, 6, 1).setZone('utc', {
-    keepLocalTime: true
-  });
-  const summerEnd = _luxon.DateTime.local(currentYear, 9, 1).setZone('utc', {
-    keepLocalTime: true
-  });
-  const summerInterval = _luxon.Interval.fromDateTimes(summerStart, summerEnd);
-  const winterInterval = _luxon.Interval.fromDateTimes(winterStart, winterEnd);
-  if (summerInterval.contains(currentDate)) {
-    return _enums.Season.SUMMER;
-  } else if (winterInterval.contains(currentDate)) {
-    return _enums.Season.WINTER;
-  } else {
-    return _enums.Season.NONE;
-  }
-};
 
-/**
- *  Returns the challenge title with line return ( \n ). The result is coming from challengeEntity.json
- * @param userChallengeId EXPLORATION001
- * @returns Simone\nVEILLE
- */
-exports.getSeason = getSeason;
-const getChallengeTitleWithLineReturn = userChallengeId => {
-  for (const challenge of _challengeEntity.default) {
-    if (challenge._id === userChallengeId) {
-      return challenge.title_line_return;
-    }
-  }
-};
+exports.isCorrectDateFormat = isCorrectDateFormat;
 
-/**
- * Returns today's date, example: 2022-09-28T00:00:00.000Z
- * @returns DateTime
- */
-exports.getChallengeTitleWithLineReturn = getChallengeTitleWithLineReturn;
-const getTodayDate = () => _luxon.DateTime.local().setZone('utc', {
-  keepLocalTime: true
-}).startOf('day');
+var checkMeasureParams = function checkMeasureParams(measure) {
+  var createdBy = measure.createdBy,
+      measureName = measure.measureName,
+      startDate = measure.startDate,
+      value = measure.value,
+      group1 = measure.group1,
+      group2 = measure.group2,
+      group3 = measure.group3;
 
-/**
- * Formats an array of strings into a list with commas and an "et" (and) before the last element.
- * @param {string[]} array - The array of strings to be formatted.
- * @returns {string} The formatted list string.
- *
- * If the array is empty, an empty string is returned.
- * If the array has only one element, that element is returned as is.
- * If the array has two elements, they are joined with " et " (and).
- * If the array has more than two elements, all but the last element are joined with commas,
- * and " et " (and) is placed before the last element.
- * @example
- * // Returns "pomme, banane et cerise"
- * formatListWithAnd(['pomme', 'banane', 'cerise']);
- */
-exports.getTodayDate = getTodayDate;
-const formatListWithAnd = array => {
-  if (array.length === 0) {
-    return '';
-  } else if (array.length === 1) {
-    return array[0];
-  } else if (array.length === 2) {
-    return array.join(' et ');
-  } else {
-    const lastElement = array.pop();
-    return array.join(', ') + ' et ' + lastElement;
+  if (!createdBy || typeof createdBy !== 'string') {
+    throw new Error('Missing or wrong type parameter: createdBy');
   }
-};
-exports.formatListWithAnd = formatListWithAnd;
-/**
- * Check if a string is a valid off-peak hour format
- * @example
- * isValidOffPeakHours("6H15-14H15") => true
- * isValidOffPeakHours("68H78_12Hab") => false
- */
-const isValidOffPeakHours = range => {
-  const offPeakHoursRegex = /^(0?\d|1\d|2[0-3])H[0-5]?\d-(0?\d|1\d|2[0-3])H[0-5]?\d$/;
-  return offPeakHoursRegex.test(range);
-};
 
-/**
- * Parse the string representation of off-peak hours from Enedis to an array of time ranges object
- */
-exports.isValidOffPeakHours = isValidOffPeakHours;
-const parseOffPeakHours = timeString => {
-  const timeRanges = timeString.split(';');
-  if (!timeRanges.every(range => isValidOffPeakHours(range))) {
-    console.error(`Error parsing time range "${timeString}"`);
-    return [];
-  }
-  const intervals = [];
-  for (const range of timeRanges) {
-    const [startStr, endStr] = range.split('-');
-    const startTime = _luxon.DateTime.fromFormat(startStr, "H'H'mm");
-    const endTime = _luxon.DateTime.fromFormat(endStr, "H'H'mm");
-    intervals.push({
-      start: {
-        hour: startTime.hour,
-        minute: startTime.minute
-      },
-      end: {
-        hour: endTime.hour,
-        minute: endTime.minute
-      }
-    });
+  if (!measureName || typeof measureName !== 'string') {
+    throw new Error('Missing or wrong type parameter: measureName');
   }
-  return intervals;
-};
 
-/**
- * Format a number into a 2-digits string, padded with 0
- * @example formatTwoDigits(5) returns "05"
- */
-exports.parseOffPeakHours = parseOffPeakHours;
-const formatTwoDigits = num => {
-  return num.toString().padStart(2, '0');
-};
+  if (!startDate) {
+    throw new Error('Missing parameter: startDate');
+  }
 
-/**
- * Format off-peak hours object into a human-readable string
- * @example formatOffPeakHours({ start: { hour: 2, minute: 0 }, end: { hour: 10, minute: 0 }}) returns "02H00-10H00"
- */
-exports.formatTwoDigits = formatTwoDigits;
-const formatOffPeakHours = offPeakHours => {
-  const {
-    start,
-    end
-  } = offPeakHours;
-  const startTime = `${formatTwoDigits(start.hour)}H${formatTwoDigits(start.minute)}`;
-  const endTime = `${formatTwoDigits(end.hour)}H${formatTwoDigits(end.minute)}`;
-  return `${startTime}-${endTime}`;
-};
+  if (!isCorrectDateFormat(startDate)) {
+    throw new Error('Date should be in YYYY-MM-DD format');
+  }
 
-/**
- * Split off-peak hours that cross midnight
- * @example The range "22H00-6H00" becomes "22H00-23H59" and "0H00-6H00"
- */
-exports.formatOffPeakHours = formatOffPeakHours;
-const splitOffPeakHours = offPeakHours => {
-  return offPeakHours.reduce((acc, offPeakHour) => {
-    if (offPeakHour.start.hour > offPeakHour.end.hour) {
-      acc.push({
-        start: {
-          hour: offPeakHour.start.hour,
-          minute: offPeakHour.start.minute
-        },
-        end: {
-          hour: 23,
-          minute: 59
-        }
-      });
-      acc.push({
-        start: {
-          hour: 0,
-          minute: 0
-        },
-        end: {
-          hour: offPeakHour.end.hour,
-          minute: offPeakHour.end.minute
-        }
-      });
-    } else {
-      acc.push(offPeakHour);
-    }
-    return acc;
-  }, []);
-};
-exports.splitOffPeakHours = splitOffPeakHours;
-const roundToNearestHalfHour = (hour, minute, isEnd) => {
-  let roundedMinute = Math.round(minute / 30) * 30; // Round to the nearest half-hour
-  let roundedHour = hour;
+  if (typeof value !== 'number') {
+    throw new Error('Missing or wrong type parameter: value');
+  }
 
-  // If rounding to the next hour (except for midnight), adjust the hour and reset the minute
-  if (roundedMinute === 60 && roundedHour !== 23) {
-    roundedHour += 1;
-    roundedMinute = 0;
+  if (group1 && (typeof group1 !== 'object' || Object.keys(group1).length === 0) || group2 && (typeof group2 !== 'object' || Object.keys(group2).length === 0) || group3 && (typeof group3 !== 'object' || Object.keys(group3).length === 0)) {
+    throw new Error('Groups should be key-value objects');
   }
 
-  // Don't round to midnight for the off-peak hours end, instead round to 23:59
-  if (roundedMinute === 60 && roundedHour === 23 || roundedMinute === 0 && roundedHour === 0) {
-    if (isEnd) {
-      roundedHour = 23;
-      roundedMinute = 59;
-    } else {
-      roundedHour = 0;
-      roundedMinute = 0;
-    }
+  if (group3 && (!group2 || !group1) || group2 && !group1) {
+    throw new Error('Group order must be respected');
   }
-  return {
-    hour: roundedHour,
-    minute: roundedMinute
-  };
 };
-
 /**
- * Round off-peak hours to the nearest half-hour
- * @example "6H50-14H50" becomes "7H00-15H00"
+ * Send measures to a DACC through a remote doctype
+ *
+ * @param {CozyClient} client - The CozyClient instance
+ * @param {string} remoteDoctype - The remote doctype to use
+ * @param {import("../types").DACCMeasure} measure - The DACC measure
  */
-exports.roundToNearestHalfHour = roundToNearestHalfHour;
-const roundOffPeakHours = offPeakHours => {
-  return offPeakHours.map(({
-    start,
-    end
-  }) => ({
-    start: roundToNearestHalfHour(start.hour, start.minute, false),
-    end: roundToNearestHalfHour(end.hour, end.minute, true)
-  }));
-};
-exports.roundOffPeakHours = roundOffPeakHours;
-const getFluidUnit = fluidType => {
-  switch (fluidType) {
-    case _enums.FluidType.ELECTRICITY:
-    case _enums.FluidType.GAS:
-      return 'kWh';
-    case _enums.FluidType.WATER:
-      return 'L';
-    case _enums.FluidType.MULTIFLUID:
-      return '€';
-    default:
-      throw new Error('unknown fluidtype');
-  }
-};
-exports.getFluidUnit = getFluidUnit;
-
-/***/ }),
-/* 879 */
-/***/ (function(module) {
-
-module.exports = JSON.parse("[{\"_id\":\"CHALLENGE0001\",\"title\":\"Simone VEILLE\",\"title_line_return\":\"Simone\\nVEILLE\",\"description\":\"foobar\",\"target\":15,\"relationships\":{\"quiz\":{\"data\":{\"_id\":\"QUIZ001\",\"_type\":\"com.grandlyon.ecolyo.quiz\"}},\"duel\":{\"data\":{\"_id\":\"DUEL001\",\"_type\":\"com.grandlyon.ecolyo.duel\"}},\"exploration\":{\"data\":[{\"_id\":\"EXPLORATION001\",\"_type\":\"com.grandlyon.ecolyo.exploration\"}]}}},{\"_id\":\"CHALLENGE0002\",\"title\":\"Jean-Jacques RUISSEAU\",\"title_line_return\":\"Jean-Jacques\\nRUISSEAU\",\"description\":\"foobar\",\"target\":15,\"relationships\":{\"quiz\":{\"data\":{\"_id\":\"QUIZ002\",\"_type\":\"com.grandlyon.ecolyo.quiz\"}},\"duel\":{\"data\":{\"_id\":\"DUEL002\",\"_type\":\"com.grandlyon.ecolyo.duel\"}},\"exploration\":{\"data\":[{\"_id\":\"EXPLORATION002\",\"_type\":\"com.grandlyon.ecolyo.exploration\"}]}}},{\"_id\":\"CHALLENGE0003\",\"title\":\"Usain VOLT\",\"title_line_return\":\"Usain\\nVOLT\",\"description\":\"foobar\",\"target\":15,\"relationships\":{\"quiz\":{\"data\":{\"_id\":\"QUIZ003\",\"_type\":\"com.grandlyon.ecolyo.quiz\"}},\"duel\":{\"data\":{\"_id\":\"DUEL003\",\"_type\":\"com.grandlyon.ecolyo.duel\"}},\"exploration\":{\"data\":[{\"_id\":\"EXPLORATION003\",\"_type\":\"com.grandlyon.ecolyo.exploration\"}]}}},{\"_id\":\"CHALLENGE0004\",\"title\":\"Bernard PIV'EAU\",\"title_line_return\":\"Bernard\\nPIV'EAU\",\"description\":\"foobar\",\"target\":15,\"relationships\":{\"quiz\":{\"data\":{\"_id\":\"QUIZ004\",\"_type\":\"com.grandlyon.ecolyo.quiz\"}},\"duel\":{\"data\":{\"_id\":\"DUEL004\",\"_type\":\"com.grandlyon.ecolyo.duel\"}},\"exploration\":{\"data\":[{\"_id\":\"EXPLORATION004\",\"_type\":\"com.grandlyon.ecolyo.exploration\"},{\"_id\":\"EXPLORATION004_0\",\"_type\":\"com.grandlyon.ecolyo.exploration\"}]}}},{\"_id\":\"CHALLENGE0005\",\"title\":\"Maria SHARAPOWATT\",\"title_line_return\":\"Maria\\nSHARAPOWATT\",\"description\":\"foobar\",\"target\":15,\"relationships\":{\"quiz\":{\"data\":{\"_id\":\"QUIZ005\",\"_type\":\"com.grandlyon.ecolyo.quiz\"}},\"duel\":{\"data\":{\"_id\":\"DUEL005\",\"_type\":\"com.grandlyon.ecolyo.duel\"}},\"exploration\":{\"data\":[{\"_id\":\"EXPLORATION005\",\"_type\":\"com.grandlyon.ecolyo.exploration\"}]}}}]");
-
-/***/ }),
-/* 880 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var map = {
-	"./action/chrono-mini.svg": 881,
-	"./action/duration-clock.svg": 882,
-	"./analysis/analysis.svg": 883,
-	"./analysis/no-profile-placeholder.svg": 884,
-	"./challenge/CHALLENGE0001.svg": 885,
-	"./challenge/CHALLENGE0002.svg": 886,
-	"./challenge/CHALLENGE0003.svg": 887,
-	"./challenge/CHALLENGE0004.svg": 888,
-	"./challenge/CHALLENGE0005.svg": 889,
-	"./challenge/challengeLocked.svg": 890,
-	"./challenge/circleChecked.svg": 891,
-	"./challenge/circleUnchecked.svg": 892,
-	"./challenge/star.svg": 893,
-	"./challenge/starFilled.svg": 894,
-	"./challenge/starFinished.svg": 895,
-	"./duel/DUEL001.svg": 896,
-	"./duel/captionAverage.svg": 897,
-	"./duel/captionConsumption.svg": 898,
-	"./duel/captionIncoming.svg": 899,
-	"./duel/circleStar.svg": 900,
-	"./duel/default.svg": 901,
-	"./duel/emptyValue.svg": 902,
-	"./duel/locked.svg": 903,
-	"./duel/star.svg": 904,
-	"./duelResult/CHALLENGE0001-0.svg": 905,
-	"./duelResult/CHALLENGE0001-1.svg": 906,
-	"./duelResult/CHALLENGE0001-2.svg": 907,
-	"./duelResult/CHALLENGE0002-0.svg": 908,
-	"./duelResult/CHALLENGE0002-1.svg": 909,
-	"./duelResult/CHALLENGE0002-2.svg": 910,
-	"./duelResult/CHALLENGE0003-0.svg": 911,
-	"./duelResult/CHALLENGE0003-1.svg": 912,
-	"./duelResult/CHALLENGE0003-2.svg": 913,
-	"./duelResult/CHALLENGE0004-0.svg": 914,
-	"./duelResult/CHALLENGE0004-1.svg": 915,
-	"./duelResult/CHALLENGE0004-2.svg": 916,
-	"./duelResult/CHALLENGE0005-0.svg": 917,
-	"./duelResult/CHALLENGE0005-1.svg": 918,
-	"./duelResult/CHALLENGE0005-2.svg": 919,
-	"./duelResult/challengeWon.svg": 920,
-	"./duelResult/default.svg": 921,
-	"./ecogesture/ECOGESTURE0001.svg": 922,
-	"./ecogesture/ECOGESTURE0002.svg": 923,
-	"./ecogesture/ECOGESTURE0003.svg": 924,
-	"./ecogesture/ECOGESTURE0004.svg": 925,
-	"./ecogesture/ECOGESTURE0005.svg": 926,
-	"./ecogesture/ECOGESTURE0006.svg": 927,
-	"./ecogesture/ECOGESTURE0007.svg": 928,
-	"./ecogesture/ECOGESTURE0008.svg": 929,
-	"./ecogesture/ECOGESTURE0009.svg": 930,
-	"./ecogesture/ECOGESTURE0010.svg": 931,
-	"./ecogesture/ECOGESTURE0011.svg": 932,
-	"./ecogesture/ECOGESTURE0012.svg": 933,
-	"./ecogesture/ECOGESTURE0013.svg": 934,
-	"./ecogesture/ECOGESTURE0014.svg": 935,
-	"./ecogesture/ECOGESTURE0015.svg": 936,
-	"./ecogesture/ECOGESTURE0016.svg": 937,
-	"./ecogesture/ECOGESTURE0017.svg": 938,
-	"./ecogesture/ECOGESTURE0018.svg": 939,
-	"./ecogesture/ECOGESTURE0019.svg": 940,
-	"./ecogesture/ECOGESTURE0020.svg": 941,
-	"./ecogesture/ECOGESTURE0021.svg": 942,
-	"./ecogesture/ECOGESTURE0022.svg": 943,
-	"./ecogesture/ECOGESTURE0023.svg": 944,
-	"./ecogesture/ECOGESTURE0024.svg": 945,
-	"./ecogesture/ECOGESTURE0025.svg": 946,
-	"./ecogesture/ECOGESTURE0026.svg": 947,
-	"./ecogesture/ECOGESTURE0027.svg": 948,
-	"./ecogesture/ECOGESTURE0028.svg": 949,
-	"./ecogesture/ECOGESTURE0029.svg": 950,
-	"./ecogesture/ECOGESTURE0030.svg": 951,
-	"./ecogesture/ECOGESTURE0031.svg": 952,
-	"./ecogesture/ECOGESTURE0032.svg": 953,
-	"./ecogesture/ECOGESTURE0033.svg": 954,
-	"./ecogesture/ECOGESTURE0034.svg": 955,
-	"./ecogesture/ECOGESTURE0035.svg": 956,
-	"./ecogesture/ECOGESTURE0036.svg": 957,
-	"./ecogesture/ECOGESTURE0037.svg": 958,
-	"./ecogesture/ECOGESTURE0038.svg": 959,
-	"./ecogesture/ECOGESTURE0039.svg": 960,
-	"./ecogesture/ECOGESTURE0040.svg": 961,
-	"./ecogesture/ECOGESTURE0041.svg": 962,
-	"./ecogesture/ECOGESTURE0042.svg": 963,
-	"./ecogesture/ECOGESTURE0043.svg": 964,
-	"./ecogesture/ECOGESTURE0044.svg": 965,
-	"./ecogesture/ECOGESTURE0045.svg": 966,
-	"./ecogesture/ECOGESTURE0046.svg": 967,
-	"./ecogesture/ECOGESTURE0047.svg": 968,
-	"./ecogesture/ECOGESTURE0048.svg": 969,
-	"./ecogesture/ECOGESTURE0049.svg": 970,
-	"./ecogesture/ECOGESTURE0050.svg": 971,
-	"./ecogesture/ECOGESTURE0051.svg": 972,
-	"./ecogesture/ECOGESTURE0052.svg": 973,
-	"./ecogesture/ECOGESTURE0053.svg": 974,
-	"./ecogesture/ECOGESTURE0054.svg": 975,
-	"./ecogesture/ECOGESTURE0055.svg": 976,
-	"./ecogesture/ECOGESTURE0056.svg": 977,
-	"./ecogesture/ECOGESTURE0057.svg": 978,
-	"./ecogesture/ECOGESTURE0058.svg": 979,
-	"./ecogesture/ECOGESTURE0059.svg": 980,
-	"./ecogesture/ECOGESTURE0060.svg": 981,
-	"./ecogesture/ECOGESTURE0061.svg": 982,
-	"./ecogesture/ECOGESTURE0062.svg": 983,
-	"./ecogesture/ECOGESTURE0063.svg": 984,
-	"./ecogesture/ECOGESTURE0064.svg": 985,
-	"./ecogesture/ECOGESTURE0065.svg": 986,
-	"./ecogesture/ECOGESTURE0066.svg": 987,
-	"./ecogesture/ECOGESTURE0067.svg": 988,
-	"./ecogesture/ECOGESTURE0068.svg": 989,
-	"./ecogesture/ECOGESTURE0069.svg": 990,
-	"./ecogesture/ECOGESTURE0070.svg": 991,
-	"./ecogesture/ECOGESTURE0071.svg": 992,
-	"./ecogesture/ECOGESTURE0072.svg": 993,
-	"./ecogesture/ECOGESTURE0073.svg": 994,
-	"./ecogesture/ECOGESTURE0074.svg": 995,
-	"./ecogesture/ECOGESTURE0075.svg": 996,
-	"./ecogesture/ECOGESTURE0076.svg": 997,
-	"./ecogesture/ECOGESTURE0077.svg": 998,
-	"./ecogesture/ECOGESTURE0078.svg": 999,
-	"./ecogesture/ECOGESTURE0079.svg": 1000,
-	"./ecogesture/ECOGESTURE0080.svg": 1001,
-	"./ecogesture/ECOGESTURE0081.svg": 1002,
-	"./ecogesture/ECOGESTURE0082.svg": 1003,
-	"./ecogesture/ECOGESTURE0083.svg": 1004,
-	"./ecogesture/ECOGESTURE0084.svg": 1005,
-	"./ecogesture/ECOGESTURE0085.svg": 1006,
-	"./ecogesture/ECOGESTURE0086.svg": 1007,
-	"./ecogesture/bullhorn.svg": 1008,
-	"./ecogesture/default.svg": 1009,
-	"./ecogesture/event.svg": 1010,
-	"./equipments/AIR_CONDITIONING.svg": 1011,
-	"./equipments/BOILER.svg": 1012,
-	"./equipments/COMPUTER.svg": 1013,
-	"./equipments/COOKING_PLATES.svg": 1014,
-	"./equipments/CURTAIN.svg": 1015,
-	"./equipments/DISHWASHER.svg": 1016,
-	"./equipments/DRYER.svg": 1017,
-	"./equipments/FAN.svg": 1018,
-	"./equipments/FREEZER.svg": 1019,
-	"./equipments/HYDRAULIC_HEATING.svg": 1020,
-	"./equipments/INTERNET_BOX.svg": 1021,
-	"./equipments/MICROWAVE.svg": 1022,
-	"./equipments/OUTSIDE.svg": 1023,
-	"./equipments/REFREGIRATOR.svg": 1024,
-	"./equipments/VENTILATION.svg": 1025,
-	"./equipments/WASHING_MACHINE.svg": 1026,
-	"./exploration/shield.svg": 1027,
-	"./feedback/bug-off.svg": 1028,
-	"./feedback/bug-on.svg": 1029,
-	"./feedback/idea-off.svg": 1030,
-	"./feedback/idea-on.svg": 1031,
-	"./feedback/other-off.svg": 1032,
-	"./feedback/other-on.svg": 1033,
-	"./gcu/gcu-arrow.svg": 1034,
-	"./indicator/error.svg": 1035,
-	"./indicator/green.svg": 1036,
-	"./indicator/grey.svg": 1037,
-	"./indicator/nodata.svg": 1038,
-	"./indicator/red.svg": 1039,
-	"./onboarding/browser_egl.svg": 1040,
-	"./onboarding/egl.svg": 1041,
-	"./onboarding/electricity_bill.svg": 1042,
-	"./onboarding/gas_bill.svg": 1043,
-	"./onboarding/grdf-mail.svg": 1044,
-	"./onboarding/partners_consent.svg": 1045,
-	"./onboarding/water_bill.svg": 1046,
-	"./profileType/finish.svg": 1047,
-	"./quiz/questionMark.svg": 1048,
-	"./quiz/quizStars.svg": 1049,
-	"./quiz/starResult.svg": 1050,
-	"./tuto/arrowLeft.svg": 1051,
-	"./tuto/arrowRight.svg": 1052,
-	"./tuto/tuto1.svg": 1053,
-	"./tuto/tuto2.svg": 1054,
-	"./tuto/tuto3.svg": 1055
-};
-
-
-function webpackAsyncContext(req) {
-	return webpackAsyncContextResolve(req).then(function(id) {
-		return __webpack_require__.t(id, 7);
-	});
-}
-function webpackAsyncContextResolve(req) {
-	// Here Promise.resolve().then() is used instead of new Promise() to prevent
-	// uncaught exception popping up in devtools
-	return Promise.resolve().then(function() {
-		if(!__webpack_require__.o(map, req)) {
-			var e = new Error("Cannot find module '" + req + "'");
-			e.code = 'MODULE_NOT_FOUND';
-			throw e;
-		}
-		return map[req];
-	});
-}
-webpackAsyncContext.keys = function webpackAsyncContextKeys() {
-	return Object.keys(map);
-};
-webpackAsyncContext.resolve = webpackAsyncContextResolve;
-webpackAsyncContext.id = 880;
-module.exports = webpackAsyncContext;
-
-/***/ }),
-/* 881 */
-/***/ (function(module, exports) {
-
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"77\" height=\"85\" viewBox=\"0 0 77 85\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g filter=\"url(#filter0_d)\">\n| <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M33.8738 2C32.5909 2 31.5509 3.03999 31.5509 4.32289C31.5509 5.60579 32.5909 6.64578 33.8738 6.64578C34.6068 6.64578 35.2011 7.24001 35.2011 7.97303V8.61444C35.2011 9.63533 34.4183 10.4803 33.4079 10.6262C17.9088 12.8632 6 26.2003 6 42.3188C6 60.0045 20.3371 74.3416 38.0227 74.3416C55.7084 74.3416 70.0455 60.0045 70.0455 42.3188C70.0455 34.1551 66.9905 26.7048 61.9615 21.0489C61.1189 20.1012 61.0229 18.6788 61.8138 17.6876C62.665 16.6208 62.4902 15.0659 61.4234 14.2147L60.8213 13.7343C59.7852 12.9077 58.2752 13.0774 57.4486 14.1134C56.6651 15.0955 55.2614 15.2981 54.1772 14.6635C50.6954 12.6252 46.7943 11.2257 42.6346 10.6257C41.6242 10.48 40.8424 9.63515 40.8424 8.61428V8.30512C40.8424 7.38869 41.5853 6.64578 42.5017 6.64578C43.7846 6.64578 44.8246 5.60579 44.8246 4.32289C44.8246 3.03999 43.7846 2 42.5017 2H33.8738Z\" fill=\"#7B7B7B\"/>");
-
-/***/ }),
-/* 882 */
-/***/ (function(module, exports) {
-
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"194\" height=\"214\" viewBox=\"0 0 194 214\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g filter=\"url(#filter0_d)\">\n| <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M86.326 12C83.1007 12 80.4861 14.6146 80.4861 17.8399C80.4861 21.0651 83.1007 23.6797 86.326 23.6797C88.169 23.6797 89.663 25.1738 89.663 27.0168V29.4985C89.663 31.5729 88.0743 33.2923 86.0182 33.5663C46.6314 38.815 16.2477 72.5409 16.2477 113.363C16.2477 157.826 52.2917 193.87 96.7543 193.87C141.217 193.87 177.261 157.826 177.261 113.363C177.261 92.1211 169.034 72.8005 155.592 58.4138C154.191 56.914 154.041 54.6082 155.321 53.0038L157.949 49.7097C159.327 47.9829 159.044 45.4661 157.317 44.0883L152.485 40.2323C150.758 38.8545 148.241 39.1374 146.863 40.8643L144.417 43.9304C143.111 45.5672 140.769 45.9103 138.987 44.8102C129.595 39.0118 118.921 35.0895 107.49 33.5662C105.433 33.2922 103.846 31.5729 103.846 29.4985V27.6797C103.846 25.4706 105.636 23.6797 107.846 23.6797H108.017C111.242 23.6797 113.857 21.0651 113.857 17.8399C113.857 14.6146 111.242 12 108.017 12H86.326Z\" fill=\"#7B7B7B\"/>");
-
-/***/ }),
-/* 883 */
-/***/ (function(module, exports) {
-
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <rect x=\"21\" y=\"11.2078\" width=\"3\" height=\"26\" fill=\"#E0E0E0\"/>\n| <rect x=\"21\" y=\"11\" width=\"2\" height=\"26\" fill=\"#A0A0A0\"/>");
-
-/***/ }),
-/* 884 */
-/***/ (function(module, exports) {
-
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"319\" height=\"160\" viewBox=\"0 0 319 160\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g opacity=\"0.55\">\n| <path d=\"M48.7305 14.54L42.8905 29H40.4605L34.6205 14.54H36.7805C37.0138 14.54 37.2038 14.5967 37.3505 14.71C37.4971 14.8233 37.6071 14.97 37.6805 15.15L41.0905 23.97C41.2038 24.2567 41.3105 24.5733 41.4105 24.92C41.5171 25.26 41.6171 25.6167 41.7105 25.99C41.7905 25.6167 41.8771 25.26 41.9705 24.92C42.0638 24.5733 42.1671 24.2567 42.2805 23.97L45.6705 15.15C45.7238 14.9967 45.8271 14.8567 45.9805 14.73C46.1405 14.6033 46.3338 14.54 46.5605 14.54H48.7305ZM52.7952 18.58C53.5552 18.58 54.2452 18.7033 54.8652 18.95C55.4918 19.1967 56.0252 19.5467 56.4652 20C56.9118 20.4533 57.2552 21.0067 57.4952 21.66C57.7352 22.3133 57.8552 23.0433 57.8552 23.85C57.8552 24.6633 57.7352 25.3967 57.4952 26.05C57.2552 26.7033 56.9118 27.26 56.4652 27.72C56.0252 28.18 55.4918 28.5333 54.8652 28.78C54.2452 29.0267 53.5552 29.15 52.7952 29.15C52.0285 29.15 51.3318 29.0267 50.7052 28.78C50.0785 28.5333 49.5418 28.18 49.0952 27.72C48.6552 27.26 48.3118 26.7033 48.0652 26.05C47.8252 25.3967 47.7052 24.6633 47.7052 23.85C47.7052 23.0433 47.8252 22.3133 48.0652 21.66C48.3118 21.0067 48.6552 20.4533 49.0952 20C49.5418 19.5467 50.0785 19.1967 50.7052 18.95C51.3318 18.7033 52.0285 18.58 52.7952 18.58ZM52.7952 27.25C53.6485 27.25 54.2785 26.9633 54.6852 26.39C55.0985 25.8167 55.3052 24.9767 55.3052 23.87C55.3052 22.7633 55.0985 21.92 54.6852 21.34C54.2785 20.76 53.6485 20.47 52.7952 20.47C51.9285 20.47 51.2852 20.7633 50.8652 21.35C50.4518 21.93 50.2452 22.77 50.2452 23.87C50.2452 24.97 50.4518 25.81 50.8652 26.39C51.2852 26.9633 51.9285 27.25 52.7952 27.25ZM62.9642 29.16C62.0709 29.16 61.3842 28.91 60.9042 28.41C60.4309 27.9033 60.1942 27.2067 60.1942 26.32V20.59H59.1442C59.0109 20.59 58.8976 20.5467 58.8042 20.46C58.7109 20.3733 58.6642 20.2433 58.6642 20.07V19.09L60.3142 18.82L60.8342 16.02C60.8676 15.8867 60.9309 15.7833 61.0242 15.71C61.1176 15.6367 61.2376 15.6 61.3842 15.6H62.6642V18.83H65.4042V20.59H62.6642V26.15C62.6642 26.47 62.7409 26.72 62.8942 26.9C63.0542 27.08 63.2709 27.17 63.5442 27.17C63.6976 27.17 63.8242 27.1533 63.9242 27.12C64.0309 27.08 64.1209 27.04 64.1942 27C64.2742 26.96 64.3442 26.9233 64.4042 26.89C64.4642 26.85 64.5242 26.83 64.5842 26.83C64.6576 26.83 64.7176 26.85 64.7642 26.89C64.8109 26.9233 64.8609 26.9767 64.9142 27.05L65.6542 28.25C65.2942 28.55 64.8809 28.7767 64.4142 28.93C63.9476 29.0833 63.4642 29.16 62.9642 29.16ZM69.3156 20.52C69.6356 19.9067 70.0156 19.4267 70.4556 19.08C70.8956 18.7267 71.4156 18.55 72.0156 18.55C72.489 18.55 72.869 18.6533 73.1556 18.86L72.9956 20.71C72.9623 20.83 72.9123 20.9167 72.8456 20.97C72.7856 21.0167 72.7023 21.04 72.5956 21.04C72.4956 21.04 72.3456 21.0233 72.1456 20.99C71.9523 20.9567 71.7623 20.94 71.5756 20.94C71.3023 20.94 71.059 20.98 70.8456 21.06C70.6323 21.14 70.439 21.2567 70.2656 21.41C70.099 21.5567 69.949 21.7367 69.8156 21.95C69.689 22.1633 69.569 22.4067 69.4556 22.68V29H66.9856V18.74H68.4356C68.689 18.74 68.8656 18.7867 68.9656 18.88C69.0656 18.9667 69.1323 19.1267 69.1656 19.36L69.3156 20.52ZM80.7636 22.69C80.7636 22.37 80.7169 22.07 80.6236 21.79C80.5369 21.5033 80.4036 21.2533 80.2236 21.04C80.0436 20.8267 79.8136 20.66 79.5336 20.54C79.2603 20.4133 78.9403 20.35 78.5736 20.35C77.8603 20.35 77.2969 20.5533 76.8836 20.96C76.4769 21.3667 76.2169 21.9433 76.1036 22.69H80.7636ZM76.0536 24.18C76.0936 24.7067 76.1869 25.1633 76.3336 25.55C76.4803 25.93 76.6736 26.2467 76.9136 26.5C77.1536 26.7467 77.4369 26.9333 77.7636 27.06C78.0969 27.18 78.4636 27.24 78.8636 27.24C79.2636 27.24 79.6069 27.1933 79.8936 27.1C80.1869 27.0067 80.4403 26.9033 80.6536 26.79C80.8736 26.6767 81.0636 26.5733 81.2236 26.48C81.3903 26.3867 81.5503 26.34 81.7036 26.34C81.9103 26.34 82.0636 26.4167 82.1636 26.57L82.8736 27.47C82.6003 27.79 82.2936 28.06 81.9536 28.28C81.6136 28.4933 81.2569 28.6667 80.8836 28.8C80.5169 28.9267 80.1403 29.0167 79.7536 29.07C79.3736 29.1233 79.0036 29.15 78.6436 29.15C77.9303 29.15 77.2669 29.0333 76.6536 28.8C76.0403 28.56 75.5069 28.21 75.0536 27.75C74.6003 27.2833 74.2436 26.71 73.9836 26.03C73.7236 25.3433 73.5936 24.55 73.5936 23.65C73.5936 22.95 73.7069 22.2933 73.9336 21.68C74.1603 21.06 74.4836 20.5233 74.9036 20.07C75.3303 19.61 75.8469 19.2467 76.4536 18.98C77.0669 18.7133 77.7569 18.58 78.5236 18.58C79.1703 18.58 79.7669 18.6833 80.3136 18.89C80.8603 19.0967 81.3303 19.4 81.7236 19.8C82.1169 20.1933 82.4236 20.68 82.6436 21.26C82.8703 21.8333 82.9836 22.49 82.9836 23.23C82.9836 23.6033 82.9436 23.8567 82.8636 23.99C82.7836 24.1167 82.6303 24.18 82.4036 24.18H76.0536ZM97.0505 20.91C96.9771 21.0033 96.9038 21.0767 96.8305 21.13C96.7638 21.1833 96.6638 21.21 96.5305 21.21C96.4038 21.21 96.2805 21.1733 96.1605 21.1C96.0405 21.02 95.8971 20.9333 95.7305 20.84C95.5638 20.74 95.3638 20.6533 95.1305 20.58C94.9038 20.5 94.6205 20.46 94.2805 20.46C93.8471 20.46 93.4671 20.54 93.1405 20.7C92.8138 20.8533 92.5405 21.0767 92.3205 21.37C92.1071 21.6633 91.9471 22.02 91.8405 22.44C91.7338 22.8533 91.6805 23.3233 91.6805 23.85C91.6805 24.3967 91.7371 24.8833 91.8505 25.31C91.9705 25.7367 92.1405 26.0967 92.3605 26.39C92.5805 26.6767 92.8471 26.8967 93.1605 27.05C93.4738 27.1967 93.8271 27.27 94.2205 27.27C94.6138 27.27 94.9305 27.2233 95.1705 27.13C95.4171 27.03 95.6238 26.9233 95.7905 26.81C95.9571 26.69 96.1005 26.5833 96.2205 26.49C96.3471 26.39 96.4871 26.34 96.6405 26.34C96.8405 26.34 96.9905 26.4167 97.0905 26.57L97.8005 27.47C97.5271 27.79 97.2305 28.06 96.9105 28.28C96.5905 28.4933 96.2571 28.6667 95.9105 28.8C95.5705 28.9267 95.2171 29.0167 94.8505 29.07C94.4905 29.1233 94.1305 29.15 93.7705 29.15C93.1371 29.15 92.5405 29.0333 91.9805 28.8C91.4205 28.56 90.9305 28.2133 90.5105 27.76C90.0905 27.3067 89.7571 26.7533 89.5105 26.1C89.2705 25.44 89.1505 24.69 89.1505 23.85C89.1505 23.0967 89.2571 22.4 89.4705 21.76C89.6905 21.1133 90.0105 20.5567 90.4305 20.09C90.8505 19.6167 91.3705 19.2467 91.9905 18.98C92.6105 18.7133 93.3238 18.58 94.1305 18.58C94.8971 18.58 95.5671 18.7033 96.1405 18.95C96.7205 19.1967 97.2405 19.55 97.7005 20.01L97.0505 20.91ZM103.713 18.58C104.473 18.58 105.163 18.7033 105.783 18.95C106.41 19.1967 106.943 19.5467 107.383 20C107.83 20.4533 108.173 21.0067 108.413 21.66C108.653 22.3133 108.773 23.0433 108.773 23.85C108.773 24.6633 108.653 25.3967 108.413 26.05C108.173 26.7033 107.83 27.26 107.383 27.72C106.943 28.18 106.41 28.5333 105.783 28.78C105.163 29.0267 104.473 29.15 103.713 29.15C102.946 29.15 102.25 29.0267 101.623 28.78C100.996 28.5333 100.46 28.18 100.013 27.72C99.5731 27.26 99.2298 26.7033 98.9831 26.05C98.7431 25.3967 98.6231 24.6633 98.6231 23.85C98.6231 23.0433 98.7431 22.3133 98.9831 21.66C99.2298 21.0067 99.5731 20.4533 100.013 20C100.46 19.5467 100.996 19.1967 101.623 18.95C102.25 18.7033 102.946 18.58 103.713 18.58ZM103.713 27.25C104.566 27.25 105.196 26.9633 105.603 26.39C106.016 25.8167 106.223 24.9767 106.223 23.87C106.223 22.7633 106.016 21.92 105.603 21.34C105.196 20.76 104.566 20.47 103.713 20.47C102.846 20.47 102.203 20.7633 101.783 21.35C101.37 21.93 101.163 22.77 101.163 23.87C101.163 24.97 101.37 25.81 101.783 26.39C102.203 26.9633 102.846 27.25 103.713 27.25ZM112.968 20C113.174 19.7933 113.391 19.6033 113.618 19.43C113.851 19.25 114.094 19.1 114.348 18.98C114.608 18.8533 114.884 18.7567 115.178 18.69C115.471 18.6167 115.791 18.58 116.138 18.58C116.698 18.58 117.194 18.6767 117.628 18.87C118.061 19.0567 118.421 19.3233 118.708 19.67C119.001 20.01 119.221 20.42 119.368 20.9C119.521 21.3733 119.598 21.8967 119.598 22.47V29H117.128V22.47C117.128 21.8433 116.984 21.36 116.698 21.02C116.411 20.6733 115.974 20.5 115.388 20.5C114.961 20.5 114.561 20.5967 114.188 20.79C113.814 20.9833 113.461 21.2467 113.128 21.58V29H110.658V18.74H112.168C112.488 18.74 112.698 18.89 112.798 19.19L112.968 20ZM128.207 20.74C128.14 20.8467 128.07 20.9233 127.997 20.97C127.923 21.01 127.83 21.03 127.717 21.03C127.597 21.03 127.467 20.9967 127.327 20.93C127.193 20.8633 127.037 20.79 126.857 20.71C126.677 20.6233 126.47 20.5467 126.237 20.48C126.01 20.4133 125.74 20.38 125.427 20.38C124.94 20.38 124.557 20.4833 124.277 20.69C124.003 20.8967 123.867 21.1667 123.867 21.5C123.867 21.72 123.937 21.9067 124.077 22.06C124.223 22.2067 124.413 22.3367 124.647 22.45C124.887 22.5633 125.157 22.6667 125.457 22.76C125.757 22.8467 126.06 22.9433 126.367 23.05C126.68 23.1567 126.987 23.28 127.287 23.42C127.587 23.5533 127.853 23.7267 128.087 23.94C128.327 24.1467 128.517 24.3967 128.657 24.69C128.803 24.9833 128.877 25.3367 128.877 25.75C128.877 26.2433 128.787 26.7 128.607 27.12C128.433 27.5333 128.173 27.8933 127.827 28.2C127.48 28.5 127.05 28.7367 126.537 28.91C126.03 29.0767 125.443 29.16 124.777 29.16C124.423 29.16 124.077 29.1267 123.737 29.06C123.403 29 123.08 28.9133 122.767 28.8C122.46 28.6867 122.173 28.5533 121.907 28.4C121.647 28.2467 121.417 28.08 121.217 27.9L121.787 26.96C121.86 26.8467 121.947 26.76 122.047 26.7C122.147 26.64 122.273 26.61 122.427 26.61C122.58 26.61 122.723 26.6533 122.857 26.74C122.997 26.8267 123.157 26.92 123.337 27.02C123.517 27.12 123.727 27.2133 123.967 27.3C124.213 27.3867 124.523 27.43 124.897 27.43C125.19 27.43 125.44 27.3967 125.647 27.33C125.86 27.2567 126.033 27.1633 126.167 27.05C126.307 26.9367 126.407 26.8067 126.467 26.66C126.533 26.5067 126.567 26.35 126.567 26.19C126.567 25.95 126.493 25.7533 126.347 25.6C126.207 25.4467 126.017 25.3133 125.777 25.2C125.543 25.0867 125.273 24.9867 124.967 24.9C124.667 24.8067 124.357 24.7067 124.037 24.6C123.723 24.4933 123.413 24.37 123.107 24.23C122.807 24.0833 122.537 23.9 122.297 23.68C122.063 23.46 121.873 23.19 121.727 22.87C121.587 22.55 121.517 22.1633 121.517 21.71C121.517 21.29 121.6 20.89 121.767 20.51C121.933 20.13 122.177 19.8 122.497 19.52C122.823 19.2333 123.227 19.0067 123.707 18.84C124.193 18.6667 124.753 18.58 125.387 18.58C126.093 18.58 126.737 18.6967 127.317 18.93C127.897 19.1633 128.38 19.47 128.767 19.85L128.207 20.74ZM135.276 18.58C136.036 18.58 136.726 18.7033 137.346 18.95C137.972 19.1967 138.506 19.5467 138.946 20C139.392 20.4533 139.736 21.0067 139.976 21.66C140.216 22.3133 140.336 23.0433 140.336 23.85C140.336 24.6633 140.216 25.3967 139.976 26.05C139.736 26.7033 139.392 27.26 138.946 27.72C138.506 28.18 137.972 28.5333 137.346 28.78C136.726 29.0267 136.036 29.15 135.276 29.15C134.509 29.15 133.812 29.0267 133.186 28.78C132.559 28.5333 132.022 28.18 131.576 27.72C131.136 27.26 130.792 26.7033 130.546 26.05C130.306 25.3967 130.186 24.6633 130.186 23.85C130.186 23.0433 130.306 22.3133 130.546 21.66C130.792 21.0067 131.136 20.4533 131.576 20C132.022 19.5467 132.559 19.1967 133.186 18.95C133.812 18.7033 134.509 18.58 135.276 18.58ZM135.276 27.25C136.129 27.25 136.759 26.9633 137.166 26.39C137.579 25.8167 137.786 24.9767 137.786 23.87C137.786 22.7633 137.579 21.92 137.166 21.34C136.759 20.76 136.129 20.47 135.276 20.47C134.409 20.47 133.766 20.7633 133.346 21.35C132.932 21.93 132.726 22.77 132.726 23.87C132.726 24.97 132.932 25.81 133.346 26.39C133.766 26.9633 134.409 27.25 135.276 27.25Z\" fill=\"#E3B82A\"/>");
-
-/***/ }),
-/* 885 */
-/***/ (function(module, exports) {
-
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"180\" height=\"181\" viewBox=\"0 0 180 181\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"90.2055\" cy=\"92.249\" r=\"82.9511\" fill=\"black\"/>\n| <path d=\"M63.1663 126.988C66.0578 124.303 82.1673 118.727 91.6677 117.9L114.18 126.988C115.557 128.021 118.724 130.458 120.376 131.945C122.028 133.432 123.13 135.18 123.474 135.869L161.5 132L143.319 160.82L89.9144 175.874L41.348 160.82L37.9692 156.935H45.4045C47.6075 155.971 52.2614 153.672 53.2527 152.185C54.4919 150.326 56.5571 144.75 56.5571 143.097C56.5571 141.445 56.3506 137.108 56.5571 133.597C56.7636 130.086 60.2747 129.673 63.1663 126.988Z\" fill=\"#0F3A59\"/>");
-
-/***/ }),
-/* 886 */
-/***/ (function(module, exports) {
-
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"180\" height=\"181\" viewBox=\"0 0 180 181\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"90.2055\" cy=\"92.249\" r=\"82.9511\" fill=\"black\"/>\n| <circle cx=\"90\" cy=\"91\" r=\"87\" stroke=\"#D6D6D6\" stroke-width=\"6\"/>");
-
-/***/ }),
-/* 887 */
-/***/ (function(module, exports) {
-
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"180\" height=\"181\" viewBox=\"0 0 180 181\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M173.157 92.249C173.157 138.062 136.018 175.2 90.2055 175.2C44.3929 175.2 7.25439 138.062 7.25439 92.249C7.25439 46.4363 44.3929 9.29785 90.2055 9.29785C136.018 9.29785 173.157 46.4363 173.157 92.249Z\" fill=\"url(#paint0_radial)\"/>\n| <circle cx=\"90\" cy=\"91\" r=\"87\" stroke=\"#D6D6D6\" stroke-width=\"6\"/>");
-
-/***/ }),
-/* 888 */
-/***/ (function(module, exports) {
-
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"180\" height=\"181\" viewBox=\"0 0 180 181\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"88.7134\" cy=\"88.8584\" r=\"85.2046\" transform=\"rotate(-4.70126 88.7134 88.8584)\" fill=\"#FDC087\"/>\n| <path opacity=\"0.55\" d=\"M111.971 120.205C113.625 119.572 117.739 119.305 120.967 123.303C125.002 128.301 132.858 140.873 133.949 143.768C134.822 146.084 135.169 153.812 135.417 158.553L128.459 163.325C127.124 157.466 124.759 147.637 123.097 144.021C121.464 140.468 118.458 138.236 117.088 137.522C117.063 137.511 117.04 137.499 117.016 137.486C117.039 137.497 117.063 137.51 117.088 137.522C117.757 137.838 118.694 137.51 117.567 133.816C116.108 129.033 113.111 126.294 112.812 125.253C112.513 124.211 109.375 122.338 110.117 120.997C110.711 119.925 111.601 120.023 111.971 120.205Z\" fill=\"#945317\"/>");
-
-/***/ }),
-/* 889 */
-/***/ (function(module, exports) {
-
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"180\" height=\"181\" viewBox=\"0 0 180 181\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"90.2055\" cy=\"91.249\" r=\"82.9511\" fill=\"black\"/>\n| <path d=\"M67.0241 122.64C69.5824 121.698 72.1298 120.677 73.0837 120.284L83.3508 123.314L85.3706 129.541L73.4201 143.175C71.7369 144.185 68.0003 146.238 66.5191 146.373C64.6676 146.541 52.0439 146.205 38.2419 144.522C24.4399 142.839 25.4497 141.66 24.9447 140.482C24.4398 139.304 25.6178 119.611 25.7861 117.423C25.9545 115.235 32.5188 92.1751 32.8555 90.3237C33.1921 88.4722 32.1823 86.1157 32.0139 85.2742C31.8456 84.4326 31.6774 80.7296 32.014 79.2148C32.2833 78.0029 32.7995 76.3534 33.0239 75.6801C32.9678 75.1191 32.9229 73.795 33.1922 72.987C33.4615 72.1791 34.7632 72.6504 35.3805 72.987L37.0637 71.1356C37.4564 70.7428 38.4438 69.8563 39.2517 69.4524C40.0596 69.0484 40.5983 69.0596 40.7667 69.1158L40.9351 67.2643L42.9549 67.6009C43.1793 66.9837 43.9311 65.783 45.143 65.9177C46.3549 66.0523 47.1067 66.5348 47.3311 66.7592C47.8922 67.9936 49.1826 71.1691 49.8559 73.9968C50.6975 77.5315 45.9846 87.7988 44.4697 92.0068C42.9549 96.2147 42.4499 103.789 42.2816 106.482C42.1133 109.175 42.4499 118.937 42.6182 120.957C42.7529 122.573 43.572 127.578 43.9646 129.878C45.1429 129.429 48.0044 128.363 50.0242 127.69C52.5489 126.848 63.8262 123.819 67.0241 122.64Z\" fill=\"#ECBC73\"/>");
-
-/***/ }),
-/* 890 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"178\" height=\"178\" viewBox=\"0 0 178 178\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"89\" cy=\"89\" r=\"89\" fill=\"#1B1C22\"/>\n| <mask id=\"mask0\" mask-type=\"alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"178\" height=\"178\">");
-
-/***/ }),
-/* 891 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M27.4787 11.8277C28.2571 14.7329 28.0042 17.818 26.7629 20.5576C25.5216 23.2971 23.3689 25.5215 20.6714 26.8517C17.974 28.182 14.8987 28.5357 11.9697 27.8528C9.04064 27.1698 6.43901 25.4924 4.60809 23.1063C2.77717 20.7202 1.83024 17.773 1.92864 14.767C2.02705 11.761 3.1647 8.88214 5.14776 6.62089C7.13082 4.35965 9.83659 2.85595 12.804 2.36603C15.7715 1.8761 18.817 2.43025 21.4217 3.93406\" stroke=\"#A0A0A0\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n| <path d=\"M8.14648 14.4286L13.8132 20L25.1465 7\" stroke=\"url(#paint0_linear)\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>");
+exports.checkMeasureParams = checkMeasureParams;
 
-/***/ }),
-/* 892 */
-/***/ (function(module, exports) {
+var sendMeasureToDACC = /*#__PURE__*/function () {
+  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client, remoteDoctype, measure) {
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            _context.prev = 0;
+            checkMeasureParams(measure);
+            _context.next = 4;
+            return client.getStackClient().fetchJSON('POST', "/remote/".concat(remoteDoctype), {
+              data: JSON.stringify(measure),
+              path: 'measure'
+            });
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"15\" cy=\"15\" r=\"12\" stroke=\"#A0A0A0\" stroke-width=\"2\"/>\n| </svg>");
+          case 4:
+            _context.next = 10;
+            break;
 
-/***/ }),
-/* 893 */
-/***/ (function(module, exports) {
+          case 6:
+            _context.prev = 6;
+            _context.t0 = _context["catch"](0);
+            (0, _cozyLogger.default)('error', "Error while sending measure to remote doctype: ".concat(_context.t0.message));
+            throw _context.t0;
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g filter=\"url(#filter0_d)\">\n| <path d=\"M15.4829 5.28193L10.6864 4.59758L8.54222 0.330127C8.48365 0.213287 8.38731 0.118702 8.26829 0.0612089C7.96981 -0.0834504 7.6071 0.037099 7.45786 0.330127L5.3137 4.59758L0.517213 5.28193C0.384974 5.30047 0.26407 5.36167 0.171503 5.45441C0.0595945 5.56733 -0.0020722 5.71924 5.31712e-05 5.87678C0.00217854 6.03431 0.0679221 6.18457 0.182838 6.29454L3.65316 9.61614L2.83328 14.3064C2.81405 14.4156 2.82635 14.5278 2.86878 14.6304C2.91121 14.733 2.98207 14.8218 3.07333 14.8869C3.16459 14.952 3.27259 14.9906 3.38509 14.9985C3.4976 15.0064 3.6101 14.9831 3.70983 14.9314L8.00004 12.717L12.2902 14.9314C12.4074 14.9926 12.5434 15.013 12.6737 14.9908C13.0024 14.9352 13.2235 14.6291 13.1668 14.3064L12.3469 9.61614L15.8172 6.29454C15.9117 6.20367 15.974 6.08497 15.9929 5.95515C16.0439 5.63059 15.8135 5.33015 15.4829 5.28193Z\" fill=\"#121212\"/>");
+          case 10:
+          case "end":
+            return _context.stop();
+        }
+      }
+    }, _callee, null, [[0, 6]]);
+  }));
 
-/***/ }),
-/* 894 */
-/***/ (function(module, exports) {
+  return function sendMeasureToDACC(_x, _x2, _x3) {
+    return _ref.apply(this, arguments);
+  };
+}();
+/**
+ * Build parameters to request DACC aggregate
+ *
+ *
+ * @typedef Params - The unformatted DACC aggregate params
+ * @property {string} [measureName] - The measure name
+ * @property {string} [startDate]   - The measure start date
+ * @property {string} [endDate]     - The measure end date
+ *
+ * @param {Params} params - The unformatted DACC aggregate params
+ * @returns {import("../types").DACCAggregatesParams}
+ */
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"16\" height=\"15\" viewBox=\"0 0 16 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M15.4829 5.28193L10.6864 4.59758L8.54222 0.330127C8.48365 0.213287 8.38731 0.118702 8.26829 0.0612089C7.96981 -0.0834504 7.6071 0.037099 7.45786 0.330127L5.3137 4.59758L0.517213 5.28193C0.384974 5.30047 0.26407 5.36167 0.171503 5.45441C0.0595945 5.56733 -0.0020722 5.71924 5.31712e-05 5.87678C0.00217854 6.03431 0.0679221 6.18457 0.182838 6.29454L3.65316 9.61614L2.83328 14.3064C2.81405 14.4156 2.82635 14.5278 2.86878 14.6304C2.91121 14.733 2.98207 14.8218 3.07333 14.8869C3.16459 14.952 3.27259 14.9906 3.38509 14.9985C3.4976 15.0064 3.6101 14.9831 3.70983 14.9314L8.00004 12.717L12.2902 14.9314C12.4074 14.9926 12.5434 15.013 12.6737 14.9908C13.0024 14.9352 13.2235 14.6291 13.1668 14.3064L12.3469 9.61614L15.8172 6.29454C15.9117 6.20367 15.974 6.08497 15.9929 5.95515C16.0439 5.63059 15.8135 5.33015 15.4829 5.28193Z\" fill=\"url(#paint0_linear)\"/>\n| <defs>");
 
-/***/ }),
-/* 895 */
-/***/ (function(module, exports) {
+exports.sendMeasureToDACC = sendMeasureToDACC;
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"16\" height=\"15\" viewBox=\"0 0 16 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M15.4829 5.28193L10.6864 4.59758L8.54222 0.330127C8.48365 0.213287 8.38731 0.118702 8.26829 0.0612089C7.96981 -0.0834504 7.6071 0.037099 7.45786 0.330127L5.3137 4.59758L0.517213 5.28193C0.384974 5.30047 0.26407 5.36167 0.171503 5.45441C0.0595945 5.56733 -0.0020722 5.71924 5.31712e-05 5.87678C0.00217854 6.03431 0.0679221 6.18457 0.182838 6.29454L3.65316 9.61614L2.83328 14.3064C2.81405 14.4156 2.82635 14.5278 2.86878 14.6304C2.91121 14.733 2.98207 14.8218 3.07333 14.8869C3.16459 14.952 3.27259 14.9906 3.38509 14.9985C3.4976 15.0064 3.6101 14.9831 3.70983 14.9314L8.00004 12.717L12.2902 14.9314C12.4074 14.9926 12.5434 15.013 12.6737 14.9908C13.0024 14.9352 13.2235 14.6291 13.1668 14.3064L12.3469 9.61614L15.8172 6.29454C15.9117 6.20367 15.974 6.08497 15.9929 5.95515C16.0439 5.63059 15.8135 5.33015 15.4829 5.28193Z\" fill=\"#A0A0A0\"/>\n| </svg>");
+var buildAggregateParams = function buildAggregateParams(params) {
+  var measureName = params.measureName;
 
-/***/ }),
-/* 896 */
-/***/ (function(module, exports) {
+  if (!measureName || typeof measureName !== 'string') {
+    throw new Error('Missing or wrong type parameter: measureName');
+  }
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"23\" height=\"51\" viewBox=\"0 0 23 51\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M7.65005 20.0996H6.55005V24.4996C6.55005 25.9656 7.18736 27.2828 8.20005 28.1892V26.4838C7.8509 25.9043 7.65005 25.2254 7.65005 24.4996V20.0996Z\" fill=\"#FFDDBD\"/>\n| <path d=\"M15.35 20.0996H16.45V24.4996C16.45 25.9656 15.8127 27.2828 14.8 28.1892V26.4838C15.1492 25.9043 15.35 25.2254 15.35 24.4996V20.0996Z\" fill=\"#FFDDBD\"/>");
+  var startDate = params.startDate || new Date(0).toISOString();
+  var endDate = params.endDate || new Date(Date.now()).toISOString();
 
-/***/ }),
-/* 897 */
-/***/ (function(module, exports) {
+  if (!isCorrectDateFormat(startDate) || !isCorrectDateFormat(endDate)) {
+    (0, _cozyLogger.default)('error', "Date should be in YYYY-MM-DD format but received: startDate: ".concat(startDate, " | endDate: ").concat(endDate));
+    throw new Error('Date should be in YYYY-MM-DD format');
+  }
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"27\" height=\"2\" viewBox=\"0 0 27 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <line x1=\"26\" y1=\"1\" x2=\"1\" y2=\"1\" stroke=\"#E3B82A\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-dasharray=\"3 6\"/>\n| </svg>");
+  return {
+    measureName: measureName,
+    startDate: startDate,
+    endDate: endDate
+  };
+};
+/**
+ * Send measures to a DACC through a remote doctype
+ *
+ * @param {CozyClient} client - The CozyClient instance
+ * @param {string} remoteDoctype - The remote doctype to use
+ * @param {import("../types").DACCAggregatesParams} params - The request params
+ * @returns { Promise<import("../types").DACCAggregatesResponse> }
+ */
 
-/***/ }),
-/* 898 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M0 4C0 1.79086 1.79086 0 4 0H20C22.2091 0 24 1.79086 24 4V25H0V4Z\" fill=\"#61F0F2\"/>\n| </svg>");
+exports.buildAggregateParams = buildAggregateParams;
 
-/***/ }),
-/* 899 */
-/***/ (function(module, exports) {
+var fetchAggregatesFromDACC = /*#__PURE__*/function () {
+  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(client, remoteDoctype, params) {
+    var aggregateParams;
+    return _regenerator.default.wrap(function _callee2$(_context2) {
+      while (1) {
+        switch (_context2.prev = _context2.next) {
+          case 0:
+            _context2.prev = 0;
+            aggregateParams = buildAggregateParams(params);
+            _context2.next = 4;
+            return client.getStackClient().fetchJSON('POST', "/remote/".concat(remoteDoctype), {
+              data: JSON.stringify(aggregateParams),
+              path: 'aggregate'
+            });
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"26\" height=\"19\" viewBox=\"0 0 26 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g clip-path=\"url(#clip0)\">\n| <path d=\"M1 5C1 2.79086 2.79086 1 5 1H21C23.2091 1 25 2.79086 25 5V49H1V5Z\" fill=\"#61F0F2\" fill-opacity=\"0.1\"/>");
+          case 4:
+            return _context2.abrupt("return", _context2.sent);
 
-/***/ }),
-/* 900 */
-/***/ (function(module, exports) {
+          case 7:
+            _context2.prev = 7;
+            _context2.t0 = _context2["catch"](0);
+            (0, _cozyLogger.default)('error', "Error while fetching aggregates to remote doctype: ".concat(_context2.t0.message));
+            throw _context2.t0;
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"15\" cy=\"15\" r=\"14\" stroke=\"url(#paint0_linear)\" stroke-width=\"2\"/>\n| <path d=\"M23.4182 12.6341L18.0222 11.9041L15.61 7.35214C15.5441 7.22751 15.4357 7.12662 15.3018 7.06529C14.966 6.91099 14.558 7.03957 14.3901 7.35214L11.9779 11.9041L6.58186 12.6341C6.4331 12.6538 6.29708 12.7191 6.19294 12.818C6.06704 12.9385 5.99767 13.1005 6.00006 13.2686C6.00245 13.4366 6.07641 13.5969 6.20569 13.7142L10.1098 17.2572L9.18744 22.2602C9.16581 22.3766 9.17965 22.4963 9.22738 22.6057C9.27511 22.7151 9.35483 22.8099 9.4575 22.8793C9.56016 22.9488 9.68166 22.99 9.80823 22.9984C9.9348 23.0068 10.0614 22.982 10.1736 22.9269L15 20.5648L19.8265 22.9269C19.9583 22.9922 20.1113 23.0139 20.258 22.9902C20.6277 22.9308 20.8764 22.6044 20.8126 22.2602L19.8903 17.2572L23.7944 13.7142C23.9007 13.6172 23.9708 13.4906 23.992 13.3522C24.0494 13.006 23.7901 12.6855 23.4182 12.6341Z\" fill=\"url(#paint1_linear)\"/>");
+          case 11:
+          case "end":
+            return _context2.stop();
+        }
+      }
+    }, _callee2, null, [[0, 7]]);
+  }));
 
-/***/ }),
-/* 901 */
-/***/ (function(module, exports) {
+  return function fetchAggregatesFromDACC(_x4, _x5, _x6) {
+    return _ref2.apply(this, arguments);
+  };
+}();
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"23\" height=\"51\" viewBox=\"0 0 23 51\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M7.65005 20.0996H6.55005V24.4996C6.55005 25.9656 7.18736 27.2828 8.20005 28.1892V26.4838C7.8509 25.9043 7.65005 25.2254 7.65005 24.4996V20.0996Z\" fill=\"#FFDDBD\"/>\n| <path d=\"M15.35 20.0996H16.45V24.4996C16.45 25.9656 15.8127 27.2828 14.8 28.1892V26.4838C15.1492 25.9043 15.35 25.2254 15.35 24.4996V20.0996Z\" fill=\"#FFDDBD\"/>");
+exports.fetchAggregatesFromDACC = fetchAggregatesFromDACC;
 
 /***/ }),
-/* 902 */
-/***/ (function(module, exports) {
-
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"180\" height=\"180\" viewBox=\"0 0 180 180\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"90\" cy=\"90\" r=\"64\" fill=\"url(#paint0_linear)\"/>\n| <circle cx=\"90\" cy=\"90\" r=\"78\" stroke=\"#A5A5A5\" stroke-width=\"24\"/>");
+/* 824 */
+/***/ (function(module, exports, __webpack_require__) {
 
-/***/ }),
-/* 903 */
-/***/ (function(module, exports) {
+"use strict";
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"65\" height=\"65\" viewBox=\"0 0 65 65\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"32.5\" cy=\"32.5\" r=\"32.5\" fill=\"#121212\"/>\n| <path d=\"M46 32.5C46 30.68 44.5424 29.2 42.75 29.2H41.125V24.25C41.125 19.7009 37.4801 16 33 16C28.5199 16 24.875 19.7009 24.875 24.25V29.2H23.25C21.4576 29.2 20 30.68 20 32.5V45.7C20 47.5199 21.4576 49 23.25 49H42.75C44.5424 49 46 47.5199 46 45.7V32.5ZM28.125 24.25C28.125 21.5209 30.3123 19.3 33 19.3C35.6877 19.3 37.875 21.5209 37.875 24.25V29.2H28.125V24.25Z\" fill=\"#A0A0A0\"/>");
 
-/***/ }),
-/* 904 */
-/***/ (function(module, exports) {
+var _interopRequireDefault = __webpack_require__(1);
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M46.4486 17.7627L32.0591 15.7204L25.6267 2.98519C25.451 2.6365 25.1619 2.35424 24.8049 2.18266C23.9094 1.75096 22.8213 2.11071 22.3736 2.98519L15.9411 15.7204L1.55164 17.7627C1.15492 17.818 0.792211 18.0007 0.514509 18.2774C0.178784 18.6144 -0.00621659 19.0678 0.000159514 19.5379C0.00653562 20.008 0.203766 20.4564 0.548513 20.7846L10.9595 30.6972L8.49984 44.6943C8.44216 45.0199 8.47906 45.3548 8.60634 45.6609C8.73363 45.9671 8.94621 46.2323 9.21999 46.4265C9.49376 46.6207 9.81777 46.7361 10.1553 46.7596C10.4928 46.7831 10.8303 46.7137 11.1295 46.5595L24.0001 39.9511L36.8707 46.5595C37.2221 46.7421 37.6302 46.803 38.0212 46.7366C39.0073 46.5705 39.6704 45.6573 39.5004 44.6943L37.0407 30.6972L47.4517 20.7846C47.7351 20.5134 47.9221 20.1592 47.9788 19.7718C48.1318 18.8032 47.4404 17.9066 46.4486 17.7627Z\" fill=\"url(#paint0_linear_12656_82845)\"/>\n| <defs>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.isExpiringSoon = exports.isExpired = exports.computeExpirationNoticeLink = exports.computeExpirationNoticeDate = exports.computeExpirationDate = exports.isExpiring = void 0;
 
-/***/ }),
-/* 905 */
-/***/ (function(module, exports) {
+var _add = _interopRequireDefault(__webpack_require__(825));
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"180\" height=\"180\" viewBox=\"0 0 180 180\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M27.104 136.638C27.104 133.582 51.1392 130.781 63.1568 129.762C82.2283 127.47 108.064 130.346 118.096 132.18C130.636 134.472 152.505 136.638 152.505 138.93C152.505 141.222 135.958 144.278 136.742 146.57C137.525 148.862 151.721 148.098 152.505 151.154C153.289 154.21 147.183 151.104 147.183 157.266C147.183 161.086 155.387 157.447 155.387 161.267C155.387 165.087 100.777 168.726 99.9934 164.906C99.2097 161.086 113.317 161.85 113.317 157.266C113.317 152.682 49.833 155.738 49.833 151.154C49.833 146.57 76.4807 148.862 75.6969 144.278C74.9132 139.694 27.104 140.458 27.104 136.638Z\" fill=\"#406591\"/>\n| <path d=\"M33.8165 126.792L17.4082 90.9922H165.829L147.183 129.776C141.714 132.759 123.317 138.427 93.4832 137.234C63.6499 136.041 41.2749 129.776 33.8165 126.792Z\" fill=\"#ABDDED\"/>");
+var _sub = _interopRequireDefault(__webpack_require__(831));
 
-/***/ }),
-/* 906 */
-/***/ (function(module, exports) {
+/**
+ * @typedef {import("../types").IOCozyFile} IOCozyFile
+ */
+var PERSONAL_SPORTING_LICENCE_PERIOD_DAYS = 365;
+var PERSONAL_SPORTING_LICENCE_NOTICE_PERIOD_DAYS = 15;
+var EXPIRATION_LINK_BY_LABEL = {
+  national_id_card: 'https://www.service-public.fr/particuliers/vosdroits/N358',
+  residence_permit: 'https://www.service-public.fr/particuliers/vosdroits/N110',
+  passport: 'https://www.service-public.fr/particuliers/vosdroits/N360',
+  driver_license: 'https://permisdeconduire.ants.gouv.fr/demarches-en-ligne/perte-vol-deterioration-fin-de-validite-ou-changement-d-etat-civil'
+};
+/**
+ * @param {IOCozyFile} file - io.cozy.files document
+ * @returns {boolean}
+ * @description Tells if a given file is a national id card, is French, has an expiration date set and has a notice period set
+ */
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"180\" height=\"181\" viewBox=\"0 0 180 181\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"90.2055\" cy=\"92.249\" r=\"82.9511\" fill=\"url(#paint0_linear)\"/>\n| <circle cx=\"90.2055\" cy=\"92.249\" r=\"82.9511\" fill=\"black\" fill-opacity=\"0.35\"/>");
+var isExpiringFrenchNationalIdCard = function isExpiringFrenchNationalIdCard(file) {
+  var _file$metadata, _file$metadata$qualif, _file$metadata2, _file$metadata3, _file$metadata4;
 
-/***/ }),
-/* 907 */
-/***/ (function(module, exports) {
+  var label = (_file$metadata = file.metadata) === null || _file$metadata === void 0 ? void 0 : (_file$metadata$qualif = _file$metadata.qualification) === null || _file$metadata$qualif === void 0 ? void 0 : _file$metadata$qualif.label;
+  var country = (_file$metadata2 = file.metadata) === null || _file$metadata2 === void 0 ? void 0 : _file$metadata2.country;
+  var expirationDate = (_file$metadata3 = file.metadata) === null || _file$metadata3 === void 0 ? void 0 : _file$metadata3.expirationDate;
+  var noticePeriod = (_file$metadata4 = file.metadata) === null || _file$metadata4 === void 0 ? void 0 : _file$metadata4.noticePeriod;
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"180\" height=\"180\" viewBox=\"0 0 180 180\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"90\" cy=\"90\" r=\"64\" fill=\"url(#paint0_linear)\"/>\n| <circle cx=\"90\" cy=\"90\" r=\"78\" stroke=\"#A5A5A5\" stroke-width=\"24\"/>");
+  if (label === 'national_id_card' && (!country || country === 'fr') && expirationDate && noticePeriod) {
+    return true;
+  }
 
-/***/ }),
-/* 908 */
-/***/ (function(module, exports) {
+  return false;
+};
+/**
+ * @param {IOCozyFile} file - io.cozy.files document
+ * @returns {boolean}
+ * @description Tells if a given file has an expiration date set and a notice period set
+ */
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"180\" height=\"180\" viewBox=\"0 0 180 180\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M27.104 136.638C27.104 133.582 51.1392 130.781 63.1568 129.762C82.2283 127.47 108.064 130.346 118.096 132.18C130.636 134.472 152.505 136.638 152.505 138.93C152.505 141.222 135.958 144.278 136.742 146.57C137.525 148.862 151.721 148.098 152.505 151.154C153.289 154.21 147.183 151.104 147.183 157.266C147.183 161.086 155.387 157.447 155.387 161.267C155.387 165.087 100.777 168.726 99.9934 164.906C99.2097 161.086 113.317 161.85 113.317 157.266C113.317 152.682 49.833 155.738 49.833 151.154C49.833 146.57 76.4807 148.862 75.6969 144.278C74.9132 139.694 27.104 140.458 27.104 136.638Z\" fill=\"#406591\"/>\n| <path d=\"M33.8165 126.792L17.4082 90.9922H165.829L147.183 129.776C141.714 132.759 123.317 138.427 93.4832 137.234C63.6499 136.041 41.2749 129.776 33.8165 126.792Z\" fill=\"#ABDDED\"/>");
 
-/***/ }),
-/* 909 */
-/***/ (function(module, exports) {
+var isExpiringGeneric = function isExpiringGeneric(file) {
+  var _file$metadata5, _file$metadata6;
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"180\" height=\"181\" viewBox=\"0 0 180 181\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"90.2055\" cy=\"92.249\" r=\"82.9511\" fill=\"black\"/>\n| <path d=\"M177 91C177 139.049 138.049 178 90 178C41.9512 178 3 139.049 3 91C3 42.9512 41.9512 4 90 4C138.049 4 177 42.9512 177 91Z\" stroke=\"url(#paint0_angular)\" stroke-width=\"6\"/>");
+  var expirationDate = (_file$metadata5 = file.metadata) === null || _file$metadata5 === void 0 ? void 0 : _file$metadata5.expirationDate;
+  var noticePeriod = (_file$metadata6 = file.metadata) === null || _file$metadata6 === void 0 ? void 0 : _file$metadata6.noticePeriod;
 
-/***/ }),
-/* 910 */
-/***/ (function(module, exports) {
+  if (expirationDate && noticePeriod) {
+    return true;
+  }
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"180\" height=\"180\" viewBox=\"0 0 180 180\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"90\" cy=\"90\" r=\"64\" fill=\"url(#paint0_linear)\"/>\n| <circle cx=\"90\" cy=\"90\" r=\"78\" stroke=\"#A5A5A5\" stroke-width=\"24\"/>");
+  return false;
+};
+/**
+ * @param {IOCozyFile} file - io.cozy.files document
+ * @returns {boolean}
+ * @description Tells if a given file is a sporting license, has a reference date set or a creation date if not
+ */
 
-/***/ }),
-/* 911 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"180\" height=\"180\" viewBox=\"0 0 180 180\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M27.104 136.638C27.104 133.582 51.1392 130.781 63.1568 129.762C82.2283 127.47 108.064 130.346 118.096 132.18C130.636 134.472 152.505 136.638 152.505 138.93C152.505 141.222 135.958 144.278 136.742 146.57C137.525 148.862 151.721 148.098 152.505 151.154C153.289 154.21 147.183 151.104 147.183 157.266C147.183 161.086 155.387 157.447 155.387 161.267C155.387 165.087 100.777 168.726 99.9934 164.906C99.2097 161.086 113.317 161.85 113.317 157.266C113.317 152.682 49.833 155.738 49.833 151.154C49.833 146.57 76.4807 148.862 75.6969 144.278C74.9132 139.694 27.104 140.458 27.104 136.638Z\" fill=\"#406591\"/>\n| <path d=\"M33.8165 126.792L17.4082 90.9922H165.829L147.183 129.776C141.714 132.759 123.317 138.427 93.4832 137.234C63.6499 136.041 41.2749 129.776 33.8165 126.792Z\" fill=\"#ABDDED\"/>");
+var isExpiringPersonalSportingLicense = function isExpiringPersonalSportingLicense(file) {
+  var _file$metadata7, _file$metadata7$quali, _file$metadata8;
 
-/***/ }),
-/* 912 */
-/***/ (function(module, exports) {
+  var label = (_file$metadata7 = file.metadata) === null || _file$metadata7 === void 0 ? void 0 : (_file$metadata7$quali = _file$metadata7.qualification) === null || _file$metadata7$quali === void 0 ? void 0 : _file$metadata7$quali.label;
+  var referencedDate = (_file$metadata8 = file.metadata) === null || _file$metadata8 === void 0 ? void 0 : _file$metadata8.referencedDate;
+  var created_at = file.created_at;
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"180\" height=\"181\" viewBox=\"0 0 180 181\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M173.157 92.249C173.157 138.062 136.018 175.2 90.2055 175.2C44.3929 175.2 7.25439 138.062 7.25439 92.249C7.25439 46.4363 44.3929 9.29785 90.2055 9.29785C136.018 9.29785 173.157 46.4363 173.157 92.249Z\" fill=\"black\"/>\n| <circle cx=\"90.2055\" cy=\"92.249\" r=\"82.9511\" fill=\"black\"/>");
+  if (label === 'personal_sporting_licence' && (referencedDate || created_at)) {
+    return true;
+  }
 
-/***/ }),
-/* 913 */
-/***/ (function(module, exports) {
+  return false;
+};
+/**
+ * @param {IOCozyFile} file - io.cozy.files document
+ * @returns {boolean}
+ * @description Tells if a given file matches one of the known types of expiring papers
+ */
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"180\" height=\"180\" viewBox=\"0 0 180 180\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"90\" cy=\"90\" r=\"64\" fill=\"url(#paint0_linear)\"/>\n| <circle cx=\"90\" cy=\"90\" r=\"78\" stroke=\"#A5A5A5\" stroke-width=\"24\"/>");
 
-/***/ }),
-/* 914 */
-/***/ (function(module, exports) {
+var isExpiring = function isExpiring(file) {
+  if (isExpiringFrenchNationalIdCard(file)) {
+    return true;
+  }
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"180\" height=\"180\" viewBox=\"0 0 180 180\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M27.104 136.638C27.104 133.582 51.1392 130.781 63.1568 129.762C82.2283 127.47 108.064 130.346 118.096 132.18C130.636 134.472 152.505 136.638 152.505 138.93C152.505 141.222 135.958 144.278 136.742 146.57C137.525 148.862 151.721 148.098 152.505 151.154C153.289 154.21 147.183 151.104 147.183 157.266C147.183 161.086 155.387 157.447 155.387 161.267C155.387 165.087 100.777 168.726 99.9934 164.906C99.2097 161.086 113.317 161.85 113.317 157.266C113.317 152.682 49.833 155.738 49.833 151.154C49.833 146.57 76.4807 148.862 75.6969 144.278C74.9132 139.694 27.104 140.458 27.104 136.638Z\" fill=\"#406591\"/>\n| <path d=\"M33.8165 126.792L17.4082 90.9922H165.829L147.183 129.776C141.714 132.759 123.317 138.427 93.4832 137.234C63.6499 136.041 41.2749 129.776 33.8165 126.792Z\" fill=\"#ABDDED\"/>");
+  if (isExpiringGeneric(file)) {
+    return true;
+  }
 
-/***/ }),
-/* 915 */
-/***/ (function(module, exports) {
+  if (isExpiringPersonalSportingLicense(file)) {
+    return true;
+  }
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"181\" height=\"181\" viewBox=\"0 0 181 181\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"89.7134\" cy=\"88.8584\" r=\"85.2046\" transform=\"rotate(-4.70126 89.7134 88.8584)\" fill=\"#FDC087\"/>\n| <path opacity=\"0.55\" d=\"M112.971 120.205C114.625 119.572 118.739 119.305 121.967 123.303C126.002 128.301 133.858 140.873 134.949 143.768C135.822 146.084 136.169 153.812 136.417 158.553L129.459 163.325C128.124 157.466 125.759 147.637 124.097 144.021C122.464 140.468 119.458 138.236 118.088 137.522C118.063 137.511 118.04 137.499 118.016 137.486C118.039 137.497 118.063 137.51 118.088 137.522C118.757 137.838 119.694 137.51 118.567 133.816C117.108 129.033 114.111 126.294 113.812 125.253C113.513 124.211 110.375 122.338 111.117 120.997C111.711 119.925 112.601 120.023 112.971 120.205Z\" fill=\"#945317\"/>");
+  return false;
+};
+/**
+ * @param {IOCozyFile} file - io.cozy.files document
+ * @returns {Date | null} Expiration date
+ * @description Computes et returns the expiration date of the given file, or null if it is not expiring
+ */
 
-/***/ }),
-/* 916 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"180\" height=\"180\" viewBox=\"0 0 180 180\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"90\" cy=\"90\" r=\"64\" fill=\"url(#paint0_linear)\"/>\n| <circle cx=\"90\" cy=\"90\" r=\"78\" stroke=\"#A5A5A5\" stroke-width=\"24\"/>");
+exports.isExpiring = isExpiring;
 
-/***/ }),
-/* 917 */
-/***/ (function(module, exports) {
+var computeExpirationDate = function computeExpirationDate(file) {
+  if (isExpiringFrenchNationalIdCard(file) || isExpiringGeneric(file)) {
+    var _file$metadata9;
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"180\" height=\"180\" viewBox=\"0 0 180 180\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M27.104 136.638C27.104 133.582 51.1392 130.781 63.1568 129.762C82.2283 127.47 108.064 130.346 118.096 132.18C130.636 134.472 152.505 136.638 152.505 138.93C152.505 141.222 135.958 144.278 136.742 146.57C137.525 148.862 151.721 148.098 152.505 151.154C153.289 154.21 147.183 151.104 147.183 157.266C147.183 161.086 155.387 157.447 155.387 161.267C155.387 165.087 100.777 168.726 99.9934 164.906C99.2097 161.086 113.317 161.85 113.317 157.266C113.317 152.682 49.833 155.738 49.833 151.154C49.833 146.57 76.4807 148.862 75.6969 144.278C74.9132 139.694 27.104 140.458 27.104 136.638Z\" fill=\"#406591\"/>\n| <path d=\"M33.8165 126.792L17.4082 90.9922H165.829L147.183 129.776C141.714 132.759 123.317 138.427 93.4832 137.234C63.6499 136.041 41.2749 129.776 33.8165 126.792Z\" fill=\"#ABDDED\"/>");
+    var expirationDate = (_file$metadata9 = file.metadata) === null || _file$metadata9 === void 0 ? void 0 : _file$metadata9.expirationDate;
+    return new Date(expirationDate);
+  }
 
-/***/ }),
-/* 918 */
-/***/ (function(module, exports) {
+  if (isExpiringPersonalSportingLicense(file)) {
+    var _file$metadata10;
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"181\" height=\"181\" viewBox=\"0 0 181 181\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"91.2055\" cy=\"91.249\" r=\"82.9511\" fill=\"url(#paint0_radial)\"/>\n| <path d=\"M68.0241 122.641C70.5824 121.698 73.1298 120.677 74.0837 120.284L84.3508 123.314L86.3706 129.542L74.4201 143.176C72.7369 144.186 69.0003 146.239 67.5191 146.374C65.6676 146.542 53.0439 146.205 39.2419 144.522C25.4399 142.839 26.4497 141.661 25.9447 140.483C25.4398 139.304 26.6178 119.611 26.7861 117.423C26.9545 115.235 33.5188 92.1756 33.8555 90.3242C34.1921 88.4727 33.1823 86.1162 33.0139 85.2747C32.8456 84.4331 32.6774 80.7301 33.014 79.2152C33.2833 78.0034 33.7995 76.3539 34.0239 75.6806C33.9678 75.1195 33.9229 73.7954 34.1922 72.9875C34.4615 72.1796 35.7632 72.6509 36.3805 72.9875L38.0637 71.136C38.4564 70.7433 39.4438 69.8568 40.2517 69.4529C41.0596 69.0489 41.5983 69.0601 41.7667 69.1162L41.9351 67.2648L43.9549 67.6014C44.1793 66.9842 44.9311 65.7835 46.143 65.9182C47.3549 66.0528 48.1067 66.5353 48.3311 66.7597C48.8922 67.994 50.1826 71.1696 50.8559 73.9973C51.6975 77.532 46.9846 87.7993 45.4697 92.0073C43.9549 96.2152 43.4499 103.789 43.2816 106.482C43.1133 109.176 43.4499 118.938 43.6182 120.958C43.7529 122.574 44.572 127.578 44.9646 129.879C46.1429 129.43 49.0044 128.364 51.0242 127.69C53.5489 126.849 64.8262 123.819 68.0241 122.641Z\" fill=\"#ECBC73\"/>");
+    var referencedDate = (_file$metadata10 = file.metadata) === null || _file$metadata10 === void 0 ? void 0 : _file$metadata10.referencedDate;
+    var created_at = file.created_at;
+    return (0, _add.default)(new Date(referencedDate !== null && referencedDate !== void 0 ? referencedDate : created_at), {
+      days: PERSONAL_SPORTING_LICENCE_PERIOD_DAYS
+    });
+  }
 
-/***/ }),
-/* 919 */
-/***/ (function(module, exports) {
+  return null;
+};
+/**
+ * @param {IOCozyFile} file - io.cozy.files document
+ * @returns {number | null} Expiration notice period in days
+ * @description Computes et returns the expiration notice period of the given file, or null if it is not expiring
+ */
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"180\" height=\"180\" viewBox=\"0 0 180 180\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"90\" cy=\"90\" r=\"64\" fill=\"url(#paint0_linear)\"/>\n| <circle cx=\"90\" cy=\"90\" r=\"78\" stroke=\"#A5A5A5\" stroke-width=\"24\"/>");
 
-/***/ }),
-/* 920 */
-/***/ (function(module, exports) {
+exports.computeExpirationDate = computeExpirationDate;
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"320\" height=\"321\" viewBox=\"0 0 320 321\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g opacity=\"0.6\" filter=\"url(#filter0_f_6_18534)\">\n| <path d=\"M137.316 4.00668L159.647 150.867L160.871 2.32359L161.064 150.872L184.413 4.16994L162.464 151.088L207.417 9.50447L163.817 151.51L229.37 18.208L165.091 152.129L249.779 30.0862L166.259 152.931L268.191 44.8736L167.295 153.899L284.193 62.24L168.174 155.01L297.428 81.7974L168.878 156.239L307.6 103.109L169.391 157.56L314.482 125.698L169.702 158.942L317.921 149.061L169.803 160.355L317.839 172.676L169.692 161.768L314.239 196.015L169.372 163.148L307.2 218.556L168.85 164.465L296.88 239.796L168.137 165.69L283.51 259.262L167.25 166.795L267.388 276.517L166.208 167.755L248.874 291.176L165.034 168.549L228.383 302.912L163.756 169.159L206.371 311.464L162.4 169.572L183.33 316.639L160.999 169.779L159.775 318.322L159.582 169.774L136.233 316.475L158.181 169.558L113.229 311.141L156.829 169.135L91.2763 302.437L155.555 168.516L70.8664 290.559L154.387 167.714L52.4548 275.772L153.351 166.747L36.4528 258.405L152.472 165.636L23.2179 238.848L151.768 164.406L13.0457 217.536L151.254 163.085L6.1634 194.947L150.944 161.703L2.72477 171.584L150.843 160.29L2.80662 147.969L150.954 158.877L6.40713 124.631L151.274 157.497L13.4459 102.089L151.796 156.18L23.7656 80.8488L152.509 154.955L37.1358 61.3837L153.396 153.851L53.2578 44.1286L154.438 152.89L71.7714 29.4692L155.611 152.096L92.2632 17.7328L156.89 151.486L114.275 9.18161L158.246 151.073L137.316 4.00668Z\" fill=\"#FFD951\"/>");
+var computeExpirationNoticePeriodInDays = function computeExpirationNoticePeriodInDays(file) {
+  if (isExpiringFrenchNationalIdCard(file) || isExpiringGeneric(file)) {
+    var _file$metadata11;
 
-/***/ }),
-/* 921 */
-/***/ (function(module, exports) {
+    var noticePeriodInDays = (_file$metadata11 = file.metadata) === null || _file$metadata11 === void 0 ? void 0 : _file$metadata11.noticePeriod;
+    return parseInt(noticePeriodInDays, 10);
+  }
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"208\" height=\"208\" viewBox=\"0 0 208 208\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path opacity=\"0.65\" d=\"M30.3335 152.514C30.3335 148.962 58.2627 145.707 72.2273 144.524C94.3885 141.86 124.409 145.202 136.067 147.333C150.639 149.996 176.051 152.514 176.051 155.177C176.051 157.84 156.823 161.391 157.734 164.054C158.644 166.718 175.14 165.83 176.051 169.381C176.962 172.932 169.867 169.323 169.867 176.483C169.867 180.922 179.4 176.694 179.4 181.133C179.4 185.572 115.943 189.8 115.032 185.361C114.121 180.922 130.514 181.81 130.514 176.483C130.514 171.157 56.7448 174.708 56.7448 169.381C56.7448 164.054 87.7098 166.718 86.799 161.391C85.8883 156.065 30.3335 156.952 30.3335 152.514Z\" fill=\"#61F0F2\"/>\n| <path d=\"M38.1336 147.332L19.0669 105.732H191.534L169.867 150.799C163.511 154.266 142.134 160.852 107.467 159.466C72.8002 158.079 46.8002 150.799 38.1336 147.332Z\" fill=\"#ABDDED\"/>");
+  if (isExpiringPersonalSportingLicense(file)) {
+    return PERSONAL_SPORTING_LICENCE_NOTICE_PERIOD_DAYS;
+  }
 
-/***/ }),
-/* 922 */
-/***/ (function(module, exports) {
+  return null;
+};
+/**
+ * @param {IOCozyFile} file - io.cozy.files document
+ * @returns {Date | null} Expiration notice date
+ * @description Computes et returns the expiration notice date of the given file, or null if it is not expiring
+ */
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"120\" height=\"121\" viewBox=\"0 0 120 121\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <rect x=\"38\" y=\"72.031\" width=\"54\" height=\"6\" rx=\"3\" fill=\"#8E8E8E\"/>\n|   <rect x=\"35\" y=\"95.031\" width=\"55\" height=\"6\" rx=\"3\" fill=\"#8E8E8E\"/>");
 
-/***/ }),
-/* 923 */
-/***/ (function(module, exports) {
+var computeExpirationNoticeDate = function computeExpirationNoticeDate(file) {
+  var expirationDate = computeExpirationDate(file);
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#a)\"><path d=\"m86.21 50.256-.024-.01a4.54 4.54 0 0 0 .2-.578c1.072-3.588-.95-7.352-4.524-8.42a6.802 6.802 0 0 0-3.352-.143c-.7-3.203-3.171-4.802-6.542-5.81-4.941-1.476-9.495-1.094-10.977 3.868l-.253-.075c-4.942-1.477-14.297 3.45-15.78 8.412-1.482 4.962 5.464 8.102 10.406 9.578a8.963 8.963 0 0 0 3.091.37 7.373 7.373 0 0 0 5.003 5.154 7.315 7.315 0 0 0 6.535-1.18c.857 1.2 2.091 2.15 3.586 2.597a6.766 6.766 0 0 0 6.916-1.897 6.99 6.99 0 0 0 2.055.974c3.877 1.16 7.987-1.05 9.158-4.968 1.188-3.886-.43-7.057-5.498-7.872Z\" fill=\"#82A5BC\"/><path d=\"M44.459 48.5c.922 2.807 6.99 4.91 10.028 5.819 1.04.31 4.51.751 5.62-.475-.555 2.03 1.245 5.331 3.779 6.089 2.331.696 5.8.5 7.616-.87.857 1.198 1.614 2.256 3.11 2.702 2.559.765 5.43-.546 7.141-2.39.616.433 1.77 1.479 2.53 1.706 4.956.71 5.83-2.848 7-6.767.103-.337.181-.676.234-1.015a7.273 7.273 0 0 1 .192 4.827c-1.17 3.918-5.281 6.127-9.158 4.968a6.99 6.99 0 0 1-2.055-.974 6.766 6.766 0 0 1-6.916 1.897c-1.495-.447-2.73-1.398-3.586-2.596A7.315 7.315 0 0 1 63.46 62.6a7.373 7.373 0 0 1-5.003-5.154 8.975 8.975 0 0 1-3.091-.37C51.022 55.78 44.04 52.863 44.458 48.5Z\" fill=\"#618FAD\"/><path d=\"M83.12 46.73c-2.29-1.048-3.959-.937-5.322-.616-.64.15-1.212.496-1.692.944a4.235 4.235 0 0 1-6.089-.314l-1.867-2.149a5.938 5.938 0 0 0-.62-.62c-1.084-.927-4.545-3.765-6.056-3.542-.746.11-1.853.276-2.955.599-1.114.326-.586 1.057.564 1.217 1.084.151 2.353 1.313 3.41 2.482.462.51.904 1.973.244 2.168-.671.198-1.21 1.507-.53 1.339.942-.233 1.78-.016 3.206.783 2.526 1.416 1.414 4.723.351 6.035-1.458 1.444 3.105 1.428 3.694.444.182-.303.256-.873.26-1.532.013-1.905 1.365-3.297 2.095-1.538.279.674 1.52 4.113 1.883 4.746.72 1.255 1.7 2.642 3.189 2.824 3.81.467 5.297-2 6.234-3.5 2.5-4-.412-3.432-1.335-4.68-1.658-2.246-3.451-2.27-4.779-2.247 1.137-.09 2.906-2.071 4.157-1.78.134.03.255.07.365.115 3.354 1.412 4.9.338 1.593-1.178Z\" fill=\"#99C5DF\"/><path opacity=\".65\" d=\"M68.2 61.736c-.754-.754-2.514-12.567-3.3-18.38V41h40.058v6.598c-3.77 0-3.298 9.896-4.241 11.781-.943-2.356-1.885-9.582-2.828-11.31-.754.377-.942 2.985-.942 4.241-.943-.47-.848-3.11-2.356-4.241-1.508-1.131-4.242-.471-4.713.471-.471.943-.629 5.184-.471 7.54-.754-.754-2.2-5.655-2.828-8.011-1.131 0-2.356 3.613-3.299 5.184-1.414-1.414-1.225-5.09-4.241-4.713-3.016.377-3.927 5.341-3.77 8.012-.315-1.414-.754-4.242-1.885-6.127-1.131-1.885-2.67-2.356-3.3-2.356.378 1.508-1.099 9.74-1.884 13.667Z\" fill=\"url(#b)\"/><path opacity=\".65\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M68.177 61.71c-.766-.965-2.498-12.6-3.276-18.353V41h39.115-40.058v2.356c.778 5.755 3.434 17.392 4.219 18.354Zm32.52-2.38c-.436-1.122-.872-3.27-1.308-5.42-.5-2.462-1-4.924-1.5-5.84-.233.116-.412.446-.548.884.517 1.325 1.179 3.503 1.81 5.586.587 1.93 1.147 3.778 1.546 4.79Zm-3.791-7.042c-.401-.234-.61-.877-.849-1.616-.297-.918-.643-1.985-1.466-2.603-.69-.517-1.637-.66-2.506-.572.568.061 1.119.239 1.563.572.797.598 1.41 1.617 1.95 2.514.466.776.878 1.462 1.308 1.705Zm-7.5 3.772v.02-.02Zm-.024-.005c-.76-.834-2.181-5.655-2.803-7.986-.26 0-.527.192-.793.508.784 2.46 2.87 6.702 3.596 7.478Zm-6.147-2.849c-.457-.484-.744-1.208-1.035-1.943-.58-1.463-1.176-2.97-3.161-2.722l-.06.008c1.53.242 2.368 1.684 3.13 2.994.37.636.721 1.241 1.126 1.663Zm-7.967 3.325v.02-.02Zm-.004-.002a48.942 48.942 0 0 1-.153-.732c-.31-1.517-.772-3.78-1.727-5.371-1.131-1.885-2.67-2.357-3.3-2.357.017.065.03.142.04.231.71.297 1.597.924 2.317 2.125 1.125 1.876 2.5 4.683 2.823 6.105Z\" fill=\"url(#c)\"/><path opacity=\".65\" d=\"M154.786 61.736c.92-.754 3.065-12.567 4.023-18.38V41h-48.85v6.598c4.597 0 4.022 9.896 5.172 11.781 1.149-2.356 2.299-9.582 3.448-11.31.92.377 1.15 2.985 1.15 4.241 1.149-.47 1.034-3.11 2.873-4.241 1.839-1.131 5.173-.471 5.747.471.575.943.767 5.184.575 7.54.92-.754 2.682-5.655 3.448-8.011 1.38 0 2.874 3.613 4.023 5.184 1.724-1.414 1.495-5.09 5.173-4.713 3.678.377 4.789 5.341 4.597 8.012.384-1.414.92-4.242 2.299-6.127 1.38-1.885 3.257-2.356 4.023-2.356-.46 1.508 1.341 9.74 2.299 13.667Z\" fill=\"url(#d)\"/><path opacity=\".65\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M159.958 43.356c-.957 5.813-4.252 17.626-5.172 18.38.92-.755 3.065-12.568 4.023-18.38V41h1.149v2.356ZM115.131 59.38c.54-1.107 1.08-3.288 1.619-5.469.61-2.462 1.22-4.925 1.829-5.841.285.117.503.447.669.885-.631 1.325-1.437 3.503-2.208 5.586-.726 1.962-1.421 3.84-1.909 4.84Zm4.598-7.069c.521-.214.783-.875 1.085-1.639.362-.918.784-1.985 1.788-2.602.842-.518 1.997-.66 3.057-.572-.693.06-1.365.238-1.907.572-.972.598-1.719 1.616-2.378 2.514-.587.8-1.103 1.505-1.645 1.727Zm9.195 3.77c.92-.754 2.682-5.655 3.448-8.011.318 0 .643.192.967.507-.966 2.49-3.557 6.801-4.415 7.505Zm7.471-2.827c.59-.483.951-1.231 1.317-1.99.707-1.463 1.435-2.97 3.856-2.723l.075.009c-1.867.242-2.89 1.684-3.819 2.994-.468.66-.912 1.286-1.429 1.71Zm9.77 3.298c.06-.22.123-.474.193-.754.378-1.517.942-3.78 2.106-5.372 1.379-1.885 3.257-2.356 4.023-2.356-.02.065-.035.142-.047.231-.867.297-1.948.924-2.826 2.125-1.38 1.885-3.065 4.713-3.449 6.127Z\" fill=\"url(#e)\"/><path d=\"M143.448 73.625h.046c-.001-.329.051-.697.102-1.065.91-6.49 6.87-11.005 13.334-10.1a11.903 11.903 0 0 1 5.438 2.215c3.447-4.585 8.544-5.33 14.641-4.476 8.938 1.252 15.905 5.178 14.647 14.153l.458.064c8.939 1.251 15.156 9.583 13.898 18.558-1.257 8.975-9.519 15.234-18.457 13.983a15.715 15.715 0 0 1-5.189-1.665c-2.755 3.321-7.131 5.196-11.715 4.555-4.217-.591-7.646-3.136-9.539-6.639-2.236 1.283-4.892 1.897-7.597 1.518-4.63-.648-8.243-3.876-9.62-8.058-1.296.241-2.605.246-3.981.053-7.013-.981-11.943-7.49-10.95-14.579.941-7.048 5.826-10.914 14.484-8.517Z\" fill=\"#82A5BC\"/><path d=\"M205.258 96.107c-3.513 3.794-8.802 7.87-14.298 7.101-1.88-.263-7.721-2.09-8.594-4.85-.597 3.632-5.867 7.575-10.451 6.933-4.217-.59-9.592-3.431-11.484-6.934-2.237 1.283-4.211 2.413-6.916 2.034-4.63-.648-8.243-4.827-9.621-9.008-1.295.24-3.895 1.064-5.27.871-8.401-2.482-7.199-8.779-6.206-15.867.082-.612.206-1.208.368-1.785a12.727 12.727 0 0 0-3.822 7.54c-.993 7.088 3.937 13.597 10.95 14.579 1.376.192 2.685.188 3.98-.053 1.378 4.181 4.991 7.409 9.621 8.057 2.705.379 5.361-.235 7.597-1.517 1.893 3.503 5.322 6.048 9.539 6.638 4.584.642 8.96-1.233 11.715-4.555a15.715 15.715 0 0 0 5.189 1.665c7.856 1.1 15.189-3.601 17.703-10.85Z\" fill=\"#618FAD\"/><path d=\"M150.934 70.269c2.922 0 5.038.612 6.697 1.463 2.57 1.319 4.13 3.944 5.226 6.616a4.861 4.861 0 0 0 6.506 2.582l7.646-3.469s10.277-3.177 12.954-1.438c2.676 1.739 8.469 5.531 8.125 9.893-1.308-3.185-2.409-4.293-5.645-5.262-3.166-.949-9.408 2.492-11.702 3.6.826 0 4.268.762 5.782 7.754-3.235-4.43-3.992-5.608-9.086-5.192-5.05.412-5.691 6.485-4.957 9.346-.826-.553-2.395-3.267-2.616-5.261-.22-1.994-.183-4.34.826-4.985-1.376-1.108-3.056-.997-5.92 1.661-2.863 2.659-1.652 2.077-2.271 4.431-.551-2.769.069-8.308-5.163-9.97-6.402-2.033-9.913-.83-11.427 3.878 0-2.77 1.064-5.262 3.442-6.578 4.274-2.364 7.145-1.096 9.24-.091-1.743-.973-3.113-5.413-5.316-5.863-4.406-.9-8.399.416-10.808 3.254 2.203-5.608 4.75-6.37 8.467-6.37Z\" fill=\"#99C5DF\"/><path d=\"M166.415 63.23a8.059 8.059 0 0 0-2.36 5.695 8.05 8.05 0 0 0 4.975 7.442 8.057 8.057 0 0 0 8.781-1.746l-4.535-.243a7 7 0 0 1-6.619-6.615l-.242-4.533Z\" fill=\"#99C5DF\"/><path d=\"m65.451 116.049-.034.002a5.947 5.947 0 0 0-.117-.794c-.923-4.824-5.554-7.982-10.359-7.063a8.92 8.92 0 0 0-3.988 1.863c-2.752-3.304-6.596-3.67-11.128-2.804-6.644 1.271-11.712 4.471-10.435 11.143a41.64 41.64 0 0 0-.341.065c-6.645 1.271-10.987 7.741-9.71 14.413 1.277 6.671 7.696 11.047 14.34 9.777a11.776 11.776 0 0 0 3.822-1.441c2.187 2.384 5.533 3.624 8.94 2.972 3.135-.6 5.607-2.633 6.893-5.326 1.722.876 3.733 1.236 5.744.852 3.441-.658 6.026-3.21 6.9-6.392.98.132 1.96.086 2.982-.109 5.214-.997 8.66-6.054 7.652-11.324-.968-5.241-4.77-7.952-11.16-5.834Z\" fill=\"#82A5BC\"/><path d=\"M20.02 135.19c2.772 2.71 6.884 5.563 10.97 4.782 1.397-.268 5.702-1.853 6.252-3.953.583 2.697 4.675 5.452 8.083 4.8 3.134-.599 7.052-2.927 8.338-5.62 1.722.877 3.243 1.649 5.253 1.264 3.442-.658 5.99-3.922 6.865-7.104.98.132 2.956.652 3.978.456 6.196-2.173 5.061-6.841 4.052-12.11a9.693 9.693 0 0 0-.341-1.323 9.54 9.54 0 0 1 3.142 5.501c1.009 5.269-2.438 10.326-7.652 11.324-1.022.195-2.002.241-2.981.109-.875 3.182-3.46 5.733-6.901 6.392-2.01.384-4.022.024-5.744-.853-1.286 2.694-3.758 4.727-6.893 5.327a9.672 9.672 0 0 1-8.94-2.972 11.776 11.776 0 0 1-3.822 1.44c-5.84 1.117-11.505-2.128-13.659-7.46Z\" fill=\"#618FAD\"/><path d=\"M59.722 113.817c-2.187.109-3.749.647-4.959 1.346-1.874 1.083-2.944 3.106-3.665 5.148a3.643 3.643 0 0 1-4.773 2.176l-5.854-2.311s-7.812-1.994-9.75-.592c-1.94 1.401-6.134 4.457-5.714 7.709.86-2.433 1.643-3.303 4.03-4.15 2.32-.823-1.707 11.946-.034 12.841.007.012.018.017.033.016a.43.43 0 0 1-.033-.016c-.27-.441 5.74-9.72 4.89-4.562 2.256-3.438 2.779-4.347 6.608-4.227 3.795.119 4.502 4.642 4.06 6.812.597-.446 1.67-2.536 1.761-4.037.09-1.501-.025-3.255-.805-3.701.99-.881 2.25-.861 4.494 1.023 2.243 1.883 1.315 1.493 1.866 3.232.31-2.094-.362-6.217 3.492-7.657 4.717-1.761 7.39-.992 8.7 2.475-.104-2.073-.993-3.899-2.823-4.795-3.288-1.61-5.39-.553-6.92.277 1.268-.793 2.128-4.168 3.76-4.587 3.265-.839 6.303-.003 8.213 2.032-1.86-4.116-3.794-4.591-6.577-4.452Z\" fill=\"#99C5DF\"/><path d=\"M47.869 109.126a6.03 6.03 0 0 1 1.636 6.505 6.037 6.037 0 0 1-7.72 3.657 6.03 6.03 0 0 1-2.021-1.209c-4.028-3.202-1.484-9.681 3.648-9.292l4.457.339Z\" fill=\"#99C5DF\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M46.772 81.372a3.067 3.067 0 0 0 .517-1.71 3.066 3.066 0 0 0-3.06-3.072 3.064 3.064 0 0 0-3.01 2.524 2.56 2.56 0 0 0-1.069 2.084 2.555 2.555 0 0 0 3.276 2.455 2.039 2.039 0 0 0 1.823 1.13c1.127 0 2.04-.918 2.04-2.049 0-.523-.196-1-.517-1.362ZM75.308 65.67a1.533 1.533 0 0 0-1.43-2.08 1.533 1.533 0 0 0-1.501 1.832 3.053 3.053 0 0 0-4.59.525 4.053 4.053 0 0 0-1.557-.31 4.088 4.088 0 0 0-4.08 4.097 4.088 4.088 0 0 0 4.08 4.097h.036a3.575 3.575 0 0 0 3.533 3.072 3.554 3.554 0 0 0 2.662-1.197 5.57 5.57 0 0 0 3.456 1.197c3.098 0 5.61-2.522 5.61-5.633 0-3.11-2.512-5.632-5.61-5.632a5.58 5.58 0 0 0-.609.033Zm-18.315-2.43a3.073 3.073 0 0 0 1.395-2.578 3.066 3.066 0 0 0-3.06-3.072 3.062 3.062 0 0 0-2.906 2.11 3.551 3.551 0 0 0-3.212 1.014 2.551 2.551 0 0 0-3.06 2.509 2.555 2.555 0 0 0 3.06 2.509 3.56 3.56 0 0 0 5.482-.467c.28.318.69.518 1.146.518.845 0 1.53-.688 1.53-1.536 0-.385-.141-.737-.375-1.007Z\" fill=\"#B4EDFF\"/><ellipse cx=\"34.216\" cy=\"60.385\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><ellipse cx=\"30.137\" cy=\"85.987\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M41.695 90.848c-.243.164-.536.26-.85.26-.846 0-1.53-.688-1.53-1.537 0-.848.684-1.536 1.53-1.536a1.53 1.53 0 0 1 1.443 1.028 1.022 1.022 0 0 1 1.106 1.02c0 .566-.457 1.024-1.02 1.024-.26 0-.498-.098-.679-.26Zm23.132-40.322a1.148 1.148 0 0 1 1.936-.592c.448.45.448 1.18 0 1.63-.353.355-.881.43-1.308.224a.763.763 0 0 1-1.125.048.77.77 0 0 1 .497-1.31ZM82.163 91.49a1.148 1.148 0 0 1 1.937-.592c.448.45.448 1.18 0 1.63-.354.355-.882.43-1.308.224a.763.763 0 0 1-1.125.048.77.77 0 0 1 .496-1.31Z\" fill=\"#B4EDFF\"/><ellipse cx=\"39.824\" cy=\"59.873\" rx=\".51\" ry=\".512\" fill=\"#B4EDFF\"/><ellipse cx=\"21.468\" cy=\"83.427\" rx=\".51\" ry=\".512\" fill=\"#B4EDFF\"/><ellipse cx=\"54.101\" cy=\"70.114\" rx=\".51\" ry=\".512\" fill=\"#B4EDFF\"/><ellipse cx=\"81.635\" cy=\"44.512\" rx=\".51\" ry=\".512\" fill=\"#B4EDFF\"/><ellipse rx=\".512\" ry=\".51\" transform=\"rotate(70.936 -36.46 92.876) skewX(.15)\" fill=\"#B4EDFF\"/><ellipse rx=\".51\" ry=\".512\" transform=\"rotate(24.257 -198.227 252.247) skewX(.181)\" fill=\"#B4EDFF\"/><ellipse rx=\".512\" ry=\".51\" transform=\"rotate(70.936 -55.312 86.006) skewX(.15)\" fill=\"#B4EDFF\"/><ellipse cx=\"80.106\" cy=\"59.361\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><ellipse cx=\"60.73\" cy=\"59.361\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><ellipse cx=\"78.066\" cy=\"84.963\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><ellipse cx=\"92.343\" cy=\"88.036\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><ellipse cx=\"57.16\" cy=\"72.162\" rx=\".51\" ry=\".512\" fill=\"#B4EDFF\"/><ellipse cx=\"90.813\" cy=\"74.21\" rx=\".51\" ry=\".512\" fill=\"#B4EDFF\"/><ellipse cx=\"51.042\" cy=\"53.729\" rx=\".51\" ry=\".512\" fill=\"#B4EDFF\"/><ellipse rx=\".512\" ry=\".51\" transform=\"rotate(70.936 -35.888 98.061) skewX(.15)\" fill=\"#B4EDFF\"/><ellipse rx=\".51\" ry=\".512\" transform=\"rotate(24.257 -191.064 264.737) skewX(.181)\" fill=\"#B4EDFF\"/><ellipse rx=\".512\" ry=\".51\" transform=\"rotate(70.936 -47.43 87.943) skewX(.15)\" fill=\"#B4EDFF\"/><ellipse rx=\".51\" ry=\".512\" transform=\"rotate(24.257 -217.578 235.937) skewX(.181)\" fill=\"#B4EDFF\"/><ellipse cx=\"81.635\" cy=\"63.969\" rx=\".51\" ry=\".512\" fill=\"#B4EDFF\"/><ellipse cx=\"66.338\" cy=\"82.403\" rx=\".51\" ry=\".512\" fill=\"#B4EDFF\"/><ellipse cx=\"25.037\" cy=\"87.011\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><ellipse cx=\"50.532\" cy=\"85.987\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><ellipse cx=\"58.69\" cy=\"110.565\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><ellipse cx=\"36.255\" cy=\"98.276\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M25.04 81.804a1.536 1.536 0 0 1-1.022-1.45c0-.848.684-1.536 1.53-1.536a1.53 1.53 0 0 1 1.443 1.027l.086-.002c.46 0 .883.152 1.224.41.186-.25.482-.41.816-.41a1.022 1.022 0 0 1 1.016 1.11c.596.21 1.023.78 1.023 1.45 0 .848-.685 1.536-1.53 1.536-.467 0-.886-.21-1.166-.542-.364.337-.85.542-1.383.542a2.044 2.044 0 0 1-2.038-2.135Zm64.31-24.69a1.542 1.542 0 0 1-.305-1.75 1.527 1.527 0 0 1 2.037-.73c.603.287.933.919.867 1.548a2.048 2.048 0 0 1 1.01.933c.274-.145.61-.163.912-.02a1.026 1.026 0 0 1 .445 1.44c.448.447.591 1.145.305 1.75a1.527 1.527 0 0 1-2.86-.26 2.025 2.025 0 0 1-1.48-.105 2.052 2.052 0 0 1-.931-2.806ZM63.917 93.017a1.533 1.533 0 0 1-2.08-1.912 1.022 1.022 0 0 1-1.108-1.02A1.022 1.022 0 0 1 61.8 89.06a2.553 2.553 0 0 1 2.499-2.05c1.233 0 2.262.88 2.498 2.05h.051c.398 0 .779.075 1.128.215.274-.138.584-.216.912-.216a2.051 2.051 0 0 1 1.631 3.278 1.024 1.024 0 0 1-.612 1.843c-.23 0-.441-.076-.611-.205a3.05 3.05 0 0 1-2.448 1.229 3.062 3.062 0 0 1-2.93-2.188Zm67.855-32.645a3.071 3.071 0 0 0 .517-1.71 3.066 3.066 0 0 0-3.06-3.072 3.063 3.063 0 0 0-3.01 2.524 2.56 2.56 0 0 0-1.069 2.084 2.555 2.555 0 0 0 3.276 2.455 2.038 2.038 0 0 0 3.863-.919c0-.523-.196-1-.517-1.362Zm28.537-15.702a1.56 1.56 0 0 0 .098-.544c0-.848-.684-1.536-1.529-1.536a1.533 1.533 0 0 0-1.501 1.832 3.054 3.054 0 0 0-4.591.525 4.047 4.047 0 0 0-1.557-.31c-2.252 0-4.079 1.835-4.079 4.097 0 2.263 1.827 4.097 4.079 4.097h.037a3.575 3.575 0 0 0 3.533 3.072 3.554 3.554 0 0 0 2.662-1.197 5.566 5.566 0 0 0 3.456 1.197c3.098 0 5.609-2.522 5.609-5.633 0-3.11-2.511-5.632-5.609-5.632-.205 0-.408.011-.608.033Zm-18.315-2.43a3.073 3.073 0 0 0 1.394-2.578 3.066 3.066 0 0 0-3.06-3.072 3.061 3.061 0 0 0-2.906 2.11 3.552 3.552 0 0 0-3.212 1.014 2.55 2.55 0 0 0-3.06 2.509 2.555 2.555 0 0 0 3.06 2.509 3.562 3.562 0 0 0 5.483-.467c.28.318.689.518 1.145.518.845 0 1.53-.688 1.53-1.536 0-.385-.141-.737-.374-1.007Z\" fill=\"#B4EDFF\"/><ellipse cx=\"119.216\" cy=\"39.385\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><ellipse cx=\"115.136\" cy=\"64.987\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M126.695 69.848c-.243.164-.536.26-.851.26-.845 0-1.53-.688-1.53-1.537 0-.848.685-1.536 1.53-1.536.667 0 1.235.43 1.444 1.028a1.022 1.022 0 0 1 1.106 1.02c0 .566-.457 1.024-1.02 1.024-.261 0-.498-.098-.679-.26Zm23.132-40.322a1.145 1.145 0 0 1 1.936-.592c.449.45.449 1.18 0 1.63-.353.355-.881.43-1.308.224a.762.762 0 0 1-1.125.048.77.77 0 0 1 .497-1.31Zm17.336 40.964a1.145 1.145 0 0 1 1.937-.591c.448.45.448 1.179 0 1.629-.354.355-.882.43-1.308.224a.763.763 0 0 1-1.126.048.772.772 0 0 1 0-1.087.76.76 0 0 1 .497-.224Z\" fill=\"#B4EDFF\"/><ellipse cx=\"124.824\" cy=\"38.873\" rx=\".51\" ry=\".512\" fill=\"#B4EDFF\"/><ellipse cx=\"106.468\" cy=\"62.427\" rx=\".51\" ry=\".512\" fill=\"#B4EDFF\"/><ellipse cx=\"139.101\" cy=\"49.114\" rx=\".51\" ry=\".512\" fill=\"#B4EDFF\"/><ellipse cx=\"166.635\" cy=\"23.512\" rx=\".51\" ry=\".512\" fill=\"#B4EDFF\"/><ellipse rx=\".512\" ry=\".51\" transform=\"rotate(70.936 20.778 142.03) skewX(.15)\" fill=\"#B4EDFF\"/><ellipse rx=\".51\" ry=\".512\" transform=\"rotate(24.257 -106.867 439.513) skewX(.181)\" fill=\"#B4EDFF\"/><ellipse rx=\".512\" ry=\".51\" transform=\"rotate(70.936 1.926 135.158) skewX(.15)\" fill=\"#B4EDFF\"/><ellipse cx=\"165.106\" cy=\"38.361\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><ellipse cx=\"145.73\" cy=\"38.361\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><ellipse cx=\"163.066\" cy=\"63.964\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><ellipse cx=\"177.343\" cy=\"67.036\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><ellipse cx=\"142.16\" cy=\"51.162\" rx=\".51\" ry=\".512\" fill=\"#B4EDFF\"/><ellipse cx=\"175.813\" cy=\"53.21\" rx=\".51\" ry=\".512\" fill=\"#B4EDFF\"/><ellipse cx=\"136.042\" cy=\"32.729\" rx=\".51\" ry=\".512\" fill=\"#B4EDFF\"/><ellipse rx=\".512\" ry=\".51\" transform=\"rotate(70.936 21.35 147.215) skewX(.15)\" fill=\"#B4EDFF\"/><ellipse rx=\".51\" ry=\".512\" transform=\"rotate(24.257 -99.705 452.001) skewX(.181)\" fill=\"#B4EDFF\"/><ellipse rx=\".512\" ry=\".51\" transform=\"rotate(70.936 9.807 137.096) skewX(.15)\" fill=\"#B4EDFF\"/><ellipse rx=\".51\" ry=\".512\" transform=\"rotate(24.257 -126.218 423.2) skewX(.181)\" fill=\"#B4EDFF\"/><ellipse cx=\"166.635\" cy=\"42.969\" rx=\".51\" ry=\".512\" fill=\"#B4EDFF\"/><ellipse cx=\"151.339\" cy=\"61.403\" rx=\".51\" ry=\".512\" fill=\"#B4EDFF\"/><ellipse cx=\"110.037\" cy=\"66.011\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><ellipse cx=\"135.532\" cy=\"64.987\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><ellipse cx=\"143.69\" cy=\"89.565\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><ellipse cx=\"121.255\" cy=\"77.276\" rx=\"1.02\" ry=\"1.024\" fill=\"#B4EDFF\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M110.039 60.804a1.536 1.536 0 0 1-1.021-1.45c0-.848.684-1.536 1.529-1.536.667 0 1.234.429 1.444 1.027l.086-.002c.459 0 .883.152 1.224.41.186-.25.482-.41.815-.41a1.022 1.022 0 0 1 1.017 1.11c.596.21 1.023.78 1.023 1.45 0 .848-.685 1.536-1.53 1.536-.467 0-.886-.21-1.166-.542a2.028 2.028 0 0 1-1.383.542 2.044 2.044 0 0 1-2.038-2.135Zm39.753 24.333a1.543 1.543 0 0 1-.305-1.749 1.527 1.527 0 0 1 2.038-.73c.602.287.932.918.866 1.548l.079.035c.415.198.733.518.931.897.274-.145.611-.163.912-.02a1.026 1.026 0 0 1 .445 1.44c.449.447.592 1.146.306 1.751a1.527 1.527 0 0 1-2.86-.261 2.024 2.024 0 0 1-1.481-.105 2.053 2.053 0 0 1-.931-2.806Zm-.874-13.12a1.533 1.533 0 0 1-2.08-1.912 1.022 1.022 0 0 1-1.109-1.02 1.022 1.022 0 0 1 1.071-1.024 2.554 2.554 0 0 1 2.499-2.05c1.233 0 2.262.88 2.498 2.05h.051c.398 0 .779.075 1.128.215.274-.138.584-.216.912-.216 1.126 0 2.039.917 2.039 2.048 0 .461-.152.887-.408 1.23.248.186.408.484.408.819 0 .565-.456 1.024-1.02 1.024a1.01 1.01 0 0 1-.611-.205 3.052 3.052 0 0 1-2.448 1.229 3.062 3.062 0 0 1-2.93-2.188Z\" fill=\"#B4EDFF\"/><path d=\"M161.981 121.007c-.8.8-2.094.803-2.891.007a2.045 2.045 0 0 1 .006-2.891c.8-.8 2.094-.803 2.891-.006a2.045 2.045 0 0 1-.006 2.89Z\" fill=\"#B4EDFF\"/><ellipse cx=\"168.539\" cy=\"95.96\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(45 168.539 95.96)\" fill=\"#B4EDFF\"/><ellipse cx=\"147.552\" cy=\"111.179\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(45 147.552 111.179)\" fill=\"#B4EDFF\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M152.288 122.79a1.523 1.523 0 0 1-.785-.419 1.533 1.533 0 0 1 .005-2.168 1.532 1.532 0 0 1 2.167-.004 1.53 1.53 0 0 1 .295 1.747c.021.019.043.038.063.058a1.023 1.023 0 0 1-.003 1.446 1.022 1.022 0 0 1-1.742-.66Zm44.869-12.156a1.143 1.143 0 0 1 1.787.951 1.155 1.155 0 0 1-1.152 1.152 1.144 1.144 0 0 1-1.083-.766l-.065.002a.762.762 0 0 1-.765-.764.77.77 0 0 1 1.278-.575Zm-16.708 41.224a1.145 1.145 0 0 1 1.788.952 1.156 1.156 0 0 1-1.152 1.152 1.145 1.145 0 0 1-1.084-.767.762.762 0 0 1-.829-.762.77.77 0 0 1 1.277-.575Z\" fill=\"#B4EDFF\"/><ellipse cx=\"172.868\" cy=\"99.564\" rx=\".51\" ry=\".512\" transform=\"rotate(45 172.868 99.564)\" fill=\"#B4EDFF\"/><ellipse cx=\"143.233\" cy=\"103.24\" rx=\".51\" ry=\".512\" transform=\"rotate(45 143.233 103.24)\" fill=\"#B4EDFF\"/><ellipse cx=\"175.722\" cy=\"116.901\" rx=\".51\" ry=\".512\" transform=\"rotate(45 175.722 116.901)\" fill=\"#B4EDFF\"/><ellipse cx=\"213.294\" cy=\"118.267\" rx=\".51\" ry=\".512\" transform=\"rotate(45 213.294 118.267)\" fill=\"#B4EDFF\"/><ellipse rx=\".512\" ry=\".51\" transform=\"rotate(115.936 37.046 122.226) skewX(.15)\" fill=\"#B4EDFF\"/><ellipse rx=\".51\" ry=\".512\" transform=\"matrix(.35418 .93518 -.93405 .35713 174.614 163.303)\" fill=\"#B4EDFF\"/><ellipse rx=\".512\" ry=\".51\" transform=\"rotate(115.936 26.925 112.943) skewX(.15)\" fill=\"#B4EDFF\"/><ellipse cx=\"201.713\" cy=\"127.685\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(45 201.713 127.685)\" fill=\"#B4EDFF\"/><ellipse cx=\"188.012\" cy=\"113.984\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(45 188.012 113.984)\" fill=\"#B4EDFF\"/><ellipse cx=\"182.167\" cy=\"144.347\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(45 182.167 144.347)\" fill=\"#B4EDFF\"/><ellipse cx=\"190.09\" cy=\"156.614\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(45 190.09 156.614)\" fill=\"#B4EDFF\"/><ellipse cx=\"176.436\" cy=\"120.513\" rx=\".51\" ry=\".512\" transform=\"rotate(45 176.436 120.513)\" fill=\"#B4EDFF\"/><ellipse cx=\"198.784\" cy=\"145.757\" rx=\".51\" ry=\".512\" transform=\"rotate(45 198.784 145.757)\" fill=\"#B4EDFF\"/><ellipse cx=\"185.144\" cy=\"103.152\" rx=\".51\" ry=\".512\" transform=\"rotate(45 185.144 103.152)\" fill=\"#B4EDFF\"/><ellipse rx=\".512\" ry=\".51\" transform=\"rotate(115.936 36.05 125.655) skewX(.15)\" fill=\"#B4EDFF\"/><ellipse rx=\".51\" ry=\".512\" transform=\"matrix(.35418 .93518 -.93405 .35713 179.991 166.078)\" fill=\"#B4EDFF\"/><ellipse rx=\".512\" ry=\".51\" transform=\"rotate(115.936 31.402 116.233) skewX(.15)\" fill=\"#B4EDFF\"/><ellipse rx=\".51\" ry=\".512\" transform=\"matrix(.35418 .93518 -.93405 .35713 164.065 161.959)\" fill=\"#B4EDFF\"/><ellipse cx=\"199.536\" cy=\"132.025\" rx=\".51\" ry=\".512\" transform=\"rotate(45 199.536 132.025)\" fill=\"#B4EDFF\"/><ellipse cx=\"175.685\" cy=\"134.243\" rx=\".51\" ry=\".512\" transform=\"rotate(45 175.685 134.243)\" fill=\"#B4EDFF\"/><ellipse cx=\"143.222\" cy=\"108.298\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(45 143.222 108.298)\" fill=\"#B4EDFF\"/><ellipse cx=\"161.974\" cy=\"125.601\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(45 161.974 125.601)\" fill=\"#B4EDFF\"/><ellipse cx=\"150.363\" cy=\"148.749\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(45 150.363 148.749)\" fill=\"#B4EDFF\"/><ellipse cx=\"143.189\" cy=\"124.195\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(45 143.189 124.195)\" fill=\"#B4EDFF\"/><path d=\"M61.288 117.154a2.043 2.043 0 0 1 .742-2.793 2.043 2.043 0 0 1 2.79.754c.566.979.233 2.23-.742 2.793a2.044 2.044 0 0 1-2.79-.754Z\" fill=\"#B4EDFF\"/><ellipse cx=\"83.784\" cy=\"129.973\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(150 83.784 129.973)\" fill=\"#B4EDFF\"/><ellipse cx=\"74.515\" cy=\"105.761\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(150 74.515 105.761)\" fill=\"#B4EDFF\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M62.075 107.331c.128-.263.334-.493.607-.65a1.533 1.533 0 0 1 2.093.565 1.533 1.533 0 0 1-.557 2.095 1.531 1.531 0 0 1-1.764-.167 1.023 1.023 0 0 1-1.468-.331 1.022 1.022 0 0 1 1.089-1.512Zm.128 46.486a1.148 1.148 0 0 1-1.381 1.48 1.155 1.155 0 0 1-.815-1.411 1.145 1.145 0 0 1 1.021-.848.763.763 0 0 1 .95-.604.771.771 0 0 1 .544.941.76.76 0 0 1-.319.442Zm-35.495-26.808a1.148 1.148 0 0 1-1.382 1.481 1.156 1.156 0 0 1-.814-1.411 1.145 1.145 0 0 1 1.02-.849.763.763 0 0 1 .95-.604.771.771 0 0 1 .544.941.76.76 0 0 1-.318.442Z\" fill=\"#B4EDFF\"/><ellipse cx=\"79.182\" cy=\"133.22\" rx=\".51\" ry=\".512\" transform=\"rotate(150 79.182 133.22)\" fill=\"#B4EDFF\"/><ellipse cx=\"83.302\" cy=\"103.644\" rx=\".51\" ry=\".512\" transform=\"rotate(150 83.302 103.644)\" fill=\"#B4EDFF\"/><ellipse cx=\"61.698\" cy=\"131.49\" rx=\".51\" ry=\".512\" transform=\"rotate(150 61.698 131.49)\" fill=\"#B4EDFF\"/><ellipse cx=\"50.654\" cy=\"167.429\" rx=\".51\" ry=\".512\" transform=\"rotate(150 50.654 167.429)\" fill=\"#B4EDFF\"/><ellipse rx=\".512\" ry=\".51\" transform=\"rotate(-139.064 41.22 48.855) skewX(.15)\" fill=\"#B4EDFF\"/><ellipse rx=\".51\" ry=\".512\" transform=\"rotate(174.257 5.612 59.636) skewX(.181)\" fill=\"#B4EDFF\"/><ellipse rx=\".512\" ry=\".51\" transform=\"rotate(-139.064 42.308 36.476) skewX(.15)\" fill=\"#B4EDFF\"/><ellipse cx=\"44.553\" cy=\"153.805\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(150 44.553 153.805)\" fill=\"#B4EDFF\"/><ellipse cx=\"61.334\" cy=\"144.117\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(150 61.334 144.117)\" fill=\"#B4EDFF\"/><ellipse cx=\"33.519\" cy=\"130.613\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(150 33.519 130.613)\" fill=\"#B4EDFF\"/><ellipse cx=\"19.619\" cy=\"135.09\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(150 19.619 135.09)\" fill=\"#B4EDFF\"/><ellipse cx=\"58.024\" cy=\"131.246\" rx=\".51\" ry=\".512\" transform=\"rotate(150 58.024 131.246)\" fill=\"#B4EDFF\"/><ellipse cx=\"27.856\" cy=\"146.299\" rx=\".51\" ry=\".512\" transform=\"rotate(150 27.856 146.299)\" fill=\"#B4EDFF\"/><ellipse cx=\"72.54\" cy=\"144.15\" rx=\".51\" ry=\".512\" transform=\"rotate(150 72.54 144.15)\" fill=\"#B4EDFF\"/><ellipse rx=\".512\" ry=\".51\" transform=\"rotate(-139.064 38.209 50.028) skewX(.15)\" fill=\"#B4EDFF\"/><ellipse rx=\".51\" ry=\".512\" transform=\"rotate(174.257 3.464 61.771) skewX(.181)\" fill=\"#B4EDFF\"/><ellipse rx=\".512\" ry=\".51\" transform=\"rotate(-139.064 42.412 41.501) skewX(.15)\" fill=\"#B4EDFF\"/><ellipse rx=\".51\" ry=\".512\" transform=\"rotate(174.257 7.873 54.816) skewX(.181)\" fill=\"#B4EDFF\"/><ellipse cx=\"40.925\" cy=\"150.579\" rx=\".51\" ry=\".512\" transform=\"rotate(150 40.925 150.579)\" fill=\"#B4EDFF\"/><ellipse cx=\"44.955\" cy=\"126.967\" rx=\".51\" ry=\".512\" transform=\"rotate(150 44.955 126.967)\" fill=\"#B4EDFF\"/><ellipse cx=\"78.419\" cy=\"102.325\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(150 78.419 102.325)\" fill=\"#B4EDFF\"/><ellipse cx=\"56.852\" cy=\"115.959\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(150 56.852 115.959)\" fill=\"#B4EDFF\"/><ellipse cx=\"37.498\" cy=\"98.753\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(150 37.498 98.753)\" fill=\"#B4EDFF\"/><ellipse cx=\"63.072\" cy=\"98.178\" rx=\"1.02\" ry=\"1.024\" transform=\"rotate(150 63.072 98.178)\" fill=\"#B4EDFF\"/><path opacity=\".5\" fill=\"url(#f)\" d=\"M58.959 42h101v111h-101z\"/><path opacity=\".5\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M62.645 49.233v-7.6h97.714V153.46h-7.6v-49.942h-41.257v49.942h-7.6v-49.942H62.644v-7.6h41.258V49.232H62.644Zm48.857 46.685h41.257V49.233h-41.257v46.685Z\" fill=\"url(#g)\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M162.53 39.46H57.216v116.063H162.53V39.461Zm-7.6 7.601H64.816v100.972h90.114V47.061Z\" fill=\"#442711\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M162.53 39.46H57.216v116.063H162.53V39.461Zm-4.343 4.344H61.559v106.4h96.628v-106.4Z\" fill=\"#4F311A\"/><path fill=\"#442711\" d=\"M106.221 43.804h4.259v106.982h-4.259z\"/><path fill=\"#4F311A\" d=\"M109.414 43.803h4.259v106.982h-4.259z\"/><path fill=\"#442711\" d=\"M61.559 101.38v-4.356h96.776v4.356z\"/><path fill=\"#442711\" d=\"M107.159 101.346v-9.771h6.514v9.771z\"/><path fill=\"#4F311A\" d=\"M61.558 98.09v-3.257h96.629v3.257z\"/><path d=\"M185.347 183.069c1.512.756 4.936.315 6.458 0-1.104.664-3.806 1.956-5.786 1.809-1.98-.146-7.258-4.732-9.65-7.007 2.835.315 7.088 4.253 8.978 5.198Zm-17.57 4.284c3.374.954 11.734 2.598 15.492 3.3-2.75.917-16.133-.641-19.8-2.016-2.933-1.1-12.344-3.759-16.683-4.95 3.666.618 16.775 2.475 20.991 3.666Z\" fill=\"#C24006\"/><path d=\"M64.666 156.433c-7.029 1.048-14.094 2.811-14.094 2.811a21.23 21.23 0 0 0-2.439-1.382c-.733-.342-1.202-.361-1.99-.392-.522-.021-1.183-.047-2.155-.177-2.438-.325-2.925-.894-2.925-2.194 0-1.041 1.95-2.005 2.925-2.357-.618.077-1.7.172-2.77.179l-.128.359c-.622.213-1.653.471-2.917.787-3.041.762-7.435 1.862-10.764 3.489-4.746 2.32-8.89 7.442-10.789 10.639l-.455 1.397c-.088 1.82-.009 5.967 1.006 7.997-.302 3.323-.725 10.694 0 13.594.105.419.212.874.325 1.355.864 3.671 2.067 8.781 5.113 10.063.931.393 1.942 1.05 3.07 1.783 3.037 1.976 6.915 4.497 12.335 3.836 3.709-.452 6.74-1.446 9.5-2.351 2.77-.908 5.267-1.727 7.9-1.818 5.256-.181 15.769-3.987 22.656-7.612 2.414-1.271 7.813-4.612 14.01-8.448 11.481-7.108 25.704-15.912 28.764-16.383 2.669-.41 5.163.458 7.548 1.288 1.828.636 3.591 1.25 5.321 1.25 1.949 0 4.245-.704 7.206-1.612 3.095-.948 6.915-2.12 11.825-2.942 1.357-.227 2.572-.426 3.66-.604 6.616-1.081 8.509-1.391 8.665-2.636.016-.132.037-.279.06-.438.227-1.592.632-4.423-1.51-5.906-2.357-1.631-17.581-9.787-21.025-9.787-1.207 0-2.348.112-3.429.217-2.003.196-3.804.372-5.452-.217a14.18 14.18 0 0 1-1.531-.67c-1.496-.732-2.816-1.377-7.531-.961-2.636.232-8.618 1.327-15.127 2.517-8.714 1.594-18.372 3.361-22.21 3.464-2.12.058-15.62.815-22.648 1.862Z\" fill=\"#4F311A\"/><path d=\"m89.857 189.364-.006.007c8.398 1.994 27.006 6.561 34.256 8.881 4.089 1.309 7.813 3.063 11.478 4.79 4.457 2.1 8.828 4.16 13.666 5.327 5.706 1.378 13.433 1.846 18.718 1.846 3.173 0 7.106.22 10.67.419 2.955.165 5.656.316 7.463.316 3.19 0 5.621-2.64 6.225-3.909.174-.069.396-.15.652-.242 1.081-.393 2.769-1.006 3.981-1.929 2.027-1.544 3.499-7.029 3.137-9.748-.171-1.279.343-3.758.884-6.372.609-2.941 1.253-6.053.998-7.816-.181-1.247.647-3.149 1.482-5.066.97-2.228 1.95-4.477 1.365-5.743-1.087-2.357-12.198-16.926-26.879-18.921-11.745-1.595-18.799 2.824-20.128 5.361l-.213.031c2.86 1.511 5.2 2.848 6.013 3.41 2.142 1.483 1.737 4.314 1.51 5.906-.023.159-.044.306-.061.438-.155 1.245-2.048 1.554-8.664 2.636a971.1 971.1 0 0 0-3.66.604c-4.91.822-8.731 1.993-11.825 2.942-2.961.907-5.257 1.611-7.206 1.611-1.73 0-3.493-.614-5.321-1.25-2.385-.83-4.879-1.698-7.548-1.287-3.06.471-17.283 9.275-28.765 16.382l-2.222 1.376Z\" fill=\"#4F311A\"/><path d=\"M164.847 192.714c4.694.617 17.292.257 23.004 0l-2.806 3.256c-4.282.073-14.316.176-20.198 0-5.881-.176-25.729-5.95-34.918-8.814h7.129c5.403 0 21.923 4.785 27.789 5.558Zm14.042-21.458c8.317 1.512 11.341 5.25 11.814 6.93-4.253 3.15-8.506-3.15-13.389-4.41-4.883-1.261-17.484 1.102-20.004 1.26-2.016.126-10.081-.788-13.861-1.26 2.782-.473 8.789-1.355 10.553-1.103 2.205.315 14.491-3.308 24.887-1.417Z\" fill=\"#9D6D41\" fill-opacity=\".5\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M157.234 156.294c-.35-1.025.435-5.145 1.275-7.126.84-1.98 4.252-5.5 4.252-5.5s-.292-3.797-1.86-8.121c-1.389-3.831-2.268-8.768-1.818-11.39.726-4.22.869-8.156.869-8.156 2.411.762 5.923 1.76 7.864 2.311.661.188 1.14.324 1.332.382.167.05.771.156 1.671.315 4.168.736 14.68 2.592 17.547 5.148 3.485 3.109 7.458 11.224 8.478 13.378 1.072 2.263 4.163 9.585 4.726 11.05.053.139.176.426.348.827.95 2.22 3.393 7.93 3.78 11.221.318 2.701.567 8.743-.658 10.062a.154.154 0 0 1-.055.036 1.912 1.912 0 0 0-.16-.605c-1.087-2.356-12.198-16.926-26.879-18.92-11.647-1.582-18.681 2.75-20.094 5.297l-.618-.209ZM60.16 119.022l-.108.017c-2.441.368-5.257.793-7.617.793-4.517-.279-14.102 1.577-18.652 5.458-5.688 4.851-17.45 24.951-17.617 31.307-.024.896-.051 1.796-.078 2.684-.126 4.153-.244 8.021.078 9.72 1.617-3.066 6.073-8.92 11.244-11.448 3.328-1.627 7.722-2.727 10.763-3.488 1.264-.317 2.295-.575 2.917-.788 4.275 0 12.51-.401 17.394-1.846l.011-.783c.123-8.638.269-18.897 1.661-25.582.43-2.064.378-4.07.004-6.044Z\" fill=\"#4F311A\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M165.238 118.416c4.02 1.705 12.862 5.92 16.077 9.135 2.549 2.549 4.509 6.272 6.255 9.588 1.008 1.913 1.944 3.69 2.88 5.028 2.524 3.605 3.989 11.422 2.092 15.226 5.709 4.068 9.844 9.015 11.532 11.488.448-2.434.63-6.024-.555-9.47-2.033-5.914-13.353-33.71-18.9-35.091-3.884-.966-10.124-2.957-15.24-4.59-1.508-.481-2.917-.93-4.141-1.314Z\" fill=\"#442711\"/><path d=\"M158.509 149.166c-.84 1.98-1.692 6.316-1.342 7.341l.618.209c.609-1.101 2.281-2.575 4.924-3.768a91.565 91.565 0 0 1-.912-2.801c-.615-2.019.401-5.07.913-6.387.512-1.317-.173-2.234-.18-2.241-.492.514-3.253 5.835-4.021 7.647Zm-129.492-4.977c-.831-2.287 4.504-13.252 7.276-18.449 0-.266-2.313.889-5.254 4.408-2.906 3.476-8.355 15.474-10.042 22.007 2.338-3.8 8.921-4.574 11.05-4.425-.664-.228-2.198-1.254-3.03-3.541Z\" fill=\"#442711\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"m161.41 168.128 3.416-1.279c-1.61-1.032-5.994-3.096-10.65-3.096-4.656 0-14.323.661-18.574.991 1.032-.949 2.972-3.071 2.476-3.963-.495-.892-1.857-.371-2.476 0-20.185 8.462-61.767 25.658-66.62 26.747-3.204.719-7.545 3.233-11.368 5.445-3.419 1.98-6.423 3.719-7.826 3.719-.844 0-2.168.06-3.688.129-3.83.173-8.903.403-10.677-.129-1.98-.595-.33-1.899.743-2.477-1.527-.908-4.854-2.823-5.943-3.219-1.09-.397 0-3.468 21.783-8.832-24.758 5.219-21.96-3.314-20.536-7.657l.115-.352c1.09-3.368 6.15-6.852 8.544-8.173-.62.165-3.764 1.313-11.392 4.582-7.406 3.174-10.976 9.952-11.933 13.214-.084 2.876-.031 5.812.366 7.403.105.419.212.875.325 1.354v.001c.865 3.672 2.067 8.781 5.113 10.064.931.392 1.943 1.05 3.07 1.782 3.037 1.976 6.915 4.497 12.336 3.836 3.708-.452 6.74-1.446 9.5-2.351 2.77-.908 5.266-1.726 7.9-1.817 5.256-.182 15.768-3.988 22.655-7.613 2.415-1.27 7.813-4.612 14.01-8.448 11.481-7.107 25.704-15.912 28.765-16.382 2.668-.411 5.162.457 7.548 1.287 1.827.636 3.591 1.25 5.32 1.25 1.95 0 4.246-.704 7.206-1.611 3.095-.949 6.915-2.12 11.825-2.943 1.357-.227 2.573-.426 3.661-.603 2.121-.347 3.758-.615 5.006-.859Z\" fill=\"#442711\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"m89.851 189.37.006-.008 2.195-1.358.027-.017c11.482-7.107 25.705-15.912 28.765-16.382 2.13-.328 4.149.159 6.091.791-1.981.262-4.695.715-6.986 1.37-3.257.93-15.313 9.013-20.934 12.938 4.894.242 15.933.814 20.934 1.163 3.216.225 10.282 2.143 17.969 4.23 7.251 1.968 15.055 4.086 20.7 5.074 7.595 1.329 16.181.55 21.226.093 2.68-.243 4.36-.395 4.36-.093 0 .698-1.841 2.035-2.762 2.617 1.249.454 12.212.761 17.915.865-.576 1.82-1.422 3.473-2.397 4.216-1.212.923-2.9 1.536-3.981 1.928-.256.093-.478.174-.652.243-.604 1.269-3.035 3.909-6.225 3.909-1.807 0-4.508-.151-7.462-.316h-.001c-3.564-.2-7.497-.42-10.67-.42-5.285 0-13.012-.467-18.718-1.845-4.838-1.167-9.209-3.227-13.666-5.327-3.665-1.727-7.389-3.481-11.478-4.79-7.25-2.32-25.858-6.887-34.256-8.881Z\" fill=\"#442711\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M50.572 159.242S58 156.46 64.9 155.752c6.9-.707 20.294-1.125 22.414-1.182 3.839-.104 13.497-1.871 22.21-3.465 3.229-.59 6.329-1.157 8.954-1.607l6.878-.712c-8.171 2.875-26.027 9.019-32.08 10.592-6.256 1.627-23.684 4.805-31.329 6.2-1.601.292-2.773.505-3.324.61 3.463-2.05 10.422-5.952 13.075-6.688-10.711 1.881-32.338 6.083-38.497 8.807-6.82 3.016-14.207 10.124-16.351 14.231.08-1.918.21-3.714.322-4.951-1.015-2.03-1.094-6.177-1.007-7.997l.456-1.397c1.899-3.197 6.043-8.319 10.789-10.639.6-.293 1.235-.57 1.89-.83-.483 2.539-1.027 5.883-.919 7.247v2.217a305.162 305.162 0 0 1 2.16-4.742c.455-.959.779-3.509.96-5.518 2.36-.783 4.778-1.388 6.672-1.862 1.265-.317 2.295-.575 2.917-.788l.129-.359a25.605 25.605 0 0 0 2.77-.179c-.975.352-2.926 1.317-2.926 2.357 0 1.3.488 1.869 2.926 2.194.971.13 1.633.156 2.155.177.788.031 1.256.05 1.99.392a21.23 21.23 0 0 1 2.438 1.382Z\" fill=\"#9D6D41\" fill-opacity=\".5\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M80.403 154.593c-.753-1.785-2.807-5.616-4.996-6.662a38.197 38.197 0 0 0-2.158-.945c-1.217-.5-1.914-.786-2.72-1.672-.352-.388-.746-1.005-1.188-1.697-1.05-1.645-2.371-3.714-4.046-4.132-1.605-.402-4.24-.69-6.498-.937a96.96 96.96 0 0 1-2.85-.337c-2.327-.333-9.51.266-10.176.532-.532.213-.221.583 0 .742-1.786-.246-6.492-.806-7.015.751-.4 1.188.33 1.541 1.169 1.937-1.274.028-4.097.179-5.202.569-1.382.488-4.308 2.114-3.495 3.414l.257.415c.604.98.83 1.348 1.694 1.779-.325.705-.65 2.276.65 2.926 1.234.617 2.609.907 3.946 1.188.424.089.845.178 1.256.275.586.14 1.382.185 2.187.179v-.002a25.605 25.605 0 0 0 2.77-.179l-.01.004.01-.002c-.975.353-2.925 1.317-2.925 2.357v.082c.022 1.241.54 1.792 2.925 2.11.972.13 1.633.156 2.155.177.788.031 1.257.05 1.99.392a21.23 21.23 0 0 1 2.439 1.382s7.427-2.783 14.327-3.49c3.61-.37 8.998-.661 13.619-.862l1.885-.294Z\" fill=\"#4F311A\"/><path d=\"M33.297 150.872c.136.156.31.293.532.404 1.234.617 2.609.907 3.946 1.188.424.089.845.178 1.256.275.586.14 1.383.185 2.188.179h.045a25.26 25.26 0 0 0 2.725-.179l-.075.028c1.74-.314 3.646-.604 6.17-.342 2.02.208 4.283.902 6.4 1.55 1.398.429 2.732.837 3.89 1.074-.893-.926-3.277-2.88-5.66-3.277-2.98-.497-9.635-.696-11.025-.696-.634 0-2.112-.165-3.722-.344-1.924-.215-4.036-.451-5.118-.451-1.24 0-1.553.323-1.552.591Zm19.756 7.526c-.702-.745-2.518-2.183-4.472-2.274-1.842-.086-3.494-.044-4.578-.017-.379.009-.689.017-.913.017-.639 0-1.556-.621-2.028-1.006.006 1.285.502 1.85 2.926 2.173a21.11 21.11 0 0 0 2.155.176c.788.032 1.257.051 1.99.393a21.23 21.23 0 0 1 2.439 1.382s.948-.356 2.481-.844Z\" fill=\"#442711\"/><path d=\"M52.57 138.165c.478.347 1.29 1.134.717 1.499-.42.267-1.399.311-2.648.367-.885.039-1.905.085-2.959.22-2.24.287-2.1.694-2.1.694s-.3.083-.365.083c-.416 0-1.86.165-3.006-.083-.385-.083-.695-.151-.838-.17l-.053-.007c-.43-.057-1.707-.226-2.587-.455l.025-.077c.523-1.557 5.229-.997 7.015-.751-.221-.158-.532-.529 0-.741.448-.18 3.851-.51 6.737-.605l.062.026Zm-21.332 6.975c.953.243 1.97.409 2.596.45 1.108.071 2.592-.253 4.116-.585 1.37-.299 2.77-.605 3.959-.637 2.008-.054 9.341-.022 12.757 0 .248-.068 1.664-2.892-.816-2.658l-1.282.124c-3.15.304-8.099 1.02-10.184.973-.878-.02-1.633-.122-2.421-.228-.805-.109-1.645-.223-2.687-.259-1.008.091-1.998.226-2.553.422-1.035.366-2.938 1.37-3.485 2.398Zm1.67 4.187c.281.227 1.09.334 2.69.334 1.485 0 2.583-.258 3.717-.525 1.042-.245 2.114-.497 3.544-.562 2.128-.096 3.705.29 5.246.667.62.152 1.236.303 1.879.42 2.239.407 5.768.067 6.446 0 .543-.054.723-2.172 0-2.172h-7.193c-.792 0-1.648-.091-2.672-.199-1.783-.188-4.077-.43-7.438-.344-4.784.123-5.3.744-5.855 1.413-.06.072-.12.144-.185.215 0 0 0 .001 0 0a3.403 3.403 0 0 0-.18.753Zm8.222 5.428c.943.164 2.698.01 3.968-.414 1.425-.475 4.478-.746 5.768-.61 1.289.135 3.528.068 2.171-.747-1.56-.429-5.334-1.194-7.94-.814a9.959 9.959 0 0 0-2.504.696 23.121 23.121 0 0 0 1.395-.128c-.868.314-2.508 1.112-2.859 2.017Zm17.862 29.177c-4.329 1.049-19.293 4.372-26.234 5.903 4.482.765 16.888 1.476 30.66-1.804 13.773-3.279 40.17-15.904 51.647-21.806-16.888 5.465-51.745 16.658-56.073 17.707Zm115.589-18.526v-9.181c3.935-1.049 5.247-.437 5.411 0v9.181h-5.411Z\" fill=\"#9D6D41\" fill-opacity=\".5\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M168.247 151.243v14.535l6.368 1.537-9.618-.687c.036-.088.059-.181.072-.28.016-.132.037-.279.06-.438.227-1.592.632-4.423-1.51-5.906-.812-.562-3.153-1.899-6.013-3.41l.213-.031c.909-1.735 4.495-4.35 10.428-5.32Z\" fill=\"#442711\"/><path d=\"M103.434 64.3c1.438 3.898-.239 7.553-3.115 7.553-6.23 0-15.337-7.552-20.37-7.552-5.032 0-8.627 11.45-10.783 11.694-2.157.243-.954-7.911 0-11.695 1.247-4.95 2.636-9.5 6.71-11.937 4.073-2.436 26.121 8.04 27.558 11.938Z\" fill=\"#4F311A\"/><circle cx=\"88.959\" cy=\"77\" r=\"6\" fill=\"#fff\"/><circle cx=\"88.959\" cy=\"77\" r=\"3\" fill=\"#000\"/><circle cx=\"91.959\" cy=\"76\" r=\"2\" fill=\"#fff\"/><path d=\"M116.488 65.229c-1.453 3.875.242 7.51 3.149 7.508 6.298 0 15.502-7.508 20.588-7.508 5.087 0 8.72 11.384 10.9 11.626 2.18.242.964-7.865 0-11.626-1.261-4.92-2.665-9.446-6.782-11.868-4.118-2.422-26.402 7.993-27.855 11.868Z\" fill=\"#4F311A\"/><circle cx=\"136.602\" cy=\"78.492\" r=\"6\" fill=\"#fff\"/><circle cx=\"136.958\" cy=\"77.991\" r=\"3\" fill=\"#000\"/><circle cx=\"139.885\" cy=\"76.69\" r=\"2\" fill=\"#fff\"/></g><defs><linearGradient id=\"b\" x1=\"107.451\" y1=\"37.381\" x2=\"98.394\" y2=\"69.929\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#67E4FF\" stop-opacity=\".45\"/><stop offset=\"1\" stop-color=\"#5FE2FF\"/></linearGradient><linearGradient id=\"c\" x1=\"106.508\" y1=\"37.385\" x2=\"97.472\" y2=\"69.899\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#BBF3FF\" stop-opacity=\".45\"/><stop offset=\"1\" stop-color=\"#95ECFF\"/></linearGradient><linearGradient id=\"d\" x1=\"106.919\" y1=\"37.381\" x2=\"114.525\" y2=\"70.714\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#67E4FF\" stop-opacity=\".45\"/><stop offset=\"1\" stop-color=\"#5FE2FF\"/></linearGradient><linearGradient id=\"e\" x1=\"112.342\" y1=\"37.381\" x2=\"120.554\" y2=\"70.407\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#BBF3FF\" stop-opacity=\".45\"/><stop offset=\"1\" stop-color=\"#95ECFF\"/></linearGradient><linearGradient id=\"f\" x1=\"166.243\" y1=\"22.625\" x2=\"84.031\" y2=\"161.783\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#BBF3FF\" stop-opacity=\".45\"/><stop offset=\"1\" stop-color=\"#95ECFF\"/></linearGradient><linearGradient id=\"g\" x1=\"166.439\" y1=\"22.113\" x2=\"82.032\" y2=\"159.314\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#BBF3FF\" stop-opacity=\".45\"/><stop offset=\"1\" stop-color=\"#95ECFF\"/></linearGradient><clipPath id=\"a\"><path fill=\"#fff\" transform=\"translate(.958)\" d=\"M0 0h220v220H0z\"/></clipPath></defs></svg>");
+  if (expirationDate == null) {
+    return null;
+  }
 
-/***/ }),
-/* 924 */
-/***/ (function(module, exports) {
+  var noticePeriodInDays = computeExpirationNoticePeriodInDays(file);
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"220\" viewBox=\"0 0 220 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g filter=\"url(#a)\">\n|     <path d=\"M26 97c0-31.48 25.52-57 57-57s57 25.52 57 57v110H26V97Z\" fill=\"url(#b)\"/>");
+  if (noticePeriodInDays == null) {
+    return null;
+  }
 
-/***/ }),
-/* 925 */
-/***/ (function(module, exports) {
+  return (0, _sub.default)(expirationDate, {
+    days: noticePeriodInDays
+  });
+};
+/**
+ * @param {IOCozyFile} file - io.cozy.files document
+ * @returns {string | null} Expiration notice link
+ * @description Computes and returns the expiration notice link of the given file, or null if it has none
+ */
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"50\" height=\"50\" viewBox=\"0 0 50 50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <path opacity=\".7\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M35.483 27.953a.5.5 0 0 1 .037.706 13.966 13.966 0 0 1-10.4 4.627.5.5 0 1 1 0-1c3.832 0 7.277-1.657 9.657-4.296a.5.5 0 0 1 .706-.037Z\" fill=\"#2B98BA\"/>");
 
-/***/ }),
-/* 926 */
-/***/ (function(module, exports) {
+exports.computeExpirationNoticeDate = computeExpirationNoticeDate;
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path d=\"M14.601 164.587c-1.626-4.764 13.037-8.016 16.424-8.76a166.41 166.41 0 0 1 62.627-7.764l2.532.171c54.185 0 92.52 7.593 97.261 12.803 4.741 5.211-5.637 6.915 0 9.756 4.636 2.335 23.192 3.04 22.515 11.973-.678 8.932-54.892 3.579-61.665 7.301-6.774 3.722 10.159 5.955 6.773 11.166-2.362 3.634-54.862 2.977-64.345 0-9.482-2.978 3.054-6.839 4.742-11.166 2.032-5.21-14.224-3.722-32.511-3.722-18.287 0-55.539-1.488-60.28-5.21s4.741-6.699 8.128-8.188c3.386-1.489-.17-2.405-2.201-8.36Z\" fill=\"url(#a)\"/>\n|   <path d=\"M54.543 190.555c-5.258 0-8.714.379-10.9.854-2.273.495-4.818 2.531-2.504 2.765 3.696.374 11.626.149 16.713-.366 8.038-.813 6.62 1.084 20.803.813 14.183-.271-2.364-1.355 0-3.388s-10.874-.678-24.112-.678Z\" fill=\"url(#b)\"/>");
+var computeExpirationNoticeLink = function computeExpirationNoticeLink(file) {
+  var _file$metadata12, _file$metadata12$qual;
 
-/***/ }),
-/* 927 */
-/***/ (function(module, exports) {
+  var qualificationLabel = (_file$metadata12 = file.metadata) === null || _file$metadata12 === void 0 ? void 0 : (_file$metadata12$qual = _file$metadata12.qualification) === null || _file$metadata12$qual === void 0 ? void 0 : _file$metadata12$qual.label;
+  if (!qualificationLabel) return null;
+  return EXPIRATION_LINK_BY_LABEL[qualificationLabel] || null;
+};
+/**
+ * @param {IOCozyFile} file - io.cozy.files document
+ * @returns {boolean}
+ * @description Tells if the given file is expiring and if today is after its expiration date
+ */
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"220\" viewBox=\"0 0 220 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path d=\"M95.186 184.487h32.32s2.02 24.913 11.447 24.913c-16.16 2.02-51.847 4.04-54.54 0 8.753 0 10.773-24.913 10.773-24.913Z\" fill=\"url(#a)\"/>\n|   <rect x=\"76.333\" y=\"208.727\" width=\"68.679\" height=\"6.733\" rx=\"1\" fill=\"#E0E0E0\"/>");
 
-/***/ }),
-/* 928 */
-/***/ (function(module, exports) {
+exports.computeExpirationNoticeLink = computeExpirationNoticeLink;
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"220\" viewBox=\"0 0 220 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <circle cx=\"192.327\" cy=\"112.5\" r=\"4.5\" fill=\"#345A7D\"/>");
+var isExpired = function isExpired(file) {
+  var now = new Date();
+  var expirationDate = computeExpirationDate(file);
+  var isExpired = expirationDate != null && expirationDate <= now;
+  return isExpired;
+};
+/**
+ * @param {IOCozyFile} file - io.cozy.files document
+ * @returns {boolean}
+ * @description Tells if the given file is expiring and if today is between its expiration notice date and its expiration date
+ */
 
-/***/ }),
-/* 929 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"120\" height=\"122\" viewBox=\"0 0 120 122\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g filter=\"url(#a)\">\n|     <ellipse cx=\"61.2\" cy=\"110.4\" rx=\"32.4\" ry=\"7.2\" fill=\"#000\" fill-opacity=\".15\"/>");
+exports.isExpired = isExpired;
 
-/***/ }),
-/* 930 */
-/***/ (function(module, exports) {
+var isExpiringSoon = function isExpiringSoon(file) {
+  var now = new Date();
+  var expirationDate = computeExpirationDate(file);
+  var expirationNoticeDate = computeExpirationNoticeDate(file);
+  var isExpiringSoon = expirationDate != null && expirationNoticeDate != null && expirationNoticeDate <= now && now < expirationDate;
+  return isExpiringSoon;
+};
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"120\" height=\"121\" viewBox=\"0 0 120 121\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path fill=\"url(#a)\" d=\"M39 75.031h40v38H39z\"/>\n|   <path opacity=\".5\" fill=\"#FFE76A\" d=\"M39 75.031h40v1H39z\"/>");
+exports.isExpiringSoon = isExpiringSoon;
 
 /***/ }),
-/* 931 */
-/***/ (function(module, exports) {
+/* 825 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"120\" height=\"120\" viewBox=\"0 0 120 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <path d=\"m52.078 77.803 16.429-23.848L65.73 42.92c-.96-3.82 1.382-7.64 5.233-8.536l7.997-1.859a7.25 7.25 0 0 1 1.385-.184l7.037-7.575c1.783-1.92 4.824-2.024 6.791-.234a4.767 4.767 0 0 1 1.44 4.68 5.215 5.215 0 0 1 4.973 1.154c1.728 1.573 2.141 4.027 1.17 5.987a5.353 5.353 0 0 1 4.279 1.356 5.213 5.213 0 0 1 1.511 5.36 4.702 4.702 0 0 1 3.803 1.184c1.892 1.721 2.035 4.612.321 6.457l-6.456 6.95a4.5 4.5 0 0 1-1.435 1.037c-.571 2.134-1.722 4.25-3.426 6.083-2.779 2.991-6.45 4.61-9.866 4.596L72.882 94.174c-10.061-7.333-10.402-8.867-20.804-16.37Z\" fill=\"#70E5FF\"/>");
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return add; });
+/* harmony import */ var _addDays_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(826);
+/* harmony import */ var _addMonths_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(830);
+/* harmony import */ var _toDate_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(828);
+/* harmony import */ var _lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(829);
+/* harmony import */ var _lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(827);
+function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
 
-/***/ }),
-/* 932 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"120\" height=\"130\" viewBox=\"0 0 120 130\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path d=\"m88.51 16.888.896.602-10.904 16.986a.704.704 0 0 0 1.167.785l11.622-16.503.81.546-13.235 21.939a6.534 6.534 0 0 1-.743 1.226l-.137.226-.028-.019c-1.84 2.208-5.107.2-8.51 3.294-3.404 3.093-26.638 42.497-32.138 51.61-1.534 2.543-3.333 2.195-5.003 1.072-1.671-1.125-2.546-3.082-.892-5.04 6.11-7.936 34.33-45.29 35.73-49.17 1.401-3.88-1.56-6.593-.195-9.156l-.029-.02.164-.222a6.606 6.606 0 0 1 .8-1.085l15.245-20.69.714.48L72.94 30.735a.704.704 0 0 0 1.167.785L85.73 15.017l.895.603-10.904 16.986a.704.704 0 0 0 1.167.785L88.51 16.888Z\" fill=\"url(#a)\"/>\n|   <path d=\"M32.306 92.45c6.723-8.783 27.984-36.977 33.55-45.722.529-.46 1.018-.888 1.453-1.27-3.528 6.148-11.451 19.688-14.925 24.656-2.988 4.271-4.084 5.965-5.053 7.462-.44.68-.854 1.318-1.406 2.139-1.768 2.629-6.917 9.79-11.09 11.797a13.36 13.36 0 0 1-2.529.939Z\" fill=\"#E8E8E8\"/>");
 
-/***/ }),
-/* 933 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path d=\"M55.972 199.581a2.996 2.996 0 0 1 1.774-.581h103.536c.638 0 1.26.203 1.774.581l14.318 10.5c2.338 1.714 1.126 5.419-1.774 5.419H43.428c-2.9 0-4.112-3.705-1.774-5.419l14.318-10.5Z\" fill=\"#1E1E1E\" />\n|   <path d=\"M62.764 85.5c-6 10.667-19.3 34.6-18.5 47 1 15.5 11.5 32 7.5 42.5-3.2 8.4 5 15.5 9.5 18\" stroke=\"#E3C041\" />");
 
-/***/ }),
-/* 934 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"120\" height=\"120\" viewBox=\"0 0 120 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g clip-path=\"url(#clip0)\">\n| <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M73.1579 63.3373C73.1579 76.997 71.4394 89.2214 68.7498 97.911C67.3982 102.278 65.8627 105.549 64.325 107.651C62.7319 109.828 61.6178 110.137 61.1579 110.137C60.698 110.137 59.5839 109.828 57.9909 107.651C56.4532 105.549 54.9177 102.278 53.5661 97.911C50.8765 89.2214 49.1579 76.997 49.1579 63.3373C49.1579 49.6776 50.8765 37.4532 53.5661 28.7636C54.9177 24.397 56.4532 21.1253 57.9909 19.024C59.5839 16.8471 60.698 16.5373 61.1579 16.5373C61.3263 16.5373 61.5823 16.5788 61.9173 16.7382C62.6103 15.6515 63.5166 14.7749 64.5494 14.1317C63.4576 13.3497 62.3227 12.9373 61.1579 12.9373C52.5423 12.9373 45.5579 35.5022 45.5579 63.3373C45.5579 91.1725 52.5423 113.737 61.1579 113.737C69.7736 113.737 76.7579 91.1725 76.7579 63.3373C76.7579 50.0089 75.1566 37.8889 72.5415 28.876C71.441 29.387 70.2381 29.6565 69.0204 29.6611C71.5542 38.2852 73.1579 50.1415 73.1579 63.3373Z\" fill=\"#5C1068\"/>");
 
-/***/ }),
-/* 935 */
-/***/ (function(module, exports) {
+/**
+ * @name add
+ * @category Common Helpers
+ * @summary Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.
+ *
+ * @description
+ * Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ *
+ * | Key            | Description                        |
+ * |----------------|------------------------------------|
+ * | years          | Amount of years to be added        |
+ * | months         | Amount of months to be added       |
+ * | weeks          | Amount of weeks to be added        |
+ * | days           | Amount of days to be added         |
+ * | hours          | Amount of hours to be added        |
+ * | minutes        | Amount of minutes to be added      |
+ * | seconds        | Amount of seconds to be added      |
+ *
+ * All values default to 0
+ *
+ * @returns {Date} the new date with the seconds added
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Add the following duration to 1 September 2014, 10:19:50
+ * const result = add(new Date(2014, 8, 1, 10, 19, 50), {
+ *   years: 2,
+ *   months: 9,
+ *   weeks: 1,
+ *   days: 7,
+ *   hours: 5,
+ *   minutes: 9,
+ *   seconds: 30,
+ * })
+ * //=> Thu Jun 15 2017 15:29:20
+ */
+function add(dirtyDate, duration) {
+  Object(_lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_3__["default"])(2, arguments);
+  if (!duration || _typeof(duration) !== 'object') return new Date(NaN);
+  var years = duration.years ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_4__["default"])(duration.years) : 0;
+  var months = duration.months ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_4__["default"])(duration.months) : 0;
+  var weeks = duration.weeks ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_4__["default"])(duration.weeks) : 0;
+  var days = duration.days ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_4__["default"])(duration.days) : 0;
+  var hours = duration.hours ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_4__["default"])(duration.hours) : 0;
+  var minutes = duration.minutes ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_4__["default"])(duration.minutes) : 0;
+  var seconds = duration.seconds ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_4__["default"])(duration.seconds) : 0; // Add years and months
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"50\" height=\"50\" viewBox=\"0 0 50 50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M13.75 6.28125C13.75 4.46907 15.2191 3 17.0312 3H35.625C37.4372 3 38.9062 4.46907 38.9062 6.28125V20.5H13.75V6.28125Z\" fill=\"#AFF1FF\"/>\n| <path d=\"M13.75 21.5938H5V47.8438C5 48.4478 5.48969 48.9375 6.09375 48.9375H12.6562C13.2603 48.9375 13.75 48.4478 13.75 47.8438V21.5938Z\" fill=\"#AFF1FF\"/>");
+  var date = Object(_toDate_index_js__WEBPACK_IMPORTED_MODULE_2__["default"])(dirtyDate);
+  var dateWithMonths = months || years ? Object(_addMonths_index_js__WEBPACK_IMPORTED_MODULE_1__["default"])(date, months + years * 12) : date; // Add weeks and days
 
-/***/ }),
-/* 936 */
-/***/ (function(module, exports) {
+  var dateWithDays = days || weeks ? Object(_addDays_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(dateWithMonths, days + weeks * 7) : dateWithMonths; // Add days, hours, minutes and seconds
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"120\" height=\"121\" viewBox=\"0 0 120 121\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M25.964 22.031h35.067c10.495 0 19.003 8.55 19.003 19.096v27.838c0 10.547-8.508 19.097-19.003 19.097H25.964c-10.495 0-19.003-8.55-19.003-19.097V41.127c0-10.546 8.508-19.096 19.003-19.096Zm0 12.731c-3.498 0-6.334 2.85-6.334 6.365v27.838c0 3.516 2.836 6.366 6.334 6.366h35.067c3.498 0 6.334-2.85 6.334-6.366V41.127c0-3.515-2.836-6.365-6.334-6.365H25.964ZM61.031 23.01H25.964c-9.957 0-18.029 8.112-18.029 18.117v27.838c0 10.006 8.072 18.117 18.03 18.117H61.03c9.957 0 18.029-8.111 18.029-18.117V41.127c0-10.005-8.072-18.117-18.03-18.117ZM18.655 41.127c0-4.056 3.273-7.344 7.31-7.344H61.03c4.036 0 7.309 3.288 7.309 7.344v27.838c0 4.057-3.273 7.345-7.31 7.345H25.965c-4.036 0-7.309-3.288-7.309-7.345V41.127Z\" fill=\"#000\"/>");
+  var minutesToAdd = minutes + hours * 60;
+  var secondsToAdd = seconds + minutesToAdd * 60;
+  var msToAdd = secondsToAdd * 1000;
+  var finalDate = new Date(dateWithDays.getTime() + msToAdd);
+  return finalDate;
+}
 
 /***/ }),
-/* 937 */
-/***/ (function(module, exports) {
-
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"120\" height=\"120\" viewBox=\"0 0 120 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path d=\"M110.379 69.156c-6.96 20.94-19.528 12.111-25.56 30.26l-19.545-6.497c5.568-16.752-8.856-19.996-2.36-39.54 4.357-13.108 18.514-20.201 31.621-15.844 13.108 4.356 20.949 16.264 15.844 31.62Z\" fill=\"#000\"/>\n|   <path d=\"M107.954 47.077c-2.484-1.944-5.407-3.486-8.654-4.566-13.107-4.357-27.264 2.737-31.621 15.844-3.373 10.149-1.106 15.902 1.074 21.434 1.745 4.427 3.434 8.712 2.13 14.995l-5.609-1.865c2.677-8.053.733-12.985-1.285-18.107-2.18-5.531-4.448-11.285-1.074-21.434 4.357-13.107 18.514-20.2 31.62-15.843 5.662 1.882 10.341 5.172 13.419 9.542Z\" fill=\"#625E49\"/>");
+/* 826 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
-/***/ }),
-/* 938 */
-/***/ (function(module, exports) {
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return addDays; });
+/* harmony import */ var _lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(827);
+/* harmony import */ var _toDate_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(828);
+/* harmony import */ var _lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(829);
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"120\" height=\"121\" viewBox=\"0 0 120 121\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <rect x=\"13.29\" y=\"13.199\" width=\"92.033\" height=\"92.033\" rx=\"4\" fill=\"#ED1C24\" stroke=\"#fff\" stroke-width=\"4\"/>\n|   <path d=\"M13.29 17.2a4 4 0 0 1 4-4h84.033a4 4 0 0 1 4 4v84.032a4 4 0 0 1-4 4H17.29a4 4 0 0 1-4-4V17.199Z\" fill=\"url(#a)\"/>");
 
-/***/ }),
-/* 939 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g opacity=\".5\" filter=\"url(#a)\"><path d=\"M161.808 165.907c-.732 1.295-3.157 1.611-4.278 1.608l-12.962-3.959c1.16-7.671 3.93-23.2 5.736-23.954 1.807-.753 8.633 1.348 11.82 2.492 3.785 3.652 6.58 3.912 7.504 3.585.431 1.175 1.61 3.605 2.875 3.926.821.208 1.989-.394 2.951-1.073.616-.434 1.532-.173 1.733.554l.783 2.819c.109.391-.026.811-.341 1.066-1.164.94-3.192 2.463-5.024 1.539-2.148-1.083-3.2-1.316-3.4-.525.352 1.267-2.307 3.79-3.899 6.751-1.592 2.962-2.583 3.552-3.498 5.171Z\" fill=\"#FAFAFA\"/><path d=\"M162.124 142.094c2.681 2.698 6.12 3.514 7.504 3.585-.782 1.091-2.977 3.115-5.507 2.474-2.529-.642-2.385-4.307-1.997-6.059Zm-4.062 23.716c1.249 1.08.123 1.697-.595 1.871l-9.21-11.033-2.869-9.299c1.714-1.587 5.436-4.713 6.62-4.522 1.48.239 3.771 1.575 3.123 2.719-.649 1.144-4.075 4.317-5.061 5.851-.986 1.535 3.279 4.882 3.074 7.091-.206 2.209 3.358 5.972 4.918 7.322Zm10.042-12.795c-.469-1.428 1.376-1.197 2.884-.575 1.206.498 1.076 1.385.859 1.766-.363.027-.363.027-1.144-.648-1.144-.648-2.129.886-2.599-.543Z\" fill=\"#BCBCBC\"/><path d=\"M156.206 155.34c.069.945.35 1.504.707 1.817.75.655 2.07 1.445 1.09 1.273-.935-.163-2.39-1.181-2.498-2.673-.184-2.546-2.109-3.869-1.017-3.948 1.091-.08 1.507.622 1.718 3.531Z\" fill=\"#BCBCBC\"/></g><g opacity=\".5\" filter=\"url(#b)\"><path d=\"M70.917 111.125c.327-.537 1.501-2.641 1.64-3.225-1.422-2.347-6.425-6.84-11.802-9.25-6.722-3.012-8.764-.195-11.72-1.563-2.958-1.37-8.214-1.81-9.702-1.146-.45.267-1.571 1.122-2.443 2.41-1.09 1.611-2.024.122-1.88-1.09l-2.708 1.599c.752 1.668 2.828 4.496 5.107 2.462 2.28-2.034 4.203-3.342 7.692-.891 2.877 2.021 6.316 3.144 8.479 2.35 2.163-.794 8.475 2.89 8.468 3.968-.008 1.079-.14.674-1.756.393s-7.938-2.616-10.376-1.015c-.956.628-2.314.739-3.636.619-1.01-.091-1.901 1.235-1.273 2.032l.972 1.232c.401.498 1.799 1.172 4.18-.106 2.83.424 14.524 5.763 14.928 5.901.403.137 3.519-1.864 4.065-2.939.547-1.075 1.356-1.069 1.765-1.741Z\" fill=\"#FBA676\"/><path d=\"M68.513 108.379a17.08 17.08 0 0 1 1.422-1.399c.07-.061.027-.17-.065-.16-.329.036-.811.138-1.218.379-.291.172-.468.587-.568 1.017-.028.118.35.254.43.163Zm-8.221-1.237c.535.633 1.74 1.819 2.282 1.499.427-.253.691-.238.795-.362.321.397.806.8 1.457.934 1.077.224 1.613.731 1.746.956.09.001.243-.025.136-.134-.134-.135-.804-.814-1.477-.954-.538-.111-1.477-.954-1.878-1.361-.293-.729-1.986-2.189-2.241-2.191.402.318 1.125 1.087.798 1.624-.41.671-1.077-.277-1.618-.011Zm-7.171-7.405c.765-.3 1.956 1.795 2.456 2.88-.386.569-2.088-1.161-3.041-1.169-.954-.007-3.044-.977-1.901-.778 1.142.2 1.53-.559 2.486-.933Zm4.51 8.426c.455.309-.654 2.347-.973 2.472-2.035.047-7.276-1.164-8.955-1.025-2.099.174-2.276-1.544-2.462-2.117-.186-.574 1.9.778 2.67.021.768-.757 3.435-.354 4.768-.153 1.334.201 4.383.416 4.952.802Zm-21.102-8.177c.609.158.897-.946.965-1.518-1.151.945-.96.755-1.533.942-.573.186-.194.38.568.576Zm27.633 12.981c.11-.323.862-1.118 1.224-1.475.656-.692-.941-.411-1.482-.145-.542.266-1.483-.145-1.754.123-.272.268.266.541.67.679.403.138 1.205 1.222 1.342.818Zm7.238-4.873a6.95 6.95 0 0 0 .218-.874c0-.09-.025-.297-.132-.405-.134-.136-.275.807-.415 1.48-.14.673-1.632 2.146-2.175 2.682-.543.536-1.092 1.88-2.31 2.546-.975.533-1.672 1.292-1.899 1.605.094.032.32-.081.616-.281.195.167.604.337.866.426.001-.171-.27-.509-.536-.662a20.688 20.688 0 0 0 1.586-1.35c.047.203.488.458.847.677.231.001-.325-.796-.66-.854.453-.434.816-.823.943-1.032a3.74 3.74 0 0 1 .236-.337.927.927 0 0 0 .976.48c-.242-.164-.637-.409-.87-.615.546-.672 1.428-1.542 1.968-2.074.254-.251.46-.65.616-1.058.094.063.247.192.466.526-.058-.238-.204-.715-.342-.88Z\" fill=\"#B05F32\"/></g><path d=\"M35.85 201.788c-1.325-1.73 10.624-2.912 13.384-3.182l12.228-1.77a146.99 146.99 0 0 1 25.485-1.451l15.388.463c44.157 0 75.397 2.758 79.261 4.65 3.864 1.893-4.594 2.512 0 3.544 3.778.848 18.9 1.104 18.348 4.348-.552 3.244-44.734 1.3-50.253 2.652-5.52 1.352 8.279 2.163 5.519 4.055-1.925 1.32-44.708 1.082-52.436 0-7.727-1.081 2.489-2.483 3.864-4.055 1.656-1.892-11.591-1.352-26.494-1.352s-45.26-.54-49.125-1.892c-3.863-1.352 3.864-2.433 6.624-2.974 2.76-.541-.138-.873-1.793-3.036Z\" fill=\"url(#c)\"/><path d=\"M44.934 198.314c.73-.678 2.525-1.223 6.77-2.291l2.967-.747c1.96-.39 6.04-.963 6.673-.132.79 1.038-2.04 3.885-3.86 4.374-1.82.489-12.682-.057-13.14-.282-.457-.225-.141-.243.59-.922Z\" fill=\"#797979\"/><path d=\"M48.862 195.304c-6.272 1.579-7.382 2.99-7.382 2.99l3.704 1.394.4-.101c.654-.144 2.349-.421 3.893-.373 1.176.037 2.63.273 3.776.459l.556.09c1.278.292 2.86.295 4.253-.055 1.423-.358 1.967-.914 1.572-1.451l-.05-.177c-.13-.442-.295-1.003-.013-1.406.37-.53 1.663-1.005 2.264-1.176l-2.648-1.922s-4.052.15-10.325 1.728Z\" fill=\"#fff\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M51.153 196.246c-3.74.941-6.505 2.299-7.62 2.827l-.77-.254c1.17-.553 3.957-1.897 7.79-2.862 3.842-.967 7.882-1.298 9.808-1.526l.475.351c-1.871.221-5.951.525-9.683 1.464Z\" fill=\"#E26060\"/><path d=\"M54.373 195.666c1.03.315 2.83.693 5.424.846l.113-.217c-2.214-.13-3.772-.45-4.678-.718l-.86.089Zm-5.946 1.582-.688.242c.685.36 1.361.893 1.27 1.497l.963.018c.11-.724-.73-1.35-1.545-1.757Z\" fill=\"#BCBCBC\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M50.13 195.71c-3.832.965-6.6 2.389-7.74 2.931l-.725-.282c1.196-.568 3.984-1.947 7.913-2.936 3.936-.99 8.01-1.369 9.987-1.601l.435.331c-1.92.226-6.045.595-9.87 1.557Z\" fill=\"#5A64C2\"/><path d=\"M163.943 25.397c-.999 2.038-2.941 3.894-4.687 5.233-1.167.896-1.254 2.746-.058 3.602l3.772 2.698c.682.487 1.566.717 2.307.325 4.11-2.176 3-10.008 6.272-11.47 3.565-1.594 5.352-1.832 7.58-2.967 2.227-1.136 6.039.176 8.961 2.165 1.545 1.052 3.789 1.409 6.165 1.5 2.047.078 3.673-1.65 3.657-3.698-.018-2.22-1.934-3.867-4.144-3.651-1.606.157-3.102.185-4.384-.198-2.914-.872-7.201-5.758-10.114-6.63-2.914-.87-4.244.705-4.684 1.603-.44.898-1.303 4.93-3.539 4.947-2.236.018-5.123 2.5-7.104 6.54Z\" fill=\"#FAFAFA\"/><path d=\"M183.09 14.736c-3.359 5.036-7.362 2.145-8.944.07.652-2.464 2.659-3.15 4.675-2.72 1.613.346 3.518 1.91 4.269 2.65Zm6.796 11.128 2.183-6.726c.898.44 6.021-2.06 5.845 3.98-.141 4.83-5.411 3.843-8.028 2.746Z\" fill=\"#5E5CC9\"/><path d=\"M86.543 78.802c-5.491 1.119-17.832 3.02-23.259 1.678s-10.337-2.983-12.114-4.474\" stroke=\"#FFDDBD\" stroke-width=\"5.649\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M97.936 70.303a4.698 4.698 0 0 1 2.092-1.254l6.449-1.843a15.067 15.067 0 0 1 8.021-.071l7.316 1.951c.714.19 1.353.539 1.883 1.001a1.874 1.874 0 0 1 1.309-.124l11.605 3.11c.502.134.8.65.666 1.152l-2.329 8.693a.942.942 0 0 1-1.153.665l-8.502-2.278-.086 39.946H96.415l.164-39.574-8.396 2.25a.941.941 0 0 1-1.153-.666L84.7 74.57a.942.942 0 0 1 .667-1.153l11.605-3.11c.327-.087.658-.083.964-.003Z\" fill=\"#9B9B9B\"/><path d=\"M67.459 73c-4-1.6-7-1.5-8-.5l4 4 .5 6-2 2.5c.5 1 10.9 2.2 16.5 1 5.6-1.2 12.666-1.5 15.5-1.5.333-.333 1 .2 1 5s-4 16.667-6 22l17.999-3c2.4-6 .334-29.833-1-41-.166-.166-1-.4-3 0-2.5.5-30.5 7.5-35.5 5.5Z\" fill=\"#fff\"/><path d=\"M61.958 72.5c-4-1.2-3.333 2.334-2.5 4 1.5.5 3.5 1 4 3.5.716 3.576-2 3-3.5 2.5 4.5 9.5 7-8.5 2-10Z\" fill=\"#D8D8D8\"/><path d=\"M75.459 23.5c7.6 5.6 10.833 13.333 11.5 16.5l46.499-.5c-1.5-11.5 11-18.5 17-16-8.4-6.4-14.166-3.667-16-1.5-4-6 4-12.834 8.5-15.5-9.6-1.2-17.666 6.5-20.5 10.5 0-3.6-2.666-8.5-4-10.5.4 3.6-2.833 8.5-4.5 10.5-2.4-2.8 1-10.5 3-14-8 .4-14.333 8.833-16.5 13-.4-4-4.5-5.334-6.5-5.5 2.4 2 2 4.5 1.5 5.5-4-1.6-11.666-8.667-15-12 0 4.4 5.334 15.833 8 21-4.4-2.4-10.5-2-13-1.5Z\" fill=\"#C4C4C4\"/><path d=\"M75.459 23.5c7.6 5.6 10.833 13.334 11.5 16.5l46.499-.5c-1.5-10 10.5-18 17-16-8.4-6.4-15.166-1.666-17 .5-4-6 5-14.833 9.5-17.5-9.6-1.2-16 11-21 15 1-5.5-2.166-13-3.5-15 .4 3.6 2 13-2.5 15.5-7-4.5-1-15.5 1-19-8 .4-14.833 13.333-17 17.5-.4-4-4-9.833-6-10 2.4 2 2 4.5 1.5 5.5-4-1.6-6.166-3.167-9.5-6.5 0 4.4 2.334 14.833 5 20-4.4-2.4-13-6.5-15.5-6Z\" fill=\"#EDEDED\"/><path d=\"M51.17 76.006c1.337 1.077 4.453 2.235 8.227 3.29\" stroke=\"#CEA47D\" stroke-width=\"5.649\" stroke-linecap=\"round\"/><path d=\"M45.987 69.86c-1.955 1.225-4.408 8.302-5.39 11.687 2.838 5.329 9.296-.82 10.642-3.465 1.346-2.646 1.145-5.523 1.818-6.845.672-1.323 4.23-3.953 2.467-4.85-1.764-.897-7.093 1.942-9.537 3.473Z\" fill=\"#9F7752\"/><path d=\"M52.246 68.109c-.048-.912.477-1.68 1.172-1.718l1.518-.08c.696-.037 1.3.672 1.347 1.584.049.911-.476 1.68-1.172 1.717l-1.518.08c-.695.038-1.299-.672-1.347-1.583ZM42.822 75.1c.814-.413 1.74-.224 2.068.423l1.424 2.805c.328.647-.066 1.505-.88 1.918-.815.414-1.74.225-2.068-.422l-1.424-2.805c-.328-.647.066-1.505.88-1.919Zm.953-4c.668-.62 1.612-.692 2.108-.159l4.243 4.567c.496.533.356 1.47-.313 2.09-.669.622-1.613.694-2.108.16l-4.244-4.566c-.496-.534-.355-1.47.314-2.091Z\" fill=\"#FFDDBD\"/><path d=\"M133.434 78.802c5.491 1.119 17.832 3.02 23.259 1.678s10.337-2.983 12.114-4.474\" stroke=\"#FFDDBD\" stroke-width=\"5.649\"/><path d=\"M168.806 76.006c-1.337 1.077-4.452 2.235-8.226 3.29\" stroke=\"#CEA47D\" stroke-width=\"5.649\" stroke-linecap=\"round\"/><path d=\"M106.521 64.084h7.914v4.946c0 .547-.886.99-1.978.99H108.5c-1.093 0-1.979-.443-1.979-.99v-4.946Z\" fill=\"#FFDDBD\"/><rect x=\"106.521\" y=\"64.084\" width=\"7.914\" height=\"3.957\" rx=\"1.883\" fill=\"#9F7752\"/><path d=\"M171.127 68.307c2.127.894 5.688 7.484 7.202 10.666-1.944 5.717-9.307.688-11.061-1.706-1.755-2.394-2.019-5.266-2.896-6.463-.877-1.197-4.812-3.22-3.216-4.389 1.596-1.17 7.312.774 9.971 1.892Z\" fill=\"#9F7752\"/><path d=\"M177.939 77.045c-.876-.259-1.746.073-1.944.74l-.431 1.458c-.198.668.352 1.42 1.227 1.679.875.26 1.745-.072 1.943-.74l.432-1.458c.197-.668-.352-1.42-1.227-1.679Zm-13.271-9.458c-.099-.908-.741-1.582-1.434-1.507l-1.511.165c-.692.076-1.173.873-1.074 1.78.099.908.741 1.582 1.433 1.507l1.511-.165c.693-.076 1.174-.873 1.075-1.78Zm-118.813.355c.612-.678 1.517-.858 2.021-.402l3.928 3.548c.504.456.417 1.374-.195 2.052-.612.677-1.517.857-2.021.401l-3.928-3.548c-.504-.456-.417-1.374.195-2.051Zm127.655 1.233c-.76-.505-1.703-.424-2.106.182l-3.453 5.19c-.404.607-.114 1.508.646 2.014.76.506 1.703.424 2.106-.182l3.453-5.19c.403-.607.114-1.508-.646-2.014Zm-2.562-2.783c-.713-.57-1.635-.601-2.059-.07l-3.305 4.134c-.425.53-.191 1.423.522 1.993.713.57 1.635.602 2.06.071l3.305-4.134c.424-.53.19-1.423-.523-1.993Zm4.146 6.578c-.87-.277-1.753.059-1.973.75l-.953 2.998c-.22.69.307 1.474 1.177 1.75.87.278 1.754-.058 1.973-.749l.954-2.998c.219-.69-.308-1.475-1.178-1.751ZM40.447 79.83c.822-.396 1.734-.209 2.037.418l.66 1.37c.303.627-.118 1.457-.94 1.854s-1.734.21-2.037-.418l-.66-1.369c-.303-.627.118-1.458.94-1.854Z\" fill=\"#FFDDBD\"/><path d=\"m96.415 121.25 5.617 70.079h4.595l2.012-54.357c.019-.509.29-.98.717-1.257a1.54 1.54 0 0 1 2.385 1.273l.503 54.341 4.595 1.491 8.368-71.57H96.415Z\" fill=\"#B67D55\"/><path d=\"M92.807 43.845c3.616-2.41 8.588-2.862 19.586-2.862h7.683c4.721.502 13.71 2.712 11.902 7.533-2.259 6.026-17.024 16.421-21.845 16.572-4.821.15-21.544-15.82-21.544-17.476 0-1.658.603-1.356 4.218-3.767Z\" fill=\"#797979\"/><path d=\"M91.174 33.5c1.86-1.633 7.29-4.515 13.19-6.19 5.376-1.528 11.013-.409 16.316 1.359l7.606 2.535c1.544.514 2.989 1.563 3.077 3.188.233 4.288-3.239 10.502-3.689 14.608-.821 7.5-10 16.5-16.5 16.5-11.672 0-20-16.85-20-18.5 0-1.65-2.735-11.1 0-13.5Z\" fill=\"#FFDDBD\"/><path d=\"M89.958 36.171c2.171-1.705 10.022-4.093 17.294-4.973 3.439-.416 6.904.003 10.3.69l10.16 2.056c1.763.357 3.565 1.428 3.398 3.22-.295 3.14-3.402 6.838-3.815 10.216-.812 6.646-9.402 16.62-15.837 16.62-11.555 0-20.296-16.93-20.296-18.392 0-1.462-3.911-7.31-1.204-9.437Z\" fill=\"#ECB786\"/><path d=\"M110.023 34c-16.249 0-23.064 5.512-23.064 5.512l1.498 11.328h1.035c1.625.098 5.494.827 7.975 2.954 1.888 1.618 3.557 4.55 4.874 6.863.225.394.439.77.642 1.119 1.172 2.988 3.875 4.943 7.483 4.943 3.686 0 6.554-2.041 7.745-5.14.169-.292.345-.601.528-.922 1.317-2.313 2.986-5.245 4.874-6.863 2.481-2.127 6.35-2.856 7.975-2.954l2.151-12.605S126.272 34 110.023 34Z\" fill=\"#fff\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M110.674 41.394c-9.686 0-19.153 3.224-22.902 4.425l-.437-2.179c3.933-1.26 13.389-4.39 23.319-4.39 9.95 0 18.03 3.338 22.126 4.587l-.407 2.29c-3.979-1.213-12.032-4.733-21.699-4.733Z\" fill=\"#E26060\"/><path d=\"M118.212 42.507c.67 2.794 2.438 6.845 6.354 10.768l.95-.918c-3.343-3.35-4.899-6.816-5.522-9.23l-1.782-.62Zm-15.702.428-2.025.34c-.075 2.587-.773 6.016-3.029 8.843l1.585 1.27c2.707-3.392 3.45-7.47 3.469-10.453Z\" fill=\"#BCBCBC\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M110.782 37.533c-9.926 0-19.629 3.545-23.47 4.788l-.264-2.262c4.03-1.303 13.609-4.6 23.786-4.6 10.197 0 18.499 3.148 22.697 4.44l-.409 2.148c-4.078-1.255-12.433-4.514-22.34-4.514Z\" fill=\"#5A64C2\"/><circle cx=\"93.354\" cy=\"38.065\" fill=\"#F0FDFF\" fill-opacity=\".55\" r=\"11.882\"/><ellipse cx=\"125.79\" cy=\"38.155\" rx=\"11.904\" ry=\"11.309\" fill=\"#F0FDFF\" fill-opacity=\".55\"/><path d=\"M115.198 35.583c-.525 0-.982-.332-1.253-.782a4.991 4.991 0 0 0-4.284-2.425c-1.818 0-3.41.972-4.284 2.425-.27.45-.728.782-1.252.782-.824 0-1.429-.781-1.059-1.517a7.375 7.375 0 0 1 6.595-4.07 7.375 7.375 0 0 1 6.596 4.07c.37.736-.235 1.517-1.059 1.517Z\" fill=\"#6A6A6A\"/><rect x=\"79.959\" y=\"31.773\" width=\"4.762\" height=\"3.571\" rx=\".92\" fill=\"#6A6A6A\"/><rect x=\"134.603\" y=\"31.773\" width=\"4.762\" height=\"3.571\" rx=\".92\" fill=\"#6A6A6A\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M92.445 42.386a4.15 4.15 0 0 0 3.786.245 4.18 4.18 0 0 0 2.275-2.432 4.146 4.146 0 0 0 .055-2.62v.002a4.152 4.152 0 0 0-2.757-2.757l.001-.001c-.388-.12-.8-.184-1.227-.184a4.147 4.147 0 0 0-3.178 1.473 4.15 4.15 0 0 0-.988 2.694 4.152 4.152 0 0 0 1.112 2.837c.264.283.572.535.921.743Zm33.121-7.563a4.176 4.176 0 0 1 2.755 2.757l.001-.001c.07.228.121.465.151.708a4.135 4.135 0 0 1-.713 2.897 4.143 4.143 0 0 1-1.359 1.243c-.5.285-1.065.47-1.666.526a4.152 4.152 0 0 1-2.898-.815 4.183 4.183 0 0 1-.551-.497 4.153 4.153 0 0 1-1.01-3.764l.001-.002c.13-.572.378-1.099.717-1.554.341-.46.765-.834 1.238-1.11a4.14 4.14 0 0 1 1.672-.55 4.146 4.146 0 0 1 1.604.144l.058.017Z\" fill=\"#000\"/><g opacity=\".65\" fill=\"#EAFCFF\"><path opacity=\".6\" d=\"m91.67 27.71 5.826 1.217-11.471 17.061-3.226-4.93 8.87-13.348Zm32.414 0 5.826 1.217-11.471 17.061-3.226-4.93 8.871-13.348Zm-25.742 1.91 2.208 1.07-12.297 18.104-1.626-.948L98.342 29.62Zm32.414 0 2.209 1.07-12.298 18.104-1.626-.948 11.715-18.226Z\"/></g><path d=\"M104.316 38.065c0 6.054-4.908 10.962-10.962 10.962-6.055 0-10.963-4.908-10.963-10.962 0-6.055 4.908-10.963 10.963-10.963 6.054 0 10.962 4.908 10.962 10.963Zm32.414 0c0 6.054-4.908 10.962-10.962 10.962-6.055 0-10.963-4.908-10.963-10.962 0-6.055 4.908-10.963 10.963-10.963 6.054 0 10.962 4.908 10.962 10.963Z\" stroke=\"#6A6A6A\" stroke-width=\"1.839\"/><path d=\"M108.958 19c-1.2 1.2-2.166 4.5-2.5 6 6 2 5.167-1.5 4-3.5 0 2-.666 2.5-1 2.5-.8-1.2-.666-3.833-.5-5Z\" fill=\"#C4C4C4\"/><path d=\"M103.668 66.086c1.317 1.126 2.207 5.159 2.285 7.534a.194.194 0 0 1-.285.176l-.75-.381a.2.2 0 0 0-.258.068l-2.06 3.149a.2.2 0 0 1-.36-.056l-2.243-7.993a.199.199 0 0 1 .081-.22l3.365-2.284a.185.185 0 0 1 .225.007Z\" fill=\"#D8D8D8\"/><path d=\"M104.274 65.093c1.251 1.13 1.633 5.368 1.679 7.81a.196.196 0 0 1-.341.135l-.651-.702a.2.2 0 0 0-.328.052l-1.476 3.184a.2.2 0 0 1-.368-.011l-2.777-7.186a.201.201 0 0 1 .065-.23l3.964-3.054a.181.181 0 0 1 .233.002ZM153.562 73c4.396-1.5 5.396-.5 5.396 0l-1.396 3.5-.5 6 .896 3c-1 .5-9.796 1.7-15.396.5-5.6-1.2-13.27-1.5-16.104-1.5-.333-.333-.396.2-.396 5s4 16.667 6 22l-18-3c-2.4-6-.333-29.833 1-41 .167-.166 1-.4 3 0 2.5.5 30.404 7.239 35.5 5.5Z\" fill=\"#fff\"/><path d=\"M157.458 73c1.5-1.5 2.5 1.5 2.5 3.5-1.5 1-1.896 1-2.396 3.5-.715 3.575 2.396 2.5 2.896 2.5-4.5 9.5-7.671-4.827-3-9.5Zm-40.105-6.914c-1.317 1.126-2.207 5.159-2.285 7.534a.194.194 0 0 0 .285.176l.75-.381a.2.2 0 0 1 .258.068l2.06 3.149a.2.2 0 0 0 .36-.056l2.243-7.993a.2.2 0 0 0-.081-.22l-3.365-2.284a.185.185 0 0 0-.225.007Z\" fill=\"#D8D8D8\"/><path d=\"M116.747 65.093c-1.251 1.13-1.633 5.368-1.679 7.81a.196.196 0 0 0 .341.135l.651-.702a.2.2 0 0 1 .328.052l1.476 3.184a.2.2 0 0 0 .368-.011l2.777-7.186a.2.2 0 0 0-.065-.23l-3.964-3.054a.181.181 0 0 0-.233.002Z\" fill=\"#fff\"/><path fill=\"#5A5A5A\" d=\"M66.543 106.774h90.518V123.5H66.543z\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M71.543 93.001a5 5 0 0 0-5 5v14.936h90.477V98.001a5 5 0 0 0-5-5H71.543Zm85.477 21.034H66.543v86.177a2 2 0 0 0 2 2h86.477a2 2 0 0 0 2-2v-86.177Z\" fill=\"#F8F8F8\"/><path d=\"M148.021 110.71a3.141 3.141 0 0 0 2.929-2.008c1.254-3.245 6.07-2.346 6.07 1.132v3.102H74.199c-1.16 0-1.546-1.554-.521-2.097.16-.085.34-.129.52-.129h73.823Zm-5.558 88.254c5.941-.109 10.722-4.917 10.798-10.858l.848-66.573c.596-1.589 2.952-1.162 2.952.535v78.395c0 .966-.783 1.749-1.749 1.749H73.136c-1.044 0-1.506-1.315-.69-1.968l70.017-1.28Z\" fill=\"#E5E4E4\"/><rect x=\"77.366\" y=\"147.114\" width=\"5.903\" height=\"14.758\" rx=\"2.952\" fill=\"#6D6D6D\"/><rect x=\"77.366\" y=\"146.131\" width=\"4.919\" height=\"14.758\" rx=\"2.46\" fill=\"#C4C4C4\"/><ellipse cx=\"114.262\" cy=\"160.397\" rx=\"32.96\" ry=\"33.944\" fill=\"#E6E5E5\"/><circle cx=\"111.802\" cy=\"155.969\" r=\"24.597\" fill=\"url(#d)\"/><path d=\"M132.802 157.898c-.957-.293-2.448-1.518-3.074-2.094.501-2.428 1.612-7.303 2.054-7.377.551-.093 1.068 2.316 1.658 3.125.589.809 1.751 3.677 1.641 4.376-.11.699-.017 1.251.277 1.655.295.404.387.956.185 1.103-.202.148-1.545-.421-2.741-.788Z\" fill=\"#F5F3E2\"/><path d=\"M132.629 149.94c.38-1.13-.023-1.491-.272-1.529l-2.911 7.231 1.727 2.005c.855-.033 2.694-.275 3.213-.987.649-.891.227-1.452-.807-1.366-1.033.087-1.855.455-1.742-.271.113-.726.317-3.669.792-5.083Zm-10.872 17.863c.088-.559.964-4.624 1.392-6.586 4.41-4.143 9.968-.763 11.698.762 1.73 1.525.185 1.103-.531 2.244-.717 1.141-.367 1.196-.144 3.2.222 2.005-2.094 3.074-2.608 4.068-.515.993-2.906.26-4.452-.162-1.545-.421-4.249-.309-5.188-1.172-.938-.864-.277-1.655-.167-2.354Z\" fill=\"#DAD7C4\"/><path d=\"M133.91 163.901c.721-.03 1.047-.97 1.12-1.436l-2.302-3.584-4.691-.916-7.261 4.054-.087 6.253c.473.791 1.57 2.324 2.173 2.132.754-.24.219-1.398.089-2.851s1.745-3.129 2.406-3.92c.661-.792 2.666-1.014 2.758-.462.093.551 1.326 1.819 2.118 2.481.791.661-.459.644.075 1.802.535 1.158.901-.038 1.213-.884.312-.846-1.326-1.82-1.713-2.776-.387-.956-.222-2.004 1.176-1.785 1.398.22 2.025 1.93 2.926 1.892Z\" fill=\"#AEAB96\"/><path d=\"M105.131 168.776c-2.089.531-3.153-1.211-3.423-2.149 1.059-7.891 19.84-5.481 20.779-4.617.939.863.154 7.007-.305 7.651-.46.644-4.839-1.117-7.837-1.409-2.998-.291-6.603-.141-9.214.524Z\" fill=\"#F5F3E2\"/><path d=\"M110.605 162.93c.551-.092 8.038 1.262 8.792 1.022.603-.192.496-.877.367-1.196l-3.827-1.854-12.689 2.127-1.947 3.275 1.73 1.525c4.979.603 14.977 1.778 15.139 1.66.202-.147.661-.791.771-1.49.11-.699 1.011-.737 1.231-2.135.219-1.398-1.087-1.066-1.693-.624-.607.442.682 1.361.277 1.655-.404.295-3.844-.603-4.893-.768-1.049-.164-6.106.116-7.21.301-1.103.185-3.55-.199-3.09-.843.459-.644 6.49-2.563 7.042-2.655Zm1.944-27.728c-2.28-.072-3.059.474-3.163.757-.63.975-1.586 3.26-.363 4.598 1.528 1.672 6.835 12.354 7.462 14.064.627 1.71 2.799 3.841 7.103 3.8 4.304-.04 7.053-10.711 7.42-11.906.366-1.196-.665-2.612-2.248-3.934-1.583-1.323-2.282-1.433-2.964-2.793-.681-1.361-2.669-2.389-3.368-2.499-.699-.109-1.196-.367-3.79-.953-2.594-.586-3.238-1.045-6.089-1.134Z\" fill=\"#DAD7C4\"/><path d=\"M112.734 136.306c-1.105-1.177-2.656-.954-3.293-.696.512 3.96 1.725 12.053 2.476 12.744.939.863 1.508-.48 2.721-1.364 1.213-.884.309-4.249.621-5.095.312-.847 4.509 3.214 5.078 1.871s-4.454-3.564-5.246-4.225c-.791-.662-.976-1.765-2.357-3.235Zm11.759 7.217c.721-.03 1.317-1.166 1.525-1.73 1.066-1.086.333 1.305-.127 1.95-.459.644-1.048-.165-2.059.572-1.011.736.37 2.206.757 3.163.387.956.073 1.184-.441 2.178s.242 1.372-.954 1.005c-1.196-.367.422-1.546.881-2.19.459-.644-1.511-2.923-1.346-3.971.164-1.049.863-.939 1.764-.977Z\" fill=\"#AEAB96\"/><path d=\"M122.131 155.15c-.647.471-1.729-.391-2.189-.881-.514.993-1.395 3.183-.806 3.992.737 1.011 7.374-1.35 8.293-2.638.918-1.288 2.694-10.321 2.564-11.774-.13-1.453-1.528-1.672-1.49-.771.037.901.167 2.354-.292 2.998-.459.645-.384 2.447-.254 3.9.13 1.453-1.213.884-1.6-.072s-.884-1.213-.699-.11c.185 1.103 1.086 1.066 1.069 2.317-.017 1.25-1.121 1.435-2.022 1.473-.901.037-1.765.976-2.574 1.566Z\" fill=\"#AEAB96\"/><path d=\"M96.166 140.33c-.926.428-1.28 2.067-1.34 2.834l1.977 9.084c5.309-.36 16.081-1.379 16.698-2.572.617-1.192-.435-5.977-1.038-8.221-2.283-2.793-2.303-4.718-2.028-5.332-.779-.361-2.374-1.303-2.522-2.186-.075-.451.204-1.021.579-1.544.439-.614.258-1.549-.45-1.81l-1.196-.441a1.012 1.012 0 0 0-1.089.254c-.709.76-1.685 1.976-1.191 3.195.619 1.529.719 2.261.167 2.354-.846-.312-2.721 1.363-4.835 2.285-2.114.922-2.573 1.566-3.732 2.1Z\" fill=\"#FAFAFA\"/><path d=\"M112.463 141.455c-1.694-1.985-2.058-4.381-2.028-5.332-.79.473-2.297 1.86-2.001 3.625.296 1.766 2.809 1.874 4.029 1.707Zm-16.442 1.441c-.668-.914-1.153-.18-1.313.302l7.024 6.918 6.196 2.484c1.181-1.082 3.528-3.45 3.464-4.271-.08-1.025-.864-2.666-1.682-2.287-.819.378-3.182 2.542-4.286 3.13-1.104.587-3.152-2.517-4.674-2.501-1.522.016-3.894-2.632-4.729-3.775Zm9.313-6.145c.95.402.896-.873.555-1.939-.272-.852-.886-.813-1.159-.686-.038.247-.038.247.379.818.379.819-.725 1.406.225 1.807Z\" fill=\"#BCBCBC\"/><path d=\"M103.074 144.754a2.46 2.46 0 0 1-.786-.241c-.879-.466-1.469-1.555-1.086-.636.242.582.78 1.214 1.548 1.333 1.73.27 2.526 1.66 2.642.918.115-.741-.341-1.065-2.318-1.374Z\" fill=\"#BCBCBC\"/><path d=\"M92.963 158.451c-1.263 1.664-1.1 3.588-.86 4.341.59.809 4.136-2.394 5.442-2.727 1.305-.332 12.669-4.279 11.97-4.388-.7-.11-3.958-3.307-4.088-4.76-.13-1.453-4.215-2.81-5.116-2.773-.901.038-3.787 2.45-4.06 4.197-.275 1.748-1.708 4.03-3.288 6.11Z\" fill=\"#AEAB96\"/><path d=\"M99.523 150.884c1.809-.575 2.397-.817 2.464-.866 1.214-.458 1.528 1.672.664 2.611-.863.939-.366 1.196-1.137 2.686-.772 1.491-1.323 1.583-2.28 1.97-.955.388-2.59 2.817-3.748 3.351-1.159.535-1.73-1.525-1.62-2.224.109-.699 1.668-4.931 2.237-6.274.57-1.343 1.158-.534 3.42-1.254Z\" fill=\"#DAD7C4\"/><path d=\"M125.754 153.75c-1.22 1.384-.765 2.208-.384 2.446l3.844.604c1.361-.682 2.701-3.516 2.368-4.821-.332-1.306.511-4.397 1.762-4.379 1.251.017 2.889.99 6.713-.558 3.824-1.549.583-5.997-.942-4.267-1.525 1.731-5.075 1.532-6.161.466-1.086-1.066-4.434-1.412-4.211.592.222 2.005-.696 3.293-.272 5.151.425 1.857-1.192 3.035-2.717 4.766Z\" fill=\"#FAFAFA\"/><path d=\"M128.616 145.782c1.721-.016 3.278-1.873 3.841-2.799-.589-.809-3.789-.953-3.807.298l-.034 2.501Zm10.465-.506c.132-.839-.326-1.722-.572-2.059 1.066-1.086 2.371-1.419 3.293.696.737 1.691-.586 2.594-1.34 2.833-.515-.14-1.513-.631-1.381-1.47Z\" fill=\"#5A64C2\"/><path d=\"M88.666 165.296c-1.075-.456-.658-1.894-.315-2.557 2.423-5.17 1.443-10.338 2.564-11.773 1.12-1.436.421-1.546.696-3.293.274-1.748.97-5.041 2.423-5.171 1.453-.13 5.982 5.236 5.615 6.432-.366 1.196-2.645 3.166-3.543 6.607-.898 3.44-6.097 10.324-7.44 9.755Z\" fill=\"#F5F3E2\"/><path d=\"M94.92 147.118c-.291-.244-.214-.819.016-1.463.419-1.173 1.938-1.351 2.772-.426 2.686 2.981 1.324 3.405.598 3.137-.846-.312-.956.387-1.12 1.436-.165 1.048-.68 2.042-1.728 1.877-1.048-.164-.387-.956.33-2.097.716-1.141-.076-1.802-.867-2.464Zm-4.472 15.951c-.647.471-.7-.11-.645-.459.055-.35.257-.497.81-.59.55-.092 1.579-2.079 1.946-3.275.367-1.196 1.268-1.234 1.508-.48s-.919 1.288-1.58 2.08c-.662.791-1.23 2.135-2.04 2.724Z\" fill=\"#DAD7C4\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M104.931 150.66c-1.368.502-2.332 4.589-2.642 6.569l16.866-.218c1.125-1.028 1.253-2.803 1.144-3.929l1.022-.744-.627-1.71-.339-.054a9.334 9.334 0 0 1-.657-1.276l.167-.233-.829-1.563-1.002.255c-.026-.167.008-.36.155-.567.459-.644.826-1.84 1.56-4.231.567-1.849 1.531-2.138 2.474-2.42.277-.083.552-.166.815-.287.927-.428 2.678-1.848 3.438-2.505l-2.981-1.542c-1.076 1.287-1.828 1.52-2.534 1.739-.597.185-1.161.36-1.86 1.153-.932 1.058-1.858 2.922-2.587 4.39-.463.933-.847 1.706-1.104 2.014-.244.293-.942.661-1.735 1.081-1.351.713-2.979 1.574-3.117 2.455-.176 1.118-3.824 1.548-5.627 1.623Z\" fill=\"#C69292\"/><circle cx=\"117.787\" cy=\"150.889\" r=\".25\" transform=\"rotate(53.92 117.787 150.889)\" fill=\"#885050\"/><circle cx=\"116.28\" cy=\"151.367\" r=\".25\" transform=\"rotate(53.92 116.28 151.367)\" fill=\"#885050\"/><circle cx=\"114.772\" cy=\"151.848\" r=\".25\" transform=\"rotate(53.92 114.772 151.848)\" fill=\"#885050\"/><circle cx=\"113.264\" cy=\"152.326\" r=\".25\" transform=\"rotate(53.92 113.264 152.326)\" fill=\"#885050\"/><circle cx=\"111.756\" cy=\"152.807\" r=\".25\" transform=\"rotate(53.92 111.756 152.807)\" fill=\"#885050\"/><circle cx=\"110.249\" cy=\"153.286\" r=\".25\" transform=\"rotate(53.92 110.249 153.286)\" fill=\"#885050\"/><circle cx=\"108.741\" cy=\"153.766\" r=\".25\" transform=\"rotate(53.92 108.741 153.766)\" fill=\"#885050\"/><circle cx=\"107.233\" cy=\"154.245\" r=\".25\" transform=\"rotate(53.92 107.233 154.245)\" fill=\"#885050\"/><circle cx=\"105.725\" cy=\"154.725\" r=\".25\" transform=\"rotate(53.92 105.725 154.725)\" fill=\"#885050\"/><path d=\"M119.761 156.569c.323-.236.562-2.061.641-2.944-.442-.606-.405.295-1.213.884-.809.59-2.464.867-3.403.003-.939-.863-3.959-.033-5.205.079-1.453.13-5.719 1.072-6.621 1.109-.901.038-.424-1.857-.976-1.764-.441.074-.648 2.226-.696 3.293 1.257-.4 4.031-1.266 5.075-1.532 1.306-.332 11.993 1.166 12.398.872Zm-.815-6.217 1.748.274-1.268 1.234-.48-1.508-.534-1.158 1.453-.13-.919 1.288Z\" fill=\"#885050\"/><path d=\"M90.105 169.82c-.31-.765-1.383-3.738-1.439-4.523 2.34-2.737 9.771-7.491 17.244-9.47 9.341-2.473 11.387 1.608 15.506.464 4.118-1.144 11.016-.599 12.801.577.528.441 1.797 1.786 2.652 3.639 1.069 2.317 2.594.587 2.666-1.014l3.166 2.646c-1.328 2-4.615 5.22-7.134 2.103-2.519-3.117-4.732-5.219-9.769-2.786-4.154 2.005-8.845 2.73-11.476 1.242-2.632-1.487-11.586 1.942-11.805 3.34-.22 1.398.037.901 2.189.881 2.152-.02 10.832-1.702 13.649.889 1.344 1.236 3.622 1.608 5.7 1.614 1.015.003 1.673 1.416.924 2.1l-2.352 2.149c-.625.559-2.578 1.136-5.39-1.025-3.752-.052-20.026 4.378-20.577 4.47-.552.093-4.16-3.16-4.64-4.667-.48-1.508-1.528-1.673-1.915-2.629Z\" fill=\"#475987\"/><path d=\"M93.962 167.048c-.454-.793-1.225-1.8-1.76-2.449-.058-.072.002-.173.091-.15.419.106 1.07.346 1.579.77.402.337.524 1.078.531 1.753.002.12-.381.18-.441.076Zm10.745-.128c-.827.706-2.64 1.985-3.273 1.456-.499-.417-.845-.454-.953-.637-.5.446-1.213.864-2.084.901-1.442.06-2.243.603-2.464.867-.116-.019-.309-.085-.147-.203.202-.147 1.213-.884 2.114-.921.721-.03 2.115-.922 2.721-1.364.533-.882 3.036-2.412 3.366-2.36-.588.325-1.687 1.167-1.377 1.932.387.956 1.453-.13 2.097.329Zm10.855-8.064c-.927-.55-2.914 1.909-3.791 3.207.379.819 2.95-1.059 4.186-.867 1.236.193 4.147-.62 2.626-.603-1.522.016-1.862-1.05-3.021-1.737Zm-7.627 9.952c-.655.303.349 3.177.735 3.406 2.624.493 9.666.037 11.81.574 2.681.671 3.275-1.515 3.637-2.218.363-.703-2.626.603-3.46-.539-.835-1.143-4.373-1.188-6.141-1.211-1.769-.022-5.763-.391-6.581-.012Zm29.055-6.107c-.822.075-.961-1.415-.928-2.17 1.291 1.467 1.082 1.182 1.785 1.544.703.363.17.533-.857.626Zm-38.53 10.938c-.075-.441-.88-1.63-1.272-2.169-.702-1.036 1.306-.332 1.95.127.644.459 1.95.127 2.244.531.295.405-.459.645-1.011.737-.551.093-1.82 1.326-1.912.774Zm-8.335-7.846a9.114 9.114 0 0 1-.098-1.177c.018-.117.095-.379.257-.497.202-.147.185 1.103.223 2.004.037.902 1.658 3.126 2.247 3.934.59.809 1.014 2.666 2.45 3.787 1.148.897 1.89 2.028 2.117 2.481-.128.022-.396-.172-.737-.494-.289.174-.854.307-1.212.367.035-.222.456-.601.835-.743a27.226 27.226 0 0 1-1.768-2.084c-.103.252-.727.488-1.24.696-.3-.047.59-.961 1.036-.966-.494-.657-.88-1.239-1.001-1.536a5.088 5.088 0 0 0-.235-.486 1.216 1.216 0 0 1-1.365.414c.348-.161.911-.394 1.256-.611-.563-.986-1.52-2.3-2.106-3.103-.276-.379-.458-.939-.574-1.501-.135.062-.36.197-.714.582.125-.295.416-.882.629-1.067Z\" fill=\"#293D72\"/><path d=\"M109.502 181.996c-.825-1.132-1.705-.924-2.042-.679-2.875-5.644 4.551-10.745 6.244-10.121 1.693.623 5.887 1.282 7.23 1.851 1.343.569 1.734 4.927.209 6.658-1.525 1.73-4.579 1.788-5.333 2.028-.753.239-1.802.075-2.408.517-.607.442-2.869 1.161-3.9-.254Z\" fill=\"#DAD8C4\"/><path d=\"M109.018 181.145c-.818 1.292-1.151.243-1.215-.443l.038-3.542 2.662-3.893 11.673 2.579-.617 3.959c-.154.99-1.408.794-1.582.26-.173-.534-1.1-1.185-1.929-.807-.83.377-4.592-.209-5.017-.782-.424-.573-1.215-.443-1.37.547-.154.989.849 1.146.444 2.096-.405.951-.714-.364-1.138-.937-.425-.573.135-2.514-.618-2.631-.752-.117-.308 1.98-1.331 3.594Z\" fill=\"#AEAB96\"/><path d=\"M111.187 171.755c1.2-.541 2.708-.429 5.995.118l2.296.382c1.386.384 3.962 1.491 3.182 2.842-.975 1.689-5.903 4.062-7.351 3.867-1.449-.195-5.652-5.798-5.57-6.293.082-.495.247-.375 1.448-.916Z\" fill=\"#797979\"/><path d=\"M116.821 169.668c-4.856-.807-7.167.501-7.167.501l-.115 3.46.309.051c.481.11 1.601.52 2.237 1.279.484.578.837 1.537 1.115 2.293.048.129.093.252.137.367.201.951.912 1.669 1.99 1.849 1.102.183 2.06-.285 2.57-1.151l.203-.25c.509-.626 1.153-1.419 1.798-1.808.847-.513 2.04-.538 2.53-.487l1.269-3.66s-2.021-1.636-6.876-2.444Z\" fill=\"#fff\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M116.647 171.91c-2.894-.482-5.884.011-7.063.184l-.023-.673c1.238-.181 4.219-.647 7.187-.153 2.973.494 5.222 1.894 6.384 2.47l-.236.665c-1.129-.561-3.36-2.013-6.249-2.493Z\" fill=\"#E26060\"/><path d=\"M118.845 172.618c.062.868.389 2.167 1.364 3.534l.329-.227c-.832-1.167-1.125-2.281-1.191-3.033l-.502-.274Zm-4.714-.654-.622.001c-.151.77-.53 1.76-1.344 2.492l.41.459c.978-.879 1.402-2.061 1.556-2.952Z\" fill=\"#BCBCBC\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M116.872 170.761c-2.966-.493-6.042.084-7.252.265l.034-.689c1.269-.19 4.295-.699 7.337-.193 3.046.507 5.371 1.86 6.561 2.455l-.229.621c-1.156-.577-3.491-1.967-6.451-2.459Z\" fill=\"#5A64C2\"/><path d=\"M97.578 175.827c-.853.869-.906 1.588-.826 1.84.682 1.36 3.718 2.553 5.171 2.423 1.453-.13 3.33 1.597 5.133 1.522 1.802-.076 1.782-2.227 2.001-3.626.22-1.398 2.461-4.269 2.331-5.722-.13-1.453-5.572 1.274-6.583 2.011-1.011.737-2.299-.182-3.495-.549-1.196-.366-2.666 1.014-3.732 2.101Z\" fill=\"#F5F3E2\"/><path d=\"M121.29 179.907c.354.486 2.906-.26 3.824-1.548.974-1.638 2.077-1.823 3.235-2.357 1.159-.535.662-.792.826-1.84.165-1.049.607-.443 1.782-2.228 1.176-1.785-3.59-4.503-4.803-3.619-1.213.884-3.64 2.652-4.154 3.646-.514.994-.476 1.895-.291 2.998.185 1.104-.861 4.342-.419 4.948Z\" fill=\"#FAFAFA\"/><path d=\"M98.957 176.68c-.28-.044-.975-.631-1.288-.918.11-.7 3.087-2.56 3.731-2.101.644.46 2.043.679 2.594.587.552-.093 1.196.366 1.289.918.092.552-3.348-.346-3.403.003-.055.35.939.864 1.124 1.967.185 1.103 1.638.973 1.528 1.672-.11.699-1.95-.126-2.042-.678-.093-.552-.518-2.409-1.419-2.372-.901.038-1.765.977-2.114.922Zm9.745-2.768c.56.088 1.33-.865 1.618-1.178.809-.59-.017 1.25-.569 1.343-.552.092-1.158.534-1.617 1.178-.46.645-.974 1.638-1.011.737-.038-.901.88-2.189 1.579-2.08Z\" fill=\"#DAD7C4\"/><path d=\"m125.947 168.607 2.635.41c1.016.41.187.532-.153.981-.34.45.413.818.298 1.554-.115.736-1.539-2.25-2.933-1.964-1.394.285-.41 2.95-1.243 2.82-2.641-.411-1.782 2.737-.652 2.411 1.131-.327 2.334.614 2.219 1.35-.115.736-.263-.041-1.619-.001-1.356.04-2.299.898-3.052.529-.752-.368.455-1.185.042-2.003-.412-.818.081-2.248.459-2.943.378-.694 3.472-3.226 3.999-3.144Z\" fill=\"#BCBCBC\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M111.802 188.437c17.932 0 32.468-14.537 32.468-32.469 0-17.931-14.536-32.468-32.468-32.468-17.932 0-32.469 14.537-32.469 32.468 0 17.932 14.537 32.469 32.469 32.469Zm0-7.871c13.585 0 24.597-11.013 24.597-24.598 0-13.584-11.012-24.597-24.597-24.597s-24.597 11.013-24.597 24.597c0 13.585 11.012 24.598 24.597 24.598Z\" fill=\"#C1C1C1\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M135.243 133.504c-5.832-5.587-13.744-9.019-22.457-9.019-17.932 0-32.469 14.536-32.469 32.468 0 8.718 3.436 16.633 9.028 22.466-6.17-5.91-10.011-14.231-10.011-23.449 0-17.932 14.536-32.469 32.468-32.469 9.214 0 17.531 3.838 23.441 10.003Z\" fill=\"#9C9C9C\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M111.802 184.502c15.758 0 28.533-12.775 28.533-28.533 0-15.758-12.775-28.533-28.533-28.533-15.758 0-28.533 12.775-28.533 28.533 0 15.758 12.775 28.533 28.533 28.533Zm0-3.937c13.584 0 24.597-11.012 24.597-24.597s-11.013-24.597-24.597-24.597c-13.585 0-24.598 11.012-24.598 24.597s11.013 24.597 24.598 24.597Z\" fill=\"#C4C4C4\"/><circle cx=\"111.802\" cy=\"155.97\" r=\"27.783\" stroke=\"#9A9A9A\" stroke-width=\"1.5\"/><circle cx=\"111.802\" cy=\"155.969\" r=\"27.299\" stroke=\"#fff\" stroke-width=\".5\"/><rect x=\"44.898\" y=\"148.098\" width=\"6.887\" height=\"12.791\" rx=\"3\" fill=\"#6D6D6D\"/><rect x=\"46.865\" y=\"148.098\" width=\"4.919\" height=\"12.791\" rx=\"2.46\" fill=\"#585858\"/><path d=\"M48.833 155.478c0 19.29 5.506 34.928 12.299 34.928h5.411V120.55h-5.411c-6.793 0-12.299 15.638-12.299 34.928Z\" fill=\"#A4A4A4\"/><ellipse cx=\"66.051\" cy=\"155.478\" rx=\"12.299\" ry=\"34.928\" fill=\"#D2D2D2\"/><rect x=\"49.817\" y=\"151.05\" width=\"2.952\" height=\"8.855\" rx=\"1\" fill=\"#8D8D8D\"/><rect x=\"50.801\" y=\"151.05\" width=\"1.968\" height=\"8.855\" rx=\".984\" fill=\"#585858\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M66.05 185.486c5.163 0 9.348-13.435 9.348-30.008 0-16.574-4.185-30.009-9.347-30.009-.946 0-1.859.451-2.719 1.289 4.042 2.044 7.147 14.124 7.147 28.72 0 14.595-3.104 26.675-7.146 28.72.86.838 1.772 1.288 2.718 1.288Z\" fill=\"#9C9C9C\"/><ellipse opacity=\".75\" cx=\"66.051\" cy=\"155.478\" rx=\"9.347\" ry=\"30.009\" fill=\"url(#e)\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M66.051 185.486c5.162 0 9.347-13.435 9.347-30.008 0-16.574-4.185-30.009-9.347-30.009-1.547 0-3.005 1.206-4.29 3.341 1.014-1.517 2.132-2.357 3.306-2.357 4.619 0 8.363 12.995 8.363 29.025s-3.744 29.025-8.363 29.025c-1.172 0-2.289-.838-3.302-2.35 1.284 2.13 2.741 3.333 4.286 3.333Z\" fill=\"#BFBFBF\"/><path d=\"m68.019 182.535-8.363-48.21c0-1.181 1.312-3.772 1.968-4.92l8.855 48.211c0 .787-1.64 3.608-2.46 4.919Zm3.443-10.823-8.855-43.783.984-.984 8.855 40.832c0 1.967-.656 3.443-.984 3.935Z\" opacity=\".75\" fill=\"#fff\"/><path opacity=\".8\" d=\"M117.632 104.404a5.249 5.249 0 1 1-10.498 0 5.249 5.249 0 0 1 10.498 0Z\" fill=\"#A3A3A3\"/><path d=\"M116.397 103.169a5.249 5.249 0 1 1-10.498 0 5.249 5.249 0 0 1 10.498 0Z\" fill=\"#F8F8F8\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M111.148 107.183a4.014 4.014 0 1 0 0-8.028 4.014 4.014 0 0 0 0 8.028Zm0 1.235a5.249 5.249 0 1 0 0-10.498 5.249 5.249 0 0 0 0 10.498Z\" fill=\"#9A9A9A\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M115.47 103.17a4.322 4.322 0 1 1-8.644.002 4.322 4.322 0 0 1 8.644-.002Zm-4.322 4.014a4.014 4.014 0 1 0 0-8.028 4.014 4.014 0 0 0 0 8.028Z\" fill=\"#CFCFCF\"/><path d=\"M113.309 101.317a.927.927 0 1 1-1.853-.001.927.927 0 0 1 1.853.001Z\" fill=\"#CFCFCF\"/><path opacity=\".8\" d=\"M135.342 104.404a5.249 5.249 0 1 1-10.498 0 5.249 5.249 0 0 1 10.498 0Z\" fill=\"#A3A3A3\"/><path d=\"M134.107 103.169a5.249 5.249 0 1 1-10.498 0 5.249 5.249 0 0 1 10.498 0Z\" fill=\"#F8F8F8\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M128.858 107.183a4.014 4.014 0 1 0 0-8.028 4.014 4.014 0 0 0 0 8.028Zm0 1.235a5.249 5.249 0 1 0 0-10.498 5.249 5.249 0 0 0 0 10.498Z\" fill=\"#9A9A9A\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M133.18 103.17a4.322 4.322 0 1 1-8.644.002 4.322 4.322 0 0 1 8.644-.002Zm-4.322 4.014a4.014 4.014 0 1 0 0-8.028 4.014 4.014 0 0 0 0 8.028Z\" fill=\"#CFCFCF\"/><path d=\"M128.413 104.75a.927.927 0 1 1-1.853 0 .927.927 0 0 1 1.853 0Z\" fill=\"#CFCFCF\"/><rect x=\"77.366\" y=\"98.904\" width=\"19.678\" height=\"7.871\" rx=\"2\" fill=\"url(#f)\"/><path opacity=\".6\" d=\"m83.108 98.906-4.507 7.158h1.305l4.506-7.158h-1.304Zm10.497 0-4.506 7.158h1.852l4.507-7.158h-1.853Zm-8.007 0-4.507 7.158h2.575l4.506-7.158h-2.574Z\" fill=\"#fff\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M78.635 98.904h17.139c.701 0 1.27.641 1.27 1.432v5.009c0 .79-.569 1.431-1.27 1.431H78.635c-.7 0-1.27-.641-1.27-1.431v-5.009c0-.79.57-1.431 1.27-1.431Zm0 .716c-.35 0-.635.32-.635.716v5.009c0 .395.285.715.635.715h17.139c.35 0 .635-.32.635-.715v-5.009c0-.395-.284-.716-.635-.716H78.635Z\" fill=\"#919191\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M144.763 151.05c-.815 0-1.476.661-1.476 1.476v7.871a1.476 1.476 0 0 0 2.952 0v-2.853l.52.105a1.21 1.21 0 1 0 0-2.373l-.52.104v-2.854c0-.815-.661-1.476-1.476-1.476Z\" fill=\"#C1C1C1\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M143.778 150.066c-.815 0-1.476.661-1.476 1.476v7.871a1.476 1.476 0 0 0 2.952 0v-2.853l.521.105a1.21 1.21 0 1 0 0-2.373l-.521.104v-2.854c0-.815-.661-1.476-1.476-1.476Z\" fill=\"#8D8D8D\"/><path d=\"M143.778 150.066c.815 0 1.476.661 1.476 1.476v7.871c0 .815-.661 1.476-1.476 1.476v-10.823Z\" fill=\"#585858\"/><path d=\"M97.372 190.778c2.7-4.895 2.843-8.627 3.101-10.773.179-1.487 1.651-1.755 3.075-1.291l2.169.706a20 20 0 0 0 11.813.175l4.314-1.264c.118-.034.361.377.291.478-1.848 2.656-3.2 10.42-3.711 14.191-.685 5.063 7.494 6.805 8.534 10h-33c.196-2.381-.568-5 3.414-12.222Z\" fill=\"url(#g)\"/><path d=\"M106.29 206.817c-13.858-1.016-17.985-5.179-18.317-7.133 8.286 3.91 12.486 1.101 13.745-.053 7.744 5.009 14.407-1.266 17.114-4.514 2.014 5.198 9.31 4.782 12.168 2.67.994 5.863-7.387 10.3-24.71 9.03Z\" fill=\"#97D0E2\"/><ellipse cx=\"100.803\" cy=\"194.245\" rx=\"1.226\" ry=\"3.066\" transform=\"rotate(-17.669 100.803 194.245)\" fill=\"#DAF6FF\"/><ellipse cx=\"115.671\" cy=\"192.557\" rx=\".598\" ry=\"1.496\" transform=\"rotate(26.413 115.671 192.557)\" fill=\"#DAF6FF\"/><ellipse cx=\"110.169\" cy=\"195.872\" rx=\"1.025\" ry=\"2.563\" transform=\"rotate(-7.008 110.169 195.872)\" fill=\"#DAF6FF\"/><path d=\"M112.958 93h13.5l-.144-1.301a21.98 21.98 0 0 1 .22-6.365l.165-.908a1 1 0 0 0-1.166-1.162l-11.31 2.095a1 1 0 0 0-.816.916L112.958 93Zm-5 0c.355-1.063-.049-3.904-.378-5.814a.496.496 0 0 0-.731-.347L102.958 89l-8.5 4h13.5Zm-9.999-8.442V81a1 1 0 0 1 1-1h2.499a.5.5 0 1 1 0 1h-1.75a.75.75 0 0 0-.75.75v2.198c0 .68.197 1.393.76 1.774.915.619 1.812.396 2.471-.03.565-.365.769-1.058.769-1.73V81.5a.5.5 0 0 1 1 0v2.759c0 1.077-.562 2.13-1.601 2.415-1.224.335-2.302.226-3.118-.03-.87-.272-1.28-1.175-1.28-2.086Z\" fill=\"#D8D8D8\"/><path d=\"M160.907 203.151c-2.217.574-9.42 1.434-12.191 1.075-1.108.007-3.022.572-.554.717 6.095.359 12.957-1.075 14.407-1.792 1.45-.717 1.662-2.151 1.108-2.151-.554 0 0 1.434-2.77 2.151Zm-7.886 5.396c-2.622.242-9.894-.24-13.203-.512-.721.036-2.071.173-1.71.431.451.323 13.654.835 18.57.381 3.933-.363 5.359-.798 5.581-.97-1.987.123-6.616.428-9.238.67Zm-69.071-4.689c-2.827.762-12.977.986-16.78.716-1.969-.14-5.845-.427-8.764-.947-2.718-.485-3.748-1.621-3.26-1.621 1.086 0 .543.695 4.347 1.389 4.503.494 8.73.888 11.957.926 4.21.175 14.945-1.123 12.5-.463Zm-38.514 1.371c-1.215 0 3.1.86 3.813.916 2.575.435 17.73 1.16 17.926.704.195-.455-9.248-.409-13.043-.704-2.139-.166-7.358-.916-8.696-.916Z\" fill=\"#DAF6FF\"/><path opacity=\".3\" d=\"M88.598 160.848c-1.263.745-1.174 2.821-.972 3.766-.134 1.037 4.078 5.471 6.236 6.966 2.159 1.494 3.365 4.082 4.896 5.414 1.531 1.332 2.871 2.883 4.973 3.559 2.101.677 2.757 1.248 4.802 1.106 2.045-.142-1.008.275 5.346.041 6.353-.235 16.011-9.124 17.344-10.654 1.332-1.531.372-3.519-1.369-1.96-1.741 1.559-2.721 2.243-4.548 2.575-1.826.332-2.34 1.806-3.673 3.337-1.332 1.53-1.332 1.53-3.073 3.089-1.741 1.56-2.073-.267-3.738-.562-1.664-.296-1.502-.924-3.195-1.628-1.693-.705-1.17.903-2.093 2.405-.924 1.502-3.272.227-4.965-.478s-2.3-3.539-4.657-7.896c-2.357-4.358-2.786-1.657-4.527-.098-1.742 1.559-3.908-3.017-4.268-5.252-.36-2.235-.94-4.661-2.52-3.73Z\" fill=\"url(#h)\"/><path d=\"M90.146 167.571c-.07-1.373-1.71-2.582-2.521-3.014-2.657-1.494.99 2.5 1.034 3.358.045.858 1.418 2.463 3.648 3.994 2.229 1.531 3.85 3.761 5.2 4.937 1.352 1.176.293 1.483 1.26 3.554.968 2.071 1.735.281 3.695.757 1.959.477 4.391 1.775 6.735 1.356 2.343-.418 2.387.44 4.753.45 2.365.011 6.759-2.31 7.571-3.242.811-.932 3.313-2.442 5.836-3.523 2.524-1.08 3.877-3.999 4.869-5.594.992-1.594-2.726 1.314-4.552 3.412-1.826 2.098-6.092 1.619-7.715 3.484-1.623 1.865-5 3-6.5 2.5-1.416-.472-5.338-.256-7.5-.5-2.163-.244-7.37-2.532-8.788-4.996-1.418-2.463-6.935-5.217-7.025-6.933Z\" fill=\"#1297C1\"/><path d=\"M25.628 34.853c-1.067-3.775-5.336-7.752-4.002-9.438.55-1.947-.414-4.583-1.205-6.013-.186-.337.013-.792.394-.843l3.818-.515a.494.494 0 0 1 .495.241c.939 1.628 1.778 3.573.833 6.12-1 2.696 1 4.044 2.335 4.38 1.334.338 4.335 1.012 2.668 3.372-1.668 2.359-2.001 1.685 3.001 4.718 5.003 3.034-.667 5.393-3.335 3.371s-3.668-.674-5.002-5.393Z\" fill=\"#FAFAFA\"/><path d=\"M30.959 29.5c1.6 1.2 0 3.666-1 4.5-3.2-.8-2.667-4-2-5.5.333 0 1.4-.2 3 1Zm3 7.5c-1.2.4-2.5 2.5-3 3.5 1 1.5 5.5.5 5-1.5-.4-1.6-1.5-2-2-2Z\" fill=\"#5E5CC9\"/><path d=\"M198.958 107.609c-2.304-3.457-5.869-3.809-9.542-3.536a.496.496 0 0 0-.458.495v4.965c0 .304.271.536.575.514 3.044-.212 4.068 1.647 6.425 3.062 2.5 1.5 7 1.5 8 3s-.5 2.5-2.5 7.5 5 4.5 4.5 3 1-3.5 2-6.5 4-5 3-7-3.5-.5-5-1-4 0-7-4.5Z\" fill=\"#FAFAFA\"/><path d=\"M207.958 112c-2.8.8-.5 4.333 1 6 .8-.001 1.667-2.001 2-3 1.2-2.8-1.5-3.167-3-3Zm-6 15c-1.788-1.342-.666-4.167 0-4.5l4.501 1.5c-.5 1-.001 2.5-.501 3-1 1-2 1.5-4 0Z\" fill=\"#E26060\"/><ellipse cx=\"110.458\" cy=\"52.5\" rx=\"2.5\" ry=\".5\" fill=\"#D8D8D8\"/><ellipse cx=\"110.458\" cy=\"52\" rx=\"3.5\" ry=\"1\" fill=\"#D8D8D8\"/><defs><radialGradient id=\"c\" cx=\"0\" cy=\"0\" r=\"1\" gradientUnits=\"userSpaceOnUse\" gradientTransform=\"matrix(-1.70192 16.28591 -118.71354 -12.40587 111.596 199.575)\"><stop offset=\".094\" stop-color=\"#0089B4\"/><stop offset=\"1\" stop-color=\"#67DAFE\"/></radialGradient><radialGradient id=\"g\" cx=\"0\" cy=\"0\" r=\"1\" gradientUnits=\"userSpaceOnUse\" gradientTransform=\"rotate(-76.398 192.868 59.13) scale(64.594 86.9312)\"><stop stop-color=\"#0089B4\"/><stop offset=\"1\" stop-color=\"#68DBFF\"/></radialGradient><radialGradient id=\"h\" cx=\"0\" cy=\"0\" r=\"1\" gradientUnits=\"userSpaceOnUse\" gradientTransform=\"rotate(-116.844 109.098 53.76) scale(26.5437 26.3435)\"><stop stop-color=\"#0089B4\"/><stop offset=\"1\" stop-color=\"#68DBFF\"/></radialGradient><linearGradient id=\"d\" x1=\"111.802\" y1=\"131.372\" x2=\"120.789\" y2=\"253.412\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#424242\"/><stop offset=\"1\"/></linearGradient><linearGradient id=\"e\" x1=\"76.561\" y1=\"114.993\" x2=\"32.53\" y2=\"140.506\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#BBF3FF\" stop-opacity=\".45\"/><stop offset=\"1\" stop-color=\"#95ECFF\"/></linearGradient><linearGradient id=\"f\" x1=\"75.89\" y1=\"118.582\" x2=\"97.472\" y2=\"100.667\" gradientUnits=\"userSpaceOnUse\"><stop/><stop offset=\"1\" stop-color=\"#5B5B5B\"/></linearGradient><filter id=\"a\" x=\"134.458\" y=\"130.07\" width=\"46.527\" height=\"46.831\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".75\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"b\" x=\"30.459\" y=\"81.5\" width=\"44.67\" height=\"44.795\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".75\" result=\"effect1_foregroundBlur\"/></filter></defs></svg>");
+/**
+ * @name addDays
+ * @category Day Helpers
+ * @summary Add the specified number of days to the given date.
+ *
+ * @description
+ * Add the specified number of days to the given date.
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} - the new date with the days added
+ * @throws {TypeError} - 2 arguments required
+ *
+ * @example
+ * // Add 10 days to 1 September 2014:
+ * const result = addDays(new Date(2014, 8, 1), 10)
+ * //=> Thu Sep 11 2014 00:00:00
+ */
 
-/***/ }),
-/* 940 */
-/***/ (function(module, exports) {
+function addDays(dirtyDate, dirtyAmount) {
+  Object(_lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_2__["default"])(2, arguments);
+  var date = Object(_toDate_index_js__WEBPACK_IMPORTED_MODULE_1__["default"])(dirtyDate);
+  var amount = Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(dirtyAmount);
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"221\" viewBox=\"0 0 221 221\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <rect x=\"31.011\" y=\"36.736\" width=\"147.343\" height=\"147.343\" rx=\"7\" fill=\"#434244\" stroke=\"#59595B\" stroke-width=\"4\"/>\n|   <path d=\"M128.05 176.792c2.567 0 4.648-2.09 4.648-4.668 0-2.578-2.081-4.668-4.648-4.668-2.566 0-4.647 2.09-4.647 4.668 0 2.578 2.081 4.668 4.647 4.668Z\" fill=\"#929496\"/>");
+  if (isNaN(amount)) {
+    return new Date(NaN);
+  }
 
-/***/ }),
-/* 941 */
-/***/ (function(module, exports) {
+  if (!amount) {
+    // If 0 days, no-op to avoid changing times in the hour before end of DST
+    return date;
+  }
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"120\" height=\"121\" viewBox=\"0 0 120 121\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path d=\"M35.709 7.716a1 1 0 0 1 .857-.485h45.35a1 1 0 0 1 .87.51l12.376 22a1 1 0 0 1-.872 1.49H23.366a1 1 0 0 1-.857-1.515l13.2-22Z\" fill=\"url(#a)\"/>\n|   <rect x=\"19.2\" y=\"31.231\" width=\"26.4\" height=\"38.4\" rx=\"1\" fill=\"#fff\"/>");
+  date.setDate(date.getDate() + amount);
+  return date;
+}
 
 /***/ }),
-/* 942 */
-/***/ (function(module, exports) {
-
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#a)\"><path opacity=\".7\" d=\"M210.715 149.899c13.594 59.362-39.651 60.608-67.973 53.811-9.083-20.243-26.398-43.673-44.181-61.175-6.089-5.992-8.938-14.161-14.728-18.692-6.828-5.344-16.417-6.875-20.958-11.895-1.322-1.133-3.172-3.172 0-2.266 3.965 1.133 7.364-4.532 3.399-9.063-3.965-4.531-11.329-9.063-6.797-10.196 4.531-1.133 7.93.567 6.797-1.7-1.133-2.265-2.266-1.132-5.665-3.398-3.398-2.266-7.363-3.398-6.797-5.098.567-1.699 2.832 1.133 3.965 0s-3.398-3.965-3.398-5.664c0-1.36 6.42.189 9.629 1.133 15.692 3.21 32.207 3.917 45.315 9.63 12.023 5.239 20.82 15.4 31.154 20.391 35.657 17.22 60.478 33.011 70.238 44.182Z\" fill=\"url(#b)\"/><path opacity=\".5\" d=\"M121.218 166.325c1.359 4.984 4.531 8.119 5.664 9.063 14.728-16.993 43.049-50.526 43.049-53.245 0-3.399-8.562-5.142-11.895-7.364-3.398-2.266-30.587-15.86-30.587-13.028 0 2.832 15.86 7.93 21.524 12.462 5.665 4.531-1.699 6.797-4.531 3.965s-11.895-7.364-13.595-3.965c-1.699 3.399 3.965 3.399 9.63 5.664 5.664 2.266-2.832 5.664-7.93 4.531-5.098-1.132-3.399 10.763-7.93 5.098-4.532-5.664-18.126-5.664-13.028-2.265 5.098 3.398 8.496 4.531 13.028 9.629 4.531 5.098 1.699 8.497-3.399 9.063-5.098.566-4.532-1.699-6.231-8.496-1.699-6.798-7.93-.567 0 10.762 7.93 11.328 11.329 16.993 9.63 18.126-1.7 1.133-5.098-6.231-3.399 0Z\" fill=\"#DAF6FF\"/><path d=\"M161.945 126.956c-.271 1.886-2.139 5.05-3.038 6.396-4.715-.23-14.213-.891-14.481-1.7-.336-1.011 4.044-2.69 5.393-4.036 1.349-1.346 6.404-4.371 7.752-4.37 1.347.002 2.358-.334 3.032-1.007.674-.673 1.685-1.009 2.022-.671.336.337-.341 3.03-.68 5.388Z\" fill=\"#F5F3E2\"/><path d=\"M147.024 129.614c-2.239-.384-2.798.479-2.798.959l14.457 3.357 3.265-3.837c-.311-1.599-1.306-4.988-2.798-5.755-1.866-.96-2.798 0-2.332 1.918.466 1.919 1.399 3.358 0 3.358s-6.996.479-9.794 0Zm36.794 15.216c-1.078-.001-8.981-.459-12.798-.687-9.086-7.083-4.358-18.53-1.997-22.232 2.362-3.702 2.022-.672 4.378.341 2.357 1.013 2.358.34 6.064-.667 3.706-1.006 6.396 3.039 8.416 3.715 2.02.675 1.341 5.39 1.001 8.421-.34 3.031.665 8.084-.684 10.104-1.35 2.019-3.033 1.007-4.38 1.005Z\" fill=\"#DAD7C4\"/><path d=\"M172.913 123.112c-.268-1.348-2.132-1.687-3.03-1.688l-6.068 5.383-.347 9.093 9.754 12.473 11.79-1.671c1.349-1.121 3.911-3.633 3.373-4.712-.672-1.348-2.694-.003-5.389.668-2.696.671-6.397-2.365-8.08-3.377-1.683-1.012-2.689-4.718-1.679-5.054 1.011-.336 3.035-3.028 4.047-4.711 1.013-1.683 1.347.675 3.369-.67 2.022-1.345-.335-1.684-2.019-2.023-1.683-.339-3.034 3.028-4.719 4.037-1.685 1.008-3.706 1.006-3.703-1.689.003-2.694 3.036-4.375 2.701-6.059Z\" fill=\"#AEAB96\"/><path d=\"M190.52 175.825c1.613 3.774-1.354 6.285-3.039 7.069-15.156.321-16.128-35.719-14.778-37.739 1.349-2.019 13.138-2.343 14.485-1.668 1.346.675-.684 9.43-.354 15.156.331 5.726 1.671 12.464 3.686 17.182Z\" fill=\"#F5F3E2\"/><path d=\"M177.917 167.24c-.336-1.01.017-15.493-.656-16.841-.537-1.078-1.795-.676-2.357-.339l-2.366 7.744 7.721 23.248 6.733 2.702 2.362-3.702c-.326-9.544-1.046-28.698-1.315-28.967-.337-.338-1.683-1.013-3.031-1.014-1.347-.002-1.682-1.686-4.376-1.689-2.695-.003-1.687 2.356-.678 3.367 1.01 1.012 2.36-1.681 3.033-1.007.673.675-.008 7.41-.01 9.431-.003 2.021 2.008 11.454 2.679 13.475.672 2.022.667 6.737-.68 6.062-1.346-.675-6.724-11.459-7.059-12.47Zm-52.734 4.471c.534 4.312 1.79 5.616 2.352 5.728 2.02.901 6.599 2.029 8.758-.664 2.698-3.365 21.237-16.48 24.27-18.161 3.033-1.681 6.406-6.392 5.068-14.477s-22.218-10.129-24.576-10.468c-2.357-.34-4.717 2.016-6.742 5.381-2.024 3.366-2.026 4.713-4.386 6.395-2.359 1.681-3.711 5.722-3.712 7.069-.002 1.347-.34 2.357-.682 7.409s-1.017 6.398-.35 11.788Z\" fill=\"#DAD7C4\"/><path d=\"M127.205 171.04c-1.889 2.423-1.016 5.275-.344 6.399 7.3-2.126 22.17-6.78 23.249-8.395 1.35-2.019-1.344-2.696-3.363-4.719-2.018-2.023-8.084.665-9.767.326-1.684-.339 4.725-9.426 2.032-10.102-2.694-.677-5.4 9.425-6.412 11.107-1.012 1.683-3.034 2.355-5.395 5.384Zm10.131-24.24c-.268-1.347-2.58-2.136-3.702-2.361-2.356-1.687 2.358-1.008 3.705-.333 1.346.675-.002 2.021 1.68 3.707s4.043-1.343 5.728-2.352c1.685-1.008 2.208-.485 4.228.191 2.02.676 2.509-.857 2.17 1.5-.34 2.358-3.031-.34-4.378-1.015-1.346-.675-5.056 3.699-7.077 3.697-2.021-.002-2.019-1.349-2.354-3.034Z\" fill=\"#AEAB96\"/><path d=\"M159.901 147.836c1.077 1.079-.228 3.367-1.015 4.377 2.02.676 6.397 1.691 7.746.345 1.686-1.682-4.7-13.477-7.393-14.827-2.693-1.351-20.207-2.044-22.902-1.373-2.695.671-2.698 3.365-1.014 3.03 1.685-.335 4.38-1.005 5.726-.33 1.347.675 4.716.005 7.411-.666 2.695-.67 2.019 2.023.333 3.032-1.685 1.009-2.023 2.019-.001 1.347 2.022-.671 1.687-2.356 4.045-2.69 2.358-.334 3.029 1.688 3.364 3.372.335 1.684 2.354 3.034 3.7 4.383Z\" fill=\"#AEAB96\"/><path d=\"M139.634 201.03c1.076 1.618 4.264 1.801 5.724 1.69l16.511-6.381c-2.235-9.882-7.31-29.85-9.734-30.661-2.424-.811-11.118 2.571-15.161 4.362-4.587 5.115-8.202 5.717-9.437 5.379-.451 1.571-1.757 4.848-3.374 5.385-1.168.388-2.99-.489-4.377-1.388-.633-.41-1.526-.084-1.674.655l-.895 4.448c-.08.397.086.804.418 1.037 1.573 1.1 4.476 3.073 6.858 1.648 2.696-1.614 4.044-2.016 4.379-1.006-.338 1.684 3.363 4.719 5.717 8.427 2.354 3.707 3.7 4.383 5.045 6.405Z\" fill=\"#FAFAFA\"/><path d=\"M136.973 170.041c-3.237 3.769-7.64 5.156-9.436 5.378 1.121 1.349 4.172 3.777 7.407 2.703 3.234-1.074 2.701-5.835 2.029-8.081Zm7.531 30.51c-1.524 1.524 0 2.223.953 2.382l10.955-15.243 2.858-12.384c-2.382-1.905-7.526-5.626-9.05-5.265-1.905.45-4.763 2.407-3.811 3.836.953 1.429 5.716 5.24 7.145 7.145 1.429 1.905-3.81 6.668-3.334 9.526.476 2.858-3.811 8.098-5.716 10.003Zm-14.29-15.718c.477-1.906-1.905-1.429-3.81-.477-1.524.762-1.27 1.906-.953 2.382.476 0 .476 0 1.429-.953 1.429-.952 2.858.953 3.334-.952Z\" fill=\"#BCBCBC\"/><path d=\"M145.933 186.738c0 1.609-.531 2.405-1.173 2.75-.876.472-2.392 1.402-1.401 1.497 1.099.106 3.527-1.501 3.527-3.771 0-3.334 2.381-5.239.952-5.239-1.429 0-1.905.952-1.905 4.763Z\" fill=\"#BCBCBC\"/><path d=\"M174.662 201.742c3.501 1.89 7.072 1.018 8.42.346 1.348-1.346-5.718-7.079-6.726-9.438-1.008-2.359-11.764-22.579-11.765-21.232-.002 1.347-5.062 8.415-7.757 9.085-2.695.671-4.051 8.753-3.716 10.437.335 1.685 5.718 6.406 9.087 6.41 3.368.004 8.081 2.03 12.457 4.392Z\" fill=\"#AEAB96\"/><path d=\"M158.506 191.62c-1.613-3.235-2.241-4.269-2.353-4.381-1.217-2.15 2.698-3.366 4.718-2.016 2.019 1.349 2.357.339 5.387 1.353 3.03 1.014 3.366 2.025 4.375 3.71 1.008 1.685 6.058 4.048 7.403 6.07 1.345 2.023-2.362 3.703-3.709 3.701-1.347-.001-9.766-1.694-12.459-2.371-2.694-.677-1.345-2.022-3.362-6.066Z\" fill=\"#DAD7C4\"/><path d=\"M156.203 141.432c2.962 1.89 4.378.791 4.715.005l.009-7.409c-1.682-2.36-7.406-4.05-9.765-3.042-2.358 1.007-8.42.327-8.755-2.031-.334-2.358 1.017-5.725-3.017-12.465-4.035-6.741-11.453.661-7.75 3.022 3.702 2.362 4.368 9.099 2.682 11.455-1.687 2.356-1.357 8.756 2.349 7.749 3.706-1.006 6.399.344 9.768-.999 3.37-1.344 6.062 1.353 9.764 3.715Z\" fill=\"#FAFAFA\"/><path d=\"M140.376 138.384c-.535-3.234-4.484-5.619-6.392-6.407-1.349 1.346-.682 7.409 1.676 7.075l4.716-.668Zm-4.02-19.54c-1.617-.002-3.145 1.119-3.707 1.68-2.356-1.687-3.364-4.046.344-6.399 2.966-1.883 5.052.342 5.724 1.69-.113 1.01-.744 3.031-2.361 3.029Z\" fill=\"#5A64C2\"/><path d=\"M188.801 207.82c-.541 2.155-3.37 1.793-4.717 1.343-10.437-3.043-19.872.315-22.901-1.373-3.03-1.687-3.031-.34-6.399-.344-3.368-.003-9.767-.347-10.438-3.042-.671-2.696 8.097-12.79 10.455-12.451 2.357.339 6.732 4.049 13.467 4.73s21.21 8.444 20.533 11.137Z\" fill=\"#F5F3E2\"/><path d=\"M152.77 201.381c-.571.949-2.844.503-4.844-.158-1.182-.391-1.586-1.814-.848-2.818 5.925-8.066 7.362-5.327 7.046-3.758-.338 1.683 1.009 1.685 3.03 1.687 2.021.002 4.041.678 4.038 2.699-.002 2.021-1.685 1.009-4.041-.004-2.357-1.013-3.369.67-4.381 2.352Zm31.319 3.74c1.076 1.079-.002 1.347-.675 1.346-.674-.001-1.01-.338-1.346-1.349-.336-1.01-4.376-2.362-6.733-2.701-2.358-.34-2.693-2.024-1.345-2.696 1.348-.673 2.693 1.35 4.376 2.362 1.683 1.012 4.377 1.689 5.723 3.038Z\" fill=\"#DAD7C4\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M156.496 181.513c1.345 2.427 9.315 3.042 13.132 3.046l-5.354-31.666c-2.264-1.816-5.642-1.536-7.728-1.002l-1.7-1.703-3.033 1.681v.652c-.728.643-1.673 1.279-2.208 1.61l-.488-.244-2.697 2.017.773 1.81c-.307.098-.681.09-1.112-.126-1.346-.675-3.704-1.014-8.418-1.693-3.644-.525-4.47-2.254-5.278-3.945-.238-.498-.473-.992-.779-1.451-1.076-1.618-4.261-4.495-5.719-5.732l-2.028 6.061c2.736 1.645 3.395 2.992 4.014 4.256.524 1.069 1.018 2.079 2.714 3.161 2.265 1.444 6.042 2.639 9.019 3.58 1.89.598 3.458 1.093 4.111 1.486.623.375 1.521 1.579 2.542 2.948 1.739 2.333 3.835 5.143 5.533 5.145 2.155.002 4.034 6.74 4.704 10.109Z\" fill=\"#C69292\"/><circle cx=\"153.155\" cy=\"157.26\" r=\".476\" transform=\"rotate(-44.937 153.155 157.26)\" fill=\"#885050\"/><circle cx=\"154.499\" cy=\"159.955\" r=\".476\" transform=\"rotate(-44.937 154.499 159.955)\" fill=\"#885050\"/><circle cx=\"155.844\" cy=\"162.651\" r=\".476\" transform=\"rotate(-44.937 155.844 162.651)\" fill=\"#885050\"/><circle cx=\"157.188\" cy=\"165.347\" r=\".476\" transform=\"rotate(-44.937 157.188 165.347)\" fill=\"#885050\"/><circle cx=\"158.532\" cy=\"168.043\" r=\".476\" transform=\"rotate(-44.937 158.532 168.043)\" fill=\"#885050\"/><circle cx=\"159.876\" cy=\"170.739\" r=\".476\" transform=\"rotate(-44.937 159.876 170.739)\" fill=\"#885050\"/><circle cx=\"161.22\" cy=\"173.435\" r=\".476\" transform=\"rotate(-44.937 161.22 173.435)\" fill=\"#885050\"/><circle cx=\"162.565\" cy=\"176.131\" r=\".476\" transform=\"rotate(-44.937 162.565 176.131)\" fill=\"#885050\"/><circle cx=\"163.909\" cy=\"178.827\" r=\".476\" transform=\"rotate(-44.937 163.909 178.827)\" fill=\"#885050\"/><path d=\"M163.265 151.881c-.539-.539-4.041-.453-5.726-.343-1.011 1.01.673.675 2.019 2.023 1.346 1.349 2.353 4.382 1.003 6.401-1.349 2.019 1.099 7.458 1.674 9.769.67 2.695 3.693 10.445 4.028 12.13.335 1.684-3.369 1.343-3.034 2.354.269.809 4.378.566 6.399.344-1.12-2.247-3.562-7.212-4.368-9.099-1.008-2.358-1.322-22.904-1.995-23.579Zm-11.455 3.356.003-3.368 2.692 2.024-2.695 1.344-2.023 1.345-.67-2.695 2.693 1.35Z\" fill=\"#885050\"/><path d=\"M196.889 203.787c-1.348.807-6.628 3.698-8.088 4.033-5.834-3.599-16.957-16.186-22.871-29.664-7.391-16.849-.312-21.894-3.672-29.307-3.36-7.414-4.356-20.55-2.668-24.253.675-1.122 2.833-3.904 6.069-6.056 4.045-2.69.343-5.052-2.689-4.719l4.049-6.731c4.152 1.913 11.174 7.152 6.049 12.805-5.126 5.653-8.432 10.432-2.379 19.196 4.991 7.227 7.729 15.838 5.702 21.225-2.027 5.387 7.05 21.227 9.744 21.23 2.695.003 1.685-.335 1.015-4.378-.669-4.042-6.377-19.879-2.329-25.937 2.487-3.721 1.826-9.935.726-14.399-.243-.984.982-1.828 1.774-1.194l7.278 5.836c1.234 1.012 2.892 4.517-.348 10.441 1.003 7.074 14.106 36.391 14.442 37.402.336 1.011-4.725 8.752-7.421 10.096-2.696 1.345-2.698 3.366-4.383 4.374Z\" fill=\"#475987\"/><path d=\"M191.276 196.804c-1.497.981-3.745 3.339-4.987 4.749-.061.069-.172.026-.167-.066.046-.786.288-2.244 1.006-3.437.641-1.067 2.593-1.498 4.046-1.63.12-.011.203.318.102.384Zm-4.125-19.636c1.57 1.349 4.508 4.383 3.698 5.73-.638 1.061-.606 1.722-.918 1.979.985.81 1.981 2.029 2.304 3.656.536 2.696 1.792 4.044 2.353 4.382 0 .224-.068.606-.337.336-.336-.337-2.019-2.023-2.354-3.707-.268-1.348-2.353-3.708-3.363-4.72-1.815-.744-5.428-5.003-5.427-5.64.785 1.011 2.691 2.832 4.039 2.025 1.685-1.008-.67-2.695.005-4.041Zm-18.354-18.058c-.762 1.905 4.445 4.922 7.145 6.192 1.429-.952-2.858-5.24-2.858-7.621 0-2.382-2.382-7.621-1.906-4.763.477 2.858-1.429 3.81-2.381 6.192Zm20.958 11.432c.762 1.143 5.875-1.588 6.192-2.382.159-5.081-2.762-18.196-2.381-22.387.476-5.24-3.811-5.716-5.24-6.192-1.429-.477 1.905 4.763 0 6.668-1.905 1.905-.953 8.574-.476 11.908.476 3.334.952 10.956 1.905 12.385Zm-20.006-52.872c.382 1.524-2.381 2.223-3.81 2.381 2.381-2.858 1.905-2.381 2.381-3.81.477-1.429.953-.476 1.429 1.429Zm31.874 69.281c-.809.269-2.809 2.13-3.709 3.028-1.743 1.624-1.007-2.359-.332-3.706.675-1.346-.333-3.705.341-4.378.675-.673 1.347.675 1.683 1.686.335 1.011 3.028 3.035 2.017 3.37Zm-12.317 17.98c-.853.264-1.652.441-2.186.529-.225 0-.741-.068-1.01-.338-.337-.337 2.021-.671 3.706-1.006 1.684-.335 5.393-4.036 6.742-5.382 1.349-1.346 4.718-2.689 6.406-5.719 1.35-2.423 3.26-4.15 4.047-4.71.077.234-.208.796-.714 1.532.412.492.828 1.517 1.046 2.173-.428-.001-1.265-.683-1.644-1.353-.923 1.209-2.2 2.672-3.402 3.935.506.121 1.133 1.227 1.673 2.129-.001.578-1.98-.828-2.12-1.664-1.092 1.12-2.072 2.019-2.596 2.333-.255.152-.54.351-.847.583.591.317 1.373 1.113 1.18 2.448-.404-.607-1.009-1.599-1.518-2.184-1.69 1.348-3.881 3.535-5.221 4.872-.631.63-1.631 1.136-2.655 1.52.158.236.476.619 1.305 1.173-.593-.149-1.781-.524-2.192-.871Z\" fill=\"#293D72\"/><path d=\"M214.11 163.725c-1.888 1.884-1.238 3.479-.678 4.041-9.775 7.063-21.55-5.412-20.872-8.78.677-3.367.686-11.45 1.362-14.144.677-2.694 8.763-4.706 12.465-2.344 3.702 2.362 4.706 8.088 5.379 9.436.672 1.348.67 3.369 1.679 4.381 1.009 1.011 3.026 5.055.665 7.41Z\" fill=\"#DAD8C4\"/><path d=\"M212.65 164.884c2.67 1.16.795 2.095-.477 2.417l-6.675.967-8.105-3.867 1.43-22.717h7.629c1.907 0 1.907 2.417.954 2.9-.954.483-1.908 2.417-.954 3.867.954 1.45.954 8.7 0 9.667-.954.966-.477 2.416 1.43 2.416s1.907-1.933 3.815-1.45c1.907.484-.477 1.45-1.431 2.417-.953.967-4.768.483-4.768 1.933 0 1.45 3.815 0 7.152 1.45Z\" fill=\"#AEAB96\"/><path d=\"M194.349 163.557c-1.369-2.1-1.6-4.97-1.536-11.313l.046-4.432c.317-2.719 1.644-7.891 4.414-6.82 3.463 1.339 9.372 9.916 9.43 12.697.059 2.782-9.25 12.333-10.206 12.323-.956-.009-.779-.355-2.148-2.455Z\" fill=\"#797979\"/><path d=\"M188.772 153.57c-.095 9.372 3.044 13.335 3.044 13.335l6.542-.797.006-.597c.067-.937.51-3.164 1.751-4.583.944-1.079 2.645-2.025 3.987-2.771.228-.127.447-.248.649-.363 1.73-.659 2.874-2.206 2.895-4.287.022-2.126-1.139-3.792-2.919-4.497a56.967 56.967 0 0 0-.529-.31c-1.326-.773-3.007-1.753-3.929-2.852-1.212-1.443-1.61-3.679-1.657-4.617l-7.257-1.315s-2.487 4.282-2.583 13.654Z\" fill=\"#fff\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M193.04 153.238c-.057 5.586 1.747 11.066 2.418 13.235l-1.259.239c-.704-2.276-2.454-7.748-2.395-13.476.058-5.738 2.031-10.379 2.776-12.734l1.318.249c-.723 2.288-2.801 6.911-2.858 12.487Z\" fill=\"#E26060\"/><path d=\"M193.728 148.897c1.615-.37 3.962-1.366 6.248-3.601l-.524-.554c-1.952 1.909-3.96 2.786-5.356 3.13l-.368 1.025Zm.153 9.059.184 1.17c1.493.058 3.466.481 5.083 1.799l.743-.907c-1.941-1.581-4.289-2.034-6.01-2.062Z\" fill=\"#BCBCBC\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M190.814 153.153c-.058 5.725 1.93 11.342 2.624 13.565l-1.306.139c-.728-2.333-2.573-7.877-2.513-13.747.06-5.88 1.924-10.65 2.694-13.064l1.236.249c-.747 2.344-2.676 7.144-2.735 12.858Z\" fill=\"#5A64C2\"/><path d=\"M206 187.967c1.885 1.349 3.255 1.238 3.704 1.014 2.359-1.681 3.714-7.742 3.043-10.438-.671-2.695 2.028-6.734 1.358-10.103-.67-3.369-4.712-2.699-7.407-2.702-2.694-.003-8.753-3.378-11.448-2.707-2.696.67 4.03 10.108 5.713 11.794 1.682 1.686.331 4.379-.008 6.737-.339 2.357 2.689 4.718 5.045 6.405Z\" fill=\"#F5F3E2\"/><path d=\"M206.724 142.161c.809-.807-1.341-5.39-4.034-6.74-3.367-1.352-4.038-3.373-5.383-5.395-1.345-2.023-1.683-1.013-3.704-1.015-2.021-.002-1.01-1.012-4.713-2.7-3.703-1.688-7.418 8.076-5.4 10.099 2.019 2.023 6.056 6.069 8.076 6.745 2.02.676 3.705.341 5.727-.331 2.021-.671 8.419.346 9.431-.663Z\" fill=\"#FAFAFA\"/><path d=\"M207.199 185.123c0 .538-.9 2.019-1.35 2.693-1.347-.002-5.72-5.059-5.045-6.405.675-1.347.678-4.041.342-5.052-.336-1.011.34-2.357 1.35-2.693 1.011-.336.33 6.4 1.004 6.4.673.001 1.349-2.019 3.371-2.691 2.021-.671 1.351-3.366 2.698-3.365 1.347.002.333 3.706-.678 4.041-1.011.336-4.38 1.68-4.045 3.364.334 1.684 2.354 3.034 2.353 3.708Zm-8.064-17.523c.001-1.078-2.018-2.248-2.691-2.697-1.346-1.349 2.358-.335 2.693.676.336 1.011 1.345 2.022 2.692 2.697 1.346.675 3.366 1.351 1.682 1.686-1.684.335-4.377-1.015-4.376-2.362Z\" fill=\"#DAD7C4\"/><path d=\"M184.101 136.712v-5.078c.473-2.031.945-.508 1.89 0s1.418-1.016 2.836-1.016c1.417 0-3.781 3.555-2.836 6.094.945 2.539 5.671-.094 5.671 1.512 0 5.089 5.671 2.55 4.726.519-.945-2.031.472-4.57 1.89-4.57s0 .508.473 3.047c.472 2.539 2.362 4.062 1.89 5.585-.473 1.524-2.363-.508-3.781.508-1.417 1.016-4.253.508-5.67 0-1.418-.508-7.089-5.586-7.089-6.601Z\" fill=\"#BCBCBC\"/><path opacity=\".3\" d=\"M141.043 200.311c-.906 2.719 1.888 5.664 3.399 6.797 1.133 1.7 13.028 2.832 18.126 2.266 5.098-.566 10.196 1.699 14.161 1.699s7.93.567 11.895-1.133c3.965-1.699 5.664-1.699 8.496-4.531 2.832-2.832-1.133 1.699 7.93-6.797 9.063-8.497 11.895-33.986 11.895-37.951 0-3.965-3.965-5.665-4.531-1.133-.566 4.531-1.133 6.797-3.399 9.629-2.265 2.832-1.133 5.665-1.133 9.63 0 3.965 0 3.965-.566 8.496-.566 4.532-3.399 2.266-6.231 3.965-2.832 1.699-3.398.567-6.797 1.699-3.399 1.133-.566 2.833 0 6.231.566 3.399-4.531 4.532-7.93 5.665s-7.93-2.266-16.993-5.665c-9.063-3.398-6.231 1.133-6.797 5.665-.567 4.531-9.63.566-13.028-2.266-3.399-2.832-7.364-5.665-8.497-2.266Z\" fill=\"url(#c)\"/><path d=\"M151.805 208.241c-1.812-1.812-5.664-1.51-7.363-1.133-5.665 1.133 4.531 2.266 5.664 3.399s5.098 1.699 10.196 1.133c5.098-.567 10.196.566 13.594.566 3.399 0 2.266 1.7 6.231 3.399s2.832-1.699 6.231-3.399c3.398-1.699 8.496-2.832 11.328-6.23 2.833-3.399 3.965-2.266 7.364-5.098 3.399-2.833 6.797-11.329 6.797-13.595 0-2.265 1.7-7.363 3.965-11.895 2.266-4.531.567-10.196 0-13.594-.566-3.399-2.265 5.098-2.265 10.195 0 5.098-4.532 13.028-4.532 17.56 0 4.531-4.531 10.196-7.364 10.196-2.832 0-9.063 6.231-12.461 8.496-3.399 2.266-13.595 2.832-18.692 1.133-5.098-1.699-16.427 1.133-18.693-1.133Z\" fill=\"#81B0C0\"/><ellipse cx=\"83.267\" cy=\"123.843\" rx=\"2.832\" ry=\"1.133\" transform=\"rotate(34.295 83.267 123.843)\" fill=\"#81B0C0\"/><ellipse cx=\"87.463\" cy=\"101.186\" rx=\"2.153\" ry=\"1.274\" transform=\"rotate(34.295 87.463 101.186)\" fill=\"#81B0C0\"/><ellipse cx=\"126.691\" cy=\"116.532\" rx=\"2.153\" ry=\".524\" transform=\"rotate(34.295 126.691 116.532)\" fill=\"#81B0C0\"/><ellipse cx=\"124.135\" cy=\"93.9\" rx=\"1.295\" ry=\"1.268\" transform=\"rotate(34.295 124.135 93.9)\" fill=\"#81B0C0\"/><ellipse cx=\"114.265\" cy=\"162.526\" rx=\"1.295\" ry=\".688\" transform=\"rotate(34.295 114.265 162.526)\" fill=\"#81B0C0\"/><path d=\"M104.225 129.507c-3.399-3.587-11.329-11.215-15.86-13.028M82.7 104.584c2.643.566 8.156 2.039 9.063 3.399m31.72 15.293c-1.322-.944-4.532-3.512-6.797-6.231-2.833-3.398-6.798-7.93-7.364-7.363m-3.965-14.727c1.322-.19 4.531.113 6.797 2.832s5.476 6.042 6.797 7.363M75.337 85.325c1.322 1.133 4.645 3.399 7.364 3.399 2.718 0 7.174 2.643 9.063 3.965\" stroke=\"#81B0C0\" stroke-width=\".5\" stroke-linecap=\"round\"/><path opacity=\".7\" d=\"M174.593 59.196c4.442 19.714-12.956 20.127-22.211 17.87-2.968-6.722-8.625-14.503-14.436-20.316-1.99-1.99-3.14-2.75-4.813-6.207 2.173-10.043-5.382-10.96-6.866-12.628-.432-.376-1.036-1.053 0-.752 1.296.376 2.406-1.505 1.111-3.01-1.296-1.505-3.702-3.01-2.221-3.386 1.48-.376 2.591.188 2.221-.564-.37-.753-.741-.377-1.851-1.129-1.111-.752-2.406-1.129-2.221-1.693.185-.564.925.376 1.295 0 .371-.376-1.11-1.317-1.11-1.881 0-.451 2.098.063 3.146.376 5.128 1.066 10.542 9.979 14.825 11.876 3.929 1.74 6.803 5.114 10.18 6.771 11.651 5.72 19.762 10.963 22.951 14.673Z\" fill=\"url(#d)\"/><path opacity=\".5\" d=\"M145.742 64.94c.434 1.683 1.448 2.741 1.81 3.06 4.705-5.74 13.754-17.064 13.754-17.983 0-1.147-2.736-1.736-3.801-2.486-1.086-.766-9.772-5.357-9.772-4.4 0 .956 5.067 2.678 6.877 4.208 1.809 1.53-.543 2.296-1.448 1.34-.905-.957-3.8-2.488-4.343-1.34-.543 1.148 1.266 1.148 3.076 1.913 1.81.765-.905 1.913-2.533 1.53-1.629-.382-1.086 3.635-2.534 1.722-1.448-1.913-5.791-1.913-4.162-.765 1.628 1.148 2.714 1.53 4.162 3.252 1.448 1.722.543 2.87-1.086 3.061-1.629.191-1.448-.574-1.991-2.87-.542-2.295-2.533-.19 0 3.635 2.534 3.826 3.62 5.74 3.077 6.122-.543.383-1.629-2.104-1.086 0Z\" fill=\"#DAF6FF\"/><ellipse cx=\"128.287\" cy=\"42.834\" rx=\".933\" ry=\".373\" transform=\"rotate(34.295 128.287 42.834)\" fill=\"#81B0C0\"/><ellipse cx=\"134.412\" cy=\"43.189\" rx=\".709\" ry=\".42\" transform=\"rotate(34.295 134.412 43.189)\" fill=\"#81B0C0\"/><ellipse cx=\"147.338\" cy=\"48.245\" rx=\".709\" ry=\".173\" transform=\"rotate(34.295 147.338 48.245)\" fill=\"#81B0C0\"/><ellipse cx=\"139.893\" cy=\"30.585\" rx=\".427\" ry=\".418\" transform=\"rotate(34.295 139.893 30.585)\" fill=\"#81B0C0\"/><ellipse cx=\"143.244\" cy=\"63.401\" rx=\".427\" ry=\".227\" transform=\"rotate(34.295 143.244 63.4)\" fill=\"#81B0C0\"/><path d=\"M140.306 53c-1.059-1.218-3.53-3.807-4.942-4.423m1.059-3.846c.824.192 2.541.692 2.824 1.154m7.059 5c-.412-.32-1.412-1.192-2.118-2.116-.882-1.153-2.118-2.692-2.294-2.5m-1.235-5c.411-.064 1.411.039 2.117.962.706.923 1.706 2.051 2.118 2.5m-14.088-7.73c.411.384 1.962-.303 2.676.153 1.324.846 2.735 1.897 3.324 2.346\" stroke=\"#81B0C0\" stroke-width=\".5\" stroke-linecap=\"round\"/><path d=\"M148.774 61.692c.625-.085 1.678-.695 2.126-.99-.064-1.562-.258-4.709-.525-4.8-.334-.114-.902 1.332-1.351 1.776-.449.443-1.464 2.109-1.467 2.555-.003.446-.117.78-.342 1.002-.225.221-.338.555-.228.667.111.113 1.005-.104 1.787-.21Z\" fill=\"#F5F3E2\"/><path d=\"M149.693 56.757c-.121-.742.166-.925.325-.924l1.074 4.797-1.279 1.07c-.529-.106-1.649-.445-1.899-.941-.313-.62.007-.927.641-.767.635.16 1.109.472 1.112.009.004-.464.178-2.316.026-3.244Zm4.943 12.225c.002-.356-.129-2.975-.194-4.24-2.322-3.028-6.125-1.492-7.358-.72-1.232.773-.227.668.102 1.451s.106.782-.237 2.007c-.343 1.224.989 2.126 1.208 2.797.219.67 1.782.458 2.786.353 1.005-.104 2.676.242 3.348-.2.673-.441.342-1.001.345-1.448Z\" fill=\"#DAD7C4\"/><path d=\"M147.472 65.314c-.446-.093-.553-.71-.551-1.008l1.798-1.996 3.013-.09 4.105 3.263-.585 3.9c-.375.444-1.213 1.285-1.569 1.105-.445-.227.006-.893.235-1.784.229-.89-.766-2.124-1.097-2.684-.331-.56-1.555-.903-1.669-.57-.114.334-1.011.998-1.571 1.328-.56.331.22.448-.231 1.114-.451.666-.557-.115-.664-.674-.108-.558 1.01-.997 1.349-1.552.338-.555.343-1.225-.55-1.23-.892-.007-1.456.993-2.013.878Z\" fill=\"#AEAB96\"/><path d=\"M164.883 71.284c1.245.544 2.085-.432 2.349-.988.146-5.019-11.787-5.435-12.459-4.994-.673.442-.811 4.345-.591 4.793.22.448 3.125-.202 5.02-.077 1.896.124 4.124.586 5.681 1.266Z\" fill=\"#F5F3E2\"/><path d=\"M162.073 67.087c-.334-.114-5.131-.035-5.576-.261-.356-.181-.219-.597-.106-.782l2.571-.763 7.679 2.618.877 2.237-1.232.773c-3.16-.134-9.502-.422-9.59-.512-.111-.113-.331-.56-.328-1.007.003-.446-.554-.561-.548-1.453.006-.893.785-.553 1.117-.216.333.337-.563.777-.341 1.002.221.224 2.454.017 3.123.021.669.005 3.788.695 4.456.923.667.228 2.229.239 2.009-.21-.22-.447-3.777-2.256-4.111-2.37Zm1.619-17.452c1.427.188 1.855.607 1.891.794.293.67.654 2.19-.243 2.898-1.121.885-5.514 6.99-6.078 7.99-.565 1-2.134 2.105-4.808 1.64-2.674-.464-3.296-7.384-3.402-8.166-.106-.781.68-1.557 1.8-2.219 1.12-.661 1.566-.658 2.129-1.435s1.905-1.214 2.351-1.211c.446.003.781-.106 2.455-.206 1.674-.1 2.122-.32 3.905-.085Z\" fill=\"#DAD7C4\"/><path d=\"M163.465 50.302c.807-.619 1.75-.322 2.12-.097-.723 2.412-2.304 7.325-2.841 7.678-.673.441-.89-.452-1.554-1.126-.665-.674.241-2.676.133-3.234-.107-.559-3.134 1.54-3.351.646-.217-.894 3.136-1.763 3.696-2.094.56-.33.788-.999 1.797-1.773Zm-8.054 3.292c-.446-.093-.701-.86-.773-1.233-.552-.784-.34.779-.12 1.227.22.447.67.004 1.224.566.553.561-.456 1.335-.794 1.89-.339.556-.167.73.052 1.401.218.671-.291.83.491.723.781-.106-.105-1.005-.325-1.453-.22-.447 1.239-1.664 1.243-2.334.005-.669-.441-.672-.998-.787Z\" fill=\"#AEAB96\"/><path d=\"M155.694 61.07c.355.359 1.116-.067 1.452-.325.219.67.544 2.123.094 2.566-.561.554-4.451-1.592-4.891-2.487-.44-.896-.623-6.698-.394-7.588.229-.891 1.122-.885 1.006-.328-.115.557-.344 1.447-.124 1.895.22.448-.011 1.562-.24 2.453-.229.89.665.673 1.003.118.338-.555.674-.665.446.003-.228.668-.784.552-.901 1.332-.117.78.55 1.008 1.107 1.124.557.115.999.787 1.442 1.237Z\" fill=\"#AEAB96\"/><path d=\"M173.364 54.498c.533.36.585 1.417.544 1.9l-2.156 5.451c-3.267-.766-9.867-2.5-10.129-3.304-.262-.805.881-3.675 1.485-5.01 1.706-1.505 1.915-2.701 1.806-3.111.521-.145 1.61-.569 1.792-1.103.048-.139.041-.306-.001-.485-.167-.716.104-1.585.826-1.724a.964.964 0 0 1 1.004.42c.335.54.673 1.286.29 1.915-.542.889-.679 1.334-.345 1.448.559-.108 1.554 1.126 2.776 1.915 1.222.79 1.442 1.237 2.108 1.688Z\" fill=\"#FAFAFA\"/><path d=\"M163.108 53.535c1.256-1.062 1.727-2.516 1.806-3.11.443.374 1.24 1.39.875 2.46-.364 1.068-1.939.878-2.681.65Zm10.084 2.575c.509-.501.736.005.786.321l-5.076 3.588-4.109.914c-.625-.794-1.844-2.507-1.72-3.01.154-.63.81-1.572 1.28-1.253.471.32 1.721 1.907 2.348 2.385.627.478 2.218-1.244 3.163-1.079.946.165 2.692-1.24 3.328-1.867Zm-5.168-4.774c-.632.152-.468-.635-.148-1.264.257-.502.635-.415.792-.309-.002.158-.002.158-.319.47-.32.472.307.95-.325 1.103Z\" fill=\"#BCBCBC\"/><path d=\"M167.031 57.165c.004-.474.321-.629 1.583-.619.926.008 1.631-.549.911.034a1.188 1.188 0 0 1-.756.283c-1.104-.009-1.741.775-1.738.302Z\" fill=\"#BCBCBC\"/><path d=\"M173.508 66.1c.616 1.164.318 2.345.092 2.79-.449.442-2.329-1.913-3.108-2.253-.778-.34-7.447-3.955-7-3.952.446.003 2.8-1.654 3.029-2.545.229-.891 2.909-1.319 3.466-1.203.557.115 2.107 1.91 2.099 3.026-.008 1.115.651 2.681 1.422 4.137Z\" fill=\"#AEAB96\"/><path d=\"M170.198 60.723c-1.067-.543-1.408-.754-1.445-.79-.708-.41-1.121.884-.68 1.556.442.672.107.782.434 1.788.328 1.006.662 1.12 1.217 1.458.556.339 1.325 2.017 1.991 2.468.667.45 1.233-.772 1.236-1.218.003-.447-.536-3.239-.753-4.133-.217-.894-.666-.45-2-1.13Z\" fill=\"#DAD7C4\"/><path d=\"M153.584 59.828c.617.986.25 1.452-.011 1.562l-2.454-.017c-.777-.563-1.322-2.463-.982-3.242.34-.778.131-2.788-.649-2.904-.78-.117-1.899.321-4.121-1.033-2.221-1.354.25-3.79 1.022-2.558.772 1.232 3.002 1.47 3.786.918.785-.552 2.904-.426 2.561.798-.343 1.225.097 2.12-.357 3.233-.454 1.112.432 2.01 1.205 3.243Z\" fill=\"#FAFAFA\"/><path d=\"M152.615 54.579c-1.069-.186-1.849-1.5-2.105-2.134.45-.443 2.456-.206 2.339.574l-.234 1.56Zm-6.46-1.383c.004-.536.379-1.039.566-1.223-.552-.785-1.331-1.125-2.12.097-.631.977.1 1.674.545 1.9.335-.035 1.005-.239 1.009-.774Z\" fill=\"#E2AE60\"/><path d=\"M175.484 70.799c.715-.174.602-1.112.457-1.559-.981-3.465.156-6.58-.395-7.588-.55-1.008-.104-1.005-.097-2.12.008-1.116-.089-3.236-.98-3.465-.891-.23-4.257 2.648-4.151 3.43.106.781 1.324 2.24 1.531 4.472.208 2.232 2.741 7.047 3.635 6.83Z\" fill=\"#F5F3E2\"/><path d=\"M173.446 58.849a.28.28 0 0 0 .068-.057c.827-.932-1.389-1.7-2.271-.82-1.101 1.098-.445 1.388-.031 1.308.558-.108.555.338.551 1.008-.005.669.214 1.34.883 1.344.669.005.338-.555.009-1.338s.231-1.114.791-1.445Zm1.156 10.381c.354.36.446.004.447-.22.002-.222-.109-.335-.443-.448-.334-.114-.771-1.456-.877-2.237-.106-.782-.663-.897-.889-.453-.226.445.44.896.771 1.456.331.56.548 1.454.991 1.903Z\" fill=\"#DAD7C4\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M166.856 60.03c.8.452.983 3.094.974 4.358l-10.473-1.857c-.595-.754-.494-1.872-.311-2.562l-.56-.567.565-1 .216.001c.215-.239.428-.55.539-.727l-.08-.162.675-.888.598.261a.48.48 0 0 0-.039-.368c-.22-.448-.326-1.23-.539-2.793-.164-1.208-.734-1.486-1.292-1.758a3.913 3.913 0 0 1-.479-.262c-.533-.36-1.477-1.423-1.883-1.91l2.012-.655c.538.91.982 1.133 1.399 1.34.353.177.686.343 1.04.908.473.754.858 2.008 1.162 2.996.193.628.353 1.148.481 1.366.123.207.519.508.97.85.768.581 1.693 1.283 1.689 1.845-.005.714 2.222 1.354 3.336 1.585Z\" fill=\"#7787B0\"/><circle r=\".158\" transform=\"scale(-1 1) rotate(44.607 -151.162 -164.172)\" fill=\"#54607D\"/><circle r=\".158\" transform=\"scale(-1 1) rotate(44.607 -152.157 -165.03)\" fill=\"#54607D\"/><circle r=\".158\" transform=\"scale(-1 1) rotate(44.607 -153.153 -165.887)\" fill=\"#54607D\"/><circle r=\".158\" transform=\"scale(-1 1) rotate(44.607 -154.149 -166.744)\" fill=\"#54607D\"/><circle r=\".158\" transform=\"scale(-1 1) rotate(44.607 -155.145 -167.603)\" fill=\"#54607D\"/><circle r=\".158\" transform=\"scale(-1 1) rotate(44.607 -156.141 -168.46)\" fill=\"#54607D\"/><circle r=\".158\" transform=\"scale(-1 1) rotate(44.607 -157.137 -169.32)\" fill=\"#54607D\"/><circle r=\".158\" transform=\"scale(-1 1) rotate(44.607 -158.133 -170.177)\" fill=\"#54607D\"/><circle r=\".158\" transform=\"scale(-1 1) rotate(44.607 -159.13 -171.034)\" fill=\"#54607D\"/><path d=\"M157.025 62.194c-.177-.18-.139-1.34-.098-1.897.337-.332.221.225.664.674.444.45 1.445.791 2.118.35.672-.442 2.467.383 3.23.58.891.228 3.45 1.25 4.007 1.365.557.116.454-1.112.788-.998.267.09.176 1.451.097 2.12-.741-.377-2.379-1.199-3.002-1.47-.779-.34-7.582-.499-7.804-.724Zm1.142-3.784-1.116-.008.663.897.453-.89.45-.666-.89-.229.44.895Z\" fill=\"#54607D\"/><path d=\"M174.126 73.466c.271-.444 1.242-2.185 1.357-2.667-1.176-1.942-5.315-5.659-9.764-7.653-5.56-2.492-7.249-.161-9.696-1.293-2.446-1.133-6.794-1.497-8.025-.948-.373.22-1.3.928-2.021 1.994-.902 1.333-1.674.1-1.556-.903l-2.24 1.324c.623 1.38 2.339 3.72 4.225 2.036 1.886-1.682 3.477-2.764 6.363-.737 2.381 1.672 5.225 2.602 7.015 1.945 1.789-.657 7.011 2.39 7.005 3.283-.006.892-.116.556-1.453.324-1.337-.232-6.566-2.164-8.583-.84-.641.421-1.501.562-2.385.547-1.014-.017-1.918 1.34-1.29 2.136l.418.53c.332.412 1.488.97 3.459-.088 2.34.351 12.014 4.768 12.348 4.882.334.114 2.911-1.542 3.363-2.431.453-.89 1.122-.885 1.46-1.44Z\" fill=\"#5C7662\"/><path d=\"M172.254 71.065c.321-.35.717-.722 1.026-.997.069-.061.026-.169-.066-.157-.269.033-.643.12-.962.308-.202.12-.337.38-.425.672-.035.116.346.263.427.174Zm-6.918-.894c.443.524 1.44 1.505 1.888 1.24.354-.208.572-.196.658-.299.266.329.667.662 1.205.773.891.185 1.335.604 1.445.79.074.001.201-.02.112-.11-.111-.112-.664-.674-1.221-.79-.446-.091-1.222-.788-1.554-1.125-.242-.604-1.643-1.811-1.854-1.813.333.263.931.9.66 1.343-.338.556-.891-.229-1.339-.009Zm-5.931-6.126c.633-.247 1.618 1.486 2.031 2.383-.319.47-1.727-.96-2.516-.967-.789-.006-2.518-.808-1.572-.643.945.165 1.265-.463 2.057-.773Zm3.73 6.971c.377.256-.541 1.942-.805 2.045-1.683.039-6.018-.963-7.408-.848-1.736.144-1.883-1.277-2.037-1.751-.154-.475 1.573.643 2.209.017.636-.626 2.842-.293 3.945-.126 1.103.166 3.626.344 4.096.663Zm-17.457-6.764c.504.13.742-.783.799-1.256-.953.781-.794.625-1.268.779-.475.154-.161.314.469.477Zm22.86 10.738c.092-.267.713-.925 1.013-1.22.542-.573-.779-.34-1.226-.12-.448.22-1.227-.12-1.451.101-.225.222.22.448.554.562.333.114.997 1.01 1.11.677Zm5.987-4.032c.09-.282.15-.546.181-.722 0-.075-.021-.246-.109-.336-.111-.112-.228.668-.343 1.225-.116.557-1.351 1.775-1.8 2.219-.45.443-.903 1.555-1.911 2.106-.806.44-1.383 1.069-1.571 1.328.078.026.264-.067.51-.233.161.138.5.279.716.353.001-.142-.223-.421-.443-.548.402-.303.89-.722 1.312-1.117.038.168.403.379.701.56.191.001-.269-.658-.546-.706.374-.36.674-.681.779-.854.051-.084.118-.178.196-.279a.766.766 0 0 0 .807.397c-.2-.135-.527-.338-.719-.508.451-.556 1.181-1.276 1.627-1.717.21-.207.381-.537.51-.875.078.053.204.16.386.435-.048-.196-.169-.59-.283-.728Z\" fill=\"#314F38\"/><path d=\"M160.813 79.064c.629-.62 1.156-.4 1.34-.214 2.365-3.218-1.735-7.15-2.852-6.935-1.117.215-3.794.197-4.688.414-.894.217-1.582 2.89-.809 4.122.772 1.232 2.666 1.58 3.111 1.806.444.226 1.114.23 1.446.567.332.337 1.666 1.016 2.452.24Z\" fill=\"#DAD8C4\"/><path d=\"M161.201 78.584c.378.887.692.269.802-.152l.338-2.208-1.26-2.694-7.527.414-.02 2.526c-.005.632.796.638.958.323.163-.314.806-.625 1.283-.305.478.32 2.879.339 3.202.025.322-.313.801-.151.796.48-.005.632-.645.627-.49 1.26.155.633.482-.154.804-.468.323-.313.173-1.577.653-1.573.48.003-.01 1.263.461 2.372Z\" fill=\"#AEAB96\"/><path d=\"M160.81 72.52c-.692-.46-1.642-.544-3.742-.539l-1.468.003c-.902.098-2.618.524-2.271 1.445.435 1.15 3.26 3.13 4.181 3.156.921.027 4.108-3.031 4.108-3.348-.001-.316-.116-.259-.808-.718Z\" fill=\"#797979\"/><path d=\"M157.517 70.646c3.104-.007 4.408 1.043 4.408 1.043l-.281 2.165h-.198c-.31.02-1.049.16-1.522.568-.36.31-.678.87-.928 1.313l-.122.214c-.223.571-.738.946-1.428.948-.704.001-1.252-.387-1.481-.979l-.101-.176c-.253-.441-.573-1-.935-1.309-.474-.405-1.214-.543-1.524-.56l-.417-2.407s1.425-.813 4.529-.82Z\" fill=\"#fff\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M157.396 72.059c1.85-.004 3.66.608 4.377.835l.082-.416c-.751-.24-2.559-.833-4.456-.829-1.901.005-3.443.646-4.225.886l.079.438c.76-.234 2.296-.91 4.143-.914Z\" fill=\"#E2AE60\"/><path d=\"M155.956 72.275c-.127.534-.463 1.309-1.209 2.06l-.182-.175c.638-.642.933-1.304 1.051-1.766l.34-.119Zm3 .075.387.064c.016.494.151 1.149.583 1.688l-.302.243c-.519-.647-.663-1.425-.668-1.995Z\" fill=\"#BCBCBC\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M157.373 71.321c1.897-.004 3.751.67 4.486.905l.049-.432c-.77-.248-2.602-.873-4.546-.869-1.947.005-3.532.61-4.333.858l.079.41c.778-.241 2.373-.867 4.265-.872Z\" fill=\"#8E5AC2\"/><path d=\"M168.863 76.442c.442.628.402 1.081.326 1.23-.563.776-2.574 1.209-3.465.98-.89-.23-2.235.654-3.349.423-1.114-.23-.882-1.568-.875-2.46.006-.892-1.096-2.908-.867-3.799.229-.89 3.337 1.362 3.891 1.923.554.562 1.45.122 2.231.015.782-.106 1.556.904 2.108 1.688Z\" fill=\"#F5F3E2\"/><path d=\"M153.691 76.561c-.269.266-1.781-.458-2.221-1.354-.439-1.118-1.107-1.346-1.773-1.796-.666-.451-.331-.56-.326-1.23.004-.669-.332-.337-.882-1.567-.549-1.231 2.694-2.436 3.359-1.762.664.674 1.994 2.021 2.212 2.692.219.67.103 1.228-.124 1.896-.228.667.092 2.789-.245 3.121Z\" fill=\"#FAFAFA\"/><path d=\"M167.918 76.832c.178.001.671-.293.895-.44.003-.446-1.66-1.908-2.107-1.688-.448.22-1.34.214-1.674.1-.334-.114-.782.106-.896.44-.114.334 2.119.126 2.117.35-.001.223-.672.441-.9 1.109-.227.668-1.118.438-1.121.884-.003.447 1.226.12 1.34-.213.114-.334.567-1.447 1.124-1.331.557.115.999.787 1.222.789Zm-5.782-2.717c-.357-.002-.739-.674-.886-.898-.443-.45-.117.78.217.894.334.113.666.45.886.898.22.448.439 1.118.554.561.115-.556-.325-1.452-.771-1.455Z\" fill=\"#DAD7C4\"/><path d=\"m151.946 69.055-1.681-.014c-.674.152-.171.312-.005.627.165.314-.34.466-.344.936-.004.47 1.187-1.243 2.025-.923.839.32-.045 1.878.486 1.882 1.686.013.83 1.885.16 1.566-.67-.318-1.515.145-1.519.614-.003.47.168.002 1.008.165s1.339.793 1.845.64c.506-.152-.162-.783.178-1.25.34-.467.179-1.407.015-1.878-.165-.471-1.831-2.362-2.168-2.365Z\" fill=\"#BCBCBC\"/><path opacity=\".3\" d=\"M151.366 76.205c-.31.951.645 1.98 1.162 2.377.387.594 4.452.99 6.194.792 1.742-.198 3.485.594 4.84.594s2.71.198 4.065-.396c1.355-.594 1.936-.594 2.903-1.584.968-.99-.387.594 2.711-2.377 3.097-2.97 4.065-11.882 4.065-13.269 0-1.386-1.355-1.98-1.549-.396-.194 1.585-.387 2.377-1.161 3.367-.775.99-.388 1.98-.388 3.367 0 1.386 0 1.386-.193 2.97-.194 1.585-1.162.793-2.13 1.387-.967.594-1.161.198-2.322.594-1.162.396-.194.99 0 2.178.193 1.189-1.549 1.585-2.711 1.98-1.161.397-2.71-.791-5.807-1.98-3.097-1.188-2.129.396-2.323 1.98-.193 1.585-3.291.199-4.452-.791-1.162-.99-2.517-1.98-2.904-.793Z\" fill=\"url(#e)\"/><path d=\"M156.237 78.299c-.586-.626-1.832-.521-2.381-.391-1.832.39 1.465.782 1.832 1.173.366.39 1.648.586 3.297.39 1.648-.195 3.297.196 4.396.196 1.099 0 .732.587 2.015 1.173 1.282.587.916-.586 2.015-1.173 1.099-.586 2.747-.977 3.663-2.15.916-1.173 1.282-.782 2.381-1.76 1.099-.977 2.198-3.909 2.198-4.69 0-.783.55-2.542 1.282-4.106.733-1.564.184-3.519 0-4.692-.183-1.173-.732 1.76-.732 3.519 0 1.76-1.466 4.496-1.466 6.06 0 1.564-1.465 3.519-2.381 3.519-.916 0-2.931 2.15-4.03 2.932-1.099.782-4.396.977-6.044.39-1.649-.586-5.312.392-6.045-.39Z\" fill=\"#81B0C0\"/><path opacity=\".7\" d=\"M79.346 37.656C85.324 64.226 64.26 63.043 51.806 60c-3.994-9.06-12.48-7.166-20.3-15-1.43-1.433-2.538-2.392-3.603-3.686-2.267-2.754-2.155-6.587-2.378-10.148-.532-8.477-8.048-9.654-9.734-11.553-.581-.507-1.395-1.42 0-1.014 1.743.507 3.238-2.028 1.494-4.056-1.743-2.028-4.981-4.057-2.989-4.564 1.993-.507 3.487.254 2.99-.76-.499-1.015-.997-.508-2.492-1.522-1.494-1.014-3.237-1.52-2.988-2.282.249-.76 1.245.508 1.743 0 .498-.507-1.494-1.774-1.494-2.535 0-.608 2.822.085 4.234.507 6.9 1.437 14.186 13.45 19.95 16.006 9.02 4.001 19.622 3.96 28.405 8.457 7.259 3.716 11.896 6.536 14.702 9.806Z\" fill=\"url(#f)\"/><path opacity=\".5\" d=\"M44.19 48.837c.616 2.29 2.056 3.73 2.57 4.163 6.687-7.805 19.546-23.207 19.546-24.456 0-1.561-4.487-1.023-6-2.044-1.543-1.04-16.5-5-15.773-3.68.628 1.14 10.701 2.599 13.273 4.68 2.571 2.081-5.387 1.564-6.673.264-1.286-1.301-5.4-3.383-6.172-1.822-.772 1.561 1.8 1.561 4.372 2.602 2.571 1.04 2.314 1.56 0 1.04-2.315-.52-1.544 4.944-3.6 2.342-2.058-2.602-8.23-2.602-5.916-1.04 2.315 1.56 3.858 2.08 5.915 4.422 2.057 2.342.772 3.903-1.543 4.163-2.315.26-2.057-.78-2.829-3.902-.771-3.123-3.6-.26 0 4.943 3.6 5.203 5.144 7.805 4.372 8.325-.771.52-2.314-2.862-1.543 0Z\" fill=\"#DAF6FF\"/><ellipse cx=\"12.63\" cy=\"14.126\" rx=\"1.259\" ry=\".504\" transform=\"rotate(34.295 12.63 14.126)\" fill=\"#81B0C0\"/><ellipse cx=\"40.416\" cy=\"55.007\" rx=\".957\" ry=\".566\" transform=\"rotate(34.295 40.416 55.007)\" fill=\"#81B0C0\"/><ellipse cx=\"42.757\" cy=\"22.93\" rx=\".957\" ry=\".233\" transform=\"rotate(34.295 42.757 22.93)\" fill=\"#81B0C0\"/><ellipse cx=\"35.099\" cy=\"15.79\" rx=\".576\" ry=\".564\" transform=\"rotate(34.295 35.099 15.79)\" fill=\"#81B0C0\"/><ellipse cx=\"8.954\" cy=\"2.577\" rx=\".576\" ry=\".306\" transform=\"rotate(34.295 8.954 2.577)\" fill=\"#81B0C0\"/><path d=\"M37.573 41.302c-1.366-1.598-4.554-4.995-6.375-5.802m-3.644-10.347c1.063.252 3.28.908 3.644 1.513m9.108 6.559c-.532-.42-1.822-1.564-2.733-2.775-1.138-1.513-2.732-3.531-2.96-3.28m-1.594-6.558c.531-.084 1.822.05 2.733 1.262.91 1.21 2.2 2.69 2.732 3.279M22.306 12c.531.505 2.079 1.401 3 2 1.707 1.11 3.529 2.489 4.288 3.077\" stroke=\"#81B0C0\" stroke-width=\".5\" stroke-linecap=\"round\"/><path d=\"M48.253 38.908c.574.579 1.173 2.031 1.401 2.685-1.293 1.551-3.966 4.624-4.311 4.507-.432-.145.123-2.074.011-2.881-.112-.808.158-3.313.505-3.773.348-.46.494-.891.438-1.295-.056-.404.09-.835.291-.863.202-.028.948.897 1.665 1.62Z\" fill=\"#F5F3E2\"/><path d=\"M45.317 44.688c-.708.666-.557 1.08-.394 1.203l4.872-4.072-.47-2.104c-.626-.305-2.04-.839-2.686-.527-.808.39-.72.956.054 1.29.776.336 1.508.388 1.147.866-.36.477-1.639 2.512-2.523 3.344Zm14.675-8.644c-.278.368-2.47 2.949-3.532 4.193-4.76 1.278-7.45-3.285-8.106-5.046-.655-1.76.292-.863 1.245-1.407.953-.544.723-.717 1.334-2.242.611-1.525 2.686-1.402 3.437-1.917.751-.516 2.186.93 3.134 1.828.947.897 2.931 1.856 3.273 2.837.342.98-.437 1.295-.785 1.754Z\" fill=\"#DAD7C4\"/><path d=\"M49.767 34.172c-.53-.255-1.125.294-1.357.6l.274 3.46 3.016 2.46 6.772-.117 2.467-4.456c-.035-.75-.233-2.272-.74-2.366-.633-.118-.695.92-1.16 2.012-.466 1.093-2.456 1.575-3.235 1.89-.78.313-2.304-.298-2.158-.73.145-.431-.252-1.816-.566-2.595-.314-.78.577-.286.639-1.323.062-1.037-.662-.32-1.211.168-.55.488.252 1.816.162 2.652-.09.835-.61 1.524-1.53.83-.92-.696-.712-2.165-1.373-2.484Z\" fill=\"#AEAB96\"/><path d=\"M72.303 41.741c1.704.422 1.797 2.082 1.631 2.86-3.796 5.257-16.352-3.697-16.694-4.678-.342-.98 2.584-5.09 3.162-5.376.577-.285 3.044 2.664 5.084 4.026 2.04 1.362 4.687 2.64 6.817 3.168Z\" fill=\"#F5F3E2\"/><path d=\"M66.124 43.833c-.431-.145-5.286-3.997-5.92-4.115-.506-.094-.693.439-.723.717l2.035 2.804 9.928 3.353 2.658-1.603-.656-1.76c-3.343-2.348-10.07-7.037-10.23-7.015-.202.028-.78.314-1.127.774-.348.46-1.01.14-1.705 1.06-.695.919.37 1.182.975 1.098.606-.084.034-1.239.438-1.295.404-.056 2.528 1.912 3.218 2.434.69.521 4.428 2.265 5.291 2.556.864.292 2.473 1.509 1.895 1.794-.577.286-5.645-.656-6.077-.802Zm-12.06 19.159c1.61.928 2.38.836 2.562.673.828-.458 2.393-1.731 2.03-3.162-.454-1.788-.156-11.498.052-12.967.207-1.468-.533-3.834-3.638-5.46-3.106-1.626-9.183 4.977-9.907 5.695-.723.717-.527 2.13.101 3.689.628 1.558 1.087 1.906 1.054 3.145-.034 1.239.997 2.741 1.457 3.089.46.347.717.723 2.354 2.142 1.637 1.418 1.923 1.995 3.935 3.156Z\" fill=\"#DAD7C4\"/><path d=\"M54.356 62.129c.34 1.269 1.54 1.706 2.097 1.766 1.155-3.04 3.397-9.317 3.123-10.102-.342-.981-1.267-.236-2.478-.067-1.21.168-1.855 2.931-2.405 3.419-.55.488-2.001-4.042-2.926-3.297-.925.746 1.827 4.272 2.141 5.052.314.779.022 1.642.448 3.229Zm-5.666-9.705c-.53-.255-1.395.33-1.761.656-1.183.37.264-1.065.841-1.351.577-.286.69.521 1.699.381 1.009-.14.583-1.726.673-2.562.09-.835.403-.878 1.154-1.394.751-.516.354-1.078 1.071-.354.718.723-.897.947-1.474 1.233-.578.286-.04 2.68-.561 3.369-.522.69-.981.342-1.643.022Z\" fill=\"#AEAB96\"/><path d=\"M54.857 44.986c.645-.09 1.09.945 1.233 1.474.751-.516 2.226-1.749 2.113-2.556-.14-1.01-5.813-1.868-6.968-1.296-1.154.572-5.903 6.374-6.369 7.467-.465 1.093.454 1.788.774 1.127.32-.662.785-1.755 1.362-2.04.578-.286 1.217-1.61 1.682-2.703.466-1.093 1.211-.168 1.121.668-.09.835.169 1.21.46.347.292-.863-.37-1.183.124-2.074.493-.891 1.356-.6 2.018-.28.661.32 1.642-.022 2.45-.134Z\" fill=\"#AEAB96\"/><path d=\"M67.8 65.611c.829.05 1.713-.992 2.051-1.519l2.075-7.282c-3.95-1.783-12.076-5.194-12.978-4.575-.901.618-1.986 4.458-2.416 6.3.564 2.884-.161 4.274-.595 4.609.42.559 1.203 1.849.97 2.54-.096.282-.385.532-.738.74-.65.382-.94 1.285-.44 1.849l.402.453c.269.302.697.424 1.08.288.792-.281 1.857-.78 1.966-1.794.144-1.337.353-1.9.785-1.755.488.55 2.478.067 4.35.219 1.873.151 2.45-.134 3.487-.073Z\" fill=\"#D2EFFF\"/><path d=\"M56.532 58.536c.453 2.076-.208 3.937-.595 4.608.75-.036 2.365-.452 2.831-1.833.467-1.381-1.296-2.426-2.236-2.775Zm12.358 5.289c.128.913.76.573 1.06.288l-2.383-7.668-3.493-4.166c-1.264.322-3.86 1.12-4.13 1.733-.336.767-.405 2.247.329 2.29.733.043 3.262-.602 4.28-.599 1.02.003 1.296 3.02 2.394 3.593 1.099.574 1.784 3.388 1.943 4.529Zm-9.049.83c-.528-.654-.979.282-1.144 1.178-.133.717.323.925.568.94.122-.163.122-.163.043-.734.042-.734 1.061-.73.533-1.384Z\" fill=\"#88B6CF\"/><path d=\"M64.542 59.778c.102.078.19.154.266.229.704.703.807 1.793.746.8-.028-.443-.2-.927-.604-1.231-1.139-.86-1.176-2.164-1.544-1.676-.368.488-.166.896 1.136 1.878Z\" fill=\"#88B6CF\"/><path d=\"M77.067 53.834c1.548-.709 2.17-2.153 2.288-2.786-.112-.807-3.891.128-4.956-.135-1.065-.264-10.741-1.8-10.281-1.453.46.348 1.569 3.896 1.104 4.99-.466 1.093 1.945 3.638 2.606 3.958.662.32 3.66-.303 4.53-1.452.869-1.149 2.775-2.237 4.71-3.122Z\" fill=\"#AEAB96\"/><path d=\"M69.448 56.743c-1.52-.283-2.035-.335-2.102-.326-1.048-.138-.454-1.788.527-2.13.981-.342.723-.717 1.85-1.49 1.127-.774 1.559-.629 2.394-.539.835.09 2.943-1.026 3.98-.964 1.037.062.656 1.76.308 2.22-.347.46-3.094 2.898-4.02 3.644-.925.745-1.037-.062-2.937-.415Z\" fill=\"#DAD7C4\"/><path d=\"M51.717 44.599c1.408-.525 1.398-1.292 1.217-1.61l-2.528-1.911c-1.24-.034-3.291 1.485-3.555 2.55-.264 1.065-2.058 2.96-2.949 2.467-.891-.494-1.693-1.822-5.034-2.181-3.341-.36-2.725 4.08-.965 3.425 1.76-.656 4.233.852 4.603 2.035.37 1.183 2.64 2.72 3.251 1.194.611-1.524 1.766-2.096 2.176-3.593.41-1.497 2.024-1.72 3.784-2.377Z\" fill=\"#FAFAFA\"/><path d=\"M46.599 49.218c-1.243-.65-3.074.083-3.835.532.112.807 2.354 2.142 2.848 1.25l.986-1.782Zm-7.709-3.662c-.417.552-.428 1.362-.381 1.699-1.183.37-2.248.106-2.097-1.767.121-1.498 1.419-1.636 2.052-1.519.316.3.843 1.035.426 1.587Z\" fill=\"#88C25A\"/><path d=\"M82.785 50.572c.597.74-.256 1.612-.756 1.956-3.729 2.78-5.013 6.867-6.37 7.467-1.356.6-.897.947-1.766 2.096-.869 1.15-2.635 3.246-3.728 2.78-1.093-.465-2.281-6.06-1.558-6.777.724-.718 3.117-1.256 5.085-3.38 1.968-2.125 8.348-5.067 9.094-4.142Z\" fill=\"#F5F3E2\"/><path d=\"M71.303 61.217c.084.206-.035.462-.262.728-.808.948-2.306.344-2.564-.874-.577-2.722.477-2.501.876-2.052.487.55.835.09 1.357-.6.52-.69 1.272-1.205 1.962-.684.69.522-.09.836-1.043 1.38-.953.543-.64 1.322-.326 2.102Zm9.347-9.732c.645-.09.46.348.285.578-.173.23-.375.258-.807.112-.432-.146-1.934.885-2.657 1.603-.724.717-1.385.398-1.267-.236.118-.633 1.155-.571 1.934-.885.78-.314 1.704-1.06 2.511-1.172Z\" fill=\"#DAD7C4\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M65.48 54.825c1.174.166 3.438-2.397 4.423-3.7l-12.193-6.33c-1.203.306-1.978 1.531-2.333 2.381l-1.02.142-.207 1.468.223.169c.032.414.005.9-.02 1.169l-.209.103-.005 1.441.817.202a.619.619 0 0 1-.33.347c-.577.286-1.3 1.004-2.747 2.439-1.118 1.109-1.921.946-2.707.786-.23-.047-.46-.094-.696-.108-.83-.05-2.633.297-3.43.476l1.546 2.254c1.267-.51 1.897-.389 2.488-.274.5.096.972.188 1.779-.113 1.076-.4 2.457-1.383 3.546-2.157.69-.491 1.264-.899 1.566-1.02.289-.117.932-.113 1.662-.11 1.244.008 2.744.016 3.182-.563.556-.736 3.341.359 4.664.998Z\" fill=\"#FAFAFA\"/><circle cx=\"56.337\" cy=\"49.717\" r=\".204\" transform=\"rotate(-97.902 56.337 49.717)\" fill=\"#BCBCBC\"/><circle cx=\"57.603\" cy=\"49.953\" r=\".204\" transform=\"rotate(-97.902 57.603 49.953)\" fill=\"#BCBCBC\"/><circle cx=\"58.871\" cy=\"50.188\" r=\".204\" transform=\"rotate(-97.902 58.87 50.188)\" fill=\"#BCBCBC\"/><circle cx=\"60.138\" cy=\"50.424\" r=\".204\" transform=\"rotate(-97.902 60.138 50.424)\" fill=\"#BCBCBC\"/><circle cx=\"61.404\" cy=\"50.66\" r=\".204\" transform=\"rotate(-97.902 61.404 50.66)\" fill=\"#BCBCBC\"/><circle cx=\"62.671\" cy=\"50.895\" r=\".204\" transform=\"rotate(-97.902 62.671 50.895)\" fill=\"#BCBCBC\"/><circle cx=\"63.938\" cy=\"51.131\" r=\".204\" transform=\"rotate(-97.902 63.938 51.13)\" fill=\"#BCBCBC\"/><circle cx=\"65.205\" cy=\"51.366\" r=\".204\" transform=\"rotate(-97.902 65.205 51.366)\" fill=\"#BCBCBC\"/><circle cx=\"66.472\" cy=\"51.602\" r=\".204\" transform=\"rotate(-97.902 66.472 51.602)\" fill=\"#BCBCBC\"/><path d=\"M57.105 44.88c-.323.044-1.196 1.263-1.592 1.866.084.606.404-.056 1.21-.168.808-.112 2.103.325 2.445 1.306.342.982 2.83 1.547 3.767 1.946 1.093.465 4.518 1.43 5.18 1.75.661.32-.41 1.496.022 1.642.345.117 1.321-1.349 1.766-2.096-1.056-.197-3.38-.642-4.232-.853-1.065-.263-8.162-5.45-8.566-5.394ZM55.3 49.656l-1.15-.87 1.385-.397-.236 1.267-.061 1.037-1.093-.466 1.154-.571Z\" fill=\"#BCBCBC\"/><path d=\"M83.492 46.77c-.072.67-.445 3.217-.707 3.802-2.732 1.065-9.896 1.62-16.022.167-7.658-1.817-7.556-5.534-10.954-6.297-3.397-.763-8.14-3.807-8.969-5.338-.209-.52-.603-1.973-.504-3.633.123-2.074-1.637-1.418-2.304-.297l-1.255-3.117c1.722-.925 5.32-1.973 5.93 1.234.61 3.207 1.39 5.567 5.943 5.758 3.753.157 7.4 1.441 8.717 3.521 1.317 2.08 9.064 3.062 9.76 2.143.695-.92.319-.662-1.234-1.475-1.553-.813-8.431-2.944-9.457-5.887-.425-1.221-1.61-2.245-2.89-3.02-.868-.524-.77-2.11.212-2.36l1.866-.473c.663-.16 2.287.176 3.476 2.81 2.674 1.48 16.06 4.558 16.492 4.704.432.146 1.771 3.868 1.536 5.135-.236 1.267.454 1.789.364 2.624Z\" fill=\"#C1AC8C\"/><path d=\"M79.665 47.466c.038.701.182 1.583.303 2.198.018.091-.082.152-.15.088-.257-.242-.608-.65-.8-1.126-.141-.352-.002-.847.209-1.295.051-.109.43.014.438.135Zm-7.772-4.228c.865-.189 2.659-.41 2.91.213.198.492.431.651.439.824.53-.128 1.203-.154 1.842.155 1.059.511 1.843.43 2.102.325.077.058.19.18.028.202-.201.028-1.21.168-1.872-.151-.53-.256-1.872-.152-2.478-.068-.722.428-3.107.565-3.324.4.547-.007 1.66-.189 1.732-.857.09-.835-1.093-.466-1.379-1.043Zm-10.895 1.615c.454.75 2.826-.25 3.955-.845.043-.733-2.525-.374-3.338-.987-.814-.614-3.216-1.15-2.118-.577 1.099.574.933 1.47 1.501 2.409Zm9.304-4.211c.586.034.97-2.416.782-2.729-1.694-1.363-6.925-3.744-8.259-4.954-1.666-1.513-2.933-.172-3.464.194-.53.365 2.117.576 2.277 1.718.16 1.141 2.682 2.534 3.944 3.23 1.261.697 3.986 2.498 4.72 2.54ZM47.093 33.85c.619.263.145 1.387-.169 1.916-.362-1.55-.322-1.265-.687-1.795-.365-.531.083-.449.856-.12Zm31.87 6.967c-.117.345.004 1.508.078 2.046.106 1.014-1.065-.264-1.35-.841-.287-.577-1.352-.841-1.408-1.245-.056-.403.578-.285 1.01-.14.431.146 1.816-.252 1.67.18Zm2.967 8.838c-.13.36-.276.678-.383.883-.058.077-.215.235-.376.258-.202.028.291-.864.611-1.525.32-.662.012-2.882-.1-3.689-.112-.807.297-2.304-.303-3.66-.48-1.086-.577-2.183-.566-2.596.1.034.218.276.34.638.274-.014.73.108 1.011.203-.11.146-.56.256-.885.212.175.627.345 1.44.467 2.176.171-.141.71-.07 1.158-.023.197.15-.793.463-1.115.295.102.662.156 1.229.128 1.488-.014.126-.02.275-.019.44a.99.99 0 0 1 1.14.227c-.311-.018-.806-.067-1.137-.044.025.924.207 2.236.319 3.038.052.378-.033.85-.165 1.298.12.007.333-.003.736-.143-.203.164-.638.473-.862.524Z\" fill=\"#856F4D\"/><path d=\"M74.25 30.569c.156 1.13.868 1.319 1.204 1.272-.106 5.158-7.4 5.964-8.375 4.865-.976-1.098-3.734-3.184-4.48-4.11-.745-.924.651-4.204 2.412-4.86 1.76-.655 3.974.477 4.608.595.633.118 1.323.64 1.928.556.606-.085 2.506.269 2.702 1.681Z\" fill=\"#DAD8C4\"/><path d=\"M74.269 31.366c1.084-.613.92.268.702.785l-1.39 2.528-3.408 1.772-7.389-6.341 1.965-2.605c.492-.652 1.317-.029 1.237.421-.081.45.333 1.274 1.074 1.322.741.048 3.217 1.916 3.301 2.49.085.575.703.786 1.194.135s-.169-1.15.488-1.676c.656-.527.372.536.456 1.111.085.575-1.063 1.753-.568 2.126.495.374.983-1.302 2.338-2.068Z\" fill=\"#AEAB96\"/><path d=\"M69.1 37.273c-1.07-.074-2.109-.734-4.258-2.39l-1.502-1.158c-.847-.809-2.27-2.595-1.192-3.264 1.35-.838 5.8-.646 6.766.051.965.697 1.828 6.336 1.578 6.66-.25.324-.322.174-1.392.1Z\" fill=\"#797979\"/><path d=\"M64.253 36.604c3.176 2.447 5.338 2.397 5.338 2.397l1.413-2.44-.202-.156c-.303-.264-.95-.989-1.114-1.778-.125-.6-.01-1.425.081-2.076l.043-.315c.221-.76-.013-1.55-.718-2.093-.72-.555-1.588-.588-2.287-.162l-.242.1c-.606.255-1.374.576-1.987.608-.805.042-1.67-.398-2.003-.624l-2.319 2.14s.822 1.952 3.997 4.4Z\" fill=\"#fff\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M65.24 35.061c1.892 1.459 4.228 2.255 5.142 2.584l-.243.492c-.959-.346-3.278-1.158-5.219-2.654-1.944-1.498-3.02-3.368-3.633-4.229l.425-.386c.594.836 1.638 2.737 3.527 4.193Z\" fill=\"#E26060\"/><path d=\"M63.934 33.708c.29-.647.554-1.705.38-3.061l-.324.036c.149 1.158-.07 2.07-.311 2.635l.255.39Zm3.133 2.282.447.238c.404-.494 1.057-1.06 1.924-1.272l-.118-.487c-1.04.255-1.8.94-2.253 1.52Z\" fill=\"#BCBCBC\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M64.637 35.8c1.94 1.494 4.37 2.263 5.308 2.599l-.29.481c-.983-.352-3.352-1.15-5.34-2.683-1.993-1.536-3.142-3.402-3.768-4.286l.404-.358c.608.859 1.75 2.754 3.686 4.246Z\" fill=\"#5A64C2\"/><path d=\"M80.437 39.584c.947-.296 1.262-.793 1.301-1.004.034-1.239-1.687-3.263-2.78-3.728-1.093-.465-1.777-2.428-3.1-3.067-1.323-.64-2.136.914-2.831 1.833-.695.92-3.409 2.119-3.874 3.212-.466 1.093 4.49 1.228 5.5 1.088 1.008-.14 1.58 1.015 2.297 1.738.718.723 2.304.297 3.487-.072Z\" fill=\"#F5F3E2\"/><path d=\"M64.983 27.535c-.068-.485-2.187-.931-3.342-.36-1.328.802-2.192.51-3.229.449-1.037-.062-.779.314-1.3 1.003-.522.69-.606.084-2.137.914-1.53.83.847 4.614 2.058 4.446 1.21-.168 3.632-.505 4.384-1.02.75-.516 1.07-1.177 1.362-2.04.292-.864 2.288-2.787 2.203-3.392Z\" fill=\"#FAFAFA\"/><path d=\"M79.775 38.441c.184.14.458.828.572 1.155-.348.46-3.201.65-3.487.073-.286-.578-1.205-1.273-1.637-1.419-.432-.145-.718-.723-.572-1.155.146-.431 2.27 1.537 2.444 1.307.174-.23-.341-.981-.05-1.845.292-.863-.802-1.328-.454-1.788.348-.46 1.351.841 1.205 1.273-.146.431-.555 1.928.107 2.248.661.32 1.642-.023 1.872.151Zm-8.061-1.761c-.368-.278-1.288.11-1.615.224-.807.112.494-.89.925-.745.432.146 1.037.062 1.615-.224.577-.286 1.329-.802 1.009-.14-.32.661-1.474 1.233-1.934.885Z\" fill=\"#DAD7C4\"/><path d=\"m57.293 33.856-1.734-1.308c-.572-.685.07-.454.487-.646s.019-.746.384-1.23.24 2.207 1.35 2.538c1.11.332 1.43-1.96 1.977-1.546 1.738 1.31 2.332-1.28 1.395-1.48-.937-.201-1.439-1.34-1.073-1.823.365-.484.173.13 1.162.623.989.493 1.996.24 2.394.794.399.554-.782.676-.8 1.422-.019.745-.923 1.583-1.462 1.936-.538.353-3.733.981-4.08.72Z\" fill=\"#BCBCBC\"/><path opacity=\".3\" d=\"M51.382 60.007c-.393 1.251.82 2.606 1.475 3.127.491.782 5.65 1.303 7.862 1.043 2.211-.261 4.422.781 6.142.781 1.72 0 3.44.26 5.16-.52 1.72-.783 2.457-.783 3.685-2.086 1.229-1.302-.491.782 3.44-3.127 3.931-3.908 5.16-15.635 5.16-17.459 0-1.824-1.72-2.606-1.966-.521s-.491 3.127-1.474 4.43-.492 2.606-.492 4.43c0 1.824 0 1.824-.245 3.909-.246 2.084-1.474 1.042-2.703 1.824-1.228.782-1.474.26-2.948.782-1.474.52-.246 1.303 0 2.866.246 1.564-1.966 2.085-3.44 2.606-1.474.521-3.44-1.042-7.37-2.606-3.932-1.563-2.703.521-2.95 2.606-.245 2.085-4.176.26-5.65-1.042-1.474-1.303-3.194-2.606-3.686-1.043Z\" fill=\"url(#g)\"/><path d=\"M57.092 62.446c-.757-.823-2.366-.686-3.075-.515-2.367.515 1.892 1.03 2.365 1.544.474.514 2.13.771 4.26.514 2.128-.257 4.258.257 5.677.257 1.42 0 .947.772 2.603 1.544 1.656.771 1.183-.772 2.603-1.544 1.419-.771 3.548-1.286 4.731-2.829 1.183-1.543 1.656-1.029 3.076-2.315 1.42-1.286 2.84-5.144 2.84-6.173s.709-3.344 1.655-5.401c.947-2.058.237-4.63 0-6.174-.236-1.543-.946 2.315-.946 4.63s-1.893 5.916-1.893 7.974-1.892 4.63-3.076 4.63c-1.183 0-3.785 2.829-5.205 3.858s-5.678 1.286-7.807.514c-2.13-.771-6.861.515-7.808-.514Z\" fill=\"#81B0C0\"/></g><defs><radialGradient id=\"b\" cx=\"0\" cy=\"0\" r=\"1\" gradientUnits=\"userSpaceOnUse\" gradientTransform=\"rotate(-154.65 98.61 64.019) scale(111.21 122.424)\"><stop stop-color=\"#0089B4\"/><stop offset=\"1\" stop-color=\"#68DBFF\"/></radialGradient><radialGradient id=\"c\" cx=\"0\" cy=\"0\" r=\"1\" gradientUnits=\"userSpaceOnUse\" gradientTransform=\"rotate(-157.881 114.84 78.135) scale(51.8636 51.4726)\"><stop stop-color=\"#0089B4\"/><stop offset=\"1\" stop-color=\"#68DBFF\"/></radialGradient><radialGradient id=\"d\" cx=\"0\" cy=\"0\" r=\"1\" gradientUnits=\"userSpaceOnUse\" gradientTransform=\"matrix(-32.83988 -15.81182 17.58422 -36.521 158.124 63.91)\"><stop stop-color=\"#0089B4\"/><stop offset=\"1\" stop-color=\"#68DBFF\"/></radialGradient><radialGradient id=\"e\" cx=\"0\" cy=\"0\" r=\"1\" gradientUnits=\"userSpaceOnUse\" gradientTransform=\"matrix(-16.41986 -6.82787 6.88719 -16.56252 168.715 73.915)\"><stop stop-color=\"#0089B4\"/><stop offset=\"1\" stop-color=\"#68DBFF\"/></radialGradient><radialGradient id=\"f\" cx=\"0\" cy=\"0\" r=\"1\" gradientUnits=\"userSpaceOnUse\" gradientTransform=\"rotate(-154.254 33.62 15.47) scale(49.0628 54.6158)\"><stop stop-color=\"#0089B4\"/><stop offset=\"1\" stop-color=\"#68DBFF\"/></radialGradient><radialGradient id=\"g\" cx=\"0\" cy=\"0\" r=\"1\" gradientUnits=\"userSpaceOnUse\" gradientTransform=\"matrix(-20.84064 -8.98402 9.29212 -21.55536 73.402 56.994)\"><stop stop-color=\"#0089B4\"/><stop offset=\"1\" stop-color=\"#68DBFF\"/></radialGradient><clipPath id=\"a\"><path fill=\"#fff\" transform=\"translate(.306)\" d=\"M0 0h220v220H0z\"/></clipPath></defs></svg>");
+/* 827 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
-/***/ }),
-/* 943 */
-/***/ (function(module, exports) {
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return toInteger; });
+function toInteger(dirtyNumber) {
+  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {
+    return NaN;
+  }
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path fill=\"#5A5A5A\" d=\"M46.669 51.933h144.588V78.65H46.669z\"/>\n|   <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M54.657 29.932a7.987 7.987 0 0 0-7.987 7.986v23.858h144.523V37.918a7.987 7.987 0 0 0-7.987-7.986H54.656ZM191.192 63.53H46.669v137.654a3.195 3.195 0 0 0 3.195 3.195h138.134a3.194 3.194 0 0 0 3.194-3.195V63.53Z\" fill=\"#F8F8F8\"/>");
+  var number = Number(dirtyNumber);
 
-/***/ }),
-/* 944 */
-/***/ (function(module, exports) {
+  if (isNaN(number)) {
+    return number;
+  }
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <path d=\"M111.793 25.79c.51-1.021.638-3.017.638-3.887h20.175c0 .72.045 2.1.464 3.537.525 1.796 7.425 7.998 10.552 11.314 2.472 2.621 7.318 8.84 9.517 12.563 2.315 3.919 2.09 24.387.965 28.057-1.298 4.238-5.548 10.14-5.939 14.448-.525 5.769 5.939 13.703 5.939 19.472v82.435c0 2.136-.638 6.293-2.862 8.751-1.807 1.997-3.956 3.122-5.016 3.829-1.061.708-1.915-1.06-2.622 0-.707 1.061-.963 2.635-3.012 3.714-2.743 1.444-11.754 2.752-14.709 2.298-2.135-.327-2.427-2.298-3.665-2.298-1.237 0-1.336 2.033-3.811 2.298-2.476.266-10.138-.023-15.415-2.298-3.276-1.413-4.371-3.613-4.75-4.371l-.024-.05c-.354-.707-1.541.707-2.16.707-.619 0-4.048-2.591-5.454-4.882-1.31-2.133-1.282-5.847-1.31-7.698-.07-26.731-.167-78.415 0-82.435.21-5.025 4.816-14.447 5.863-19.472 1.047-5.026-3.14-9.423-4.816-14.448-1.675-5.025-1.465-21.985 0-28.057 1.466-6.072 5.654-8.166 10.051-12.563s10.762-9.687 11.401-10.964Z\" fill=\"url(#b)\"/>");
+  return number < 0 ? Math.ceil(number) : Math.floor(number);
+}
 
 /***/ }),
-/* 945 */
-/***/ (function(module, exports) {
+/* 828 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <path d=\"m94.758 39.704-.029-.014c.102-.203.183-.447.264-.691 1.432-4.302-.873-8.931-5.157-10.356a8.238 8.238 0 0 0-4.052-.297c-.726-3.901-3.657-5.928-7.698-7.272-5.924-1.97-11.449-1.677-13.43 4.272l-.303-.102c-5.924-1.97-12.34 1.284-14.32 7.233-1.98 5.949 1.215 12.365 7.14 14.335 1.245.415 2.501.595 3.727.563a8.92 8.92 0 0 0 5.86 6.421 8.86 8.86 0 0 0 7.953-1.184c.991 1.482 2.45 2.679 4.242 3.275 3.068 1.02 6.3.13 8.44-2.038.729.547 1.539.952 2.45 1.255 4.649 1.546 9.706-.974 11.27-5.672 1.584-4.657-.255-8.553-6.357-9.728Z\" fill=\"#4E626F\"/>");
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return toDate; });
+/* harmony import */ var _lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(829);
+function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
 
-/***/ }),
-/* 946 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"220\" viewBox=\"0 0 220 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <g opacity=\".2\" filter=\"url(#b)\">");
+/**
+ * @name toDate
+ * @category Common Helpers
+ * @summary Convert the given argument to an instance of Date.
+ *
+ * @description
+ * Convert the given argument to an instance of Date.
+ *
+ * If the argument is an instance of Date, the function returns its clone.
+ *
+ * If the argument is a number, it is treated as a timestamp.
+ *
+ * If the argument is none of the above, the function returns Invalid Date.
+ *
+ * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.
+ *
+ * @param {Date|Number} argument - the value to convert
+ * @returns {Date} the parsed date in the local time zone
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Clone the date:
+ * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))
+ * //=> Tue Feb 11 2014 11:30:30
+ *
+ * @example
+ * // Convert the timestamp to date:
+ * const result = toDate(1392098430000)
+ * //=> Tue Feb 11 2014 11:30:30
+ */
 
-/***/ }),
-/* 947 */
-/***/ (function(module, exports) {
+function toDate(argument) {
+  Object(_lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(1, arguments);
+  var argStr = Object.prototype.toString.call(argument); // Clone the date
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"220\" viewBox=\"0 0 220 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <path d=\"M121 21.083v41.25l-7.333 2.75v-46.75l7.333 2.75Z\" fill=\"#CAA772\"/>");
+  if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {
+    // Prevent the date to lose the milliseconds when passed to new Date() in IE10
+    return new Date(argument.getTime());
+  } else if (typeof argument === 'number' || argStr === '[object Number]') {
+    return new Date(argument);
+  } else {
+    if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {
+      // eslint-disable-next-line no-console
+      console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"); // eslint-disable-next-line no-console
 
-/***/ }),
-/* 948 */
-/***/ (function(module, exports) {
+      console.warn(new Error().stack);
+    }
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <rect x=\"134.258\" y=\"135.614\" width=\".942\" height=\"4.708\" rx=\".471\" transform=\"rotate(-18.535 134.258 135.614)\" fill=\"#FFCD29\"/>\n|   <rect x=\"136.937\" y=\"134.716\" width=\".942\" height=\"4.708\" rx=\".471\" transform=\"rotate(-18.535 136.937 134.716)\" fill=\"#FFCD29\"/>");
+    return new Date(NaN);
+  }
+}
 
 /***/ }),
-/* 949 */
-/***/ (function(module, exports) {
+/* 829 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#a)\"><path d=\"M82.57 103.253h55.827V170.5a5 5 0 0 1-5 5H87.57a5 5 0 0 1-5-5v-67.247Zm.188-35.96c0-4.028 3.238-7.293 7.233-7.293h40.985c3.994 0 7.233 3.265 7.233 7.293v31.605H82.758V67.293Z\" fill=\"#AFF1FF\"/><rect x=\"90.207\" y=\"64.966\" width=\"4.966\" height=\"31.45\" rx=\"2.483\" fill=\"#fff\"/><rect x=\"128.277\" y=\"81.518\" width=\"2.483\" height=\"12.414\" rx=\"1.241\" fill=\"#000\"/><rect x=\"128.277\" y=\"114.623\" width=\"2.483\" height=\"24.829\" rx=\"1.241\" fill=\"#000\"/><rect x=\"89.379\" y=\"108.83\" width=\"4.966\" height=\"44.692\" rx=\"2.483\" fill=\"#fff\"/><path d=\"M52.57 55c0 5.523-11.193 10-25 10s-25-4.477-25-10\" stroke=\"#fff\"/><path d=\"M2.57 55c0-5.523 11.193-10 25-10s25 4.477 25 10\" stroke=\"#fff\" stroke-width=\".5\" stroke-dasharray=\"5 5\"/><path d=\"M27.57 7v48h25.5\" stroke=\"#fff\"/><path d=\"m2.57 55 25-48 25 48\" stroke=\"#fff\"/><path d=\"M27.57 52h3v3\" stroke=\"#fff\"/><path d=\"M30.26 37v-4.458h.742v1.713c.12-.114.252-.206.396-.276.144-.07.313-.105.507-.105.168 0 .317.029.447.087.13.056.238.136.324.24.088.102.154.225.198.369.046.142.069.299.069.471V37h-.741v-1.959c0-.188-.044-.333-.132-.435-.086-.104-.216-.156-.39-.156a.772.772 0 0 0-.36.087 1.29 1.29 0 0 0-.318.237V37h-.741Zm7.981 16v-3.078h.435c.076 0 .13.014.16.042.03.028.05.076.06.144l.044.372c.11-.19.24-.34.387-.45a.814.814 0 0 1 .498-.165c.152 0 .278.035.378.105l-.096.555c-.006.036-.019.062-.039.078a.139.139 0 0 1-.08.021.505.505 0 0 1-.124-.021.823.823 0 0 0-.207-.021.624.624 0 0 0-.396.129.968.968 0 0 0-.279.372V53h-.74Z\" fill=\"#fff\"/><path d=\"M202.57 107.5h-53l53-29.5v29.5Z\" stroke=\"#fff\"/><path d=\"M197.57 107.5v-5h4.5\" stroke=\"#fff\"/><path d=\"M166.26 101.114c.2 0 .38.029.54.087.162.056.3.135.414.237a1.05 1.05 0 0 1 .354.795c0 .138-.016.26-.048.366a.812.812 0 0 1-.351.471c-.084.054-.18.099-.288.135.26.082.454.207.582.375.128.168.192.379.192.633a1.247 1.247 0 0 1-.444.993 1.424 1.424 0 0 1-.474.255 1.819 1.819 0 0 1-.567.087 1.94 1.94 0 0 1-.57-.075 1.238 1.238 0 0 1-.729-.582 2.43 2.43 0 0 1-.216-.492l.327-.135a.43.43 0 0 1 .171-.036c.052 0 .098.011.138.033a.223.223 0 0 1 .096.096c.036.07.075.139.117.207a.789.789 0 0 0 .366.312.8.8 0 0 0 .291.048c.126 0 .236-.02.33-.06a.718.718 0 0 0 .234-.162.672.672 0 0 0 .189-.465c0-.104-.011-.198-.033-.282a.42.42 0 0 0-.138-.219.75.75 0 0 0-.303-.141 2.155 2.155 0 0 0-.525-.051v-.528c.182-.002.333-.019.453-.051a.771.771 0 0 0 .285-.132.458.458 0 0 0 .15-.207.794.794 0 0 0 .042-.264c0-.206-.056-.361-.168-.465-.112-.106-.265-.159-.459-.159a.673.673 0 0 0-.438.141.72.72 0 0 0-.243.357.337.337 0 0 1-.099.165.265.265 0 0 1-.165.048.622.622 0 0 1-.102-.009l-.39-.069c.03-.208.088-.39.174-.546a1.299 1.299 0 0 1 .765-.63c.168-.054.348-.081.54-.081Zm4.936 2.217c0 .378-.041.707-.123.987-.08.278-.192.508-.336.69a1.357 1.357 0 0 1-.507.408 1.507 1.507 0 0 1-.63.132c-.226 0-.436-.044-.63-.132a1.37 1.37 0 0 1-.501-.408 2.017 2.017 0 0 1-.333-.69c-.08-.28-.12-.609-.12-.987 0-.38.04-.709.12-.987.08-.278.191-.508.333-.69.142-.182.309-.317.501-.405.194-.09.404-.135.63-.135.226 0 .436.045.63.135.196.088.365.223.507.405.144.182.256.412.336.69.082.278.123.607.123.987Zm-.765 0c0-.314-.023-.574-.069-.78a1.544 1.544 0 0 0-.186-.492.653.653 0 0 0-.576-.33.683.683 0 0 0-.309.075.66.66 0 0 0-.261.255 1.596 1.596 0 0 0-.183.492 3.83 3.83 0 0 0-.066.78c0 .314.022.574.066.78.046.206.107.37.183.492a.683.683 0 0 0 .261.258.706.706 0 0 0 .621 0c.1-.05.188-.136.264-.258.078-.122.14-.286.186-.492.046-.206.069-.466.069-.78Zm1.08-1.2a1.021 1.021 0 0 1 .297-.726c.094-.092.204-.164.33-.216.126-.054.262-.081.408-.081.146 0 .282.027.408.081a1.007 1.007 0 0 1 .636.942.974.974 0 0 1-.081.393 1.052 1.052 0 0 1-.222.327 1.06 1.06 0 0 1-.741.3c-.146 0-.282-.027-.408-.081a1.069 1.069 0 0 1-.33-.219 1.006 1.006 0 0 1-.297-.72Zm.516.006a.545.545 0 0 0 .147.375.584.584 0 0 0 .165.111.545.545 0 0 0 .207.039.545.545 0 0 0 .207-.039.502.502 0 0 0 .276-.279.545.545 0 0 0 .039-.207.553.553 0 0 0-.15-.381.507.507 0 0 0-.372-.156.51.51 0 0 0-.48.327.553.553 0 0 0-.039.21Zm20.368-14.346c.164 0 .323.027.477.081.156.054.293.136.411.246.118.108.213.243.285.405.072.162.108.351.108.567 0 .202-.037.392-.111.57a1.407 1.407 0 0 1-.798.774 1.65 1.65 0 0 1-.624.114 1.66 1.66 0 0 1-.624-.111 1.368 1.368 0 0 1-.471-.309 1.376 1.376 0 0 1-.3-.48 1.823 1.823 0 0 1-.102-.624c0-.204.041-.413.123-.627.084-.216.213-.44.387-.672l1.035-1.389a.431.431 0 0 1 .156-.123.543.543 0 0 1 .24-.051h.66l-1.287 1.575a3.766 3.766 0 0 0-.153.189 1.315 1.315 0 0 1 .588-.135Zm-1.038 1.347c0 .12.016.23.048.33a.716.716 0 0 0 .147.252c.066.07.147.125.243.165a.9.9 0 0 0 .333.057.85.85 0 0 0 .324-.06.773.773 0 0 0 .483-.738.915.915 0 0 0-.057-.333.684.684 0 0 0-.414-.411.933.933 0 0 0-.645.006.74.74 0 0 0-.408.42.882.882 0 0 0-.054.312Zm5.839-.807c0 .378-.041.707-.123.987-.08.278-.192.508-.336.69a1.357 1.357 0 0 1-.507.408 1.507 1.507 0 0 1-.63.132c-.226 0-.436-.044-.63-.132a1.37 1.37 0 0 1-.501-.408 2.017 2.017 0 0 1-.333-.69c-.08-.28-.12-.609-.12-.987 0-.38.04-.709.12-.987.08-.278.191-.508.333-.69.142-.182.309-.317.501-.405.194-.09.404-.135.63-.135.226 0 .436.045.63.135.196.088.365.223.507.405.144.182.256.412.336.69.082.278.123.607.123.987Zm-.765 0c0-.314-.023-.574-.069-.78a1.544 1.544 0 0 0-.186-.492.653.653 0 0 0-.576-.33.683.683 0 0 0-.309.075.66.66 0 0 0-.261.255 1.596 1.596 0 0 0-.183.492 3.83 3.83 0 0 0-.066.78c0 .314.022.574.066.78.046.206.107.37.183.492a.683.683 0 0 0 .261.258.706.706 0 0 0 .621 0c.1-.05.188-.136.264-.258.078-.122.14-.286.186-.492.046-.206.069-.466.069-.78Zm1.08-1.2a1.021 1.021 0 0 1 .297-.726c.094-.092.204-.164.33-.216.126-.054.262-.081.408-.081.146 0 .282.027.408.081a1.007 1.007 0 0 1 .636.942.974.974 0 0 1-.081.393 1.052 1.052 0 0 1-.222.327 1.06 1.06 0 0 1-.741.3c-.146 0-.282-.027-.408-.081a1.069 1.069 0 0 1-.33-.219 1.006 1.006 0 0 1-.297-.72Zm.516.006a.545.545 0 0 0 .147.375.584.584 0 0 0 .165.111.545.545 0 0 0 .207.039.545.545 0 0 0 .207-.039.502.502 0 0 0 .276-.279.545.545 0 0 0 .039-.207.553.553 0 0 0-.15-.381.507.507 0 0 0-.372-.156.51.51 0 0 0-.48.327.553.553 0 0 0-.039.21Zm9.548 8.776-1.011-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.681l-1.014 1.458 1.056 1.62h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Zm-32.402 18.5-1.011-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.681l-1.014 1.458 1.056 1.62h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Zm9.791-2.799c.2 0 .38.029.54.087.162.056.3.135.414.237a1.05 1.05 0 0 1 .354.795c0 .138-.016.26-.048.366a.812.812 0 0 1-.351.471c-.084.054-.18.099-.288.135.26.082.454.207.582.375.128.168.192.379.192.633a1.247 1.247 0 0 1-.444.993 1.424 1.424 0 0 1-.474.255 1.819 1.819 0 0 1-.567.087 1.94 1.94 0 0 1-.57-.075 1.238 1.238 0 0 1-.729-.582 2.43 2.43 0 0 1-.216-.492l.327-.135a.43.43 0 0 1 .171-.036c.052 0 .098.011.138.033a.223.223 0 0 1 .096.096c.036.07.075.139.117.207a.789.789 0 0 0 .366.312.8.8 0 0 0 .291.048c.126 0 .236-.02.33-.06a.718.718 0 0 0 .234-.162.672.672 0 0 0 .189-.465c0-.104-.011-.198-.033-.282a.42.42 0 0 0-.138-.219.75.75 0 0 0-.303-.141 2.155 2.155 0 0 0-.525-.051v-.528c.182-.002.333-.019.453-.051a.771.771 0 0 0 .285-.132.458.458 0 0 0 .15-.207.794.794 0 0 0 .042-.264c0-.206-.056-.361-.168-.465-.112-.106-.265-.159-.459-.159a.673.673 0 0 0-.438.141.72.72 0 0 0-.243.357.337.337 0 0 1-.099.165.265.265 0 0 1-.165.048.622.622 0 0 1-.102-.009l-.39-.069c.03-.208.088-.39.174-.546a1.299 1.299 0 0 1 .765-.63c.168-.054.348-.081.54-.081Z\" fill=\"#fff\"/><path d=\"m178.57 113 2 3 2-6h5\" stroke=\"#fff\" stroke-width=\".5\"/><path d=\"M163.676 31.119c0 .412.05.817.15 1.215.1.398.243.772.429 1.122.014.026.023.05.027.072a.23.23 0 0 1 .009.06c0 .04-.01.072-.03.096a.24.24 0 0 1-.072.063l-.33.201a4.949 4.949 0 0 1-.78-2.094 5.92 5.92 0 0 1 0-1.47 4.824 4.824 0 0 1 .402-1.407c.104-.23.23-.459.378-.687l.33.198a.24.24 0 0 1 .072.063.14.14 0 0 1 .03.093.312.312 0 0 1-.039.135c-.184.35-.326.725-.426 1.125-.1.398-.15.803-.15 1.215Zm1.964.294-1.011-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.681l-1.014 1.458 1.056 1.62h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Zm2.922 1.032h.879v-2.529c0-.098.003-.201.009-.309l-.624.522a.219.219 0 0 1-.081.045.264.264 0 0 1-.189-.012.221.221 0 0 1-.072-.06l-.234-.321 1.323-1.125h.609v3.789h.78V33h-2.4v-.555Zm2.914.099c0-.056.01-.108.03-.156a.394.394 0 0 1 .228-.216.465.465 0 0 1 .177-.033c.076 0 .142.014.198.042a.383.383 0 0 1 .141.111c.038.046.066.1.084.162.018.06.027.124.027.192 0 .096-.015.197-.045.303-.028.106-.07.212-.126.318a1.853 1.853 0 0 1-.489.585l-.129-.117a.14.14 0 0 1-.054-.111c0-.016.005-.034.015-.054a.279.279 0 0 1 .042-.054l.081-.09a1.05 1.05 0 0 0 .183-.267.6.6 0 0 0 .06-.168.434.434 0 0 1-.171-.033.436.436 0 0 1-.135-.096.478.478 0 0 1-.087-.141.506.506 0 0 1-.03-.177Zm2.232-1.131-1.011-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.681l-1.014 1.458 1.056 1.62h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Zm3.922-2.799c.2 0 .383.03.549.09.166.058.308.141.426.249.118.108.21.238.276.39.066.152.099.321.099.507 0 .16-.024.308-.072.444a1.754 1.754 0 0 1-.189.39c-.078.124-.17.244-.276.36-.106.116-.217.234-.333.354l-.978.999a2.178 2.178 0 0 1 .546-.087h1.113c.08 0 .143.023.189.069a.228.228 0 0 1 .072.177V33h-2.976v-.246c0-.05.01-.102.03-.156a.455.455 0 0 1 .102-.15l1.317-1.32c.11-.112.208-.219.294-.321.088-.102.161-.203.219-.303.06-.1.105-.201.135-.303.032-.104.048-.213.048-.327a.758.758 0 0 0-.045-.273.524.524 0 0 0-.33-.321.743.743 0 0 0-.258-.042.698.698 0 0 0-.441.135.71.71 0 0 0-.24.363.31.31 0 0 1-.099.165.278.278 0 0 1-.168.048.606.606 0 0 1-.099-.009l-.39-.069c.03-.208.088-.39.174-.546a1.299 1.299 0 0 1 .765-.63c.168-.054.348-.081.54-.081Zm2.514 2.505c0-.412-.05-.817-.15-1.215-.1-.4-.242-.775-.426-1.125a.312.312 0 0 1-.039-.135.14.14 0 0 1 .03-.093.24.24 0 0 1 .072-.063l.33-.198c.148.228.274.457.378.687a4.824 4.824 0 0 1 .399 1.407 5.556 5.556 0 0 1 0 1.47 4.816 4.816 0 0 1-.399 1.407c-.104.23-.23.459-.378.687l-.33-.201a.24.24 0 0 1-.072-.063.145.145 0 0 1-.03-.096c0-.018.002-.038.006-.06a.347.347 0 0 1 .03-.072c.186-.35.329-.724.429-1.122.1-.398.15-.803.15-1.215Zm2.527.117h2.658v.552h-2.658v-.552Zm0-1.056h2.658v.549h-2.658v-.549Zm4.533.699h1.554v.618h-1.554v-.618ZM189.465 33v-4.458h.741V30.3c.122-.13.26-.233.414-.309a1.18 1.18 0 0 1 .54-.117 1 1 0 0 1 .819.405c.102.132.18.295.234.489.056.194.084.417.084.669 0 .23-.031.443-.093.639a1.547 1.547 0 0 1-.267.51 1.224 1.224 0 0 1-.417.339 1.216 1.216 0 0 1-.804.09.868.868 0 0 1-.393-.201 1.76 1.76 0 0 1-.156-.165l-.033.207c-.012.052-.033.089-.063.111a.185.185 0 0 1-.117.033h-.489Zm1.44-2.55a.756.756 0 0 0-.396.099 1.127 1.127 0 0 0-.303.273v1.38a.723.723 0 0 0 .273.219c.1.04.208.06.324.06a.708.708 0 0 0 .303-.063.582.582 0 0 0 .228-.192.933.933 0 0 0 .147-.324c.034-.132.051-.287.051-.465 0-.18-.015-.332-.045-.456a.865.865 0 0 0-.123-.306.49.49 0 0 0-.198-.171.603.603 0 0 0-.261-.054Zm4.771-.969v1.23h1.167v.549h-1.167v1.236h-.6V31.26h-1.161v-.549h1.161v-1.23h.6ZM201.091 33h-.333a.374.374 0 0 1-.165-.03c-.04-.022-.07-.065-.09-.129l-.066-.219c-.078.07-.155.132-.231.186a1.402 1.402 0 0 1-.231.132c-.08.036-.165.063-.255.081-.09.018-.19.027-.3.027-.13 0-.25-.017-.36-.051a.724.724 0 0 1-.468-.42.926.926 0 0 1-.066-.363c0-.116.03-.23.09-.342a.859.859 0 0 1 .306-.306c.142-.092.331-.168.567-.228.236-.06.529-.094.879-.102v-.18c0-.206-.044-.358-.132-.456-.086-.1-.212-.15-.378-.15a.918.918 0 0 0-.51.138 9.514 9.514 0 0 1-.162.093.332.332 0 0 1-.165.042.214.214 0 0 1-.129-.039.307.307 0 0 1-.087-.096l-.135-.237a1.83 1.83 0 0 1 1.281-.486c.18 0 .34.03.48.09a.995.995 0 0 1 .582.621c.052.146.078.306.078.48V33Zm-1.44-.462a.983.983 0 0 0 .21-.021.941.941 0 0 0 .345-.165c.054-.042.108-.091.162-.147v-.519c-.216.01-.397.029-.543.057a1.4 1.4 0 0 0-.348.102.461.461 0 0 0-.189.147.332.332 0 0 0-.054.183c0 .13.038.223.114.279a.508.508 0 0 0 .303.084Zm-6.086 4.076c.2 0 .383.03.549.09.166.058.308.141.426.249.118.108.21.238.276.39.066.152.099.321.099.507 0 .16-.024.308-.072.444a1.754 1.754 0 0 1-.189.39c-.078.124-.17.244-.276.36-.106.116-.217.234-.333.354l-.978.999a2.178 2.178 0 0 1 .546-.087h1.113c.08 0 .143.023.189.069a.228.228 0 0 1 .072.177V41h-2.976v-.246c0-.05.01-.102.03-.156a.455.455 0 0 1 .102-.15l1.317-1.32c.11-.112.208-.219.294-.321.088-.102.161-.203.219-.303.06-.1.105-.201.135-.303.032-.104.048-.213.048-.327a.758.758 0 0 0-.045-.273.524.524 0 0 0-.33-.321.743.743 0 0 0-.258-.042.698.698 0 0 0-.441.135.71.71 0 0 0-.24.363.31.31 0 0 1-.099.165.278.278 0 0 1-.168.048.606.606 0 0 1-.099-.009l-.39-.069c.03-.208.088-.39.174-.546a1.299 1.299 0 0 1 .765-.63c.168-.054.348-.081.54-.081ZM198.048 41h-.333a.374.374 0 0 1-.165-.03c-.04-.022-.07-.065-.09-.129l-.066-.219c-.078.07-.155.132-.231.186a1.402 1.402 0 0 1-.231.132c-.08.036-.165.063-.255.081-.09.018-.19.027-.3.027-.13 0-.25-.017-.36-.051a.724.724 0 0 1-.468-.42.926.926 0 0 1-.066-.363c0-.116.03-.23.09-.342a.859.859 0 0 1 .306-.306c.142-.092.331-.168.567-.228.236-.06.529-.094.879-.102v-.18c0-.206-.044-.358-.132-.456-.086-.1-.212-.15-.378-.15a.918.918 0 0 0-.51.138 9.514 9.514 0 0 1-.162.093.332.332 0 0 1-.165.042.214.214 0 0 1-.129-.039.307.307 0 0 1-.087-.096l-.135-.237a1.83 1.83 0 0 1 1.281-.486c.18 0 .34.03.48.09a.995.995 0 0 1 .582.621c.052.146.078.306.078.48V41Zm-1.44-.462a.983.983 0 0 0 .21-.021.941.941 0 0 0 .345-.165c.054-.042.108-.091.162-.147v-.519c-.216.01-.397.029-.543.057a1.4 1.4 0 0 0-.348.102.461.461 0 0 0-.189.147.332.332 0 0 0-.054.183c0 .13.038.223.114.279a.508.508 0 0 0 .303.084Z\" fill=\"#fff\"/><path stroke=\"#fff\" stroke-width=\".5\" d=\"M186.57 34.75h15\"/><path d=\"M164.398 50.846a.269.269 0 0 1-.087.117c-.034.028-.087.042-.159.042h-.552l.576-1.233-1.245-2.85h.648c.06 0 .106.014.138.042.032.028.056.06.072.096l.657 1.596c.022.052.041.106.057.162.016.056.03.112.042.168a3.34 3.34 0 0 1 .051-.168l.063-.165.618-1.593a.218.218 0 0 1 .204-.138h.594l-1.677 3.924Zm3.279-2.61h2.658v.552h-2.658v-.552Zm0-1.056h2.658v.549h-2.658v-.549Zm7.041 2.82h-.333a.374.374 0 0 1-.165-.03c-.04-.022-.07-.065-.09-.129l-.066-.219c-.078.07-.155.132-.231.186a1.402 1.402 0 0 1-.231.132c-.08.036-.165.063-.255.081-.09.018-.19.027-.3.027-.13 0-.25-.017-.36-.051a.724.724 0 0 1-.468-.42.926.926 0 0 1-.066-.363c0-.116.03-.23.09-.342a.859.859 0 0 1 .306-.306c.142-.092.331-.168.567-.228.236-.06.529-.094.879-.102v-.18c0-.206-.044-.358-.132-.456-.086-.1-.212-.15-.378-.15a.918.918 0 0 0-.51.138 9.514 9.514 0 0 1-.162.093.332.332 0 0 1-.165.042.214.214 0 0 1-.129-.039.307.307 0 0 1-.087-.096l-.135-.237a1.83 1.83 0 0 1 1.281-.486c.18 0 .34.03.48.09a.995.995 0 0 1 .582.621c.052.146.078.306.078.48V50Zm-1.44-.462a.983.983 0 0 0 .21-.021.941.941 0 0 0 .345-.165c.054-.042.108-.091.162-.147v-.519c-.216.01-.397.029-.543.057a1.4 1.4 0 0 0-.348.102.461.461 0 0 0-.189.147.332.332 0 0 0-.054.183c0 .13.038.223.114.279a.508.508 0 0 0 .303.084Zm2.897-1.125-1.011-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.681l-1.014 1.458 1.056 1.62h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Zm3.166-3.36a.87.87 0 0 1 .309.051c.092.034.169.08.231.138a.553.553 0 0 1 .144.207.665.665 0 0 1 .048.255.625.625 0 0 1-.039.225.853.853 0 0 1-.099.195c-.04.062-.087.122-.141.18l-.168.177-.384.39a1.288 1.288 0 0 1 .315-.051h.387c.056 0 .099.015.129.045.032.03.048.07.048.12v.315h-1.623v-.171c0-.034.006-.07.018-.108a.29.29 0 0 1 .069-.105l.627-.618a2.06 2.06 0 0 0 .126-.138c.04-.05.074-.099.102-.147a.856.856 0 0 0 .066-.147.425.425 0 0 0 .027-.144c0-.072-.02-.13-.06-.174a.198.198 0 0 0-.162-.069.237.237 0 0 0-.159.051.348.348 0 0 0-.099.141.263.263 0 0 1-.072.081.173.173 0 0 1-.105.027h-.033a.67.67 0 0 0-.036-.006l-.297-.045c.034-.23.125-.4.273-.51a.91.91 0 0 1 .558-.165Zm4.142 1.428v1.23h1.167v.549h-1.167v1.236h-.6V48.26h-1.161v-.549h1.161v-1.23h.6ZM186.494 50v-4.458h.741V47.3c.122-.13.26-.233.414-.309a1.18 1.18 0 0 1 .54-.117 1 1 0 0 1 .819.405c.102.132.18.295.234.489.056.194.084.417.084.669 0 .23-.031.443-.093.639a1.547 1.547 0 0 1-.267.51 1.224 1.224 0 0 1-.417.339 1.216 1.216 0 0 1-.804.09.868.868 0 0 1-.393-.201 1.76 1.76 0 0 1-.156-.165l-.033.207c-.012.052-.033.089-.063.111a.185.185 0 0 1-.117.033h-.489Zm1.44-2.55a.756.756 0 0 0-.396.099 1.127 1.127 0 0 0-.303.273v1.38a.723.723 0 0 0 .273.219c.1.04.208.06.324.06a.708.708 0 0 0 .303-.063.582.582 0 0 0 .228-.192.933.933 0 0 0 .147-.324c.034-.132.051-.287.051-.465 0-.18-.015-.332-.045-.456a.865.865 0 0 0-.123-.306.49.49 0 0 0-.198-.171.603.603 0 0 0-.261-.054Zm2.521.963-1.011-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.681l-1.014 1.458 1.056 1.62h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Zm5.309-1.932v1.23h1.167v.549h-1.167v1.236h-.6V48.26h-1.161v-.549h1.161v-1.23h.6Zm5.166 1.092a.342.342 0 0 1-.066.066c-.02.016-.05.024-.09.024a.21.21 0 0 1-.111-.033 1.974 1.974 0 0 0-.129-.078.839.839 0 0 0-.435-.114.769.769 0 0 0-.342.072.647.647 0 0 0-.246.201.928.928 0 0 0-.144.321 1.697 1.697 0 0 0-.048.423c0 .164.017.31.051.438a.974.974 0 0 0 .153.324.672.672 0 0 0 .24.198c.094.044.2.066.318.066a.801.801 0 0 0 .285-.042 1 1 0 0 0 .186-.096l.129-.096a.199.199 0 0 1 .126-.045.15.15 0 0 1 .135.069l.213.27a1.38 1.38 0 0 1-.885.48 2.27 2.27 0 0 1-.327.024 1.286 1.286 0 0 1-.978-.417 1.533 1.533 0 0 1-.297-.498 1.967 1.967 0 0 1-.108-.675c0-.226.032-.435.096-.627.066-.194.162-.361.288-.501.126-.142.282-.253.468-.333.186-.08.4-.12.642-.12.23 0 .431.037.603.111.174.074.33.18.468.318l-.195.27Zm-35.095 11.792h.546v.429c0 .04-.013.075-.039.105-.026.028-.064.042-.114.042h-.393V61h-.648v-1.059h-1.83a.207.207 0 0 1-.132-.045.208.208 0 0 1-.072-.117l-.075-.375 2.055-2.745h.702v2.706Zm-.648-1.419a3.85 3.85 0 0 1 .027-.438l-1.347 1.857h1.32v-1.419Zm2.871 1.29h2.658v.552h-2.658v-.552Zm0-1.056h2.658v.549h-2.658v-.549Zm9.987 2.82v-4.458h.741v1.713c.12-.114.252-.206.396-.276.144-.07.313-.105.507-.105.168 0 .317.029.447.087.13.056.238.136.324.24.088.102.154.225.198.369.046.142.069.299.069.471V61h-.741v-1.959c0-.188-.044-.333-.132-.435-.086-.104-.216-.156-.39-.156a.772.772 0 0 0-.36.087 1.29 1.29 0 0 0-.318.237V61h-.741Zm3.836-4.947a.87.87 0 0 1 .309.051c.092.034.169.08.231.138a.553.553 0 0 1 .144.207.665.665 0 0 1 .048.255.625.625 0 0 1-.039.225.853.853 0 0 1-.099.195c-.04.062-.087.122-.141.18l-.168.177-.384.39a1.288 1.288 0 0 1 .315-.051h.387c.056 0 .099.015.129.045.032.03.048.07.048.12v.315h-1.623v-.171c0-.034.006-.07.018-.108a.29.29 0 0 1 .069-.105l.627-.618a2.06 2.06 0 0 0 .126-.138c.04-.05.074-.099.102-.147a.856.856 0 0 0 .066-.147.425.425 0 0 0 .027-.144c0-.072-.02-.13-.06-.174a.198.198 0 0 0-.162-.069.237.237 0 0 0-.159.051.348.348 0 0 0-.099.141.263.263 0 0 1-.072.081.173.173 0 0 1-.105.027h-.033a.67.67 0 0 0-.036-.006l-.297-.045c.034-.23.125-.4.273-.51a.91.91 0 0 1 .558-.165Zm4.142 1.428v1.23h1.167v.549h-1.167v1.236h-.6V59.26h-1.161v-.549h1.161v-1.23h.6Zm5.432 1.884h.546v.429c0 .04-.013.075-.039.105-.026.028-.064.042-.114.042h-.393V61h-.648v-1.059h-1.83a.207.207 0 0 1-.132-.045.208.208 0 0 1-.072-.117l-.075-.375 2.055-2.745h.702v2.706Zm-.648-1.419a3.85 3.85 0 0 1 .027-.438l-1.347 1.857h1.32v-1.419ZM194.918 61h-.333a.374.374 0 0 1-.165-.03c-.04-.022-.07-.065-.09-.129l-.066-.219c-.078.07-.155.132-.231.186a1.402 1.402 0 0 1-.231.132c-.08.036-.165.063-.255.081-.09.018-.19.027-.3.027-.13 0-.25-.017-.36-.051a.724.724 0 0 1-.468-.42.926.926 0 0 1-.066-.363c0-.116.03-.23.09-.342a.859.859 0 0 1 .306-.306c.142-.092.331-.168.567-.228.236-.06.529-.094.879-.102v-.18c0-.206-.044-.358-.132-.456-.086-.1-.212-.15-.378-.15a.918.918 0 0 0-.51.138 9.514 9.514 0 0 1-.162.093.332.332 0 0 1-.165.042.214.214 0 0 1-.129-.039.307.307 0 0 1-.087-.096l-.135-.237a1.83 1.83 0 0 1 1.281-.486c.18 0 .34.03.48.09a.995.995 0 0 1 .582.621c.052.146.078.306.078.48V61Zm-1.44-.462a.983.983 0 0 0 .21-.021.941.941 0 0 0 .345-.165c.054-.042.108-.091.162-.147v-.519c-.216.01-.397.029-.543.057a1.4 1.4 0 0 0-.348.102.461.461 0 0 0-.189.147.332.332 0 0 0-.054.183c0 .13.038.223.114.279a.508.508 0 0 0 .303.084Zm2.897-1.125-1.011-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.681l-1.014 1.458 1.056 1.62h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Z\" fill=\"#fff\"/><path d=\"m172.57 58 2 3 2-6h22\" stroke=\"#fff\" stroke-width=\".5\"/><path d=\"M31.241 85v-3.078h.435c.076 0 .13.014.16.042.03.028.05.076.06.144l.044.372c.11-.19.24-.34.387-.45a.814.814 0 0 1 .498-.165c.152 0 .278.035.378.105l-.096.555c-.006.036-.019.062-.039.078a.139.139 0 0 1-.08.021.505.505 0 0 1-.124-.021.823.823 0 0 0-.207-.021.624.624 0 0 0-.396.129.968.968 0 0 0-.279.372V85h-.74Z\" fill=\"#fff\"/><circle cx=\"24.57\" cy=\"88\" r=\"15.5\" stroke=\"#fff\"/><circle cx=\"24.57\" cy=\"88\" r=\"2\" fill=\"#fff\"/><path stroke=\"#fff\" stroke-width=\"2\" d=\"M24.57 88h16\"/><path d=\"M64.741 113v-3.078h.435c.076 0 .13.014.16.042.03.028.05.076.06.144l.044.372c.11-.19.24-.34.387-.45a.814.814 0 0 1 .498-.165c.152 0 .278.035.378.105l-.096.555c-.006.036-.019.062-.039.078a.139.139 0 0 1-.08.021.505.505 0 0 1-.124-.021.823.823 0 0 0-.207-.021.624.624 0 0 0-.396.129.968.968 0 0 0-.279.372V113h-.74Z\" fill=\"#fff\"/><path d=\"M76.07 115c0 1.903-1.67 3.777-4.653 5.206-2.94 1.41-6.99 2.294-11.347 2.294-4.358 0-8.407-.884-11.348-2.294-2.981-1.429-4.652-3.303-4.652-5.206 0-1.903 1.67-3.777 4.652-5.206 2.941-1.41 6.99-2.294 11.348-2.294 4.357 0 8.406.884 11.347 2.294 2.982 1.429 4.653 3.303 4.653 5.206Z\" stroke=\"#fff\"/><path d=\"M44.07 115v15c0 4.418 7.163 8 16 8 8.836 0 16-3.582 16-8v-15\" stroke=\"#fff\"/><circle cx=\"60.07\" cy=\"115\" r=\"2\" fill=\"#fff\"/><path stroke=\"#fff\" stroke-width=\"2\" d=\"M60.07 115h16\"/><path d=\"M44.87 9h-.623a.285.285 0 0 1-.174-.051.314.314 0 0 1-.096-.132l-.324-.885h-1.797l-.324.885a.28.28 0 0 1-.096.126.26.26 0 0 1-.171.057h-.627l1.704-4.338h.825L44.87 9Zm-2.807-1.638h1.383l-.528-1.443a10.499 10.499 0 0 1-.081-.225 7.427 7.427 0 0 1-.084-.285 7.427 7.427 0 0 1-.162.516l-.528 1.437Zm4.385-.126h2.658v.552h-2.658v-.552Zm0-1.056h2.658v.549h-2.658V6.18ZM58.242 9V5.922h.435c.076 0 .13.014.16.042.03.028.05.076.06.144l.044.372c.11-.19.24-.34.387-.45a.814.814 0 0 1 .498-.165c.152 0 .278.035.378.105l-.096.555c-.006.036-.019.062-.039.078a.139.139 0 0 1-.08.021.505.505 0 0 1-.124-.021.823.823 0 0 0-.207-.021.624.624 0 0 0-.396.129.968.968 0 0 0-.279.372V9h-.74Zm3.103-4.947a.87.87 0 0 1 .31.051c.091.034.168.08.23.138a.553.553 0 0 1 .144.207.665.665 0 0 1 .048.255.625.625 0 0 1-.039.225.853.853 0 0 1-.099.195c-.04.062-.087.122-.14.18-.055.058-.11.117-.169.177l-.384.39a1.288 1.288 0 0 1 .315-.051h.387c.056 0 .1.015.13.045a.16.16 0 0 1 .047.12V6.3h-1.623v-.171c0-.034.006-.07.018-.108a.29.29 0 0 1 .07-.105l.626-.618a2.06 2.06 0 0 0 .126-.138c.04-.05.074-.099.102-.147a.856.856 0 0 0 .066-.147.425.425 0 0 0 .027-.144c0-.072-.02-.13-.06-.174a.198.198 0 0 0-.162-.069.237.237 0 0 0-.159.051.348.348 0 0 0-.099.141.263.263 0 0 1-.072.081.173.173 0 0 1-.105.027h-.033a.67.67 0 0 0-.036-.006l-.297-.045c.034-.23.125-.4.273-.51a.91.91 0 0 1 .558-.165Z\" fill=\"#fff\"/><path d=\"M55.57 9V4m-3 5V4m-2 0h7\" stroke=\"#fff\"/><path d=\"M44.157 15.977c.044 0 .082.017.114.051l.318.345a1.744 1.744 0 0 1-.651.501c-.256.116-.564.174-.924.174-.322 0-.612-.055-.87-.165a1.918 1.918 0 0 1-.657-.459 2.028 2.028 0 0 1-.42-.702 2.66 2.66 0 0 1-.144-.891c0-.326.054-.624.162-.894.108-.272.26-.506.456-.702.196-.196.43-.348.702-.456a2.41 2.41 0 0 1 .906-.165c.322 0 .603.052.843.156.242.102.449.238.62.408l-.27.375a.236.236 0 0 1-.062.063.167.167 0 0 1-.102.027.236.236 0 0 1-.141-.054 1.482 1.482 0 0 0-.465-.234 1.428 1.428 0 0 0-.43-.054c-.203 0-.391.036-.563.108-.17.07-.317.171-.441.303a1.43 1.43 0 0 0-.288.483c-.068.188-.102.4-.102.636 0 .244.034.461.102.651.07.19.164.35.282.48a1.215 1.215 0 0 0 .933.402c.11 0 .209-.006.297-.018a1.234 1.234 0 0 0 .459-.156c.068-.042.135-.093.2-.153a.247.247 0 0 1 .064-.042.148.148 0 0 1 .072-.018Zm2.173-.741h2.658v.552H46.33v-.552Zm0-1.056h2.658v.549H46.33v-.549ZM62.241 17v-3.078h.435c.076 0 .13.014.16.042.03.028.05.076.06.144l.044.372c.11-.19.24-.34.387-.45a.814.814 0 0 1 .498-.165c.152 0 .278.035.378.105l-.096.555c-.006.036-.019.062-.039.078a.139.139 0 0 1-.08.021.505.505 0 0 1-.124-.021.823.823 0 0 0-.207-.021.624.624 0 0 0-.396.129.968.968 0 0 0-.279.372V17h-.74Zm-9.605-4.386c.2 0 .383.03.549.09.166.058.308.141.426.249.118.108.21.238.276.39.066.152.099.321.099.507 0 .16-.024.308-.072.444a1.754 1.754 0 0 1-.19.39c-.077.124-.17.244-.275.36-.106.116-.217.234-.333.354l-.978.999a2.178 2.178 0 0 1 .546-.087h1.113c.08 0 .143.023.189.069a.228.228 0 0 1 .072.177V17h-2.976v-.246c0-.05.01-.102.03-.156a.455.455 0 0 1 .102-.15l1.317-1.32c.11-.112.208-.219.294-.321.088-.102.16-.203.219-.303.06-.1.105-.201.135-.303.032-.104.048-.213.048-.327a.758.758 0 0 0-.045-.273.524.524 0 0 0-.33-.321.743.743 0 0 0-.258-.042.698.698 0 0 0-.441.135.71.71 0 0 0-.24.363.31.31 0 0 1-.1.165.278.278 0 0 1-.167.048.606.606 0 0 1-.1-.009l-.39-.069c.03-.208.089-.39.175-.546a1.299 1.299 0 0 1 .765-.63c.168-.054.348-.081.54-.081Z\" fill=\"#fff\"/><path d=\"M59.57 17v-5m-3 5v-5m-2 0h7\" stroke=\"#fff\"/><path d=\"M45.632 84.662h.65a.272.272 0 0 1 .27.183l1.02 2.646a5.333 5.333 0 0 1 .186.609c.047-.23.104-.433.172-.609l1.017-2.646a.313.313 0 0 1 .096-.126.26.26 0 0 1 .17-.057h.652L48.113 89h-.73l-1.751-4.338Zm5.816 2.574h2.658v.552h-2.658v-.552Zm0-1.056h2.658v.549h-2.658v-.549ZM71.037 89v-3.078h.435c.076 0 .13.014.16.042.03.028.05.076.06.144l.044.372c.11-.19.24-.34.387-.45a.814.814 0 0 1 .498-.165c.152 0 .278.035.378.105l-.096.555c-.006.036-.019.062-.039.078a.139.139 0 0 1-.08.021.505.505 0 0 1-.124-.021.823.823 0 0 0-.207-.021.624.624 0 0 0-.396.129.968.968 0 0 0-.279.372V89h-.74Zm3.103-4.947a.87.87 0 0 1 .31.051c.091.034.168.08.23.138a.553.553 0 0 1 .144.207.665.665 0 0 1 .048.255.625.625 0 0 1-.039.225.853.853 0 0 1-.099.195c-.04.062-.087.122-.14.18-.055.058-.11.117-.169.177l-.384.39a1.288 1.288 0 0 1 .315-.051h.387c.056 0 .1.015.13.045a.16.16 0 0 1 .047.12v.315h-1.623v-.171c0-.034.006-.07.018-.108a.29.29 0 0 1 .07-.105l.626-.618a2.06 2.06 0 0 0 .126-.138c.04-.05.074-.099.102-.147a.856.856 0 0 0 .066-.147.425.425 0 0 0 .027-.144c0-.072-.02-.13-.06-.174a.198.198 0 0 0-.162-.069.237.237 0 0 0-.159.051.348.348 0 0 0-.099.141.263.263 0 0 1-.072.081.173.173 0 0 1-.105.027h-.033a.67.67 0 0 0-.036-.006l-.297-.045c.034-.23.125-.4.273-.51a.91.91 0 0 1 .558-.165ZM75.484 89v-4.458h.741v1.713c.12-.114.252-.206.396-.276.144-.07.313-.105.507-.105.168 0 .317.029.447.087.13.056.238.136.324.24.088.102.154.225.198.369.046.142.07.299.07.471V89h-.742v-1.959c0-.188-.044-.333-.132-.435-.086-.104-.216-.156-.39-.156a.772.772 0 0 0-.36.087 1.29 1.29 0 0 0-.318.237V89h-.74Zm-17.347-4.555h.879v-2.529c0-.098.003-.201.009-.309l-.624.522a.219.219 0 0 1-.081.045.264.264 0 0 1-.19-.012.221.221 0 0 1-.071-.06l-.234-.321 1.323-1.125h.609v3.789h.78V85h-2.4v-.555Zm1.068 4.169c.2 0 .38.029.54.087.162.056.3.135.414.237a1.05 1.05 0 0 1 .354.795c0 .138-.016.26-.048.366a.812.812 0 0 1-.351.471c-.084.054-.18.099-.288.135.26.082.454.207.582.375.128.168.192.379.192.633a1.247 1.247 0 0 1-.444.993 1.424 1.424 0 0 1-.474.255 1.819 1.819 0 0 1-.567.087 1.94 1.94 0 0 1-.57-.075 1.238 1.238 0 0 1-.73-.582 2.43 2.43 0 0 1-.215-.492l.327-.135a.43.43 0 0 1 .17-.036c.053 0 .099.011.139.033a.223.223 0 0 1 .096.096c.036.07.075.139.117.207a.789.789 0 0 0 .366.312.8.8 0 0 0 .29.048c.127 0 .237-.02.33-.06a.718.718 0 0 0 .235-.162.672.672 0 0 0 .189-.465c0-.104-.011-.198-.033-.282a.42.42 0 0 0-.138-.219.75.75 0 0 0-.303-.141 2.155 2.155 0 0 0-.525-.051v-.528c.182-.002.333-.019.453-.051a.771.771 0 0 0 .285-.132.458.458 0 0 0 .15-.207.794.794 0 0 0 .042-.264c0-.206-.056-.361-.168-.465-.112-.106-.265-.159-.46-.159a.673.673 0 0 0-.437.141.72.72 0 0 0-.243.357.337.337 0 0 1-.1.165.265.265 0 0 1-.164.048.622.622 0 0 1-.102-.009l-.39-.069c.03-.208.088-.39.174-.546a1.299 1.299 0 0 1 .765-.63c.168-.054.348-.081.54-.081Z\" fill=\"#fff\"/><path d=\"M67.57 89v-5m-3 5v-5m-2 0h7m-13 2.5h5\" stroke=\"#fff\"/><path stroke=\"#fff\" stroke-width=\".5\" stroke-dasharray=\"1 1\" d=\"M8.82 138v73m32-73v73\"/><path d=\"m24.82 138-1.444 2.5h2.887L24.82 138Zm-.25 2.25V211h.5v-70.75h-.5Z\" fill=\"#fff\"/><path d=\"m48.57 174.5-2.5-1.443v2.886l2.5-1.443Zm-2.25-.25H3.57v.5h42.75v-.5Z\" fill=\"#fff\"/><path d=\"m9.07 211 1.337-16.581a24.11 24.11 0 0 1 14.433-20.178 24.107 24.107 0 0 0 14.427-20.113L40.57 138.5\" stroke=\"#fff\"/><path d=\"M20.797 157.977a.343.343 0 0 1-.102.258c-.066.066-.177.099-.333.099h-1.194l-.156.906c.196-.04.375-.06.537-.06.228 0 .428.034.6.102a1.18 1.18 0 0 1 .705.705c.06.16.09.333.09.519 0 .23-.041.44-.123.63a1.424 1.424 0 0 1-.85.801c-.195.074-.41.111-.641.111-.136 0-.265-.014-.387-.042a2.047 2.047 0 0 1-.345-.111 2.216 2.216 0 0 1-.297-.162 2.031 2.031 0 0 1-.243-.195l.228-.315a.224.224 0 0 1 .192-.102c.05 0 .1.016.15.048.052.032.112.067.18.105.068.038.147.073.237.105a.98.98 0 0 0 .327.048.917.917 0 0 0 .36-.066.696.696 0 0 0 .258-.183.777.777 0 0 0 .156-.282c.036-.11.054-.229.054-.357 0-.236-.07-.42-.207-.552-.136-.134-.337-.201-.603-.201-.21 0-.421.038-.633.114l-.462-.132.36-2.106h2.142v.315Zm-4.401-10.532h.88v-2.529c0-.098.002-.201.008-.309l-.624.522a.219.219 0 0 1-.08.045.264.264 0 0 1-.19-.012.221.221 0 0 1-.072-.06l-.234-.321 1.323-1.125h.61v3.789h.78V148h-2.4v-.555Zm6.004-1.614c0 .378-.041.707-.123.987-.08.278-.192.508-.336.69a1.357 1.357 0 0 1-.507.408 1.507 1.507 0 0 1-.63.132c-.226 0-.436-.044-.63-.132a1.37 1.37 0 0 1-.501-.408 2.017 2.017 0 0 1-.333-.69c-.08-.28-.12-.609-.12-.987 0-.38.04-.709.12-.987a2 2 0 0 1 .333-.69c.142-.182.309-.317.5-.405.195-.09.405-.135.63-.135.227 0 .437.045.63.135.197.088.366.223.508.405.144.182.256.412.336.69.082.278.123.607.123.987Zm-.765 0c0-.314-.023-.574-.07-.78a1.544 1.544 0 0 0-.185-.492.653.653 0 0 0-.576-.33.683.683 0 0 0-.31.075.66.66 0 0 0-.26.255 1.596 1.596 0 0 0-.183.492 3.83 3.83 0 0 0-.066.78c0 .314.022.574.066.78.046.206.107.37.183.492a.683.683 0 0 0 .26.258.706.706 0 0 0 .622 0c.1-.05.188-.136.264-.258.078-.122.14-.286.186-.492.046-.206.069-.466.069-.78Zm-4.213-12.783c-.266 0-.47-.075-.615-.225-.144-.152-.216-.361-.216-.627v-1.719h-.312a.155.155 0 0 1-.105-.039c-.028-.026-.042-.065-.042-.117v-.294l.495-.081.156-.84a.151.151 0 0 1 .054-.093.183.183 0 0 1 .111-.033h.384v.969h.81v.528h-.81v1.668c0 .096.024.171.072.225a.244.244 0 0 0 .192.081.366.366 0 0 0 .195-.051l.063-.033a.097.097 0 0 1 .054-.018.08.08 0 0 1 .054.018c.014.01.03.026.045.048l.222.36c-.108.09-.232.158-.372.204-.14.046-.285.069-.435.069Zm3.721-.048h-.333a.374.374 0 0 1-.165-.03c-.04-.022-.07-.065-.09-.129l-.066-.219c-.078.07-.155.132-.23.186a1.402 1.402 0 0 1-.232.132c-.08.036-.165.063-.255.081-.09.018-.19.027-.3.027-.13 0-.25-.017-.36-.051a.724.724 0 0 1-.468-.42.926.926 0 0 1-.066-.363c0-.116.03-.23.09-.342a.859.859 0 0 1 .306-.306c.142-.092.331-.168.567-.228.236-.06.53-.094.88-.102v-.18c0-.206-.045-.358-.133-.456-.086-.1-.212-.15-.378-.15a.918.918 0 0 0-.51.138 9.514 9.514 0 0 1-.162.093.332.332 0 0 1-.165.042.214.214 0 0 1-.129-.039.307.307 0 0 1-.087-.096l-.135-.237a1.83 1.83 0 0 1 1.281-.486c.18 0 .34.03.48.09a.995.995 0 0 1 .582.621c.052.146.078.306.078.48V133Zm-1.44-.462a.983.983 0 0 0 .21-.021.941.941 0 0 0 .345-.165c.054-.042.108-.091.162-.147v-.519c-.216.01-.397.029-.543.057a1.4 1.4 0 0 0-.348.102.461.461 0 0 0-.189.147.332.332 0 0 0-.054.183c0 .13.038.223.114.279a.508.508 0 0 0 .303.084Zm2.17.462v-3.078h.452c.096 0 .16.045.19.135l.05.243a1.467 1.467 0 0 1 .414-.309c.078-.038.161-.067.25-.087a1.3 1.3 0 0 1 .287-.03c.168 0 .317.029.447.087.13.056.238.136.324.24.088.102.154.225.198.369.046.142.07.299.07.471V133h-.742v-1.959c0-.188-.044-.333-.132-.435-.086-.104-.216-.156-.39-.156a.772.772 0 0 0-.36.087 1.29 1.29 0 0 0-.318.237V133h-.74Zm5.133-1.881a4.967 4.967 0 0 0 .58 2.337c.013.026.022.05.026.072a.23.23 0 0 1 .01.06c0 .04-.01.072-.03.096a.24.24 0 0 1-.073.063l-.33.201a4.949 4.949 0 0 1-.78-2.094 5.92 5.92 0 0 1 0-1.47 4.824 4.824 0 0 1 .402-1.407c.104-.23.23-.459.378-.687l.33.198a.24.24 0 0 1 .072.063.14.14 0 0 1 .03.093.312.312 0 0 1-.039.135c-.184.35-.326.725-.426 1.125-.1.398-.15.803-.15 1.215Zm2.927-2.502c.196 0 .375.037.537.111.164.074.304.185.42.333.118.146.21.33.273.552.066.22.1.477.1.771 0 .45-.05.842-.148 1.176a2.531 2.531 0 0 1-.402.834 1.64 1.64 0 0 1-.597.492 1.688 1.688 0 0 1-.732.162c-.196 0-.376-.037-.54-.111a1.15 1.15 0 0 1-.42-.33 1.657 1.657 0 0 1-.273-.552 2.805 2.805 0 0 1-.096-.774c0-.45.05-.842.147-1.176.098-.334.232-.611.402-.831.17-.222.37-.387.597-.495.228-.108.472-.162.732-.162Zm-.453 3.837a.717.717 0 0 0 .405-.126c.126-.084.235-.211.327-.381a2.31 2.31 0 0 0 .222-.639c.054-.258.081-.561.081-.909 0-.224-.019-.412-.057-.564a1.073 1.073 0 0 0-.15-.366.53.53 0 0 0-.216-.198.575.575 0 0 0-.255-.06.717.717 0 0 0-.405.126 1.063 1.063 0 0 0-.33.381 2.38 2.38 0 0 0-.219.642 4.439 4.439 0 0 0-.08.906c0 .224.017.412.053.564.038.152.088.274.15.366a.582.582 0 0 0 .22.198c.081.04.166.06.254.06Zm2.686-1.335c0-.412-.05-.817-.15-1.215-.1-.4-.242-.775-.426-1.125a.312.312 0 0 1-.04-.135.14.14 0 0 1 .03-.093.24.24 0 0 1 .073-.063l.33-.198c.148.228.274.457.378.687a4.824 4.824 0 0 1 .399 1.407 5.556 5.556 0 0 1 0 1.47 4.816 4.816 0 0 1-.4 1.407c-.103.23-.23.459-.377.687l-.33-.201a.24.24 0 0 1-.072-.063.145.145 0 0 1-.03-.096c0-.018.002-.038.006-.06a.347.347 0 0 1 .03-.072c.186-.35.329-.724.429-1.122.1-.398.15-.803.15-1.215Zm22.779 41.498c.196 0 .375.037.537.111.164.074.304.185.42.333.118.146.209.33.273.552.066.22.099.477.099.771 0 .45-.05.842-.147 1.176a2.531 2.531 0 0 1-.402.834 1.64 1.64 0 0 1-.597.492 1.688 1.688 0 0 1-.732.162c-.196 0-.376-.037-.54-.111a1.15 1.15 0 0 1-.42-.33 1.657 1.657 0 0 1-.273-.552 2.805 2.805 0 0 1-.096-.774c0-.45.049-.842.147-1.176.098-.334.232-.611.402-.831.17-.222.369-.387.597-.495.228-.108.472-.162.732-.162Zm-.453 3.837a.717.717 0 0 0 .405-.126c.126-.084.235-.211.327-.381a2.31 2.31 0 0 0 .222-.639 4.49 4.49 0 0 0 .08-.909c0-.224-.018-.412-.056-.564a1.073 1.073 0 0 0-.15-.366.53.53 0 0 0-.216-.198.575.575 0 0 0-.255-.06.717.717 0 0 0-.405.126 1.063 1.063 0 0 0-.33.381 2.38 2.38 0 0 0-.22.642 4.439 4.439 0 0 0-.08.906c0 .224.018.412.054.564.038.152.088.274.15.366a.582.582 0 0 0 .219.198c.082.04.167.06.255.06Zm2.5.555a.438.438 0 0 1-.07.12.382.382 0 0 1-.096.084.425.425 0 0 1-.23.072h-.313l1.752-4.482a.413.413 0 0 1 .147-.192.385.385 0 0 1 .231-.069h.315l-1.737 4.467Zm1.763-.009v-3.078h.435c.076 0 .129.014.159.042.03.028.05.076.06.144l.045.372c.11-.19.239-.34.387-.45a.814.814 0 0 1 .498-.165c.152 0 .278.035.378.105l-.096.555a.122.122 0 0 1-.04.078.139.139 0 0 1-.08.021.505.505 0 0 1-.123-.021.823.823 0 0 0-.207-.021.624.624 0 0 0-.396.129.968.968 0 0 0-.28.372V177h-.74Zm4.773 0h-.333a.374.374 0 0 1-.165-.03c-.04-.022-.07-.065-.09-.129l-.066-.219c-.078.07-.155.132-.23.186a1.402 1.402 0 0 1-.232.132c-.08.036-.165.063-.255.081-.09.018-.19.027-.3.027-.13 0-.25-.017-.36-.051a.724.724 0 0 1-.468-.42.926.926 0 0 1-.066-.363c0-.116.03-.23.09-.342a.859.859 0 0 1 .306-.306c.142-.092.331-.168.567-.228.236-.06.53-.094.88-.102v-.18c0-.206-.045-.358-.133-.456-.086-.1-.212-.15-.378-.15a.918.918 0 0 0-.51.138 9.514 9.514 0 0 1-.162.093.332.332 0 0 1-.165.042.214.214 0 0 1-.129-.039.307.307 0 0 1-.087-.096l-.135-.237a1.83 1.83 0 0 1 1.281-.486c.18 0 .34.03.48.09a.995.995 0 0 1 .582.621c.052.146.078.306.078.48V177Zm-1.44-.462a.983.983 0 0 0 .21-.021.941.941 0 0 0 .345-.165c.054-.042.108-.091.162-.147v-.519c-.216.01-.397.029-.543.057a1.4 1.4 0 0 0-.348.102.461.461 0 0 0-.189.147.332.332 0 0 0-.054.183c0 .13.038.223.114.279a.508.508 0 0 0 .303.084Zm4.335.462c-.096 0-.16-.045-.19-.135l-.06-.297a1.84 1.84 0 0 1-.2.195 1.247 1.247 0 0 1-.49.246 1.186 1.186 0 0 1-.3.036 1.018 1.018 0 0 1-.824-.408 1.516 1.516 0 0 1-.234-.495 2.536 2.536 0 0 1-.081-.672c0-.228.03-.44.093-.636.062-.196.15-.366.267-.51a1.23 1.23 0 0 1 .417-.336c.162-.082.344-.123.546-.123a1.052 1.052 0 0 1 .768.303v-1.626h.74V177h-.452Zm-.987-.543a.758.758 0 0 0 .393-.096c.108-.064.21-.155.306-.273v-1.38a.726.726 0 0 0-.594-.279.728.728 0 0 0-.306.063.605.605 0 0 0-.231.192.934.934 0 0 0-.144.324c-.034.13-.051.284-.051.462 0 .18.014.333.042.459a.94.94 0 0 0 .126.306.49.49 0 0 0 .198.171.647.647 0 0 0 .26.051ZM63.378 188h-.333a.374.374 0 0 1-.165-.03c-.04-.022-.07-.065-.09-.129l-.066-.219c-.078.07-.155.132-.231.186a1.402 1.402 0 0 1-.231.132c-.08.036-.165.063-.255.081-.09.018-.19.027-.3.027-.13 0-.25-.017-.36-.051a.724.724 0 0 1-.468-.42.926.926 0 0 1-.066-.363c0-.116.03-.23.09-.342a.859.859 0 0 1 .306-.306c.142-.092.33-.168.567-.228.236-.06.529-.094.879-.102v-.18c0-.206-.044-.358-.132-.456-.086-.1-.212-.15-.378-.15a.918.918 0 0 0-.51.138 9.514 9.514 0 0 1-.162.093.332.332 0 0 1-.165.042.214.214 0 0 1-.13-.039.307.307 0 0 1-.086-.096l-.135-.237a1.83 1.83 0 0 1 1.28-.486c.18 0 .34.03.48.09a.995.995 0 0 1 .583.621c.052.146.078.306.078.48V188Zm-1.44-.462a.983.983 0 0 0 .21-.021.941.941 0 0 0 .345-.165c.054-.042.108-.091.162-.147v-.519c-.216.01-.397.029-.543.057a1.4 1.4 0 0 0-.348.102.461.461 0 0 0-.19.147.332.332 0 0 0-.053.183c0 .13.038.223.114.279a.508.508 0 0 0 .303.084Zm2.897-1.125-1.01-1.491h.713c.054 0 .094.008.12.024a.185.185 0 0 1 .07.072l.644 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.52-.81a.286.286 0 0 1 .074-.084.165.165 0 0 1 .096-.027h.681l-1.014 1.458 1.056 1.62h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.08-.096l-.655-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.08.096.176.176 0 0 1-.12.042h-.664l1.053-1.587Zm3.166-3.36a.87.87 0 0 1 .309.051c.092.034.169.08.23.138a.553.553 0 0 1 .145.207.665.665 0 0 1 .048.255.625.625 0 0 1-.04.225.853.853 0 0 1-.098.195c-.04.062-.087.122-.141.18l-.168.177-.384.39a1.288 1.288 0 0 1 .315-.051h.387c.056 0 .099.015.129.045.032.03.048.07.048.12v.315h-1.623v-.171c0-.034.006-.07.018-.108a.29.29 0 0 1 .069-.105l.627-.618a2.06 2.06 0 0 0 .126-.138c.04-.05.074-.099.102-.147a.856.856 0 0 0 .066-.147.425.425 0 0 0 .027-.144c0-.072-.02-.13-.06-.174a.198.198 0 0 0-.162-.069.237.237 0 0 0-.16.051.348.348 0 0 0-.098.141.263.263 0 0 1-.072.081.173.173 0 0 1-.105.027h-.033a.67.67 0 0 0-.036-.006l-.297-.045c.034-.23.125-.4.273-.51a.91.91 0 0 1 .558-.165Zm4.142 1.428v1.23h1.167v.549h-1.167v1.236h-.6v-1.236h-1.161v-.549h1.16v-1.23h.6ZM75.154 188v-4.458h.742v1.758c.121-.13.26-.233.413-.309a1.18 1.18 0 0 1 .54-.117 1 1 0 0 1 .82.405c.102.132.18.295.234.489.055.194.084.417.084.669 0 .23-.031.443-.093.639a1.547 1.547 0 0 1-.268.51 1.224 1.224 0 0 1-.416.339 1.216 1.216 0 0 1-.804.09.868.868 0 0 1-.394-.201 1.76 1.76 0 0 1-.156-.165l-.032.207c-.013.052-.034.089-.064.111a.185.185 0 0 1-.117.033h-.489Zm1.44-2.55a.756.756 0 0 0-.395.099 1.127 1.127 0 0 0-.303.273v1.38a.723.723 0 0 0 .272.219c.1.04.208.06.325.06a.708.708 0 0 0 .303-.063.582.582 0 0 0 .227-.192.933.933 0 0 0 .148-.324 1.93 1.93 0 0 0 .05-.465c0-.18-.014-.332-.044-.456a.865.865 0 0 0-.124-.306.49.49 0 0 0-.197-.171.603.603 0 0 0-.261-.054Zm2.52.963-1.01-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.68l-1.013 1.458 1.056 1.62h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Zm5.31-1.932v1.23h1.167v.549h-1.167v1.236h-.6v-1.236h-1.16v-.549h1.16v-1.23h.6Zm5.166 1.092a.342.342 0 0 1-.066.066c-.02.016-.05.024-.09.024a.21.21 0 0 1-.111-.033 1.974 1.974 0 0 0-.13-.078.839.839 0 0 0-.434-.114.769.769 0 0 0-.342.072.647.647 0 0 0-.246.201.928.928 0 0 0-.144.321 1.697 1.697 0 0 0-.048.423c0 .164.017.31.05.438a.974.974 0 0 0 .154.324.672.672 0 0 0 .24.198c.094.044.2.066.318.066a.801.801 0 0 0 .285-.042 1 1 0 0 0 .186-.096l.129-.096a.199.199 0 0 1 .126-.045.15.15 0 0 1 .135.069l.213.27a1.38 1.38 0 0 1-.885.48 2.27 2.27 0 0 1-.327.024 1.286 1.286 0 0 1-.978-.417 1.533 1.533 0 0 1-.297-.498 1.967 1.967 0 0 1-.108-.675c0-.226.032-.435.096-.627.066-.194.162-.361.288-.501.126-.142.282-.253.468-.333.186-.08.4-.12.642-.12.23 0 .43.037.603.111.174.074.33.18.468.318l-.195.27Zm1.868.663h2.658v.552h-2.658v-.552Zm0-1.056h2.658v.549h-2.658v-.549Zm7.563.651c0 .378-.041.707-.123.987-.08.278-.192.508-.336.69a1.357 1.357 0 0 1-.507.408 1.507 1.507 0 0 1-.63.132c-.226 0-.436-.044-.63-.132a1.37 1.37 0 0 1-.501-.408 2.017 2.017 0 0 1-.333-.69c-.08-.28-.12-.609-.12-.987 0-.38.04-.709.12-.987a2 2 0 0 1 .333-.69c.142-.182.309-.317.5-.405.195-.09.405-.135.63-.135.227 0 .437.045.63.135.197.088.366.223.508.405.144.182.256.412.336.69.082.278.123.607.123.987Zm-.765 0c0-.314-.023-.574-.07-.78a1.544 1.544 0 0 0-.185-.492.653.653 0 0 0-.576-.33.683.683 0 0 0-.31.075.66.66 0 0 0-.26.255 1.596 1.596 0 0 0-.183.492 3.83 3.83 0 0 0-.066.78c0 .314.022.574.066.78.046.206.107.37.183.492a.683.683 0 0 0 .26.258.706.706 0 0 0 .622 0c.1-.05.188-.136.264-.258.078-.122.14-.286.186-.492.046-.206.069-.466.069-.78ZM63.378 197h-.333a.374.374 0 0 1-.165-.03c-.04-.022-.07-.065-.09-.129l-.066-.219c-.078.07-.155.132-.231.186a1.402 1.402 0 0 1-.231.132c-.08.036-.165.063-.255.081-.09.018-.19.027-.3.027-.13 0-.25-.017-.36-.051a.724.724 0 0 1-.468-.42.926.926 0 0 1-.066-.363c0-.116.03-.23.09-.342a.859.859 0 0 1 .306-.306c.142-.092.33-.168.567-.228.236-.06.529-.094.879-.102v-.18c0-.206-.044-.358-.132-.456-.086-.1-.212-.15-.378-.15a.918.918 0 0 0-.51.138 9.514 9.514 0 0 1-.162.093.332.332 0 0 1-.165.042.214.214 0 0 1-.13-.039.307.307 0 0 1-.086-.096l-.135-.237a1.83 1.83 0 0 1 1.28-.486c.18 0 .34.03.48.09a.995.995 0 0 1 .583.621c.052.146.078.306.078.48V197Zm-1.44-.462a.983.983 0 0 0 .21-.021.941.941 0 0 0 .345-.165c.054-.042.108-.091.162-.147v-.519c-.216.01-.397.029-.543.057a1.4 1.4 0 0 0-.348.102.461.461 0 0 0-.19.147.332.332 0 0 0-.053.183c0 .13.038.223.114.279a.508.508 0 0 0 .303.084Zm2.732-1.419a4.967 4.967 0 0 0 .58 2.337c.013.026.022.05.026.072a.23.23 0 0 1 .01.06c0 .04-.01.072-.03.096a.24.24 0 0 1-.073.063l-.33.201a4.949 4.949 0 0 1-.78-2.094 5.92 5.92 0 0 1 0-1.47 4.824 4.824 0 0 1 .402-1.407c.104-.23.23-.459.378-.687l.33.198a.24.24 0 0 1 .072.063.14.14 0 0 1 .03.093.312.312 0 0 1-.039.135c-.184.35-.326.725-.426 1.125-.1.398-.15.803-.15 1.215Zm3.293-.546a.342.342 0 0 1-.066.066c-.02.016-.05.024-.09.024a.21.21 0 0 1-.111-.033 1.974 1.974 0 0 0-.13-.078.839.839 0 0 0-.434-.114.769.769 0 0 0-.342.072.647.647 0 0 0-.246.201.928.928 0 0 0-.144.321 1.697 1.697 0 0 0-.048.423c0 .164.017.31.05.438a.974.974 0 0 0 .154.324.672.672 0 0 0 .24.198c.094.044.2.066.318.066a.801.801 0 0 0 .285-.042 1 1 0 0 0 .186-.096l.129-.096a.199.199 0 0 1 .126-.045.15.15 0 0 1 .135.069l.213.27a1.38 1.38 0 0 1-.885.48 2.27 2.27 0 0 1-.327.024 1.286 1.286 0 0 1-.978-.417 1.533 1.533 0 0 1-.297-.498 1.967 1.967 0 0 1-.108-.675c0-.226.032-.435.096-.627.066-.194.162-.361.288-.501.126-.142.282-.253.468-.333.186-.08.4-.12.642-.12.23 0 .43.037.603.111.174.074.33.18.468.318l-.195.27Zm1.35-2.52a.87.87 0 0 1 .31.051c.091.034.168.08.23.138a.553.553 0 0 1 .144.207.665.665 0 0 1 .048.255.625.625 0 0 1-.039.225.853.853 0 0 1-.099.195c-.04.062-.087.122-.14.18-.055.058-.11.117-.169.177l-.384.39a1.288 1.288 0 0 1 .315-.051h.387c.056 0 .1.015.13.045a.16.16 0 0 1 .047.12v.315H68.47v-.171c0-.034.006-.07.018-.108a.29.29 0 0 1 .07-.105l.626-.618a2.06 2.06 0 0 0 .126-.138c.04-.05.074-.099.102-.147a.856.856 0 0 0 .066-.147.425.425 0 0 0 .027-.144c0-.072-.02-.13-.06-.174a.198.198 0 0 0-.162-.069.237.237 0 0 0-.159.051.348.348 0 0 0-.099.141.263.263 0 0 1-.072.081.173.173 0 0 1-.105.027h-.033a.67.67 0 0 0-.036-.006l-.297-.045c.034-.23.125-.4.273-.51a.91.91 0 0 1 .558-.165Zm4.142 1.428v1.23h1.167v.549h-1.167v1.236h-.6v-1.236h-1.16v-.549h1.16v-1.23h.6Zm3.567 1.638c0 .412.05.817.15 1.215.1.398.243.772.429 1.122.014.026.023.05.027.072a.23.23 0 0 1 .009.06c0 .04-.01.072-.03.096a.24.24 0 0 1-.072.063l-.33.201a4.949 4.949 0 0 1-.78-2.094 5.92 5.92 0 0 1 0-1.47 4.824 4.824 0 0 1 .402-1.407c.104-.23.23-.459.378-.687l.33.198a.24.24 0 0 1 .072.063.14.14 0 0 1 .03.093.312.312 0 0 1-.039.135c-.184.35-.326.725-.426 1.125-.1.398-.15.803-.15 1.215ZM78.266 197v-4.458h.74v1.758c.123-.13.26-.233.415-.309a1.18 1.18 0 0 1 .54-.117 1 1 0 0 1 .819.405c.102.132.18.295.234.489.056.194.084.417.084.669 0 .23-.031.443-.093.639a1.547 1.547 0 0 1-.267.51 1.224 1.224 0 0 1-.417.339 1.216 1.216 0 0 1-.804.09.868.868 0 0 1-.393-.201 1.76 1.76 0 0 1-.156-.165l-.033.207c-.012.052-.033.089-.063.111a.185.185 0 0 1-.117.033h-.49Zm1.44-2.55a.756.756 0 0 0-.396.099 1.127 1.127 0 0 0-.303.273v1.38a.723.723 0 0 0 .273.219c.1.04.208.06.324.06a.708.708 0 0 0 .303-.063.582.582 0 0 0 .228-.192.933.933 0 0 0 .147-.324c.034-.132.05-.287.05-.465 0-.18-.014-.332-.044-.456a.865.865 0 0 0-.123-.306.49.49 0 0 0-.198-.171.603.603 0 0 0-.261-.054Zm2.23 2.559a.438.438 0 0 1-.068.12.382.382 0 0 1-.096.084.425.425 0 0 1-.231.072h-.312l1.752-4.482a.413.413 0 0 1 .147-.192.385.385 0 0 1 .23-.069h.316l-1.737 4.467Zm4.106-.009h-.333a.374.374 0 0 1-.165-.03c-.04-.022-.07-.065-.09-.129l-.066-.219c-.078.07-.155.132-.231.186a1.402 1.402 0 0 1-.231.132c-.08.036-.165.063-.255.081-.09.018-.19.027-.3.027-.13 0-.25-.017-.36-.051a.724.724 0 0 1-.468-.42.926.926 0 0 1-.066-.363c0-.116.03-.23.09-.342a.859.859 0 0 1 .306-.306c.142-.092.33-.168.567-.228.236-.06.529-.094.879-.102v-.18c0-.206-.044-.358-.132-.456-.086-.1-.212-.15-.378-.15a.918.918 0 0 0-.51.138 9.514 9.514 0 0 1-.162.093.332.332 0 0 1-.165.042.214.214 0 0 1-.13-.039.307.307 0 0 1-.086-.096l-.135-.237a1.83 1.83 0 0 1 1.28-.486c.18 0 .34.03.48.09a.995.995 0 0 1 .583.621c.052.146.078.306.078.48V197Zm-1.44-.462a.983.983 0 0 0 .21-.021.941.941 0 0 0 .345-.165c.054-.042.108-.091.162-.147v-.519c-.216.01-.397.029-.543.057a1.4 1.4 0 0 0-.348.102.461.461 0 0 0-.19.147.332.332 0 0 0-.053.183c0 .13.038.223.114.279a.508.508 0 0 0 .303.084Zm2.612-1.419c0-.412-.05-.817-.15-1.215-.1-.4-.241-.775-.425-1.125a.312.312 0 0 1-.04-.135.14.14 0 0 1 .03-.093.24.24 0 0 1 .072-.063l.33-.198c.148.228.274.457.378.687a4.824 4.824 0 0 1 .4 1.407 5.556 5.556 0 0 1 0 1.47 4.816 4.816 0 0 1-.4 1.407c-.104.23-.23.459-.378.687l-.33-.201a.24.24 0 0 1-.072-.063.145.145 0 0 1-.03-.096.27.27 0 0 1 .007-.06.347.347 0 0 1 .03-.072c.186-.35.329-.724.428-1.122.1-.398.15-.803.15-1.215Zm2.084.294-1.01-1.491H89c.054 0 .094.008.12.024a.185.185 0 0 1 .07.072l.644 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.52-.81a.286.286 0 0 1 .074-.084.165.165 0 0 1 .096-.027h.681l-1.014 1.458L91.34 197h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.08-.096l-.655-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.08.096.176.176 0 0 1-.12.042h-.664l1.053-1.587Zm5.31-1.932v1.23h1.167v.549h-1.167v1.236h-.6v-1.236h-1.161v-.549h1.16v-1.23h.6Zm4.005 1.092a.342.342 0 0 1-.066.066c-.02.016-.05.024-.09.024a.21.21 0 0 1-.11-.033 1.974 1.974 0 0 0-.13-.078.839.839 0 0 0-.435-.114.769.769 0 0 0-.342.072.647.647 0 0 0-.246.201.928.928 0 0 0-.144.321 1.697 1.697 0 0 0-.048.423c0 .164.017.31.051.438a.974.974 0 0 0 .153.324.672.672 0 0 0 .24.198c.094.044.2.066.318.066a.801.801 0 0 0 .285-.042 1 1 0 0 0 .186-.096l.13-.096a.199.199 0 0 1 .125-.045.15.15 0 0 1 .135.069l.213.27a1.38 1.38 0 0 1-.885.48 2.27 2.27 0 0 1-.327.024 1.286 1.286 0 0 1-.978-.417 1.533 1.533 0 0 1-.297-.498 1.967 1.967 0 0 1-.108-.675c0-.226.032-.435.096-.627.066-.194.162-.361.288-.501.126-.142.282-.253.468-.333.186-.08.4-.12.642-.12.23 0 .431.037.603.111.174.074.33.18.468.318l-.195.27Zm.955 2.436a.438.438 0 0 1-.07.12.382.382 0 0 1-.095.084.425.425 0 0 1-.231.072h-.312l1.752-4.482a.413.413 0 0 1 .147-.192.385.385 0 0 1 .231-.069h.315l-1.737 4.467Zm4.105-.009h-.333a.374.374 0 0 1-.165-.03c-.04-.022-.07-.065-.09-.129l-.066-.219c-.078.07-.155.132-.231.186a1.402 1.402 0 0 1-.231.132c-.08.036-.165.063-.255.081-.09.018-.19.027-.3.027-.13 0-.25-.017-.36-.051a.724.724 0 0 1-.468-.42.926.926 0 0 1-.066-.363c0-.116.03-.23.09-.342a.859.859 0 0 1 .306-.306c.142-.092.331-.168.567-.228.236-.06.529-.094.879-.102v-.18c0-.206-.044-.358-.132-.456-.086-.1-.212-.15-.378-.15a.918.918 0 0 0-.51.138 9.514 9.514 0 0 1-.162.093.332.332 0 0 1-.165.042.214.214 0 0 1-.129-.039.307.307 0 0 1-.087-.096l-.135-.237a1.83 1.83 0 0 1 1.281-.486c.18 0 .34.03.48.09a.995.995 0 0 1 .582.621c.052.146.078.306.078.48V197Zm-1.44-.462a.983.983 0 0 0 .21-.021.941.941 0 0 0 .345-.165c.054-.042.108-.091.162-.147v-.519c-.216.01-.397.029-.543.057a1.4 1.4 0 0 0-.348.102.461.461 0 0 0-.189.147.332.332 0 0 0-.054.183c0 .13.038.223.114.279a.508.508 0 0 0 .303.084Zm2.612-1.419c0-.412-.05-.817-.15-1.215-.1-.4-.242-.775-.426-1.125a.312.312 0 0 1-.039-.135.14.14 0 0 1 .03-.093.24.24 0 0 1 .072-.063l.33-.198c.148.228.274.457.378.687a4.824 4.824 0 0 1 .399 1.407 5.556 5.556 0 0 1 0 1.47 4.816 4.816 0 0 1-.399 1.407c-.104.23-.23.459-.378.687l-.33-.201a.24.24 0 0 1-.072-.063.145.145 0 0 1-.03-.096c0-.018.002-.038.006-.06a.347.347 0 0 1 .03-.072c.186-.35.329-.724.429-1.122.1-.398.15-.803.15-1.215Zm1.367.117h2.658v.552h-2.658v-.552Zm0-1.056h2.658v.549h-2.658v-.549Zm6.403.651c0 .378-.041.707-.123.987-.08.278-.192.508-.336.69a1.357 1.357 0 0 1-.507.408 1.507 1.507 0 0 1-.63.132c-.226 0-.436-.044-.63-.132a1.37 1.37 0 0 1-.501-.408 2.017 2.017 0 0 1-.333-.69c-.08-.28-.12-.609-.12-.987 0-.38.04-.709.12-.987.08-.278.191-.508.333-.69.142-.182.309-.317.501-.405.194-.09.404-.135.63-.135.226 0 .436.045.63.135.196.088.365.223.507.405.144.182.256.412.336.69.082.278.123.607.123.987Zm-.765 0c0-.314-.023-.574-.069-.78a1.544 1.544 0 0 0-.186-.492.653.653 0 0 0-.576-.33.683.683 0 0 0-.309.075.66.66 0 0 0-.261.255 1.596 1.596 0 0 0-.183.492 3.83 3.83 0 0 0-.066.78c0 .314.022.574.066.78.046.206.107.37.183.492a.683.683 0 0 0 .261.258.706.706 0 0 0 .621 0c.1-.05.188-.136.264-.258.078-.122.14-.286.186-.492.046-.206.069-.466.069-.78Zm-50.155 9.582-1.011-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.68l-1.013 1.458 1.056 1.62h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Zm3.165-3.36a.87.87 0 0 1 .31.051c.091.034.168.08.23.138a.553.553 0 0 1 .144.207.665.665 0 0 1 .048.255.625.625 0 0 1-.039.225.853.853 0 0 1-.099.195c-.04.062-.087.122-.14.18-.055.058-.11.117-.169.177l-.384.39a1.288 1.288 0 0 1 .315-.051h.387c.056 0 .1.015.13.045a.16.16 0 0 1 .047.12v.315h-1.623v-.171c0-.034.006-.07.018-.108a.29.29 0 0 1 .07-.105l.626-.618a2.06 2.06 0 0 0 .126-.138c.04-.05.074-.099.102-.147a.856.856 0 0 0 .066-.147.425.425 0 0 0 .027-.144c0-.072-.02-.13-.06-.174a.198.198 0 0 0-.162-.069.237.237 0 0 0-.159.051.348.348 0 0 0-.099.141.263.263 0 0 1-.072.081.173.173 0 0 1-.105.027h-.033a.67.67 0 0 0-.036-.006l-.297-.045c.034-.23.125-.4.273-.51a.91.91 0 0 1 .558-.165Zm4.142 1.428v1.23h1.167v.549h-1.167v1.236h-.6v-1.236h-1.16v-.549h1.16v-1.23h.6Zm4.413-.867c.2 0 .383.03.549.09.166.058.308.141.426.249.118.108.21.238.276.39.066.152.099.321.099.507 0 .16-.024.308-.072.444a1.754 1.754 0 0 1-.19.39c-.077.124-.17.244-.275.36-.106.116-.217.234-.333.354l-.978.999a2.178 2.178 0 0 1 .546-.087h1.113c.08 0 .143.023.189.069a.228.228 0 0 1 .072.177V206H71.86v-.246c0-.05.01-.102.03-.156a.455.455 0 0 1 .102-.15l1.317-1.32c.11-.112.208-.219.294-.321.088-.102.16-.203.219-.303.06-.1.105-.201.135-.303.032-.104.048-.213.048-.327a.758.758 0 0 0-.045-.273.524.524 0 0 0-.33-.321.743.743 0 0 0-.258-.042.698.698 0 0 0-.441.135.71.71 0 0 0-.24.363.31.31 0 0 1-.1.165.278.278 0 0 1-.167.048.606.606 0 0 1-.1-.009l-.39-.069c.03-.208.089-.39.175-.546a1.299 1.299 0 0 1 .765-.63c.168-.054.348-.081.54-.081Zm2.634 2.505a4.967 4.967 0 0 0 .58 2.337c.013.026.022.05.026.072a.23.23 0 0 1 .01.06c0 .04-.01.072-.03.096a.24.24 0 0 1-.073.063l-.33.201a4.949 4.949 0 0 1-.78-2.094 5.92 5.92 0 0 1 0-1.47 4.824 4.824 0 0 1 .402-1.407c.104-.23.23-.459.378-.687l.33.198a.24.24 0 0 1 .072.063.14.14 0 0 1 .03.093.312.312 0 0 1-.039.135c-.184.35-.326.725-.426 1.125-.1.398-.15.803-.15 1.215ZM77.293 206v-4.458h.741v1.758c.122-.13.26-.233.414-.309a1.18 1.18 0 0 1 .54-.117 1 1 0 0 1 .82.405c.101.132.18.295.233.489.056.194.084.417.084.669 0 .23-.03.443-.093.639a1.547 1.547 0 0 1-.267.51 1.224 1.224 0 0 1-.417.339 1.216 1.216 0 0 1-.804.09.868.868 0 0 1-.393-.201 1.76 1.76 0 0 1-.156-.165l-.033.207c-.012.052-.033.089-.063.111a.185.185 0 0 1-.117.033h-.489Zm1.44-2.55a.756.756 0 0 0-.396.099 1.127 1.127 0 0 0-.303.273v1.38a.723.723 0 0 0 .273.219c.1.04.208.06.324.06a.708.708 0 0 0 .303-.063.582.582 0 0 0 .228-.192.933.933 0 0 0 .147-.324c.034-.132.051-.287.051-.465 0-.18-.015-.332-.045-.456a.865.865 0 0 0-.123-.306.49.49 0 0 0-.198-.171.603.603 0 0 0-.26-.054Zm2.231 2.559a.438.438 0 0 1-.069.12.382.382 0 0 1-.096.084.425.425 0 0 1-.23.072h-.313l1.752-4.482a.413.413 0 0 1 .147-.192.385.385 0 0 1 .231-.069h.315l-1.737 4.467Zm3.472-4.395c.2 0 .383.03.55.09.165.058.307.141.425.249.118.108.21.238.276.39.066.152.1.321.1.507 0 .16-.025.308-.073.444a1.754 1.754 0 0 1-.189.39c-.078.124-.17.244-.276.36-.106.116-.217.234-.333.354l-.978.999a2.178 2.178 0 0 1 .546-.087h1.113a.26.26 0 0 1 .19.069.228.228 0 0 1 .071.177V206h-2.976v-.246c0-.05.01-.102.03-.156a.455.455 0 0 1 .102-.15l1.317-1.32c.11-.112.208-.219.294-.321.088-.102.161-.203.22-.303a1.3 1.3 0 0 0 .134-.303c.032-.104.048-.213.048-.327a.758.758 0 0 0-.045-.273.524.524 0 0 0-.33-.321.743.743 0 0 0-.258-.042.698.698 0 0 0-.44.135.71.71 0 0 0-.24.363.31.31 0 0 1-.1.165.278.278 0 0 1-.168.048.606.606 0 0 1-.099-.009l-.39-.069c.03-.208.088-.39.174-.546a1.299 1.299 0 0 1 .765-.63c.168-.054.348-.081.54-.081ZM88.92 206h-.333a.374.374 0 0 1-.165-.03c-.04-.022-.07-.065-.09-.129l-.066-.219c-.078.07-.155.132-.231.186a1.402 1.402 0 0 1-.231.132c-.08.036-.165.063-.255.081-.09.018-.19.027-.3.027-.13 0-.25-.017-.36-.051a.724.724 0 0 1-.468-.42.926.926 0 0 1-.066-.363c0-.116.03-.23.09-.342a.859.859 0 0 1 .306-.306c.142-.092.33-.168.567-.228.236-.06.529-.094.879-.102v-.18c0-.206-.044-.358-.132-.456-.086-.1-.212-.15-.378-.15a.918.918 0 0 0-.51.138 9.514 9.514 0 0 1-.162.093.332.332 0 0 1-.165.042.214.214 0 0 1-.13-.039.307.307 0 0 1-.086-.096l-.135-.237a1.83 1.83 0 0 1 1.28-.486c.18 0 .34.03.48.09a.995.995 0 0 1 .583.621c.052.146.078.306.078.48V206Zm-1.44-.462a.983.983 0 0 0 .21-.021.941.941 0 0 0 .345-.165c.054-.042.108-.091.162-.147v-.519c-.216.01-.397.029-.543.057a1.4 1.4 0 0 0-.348.102.461.461 0 0 0-.19.147.332.332 0 0 0-.053.183c0 .13.038.223.114.279a.508.508 0 0 0 .303.084Zm2.612-1.419a5.075 5.075 0 0 0-.575-2.34.312.312 0 0 1-.04-.135.14.14 0 0 1 .03-.093.24.24 0 0 1 .073-.063l.33-.198a5.3 5.3 0 0 1 .377.687 4.824 4.824 0 0 1 .4 1.407 5.556 5.556 0 0 1 0 1.47 4.816 4.816 0 0 1-.4 1.407c-.103.23-.23.459-.377.687l-.33-.201a.24.24 0 0 1-.072-.063.145.145 0 0 1-.03-.096.33.33 0 0 1 .005-.06.347.347 0 0 1 .03-.072 4.967 4.967 0 0 0 .579-2.337Zm2.084.294-1.01-1.491h.713c.054 0 .094.008.12.024a.185.185 0 0 1 .07.072l.644 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.52-.81a.286.286 0 0 1 .074-.084.165.165 0 0 1 .096-.027h.681l-1.014 1.458 1.056 1.62h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.08-.096l-.655-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.08.096.176.176 0 0 1-.12.042h-.664l1.053-1.587Zm5.31-1.932v1.23h1.167v.549h-1.167v1.236h-.6v-1.236h-1.161v-.549h1.16v-1.23h.6Zm3.566 1.638c0 .412.05.817.15 1.215.1.398.243.772.429 1.122.014.026.023.05.027.072a.23.23 0 0 1 .009.06c0 .04-.01.072-.03.096a.24.24 0 0 1-.072.063l-.33.201a4.949 4.949 0 0 1-.78-2.094 5.92 5.92 0 0 1 0-1.47 4.824 4.824 0 0 1 .402-1.407c.104-.23.23-.459.378-.687l.33.198a.24.24 0 0 1 .072.063.14.14 0 0 1 .03.093.312.312 0 0 1-.039.135c-.184.35-.326.725-.426 1.125-.1.398-.15.803-.15 1.215Zm1.244 1.881v-4.458h.741v1.758c.122-.13.26-.233.414-.309a1.18 1.18 0 0 1 .54-.117 1 1 0 0 1 .819.405c.102.132.18.295.234.489.056.194.084.417.084.669 0 .23-.031.443-.093.639a1.547 1.547 0 0 1-.267.51 1.224 1.224 0 0 1-.417.339 1.216 1.216 0 0 1-.804.09.868.868 0 0 1-.393-.201 1.76 1.76 0 0 1-.156-.165l-.033.207c-.012.052-.033.089-.063.111a.185.185 0 0 1-.117.033h-.489Zm1.44-2.55a.756.756 0 0 0-.396.099 1.127 1.127 0 0 0-.303.273v1.38a.723.723 0 0 0 .273.219c.1.04.208.06.324.06a.708.708 0 0 0 .303-.063.582.582 0 0 0 .228-.192.933.933 0 0 0 .147-.324c.034-.132.051-.287.051-.465 0-.18-.015-.332-.045-.456a.865.865 0 0 0-.123-.306.49.49 0 0 0-.198-.171.603.603 0 0 0-.261-.054Zm2.231 2.559a.438.438 0 0 1-.069.12.382.382 0 0 1-.096.084.425.425 0 0 1-.231.072h-.312l1.752-4.482a.413.413 0 0 1 .147-.192.385.385 0 0 1 .231-.069h.315l-1.737 4.467Zm3.472-4.395c.2 0 .383.03.549.09.166.058.308.141.426.249.118.108.21.238.276.39.066.152.099.321.099.507 0 .16-.024.308-.072.444a1.754 1.754 0 0 1-.189.39c-.078.124-.17.244-.276.36-.106.116-.217.234-.333.354l-.978.999a2.178 2.178 0 0 1 .546-.087h1.113c.08 0 .143.023.189.069a.228.228 0 0 1 .072.177V206h-2.976v-.246c0-.05.01-.102.03-.156a.455.455 0 0 1 .102-.15l1.317-1.32c.11-.112.208-.219.294-.321.088-.102.161-.203.219-.303.06-.1.105-.201.135-.303.032-.104.048-.213.048-.327a.758.758 0 0 0-.045-.273.524.524 0 0 0-.33-.321.743.743 0 0 0-.258-.042.698.698 0 0 0-.441.135.71.71 0 0 0-.24.363.31.31 0 0 1-.099.165.278.278 0 0 1-.168.048.606.606 0 0 1-.099-.009l-.39-.069c.03-.208.088-.39.174-.546a1.299 1.299 0 0 1 .765-.63c.168-.054.348-.081.54-.081Zm4.483 4.386h-.333a.374.374 0 0 1-.165-.03c-.04-.022-.07-.065-.09-.129l-.066-.219c-.078.07-.155.132-.231.186a1.402 1.402 0 0 1-.231.132c-.08.036-.165.063-.255.081-.09.018-.19.027-.3.027-.13 0-.25-.017-.36-.051a.724.724 0 0 1-.468-.42.926.926 0 0 1-.066-.363c0-.116.03-.23.09-.342a.859.859 0 0 1 .306-.306c.142-.092.331-.168.567-.228.236-.06.529-.094.879-.102v-.18c0-.206-.044-.358-.132-.456-.086-.1-.212-.15-.378-.15a.918.918 0 0 0-.51.138 9.514 9.514 0 0 1-.162.093.332.332 0 0 1-.165.042.214.214 0 0 1-.129-.039.307.307 0 0 1-.087-.096l-.135-.237a1.83 1.83 0 0 1 1.281-.486c.18 0 .34.03.48.09a.995.995 0 0 1 .582.621c.052.146.078.306.078.48V206Zm-1.44-.462a.983.983 0 0 0 .21-.021.941.941 0 0 0 .345-.165c.054-.042.108-.091.162-.147v-.519c-.216.01-.397.029-.543.057a1.4 1.4 0 0 0-.348.102.461.461 0 0 0-.189.147.332.332 0 0 0-.054.183c0 .13.038.223.114.279a.508.508 0 0 0 .303.084Zm2.612-1.419c0-.412-.05-.817-.15-1.215-.1-.4-.242-.775-.426-1.125a.312.312 0 0 1-.039-.135.14.14 0 0 1 .03-.093.24.24 0 0 1 .072-.063l.33-.198c.148.228.274.457.378.687a4.824 4.824 0 0 1 .399 1.407 5.556 5.556 0 0 1 0 1.47 4.816 4.816 0 0 1-.399 1.407c-.104.23-.23.459-.378.687l-.33-.201a.24.24 0 0 1-.072-.063.145.145 0 0 1-.03-.096c0-.018.002-.038.006-.06a.347.347 0 0 1 .03-.072c.186-.35.329-.724.429-1.122.1-.398.15-.803.15-1.215Zm2.009-3.066a.87.87 0 0 1 .309.051c.092.034.169.08.231.138a.553.553 0 0 1 .144.207.665.665 0 0 1 .048.255.625.625 0 0 1-.039.225.853.853 0 0 1-.099.195c-.04.062-.087.122-.141.18l-.168.177-.384.39a1.288 1.288 0 0 1 .315-.051h.387c.056 0 .099.015.129.045.032.03.048.07.048.12v.315h-1.623v-.171c0-.034.006-.07.018-.108a.29.29 0 0 1 .069-.105l.627-.618a2.06 2.06 0 0 0 .126-.138c.04-.05.074-.099.102-.147a.856.856 0 0 0 .066-.147.425.425 0 0 0 .027-.144c0-.072-.02-.13-.06-.174a.198.198 0 0 0-.162-.069.237.237 0 0 0-.159.051.348.348 0 0 0-.099.141.263.263 0 0 1-.072.081.173.173 0 0 1-.105.027h-.033a.67.67 0 0 0-.036-.006l-.297-.045c.034-.23.125-.4.273-.51a.91.91 0 0 1 .558-.165Zm2.408 2.826h1.554v.618h-1.554v-.618Zm3.977.24c0 .412.05.817.15 1.215.1.398.243.772.429 1.122.014.026.023.05.027.072a.23.23 0 0 1 .009.06c0 .04-.01.072-.03.096a.24.24 0 0 1-.072.063l-.33.201a4.949 4.949 0 0 1-.78-2.094 5.92 5.92 0 0 1 0-1.47 4.824 4.824 0 0 1 .402-1.407c.104-.23.23-.459.378-.687l.33.198a.24.24 0 0 1 .072.063.14.14 0 0 1 .03.093.312.312 0 0 1-.039.135c-.184.35-.326.725-.426 1.125-.1.398-.15.803-.15 1.215Zm1.244 1.881v-4.458h.741v1.758c.122-.13.26-.233.414-.309a1.18 1.18 0 0 1 .54-.117 1 1 0 0 1 .819.405c.102.132.18.295.234.489.056.194.084.417.084.669 0 .23-.031.443-.093.639a1.547 1.547 0 0 1-.267.51 1.224 1.224 0 0 1-.417.339 1.216 1.216 0 0 1-.804.09.868.868 0 0 1-.393-.201 1.76 1.76 0 0 1-.156-.165l-.033.207c-.012.052-.033.089-.063.111a.185.185 0 0 1-.117.033h-.489Zm1.44-2.55a.756.756 0 0 0-.396.099 1.127 1.127 0 0 0-.303.273v1.38a.723.723 0 0 0 .273.219c.1.04.208.06.324.06a.708.708 0 0 0 .303-.063.582.582 0 0 0 .228-.192.933.933 0 0 0 .147-.324c.034-.132.051-.287.051-.465 0-.18-.015-.332-.045-.456a.865.865 0 0 0-.123-.306.49.49 0 0 0-.198-.171.603.603 0 0 0-.261-.054Zm2.231 2.559a.438.438 0 0 1-.069.12.382.382 0 0 1-.096.084.425.425 0 0 1-.231.072h-.312l1.752-4.482a.413.413 0 0 1 .147-.192.385.385 0 0 1 .231-.069h.315l-1.737 4.467Zm3.472-4.395c.2 0 .383.03.549.09.166.058.308.141.426.249.118.108.21.238.276.39.066.152.099.321.099.507 0 .16-.024.308-.072.444a1.754 1.754 0 0 1-.189.39c-.078.124-.17.244-.276.36-.106.116-.217.234-.333.354l-.978.999a2.178 2.178 0 0 1 .546-.087h1.113c.08 0 .143.023.189.069a.228.228 0 0 1 .072.177V206h-2.976v-.246c0-.05.01-.102.03-.156a.455.455 0 0 1 .102-.15l1.317-1.32c.11-.112.208-.219.294-.321.088-.102.161-.203.219-.303.06-.1.105-.201.135-.303.032-.104.048-.213.048-.327a.758.758 0 0 0-.045-.273.524.524 0 0 0-.33-.321.743.743 0 0 0-.258-.042.698.698 0 0 0-.441.135.71.71 0 0 0-.24.363.31.31 0 0 1-.099.165.278.278 0 0 1-.168.048.606.606 0 0 1-.099-.009l-.39-.069c.03-.208.088-.39.174-.546a1.299 1.299 0 0 1 .765-.63c.168-.054.348-.081.54-.081Zm4.482 4.386h-.333a.374.374 0 0 1-.165-.03c-.04-.022-.07-.065-.09-.129l-.066-.219c-.078.07-.155.132-.231.186a1.402 1.402 0 0 1-.231.132c-.08.036-.165.063-.255.081-.09.018-.19.027-.3.027-.13 0-.25-.017-.36-.051a.724.724 0 0 1-.468-.42.926.926 0 0 1-.066-.363c0-.116.03-.23.09-.342a.859.859 0 0 1 .306-.306c.142-.092.331-.168.567-.228.236-.06.529-.094.879-.102v-.18c0-.206-.044-.358-.132-.456-.086-.1-.212-.15-.378-.15a.918.918 0 0 0-.51.138 9.514 9.514 0 0 1-.162.093.332.332 0 0 1-.165.042.214.214 0 0 1-.129-.039.307.307 0 0 1-.087-.096l-.135-.237a1.83 1.83 0 0 1 1.281-.486c.18 0 .34.03.48.09a.995.995 0 0 1 .582.621c.052.146.078.306.078.48V206Zm-1.44-.462a.983.983 0 0 0 .21-.021.941.941 0 0 0 .345-.165c.054-.042.108-.091.162-.147v-.519c-.216.01-.397.029-.543.057a1.4 1.4 0 0 0-.348.102.461.461 0 0 0-.189.147.332.332 0 0 0-.054.183c0 .13.038.223.114.279a.508.508 0 0 0 .303.084Zm2.613-1.419c0-.412-.05-.817-.15-1.215-.1-.4-.242-.775-.426-1.125a.312.312 0 0 1-.039-.135.14.14 0 0 1 .03-.093.24.24 0 0 1 .072-.063l.33-.198c.148.228.274.457.378.687a4.824 4.824 0 0 1 .399 1.407 5.556 5.556 0 0 1 0 1.47 4.816 4.816 0 0 1-.399 1.407c-.104.23-.23.459-.378.687l-.33-.201a.24.24 0 0 1-.072-.063.145.145 0 0 1-.03-.096c0-.018.002-.038.006-.06a.347.347 0 0 1 .03-.072c.186-.35.329-.724.429-1.122.1-.398.15-.803.15-1.215Zm2.009-3.066a.87.87 0 0 1 .309.051c.092.034.169.08.231.138a.553.553 0 0 1 .144.207.665.665 0 0 1 .048.255.625.625 0 0 1-.039.225.853.853 0 0 1-.099.195c-.04.062-.087.122-.141.18l-.168.177-.384.39a1.288 1.288 0 0 1 .315-.051h.387c.056 0 .099.015.129.045.032.03.048.07.048.12v.315h-1.623v-.171c0-.034.006-.07.018-.108a.29.29 0 0 1 .069-.105l.627-.618a2.06 2.06 0 0 0 .126-.138c.04-.05.074-.099.102-.147a.856.856 0 0 0 .066-.147.425.425 0 0 0 .027-.144c0-.072-.02-.13-.06-.174a.198.198 0 0 0-.162-.069.237.237 0 0 0-.159.051.348.348 0 0 0-.099.141.263.263 0 0 1-.072.081.173.173 0 0 1-.105.027h-.033a.67.67 0 0 0-.036-.006l-.297-.045c.034-.23.125-.4.273-.51a.91.91 0 0 1 .558-.165Zm4.142 1.428v1.23h1.167v.549h-1.167v1.236h-.6v-1.236h-1.161v-.549h1.161v-1.23h.6Zm4.482-.867c.2 0 .38.029.54.087.162.056.3.135.414.237a1.05 1.05 0 0 1 .354.795c0 .138-.016.26-.048.366a.812.812 0 0 1-.351.471c-.084.054-.18.099-.288.135.26.082.454.207.582.375.128.168.192.379.192.633a1.247 1.247 0 0 1-.444.993 1.424 1.424 0 0 1-.474.255 1.819 1.819 0 0 1-.567.087 1.94 1.94 0 0 1-.57-.075 1.238 1.238 0 0 1-.729-.582 2.43 2.43 0 0 1-.216-.492l.327-.135a.43.43 0 0 1 .171-.036c.052 0 .098.011.138.033a.223.223 0 0 1 .096.096c.036.07.075.139.117.207a.789.789 0 0 0 .366.312.8.8 0 0 0 .291.048c.126 0 .236-.02.33-.06a.718.718 0 0 0 .234-.162.672.672 0 0 0 .189-.465c0-.104-.011-.198-.033-.282a.42.42 0 0 0-.138-.219.75.75 0 0 0-.303-.141 2.155 2.155 0 0 0-.525-.051v-.528c.182-.002.333-.019.453-.051a.771.771 0 0 0 .285-.132.458.458 0 0 0 .15-.207.794.794 0 0 0 .042-.264c0-.206-.056-.361-.168-.465-.112-.106-.265-.159-.459-.159a.673.673 0 0 0-.438.141.72.72 0 0 0-.243.357.337.337 0 0 1-.099.165.265.265 0 0 1-.165.048.622.622 0 0 1-.102-.009l-.39-.069c.03-.208.088-.39.174-.546a1.299 1.299 0 0 1 .765-.63c.168-.054.348-.081.54-.081Zm2.73 2.799-1.011-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.681l-1.014 1.458 1.056 1.62h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Zm-94.1-170.891a.214.214 0 0 1-.063.069.174.174 0 0 1-.084.018.274.274 0 0 1-.117-.03 3.477 3.477 0 0 0-.141-.066 1.172 1.172 0 0 0-.186-.069.867.867 0 0 0-.243-.03.57.57 0 0 0-.345.093.288.288 0 0 0-.126.243.24.24 0 0 0 .063.168.626.626 0 0 0 .17.117c.073.034.154.065.244.093.09.026.182.055.276.087.094.032.186.069.276.111.09.04.17.092.24.156a.68.68 0 0 1 .237.543c0 .148-.027.285-.081.411a.918.918 0 0 1-.237.324c-.104.09-.233.161-.387.213a1.68 1.68 0 0 1-.525.075 1.782 1.782 0 0 1-.603-.108 1.696 1.696 0 0 1-.258-.12 1.28 1.28 0 0 1-.207-.15l.17-.282a.242.242 0 0 1 .079-.078.219.219 0 0 1 .114-.027c.046 0 .089.013.129.039.042.026.09.054.144.084a.852.852 0 0 0 .468.123c.088 0 .163-.01.225-.03a.479.479 0 0 0 .156-.084.294.294 0 0 0 .09-.117.35.35 0 0 0 .03-.141.246.246 0 0 0-.066-.177.54.54 0 0 0-.171-.12 1.477 1.477 0 0 0-.243-.09l-.28-.09a2.998 2.998 0 0 1-.278-.111 1.021 1.021 0 0 1-.243-.165.77.77 0 0 1-.171-.243.866.866 0 0 1-.063-.348c0-.126.025-.246.075-.36a.838.838 0 0 1 .219-.297 1.08 1.08 0 0 1 .363-.204c.146-.052.314-.078.504-.078.212 0 .405.035.579.105.174.07.319.162.435.276l-.168.267Zm1.581-.6V36h-.741v-3.078h.741Zm.111-.897a.422.422 0 0 1-.039.18.497.497 0 0 1-.255.249.482.482 0 0 1-.369 0 .509.509 0 0 1-.249-.249.482.482 0 0 1 0-.366.464.464 0 0 1 .432-.288.45.45 0 0 1 .186.039.472.472 0 0 1 .294.435ZM59.214 36v-3.078h.453c.096 0 .159.045.189.135l.05.243a1.467 1.467 0 0 1 .414-.309c.079-.038.162-.067.25-.087a1.3 1.3 0 0 1 .288-.03c.168 0 .317.029.447.087.13.056.238.136.324.24.088.102.154.225.198.369.046.142.069.299.069.471V36h-.741v-1.959c0-.188-.044-.333-.132-.435-.086-.104-.216-.156-.39-.156a.772.772 0 0 0-.36.087 1.29 1.29 0 0 0-.318.237V36h-.741Zm5.3-1.587-1.012-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .07.072l.644 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.52-.81a.286.286 0 0 1 .074-.084.165.165 0 0 1 .096-.027h.681L65.5 34.38 66.556 36h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.08-.096l-.655-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.08.096.176.176 0 0 1-.12.042h-.664l1.053-1.587ZM69.008 36c-.096 0-.16-.045-.19-.135l-.06-.297a1.84 1.84 0 0 1-.2.195 1.247 1.247 0 0 1-.49.246 1.186 1.186 0 0 1-.3.036 1.018 1.018 0 0 1-.824-.408 1.516 1.516 0 0 1-.234-.495 2.536 2.536 0 0 1-.081-.672c0-.228.03-.44.093-.636.062-.196.15-.366.267-.51a1.23 1.23 0 0 1 .417-.336c.162-.082.344-.123.546-.123a1.052 1.052 0 0 1 .768.303v-1.626h.74V36h-.452Zm-.987-.543a.758.758 0 0 0 .393-.096c.108-.064.21-.155.306-.273v-1.38a.726.726 0 0 0-.594-.279.728.728 0 0 0-.306.063.605.605 0 0 0-.231.192.934.934 0 0 0-.144.324c-.034.13-.051.284-.051.462 0 .18.014.333.042.459a.94.94 0 0 0 .126.306.49.49 0 0 0 .198.171.647.647 0 0 0 .26.051Zm2.972-1.044-1.011-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.68L71.98 34.38 73.037 36h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Zm3.683-.177h2.658v.552h-2.658v-.552Zm0-1.056h2.658v.549h-2.658v-.549Zm4.533.699h1.554v.618H79.21v-.618Zm4.415-.306a.342.342 0 0 1-.066.066c-.02.016-.05.024-.09.024a.21.21 0 0 1-.111-.033 1.974 1.974 0 0 0-.13-.078.839.839 0 0 0-.434-.114.769.769 0 0 0-.342.072.647.647 0 0 0-.246.201.928.928 0 0 0-.144.321 1.697 1.697 0 0 0-.048.423c0 .164.017.31.05.438a.974.974 0 0 0 .154.324.672.672 0 0 0 .24.198c.094.044.2.066.318.066a.801.801 0 0 0 .285-.042 1 1 0 0 0 .186-.096l.129-.096a.199.199 0 0 1 .126-.045.15.15 0 0 1 .135.069l.213.27a1.38 1.38 0 0 1-.885.48 2.27 2.27 0 0 1-.327.024 1.286 1.286 0 0 1-.978-.417 1.533 1.533 0 0 1-.297-.498 1.967 1.967 0 0 1-.108-.675c0-.226.032-.435.096-.627.066-.194.162-.361.288-.501.126-.142.282-.253.468-.333.186-.08.4-.12.642-.12.23 0 .43.037.603.111.174.074.33.18.468.318l-.195.27Zm2.01-.699c.23 0 .438.037.624.111.188.074.348.179.48.315s.234.302.306.498c.072.196.108.415.108.657 0 .244-.036.464-.108.66a1.425 1.425 0 0 1-.306.501 1.327 1.327 0 0 1-.48.318 1.675 1.675 0 0 1-.624.111c-.23 0-.439-.037-.627-.111a1.356 1.356 0 0 1-.483-.318 1.461 1.461 0 0 1-.309-.501 1.904 1.904 0 0 1-.108-.66c0-.242.036-.461.108-.657a1.43 1.43 0 0 1 .31-.498c.133-.136.294-.241.482-.315.188-.074.397-.111.627-.111Zm0 2.601c.256 0 .445-.086.567-.258.124-.172.186-.424.186-.756s-.062-.585-.186-.759c-.122-.174-.31-.261-.567-.261-.26 0-.452.088-.576.264-.124.174-.186.426-.186.756s.062.582.186.756c.124.172.316.258.576.258Zm3.923-1.953a.214.214 0 0 1-.063.069.174.174 0 0 1-.084.018.274.274 0 0 1-.117-.03 3.477 3.477 0 0 0-.14-.066 1.172 1.172 0 0 0-.187-.069.867.867 0 0 0-.243-.03.57.57 0 0 0-.345.093.288.288 0 0 0-.126.243.24.24 0 0 0 .063.168.626.626 0 0 0 .171.117c.072.034.153.065.243.093.09.026.182.055.276.087.094.032.186.069.276.111.09.04.17.092.24.156a.68.68 0 0 1 .237.543c0 .148-.027.285-.08.411a.918.918 0 0 1-.238.324c-.104.09-.233.161-.387.213a1.68 1.68 0 0 1-.525.075 1.782 1.782 0 0 1-.603-.108 1.696 1.696 0 0 1-.258-.12 1.28 1.28 0 0 1-.207-.15l.171-.282a.242.242 0 0 1 .078-.078.219.219 0 0 1 .114-.027c.046 0 .09.013.13.039.041.026.09.054.143.084a.852.852 0 0 0 .468.123c.088 0 .163-.01.225-.03a.479.479 0 0 0 .156-.084.294.294 0 0 0 .09-.117.35.35 0 0 0 .03-.141.246.246 0 0 0-.066-.177.54.54 0 0 0-.17-.12 1.477 1.477 0 0 0-.244-.09l-.279-.09a2.998 2.998 0 0 1-.279-.111 1.021 1.021 0 0 1-.243-.165.77.77 0 0 1-.17-.243.866.866 0 0 1-.064-.348c0-.126.025-.246.075-.36a.838.838 0 0 1 .22-.297 1.08 1.08 0 0 1 .362-.204c.146-.052.314-.078.504-.078.212 0 .405.035.58.105.173.07.318.162.434.276l-.168.267Zm2.682.891-1.011-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.68l-1.013 1.458L94.283 36h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Zm5.31-1.932v1.23h1.166v.549H97.55v1.236h-.6V34.26h-1.16v-.549h1.16v-1.23h.6Zm5.165 1.092a.342.342 0 0 1-.066.066c-.02.016-.05.024-.09.024a.21.21 0 0 1-.111-.033 1.974 1.974 0 0 0-.129-.078.839.839 0 0 0-.435-.114.769.769 0 0 0-.342.072.647.647 0 0 0-.246.201.928.928 0 0 0-.144.321 1.697 1.697 0 0 0-.048.423c0 .164.017.31.051.438a.974.974 0 0 0 .153.324.672.672 0 0 0 .24.198c.094.044.2.066.318.066a.801.801 0 0 0 .285-.042 1 1 0 0 0 .186-.096l.129-.096a.199.199 0 0 1 .126-.045.15.15 0 0 1 .135.069l.213.27a1.38 1.38 0 0 1-.885.48 2.27 2.27 0 0 1-.327.024 1.286 1.286 0 0 1-.978-.417 1.533 1.533 0 0 1-.297-.498 1.967 1.967 0 0 1-.108-.675c0-.226.032-.435.096-.627.066-.194.162-.361.288-.501.126-.142.282-.253.468-.333.186-.08.4-.12.642-.12.23 0 .431.037.603.111.174.074.33.18.468.318l-.195.27Zm2.01-.699c.23 0 .438.037.624.111.188.074.348.179.48.315s.234.302.306.498c.072.196.108.415.108.657 0 .244-.036.464-.108.66a1.425 1.425 0 0 1-.306.501 1.327 1.327 0 0 1-.48.318 1.675 1.675 0 0 1-.624.111c-.23 0-.439-.037-.627-.111a1.356 1.356 0 0 1-.483-.318 1.461 1.461 0 0 1-.309-.501 1.904 1.904 0 0 1-.108-.66c0-.242.036-.461.108-.657a1.43 1.43 0 0 1 .309-.498c.134-.136.295-.241.483-.315.188-.074.397-.111.627-.111Zm0 2.601c.256 0 .445-.086.567-.258.124-.172.186-.424.186-.756s-.062-.585-.186-.759c-.122-.174-.311-.261-.567-.261-.26 0-.452.088-.576.264-.124.174-.186.426-.186.756s.062.582.186.756c.124.172.316.258.576.258Zm3.923-1.953a.214.214 0 0 1-.063.069.174.174 0 0 1-.084.018.274.274 0 0 1-.117-.03 3.477 3.477 0 0 0-.141-.066 1.172 1.172 0 0 0-.186-.069.867.867 0 0 0-.243-.03.57.57 0 0 0-.345.093.288.288 0 0 0-.126.243.24.24 0 0 0 .063.168.626.626 0 0 0 .171.117c.072.034.153.065.243.093.09.026.182.055.276.087.094.032.186.069.276.111.09.04.17.092.24.156a.68.68 0 0 1 .237.543c0 .148-.027.285-.081.411a.918.918 0 0 1-.237.324c-.104.09-.233.161-.387.213a1.68 1.68 0 0 1-.525.075 1.782 1.782 0 0 1-.603-.108 1.696 1.696 0 0 1-.258-.12 1.28 1.28 0 0 1-.207-.15l.171-.282a.242.242 0 0 1 .078-.078.219.219 0 0 1 .114-.027c.046 0 .089.013.129.039.042.026.09.054.144.084a.852.852 0 0 0 .468.123c.088 0 .163-.01.225-.03a.479.479 0 0 0 .156-.084.294.294 0 0 0 .09-.117.35.35 0 0 0 .03-.141.246.246 0 0 0-.066-.177.54.54 0 0 0-.171-.12 1.477 1.477 0 0 0-.243-.09l-.279-.09a2.998 2.998 0 0 1-.279-.111 1.021 1.021 0 0 1-.243-.165.77.77 0 0 1-.171-.243.866.866 0 0 1-.063-.348c0-.126.025-.246.075-.36a.838.838 0 0 1 .219-.297 1.08 1.08 0 0 1 .363-.204c.146-.052.314-.078.504-.078.212 0 .405.035.579.105.174.07.319.162.435.276l-.168.267Zm3.363-1.908c.2 0 .383.03.549.09.166.058.308.141.426.249.118.108.21.238.276.39.066.152.099.321.099.507 0 .16-.024.308-.072.444a1.754 1.754 0 0 1-.189.39c-.078.124-.17.244-.276.36-.106.116-.217.234-.333.354l-.978.999a2.178 2.178 0 0 1 .546-.087h1.113c.08 0 .143.023.189.069a.228.228 0 0 1 .072.177V36h-2.976v-.246c0-.05.01-.102.03-.156a.455.455 0 0 1 .102-.15l1.317-1.32c.11-.112.208-.219.294-.321.088-.102.161-.203.219-.303.06-.1.105-.201.135-.303.032-.104.048-.213.048-.327a.758.758 0 0 0-.045-.273.524.524 0 0 0-.33-.321.743.743 0 0 0-.258-.042.698.698 0 0 0-.441.135.71.71 0 0 0-.24.363.31.31 0 0 1-.099.165.278.278 0 0 1-.168.048.606.606 0 0 1-.099-.009l-.39-.069c.03-.208.088-.39.174-.546a1.299 1.299 0 0 1 .765-.63c.168-.054.348-.081.54-.081ZM116.493 36h-.333a.374.374 0 0 1-.165-.03c-.04-.022-.07-.065-.09-.129l-.066-.219c-.078.07-.155.132-.231.186a1.402 1.402 0 0 1-.231.132c-.08.036-.165.063-.255.081-.09.018-.19.027-.3.027-.13 0-.25-.017-.36-.051a.724.724 0 0 1-.468-.42.926.926 0 0 1-.066-.363c0-.116.03-.23.09-.342a.859.859 0 0 1 .306-.306c.142-.092.331-.168.567-.228.236-.06.529-.094.879-.102v-.18c0-.206-.044-.358-.132-.456-.086-.1-.212-.15-.378-.15a.918.918 0 0 0-.51.138 9.514 9.514 0 0 1-.162.093.332.332 0 0 1-.165.042.214.214 0 0 1-.129-.039.307.307 0 0 1-.087-.096l-.135-.237a1.83 1.83 0 0 1 1.281-.486c.18 0 .34.03.48.09a.995.995 0 0 1 .582.621c.052.146.078.306.078.48V36Zm-1.44-.462a.983.983 0 0 0 .21-.021.941.941 0 0 0 .345-.165c.054-.042.108-.091.162-.147v-.519c-.216.01-.397.029-.543.057a1.4 1.4 0 0 0-.348.102.461.461 0 0 0-.189.147.332.332 0 0 0-.054.183c0 .13.038.223.114.279a.508.508 0 0 0 .303.084Zm2.594-4.485a.87.87 0 0 1 .309.051c.092.034.169.08.231.138a.553.553 0 0 1 .144.207.665.665 0 0 1 .048.255.625.625 0 0 1-.039.225.853.853 0 0 1-.099.195c-.04.062-.087.122-.141.18l-.168.177-.384.39a1.288 1.288 0 0 1 .315-.051h.387c.056 0 .099.015.129.045.032.03.048.07.048.12v.315h-1.623v-.171c0-.034.006-.07.018-.108a.29.29 0 0 1 .069-.105l.627-.618a2.06 2.06 0 0 0 .126-.138c.04-.05.074-.099.102-.147a.856.856 0 0 0 .066-.147.425.425 0 0 0 .027-.144c0-.072-.02-.13-.06-.174a.198.198 0 0 0-.162-.069.237.237 0 0 0-.159.051.348.348 0 0 0-.099.141.263.263 0 0 1-.072.081.173.173 0 0 1-.105.027h-.033a.67.67 0 0 0-.036-.006l-.297-.045c.034-.23.125-.4.273-.51a.91.91 0 0 1 .558-.165ZM97.132 52c-.096 0-.16-.045-.19-.135l-.06-.297a1.84 1.84 0 0 1-.2.195 1.247 1.247 0 0 1-.49.246 1.186 1.186 0 0 1-.3.036 1.018 1.018 0 0 1-.824-.408 1.516 1.516 0 0 1-.234-.495 2.536 2.536 0 0 1-.081-.672c0-.228.03-.44.093-.636.062-.196.15-.366.267-.51a1.23 1.23 0 0 1 .417-.336c.162-.082.344-.123.546-.123a1.052 1.052 0 0 1 .768.303v-1.626h.74V52h-.452Zm-.987-.543a.758.758 0 0 0 .393-.096c.108-.064.21-.155.306-.273v-1.38a.726.726 0 0 0-.594-.279.728.728 0 0 0-.306.063.605.605 0 0 0-.231.192.934.934 0 0 0-.144.324c-.034.13-.051.284-.051.462 0 .18.014.333.042.459a.94.94 0 0 0 .126.306.49.49 0 0 0 .198.171.647.647 0 0 0 .26.051Zm2.972-1.044-1.011-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.681l-1.014 1.458L101.16 52h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Zm2.769 1.596a.438.438 0 0 1-.069.12.382.382 0 0 1-.096.084.425.425 0 0 1-.231.072h-.312l1.752-4.482a.413.413 0 0 1 .147-.192.385.385 0 0 1 .231-.069h.315l-1.737 4.467Zm3.856-2.436a.342.342 0 0 1-.066.066c-.02.016-.05.024-.09.024a.21.21 0 0 1-.111-.033 1.974 1.974 0 0 0-.129-.078.839.839 0 0 0-.435-.114.769.769 0 0 0-.342.072.647.647 0 0 0-.246.201.928.928 0 0 0-.144.321 1.697 1.697 0 0 0-.048.423c0 .164.017.31.051.438a.974.974 0 0 0 .153.324.672.672 0 0 0 .24.198c.094.044.2.066.318.066a.801.801 0 0 0 .285-.042 1 1 0 0 0 .186-.096l.129-.096a.199.199 0 0 1 .126-.045.15.15 0 0 1 .135.069l.213.27a1.38 1.38 0 0 1-.885.48 2.27 2.27 0 0 1-.327.024 1.286 1.286 0 0 1-.978-.417 1.533 1.533 0 0 1-.297-.498 1.967 1.967 0 0 1-.108-.675c0-.226.032-.435.096-.627.066-.194.162-.361.288-.501.126-.142.282-.253.468-.333.186-.08.4-.12.642-.12.23 0 .431.037.603.111.174.074.33.18.468.318l-.195.27Zm2.01-.699c.23 0 .438.037.624.111.188.074.348.179.48.315s.234.302.306.498c.072.196.108.415.108.657 0 .244-.036.464-.108.66a1.425 1.425 0 0 1-.306.501 1.327 1.327 0 0 1-.48.318 1.675 1.675 0 0 1-.624.111c-.23 0-.439-.037-.627-.111a1.356 1.356 0 0 1-.483-.318 1.461 1.461 0 0 1-.309-.501 1.904 1.904 0 0 1-.108-.66c0-.242.036-.461.108-.657a1.43 1.43 0 0 1 .309-.498c.134-.136.295-.241.483-.315.188-.074.397-.111.627-.111Zm0 2.601c.256 0 .445-.086.567-.258.124-.172.186-.424.186-.756s-.062-.585-.186-.759c-.122-.174-.311-.261-.567-.261-.26 0-.452.088-.576.264-.124.174-.186.426-.186.756s.062.582.186.756c.124.172.316.258.576.258Zm3.924-1.953a.214.214 0 0 1-.063.069.174.174 0 0 1-.084.018.274.274 0 0 1-.117-.03 3.477 3.477 0 0 0-.141-.066 1.172 1.172 0 0 0-.186-.069.867.867 0 0 0-.243-.03.57.57 0 0 0-.345.093.288.288 0 0 0-.126.243.24.24 0 0 0 .063.168.626.626 0 0 0 .171.117c.072.034.153.065.243.093.09.026.182.055.276.087.094.032.186.069.276.111.09.04.17.092.24.156a.68.68 0 0 1 .237.543c0 .148-.027.285-.081.411a.918.918 0 0 1-.237.324c-.104.09-.233.161-.387.213a1.68 1.68 0 0 1-.525.075 1.782 1.782 0 0 1-.603-.108 1.696 1.696 0 0 1-.258-.12 1.28 1.28 0 0 1-.207-.15l.171-.282a.242.242 0 0 1 .078-.078.219.219 0 0 1 .114-.027c.046 0 .089.013.129.039.042.026.09.054.144.084a.852.852 0 0 0 .468.123c.088 0 .163-.01.225-.03a.479.479 0 0 0 .156-.084.294.294 0 0 0 .09-.117.35.35 0 0 0 .03-.141.246.246 0 0 0-.066-.177.54.54 0 0 0-.171-.12 1.477 1.477 0 0 0-.243-.09l-.279-.09a2.998 2.998 0 0 1-.279-.111 1.021 1.021 0 0 1-.243-.165.77.77 0 0 1-.171-.243.866.866 0 0 1-.063-.348c0-.126.025-.246.075-.36a.838.838 0 0 1 .219-.297 1.08 1.08 0 0 1 .363-.204c.146-.052.314-.078.504-.078.212 0 .405.035.579.105.174.07.319.162.435.276l-.168.267Zm1.446-2.469a.87.87 0 0 1 .309.051c.092.034.169.08.231.138a.553.553 0 0 1 .144.207.665.665 0 0 1 .048.255.625.625 0 0 1-.039.225.853.853 0 0 1-.099.195c-.04.062-.087.122-.141.18l-.168.177-.384.39a1.288 1.288 0 0 1 .315-.051h.387c.056 0 .099.015.129.045.032.03.048.07.048.12v.315h-1.623v-.171c0-.034.006-.07.018-.108a.29.29 0 0 1 .069-.105l.627-.618a2.06 2.06 0 0 0 .126-.138c.04-.05.074-.099.102-.147a.856.856 0 0 0 .066-.147.425.425 0 0 0 .027-.144c0-.072-.02-.13-.06-.174a.198.198 0 0 0-.162-.069.237.237 0 0 0-.159.051.348.348 0 0 0-.099.141.263.263 0 0 1-.072.081.173.173 0 0 1-.105.027h-.033a.67.67 0 0 0-.036-.006l-.297-.045c.034-.23.125-.4.273-.51a.91.91 0 0 1 .558-.165Zm3.233 3.36-1.011-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.681l-1.014 1.458 1.056 1.62h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Zm3.683-.177h2.658v.552h-2.658v-.552Zm0-1.056h2.658v.549h-2.658v-.549Zm5.64 2.868c-.266 0-.471-.075-.615-.225-.144-.152-.216-.361-.216-.627v-1.719h-.312a.155.155 0 0 1-.105-.039c-.028-.026-.042-.065-.042-.117v-.294l.495-.081.156-.84a.151.151 0 0 1 .054-.093.183.183 0 0 1 .111-.033h.384v.969h.81v.528h-.81v1.668c0 .096.024.171.072.225a.244.244 0 0 0 .192.081.366.366 0 0 0 .195-.051l.063-.033a.097.097 0 0 1 .054-.018.08.08 0 0 1 .054.018c.014.01.029.026.045.048l.222.36c-.108.09-.232.158-.372.204-.14.046-.285.069-.435.069Zm2.374-3.18c.132 0 .256.014.372.042.116.026.222.065.318.117h.885v.276a.153.153 0 0 1-.036.108c-.024.026-.065.044-.123.054l-.276.051a.87.87 0 0 1 .045.165.902.902 0 0 1 .018.183.913.913 0 0 1-.345.726 1.171 1.171 0 0 1-.381.201 1.724 1.724 0 0 1-.816.036c-.096.058-.144.123-.144.195 0 .062.028.108.084.138a.745.745 0 0 0 .225.06c.094.012.2.02.318.024.118.002.239.008.363.018.124.01.245.028.363.054.118.024.223.063.315.117a.614.614 0 0 1 .225.222.66.66 0 0 1 .087.357.834.834 0 0 1-.102.396 1.04 1.04 0 0 1-.291.342c-.126.1-.281.18-.465.24a1.97 1.97 0 0 1-.63.093c-.234 0-.437-.023-.609-.069a1.393 1.393 0 0 1-.429-.18.772.772 0 0 1-.252-.258.608.608 0 0 1-.084-.306c0-.144.044-.265.132-.363a.904.904 0 0 1 .366-.234.51.51 0 0 1-.183-.168.489.489 0 0 1-.069-.273c0-.046.008-.093.024-.141a.588.588 0 0 1 .198-.282.824.824 0 0 1 .177-.117.983.983 0 0 1-.369-.336.905.905 0 0 1-.132-.492c0-.152.03-.289.09-.411a.929.929 0 0 1 .255-.315c.11-.088.239-.155.387-.201a1.66 1.66 0 0 1 .489-.069Zm.813 3.27a.205.205 0 0 0-.054-.147.343.343 0 0 0-.147-.087 1.019 1.019 0 0 0-.219-.048 11.483 11.483 0 0 0-.552-.036 4.178 4.178 0 0 1-.285-.027.678.678 0 0 0-.204.165.334.334 0 0 0-.036.366.348.348 0 0 0 .129.123.76.76 0 0 0 .231.078c.094.02.209.03.345.03.138 0 .257-.011.357-.033.1-.02.182-.049.246-.087a.358.358 0 0 0 .144-.132.315.315 0 0 0 .045-.165Zm-.813-1.752a.722.722 0 0 0 .24-.036.472.472 0 0 0 .168-.105.403.403 0 0 0 .102-.159.56.56 0 0 0 .036-.204.475.475 0 0 0-.138-.36c-.09-.09-.226-.135-.408-.135-.182 0-.319.045-.411.135a.48.48 0 0 0-.135.36.485.485 0 0 0 .135.363.504.504 0 0 0 .171.105c.07.024.15.036.24.036Zm2.77.027-1.011-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.681l-1.014 1.458 1.056 1.62h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Zm5.309-1.932v1.23h1.167v.549h-1.167v1.236h-.6V50.26h-1.161v-.549h1.161v-1.23h.6Zm6.027 2.496c.044 0 .082.017.114.051l.318.345a1.744 1.744 0 0 1-.651.501c-.256.116-.564.174-.924.174-.322 0-.612-.055-.87-.165a1.918 1.918 0 0 1-.657-.459 2.028 2.028 0 0 1-.42-.702 2.66 2.66 0 0 1-.144-.891c0-.326.054-.624.162-.894.108-.272.26-.506.456-.702.196-.196.43-.348.702-.456a2.41 2.41 0 0 1 .906-.165c.322 0 .603.052.843.156.242.102.449.238.621.408l-.27.375a.236.236 0 0 1-.063.063.167.167 0 0 1-.102.027.236.236 0 0 1-.141-.054 1.482 1.482 0 0 0-.465-.234 1.428 1.428 0 0 0-.429-.054c-.204 0-.392.036-.564.108-.17.07-.317.171-.441.303a1.43 1.43 0 0 0-.288.483c-.068.188-.102.4-.102.636 0 .244.034.461.102.651.07.19.164.35.282.48a1.215 1.215 0 0 0 .933.402c.11 0 .209-.006.297-.018a1.234 1.234 0 0 0 .459-.156c.068-.042.135-.093.201-.153a.247.247 0 0 1 .063-.042.148.148 0 0 1 .072-.018ZM95.132 18c-.096 0-.16-.045-.19-.135l-.06-.297a1.84 1.84 0 0 1-.2.195 1.247 1.247 0 0 1-.49.246 1.186 1.186 0 0 1-.3.036 1.018 1.018 0 0 1-.824-.408 1.516 1.516 0 0 1-.234-.495 2.536 2.536 0 0 1-.081-.672c0-.228.03-.44.093-.636.062-.196.15-.366.267-.51a1.23 1.23 0 0 1 .417-.336c.162-.082.344-.123.546-.123a1.052 1.052 0 0 1 .768.303v-1.626h.74V18h-.452Zm-.987-.543a.758.758 0 0 0 .393-.096c.108-.064.21-.155.306-.273v-1.38a.726.726 0 0 0-.594-.279.728.728 0 0 0-.306.063.605.605 0 0 0-.231.192.934.934 0 0 0-.144.324c-.034.13-.051.284-.051.462 0 .18.014.333.042.459a.94.94 0 0 0 .126.306.49.49 0 0 0 .198.171.647.647 0 0 0 .26.051Zm2.972-1.044-1.011-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.68l-1.013 1.458L99.16 18h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Zm3.929 1.596a.438.438 0 0 1-.069.12.382.382 0 0 1-.096.084.425.425 0 0 1-.231.072h-.312l1.752-4.482a.413.413 0 0 1 .147-.192.385.385 0 0 1 .231-.069h.315l-1.737 4.467Zm5.05-2.487a.214.214 0 0 1-.063.069.174.174 0 0 1-.084.018.274.274 0 0 1-.117-.03 3.477 3.477 0 0 0-.141-.066 1.172 1.172 0 0 0-.186-.069.867.867 0 0 0-.243-.03.57.57 0 0 0-.345.093.288.288 0 0 0-.126.243.24.24 0 0 0 .063.168.626.626 0 0 0 .171.117c.072.034.153.065.243.093.09.026.182.055.276.087.094.032.186.069.276.111.09.04.17.092.24.156a.68.68 0 0 1 .237.543c0 .148-.027.285-.081.411a.918.918 0 0 1-.237.324c-.104.09-.233.161-.387.213a1.68 1.68 0 0 1-.525.075 1.782 1.782 0 0 1-.603-.108 1.696 1.696 0 0 1-.258-.12 1.28 1.28 0 0 1-.207-.15l.171-.282a.242.242 0 0 1 .078-.078.219.219 0 0 1 .114-.027c.046 0 .089.013.129.039.042.026.09.054.144.084a.852.852 0 0 0 .468.123c.088 0 .163-.01.225-.03a.479.479 0 0 0 .156-.084.294.294 0 0 0 .09-.117.35.35 0 0 0 .03-.141.246.246 0 0 0-.066-.177.54.54 0 0 0-.171-.12 1.477 1.477 0 0 0-.243-.09l-.279-.09a2.998 2.998 0 0 1-.279-.111 1.021 1.021 0 0 1-.243-.165.77.77 0 0 1-.171-.243.866.866 0 0 1-.063-.348c0-.126.025-.246.075-.36a.838.838 0 0 1 .219-.297 1.08 1.08 0 0 1 .363-.204c.146-.052.314-.078.504-.078.212 0 .405.035.579.105.174.07.319.162.435.276l-.168.267Zm1.581-.6V18h-.741v-3.078h.741Zm.111-.897a.422.422 0 0 1-.039.18.497.497 0 0 1-.255.249.482.482 0 0 1-.369 0 .509.509 0 0 1-.249-.249.482.482 0 0 1 0-.366.464.464 0 0 1 .432-.288.45.45 0 0 1 .186.039.472.472 0 0 1 .294.435Zm.729 3.975v-3.078h.453c.096 0 .159.045.189.135l.051.243a1.467 1.467 0 0 1 .414-.309c.078-.038.161-.067.249-.087a1.3 1.3 0 0 1 .288-.03c.168 0 .317.029.447.087.13.056.238.136.324.24.088.102.154.225.198.369.046.142.069.299.069.471V18h-.741v-1.959c0-.188-.044-.333-.132-.435-.086-.104-.216-.156-.39-.156a.772.772 0 0 0-.36.087 1.29 1.29 0 0 0-.318.237V18h-.741Zm5.299-1.587-1.011-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.681l-1.014 1.458 1.056 1.62h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Zm3.683-.177h2.658v.552h-2.658v-.552Zm0-1.056h2.658v.549h-2.658v-.549Zm5.418-1.638V18h-.741v-4.458h.741Zm.84 4.458v-3.078h.453c.096 0 .159.045.189.135l.051.243a1.467 1.467 0 0 1 .414-.309c.078-.038.161-.067.249-.087a1.3 1.3 0 0 1 .288-.03c.168 0 .317.029.447.087.13.056.238.136.324.24.088.102.154.225.198.369.046.142.069.299.069.471V18h-.741v-1.959c0-.188-.044-.333-.132-.435-.086-.104-.216-.156-.39-.156a.772.772 0 0 0-.36.087 1.29 1.29 0 0 0-.318.237V18h-.741Zm3.668.009a.438.438 0 0 1-.069.12.382.382 0 0 1-.096.084.425.425 0 0 1-.231.072h-.312l1.752-4.482a.413.413 0 0 1 .147-.192.385.385 0 0 1 .231-.069h.315l-1.737 4.467Zm2.933.039c-.266 0-.471-.075-.615-.225-.144-.152-.216-.361-.216-.627v-1.719h-.312a.155.155 0 0 1-.105-.039c-.028-.026-.042-.065-.042-.117v-.294l.495-.081.156-.84a.151.151 0 0 1 .054-.093.183.183 0 0 1 .111-.033h.384v.969h.81v.528h-.81v1.668c0 .096.024.171.072.225a.244.244 0 0 0 .192.081.366.366 0 0 0 .195-.051l.063-.033a.097.097 0 0 1 .054-.018.08.08 0 0 1 .054.018c.014.01.029.026.045.048l.222.36c-.108.09-.232.158-.372.204-.14.046-.285.069-.435.069Zm2.374-3.18c.132 0 .256.014.372.042.116.026.222.065.318.117h.885v.276a.153.153 0 0 1-.036.108c-.024.026-.065.044-.123.054l-.276.051a.87.87 0 0 1 .045.165.902.902 0 0 1 .018.183.913.913 0 0 1-.345.726 1.171 1.171 0 0 1-.381.201 1.724 1.724 0 0 1-.816.036c-.096.058-.144.123-.144.195 0 .062.028.108.084.138a.745.745 0 0 0 .225.06c.094.012.2.02.318.024.118.002.239.008.363.018.124.01.245.028.363.054.118.024.223.063.315.117a.614.614 0 0 1 .225.222.66.66 0 0 1 .087.357.834.834 0 0 1-.102.396 1.04 1.04 0 0 1-.291.342c-.126.1-.281.18-.465.24a1.97 1.97 0 0 1-.63.093c-.234 0-.437-.023-.609-.069a1.393 1.393 0 0 1-.429-.18.772.772 0 0 1-.252-.258.608.608 0 0 1-.084-.306c0-.144.044-.265.132-.363a.904.904 0 0 1 .366-.234.51.51 0 0 1-.183-.168.489.489 0 0 1-.069-.273c0-.046.008-.093.024-.141a.588.588 0 0 1 .198-.282.824.824 0 0 1 .177-.117.983.983 0 0 1-.369-.336.905.905 0 0 1-.132-.492c0-.152.03-.289.09-.411a.929.929 0 0 1 .255-.315c.11-.088.239-.155.387-.201a1.66 1.66 0 0 1 .489-.069Zm.813 3.27a.205.205 0 0 0-.054-.147.343.343 0 0 0-.147-.087 1.019 1.019 0 0 0-.219-.048 11.483 11.483 0 0 0-.552-.036 4.178 4.178 0 0 1-.285-.027.678.678 0 0 0-.204.165.334.334 0 0 0-.036.366.348.348 0 0 0 .129.123.76.76 0 0 0 .231.078c.094.02.209.03.345.03.138 0 .257-.011.357-.033.1-.02.182-.049.246-.087a.358.358 0 0 0 .144-.132.315.315 0 0 0 .045-.165Zm-.813-1.752a.722.722 0 0 0 .24-.036.472.472 0 0 0 .168-.105.403.403 0 0 0 .102-.159.56.56 0 0 0 .036-.204.475.475 0 0 0-.138-.36c-.09-.09-.226-.135-.408-.135-.182 0-.319.045-.411.135a.48.48 0 0 0-.135.36.485.485 0 0 0 .135.363.504.504 0 0 0 .171.105c.07.024.15.036.24.036Zm3.93.027-1.011-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.681l-1.014 1.458 1.056 1.62h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Zm2.769 1.596a.438.438 0 0 1-.069.12.382.382 0 0 1-.096.084.425.425 0 0 1-.231.072h-.312l1.752-4.482a.413.413 0 0 1 .147-.192.385.385 0 0 1 .231-.069h.315l-1.737 4.467Zm3.472-4.395c.2 0 .383.03.549.09.166.058.308.141.426.249.118.108.21.238.276.39.066.152.099.321.099.507 0 .16-.024.308-.072.444a1.754 1.754 0 0 1-.189.39c-.078.124-.17.244-.276.36-.106.116-.217.234-.333.354l-.978.999a2.178 2.178 0 0 1 .546-.087h1.113c.08 0 .143.023.189.069a.228.228 0 0 1 .072.177V18h-2.976v-.246c0-.05.01-.102.03-.156a.455.455 0 0 1 .102-.15l1.317-1.32c.11-.112.208-.219.294-.321.088-.102.161-.203.219-.303.06-.1.105-.201.135-.303.032-.104.048-.213.048-.327a.758.758 0 0 0-.045-.273.524.524 0 0 0-.33-.321.743.743 0 0 0-.258-.042.698.698 0 0 0-.441.135.71.71 0 0 0-.24.363.31.31 0 0 1-.099.165.278.278 0 0 1-.168.048.606.606 0 0 1-.099-.009l-.39-.069c.03-.208.088-.39.174-.546a1.299 1.299 0 0 1 .765-.63c.168-.054.348-.081.54-.081Zm4.869.867v1.23h1.167v.549h-1.167v1.236h-.6V16.26h-1.161v-.549h1.161v-1.23h.6ZM154.629 18h-.624a.285.285 0 0 1-.174-.051.314.314 0 0 1-.096-.132l-.324-.885h-1.797l-.324.885a.28.28 0 0 1-.096.126.26.26 0 0 1-.171.057h-.627l1.704-4.338h.825L154.629 18Zm-2.808-1.638h1.383l-.528-1.443a10.499 10.499 0 0 1-.081-.225 7.427 7.427 0 0 1-.084-.285 7.427 7.427 0 0 1-.162.516l-.528 1.437Zm1.89 109.003h.546v.429c0 .04-.013.075-.039.105-.026.028-.064.042-.114.042h-.393V127h-.648v-1.059h-1.83a.207.207 0 0 1-.132-.045.208.208 0 0 1-.072-.117l-.075-.375 2.055-2.745h.702v2.706Zm-.648-1.419a3.85 3.85 0 0 1 .027-.438l-1.347 1.857h1.32v-1.419Zm4.27-.969a.343.343 0 0 1-.102.258c-.066.066-.177.099-.333.099h-1.194l-.156.906c.196-.04.375-.06.537-.06.228 0 .428.034.6.102a1.18 1.18 0 0 1 .705.705c.06.16.09.333.09.519 0 .23-.041.44-.123.63a1.424 1.424 0 0 1-.849.801c-.196.074-.41.111-.642.111-.136 0-.265-.014-.387-.042a2.047 2.047 0 0 1-.345-.111 2.216 2.216 0 0 1-.297-.162 2.031 2.031 0 0 1-.243-.195l.228-.315a.224.224 0 0 1 .192-.102c.05 0 .1.016.15.048.052.032.112.067.18.105.068.038.147.073.237.105a.98.98 0 0 0 .327.048.917.917 0 0 0 .36-.066.696.696 0 0 0 .258-.183.777.777 0 0 0 .156-.282c.036-.11.054-.229.054-.357 0-.236-.069-.42-.207-.552-.136-.134-.337-.201-.603-.201-.21 0-.421.038-.633.114l-.462-.132.36-2.106h2.142v.315Zm.678.654a1.021 1.021 0 0 1 .297-.726c.094-.092.204-.164.33-.216.126-.054.262-.081.408-.081.146 0 .282.027.408.081a1.007 1.007 0 0 1 .636.942.974.974 0 0 1-.081.393 1.052 1.052 0 0 1-.222.327 1.06 1.06 0 0 1-.741.3c-.146 0-.282-.027-.408-.081a1.069 1.069 0 0 1-.33-.219 1.006 1.006 0 0 1-.297-.72Zm.516.006a.545.545 0 0 0 .147.375.584.584 0 0 0 .165.111.545.545 0 0 0 .207.039.545.545 0 0 0 .207-.039.502.502 0 0 0 .276-.279.545.545 0 0 0 .039-.207.553.553 0 0 0-.15-.381.507.507 0 0 0-.372-.156.51.51 0 0 0-.48.327.553.553 0 0 0-.039.21Zm55.184 59.728h.546v.429c0 .04-.013.075-.039.105-.026.028-.064.042-.114.042h-.393V185h-.648v-1.059h-1.83a.207.207 0 0 1-.132-.045.208.208 0 0 1-.072-.117l-.075-.375 2.055-2.745h.702v2.706Zm-.648-1.419a3.85 3.85 0 0 1 .027-.438l-1.347 1.857h1.32v-1.419Zm4.27-.969a.343.343 0 0 1-.102.258c-.066.066-.177.099-.333.099h-1.194l-.156.906c.196-.04.375-.06.537-.06.228 0 .428.034.6.102a1.18 1.18 0 0 1 .705.705c.06.16.09.333.09.519 0 .23-.041.44-.123.63a1.424 1.424 0 0 1-.849.801c-.196.074-.41.111-.642.111-.136 0-.265-.014-.387-.042a2.047 2.047 0 0 1-.345-.111 2.216 2.216 0 0 1-.297-.162 2.031 2.031 0 0 1-.243-.195l.228-.315a.224.224 0 0 1 .192-.102c.05 0 .1.016.15.048.052.032.112.067.18.105.068.038.147.073.237.105a.98.98 0 0 0 .327.048.917.917 0 0 0 .36-.066.696.696 0 0 0 .258-.183.777.777 0 0 0 .156-.282c.036-.11.054-.229.054-.357 0-.236-.069-.42-.207-.552-.136-.134-.337-.201-.603-.201-.21 0-.421.038-.633.114l-.462-.132.36-2.106h2.142v.315Zm.678.654a1.021 1.021 0 0 1 .297-.726c.094-.092.204-.164.33-.216.126-.054.262-.081.408-.081.146 0 .282.027.408.081a1.007 1.007 0 0 1 .636.942.974.974 0 0 1-.081.393 1.052 1.052 0 0 1-.222.327 1.06 1.06 0 0 1-.741.3c-.146 0-.282-.027-.408-.081a1.069 1.069 0 0 1-.33-.219 1.006 1.006 0 0 1-.297-.72Zm.516.006a.545.545 0 0 0 .147.375.584.584 0 0 0 .165.111.545.545 0 0 0 .207.039.545.545 0 0 0 .207-.039.502.502 0 0 0 .276-.279.545.545 0 0 0 .039-.207.553.553 0 0 0-.15-.381.507.507 0 0 0-.372-.156.51.51 0 0 0-.48.327.553.553 0 0 0-.039.21Z\" fill=\"#fff\"/><path d=\"m156.07 131.207 51.293 51.293H156.07v-51.293Z\" stroke=\"#fff\"/><path d=\"M156.07 177h5.5v5.5\" stroke=\"#fff\"/><path d=\"m171.173 189.413-1.011-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.681l-1.014 1.458 1.056 1.62h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Zm9.722-2.799c.2 0 .383.03.549.09.166.058.308.141.426.249.118.108.21.238.276.39.066.152.099.321.099.507 0 .16-.024.308-.072.444a1.754 1.754 0 0 1-.189.39c-.078.124-.17.244-.276.36-.106.116-.217.234-.333.354l-.978.999a2.178 2.178 0 0 1 .546-.087h1.113c.08 0 .143.023.189.069a.228.228 0 0 1 .072.177V191h-2.976v-.246c0-.05.01-.102.03-.156a.455.455 0 0 1 .102-.15l1.317-1.32c.11-.112.208-.219.294-.321.088-.102.161-.203.219-.303.06-.1.105-.201.135-.303.032-.104.048-.213.048-.327a.758.758 0 0 0-.045-.273.524.524 0 0 0-.33-.321.743.743 0 0 0-.258-.042.698.698 0 0 0-.441.135.71.71 0 0 0-.24.363.31.31 0 0 1-.099.165.278.278 0 0 1-.168.048.606.606 0 0 1-.099-.009l-.39-.069c.03-.208.088-.39.174-.546a1.299 1.299 0 0 1 .765-.63c.168-.054.348-.081.54-.081Zm-39.722-30.201-1.011-1.491h.714c.054 0 .094.008.12.024a.185.185 0 0 1 .069.072l.645 1.029c.01-.034.022-.068.036-.102a.87.87 0 0 1 .057-.102l.519-.81a.286.286 0 0 1 .075-.084.165.165 0 0 1 .096-.027h.681l-1.014 1.458 1.056 1.62h-.714a.2.2 0 0 1-.132-.042.413.413 0 0 1-.081-.096l-.654-1.071a.574.574 0 0 1-.075.18l-.576.891a.516.516 0 0 1-.081.096.176.176 0 0 1-.12.042h-.663l1.053-1.587Zm9.722-2.799c.2 0 .383.03.549.09.166.058.308.141.426.249.118.108.21.238.276.39.066.152.099.321.099.507 0 .16-.024.308-.072.444a1.754 1.754 0 0 1-.189.39c-.078.124-.17.244-.276.36-.106.116-.217.234-.333.354l-.978.999a2.178 2.178 0 0 1 .546-.087h1.113c.08 0 .143.023.189.069a.228.228 0 0 1 .072.177V158h-2.976v-.246c0-.05.01-.102.03-.156a.455.455 0 0 1 .102-.15l1.317-1.32c.11-.112.208-.219.294-.321.088-.102.161-.203.219-.303.06-.1.105-.201.135-.303.032-.104.048-.213.048-.327a.758.758 0 0 0-.045-.273.524.524 0 0 0-.33-.321.743.743 0 0 0-.258-.042.698.698 0 0 0-.441.135.71.71 0 0 0-.24.363.31.31 0 0 1-.099.165.278.278 0 0 1-.168.048.606.606 0 0 1-.099-.009l-.39-.069c.03-.208.088-.39.174-.546a1.299 1.299 0 0 1 .765-.63c.168-.054.348-.081.54-.081Z\" fill=\"#fff\"/><path d=\"m174.57 188 2 3 2-6h5m-39-30 2 3 2-6h5\" stroke=\"#fff\" stroke-width=\".5\"/></g><defs><clipPath id=\"a\"><path fill=\"#fff\" transform=\"translate(.57)\" d=\"M0 0h220v220H0z\"/></clipPath></defs></svg>");
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return requiredArgs; });
+function requiredArgs(required, args) {
+  if (args.length < required) {
+    throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');
+  }
+}
 
 /***/ }),
-/* 950 */
-/***/ (function(module, exports) {
-
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M90.14 163.167h43.999s2.75 33.916 15.584 33.916c-22 2.75-70.584 5.5-74.25 0 11.916 0 14.666-33.916 14.666-33.916Z\" fill=\"#BCBCBC\"/><rect x=\"64.473\" y=\"196.167\" width=\"93.5\" height=\"9.167\" rx=\"1\" fill=\"#E0E0E0\"/><rect x=\"7.639\" y=\"34.833\" width=\"205.333\" height=\"124.667\" rx=\"2\" fill=\"url(#a)\" stroke=\"#E0E0E0\" stroke-width=\"4\"/><path d=\"M23.327 51.522c-.102.05-.218.09-.348.12.13.03.246.07.348.12l.852.462a.245.245 0 0 1 .15.225v.645l-2.43-1.27v-.362l2.43-1.272v.645a.246.246 0 0 1-.036.129.27.27 0 0 1-.114.099l-.852.459Zm2.751-2.346v4.49h-.93v-4.49h.93Zm1.46 1.38v3.11h-.93v-3.11h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm1.29 1.188a2.26 2.26 0 0 1 .186-.156 1.136 1.136 0 0 1 .441-.198c.086-.02.18-.03.28-.03.17 0 .32.03.45.09a.91.91 0 0 1 .332.246c.09.104.158.229.204.375.046.144.07.3.07.47v1.978h-.93V51.69a.538.538 0 0 0-.106-.354c-.07-.086-.173-.13-.309-.13a.647.647 0 0 0-.288.067c-.088.042-.174.1-.258.174v2.22h-.93v-3.111h.576c.116 0 .192.052.228.156l.054.18Zm3.374-1.716v2.517h.138a.288.288 0 0 0 .132-.024.33.33 0 0 0 .09-.087l.588-.876a.356.356 0 0 1 .123-.111.357.357 0 0 1 .177-.04h.852l-.804 1.108a.987.987 0 0 1-.27.246.713.713 0 0 1 .126.12c.038.044.074.094.108.15l.876 1.488h-.84a.445.445 0 0 1-.18-.033.297.297 0 0 1-.126-.123L32.7 52.41c-.028-.05-.057-.082-.087-.096a.296.296 0 0 0-.135-.024h-.18v1.377h-.93v-4.491h.93Zm125.259 1.653c.112-.096.233-.173.363-.231.132-.06.289-.09.471-.09.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.3.069.47v1.978h-.93V51.69a.538.538 0 0 0-.105-.354c-.07-.086-.173-.13-.309-.13a.647.647 0 0 0-.288.067c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm3.242.207c.096-.168.206-.3.33-.396a.694.694 0 0 1 .432-.144c.14 0 .254.033.342.099l-.06.684c-.01.044-.027.074-.051.09a.156.156 0 0 1-.093.024 14.879 14.879 0 0 0-.144-.009 1.162 1.162 0 0 0-.087-.01.554.554 0 0 0-.078-.005.478.478 0 0 0-.327.108.86.86 0 0 0-.204.3v1.89h-.93v-3.111h.552c.046 0 .084.004.114.012a.18.18 0 0 1 .078.039.136.136 0 0 1 .048.066.52.52 0 0 1 .03.102l.048.26Zm3.183.702a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.04c.078-.025.147-.054.207-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729c.07.176.105.376.105.6 0 .07-.003.127-.009.17a.27.27 0 0 1-.033.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm2.522 1.389v-2.472l-.204-.042a.435.435 0 0 1-.171-.075c-.042-.034-.063-.084-.063-.15v-.366h.438v-.177c0-.178.028-.34.084-.483.058-.144.14-.267.246-.37.108-.101.239-.18.393-.236a1.53 1.53 0 0 1 .525-.084c.076 0 .146.005.21.015.064.008.131.022.201.042l-.018.453a.168.168 0 0 1-.024.08.177.177 0 0 1-.057.052.346.346 0 0 1-.15.036.906.906 0 0 0-.219.024.354.354 0 0 0-.162.087.38.38 0 0 0-.096.162.81.81 0 0 0-.033.252v.147h.729v.636h-.699v2.469h-.93ZM55.494 60.63a.522.522 0 0 1-.088.144.485.485 0 0 1-.117.105.512.512 0 0 1-.282.084h-.396l1.704-4.473a.48.48 0 0 1 .468-.315h.396l-1.686 4.455Zm6.608-3.075-.966 3.11h-.756a.151.151 0 0 1-.102-.035.242.242 0 0 1-.066-.12l-.444-1.551a4.713 4.713 0 0 1-.06-.207 6.287 6.287 0 0 1-.045-.207c-.014.07-.03.14-.048.21-.016.07-.035.14-.057.21l-.45 1.545c-.03.104-.096.156-.198.156h-.72l-.966-3.111h.744c.066 0 .121.016.165.048.046.03.077.068.093.114l.312 1.395a7.345 7.345 0 0 1 .123.606c.026-.1.053-.2.081-.297l.096-.31.39-1.397a.226.226 0 0 1 .09-.114.258.258 0 0 1 .156-.048h.414c.066 0 .121.016.165.048.046.03.077.068.093.114l.372 1.398c.03.106.06.209.087.309.03.1.057.2.081.303.016-.1.035-.2.057-.3.022-.1.047-.204.075-.312l.33-1.395a.226.226 0 0 1 .09-.114.258.258 0 0 1 .156-.048h.708Zm4.79 0-.966 3.11h-.756a.151.151 0 0 1-.102-.035.242.242 0 0 1-.066-.12l-.444-1.551a4.713 4.713 0 0 1-.06-.207 6.287 6.287 0 0 1-.045-.207c-.014.07-.03.14-.048.21-.016.07-.035.14-.057.21l-.45 1.545c-.03.104-.096.156-.198.156h-.72l-.966-3.111h.744c.066 0 .121.016.165.048.046.03.077.068.093.114l.312 1.395a7.345 7.345 0 0 1 .123.606c.026-.1.053-.2.081-.297l.096-.31.39-1.397a.226.226 0 0 1 .09-.114.258.258 0 0 1 .156-.048h.414c.066 0 .121.016.165.048.046.03.077.068.093.114l.372 1.398c.03.106.06.209.087.309.03.1.057.2.081.303.016-.1.035-.2.057-.3.022-.1.047-.204.075-.312l.33-1.395a.226.226 0 0 1 .09-.114.258.258 0 0 1 .156-.048h.708Zm4.79 0-.966 3.11h-.755a.151.151 0 0 1-.102-.035.242.242 0 0 1-.066-.12l-.445-1.551a4.713 4.713 0 0 1-.06-.207 6.287 6.287 0 0 1-.044-.207c-.014.07-.03.14-.049.21a2.33 2.33 0 0 1-.056.21l-.45 1.545c-.03.104-.096.156-.198.156h-.72l-.966-3.111h.743c.067 0 .121.016.165.048a.22.22 0 0 1 .094.114l.311 1.395a7.345 7.345 0 0 1 .124.606c.025-.1.052-.2.08-.297l.096-.31.39-1.397a.226.226 0 0 1 .09-.114.258.258 0 0 1 .157-.048h.413c.066 0 .121.016.165.048a.22.22 0 0 1 .094.114l.371 1.398.088.309c.03.1.056.2.08.303.016-.1.035-.2.057-.3.023-.1.048-.204.076-.312l.33-1.395a.226.226 0 0 1 .09-.114.258.258 0 0 1 .156-.048h.708Zm-45.604 5.62v4.49h-.93v-4.49h.93Zm1.46 1.38v3.11h-.93v-3.11h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm1.29 1.188a2.26 2.26 0 0 1 .186-.156 1.136 1.136 0 0 1 .441-.198c.086-.02.18-.03.28-.03.17 0 .32.03.45.09a.91.91 0 0 1 .332.246c.09.104.158.229.204.375.046.144.07.3.07.47v1.978h-.93V65.69a.538.538 0 0 0-.106-.354c-.07-.086-.173-.13-.309-.13a.647.647 0 0 0-.288.067c-.088.042-.174.1-.258.174v2.22h-.93v-3.111h.576c.116 0 .192.052.228.156l.054.18Zm3.374-1.716v2.517h.138a.288.288 0 0 0 .132-.024.33.33 0 0 0 .09-.087l.588-.876a.356.356 0 0 1 .123-.111.357.357 0 0 1 .177-.04h.852l-.804 1.108a.987.987 0 0 1-.27.246.713.713 0 0 1 .126.12c.038.044.074.094.108.15l.876 1.488h-.84a.445.445 0 0 1-.18-.033.297.297 0 0 1-.126-.123l-.588-1.1c-.028-.05-.057-.082-.087-.096a.296.296 0 0 0-.135-.024h-.18v1.377h-.93v-4.491h.93Zm4.44 1.86c.096-.168.206-.3.33-.396a.694.694 0 0 1 .432-.144c.14 0 .254.033.342.099l-.06.684c-.01.044-.027.074-.05.09a.156.156 0 0 1-.094.024 14.879 14.879 0 0 0-.144-.009 1.162 1.162 0 0 0-.087-.01.554.554 0 0 0-.078-.005.478.478 0 0 0-.327.108.86.86 0 0 0-.204.3v1.89h-.93v-3.111h.552c.046 0 .084.004.114.012a.18.18 0 0 1 .078.039.136.136 0 0 1 .048.066.52.52 0 0 1 .03.102l.048.26Zm3.184.702a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.04c.078-.025.147-.054.207-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.122-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729 1.613 1.613 0 0 1 .095.77.27.27 0 0 1-.032.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm3.28-3.102v4.49h-.93v-4.49h.93Zm-5.864 8.86c.096-.168.206-.3.33-.396a.694.694 0 0 1 .431-.144c.14 0 .255.033.343.099l-.06.684c-.01.044-.028.074-.052.09a.156.156 0 0 1-.092.024 14.879 14.879 0 0 0-.144-.009 1.162 1.162 0 0 0-.087-.01.554.554 0 0 0-.079-.005.478.478 0 0 0-.327.108.86.86 0 0 0-.203.3v1.89h-.93v-3.111h.551c.047 0 .085.004.115.012a.18.18 0 0 1 .078.039.136.136 0 0 1 .047.066.52.52 0 0 1 .03.102l.048.26Zm3.183.702a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.04c.078-.025.147-.054.207-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.122-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729 1.613 1.613 0 0 1 .095.77.27.27 0 0 1-.032.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015H38.18Zm3.28-3.102v4.49h-.93v-4.49h.93Zm.568 2.694h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.67Zm6.062 7.06c.112-.096.233-.173.363-.231.132-.06.29-.09.471-.09.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.07.3.07.47v1.978h-.93V79.69a.538.538 0 0 0-.106-.354c-.07-.086-.173-.13-.309-.13a.647.647 0 0 0-.288.067c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm3.242.207c.096-.168.206-.3.33-.396a.694.694 0 0 1 .432-.144c.14 0 .254.033.342.099l-.06.684c-.01.044-.027.074-.051.09a.156.156 0 0 1-.093.024 14.879 14.879 0 0 0-.144-.009 1.162 1.162 0 0 0-.087-.01.554.554 0 0 0-.078-.005.478.478 0 0 0-.327.108.86.86 0 0 0-.204.3v1.89h-.93v-3.111h.552c.046 0 .084.004.114.012a.18.18 0 0 1 .078.039.136.136 0 0 1 .048.066.52.52 0 0 1 .03.102l.048.26Zm3.183.702a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.11.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .28-.04c.077-.025.146-.054.206-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.5-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .73.729c.07.176.104.376.104.6 0 .07-.003.127-.009.17a.27.27 0 0 1-.033.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm2.522 1.389v-2.472l-.204-.042a.435.435 0 0 1-.171-.075c-.042-.034-.063-.084-.063-.15v-.366h.438v-.177c0-.178.028-.34.084-.483.058-.144.14-.267.246-.37.108-.101.239-.18.393-.236a1.53 1.53 0 0 1 .525-.084c.076 0 .146.005.21.015.064.008.131.022.201.042l-.018.453a.168.168 0 0 1-.024.08.177.177 0 0 1-.057.052.346.346 0 0 1-.15.036.906.906 0 0 0-.219.024.354.354 0 0 0-.162.087.38.38 0 0 0-.096.162.81.81 0 0 0-.033.252v.147h.729v.636h-.699v2.469h-.93Zm-7.777 4.162c.112-.096.233-.173.363-.231.132-.06.29-.09.471-.09.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.07.3.07.47v1.978h-.93V86.69a.538.538 0 0 0-.106-.354c-.07-.086-.173-.13-.309-.13a.647.647 0 0 0-.288.067c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm3.242.207c.096-.168.206-.3.33-.396a.694.694 0 0 1 .432-.144c.14 0 .254.033.342.099l-.06.684c-.01.044-.027.074-.051.09a.156.156 0 0 1-.093.024 14.879 14.879 0 0 0-.144-.009 1.162 1.162 0 0 0-.087-.01.554.554 0 0 0-.078-.005.478.478 0 0 0-.327.108.86.86 0 0 0-.204.3v1.89h-.93v-3.111h.552c.046 0 .084.004.114.012a.18.18 0 0 1 .078.039.136.136 0 0 1 .048.066.52.52 0 0 1 .03.102l.048.26Zm3.183.702a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.11.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .28-.04c.077-.025.146-.054.206-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.5-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .73.729c.07.176.104.376.104.6 0 .07-.003.127-.009.17a.27.27 0 0 1-.033.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm2.522 1.389v-2.472l-.204-.042a.435.435 0 0 1-.171-.075c-.042-.034-.063-.084-.063-.15v-.366h.438v-.177c0-.178.028-.34.084-.483.058-.144.14-.267.246-.37.108-.101.239-.18.393-.236a1.53 1.53 0 0 1 .525-.084c.076 0 .146.005.21.015.064.008.131.022.201.042l-.018.453a.168.168 0 0 1-.024.08.177.177 0 0 1-.057.052.346.346 0 0 1-.15.036.906.906 0 0 0-.219.024.354.354 0 0 0-.162.087.38.38 0 0 0-.096.162.81.81 0 0 0-.033.252v.147h.729v.636h-.699v2.469h-.93Zm-18.432 4.369c.096-.168.206-.3.33-.396a.694.694 0 0 1 .432-.144c.14 0 .254.033.342.099l-.06.684c-.01.044-.027.074-.05.09a.156.156 0 0 1-.094.024 14.879 14.879 0 0 0-.144-.009 1.162 1.162 0 0 0-.087-.01.554.554 0 0 0-.078-.005.478.478 0 0 0-.327.108.86.86 0 0 0-.204.3v1.89h-.93v-3.111h.552c.046 0 .084.004.114.012a.18.18 0 0 1 .078.039.136.136 0 0 1 .048.066.52.52 0 0 1 .03.102l.048.26Zm3.184.702a.782.782 0 0 0-.03-.216.48.48 0 0 0-.094-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.413.153c-.1.1-.166.245-.198.435h1.157Zm-1.17.54c.03.26.108.449.236.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .28-.04c.078-.025.147-.054.206-.086l.169-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.313.27a1.667 1.667 0 0 1-.692.24 2.44 2.44 0 0 1-.334.024c-.218 0-.422-.035-.614-.105a1.446 1.446 0 0 1-.502-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.135-.14.295-.25.483-.332a1.61 1.61 0 0 1 .643-.123c.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729 1.613 1.613 0 0 1 .095.77.27.27 0 0 1-.033.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015H39.45Zm3.279-3.102v4.49h-.93v-4.49h.93Zm.568 2.694h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.67Zm-6.773 7.06c.111-.096.233-.173.362-.231.133-.06.29-.09.471-.09.17 0 .32.03.45.09a.91.91 0 0 1 .334.246c.09.104.157.229.203.375.047.144.07.301.07.471v1.977h-.93v-1.977a.538.538 0 0 0-.105-.354c-.07-.086-.173-.129-.31-.129a.647.647 0 0 0-.288.066 1.17 1.17 0 0 0-.258.174v2.22h-.93v-4.491h.93v1.653Zm3.443 2.886c-.148 0-.279-.021-.393-.063a.822.822 0 0 1-.285-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.123-.045c-.034-.032-.05-.078-.05-.138v-.363l.494-.096.183-.76c.024-.095.092-.143.204-.143h.486v.909h.771v.636h-.77v1.545c0 .072.016.132.05.18a.183.183 0 0 0 .153.069.326.326 0 0 0 .084-.009.466.466 0 0 0 .06-.024.534.534 0 0 1 .048-.024.12.12 0 0 1 .054-.012c.028 0 .05.007.066.021a.203.203 0 0 1 .054.06l.282.441c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm2.183 0c-.148 0-.279-.021-.393-.063a.822.822 0 0 1-.285-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.123-.045c-.034-.032-.05-.078-.05-.138v-.363l.494-.096.183-.76c.024-.095.092-.143.204-.143h.486v.909h.771v.636h-.77v1.545c0 .072.016.132.05.18a.183.183 0 0 0 .153.069.326.326 0 0 0 .084-.009.466.466 0 0 0 .06-.024.534.534 0 0 1 .048-.024.12.12 0 0 1 .054-.012c.028 0 .05.007.066.021a.203.203 0 0 1 .054.06l.282.441c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm2-.894c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.34-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.501.058.196.087.419.087.669 0 .234-.033.45-.1.648-.063.198-.154.37-.272.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.069 1.108 1.108 0 0 1-.3-.186v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm4.435.297a.234.234 0 0 1-.078.081.193.193 0 0 1-.102.024.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.081.086.026.174.055.264.087.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.885.885 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm-.437 6.592c.112-.096.233-.173.363-.231.132-.06.29-.09.471-.09.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.07.301.07.471v1.977h-.93v-1.977a.538.538 0 0 0-.106-.354c-.07-.086-.173-.129-.309-.129a.647.647 0 0 0-.288.066c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm3.242.207c.096-.168.206-.3.33-.396a.694.694 0 0 1 .432-.144c.14 0 .254.033.342.099l-.06.684c-.01.044-.027.074-.051.09a.156.156 0 0 1-.093.024 14.879 14.879 0 0 0-.144-.009 1.162 1.162 0 0 0-.087-.009.554.554 0 0 0-.078-.006.478.478 0 0 0-.327.108.86.86 0 0 0-.204.3v1.89h-.93v-3.111h.552c.046 0 .084.004.114.012a.18.18 0 0 1 .078.039.136.136 0 0 1 .048.066.52.52 0 0 1 .03.102l.048.261Zm3.183.702a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.11.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .28-.039c.077-.026.146-.055.206-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.5-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.489.134-.14.295-.251.483-.333.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .73.729c.07.176.104.376.104.6 0 .07-.003.127-.009.171a.27.27 0 0 1-.033.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm2.522 1.389v-2.472l-.204-.042a.435.435 0 0 1-.171-.075c-.042-.034-.063-.084-.063-.15v-.366h.438v-.177c0-.178.028-.339.084-.483.058-.144.14-.267.246-.369.108-.102.239-.181.393-.237a1.53 1.53 0 0 1 .525-.084c.076 0 .146.005.21.015.064.008.131.022.201.042l-.018.453a.168.168 0 0 1-.024.081.177.177 0 0 1-.057.051.346.346 0 0 1-.15.036.906.906 0 0 0-.219.024.354.354 0 0 0-.162.087.38.38 0 0 0-.096.162.81.81 0 0 0-.033.252v.147h.729v.636h-.699v2.469h-.93Zm-33.15 4.162c.112-.096.233-.173.363-.231.132-.06.289-.09.47-.09.17 0 .32.03.45.09a.91.91 0 0 1 .334.246c.09.104.158.229.204.375.046.144.069.301.069.471v1.977h-.93v-1.977a.538.538 0 0 0-.105-.354c-.07-.086-.173-.129-.31-.129a.647.647 0 0 0-.287.066c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm3.241.207c.096-.168.207-.3.33-.396a.694.694 0 0 1 .432-.144c.14 0 .255.033.343.099l-.06.684c-.01.044-.027.074-.052.09a.156.156 0 0 1-.093.024 14.879 14.879 0 0 0-.144-.009 1.162 1.162 0 0 0-.087-.009.554.554 0 0 0-.078-.006.478.478 0 0 0-.326.108.86.86 0 0 0-.204.3v1.89h-.93v-3.111h.552c.046 0 .084.004.114.012a.18.18 0 0 1 .078.039.136.136 0 0 1 .047.066.52.52 0 0 1 .03.102l.048.261Zm3.184.702a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.039c.078-.026.147-.055.207-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.122-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.489.134-.14.295-.251.483-.333.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729 1.613 1.613 0 0 1 .095.771.27.27 0 0 1-.032.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm2.522 1.389v-2.472l-.204-.042a.435.435 0 0 1-.171-.075c-.042-.034-.063-.084-.063-.15v-.366h.438v-.177c0-.178.028-.339.084-.483.058-.144.14-.267.246-.369.108-.102.239-.181.393-.237a1.53 1.53 0 0 1 .525-.084c.076 0 .146.005.21.015.064.008.13.022.2.042l-.017.453a.168.168 0 0 1-.024.081.177.177 0 0 1-.057.051.346.346 0 0 1-.15.036.906.906 0 0 0-.22.024.354.354 0 0 0-.161.087.38.38 0 0 0-.096.162.81.81 0 0 0-.033.252v.147h.729v.636h-.7v2.469h-.93Zm8.21 4.369c.096-.168.206-.3.33-.396a.694.694 0 0 1 .432-.144c.14 0 .254.033.342.099l-.06.684c-.01.044-.027.074-.051.09a.156.156 0 0 1-.093.024 14.879 14.879 0 0 0-.144-.009 1.162 1.162 0 0 0-.087-.009.554.554 0 0 0-.078-.006.478.478 0 0 0-.327.108.86.86 0 0 0-.204.3v1.89h-.93v-3.111h.552c.046 0 .084.004.114.012a.18.18 0 0 1 .078.039.136.136 0 0 1 .048.066.52.52 0 0 1 .03.102l.048.261Zm3.183.702a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.11.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .28-.039c.077-.026.146-.055.206-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.5-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.489.134-.14.295-.251.483-.333.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .73.729c.07.176.104.376.104.6 0 .07-.003.127-.009.171a.27.27 0 0 1-.033.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm3.28-3.102v4.491h-.93v-4.491h.93Zm.568 2.694h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.669Zm-5.861 7.267c.096-.168.206-.3.33-.396a.694.694 0 0 1 .432-.144c.14 0 .254.033.342.099l-.06.684c-.01.044-.027.074-.051.09a.156.156 0 0 1-.093.024 14.879 14.879 0 0 0-.144-.009 1.162 1.162 0 0 0-.087-.009.554.554 0 0 0-.078-.006.478.478 0 0 0-.327.108.86.86 0 0 0-.204.3v1.89h-.93v-3.111h.552c.046 0 .084.004.114.012a.18.18 0 0 1 .078.039.136.136 0 0 1 .048.066.52.52 0 0 1 .03.102l.048.261Zm3.183.702a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.11.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .28-.039c.077-.026.146-.055.206-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.5-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.489.134-.14.295-.251.483-.333.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .73.729c.07.176.104.376.104.6 0 .07-.003.127-.009.171a.27.27 0 0 1-.033.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm3.28-3.102v4.491h-.93v-4.491h.93Zm.568 2.694h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.669Zm2.256 7.06c.112-.096.233-.173.363-.231.132-.06.29-.09.471-.09.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.07.301.07.471v1.977h-.93v-1.977a.538.538 0 0 0-.106-.354c-.07-.086-.173-.129-.309-.129a.647.647 0 0 0-.288.066c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm3.242.207c.096-.168.206-.3.33-.396a.694.694 0 0 1 .432-.144c.14 0 .254.033.342.099l-.06.684c-.01.044-.027.074-.05.09a.156.156 0 0 1-.094.024 14.879 14.879 0 0 0-.144-.009 1.162 1.162 0 0 0-.087-.009.554.554 0 0 0-.078-.006.478.478 0 0 0-.327.108.86.86 0 0 0-.204.3v1.89h-.93v-3.111h.552c.046 0 .084.004.114.012a.18.18 0 0 1 .078.039.136.136 0 0 1 .048.066.52.52 0 0 1 .03.102l.048.261Zm3.184.702a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.039c.078-.026.147-.055.207-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.122-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.489.134-.14.295-.251.483-.333.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729 1.613 1.613 0 0 1 .095.771.27.27 0 0 1-.032.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm2.521 1.389v-2.472l-.204-.042a.435.435 0 0 1-.17-.075c-.043-.034-.064-.084-.064-.15v-.366h.438v-.177c0-.178.028-.339.084-.483.058-.144.14-.267.246-.369.108-.102.24-.181.393-.237a1.53 1.53 0 0 1 .525-.084c.076 0 .146.005.21.015.064.008.131.022.201.042l-.018.453a.168.168 0 0 1-.024.081.177.177 0 0 1-.057.051.346.346 0 0 1-.15.036.906.906 0 0 0-.219.024.354.354 0 0 0-.162.087.38.38 0 0 0-.096.162.81.81 0 0 0-.033.252v.147h.73v.636h-.7v2.469h-.93Zm-7.777 4.162c.112-.096.233-.173.363-.231.132-.06.29-.09.471-.09.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.07.301.07.471v1.977h-.93v-1.977a.538.538 0 0 0-.106-.354c-.07-.086-.173-.129-.309-.129a.647.647 0 0 0-.288.066c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm3.242.207c.096-.168.206-.3.33-.396a.694.694 0 0 1 .432-.144c.14 0 .254.033.342.099l-.06.684c-.01.044-.027.074-.05.09a.156.156 0 0 1-.094.024 14.879 14.879 0 0 0-.144-.009 1.162 1.162 0 0 0-.087-.009.554.554 0 0 0-.078-.006.478.478 0 0 0-.327.108.86.86 0 0 0-.204.3v1.89h-.93v-3.111h.552c.046 0 .084.004.114.012a.18.18 0 0 1 .078.039.136.136 0 0 1 .048.066.52.52 0 0 1 .03.102l.048.261Zm3.184.702a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.039c.078-.026.147-.055.207-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.122-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.489.134-.14.295-.251.483-.333.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729 1.613 1.613 0 0 1 .095.771.27.27 0 0 1-.032.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm2.521 1.389v-2.472l-.204-.042a.435.435 0 0 1-.17-.075c-.043-.034-.064-.084-.064-.15v-.366h.438v-.177c0-.178.028-.339.084-.483.058-.144.14-.267.246-.369.108-.102.24-.181.393-.237a1.53 1.53 0 0 1 .525-.084c.076 0 .146.005.21.015.064.008.131.022.201.042l-.018.453a.168.168 0 0 1-.024.081.177.177 0 0 1-.057.051.346.346 0 0 1-.15.036.906.906 0 0 0-.219.024.354.354 0 0 0-.162.087.38.38 0 0 0-.096.162.81.81 0 0 0-.033.252v.147h.73v.636h-.7v2.469h-.93Z\" fill=\"#FF58E4\"/><path d=\"M112.007 88.667v-3.111h.576c.116 0 .192.052.228.156l.051.168c.052-.054.106-.103.162-.147a.957.957 0 0 1 .39-.195.977.977 0 0 1 .249-.03c.188 0 .343.049.465.147a.89.89 0 0 1 .282.387.936.936 0 0 1 .432-.411c.088-.042.18-.073.276-.093a1.452 1.452 0 0 1 .765.05.868.868 0 0 1 .345.232c.094.1.165.224.213.372.048.146.072.312.072.498v1.977h-.93V86.69c0-.322-.138-.483-.414-.483a.427.427 0 0 0-.315.126c-.082.082-.123.2-.123.357v1.977h-.93V86.69c0-.178-.035-.303-.105-.375-.07-.072-.173-.108-.309-.108a.53.53 0 0 0-.24.057.879.879 0 0 0-.21.153v2.25h-.93Zm5.703-.036a.522.522 0 0 1-.087.144.485.485 0 0 1-.117.105.512.512 0 0 1-.282.084h-.396l1.704-4.473a.48.48 0 0 1 .468-.315h.396l-1.686 4.455Zm3.373-1.23a3.088 3.088 0 0 0-.459.048c-.12.024-.215.054-.285.09a.357.357 0 0 0-.147.123.3.3 0 0 0-.039.15c0 .106.029.18.087.225a.432.432 0 0 0 .255.063c.12 0 .225-.021.315-.063a.96.96 0 0 0 .273-.204V87.4Zm-1.674-1.413c.188-.166.396-.29.624-.37.23-.081.476-.122.738-.122.188 0 .357.03.507.093a1.088 1.088 0 0 1 .627.642c.056.15.084.314.084.492v1.944h-.426a.446.446 0 0 1-.201-.036c-.044-.024-.081-.074-.111-.15l-.066-.171a2.998 2.998 0 0 1-.225.174c-.072.05-.147.093-.225.129a1.41 1.41 0 0 1-.534.102c-.142 0-.271-.018-.387-.054a.73.73 0 0 1-.483-.432.98.98 0 0 1-.066-.372c0-.112.028-.225.084-.34a.826.826 0 0 1 .291-.314c.138-.096.324-.176.558-.24.234-.064.529-.1.885-.108v-.132c0-.182-.038-.313-.114-.393-.074-.082-.18-.123-.318-.123a.848.848 0 0 0-.459.117c-.054.03-.107.057-.159.08a.44.44 0 0 1-.186.037.268.268 0 0 1-.162-.048.417.417 0 0 1-.108-.114l-.168-.291Zm3.984 1.833c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.5.058.197.087.42.087.67 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.07 1.108 1.108 0 0 1-.3-.185v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388 1.88a.62.62 0 0 0 .228.163.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.88c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.5.058.197.087.42.087.67 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.07 1.108 1.108 0 0 1-.3-.185v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.389-1.764v4.49h-.93v-4.49h.93Zm2.443 2.562a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.04c.078-.025.147-.054.207-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729c.07.176.105.376.105.6 0 .07-.003.127-.009.17a.27.27 0 0 1-.033.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm-31.983 5.959a.234.234 0 0 1-.078.08.193.193 0 0 1-.102.025.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.22-.03.463.463 0 0 0-.272.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.23.08.087.027.175.056.265.088.09.032.178.07.264.114a.93.93 0 0 1 .23.159.675.675 0 0 1 .163.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.31-.081 1.786 1.786 0 0 1-.272-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.14.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .184-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .62.114 1.356 1.356 0 0 1 .454.288l-.21.327Zm1.526-.681v3.11h-.93v-3.11h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.745 1.224a.536.536 0 0 1-.033.186.422.422 0 0 1-.087.147l-1.299 1.716h1.389v.69h-2.46v-.378a.54.54 0 0 1 .12-.306l1.311-1.737h-1.347v-.69h2.406v.372Zm2.245.81a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.04c.078-.025.147-.054.207-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729c.07.176.105.376.105.6 0 .07-.003.127-.009.17a.27.27 0 0 1-.033.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm4.326-1.041a.234.234 0 0 1-.078.08.193.193 0 0 1-.102.025.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.08.086.027.174.056.264.088.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm.635.633h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.67Zm4.044-1.473v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm3.282 3.699v.672h-2.49v-.672h.84V92.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm2.293-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm2.1 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm3.307 1.698h-.894a.26.26 0 0 1-.162-.048.375.375 0 0 1-.096-.114l-.555-.954a.681.681 0 0 1-.081.18l-.456.774a.646.646 0 0 1-.099.11.212.212 0 0 1-.147.052h-.828l1.044-1.608-1.002-1.503h.894c.066 0 .114.009.144.027.032.016.06.044.084.084l.555.92a1.456 1.456 0 0 1 .105-.213l.396-.692a.318.318 0 0 1 .087-.096.217.217 0 0 1 .117-.03h.852l-1.002 1.46 1.044 1.65Zm3.005-.672v.672h-2.49v-.672h.84V92.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm2.293-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm2.1 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm-41.507 5.587v3.111h-.576c-.115 0-.192-.052-.227-.156l-.054-.18c-.06.058-.123.111-.187.159a1.242 1.242 0 0 1-.206.12 1.175 1.175 0 0 1-.238.075c-.084.02-.175.03-.276.03-.17 0-.32-.029-.453-.087a.948.948 0 0 1-.33-.249 1.08 1.08 0 0 1-.203-.375 1.551 1.551 0 0 1-.07-.474v-1.974h.93v1.974c0 .154.035.273.105.357.07.084.174.126.31.126a.653.653 0 0 0 .285-.063 1.18 1.18 0 0 0 .26-.177v-2.217h.93Zm1.442.273c.112-.096.233-.173.363-.231.132-.06.29-.09.471-.09.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.301.069.471v1.977h-.93v-1.977a.538.538 0 0 0-.105-.354c-.07-.086-.173-.129-.309-.129a.647.647 0 0 0-.288.066c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm2.246 2.367c0-.072.013-.139.039-.201a.542.542 0 0 1 .111-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.039-.204Zm3.728-1.902a.514.514 0 0 1-.081.081.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.033 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.381c0 .298.057.527.171.687.116.16.275.24.477.24a.676.676 0 0 0 .255-.039.866.866 0 0 0 .162-.09l.12-.093a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.081l.27.333c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.34c.194-.081.418-.122.672-.122.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.893-.786c.236 0 .451.037.645.11a1.4 1.4 0 0 1 .822.823c.078.196.117.417.117.663 0 .248-.039.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.321 1.797 1.797 0 0 1-.645.111 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663a1.44 1.44 0 0 1 .327-.504c.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.214 0 .371-.075.471-.225.102-.152.153-.382.153-.69 0-.308-.051-.537-.153-.687-.1-.15-.257-.225-.471-.225-.22 0-.381.075-.483.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.102.15.263.225.483.225Zm1.932.642v-3.111h.576c.116 0 .192.052.228.156l.051.168c.052-.054.106-.103.162-.147a.957.957 0 0 1 .39-.195.977.977 0 0 1 .249-.03c.188 0 .343.049.465.147a.89.89 0 0 1 .282.387.932.932 0 0 1 .432-.411c.088-.042.18-.073.276-.093a1.452 1.452 0 0 1 .765.05.868.868 0 0 1 .345.232c.094.1.165.224.213.372.048.146.072.312.072.498v1.977h-.93v-1.977c0-.322-.138-.483-.414-.483a.427.427 0 0 0-.315.126c-.082.082-.123.201-.123.357v1.977h-.93v-1.977c0-.178-.035-.303-.105-.375-.07-.072-.173-.108-.309-.108a.53.53 0 0 0-.24.057.879.879 0 0 0-.21.153v2.25h-.93Zm5.704-.036a.522.522 0 0 1-.087.144.485.485 0 0 1-.117.105.512.512 0 0 1-.282.084h-.396l1.704-4.473a.48.48 0 0 1 .468-.315h.396l-1.686 4.455Zm3.372-1.23a3.088 3.088 0 0 0-.459.048c-.12.024-.215.054-.285.09a.357.357 0 0 0-.147.123.3.3 0 0 0-.039.15c0 .106.029.181.087.225a.432.432 0 0 0 .255.063c.12 0 .225-.021.315-.063a.96.96 0 0 0 .273-.204v-.432Zm-1.674-1.413c.188-.166.396-.29.624-.37.23-.081.476-.122.738-.122.188 0 .357.03.507.093a1.09 1.09 0 0 1 .627.642c.056.15.084.314.084.492v1.944h-.426a.446.446 0 0 1-.201-.036c-.044-.024-.081-.074-.111-.15l-.066-.171a2.998 2.998 0 0 1-.225.174c-.072.05-.147.093-.225.129a1.41 1.41 0 0 1-.534.102c-.142 0-.271-.018-.387-.054a.73.73 0 0 1-.483-.432.98.98 0 0 1-.066-.372c0-.112.028-.225.084-.339a.826.826 0 0 1 .291-.315c.138-.096.324-.176.558-.24.234-.064.529-.1.885-.108v-.132c0-.182-.038-.313-.114-.393-.074-.082-.18-.123-.318-.123a.848.848 0 0 0-.459.117c-.054.03-.107.057-.159.081a.44.44 0 0 1-.186.036.268.268 0 0 1-.162-.048.417.417 0 0 1-.108-.114l-.168-.291Zm3.985 1.833c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.501.058.196.087.419.087.669 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.069 1.108 1.108 0 0 1-.3-.186v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388 1.881c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.501.058.196.087.419.087.669 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.069 1.108 1.108 0 0 1-.3-.186v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388-1.764v4.491h-.93v-4.491h.93Zm2.444 2.562a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.039c.078-.026.147-.055.207-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729c.07.176.105.376.105.6 0 .07-.003.127-.009.171a.27.27 0 0 1-.033.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm2.346-.81h1.62v.75h-1.62v-.75Zm3.078-.912v3.111h-.93v-3.111h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.719 1.59a.514.514 0 0 1-.081.081.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.033 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.381c0 .298.057.527.171.687.116.16.275.24.477.24a.676.676 0 0 0 .255-.039.866.866 0 0 0 .162-.09l.12-.093a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.081l.27.333c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.34c.194-.081.418-.122.672-.122.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.893-.786c.236 0 .451.037.645.11a1.4 1.4 0 0 1 .822.823c.078.196.117.417.117.663 0 .248-.039.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.321 1.797 1.797 0 0 1-.645.111 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663a1.44 1.44 0 0 1 .327-.504c.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.214 0 .371-.075.471-.225.102-.152.153-.382.153-.69 0-.308-.051-.537-.153-.687-.1-.15-.257-.225-.471-.225-.22 0-.381.075-.483.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.102.15.263.225.483.225Zm-40.048 3.271v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm2.757 1.632a.536.536 0 0 1-.033.186.422.422 0 0 1-.087.147l-1.299 1.716h1.389v.69h-2.46v-.378a.54.54 0 0 1 .12-.306l1.311-1.737h-1.347v-.69h2.406v.372Zm1.313-.372v3.111h-.93v-3.111h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.745 1.224a.536.536 0 0 1-.033.186.422.422 0 0 1-.087.147l-1.299 1.716h1.389v.69h-2.46v-.378a.54.54 0 0 1 .12-.306l1.311-1.737h-1.347v-.69h2.406v.372Zm1.313-.372v3.111h-.93v-3.111h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.41 1.533a.234.234 0 0 1-.078.081.193.193 0 0 1-.102.024.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.081.086.026.174.055.264.087.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm.635.633h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.669Zm4.044-1.473v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm3.282 3.699v.672h-2.49v-.672h.84v-2.205a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.039.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.143h.768v3.702h.72Zm2.292-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm2.101 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm3.306 1.698h-.894a.26.26 0 0 1-.162-.048.375.375 0 0 1-.096-.114l-.555-.954a.681.681 0 0 1-.081.18l-.456.774a.646.646 0 0 1-.099.111.212.212 0 0 1-.147.051h-.828l1.044-1.608-1.002-1.503h.894c.066 0 .114.009.144.027.032.016.06.044.084.084l.555.921a1.456 1.456 0 0 1 .105-.213l.396-.693a.318.318 0 0 1 .087-.096.217.217 0 0 1 .117-.03h.852l-1.002 1.461 1.044 1.65Zm3.006-.672v.672h-2.49v-.672h.84v-2.205a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.039.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.143h.768v3.702h.72Zm2.292-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm2.101 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm3.168 1.026v.672h-2.49v-.672h.84v-2.205a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.039.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.143h.768v3.702h.72Zm1.267-3.699v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm-43.574 8.533c.112-.096.233-.173.363-.231.132-.06.289-.09.471-.09.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.301.069.471v1.977h-.93v-1.977a.538.538 0 0 0-.105-.354c-.07-.086-.173-.129-.309-.129a.647.647 0 0 0-.288.066c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm2.246 2.367c0-.072.013-.139.039-.201a.542.542 0 0 1 .111-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.039-.204Zm3.727-1.902a.514.514 0 0 1-.081.081.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.033 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.381c0 .298.057.527.171.687.116.16.275.24.477.24a.676.676 0 0 0 .255-.039.866.866 0 0 0 .162-.09l.12-.093a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.081l.27.333c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.339c.194-.082.418-.123.672-.123.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.894-.786c.236 0 .451.037.645.111a1.4 1.4 0 0 1 .822.822c.078.196.117.417.117.663 0 .248-.039.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.321 1.797 1.797 0 0 1-.645.111 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.214 0 .371-.075.471-.225.102-.152.153-.382.153-.69 0-.308-.051-.537-.153-.687-.1-.15-.257-.225-.471-.225-.22 0-.381.075-.483.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.102.15.263.225.483.225Zm1.932.642v-3.111h.576c.116 0 .192.052.228.156l.051.168c.052-.054.106-.103.162-.147a.957.957 0 0 1 .39-.195.977.977 0 0 1 .249-.03c.188 0 .343.049.465.147a.89.89 0 0 1 .282.387.936.936 0 0 1 .432-.411c.088-.042.18-.073.276-.093a1.452 1.452 0 0 1 .765.051.868.868 0 0 1 .345.231c.094.1.165.224.213.372.048.146.072.312.072.498v1.977h-.93v-1.977c0-.322-.138-.483-.414-.483a.427.427 0 0 0-.315.126c-.082.082-.123.201-.123.357v1.977h-.93v-1.977c0-.178-.035-.303-.105-.375-.07-.072-.173-.108-.309-.108a.53.53 0 0 0-.24.057.879.879 0 0 0-.21.153v2.25h-.93Zm5.703-.036a.522.522 0 0 1-.087.144.485.485 0 0 1-.117.105.512.512 0 0 1-.282.084h-.396l1.704-4.473a.48.48 0 0 1 .468-.315h.396l-1.686 4.455Zm3.373-1.23a3.088 3.088 0 0 0-.459.048c-.12.024-.215.054-.285.09a.357.357 0 0 0-.147.123.3.3 0 0 0-.039.15c0 .106.029.181.087.225a.432.432 0 0 0 .255.063c.12 0 .225-.021.315-.063a.96.96 0 0 0 .273-.204v-.432Zm-1.674-1.413c.188-.166.396-.289.624-.369.23-.082.476-.123.738-.123.188 0 .357.031.507.093a1.088 1.088 0 0 1 .627.642c.056.15.084.314.084.492v1.944h-.426a.446.446 0 0 1-.201-.036c-.044-.024-.081-.074-.111-.15l-.066-.171a2.998 2.998 0 0 1-.225.174c-.072.05-.147.093-.225.129a1.41 1.41 0 0 1-.534.102c-.142 0-.271-.018-.387-.054a.73.73 0 0 1-.483-.432.98.98 0 0 1-.066-.372c0-.112.028-.225.084-.339a.826.826 0 0 1 .291-.315c.138-.096.324-.176.558-.24.234-.064.529-.1.885-.108v-.132c0-.182-.038-.313-.114-.393-.074-.082-.18-.123-.318-.123a.848.848 0 0 0-.459.117c-.054.03-.107.057-.159.081a.44.44 0 0 1-.186.036.268.268 0 0 1-.162-.048.417.417 0 0 1-.108-.114l-.168-.291Zm3.984 1.833c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.501.058.196.087.419.087.669 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.069 1.108 1.108 0 0 1-.3-.186v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.389 1.881c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.501.058.196.087.419.087.669 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.069 1.108 1.108 0 0 1-.3-.186v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388-1.764v4.491h-.93v-4.491h.93Zm2.443 2.562a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.039c.078-.026.147-.055.207-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.489.134-.14.295-.251.483-.333.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729c.07.176.105.376.105.6 0 .07-.003.127-.009.171a.27.27 0 0 1-.033.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm2.347-.81h1.62v.75h-1.62v-.75Zm3.078-.912v3.111h-.93v-3.111h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.718 1.59a.514.514 0 0 1-.081.081.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.033 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.381c0 .298.057.527.171.687.116.16.275.24.477.24a.676.676 0 0 0 .255-.039.866.866 0 0 0 .162-.09l.12-.093a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.081l.27.333c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.339c.194-.082.418-.123.672-.123.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.894-.786c.236 0 .451.037.645.111a1.4 1.4 0 0 1 .822.822c.078.196.117.417.117.663 0 .248-.039.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.321 1.797 1.797 0 0 1-.645.111 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.214 0 .371-.075.471-.225.102-.152.153-.382.153-.69 0-.308-.051-.537-.153-.687-.1-.15-.257-.225-.471-.225-.22 0-.381.075-.483.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.102.15.263.225.483.225Zm-34.431 5.713a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.039c.078-.026.147-.055.207-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.489.134-.14.295-.251.483-.333.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729c.07.176.105.376.105.6 0 .07-.003.127-.009.171a.27.27 0 0 1-.033.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm4.327-1.041a.234.234 0 0 1-.078.081.193.193 0 0 1-.102.024.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.081.086.026.174.055.264.087.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm.635.633h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.669Zm4.044-1.473v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm3.282 3.699v.672h-2.49v-.672h.84v-2.205a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.039.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.143h.768v3.702h.72Zm2.292-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm2.101 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm3.306 1.698h-.894a.26.26 0 0 1-.162-.048.375.375 0 0 1-.096-.114l-.555-.954a.681.681 0 0 1-.081.18l-.456.774a.646.646 0 0 1-.099.111.212.212 0 0 1-.147.051h-.828l1.044-1.608-1.002-1.503h.894c.066 0 .114.009.144.027.032.016.06.044.084.084l.555.921a1.456 1.456 0 0 1 .105-.213l.396-.693a.318.318 0 0 1 .087-.096.217.217 0 0 1 .117-.03h.852l-1.002 1.461 1.044 1.65Zm3.006-.672v.672h-2.49v-.672h.84v-2.205a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.039.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.143h.768v3.702h.72Zm2.293-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Z\" fill=\"#61D8F2\"/><path d=\"M36.738 51.036c.096-.168.206-.3.33-.396a.694.694 0 0 1 .432-.144c.14 0 .254.033.342.099l-.06.684c-.01.044-.027.074-.05.09a.156.156 0 0 1-.094.024 14.879 14.879 0 0 0-.144-.009 1.162 1.162 0 0 0-.087-.01.554.554 0 0 0-.078-.005.478.478 0 0 0-.327.108.86.86 0 0 0-.204.3v1.89h-.93v-3.111h.552c.046 0 .084.004.114.012a.18.18 0 0 1 .078.039.136.136 0 0 1 .048.066.52.52 0 0 1 .03.102l.048.26Zm3.184.702a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.04c.078-.025.147-.054.207-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.122-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729 1.613 1.613 0 0 1 .095.77.27.27 0 0 1-.032.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm3.28-3.102v4.49h-.93v-4.49h.93Zm.568 2.694h2.73v.666H42.6v-.666Zm0-1.101h2.73v.669H42.6v-.67Zm4.044-1.473v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.961 3.105a3.088 3.088 0 0 0-.459.048c-.12.024-.215.054-.285.09a.357.357 0 0 0-.147.123.3.3 0 0 0-.039.15c0 .106.03.18.087.225a.432.432 0 0 0 .255.063c.12 0 .225-.021.315-.063a.96.96 0 0 0 .273-.204V52.4Zm-1.674-1.413c.188-.166.396-.29.624-.37.23-.081.476-.122.738-.122.188 0 .357.03.507.093a1.088 1.088 0 0 1 .627.642c.056.15.084.314.084.492v1.944h-.426a.446.446 0 0 1-.2-.036c-.045-.024-.082-.074-.112-.15l-.066-.171a2.998 2.998 0 0 1-.225.174c-.072.05-.147.093-.225.129a1.41 1.41 0 0 1-.534.102c-.142 0-.27-.018-.387-.054a.73.73 0 0 1-.483-.432.98.98 0 0 1-.066-.372c0-.112.028-.225.084-.34a.826.826 0 0 1 .291-.314c.138-.096.324-.176.558-.24.234-.064.53-.1.885-.108v-.132c0-.182-.038-.313-.114-.393-.074-.082-.18-.123-.318-.123a.848.848 0 0 0-.459.117c-.054.03-.107.057-.159.08a.44.44 0 0 1-.186.037.268.268 0 0 1-.162-.048.417.417 0 0 1-.108-.114l-.168-.291Zm3.984 1.833c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .238-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.044-.266.044-.438 0-.164-.011-.302-.035-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.355-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.056-1.881c.122-.13.26-.236.413-.318.157-.084.341-.126.556-.126.162 0 .312.036.45.108.137.072.256.176.356.312.1.136.178.303.234.5.059.197.088.42.088.67 0 .234-.033.45-.1.648-.063.198-.154.37-.273.516-.116.146-.255.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.407-.07 1.108 1.108 0 0 1-.3-.185v1.194h-.93v-4.098h.575c.116 0 .192.052.228.156l.07.228Zm3.388 1.88a.62.62 0 0 0 .228.163.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.88c.122-.13.26-.236.414-.318.156-.084.34-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.5.058.197.087.42.087.67 0 .234-.033.45-.1.648-.063.198-.154.37-.272.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.07 1.108 1.108 0 0 1-.3-.185v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388-1.764v4.49h-.93v-4.49h.93Zm2.444 2.562a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.415.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.108.449.236.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .28-.04 1.24 1.24 0 0 0 .206-.086l.169-.087a.358.358 0 0 1 .161-.04c.075 0 .13.028.169.082l.27.333c-.096.11-.2.2-.313.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.332.024c-.219 0-.424-.035-.616-.105a1.446 1.446 0 0 1-.5-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.175-.35.306-.49.135-.14.296-.25.484-.332.19-.082.404-.123.642-.123.206 0 .393.032.563.096a1.212 1.212 0 0 1 .73.729 1.613 1.613 0 0 1 .095.77.27.27 0 0 1-.032.106.125.125 0 0 1-.067.054.29.29 0 0 1-.102.015h-1.794Zm2.346-.81h1.62v.75h-1.62v-.75Zm3.24 2.247c-.148 0-.279-.021-.393-.063a.822.822 0 0 1-.285-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.123-.045c-.034-.032-.051-.078-.051-.138v-.363l.495-.096.183-.76c.024-.095.092-.143.204-.143h.486v.909h.771v.636h-.771v1.545c0 .072.017.132.051.18a.183.183 0 0 0 .153.069.326.326 0 0 0 .084-.01.466.466 0 0 0 .06-.023.534.534 0 0 1 .048-.024.12.12 0 0 1 .054-.012c.028 0 .05.007.066.02a.203.203 0 0 1 .054.06l.282.442c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm2.474-3.207c.236 0 .451.037.645.11a1.4 1.4 0 0 1 .822.823c.078.196.117.417.117.663 0 .248-.039.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.32 1.797 1.797 0 0 1-.645.112 1.83 1.83 0 0 1-.65-.111 1.498 1.498 0 0 1-.505-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.214 0 .371-.075.471-.225.102-.152.153-.382.153-.69 0-.308-.05-.537-.153-.687-.1-.15-.257-.225-.47-.225-.22 0-.382.075-.484.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.102.15.263.225.483.225Zm4.723-2.47v3.112h-.576c-.116 0-.192-.052-.228-.156l-.054-.18c-.06.058-.122.11-.186.159a1.242 1.242 0 0 1-.207.12 1.175 1.175 0 0 1-.237.075c-.084.02-.176.03-.276.03-.17 0-.321-.03-.453-.087a.948.948 0 0 1-.33-.25 1.08 1.08 0 0 1-.204-.374 1.551 1.551 0 0 1-.07-.474v-1.974h.93v1.974c0 .154.036.273.106.357.07.084.173.126.309.126a.653.653 0 0 0 .285-.063 1.18 1.18 0 0 0 .26-.177v-2.217h.93Zm2.798.739a.514.514 0 0 1-.081.08.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.032 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.04.38c0 .299.058.528.172.688.116.16.275.24.477.24a.676.676 0 0 0 .255-.04.866.866 0 0 0 .162-.09l.12-.092a.231.231 0 0 1 .14-.042c.075 0 .13.027.169.08l.27.334c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.34c.194-.081.418-.122.672-.122.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.442-.465c.112-.096.233-.173.363-.231.132-.06.289-.09.47-.09.17 0 .32.03.45.09a.91.91 0 0 1 .334.246c.09.104.158.229.204.375.046.144.069.3.069.47v1.978h-.93V51.69a.538.538 0 0 0-.105-.354c-.07-.086-.173-.13-.31-.13a.647.647 0 0 0-.287.067c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm90.165 1.04h2.73v.667h-2.73v-.666Zm0-1.1h2.73v.669h-2.73v-.67Zm4.044-1.473v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.374 1.533c.112-.096.233-.173.363-.231.132-.06.289-.09.471-.09.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.3.069.47v1.978h-.93V51.69a.538.538 0 0 0-.105-.354c-.07-.086-.173-.13-.309-.13a.647.647 0 0 0-.288.067c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm3.444 2.886c-.148 0-.279-.021-.393-.063a.822.822 0 0 1-.285-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.123-.045c-.034-.032-.051-.078-.051-.138v-.363l.495-.096.183-.76c.024-.095.092-.143.204-.143h.486v.909h.771v.636h-.771v1.545c0 .072.017.132.051.18a.183.183 0 0 0 .153.069.326.326 0 0 0 .084-.01.466.466 0 0 0 .06-.023.534.534 0 0 1 .048-.024.12.12 0 0 1 .054-.012c.028 0 .05.007.066.02a.203.203 0 0 1 .054.06l.282.442c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm2.183 0c-.148 0-.279-.021-.393-.063a.822.822 0 0 1-.285-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.123-.045c-.034-.032-.051-.078-.051-.138v-.363l.495-.096.183-.76c.024-.095.092-.143.204-.143h.486v.909h.771v.636h-.771v1.545c0 .072.017.132.051.18a.183.183 0 0 0 .153.069.326.326 0 0 0 .084-.01.466.466 0 0 0 .06-.023.534.534 0 0 1 .048-.024.12.12 0 0 1 .054-.012c.028 0 .05.007.066.02a.203.203 0 0 1 .054.06l.282.442c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm1.999-.894c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.5.058.197.087.42.087.67 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.07 1.108 1.108 0 0 1-.3-.185v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm4.436.297a.234.234 0 0 1-.078.08.193.193 0 0 1-.102.025.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.08.086.027.174.056.264.088.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm.526 1.959a.51.51 0 0 1 .039-.201.542.542 0 0 1 .111-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.039-.204Zm0-2.05c0-.071.013-.138.039-.2a.542.542 0 0 1 .111-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.039-.204Zm2.236 2.485a.522.522 0 0 1-.087.144.485.485 0 0 1-.117.105.512.512 0 0 1-.282.084h-.396l1.704-4.473a.48.48 0 0 1 .468-.315h.396l-1.686 4.455ZM71.769 60.196a.51.51 0 0 1 .039-.201.542.542 0 0 1 .11-.162.527.527 0 0 1 .169-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.11.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.206.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.04-.204Zm2.311-2.16c.096-.168.206-.3.33-.396a.694.694 0 0 1 .432-.144c.14 0 .254.033.342.099l-.06.684c-.01.044-.027.074-.05.09a.156.156 0 0 1-.094.024 14.879 14.879 0 0 0-.144-.009 1.162 1.162 0 0 0-.087-.01.554.554 0 0 0-.078-.005.478.478 0 0 0-.327.108.86.86 0 0 0-.204.3v1.89h-.93v-3.111h.552c.046 0 .084.004.114.012a.18.18 0 0 1 .078.039.136.136 0 0 1 .048.066.52.52 0 0 1 .03.102l.048.26Zm2.877 1.365a3.088 3.088 0 0 0-.459.048c-.12.024-.215.054-.285.09a.357.357 0 0 0-.147.123.3.3 0 0 0-.039.15c0 .106.029.18.087.225a.432.432 0 0 0 .255.063c.12 0 .225-.021.315-.063a.96.96 0 0 0 .273-.204V59.4Zm-1.674-1.413c.188-.166.396-.29.624-.37.23-.081.476-.122.738-.122.188 0 .357.03.507.093a1.088 1.088 0 0 1 .627.642c.056.15.084.314.084.492v1.944h-.426a.446.446 0 0 1-.201-.036c-.044-.024-.081-.074-.111-.15l-.066-.171a2.998 2.998 0 0 1-.225.174c-.072.05-.147.093-.225.129a1.41 1.41 0 0 1-.534.102c-.142 0-.271-.018-.387-.054a.73.73 0 0 1-.483-.432.98.98 0 0 1-.066-.372c0-.112.028-.225.084-.34a.826.826 0 0 1 .291-.314c.138-.096.324-.176.558-.24.234-.064.529-.1.885-.108v-.132c0-.182-.038-.313-.114-.393-.074-.082-.18-.123-.318-.123a.848.848 0 0 0-.459.117c-.054.03-.107.057-.159.08a.44.44 0 0 1-.186.037.268.268 0 0 1-.162-.048.417.417 0 0 1-.108-.114l-.168-.291Zm4.941.402a.573.573 0 0 0-.228-.162.703.703 0 0 0-.258-.048.49.49 0 0 0-.426.216.873.873 0 0 0-.123.29c-.03.12-.045.266-.045.436 0 .164.012.302.036.414a.9.9 0 0 0 .1.273.403.403 0 0 0 .155.147c.06.03.127.045.201.045a.693.693 0 0 0 .336-.075.624.624 0 0 0 .13-.09 1.27 1.27 0 0 0 .122-.13V58.39Zm.93-2.214v4.49h-.576c-.116 0-.192-.051-.228-.155l-.072-.237a1.824 1.824 0 0 1-.195.18 1.126 1.126 0 0 1-.477.228c-.09.022-.188.033-.294.033a.958.958 0 0 1-.45-.108 1.037 1.037 0 0 1-.357-.312 1.6 1.6 0 0 1-.237-.498 2.483 2.483 0 0 1-.084-.675c0-.232.032-.447.096-.645.064-.2.154-.372.27-.516.118-.146.26-.26.423-.342.164-.082.345-.123.543-.123.162 0 .298.023.408.069.11.046.21.108.3.186v-1.575h.93Zm75.437 2.793v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm2.1 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm.205 1.227a.51.51 0 0 1 .039-.201.542.542 0 0 1 .111-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.039-.204Zm2.371-.375c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.5.058.197.087.42.087.67 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.07 1.108 1.108 0 0 1-.3-.185v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.316-.048a2.26 2.26 0 0 1 .186-.156 1.136 1.136 0 0 1 .441-.198c.086-.02.179-.03.279-.03.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.3.069.47v1.978h-.93V58.69a.538.538 0 0 0-.105-.354c-.07-.086-.173-.13-.309-.13a.647.647 0 0 0-.288.067c-.088.042-.174.1-.258.174v2.22h-.93v-3.111h.576c.116 0 .192.052.228.156l.054.18Zm3.629 1.056c.154 0 .265-.038.333-.114a.432.432 0 0 0 .105-.3.408.408 0 0 0-.105-.297c-.068-.072-.179-.108-.333-.108-.154 0-.266.036-.336.108a.415.415 0 0 0-.102.297c0 .06.008.115.024.165.018.05.045.094.081.132a.403.403 0 0 0 .135.087.59.59 0 0 0 .198.03Zm.72 1.833a.164.164 0 0 0-.099-.16.796.796 0 0 0-.258-.071 3.105 3.105 0 0 0-.357-.024 6.375 6.375 0 0 1-.39-.024.623.623 0 0 0-.144.135.268.268 0 0 0-.054.165c0 .044.009.084.027.12.02.036.054.067.102.093a.64.64 0 0 0 .192.06c.082.016.185.024.309.024.134 0 .244-.008.33-.024a.678.678 0 0 0 .204-.066.244.244 0 0 0 .138-.228Zm.918-3.13v.34a.166.166 0 0 1-.045.123.288.288 0 0 1-.147.069l-.225.05c.012.045.021.09.027.136a.88.88 0 0 1-.087.564.947.947 0 0 1-.267.318 1.268 1.268 0 0 1-.399.2 1.722 1.722 0 0 1-.495.07 1.463 1.463 0 0 1-.276-.021c-.068.042-.102.089-.102.14 0 .053.028.09.084.115.056.022.13.038.222.048.092.008.196.014.312.018.118.002.238.009.36.02.122.01.241.029.357.055a.981.981 0 0 1 .315.126.656.656 0 0 1 .306.603c0 .14-.034.277-.102.41a1.073 1.073 0 0 1-.3.358 1.544 1.544 0 0 1-.486.249 2.085 2.085 0 0 1-.66.096c-.244 0-.455-.023-.633-.07a1.524 1.524 0 0 1-.441-.182.756.756 0 0 1-.258-.258.608.608 0 0 1-.084-.306c0-.138.04-.253.12-.345a.837.837 0 0 1 .336-.222.526.526 0 0 1-.18-.177.529.529 0 0 1-.042-.423.527.527 0 0 1 .075-.15.79.79 0 0 1 .318-.258 1.039 1.039 0 0 1-.384-.34.876.876 0 0 1-.141-.494.88.88 0 0 1 .099-.42.94.94 0 0 1 .27-.318c.116-.088.252-.155.408-.201.156-.048.325-.072.507-.072.264 0 .498.05.702.15h.936Zm1.012-1.355v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm3.183 2.166v.363l-2.43 1.269v-.645c0-.046.011-.088.033-.126a.265.265 0 0 1 .117-.1l.852-.461c.102-.05.218-.09.348-.12-.13-.03-.246-.07-.348-.12l-.852-.46a.293.293 0 0 1-.117-.098.263.263 0 0 1-.033-.13v-.644l2.43 1.272Zm-154.381 7.06c-.102.05-.218.09-.348.12.13.03.246.07.348.12l.852.462a.245.245 0 0 1 .15.225v.645l-2.43-1.27v-.362l2.43-1.272v.645a.246.246 0 0 1-.036.129.27.27 0 0 1-.114.099l-.852.459Zm19.273.348h2.73v.666H42.6v-.666Zm0-1.101h2.73v.669H42.6v-.67Zm4.044-1.473v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.961 3.105a3.088 3.088 0 0 0-.459.048c-.12.024-.215.054-.285.09a.357.357 0 0 0-.147.123.3.3 0 0 0-.039.15c0 .106.03.18.087.225a.432.432 0 0 0 .255.063c.12 0 .225-.021.315-.063a.96.96 0 0 0 .273-.204V66.4Zm-1.674-1.413c.188-.166.396-.29.624-.37.23-.081.476-.122.738-.122.188 0 .357.03.507.093a1.088 1.088 0 0 1 .627.642c.056.15.084.314.084.492v1.944h-.426a.446.446 0 0 1-.2-.036c-.045-.024-.082-.074-.112-.15l-.066-.171a2.998 2.998 0 0 1-.225.174c-.072.05-.147.093-.225.129a1.41 1.41 0 0 1-.534.102c-.142 0-.27-.018-.387-.054a.73.73 0 0 1-.483-.432.98.98 0 0 1-.066-.372c0-.112.028-.225.084-.34a.826.826 0 0 1 .291-.314c.138-.096.324-.176.558-.24.234-.064.53-.1.885-.108v-.132c0-.182-.038-.313-.114-.393-.074-.082-.18-.123-.318-.123a.848.848 0 0 0-.459.117c-.054.03-.107.057-.159.08a.44.44 0 0 1-.186.037.268.268 0 0 1-.162-.048.417.417 0 0 1-.108-.114l-.168-.291Zm3.984 1.833c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .238-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.044-.266.044-.438 0-.164-.011-.302-.035-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.355-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.056-1.881c.122-.13.26-.236.413-.318.157-.084.341-.126.556-.126.162 0 .312.036.45.108.137.072.256.176.356.312.1.136.178.303.234.5.059.197.088.42.088.67 0 .234-.033.45-.1.648-.063.198-.154.37-.273.516-.116.146-.255.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.407-.07 1.108 1.108 0 0 1-.3-.185v1.194h-.93v-4.098h.575c.116 0 .192.052.228.156l.07.228Zm3.388 1.88a.62.62 0 0 0 .228.163.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.88c.122-.13.26-.236.414-.318.156-.084.34-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.5.058.197.087.42.087.67 0 .234-.033.45-.1.648-.063.198-.154.37-.272.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.07 1.108 1.108 0 0 1-.3-.185v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388-1.764v4.49h-.93v-4.49h.93Zm2.444 2.562a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.415.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.108.449.236.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .28-.04 1.24 1.24 0 0 0 .206-.086l.169-.087a.358.358 0 0 1 .161-.04c.075 0 .13.028.169.082l.27.333c-.096.11-.2.2-.313.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.332.024c-.219 0-.424-.035-.616-.105a1.446 1.446 0 0 1-.5-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.175-.35.306-.49.135-.14.296-.25.484-.332.19-.082.404-.123.642-.123.206 0 .393.032.563.096a1.212 1.212 0 0 1 .73.729 1.613 1.613 0 0 1 .095.77.27.27 0 0 1-.032.106.125.125 0 0 1-.067.054.29.29 0 0 1-.102.015h-1.794Zm2.346-.81h1.62v.75h-1.62v-.75Zm3.24 2.247c-.148 0-.279-.021-.393-.063a.822.822 0 0 1-.285-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.123-.045c-.034-.032-.051-.078-.051-.138v-.363l.495-.096.183-.76c.024-.095.092-.143.204-.143h.486v.909h.771v.636h-.771v1.545c0 .072.017.132.051.18a.183.183 0 0 0 .153.069.326.326 0 0 0 .084-.01.466.466 0 0 0 .06-.023.534.534 0 0 1 .048-.024.12.12 0 0 1 .054-.012c.028 0 .05.007.066.02a.203.203 0 0 1 .054.06l.282.442c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm2.474-3.207c.236 0 .451.037.645.11a1.4 1.4 0 0 1 .822.823c.078.196.117.417.117.663 0 .248-.039.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.32 1.797 1.797 0 0 1-.645.112 1.83 1.83 0 0 1-.65-.111 1.498 1.498 0 0 1-.505-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.214 0 .371-.075.471-.225.102-.152.153-.382.153-.69 0-.308-.05-.537-.153-.687-.1-.15-.257-.225-.47-.225-.22 0-.382.075-.484.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.102.15.263.225.483.225Zm4.723-2.47v3.112h-.576c-.116 0-.192-.052-.228-.156l-.054-.18c-.06.058-.122.11-.186.159a1.242 1.242 0 0 1-.207.12 1.175 1.175 0 0 1-.237.075c-.084.02-.176.03-.276.03-.17 0-.321-.03-.453-.087a.948.948 0 0 1-.33-.25 1.08 1.08 0 0 1-.204-.374 1.551 1.551 0 0 1-.07-.474v-1.974h.93v1.974c0 .154.036.273.106.357.07.084.173.126.309.126a.653.653 0 0 0 .285-.063 1.18 1.18 0 0 0 .26-.177v-2.217h.93Zm2.798.739a.514.514 0 0 1-.081.08.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.032 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.04.38c0 .299.058.528.172.688.116.16.275.24.477.24a.676.676 0 0 0 .255-.04.866.866 0 0 0 .162-.09l.12-.092a.231.231 0 0 1 .14-.042c.075 0 .13.027.169.08l.27.334c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.34c.194-.081.418-.122.672-.122.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.442-.465c.112-.096.233-.173.363-.231.132-.06.289-.09.47-.09.17 0 .32.03.45.09a.91.91 0 0 1 .334.246c.09.104.158.229.204.375.046.144.069.3.069.47v1.978h-.93V65.69a.538.538 0 0 0-.105-.354c-.07-.086-.173-.13-.31-.13a.647.647 0 0 0-.287.067c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm79.604 1.04h2.73v.667h-2.73v-.666Zm0-1.1h2.73v.669h-2.73v-.67Zm4.044-1.473v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.188 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81ZM32.207 72.522c-.102.05-.218.09-.348.12.13.03.246.07.348.12l.852.462a.245.245 0 0 1 .15.225v.645l-2.43-1.27v-.362l2.43-1.272v.645a.246.246 0 0 1-.036.129.27.27 0 0 1-.114.099l-.852.459Zm13.866-2.226v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.961 3.105a3.088 3.088 0 0 0-.459.048c-.12.024-.215.054-.285.09a.357.357 0 0 0-.147.123.3.3 0 0 0-.039.15c0 .106.03.18.087.225a.432.432 0 0 0 .255.063c.12 0 .225-.021.315-.063a.96.96 0 0 0 .273-.204V73.4Zm-1.674-1.413c.188-.166.396-.29.624-.37.23-.081.476-.122.738-.122.188 0 .357.03.507.093a1.088 1.088 0 0 1 .627.642c.056.15.084.314.084.492v1.944h-.426a.446.446 0 0 1-.2-.036c-.045-.024-.082-.074-.112-.15l-.066-.171a2.998 2.998 0 0 1-.225.174c-.072.05-.147.093-.225.129a1.41 1.41 0 0 1-.534.102c-.142 0-.27-.018-.387-.054a.73.73 0 0 1-.483-.432.98.98 0 0 1-.066-.372c0-.112.028-.225.084-.34a.826.826 0 0 1 .291-.314c.138-.096.324-.176.558-.24.234-.064.53-.1.885-.108v-.132c0-.182-.038-.313-.114-.393-.074-.082-.18-.123-.318-.123a.848.848 0 0 0-.459.117c-.054.03-.107.057-.159.08a.44.44 0 0 1-.186.037.268.268 0 0 1-.162-.048.417.417 0 0 1-.108-.114l-.168-.291Zm3.985 1.833c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.34-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.5.058.197.087.42.087.67 0 .234-.033.45-.1.648-.063.198-.154.37-.272.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.07 1.108 1.108 0 0 1-.3-.185v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388 1.88a.62.62 0 0 0 .228.163.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.88c.122-.13.26-.236.414-.318.156-.084.34-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.5.058.197.087.42.087.67 0 .234-.033.45-.1.648-.063.198-.154.37-.272.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.07 1.108 1.108 0 0 1-.3-.185v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388-1.764v4.49h-.93v-4.49h.93Zm2.444 2.562a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.169-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.413.153c-.1.1-.166.245-.199.435h1.159Zm-1.17.54c.03.26.108.449.236.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .28-.04c.078-.025.147-.054.207-.086l.168-.087a.358.358 0 0 1 .162-.04c.073 0 .13.028.167.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.332.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.502-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.036-.405.106-.591.072-.186.174-.35.306-.49.133-.14.294-.25.482-.332.19-.082.404-.123.642-.123.206 0 .395.032.565.096a1.212 1.212 0 0 1 .728.729c.07.176.105.376.105.6 0 .07-.003.127-.009.17a.27.27 0 0 1-.032.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015H59.48Zm2.346-.81h1.62v.75h-1.62v-.75Zm3.24 2.247c-.148 0-.279-.021-.393-.063a.822.822 0 0 1-.285-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.123-.045c-.034-.032-.05-.078-.05-.138v-.363l.494-.096.183-.76c.024-.095.092-.143.204-.143h.486v.909h.771v.636h-.77v1.545c0 .072.016.132.05.18a.183.183 0 0 0 .153.069.326.326 0 0 0 .084-.01.466.466 0 0 0 .06-.023.534.534 0 0 1 .048-.024.12.12 0 0 1 .054-.012c.028 0 .05.007.066.02a.203.203 0 0 1 .054.06l.282.442c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm2.475-3.207c.236 0 .45.037.644.11a1.4 1.4 0 0 1 .822.823c.079.196.118.417.118.663 0 .248-.04.472-.118.672a1.433 1.433 0 0 1-.323.507 1.434 1.434 0 0 1-.499.32 1.797 1.797 0 0 1-.645.112 1.83 1.83 0 0 1-.65-.111 1.498 1.498 0 0 1-.505-.321 1.467 1.467 0 0 1-.326-.507 1.88 1.88 0 0 1-.115-.672c0-.246.039-.467.115-.663.078-.198.186-.366.326-.504.142-.138.31-.244.505-.318a1.83 1.83 0 0 1 .65-.111Zm0 2.517c.213 0 .37-.075.47-.225.103-.152.153-.382.153-.69 0-.308-.05-.537-.153-.687-.1-.15-.257-.225-.47-.225-.22 0-.382.075-.484.225-.102.15-.153.379-.153.687 0 .308.052.538.153.69.102.15.263.225.483.225Zm4.722-2.47v3.112h-.576c-.116 0-.192-.052-.228-.156l-.054-.18c-.06.058-.122.11-.186.159a1.242 1.242 0 0 1-.207.12 1.175 1.175 0 0 1-.237.075c-.084.02-.176.03-.276.03-.17 0-.321-.03-.453-.087a.948.948 0 0 1-.33-.25 1.08 1.08 0 0 1-.204-.374 1.551 1.551 0 0 1-.07-.474v-1.974h.93v1.974c0 .154.036.273.106.357.07.084.173.126.309.126a.653.653 0 0 0 .285-.063 1.18 1.18 0 0 0 .26-.177v-2.217h.93Zm2.798.739a.514.514 0 0 1-.081.08.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.032 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.04.38c0 .299.058.528.172.688.116.16.275.24.477.24a.676.676 0 0 0 .255-.04.866.866 0 0 0 .162-.09l.12-.092a.231.231 0 0 1 .14-.042c.075 0 .13.027.169.08l.27.334c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.34c.194-.081.418-.122.672-.122.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.442-.465c.112-.096.233-.173.363-.231.132-.06.289-.09.47-.09.17 0 .32.03.45.09a.91.91 0 0 1 .334.246c.09.104.158.229.204.375.046.144.069.3.069.47v1.978h-.93V72.69a.538.538 0 0 0-.105-.354c-.07-.086-.173-.13-.31-.13a.647.647 0 0 0-.287.067c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm82.388-1.533v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm3.281 3.699v.672h-2.49v-.672h.84V71.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm2.293-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm2.1 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm3.307 1.698h-.894a.26.26 0 0 1-.162-.048.375.375 0 0 1-.096-.114l-.555-.954a.681.681 0 0 1-.081.18l-.456.774a.646.646 0 0 1-.099.11.212.212 0 0 1-.147.052h-.828l1.044-1.608-1.002-1.503h.894c.066 0 .114.009.144.027.032.016.06.044.084.084l.555.92a1.456 1.456 0 0 1 .105-.213l.396-.692a.318.318 0 0 1 .087-.096.217.217 0 0 1 .117-.03h.852l-1.002 1.46 1.044 1.65Zm3.005-.672v.672h-2.49v-.672h.84V71.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm2.293-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm2.1 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm1.075-2.673v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81ZM57.774 79.87h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.67Zm4.045-1.473v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.374 1.533c.112-.096.233-.173.363-.231.132-.06.289-.09.47-.09.17 0 .32.03.45.09a.91.91 0 0 1 .334.246c.09.104.158.229.204.375.046.144.069.3.069.47v1.978h-.93V79.69a.538.538 0 0 0-.105-.354c-.07-.086-.173-.13-.31-.13a.647.647 0 0 0-.287.067c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm3.443 2.886c-.148 0-.279-.021-.393-.063a.822.822 0 0 1-.285-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.123-.045c-.034-.032-.05-.078-.05-.138v-.363l.494-.096.183-.76c.024-.095.092-.143.204-.143h.486v.909h.771v.636h-.77v1.545c0 .072.016.132.05.18a.183.183 0 0 0 .153.069.326.326 0 0 0 .084-.01.466.466 0 0 0 .06-.023.534.534 0 0 1 .048-.024.12.12 0 0 1 .054-.012c.028 0 .05.007.066.02a.203.203 0 0 1 .054.06l.282.442c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm2.183 0c-.148 0-.279-.021-.393-.063a.822.822 0 0 1-.285-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.123-.045c-.034-.032-.05-.078-.05-.138v-.363l.494-.096.183-.76c.024-.095.092-.143.204-.143h.486v.909h.771v.636h-.77v1.545c0 .072.016.132.05.18a.183.183 0 0 0 .153.069.326.326 0 0 0 .084-.01.466.466 0 0 0 .06-.023.534.534 0 0 1 .048-.024.12.12 0 0 1 .054-.012c.028 0 .05.007.066.02a.203.203 0 0 1 .054.06l.282.442c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm2-.894c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.34-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.5.058.197.087.42.087.67 0 .234-.033.45-.1.648-.063.198-.154.37-.272.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.07 1.108 1.108 0 0 1-.3-.185v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm4.435.297a.234.234 0 0 1-.078.08.193.193 0 0 1-.102.025.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.17-.06.734.734 0 0 0-.22-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.08.086.027.174.056.264.088.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336 1.17 1.17 0 0 1-.41.219 1.837 1.837 0 0 1-.562.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm.527 1.959a.51.51 0 0 1 .039-.201.542.542 0 0 1 .111-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.039-.204Zm0-2.05c0-.071.013-.138.039-.2a.542.542 0 0 1 .111-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.039-.204Zm2.236 2.485a.522.522 0 0 1-.087.144.485.485 0 0 1-.117.105.512.512 0 0 1-.282.084h-.396l1.704-4.473a.48.48 0 0 1 .468-.315h.396L79.16 81.63Zm82.237.036h-.894a.26.26 0 0 1-.162-.048.375.375 0 0 1-.096-.114l-.555-.954a.681.681 0 0 1-.081.18l-.456.774a.646.646 0 0 1-.099.11.212.212 0 0 1-.147.052h-.828l1.044-1.608-1.002-1.503h.894c.066 0 .114.009.144.027.032.016.06.044.084.084l.555.92a1.456 1.456 0 0 1 .105-.213l.396-.692a.318.318 0 0 1 .087-.096.217.217 0 0 1 .117-.03h.852l-1.002 1.46 1.044 1.65Zm3.005-.672v.672h-2.49v-.672h.84V78.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm2.293-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm2.1 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm.205 1.227a.51.51 0 0 1 .039-.201.542.542 0 0 1 .111-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.039-.204ZM57.774 86.87h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.67Zm4.045-1.473v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.374 1.533c.112-.096.233-.173.363-.231.132-.06.289-.09.47-.09.17 0 .32.03.45.09a.91.91 0 0 1 .334.246c.09.104.158.229.204.375.046.144.069.3.069.47v1.978h-.93V86.69a.538.538 0 0 0-.105-.354c-.07-.086-.173-.13-.31-.13a.647.647 0 0 0-.287.067c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm3.443 2.886c-.148 0-.279-.021-.393-.063a.822.822 0 0 1-.285-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.123-.045c-.034-.032-.05-.078-.05-.138v-.363l.494-.096.183-.76c.024-.095.092-.143.204-.143h.486v.909h.771v.636h-.77v1.545c0 .072.016.132.05.18a.183.183 0 0 0 .153.069.326.326 0 0 0 .084-.01.466.466 0 0 0 .06-.023.534.534 0 0 1 .048-.024.12.12 0 0 1 .054-.012c.028 0 .05.007.066.02a.203.203 0 0 1 .054.06l.282.442c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm2.183 0c-.148 0-.279-.021-.393-.063a.822.822 0 0 1-.285-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.123-.045c-.034-.032-.05-.078-.05-.138v-.363l.494-.096.183-.76c.024-.095.092-.143.204-.143h.486v.909h.771v.636h-.77v1.545c0 .072.016.132.05.18a.183.183 0 0 0 .153.069.326.326 0 0 0 .084-.01.466.466 0 0 0 .06-.023.534.534 0 0 1 .048-.024.12.12 0 0 1 .054-.012c.028 0 .05.007.066.02a.203.203 0 0 1 .054.06l.282.442c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm2-.894c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.34-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.5.058.197.087.42.087.67 0 .234-.033.45-.1.648-.063.198-.154.37-.272.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.07 1.108 1.108 0 0 1-.3-.185v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm4.435.297a.234.234 0 0 1-.078.08.193.193 0 0 1-.102.025.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.17-.06.734.734 0 0 0-.22-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.08.086.027.174.056.264.088.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336 1.17 1.17 0 0 1-.41.219 1.837 1.837 0 0 1-.562.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm.527 1.959a.51.51 0 0 1 .039-.201.542.542 0 0 1 .111-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.039-.204Zm0-2.05c0-.071.013-.138.039-.2a.542.542 0 0 1 .111-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.039-.204Zm2.236 2.485a.522.522 0 0 1-.087.144.485.485 0 0 1-.117.105.512.512 0 0 1-.282.084h-.396l1.704-4.473a.48.48 0 0 1 .468-.315h.396L79.16 88.63Zm1.304 0a.522.522 0 0 1-.087.144.485.485 0 0 1-.117.105.512.512 0 0 1-.282.084h-.396l1.704-4.473a.48.48 0 0 1 .468-.315h.396l-1.686 4.455Zm-46.988 4.89c-.102.05-.218.09-.348.12.13.03.246.07.348.12l.852.463a.245.245 0 0 1 .15.225v.645l-2.43-1.27v-.362l2.43-1.272v.645a.246.246 0 0 1-.036.129.27.27 0 0 1-.114.099l-.852.459Zm14.66 0c-.101.05-.217.09-.347.12.13.03.246.07.348.12l.852.463a.245.245 0 0 1 .15.225v.645l-2.43-1.27v-.362l2.43-1.272v.645a.246.246 0 0 1-.036.129.27.27 0 0 1-.114.099l-.852.459Zm2.752-2.345v4.49h-.93v-4.49h.93Zm1.46 1.38v3.11h-.93v-3.11h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm1.29 1.188a2.26 2.26 0 0 1 .187-.156 1.136 1.136 0 0 1 .441-.198c.086-.02.179-.03.279-.03.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.3.069.47v1.978h-.93V93.69a.538.538 0 0 0-.105-.354c-.07-.086-.173-.13-.31-.13a.647.647 0 0 0-.287.067c-.088.042-.174.1-.258.174v2.22h-.93v-3.111h.576c.116 0 .192.052.228.156l.054.18Zm3.374-1.716v2.517h.138a.288.288 0 0 0 .132-.024.33.33 0 0 0 .09-.087l.588-.876a.356.356 0 0 1 .123-.111.357.357 0 0 1 .177-.04h.852l-.804 1.108a.987.987 0 0 1-.27.246.713.713 0 0 1 .126.12c.038.044.074.094.108.15l.876 1.488h-.84a.445.445 0 0 1-.18-.033.297.297 0 0 1-.126-.123l-.588-1.101c-.028-.05-.057-.082-.087-.096a.296.296 0 0 0-.135-.024h-.18v1.377h-.93v-4.491h.93Zm4.5 3.645a.62.62 0 0 0 .229.162.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.056-1.881c.122-.13.26-.236.414-.318.156-.084.34-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.5.058.197.087.42.087.67 0 .234-.033.45-.1.648-.063.198-.154.37-.272.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.07 1.108 1.108 0 0 1-.3-.185v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388 1.88a.62.62 0 0 0 .228.163.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.88c.122-.13.26-.236.414-.318.156-.084.34-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.5.058.197.087.42.087.67 0 .234-.033.45-.1.648-.063.198-.154.37-.272.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.07 1.108 1.108 0 0 1-.3-.185v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388-1.764v4.49h-.93v-4.49h.93Zm2.444 2.562a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.04c.078-.025.147-.054.207-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.122-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729 1.613 1.613 0 0 1 .095.77.27.27 0 0 1-.032.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm2.346-.81h1.62v.75h-1.62v-.75Zm3.24 2.247c-.148 0-.279-.021-.393-.063a.822.822 0 0 1-.285-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.123-.045c-.034-.032-.05-.078-.05-.138v-.363l.494-.096.183-.76c.024-.095.092-.143.204-.143h.486v.909h.771v.636h-.77v1.545c0 .072.016.132.05.18a.183.183 0 0 0 .153.069.326.326 0 0 0 .084-.01.466.466 0 0 0 .06-.023.534.534 0 0 1 .048-.024.12.12 0 0 1 .054-.012c.028 0 .05.007.066.02a.203.203 0 0 1 .054.06l.282.442c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm2.475-3.207c.236 0 .45.037.645.11a1.4 1.4 0 0 1 .822.823c.078.196.117.417.117.663 0 .248-.04.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.32 1.797 1.797 0 0 1-.645.112 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .65-.111Zm0 2.517c.214 0 .37-.075.47-.225.103-.152.154-.382.154-.69 0-.308-.051-.537-.153-.687-.1-.15-.257-.225-.471-.225-.22 0-.381.075-.483.225-.102.15-.153.379-.153.687 0 .308.05.538.153.69.102.15.263.225.483.225Zm78.349-1.155h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.67Zm4.044-1.473v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm3.282 3.699v.672h-2.49v-.672h.84V92.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm2.293-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm2.1 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm3.307 1.698h-.894a.26.26 0 0 1-.162-.048.375.375 0 0 1-.096-.114l-.555-.954a.681.681 0 0 1-.081.18l-.456.774a.646.646 0 0 1-.099.11.212.212 0 0 1-.147.052h-.828l1.044-1.608-1.002-1.503h.894c.066 0 .114.009.144.027.032.016.06.044.084.084l.555.92a1.456 1.456 0 0 1 .105-.213l.396-.692a.318.318 0 0 1 .087-.096.217.217 0 0 1 .117-.03h.852l-1.002 1.46 1.044 1.65Zm3.005-.672v.672h-2.49v-.672h.84V92.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm2.293-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm2.1 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm1.075-2.673v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm-154.213 7v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm15.174 3.9c0-.072.013-.139.039-.201a.542.542 0 0 1 .11-.162.527.527 0 0 1 .169-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.11.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.206.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.04-.204Zm0-2.049c0-.072.013-.139.039-.201a.542.542 0 0 1 .11-.162.527.527 0 0 1 .169-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.11.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.206.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.04-.204Zm2.236 2.484a.522.522 0 0 1-.087.144.485.485 0 0 1-.117.105.512.512 0 0 1-.282.084h-.396l1.704-4.473a.48.48 0 0 1 .468-.315h.396l-1.686 4.455Zm1.304 0a.522.522 0 0 1-.087.144.485.485 0 0 1-.117.105.512.512 0 0 1-.282.084h-.396l1.704-4.473a.48.48 0 0 1 .468-.315h.396l-1.686 4.455Zm6.609-3.075-.966 3.111h-.756a.151.151 0 0 1-.102-.036.242.242 0 0 1-.066-.12l-.444-1.551a4.713 4.713 0 0 1-.06-.207 6.287 6.287 0 0 1-.045-.207c-.014.07-.03.14-.048.21-.016.07-.035.14-.057.21l-.45 1.545c-.03.104-.096.156-.198.156h-.72l-.966-3.111h.744c.066 0 .12.016.165.048.046.03.077.068.093.114l.312 1.395a7.345 7.345 0 0 1 .123.606l.08-.297c.03-.1.063-.203.097-.309l.39-1.398a.226.226 0 0 1 .09-.114.258.258 0 0 1 .156-.048h.414c.066 0 .12.016.165.048.046.03.077.068.093.114l.372 1.398.087.309c.03.1.057.201.08.303a6.34 6.34 0 0 1 .133-.612l.33-1.395a.226.226 0 0 1 .09-.114.258.258 0 0 1 .156-.048h.708Zm4.79 0-.966 3.111h-.756a.151.151 0 0 1-.102-.036.242.242 0 0 1-.066-.12l-.444-1.551a4.713 4.713 0 0 1-.06-.207 6.287 6.287 0 0 1-.045-.207c-.014.07-.03.14-.048.21-.016.07-.035.14-.057.21l-.45 1.545c-.03.104-.096.156-.198.156h-.72l-.966-3.111h.744c.066 0 .12.016.165.048.046.03.077.068.093.114l.312 1.395a7.345 7.345 0 0 1 .123.606l.08-.297c.03-.1.063-.203.097-.309l.39-1.398a.226.226 0 0 1 .09-.114.258.258 0 0 1 .156-.048h.414c.066 0 .12.016.165.048.046.03.077.068.093.114l.372 1.398.087.309c.03.1.057.201.08.303a6.34 6.34 0 0 1 .133-.612l.33-1.395a.226.226 0 0 1 .09-.114.258.258 0 0 1 .156-.048h.708Zm4.79 0-.966 3.111h-.756a.151.151 0 0 1-.102-.036.242.242 0 0 1-.066-.12l-.444-1.551a4.713 4.713 0 0 1-.06-.207 6.287 6.287 0 0 1-.045-.207c-.014.07-.03.14-.048.21-.016.07-.035.14-.057.21l-.45 1.545c-.03.104-.096.156-.198.156h-.72l-.966-3.111h.744c.066 0 .121.016.165.048.046.03.077.068.093.114l.312 1.395a7.345 7.345 0 0 1 .123.606c.026-.1.053-.199.081-.297.03-.1.062-.203.096-.309l.39-1.398A.226.226 0 0 1 66 99.6a.258.258 0 0 1 .156-.048h.414c.066 0 .121.016.165.048.046.03.077.068.093.114l.372 1.398.087.309c.03.1.057.201.081.303.016-.1.035-.2.057-.3.022-.1.047-.204.075-.312l.33-1.395a.226.226 0 0 1 .09-.114.258.258 0 0 1 .156-.048h.708Zm-.043 2.64c0-.072.013-.139.04-.201a.542.542 0 0 1 .11-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.11-.162.537.537 0 0 1-.04-.204Zm2.312-2.16c.096-.168.206-.3.33-.396a.694.694 0 0 1 .432-.144c.14 0 .254.033.342.099l-.06.684c-.01.044-.027.074-.051.09a.156.156 0 0 1-.093.024 14.879 14.879 0 0 0-.144-.009 1.162 1.162 0 0 0-.087-.009.554.554 0 0 0-.078-.006.478.478 0 0 0-.327.108.86.86 0 0 0-.204.3v1.89h-.93v-3.111h.552c.046 0 .084.004.114.012a.18.18 0 0 1 .078.039.136.136 0 0 1 .048.066.52.52 0 0 1 .03.102l.048.261Zm2.877 1.365a3.088 3.088 0 0 0-.46.048c-.12.024-.215.054-.284.09a.357.357 0 0 0-.148.123.3.3 0 0 0-.038.15c0 .106.028.181.087.225a.432.432 0 0 0 .254.063c.12 0 .226-.021.316-.063a.96.96 0 0 0 .273-.204v-.432Zm-1.675-1.413c.189-.166.397-.29.624-.37.23-.081.477-.122.739-.122.188 0 .357.03.507.093a1.09 1.09 0 0 1 .627.642c.056.15.084.314.084.492v1.944h-.427a.446.446 0 0 1-.2-.036c-.044-.024-.082-.074-.112-.15l-.066-.171a2.998 2.998 0 0 1-.225.174c-.072.05-.147.093-.224.129a1.41 1.41 0 0 1-.534.102c-.142 0-.272-.018-.388-.054a.73.73 0 0 1-.483-.432.98.98 0 0 1-.066-.372c0-.112.028-.225.084-.339a.826.826 0 0 1 .292-.315c.138-.096.324-.176.558-.24.233-.064.528-.1.885-.108v-.132c0-.182-.039-.313-.115-.393-.073-.082-.18-.123-.317-.123a.848.848 0 0 0-.46.117c-.053.03-.106.057-.159.081a.44.44 0 0 1-.186.036.268.268 0 0 1-.162-.048.417.417 0 0 1-.108-.114l-.168-.291Zm4.942.402a.573.573 0 0 0-.228-.162.703.703 0 0 0-.258-.048.49.49 0 0 0-.426.216.873.873 0 0 0-.123.291c-.03.12-.045.265-.045.435 0 .164.012.302.036.414a.9.9 0 0 0 .099.273.403.403 0 0 0 .156.147c.06.03.127.045.201.045a.693.693 0 0 0 .336-.075.624.624 0 0 0 .129-.09 1.27 1.27 0 0 0 .123-.129v-1.317Zm.93-2.214v4.491h-.576c-.116 0-.192-.052-.228-.156l-.072-.237a1.824 1.824 0 0 1-.195.18 1.126 1.126 0 0 1-.477.228c-.09.022-.188.033-.294.033a.958.958 0 0 1-.45-.108 1.037 1.037 0 0 1-.357-.312 1.6 1.6 0 0 1-.237-.498 2.483 2.483 0 0 1-.084-.675c0-.232.032-.447.096-.645.064-.2.154-.372.27-.516.118-.146.259-.26.423-.342.164-.082.345-.123.543-.123.162 0 .298.023.408.069.11.046.21.108.3.186v-1.575h.93Zm1.46 1.38v3.111h-.93v-3.111h.93Zm.095-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm80.873 3.963h-.894a.26.26 0 0 1-.162-.048.375.375 0 0 1-.096-.114l-.555-.954a.681.681 0 0 1-.081.18l-.456.774a.646.646 0 0 1-.099.111.212.212 0 0 1-.147.051h-.828l1.044-1.608-1.002-1.503h.894c.066 0 .114.009.144.027.032.016.06.044.084.084l.555.921a1.456 1.456 0 0 1 .105-.213l.396-.693a.318.318 0 0 1 .087-.096.217.217 0 0 1 .117-.03h.852l-1.002 1.461 1.044 1.65Zm3.006-.672v.672h-2.49v-.672h.84V99.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm2.292-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45ZM57.774 107.87h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.669Zm4.84.753c-.102.05-.218.09-.348.12.13.03.246.07.348.12l.852.462a.245.245 0 0 1 .15.225v.645l-2.43-1.269v-.363l2.43-1.272v.645a.246.246 0 0 1-.036.129.27.27 0 0 1-.114.099l-.852.459Zm2.751-2.346v4.491h-.93v-4.491h.93Zm1.46 1.38v3.111h-.93v-3.111h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm1.29 1.188a2.26 2.26 0 0 1 .186-.156 1.136 1.136 0 0 1 .441-.198c.086-.02.18-.03.28-.03.17 0 .32.03.45.09a.91.91 0 0 1 .332.246c.09.104.158.229.204.375.046.144.07.301.07.471v1.977h-.93v-1.977a.538.538 0 0 0-.106-.354c-.07-.086-.173-.129-.309-.129a.647.647 0 0 0-.288.066c-.088.042-.174.1-.258.174v2.22h-.93v-3.111h.576c.116 0 .192.052.228.156l.054.18Zm3.374-1.716v2.517h.138a.288.288 0 0 0 .132-.024.33.33 0 0 0 .09-.087l.588-.876a.356.356 0 0 1 .123-.111.357.357 0 0 1 .177-.039h.852l-.804 1.107a.987.987 0 0 1-.27.246.713.713 0 0 1 .126.12c.038.044.074.094.108.15l.876 1.488h-.84a.445.445 0 0 1-.18-.033.297.297 0 0 1-.126-.123l-.588-1.101c-.028-.05-.057-.082-.087-.096a.296.296 0 0 0-.135-.024h-.18v1.377h-.93v-4.491h.93Zm6.36 1.38v3.111h-.575c-.117 0-.193-.052-.229-.156l-.053-.18c-.06.058-.122.111-.186.159a1.242 1.242 0 0 1-.207.12 1.175 1.175 0 0 1-.237.075c-.084.02-.177.03-.276.03-.17 0-.322-.029-.454-.087a.948.948 0 0 1-.33-.249 1.08 1.08 0 0 1-.203-.375 1.551 1.551 0 0 1-.07-.474v-1.974h.93v1.974c0 .154.035.273.105.357.07.084.174.126.31.126a.653.653 0 0 0 .284-.063 1.18 1.18 0 0 0 .261-.177v-2.217h.93Zm2.798.738a.514.514 0 0 1-.08.081.179.179 0 0 1-.112.03.247.247 0 0 1-.126-.033 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.381c0 .298.057.527.171.687.116.16.275.24.477.24a.676.676 0 0 0 .255-.039.866.866 0 0 0 .162-.09l.12-.093a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.081l.27.333c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.22.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.1-.627a1.44 1.44 0 0 1 .296-.507 1.39 1.39 0 0 1 .486-.339c.194-.082.418-.123.672-.123.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm74.902.576h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.669ZM32.401 114.87h2.73v.666H32.4v-.666Zm0-1.101h2.73v.669H32.4v-.669Zm4.044-1.473v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.374 1.533c.112-.096.233-.173.363-.231.132-.06.29-.09.471-.09.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.07.301.07.471v1.977h-.93v-1.977a.538.538 0 0 0-.106-.354c-.07-.086-.173-.129-.309-.129a.647.647 0 0 0-.288.066c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm3.444 2.886c-.148 0-.279-.021-.393-.063a.822.822 0 0 1-.285-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.123-.045c-.034-.032-.051-.078-.051-.138v-.363l.495-.096.183-.759c.024-.096.092-.144.204-.144h.486v.909h.771v.636h-.771v1.545c0 .072.017.132.051.18a.183.183 0 0 0 .153.069.326.326 0 0 0 .084-.009.466.466 0 0 0 .06-.024.534.534 0 0 1 .048-.024.12.12 0 0 1 .054-.012c.028 0 .05.007.066.021a.203.203 0 0 1 .054.06l.282.441c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm2.183 0c-.148 0-.28-.021-.393-.063a.822.822 0 0 1-.285-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.123-.045c-.034-.032-.051-.078-.051-.138v-.363l.495-.096.183-.759c.024-.096.092-.144.204-.144h.486v.909h.77v.636h-.77v1.545a.31.31 0 0 0 .05.18.183.183 0 0 0 .154.069.326.326 0 0 0 .084-.009.466.466 0 0 0 .06-.024.534.534 0 0 1 .048-.024.12.12 0 0 1 .054-.012c.028 0 .05.007.066.021a.203.203 0 0 1 .054.06l.282.441c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm2-.894c.07.076.145.13.227.162a.703.703 0 0 0 .259.048.548.548 0 0 0 .236-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .127-.294c.03-.12.044-.266.044-.438 0-.164-.011-.302-.035-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.355-.195.674.674 0 0 0-.335.075.934.934 0 0 0-.253.219v1.32Zm-.057-1.881c.122-.13.26-.236.413-.318.156-.084.341-.126.555-.126.162 0 .313.036.45.108.139.072.258.176.358.312.1.136.177.303.233.501.059.196.087.419.087.669 0 .234-.032.45-.099.648-.063.198-.154.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.407-.069 1.108 1.108 0 0 1-.3-.186v1.194h-.93v-4.098h.575c.117 0 .193.052.229.156l.069.228Zm4.435.297a.234.234 0 0 1-.078.081.193.193 0 0 1-.102.024.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.22-.03.463.463 0 0 0-.272.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.23.081.087.026.175.055.265.087.09.032.178.07.264.114a.93.93 0 0 1 .23.159.675.675 0 0 1 .163.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.31-.081 1.786 1.786 0 0 1-.272-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.14.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .184-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .62.114 1.356 1.356 0 0 1 .454.288l-.21.327Zm.526 1.959c0-.072.014-.139.04-.201a.542.542 0 0 1 .11-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042.49.49 0 0 1 .279.27.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.11-.162.537.537 0 0 1-.04-.204Zm0-2.049c0-.072.014-.139.04-.201a.542.542 0 0 1 .11-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042.49.49 0 0 1 .279.27.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.11-.162.537.537 0 0 1-.04-.204Zm2.236 2.484a.522.522 0 0 1-.087.144.485.485 0 0 1-.117.105.512.512 0 0 1-.282.084h-.396l1.704-4.473a.48.48 0 0 1 .468-.315h.396l-1.686 4.455Zm1.304 0a.522.522 0 0 1-.087.144.485.485 0 0 1-.117.105.512.512 0 0 1-.282.084h-.396l1.704-4.473a.48.48 0 0 1 .468-.315h.396l-1.686 4.455Zm6.61-3.075-.967 3.111h-.756a.151.151 0 0 1-.102-.036.242.242 0 0 1-.066-.12l-.444-1.551a4.713 4.713 0 0 1-.06-.207 6.287 6.287 0 0 1-.045-.207c-.014.07-.03.14-.048.21-.016.07-.035.14-.057.21l-.45 1.545c-.03.104-.096.156-.198.156h-.72l-.966-3.111h.744c.066 0 .121.016.165.048.046.03.077.068.093.114l.312 1.395a7.345 7.345 0 0 1 .123.606c.026-.1.053-.199.081-.297.03-.1.062-.203.096-.309l.39-1.398a.226.226 0 0 1 .09-.114.258.258 0 0 1 .156-.048h.414c.066 0 .121.016.165.048.046.03.077.068.093.114l.372 1.398c.03.106.06.209.087.309.03.1.057.201.081.303.016-.1.035-.2.057-.3.022-.1.047-.204.075-.312l.33-1.395a.226.226 0 0 1 .09-.114.258.258 0 0 1 .156-.048h.708Zm4.79 0-.966 3.111h-.757a.151.151 0 0 1-.102-.036.242.242 0 0 1-.066-.12l-.444-1.551a4.713 4.713 0 0 1-.06-.207 6.287 6.287 0 0 1-.044-.207c-.014.07-.03.14-.049.21a2.33 2.33 0 0 1-.056.21l-.45 1.545c-.03.104-.096.156-.199.156h-.72l-.965-3.111h.743c.067 0 .122.016.166.048.045.03.076.068.093.114l.312 1.395a7.345 7.345 0 0 1 .122.606c.026-.1.053-.199.081-.297.03-.1.063-.203.096-.309l.39-1.398a.226.226 0 0 1 .09-.114.258.258 0 0 1 .157-.048h.413c.066 0 .121.016.165.048a.22.22 0 0 1 .094.114l.371 1.398.088.309c.03.1.056.201.08.303a6.34 6.34 0 0 1 .133-.612l.33-1.395a.226.226 0 0 1 .09-.114.258.258 0 0 1 .155-.048h.709Zm4.79 0-.966 3.111h-.756a.151.151 0 0 1-.102-.036.242.242 0 0 1-.066-.12l-.444-1.551a4.713 4.713 0 0 1-.06-.207 6.287 6.287 0 0 1-.045-.207c-.014.07-.03.14-.048.21-.016.07-.035.14-.057.21l-.45 1.545c-.03.104-.096.156-.198.156h-.72l-.966-3.111h.744c.066 0 .12.016.165.048.046.03.077.068.093.114l.312 1.395a7.345 7.345 0 0 1 .123.606l.08-.297c.03-.1.063-.203.097-.309l.39-1.398a.226.226 0 0 1 .09-.114.258.258 0 0 1 .156-.048h.414c.066 0 .12.016.165.048.046.03.077.068.093.114l.372 1.398.087.309c.03.1.057.201.08.303a6.34 6.34 0 0 1 .133-.612l.33-1.395a.226.226 0 0 1 .09-.114.258.258 0 0 1 .156-.048h.708Zm-.043 2.64c0-.072.013-.139.039-.201a.542.542 0 0 1 .11-.162.527.527 0 0 1 .169-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.11.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.206.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.04-.204Zm2.311-2.16c.096-.168.206-.3.33-.396a.694.694 0 0 1 .432-.144c.14 0 .254.033.342.099l-.06.684c-.01.044-.027.074-.05.09a.156.156 0 0 1-.094.024 14.879 14.879 0 0 0-.144-.009 1.162 1.162 0 0 0-.087-.009.554.554 0 0 0-.078-.006.478.478 0 0 0-.327.108.86.86 0 0 0-.204.3v1.89h-.93v-3.111h.552c.046 0 .084.004.114.012a.18.18 0 0 1 .078.039.136.136 0 0 1 .048.066.52.52 0 0 1 .03.102l.048.261Zm2.877 1.365a3.088 3.088 0 0 0-.459.048c-.12.024-.215.054-.285.09a.357.357 0 0 0-.147.123.3.3 0 0 0-.039.15c0 .106.03.181.087.225a.432.432 0 0 0 .255.063c.12 0 .225-.021.315-.063a.96.96 0 0 0 .273-.204v-.432Zm-1.674-1.413c.188-.166.396-.289.624-.369.23-.082.476-.123.738-.123.188 0 .357.031.507.093a1.088 1.088 0 0 1 .627.642c.056.15.084.314.084.492v1.944h-.426a.446.446 0 0 1-.2-.036c-.045-.024-.082-.074-.112-.15l-.066-.171a2.998 2.998 0 0 1-.225.174c-.072.05-.147.093-.225.129a1.41 1.41 0 0 1-.534.102c-.142 0-.27-.018-.387-.054a.73.73 0 0 1-.483-.432.98.98 0 0 1-.066-.372c0-.112.028-.225.084-.339a.826.826 0 0 1 .291-.315c.138-.096.324-.176.558-.24.234-.064.53-.1.885-.108v-.132c0-.182-.038-.313-.114-.393-.074-.082-.18-.123-.318-.123a.848.848 0 0 0-.459.117c-.054.03-.107.057-.159.081a.44.44 0 0 1-.186.036.268.268 0 0 1-.162-.048.417.417 0 0 1-.108-.114l-.168-.291Zm4.942.402a.573.573 0 0 0-.228-.162.703.703 0 0 0-.258-.048.49.49 0 0 0-.426.216.873.873 0 0 0-.123.291c-.03.12-.045.265-.045.435 0 .164.012.302.036.414a.9.9 0 0 0 .099.273.403.403 0 0 0 .156.147c.06.03.127.045.2.045a.693.693 0 0 0 .336-.075.624.624 0 0 0 .13-.09 1.27 1.27 0 0 0 .123-.129v-1.317Zm.93-2.214v4.491h-.576c-.116 0-.192-.052-.228-.156l-.072-.237a1.824 1.824 0 0 1-.195.18 1.126 1.126 0 0 1-.477.228c-.09.022-.188.033-.294.033a.958.958 0 0 1-.45-.108 1.037 1.037 0 0 1-.357-.312 1.6 1.6 0 0 1-.237-.498 2.483 2.483 0 0 1-.084-.675c0-.232.032-.447.096-.645.064-.2.154-.372.27-.516.118-.146.259-.26.423-.342.164-.082.345-.123.543-.123.162 0 .298.023.408.069.11.046.21.108.3.186v-1.575h.93Zm79.067 4.491h-.894a.26.26 0 0 1-.162-.048.375.375 0 0 1-.096-.114l-.555-.954a.681.681 0 0 1-.081.18l-.456.774a.646.646 0 0 1-.099.111.212.212 0 0 1-.147.051h-.828l1.044-1.608-1.002-1.503h.894c.066 0 .114.009.144.027.032.016.06.044.084.084l.555.921a1.456 1.456 0 0 1 .105-.213l.396-.693a.318.318 0 0 1 .087-.096.217.217 0 0 1 .117-.03h.852l-1.002 1.461 1.044 1.65Zm3.006-.672v.672h-2.49v-.672h.84v-2.205a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.039.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.143h.768v3.702h.72Zm2.292-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm2.101 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm.204 1.227c0-.072.013-.139.039-.201a.542.542 0 0 1 .111-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.039-.204Zm2.372-.375c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.501.058.196.087.419.087.669 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.069 1.108 1.108 0 0 1-.3-.186v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.316-.048a2.26 2.26 0 0 1 .186-.156 1.136 1.136 0 0 1 .441-.198c.086-.02.179-.03.279-.03.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.301.069.471v1.977h-.93v-1.977a.538.538 0 0 0-.105-.354c-.07-.086-.173-.129-.309-.129a.647.647 0 0 0-.288.066c-.088.042-.174.1-.258.174v2.22h-.93v-3.111h.576c.116 0 .192.052.228.156l.054.18Zm3.629 1.056c.154 0 .265-.038.333-.114a.432.432 0 0 0 .105-.3.408.408 0 0 0-.105-.297c-.068-.072-.179-.108-.333-.108-.154 0-.266.036-.336.108a.415.415 0 0 0-.102.297c0 .06.008.115.024.165.018.05.045.094.081.132a.403.403 0 0 0 .135.087.59.59 0 0 0 .198.03Zm.72 1.833a.164.164 0 0 0-.099-.159.796.796 0 0 0-.258-.072 3.105 3.105 0 0 0-.357-.024 6.375 6.375 0 0 1-.39-.024.623.623 0 0 0-.144.135.268.268 0 0 0-.054.165c0 .044.009.084.027.12.02.036.054.067.102.093a.64.64 0 0 0 .192.06c.082.016.185.024.309.024.134 0 .244-.008.33-.024a.678.678 0 0 0 .204-.066.244.244 0 0 0 .138-.228Zm.918-3.129v.339a.166.166 0 0 1-.045.123.288.288 0 0 1-.147.069l-.225.051c.012.044.021.089.027.135a.88.88 0 0 1-.087.564.947.947 0 0 1-.267.318 1.268 1.268 0 0 1-.399.201 1.722 1.722 0 0 1-.495.069 1.463 1.463 0 0 1-.276-.021c-.068.042-.102.089-.102.141 0 .052.028.09.084.114.056.022.13.038.222.048.092.008.196.014.312.018.118.002.238.009.36.021.122.01.241.028.357.054a.981.981 0 0 1 .315.126.656.656 0 0 1 .306.603c0 .14-.034.277-.102.411a1.073 1.073 0 0 1-.3.357 1.544 1.544 0 0 1-.486.249 2.085 2.085 0 0 1-.66.096c-.244 0-.455-.023-.633-.069a1.524 1.524 0 0 1-.441-.183.756.756 0 0 1-.258-.258.608.608 0 0 1-.084-.306c0-.138.04-.253.12-.345a.837.837 0 0 1 .336-.222.526.526 0 0 1-.18-.177.529.529 0 0 1-.042-.423.527.527 0 0 1 .075-.15.79.79 0 0 1 .318-.258 1.039 1.039 0 0 1-.384-.339.876.876 0 0 1-.141-.495.88.88 0 0 1 .099-.42.94.94 0 0 1 .27-.318c.116-.088.252-.155.408-.201.156-.048.325-.072.507-.072.264 0 .498.05.702.15h.936Zm1.012-1.356v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm3.183 2.166v.363l-2.43 1.269v-.645c0-.046.011-.088.033-.126a.265.265 0 0 1 .117-.099l.852-.462c.102-.05.218-.09.348-.12-.13-.03-.246-.07-.348-.12l-.852-.459a.293.293 0 0 1-.117-.099.263.263 0 0 1-.033-.129v-.645l2.43 1.272Zm-151.361 7.06c-.102.05-.218.09-.348.12.13.03.246.07.348.12l.852.462a.245.245 0 0 1 .15.225v.645l-2.43-1.269v-.363l2.43-1.272v.645a.246.246 0 0 1-.036.129.27.27 0 0 1-.114.099l-.852.459Zm13.866-2.226v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.96 3.105a3.088 3.088 0 0 0-.459.048c-.12.024-.215.054-.284.09a.357.357 0 0 0-.148.123.3.3 0 0 0-.038.15c0 .106.029.181.087.225a.432.432 0 0 0 .255.063c.12 0 .224-.021.315-.063a.96.96 0 0 0 .273-.204v-.432Zm-1.674-1.413c.188-.166.396-.289.624-.369.23-.082.477-.123.739-.123.188 0 .356.031.507.093a1.088 1.088 0 0 1 .627.642c.056.15.084.314.084.492v1.944h-.426a.446.446 0 0 1-.202-.036c-.043-.024-.08-.074-.11-.15l-.066-.171a2.998 2.998 0 0 1-.226.174c-.072.05-.147.093-.225.129a1.41 1.41 0 0 1-.534.102 1.3 1.3 0 0 1-.386-.054.73.73 0 0 1-.483-.432.98.98 0 0 1-.067-.372c0-.112.028-.225.084-.339a.826.826 0 0 1 .291-.315c.139-.096.325-.176.558-.24.234-.064.53-.1.886-.108v-.132c0-.182-.038-.313-.114-.393-.075-.082-.18-.123-.319-.123a.848.848 0 0 0-.459.117 2.17 2.17 0 0 1-.159.081.44.44 0 0 1-.185.036.268.268 0 0 1-.163-.048.417.417 0 0 1-.107-.114l-.169-.291Zm3.985 1.833c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.501.058.196.087.419.087.669 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.069 1.108 1.108 0 0 1-.3-.186v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388 1.881c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.501.058.196.087.419.087.669 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.069 1.108 1.108 0 0 1-.3-.186v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.07.228Zm3.388-1.764v4.491h-.93v-4.491h.93Zm2.444 2.562a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.039c.078-.026.147-.055.207-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.122-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.489.134-.14.295-.251.483-.333.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729 1.613 1.613 0 0 1 .095.771.27.27 0 0 1-.032.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm2.346-.81h1.62v.75h-1.62v-.75Zm3.24 2.247c-.148 0-.279-.021-.393-.063a.822.822 0 0 1-.285-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.123-.045c-.034-.032-.05-.078-.05-.138v-.363l.494-.096.183-.759c.024-.096.092-.144.204-.144h.486v.909h.771v.636h-.77v1.545c0 .072.016.132.05.18a.183.183 0 0 0 .153.069.326.326 0 0 0 .084-.009.466.466 0 0 0 .06-.024.534.534 0 0 1 .048-.024.12.12 0 0 1 .054-.012c.028 0 .05.007.066.021a.203.203 0 0 1 .054.06l.282.441c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm2.475-3.207c.236 0 .45.037.645.111a1.4 1.4 0 0 1 .822.822c.078.196.117.417.117.663 0 .248-.04.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.321 1.797 1.797 0 0 1-.645.111 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .65-.111Zm0 2.517c.214 0 .37-.075.47-.225.103-.152.154-.382.154-.69 0-.308-.051-.537-.153-.687-.1-.15-.257-.225-.471-.225-.22 0-.381.075-.483.225-.102.15-.153.379-.153.687 0 .308.05.538.153.69.102.15.263.225.483.225Zm4.722-2.469v3.111h-.576c-.116 0-.192-.052-.228-.156l-.054-.18c-.06.058-.122.111-.186.159a1.242 1.242 0 0 1-.207.12 1.175 1.175 0 0 1-.237.075c-.084.02-.176.03-.276.03-.17 0-.32-.029-.453-.087a.948.948 0 0 1-.33-.249 1.08 1.08 0 0 1-.204-.375 1.551 1.551 0 0 1-.069-.474v-1.974h.93v1.974c0 .154.035.273.105.357.07.084.173.126.31.126a.653.653 0 0 0 .284-.063 1.18 1.18 0 0 0 .261-.177v-2.217h.93Zm2.798.738a.514.514 0 0 1-.081.081.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.033 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.381c0 .298.057.527.171.687.116.16.275.24.477.24a.676.676 0 0 0 .255-.039.866.866 0 0 0 .162-.09l.12-.093a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.081l.27.333c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.339c.194-.082.418-.123.672-.123.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.442-.465c.112-.096.233-.173.363-.231.132-.06.289-.09.471-.09.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.301.069.471v1.977h-.93v-1.977a.538.538 0 0 0-.105-.354c-.07-.086-.173-.129-.309-.129a.647.647 0 0 0-.288.066c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm78.103 1.041h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.669Zm4.045-1.473v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm3.282 3.699v.672h-2.49v-.672h.84v-2.205a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.039.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.143h.768v3.702h.72Zm2.292-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm2.101 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm3.306 1.698h-.894a.26.26 0 0 1-.162-.048.375.375 0 0 1-.096-.114l-.555-.954a.681.681 0 0 1-.081.18l-.456.774a.646.646 0 0 1-.099.111.212.212 0 0 1-.147.051h-.828l1.044-1.608-1.002-1.503h.894c.066 0 .114.009.144.027.032.016.06.044.084.084l.555.921a1.456 1.456 0 0 1 .105-.213l.396-.693a.318.318 0 0 1 .087-.096.217.217 0 0 1 .117-.03h.852l-1.002 1.461 1.044 1.65Zm3.006-.672v.672h-2.49v-.672h.84v-2.205a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.039.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.143h.768v3.702h.72Zm2.292-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm2.101 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm1.074-2.673v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm-153.338 9.226c-.102.05-.218.09-.348.12.13.03.246.07.348.12l.852.462a.245.245 0 0 1 .15.225v.645l-2.43-1.269v-.363l2.43-1.272v.645a.246.246 0 0 1-.036.129.27.27 0 0 1-.114.099l-.852.459Zm13.866-2.226v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.96 3.105a3.088 3.088 0 0 0-.459.048c-.12.024-.215.054-.284.09a.357.357 0 0 0-.148.123.3.3 0 0 0-.038.15c0 .106.029.181.087.225a.432.432 0 0 0 .255.063c.12 0 .224-.021.315-.063a.96.96 0 0 0 .273-.204v-.432Zm-1.674-1.413c.188-.166.396-.289.624-.369.23-.082.477-.123.739-.123.188 0 .356.031.507.093a1.088 1.088 0 0 1 .627.642c.056.15.084.314.084.492v1.944h-.426a.446.446 0 0 1-.202-.036c-.043-.024-.08-.074-.11-.15l-.066-.171a2.998 2.998 0 0 1-.226.174c-.072.05-.147.093-.225.129a1.41 1.41 0 0 1-.534.102 1.3 1.3 0 0 1-.386-.054.73.73 0 0 1-.483-.432.98.98 0 0 1-.067-.372c0-.112.028-.225.084-.339a.826.826 0 0 1 .291-.315c.139-.096.325-.176.558-.24.234-.064.53-.1.886-.108v-.132c0-.182-.038-.313-.114-.393-.075-.082-.18-.123-.319-.123a.848.848 0 0 0-.459.117 2.17 2.17 0 0 1-.159.081.44.44 0 0 1-.185.036.268.268 0 0 1-.163-.048.417.417 0 0 1-.107-.114l-.169-.291Zm3.985 1.833c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.501.058.196.087.419.087.669 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.069 1.108 1.108 0 0 1-.3-.186v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388 1.881c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.501.058.196.087.419.087.669 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.069 1.108 1.108 0 0 1-.3-.186v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.07.228Zm3.388-1.764v4.491h-.93v-4.491h.93Zm2.444 2.562a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.039c.078-.026.147-.055.207-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.122-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.489.134-.14.295-.251.483-.333.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729 1.613 1.613 0 0 1 .095.771.27.27 0 0 1-.032.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm2.346-.81h1.62v.75h-1.62v-.75Zm3.24 2.247c-.148 0-.279-.021-.393-.063a.822.822 0 0 1-.285-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.123-.045c-.034-.032-.05-.078-.05-.138v-.363l.494-.096.183-.759c.024-.096.092-.144.204-.144h.486v.909h.771v.636h-.77v1.545c0 .072.016.132.05.18a.183.183 0 0 0 .153.069.326.326 0 0 0 .084-.009.466.466 0 0 0 .06-.024.534.534 0 0 1 .048-.024.12.12 0 0 1 .054-.012c.028 0 .05.007.066.021a.203.203 0 0 1 .054.06l.282.441c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm2.475-3.207c.236 0 .45.037.645.111a1.4 1.4 0 0 1 .822.822c.078.196.117.417.117.663 0 .248-.04.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.321 1.797 1.797 0 0 1-.645.111 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .65-.111Zm0 2.517c.214 0 .37-.075.47-.225.103-.152.154-.382.154-.69 0-.308-.051-.537-.153-.687-.1-.15-.257-.225-.471-.225-.22 0-.381.075-.483.225-.102.15-.153.379-.153.687 0 .308.05.538.153.69.102.15.263.225.483.225Zm4.722-2.469v3.111h-.576c-.116 0-.192-.052-.228-.156l-.054-.18c-.06.058-.122.111-.186.159a1.242 1.242 0 0 1-.207.12 1.175 1.175 0 0 1-.237.075c-.084.02-.176.03-.276.03-.17 0-.32-.029-.453-.087a.948.948 0 0 1-.33-.249 1.08 1.08 0 0 1-.204-.375 1.551 1.551 0 0 1-.069-.474v-1.974h.93v1.974c0 .154.035.273.105.357.07.084.173.126.31.126a.653.653 0 0 0 .284-.063 1.18 1.18 0 0 0 .261-.177v-2.217h.93Zm2.798.738a.514.514 0 0 1-.081.081.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.033 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.381c0 .298.057.527.171.687.116.16.275.24.477.24a.676.676 0 0 0 .255-.039.866.866 0 0 0 .162-.09l.12-.093a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.081l.27.333c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.339c.194-.082.418-.123.672-.123.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.442-.465c.112-.096.233-.173.363-.231.132-.06.289-.09.471-.09.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.301.069.471v1.977h-.93v-1.977a.538.538 0 0 0-.105-.354c-.07-.086-.173-.129-.309-.129a.647.647 0 0 0-.288.066c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm82.577 2.838h-.894a.26.26 0 0 1-.162-.048.375.375 0 0 1-.096-.114l-.555-.954a.681.681 0 0 1-.081.18l-.456.774a.646.646 0 0 1-.099.111.212.212 0 0 1-.147.051h-.828l1.044-1.608-1.002-1.503h.894c.066 0 .114.009.144.027.032.016.06.044.084.084l.555.921a1.456 1.456 0 0 1 .105-.213l.396-.693a.318.318 0 0 1 .087-.096.217.217 0 0 1 .117-.03h.852l-1.002 1.461 1.044 1.65Zm3.006-.672v.672h-2.49v-.672h.84v-2.205a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.039.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.143h.768v3.702h.72Zm2.293-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm2.1 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm.205 1.227c0-.072.013-.139.039-.201a.542.542 0 0 1 .111-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.039-.204ZM56.506 135.87h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.669Zm4.044-1.473v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.374 1.533c.112-.096.233-.173.363-.231.132-.06.289-.09.47-.09.17 0 .32.03.45.09a.91.91 0 0 1 .334.246c.09.104.158.229.204.375.046.144.069.301.069.471v1.977h-.93v-1.977a.538.538 0 0 0-.105-.354c-.07-.086-.173-.129-.31-.129a.647.647 0 0 0-.287.066c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm3.444 2.886c-.148 0-.28-.021-.393-.063a.822.822 0 0 1-.285-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.123-.045c-.034-.032-.051-.078-.051-.138v-.363l.495-.096.183-.759c.024-.096.092-.144.204-.144h.486v.909h.77v.636h-.77v1.545a.31.31 0 0 0 .05.18.183.183 0 0 0 .154.069.326.326 0 0 0 .084-.009.466.466 0 0 0 .06-.024.534.534 0 0 1 .048-.024.12.12 0 0 1 .054-.012c.028 0 .05.007.066.021a.203.203 0 0 1 .054.06l.282.441c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm2.183 0c-.148 0-.28-.021-.394-.063a.822.822 0 0 1-.284-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.124-.045c-.033-.032-.05-.078-.05-.138v-.363l.495-.096.183-.759c.024-.096.092-.144.204-.144h.486v.909h.77v.636h-.77v1.545c0 .072.016.132.05.18a.183.183 0 0 0 .153.069.326.326 0 0 0 .085-.009.466.466 0 0 0 .06-.024.534.534 0 0 1 .047-.024.12.12 0 0 1 .055-.012c.028 0 .05.007.066.021a.203.203 0 0 1 .053.06l.283.441c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm2-.894c.07.076.145.13.227.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.058-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.501.058.196.087.419.087.669 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.069 1.108 1.108 0 0 1-.3-.186v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.07.228Zm4.435.297a.234.234 0 0 1-.078.081.193.193 0 0 1-.102.024.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.17-.06.734.734 0 0 0-.22-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.081.086.026.174.055.264.087.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336 1.17 1.17 0 0 1-.41.219 1.837 1.837 0 0 1-.562.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm.527 1.959c0-.072.013-.139.04-.201a.542.542 0 0 1 .11-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.11-.162.537.537 0 0 1-.04-.204Zm0-2.049c0-.072.013-.139.04-.201a.542.542 0 0 1 .11-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.11-.162.537.537 0 0 1-.04-.204Zm2.236 2.484a.522.522 0 0 1-.087.144.485.485 0 0 1-.117.105.512.512 0 0 1-.282.084h-.396l1.704-4.473a.48.48 0 0 1 .468-.315h.396l-1.686 4.455Zm81.363-1.761h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.669Zm4.045-1.473v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm3.282 3.699v.672h-2.49v-.672h.84v-2.205a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.039.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.143h.768v3.702h.72Zm2.292-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm2.1 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm3.307 1.698h-.894a.26.26 0 0 1-.162-.048.375.375 0 0 1-.096-.114l-.555-.954a.681.681 0 0 1-.081.18l-.456.774a.646.646 0 0 1-.099.111.212.212 0 0 1-.147.051h-.828l1.044-1.608-1.002-1.503h.894c.066 0 .114.009.144.027.032.016.06.044.084.084l.555.921a1.456 1.456 0 0 1 .105-.213l.396-.693a.318.318 0 0 1 .087-.096.217.217 0 0 1 .117-.03h.852l-1.002 1.461 1.044 1.65Zm3.006-.672v.672h-2.49v-.672h.84v-2.205a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.039.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.143h.768v3.702h.72Zm2.292-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm2.101 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm1.074-2.673v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81ZM56.506 142.87h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.669Zm4.044-1.473v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.374 1.533c.112-.096.233-.173.363-.231.132-.06.289-.09.47-.09.17 0 .32.03.45.09a.91.91 0 0 1 .334.246c.09.104.158.229.204.375.046.144.069.301.069.471v1.977h-.93v-1.977a.538.538 0 0 0-.105-.354c-.07-.086-.173-.129-.31-.129a.647.647 0 0 0-.287.066c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm3.444 2.886c-.148 0-.28-.021-.393-.063a.822.822 0 0 1-.285-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.123-.045c-.034-.032-.051-.078-.051-.138v-.363l.495-.096.183-.759c.024-.096.092-.144.204-.144h.486v.909h.77v.636h-.77v1.545a.31.31 0 0 0 .05.18.183.183 0 0 0 .154.069.326.326 0 0 0 .084-.009.466.466 0 0 0 .06-.024.534.534 0 0 1 .048-.024.12.12 0 0 1 .054-.012c.028 0 .05.007.066.021a.203.203 0 0 1 .054.06l.282.441c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm2.183 0c-.148 0-.28-.021-.394-.063a.822.822 0 0 1-.284-.183.805.805 0 0 1-.174-.288 1.11 1.11 0 0 1-.06-.375v-1.608h-.264a.18.18 0 0 1-.124-.045c-.033-.032-.05-.078-.05-.138v-.363l.495-.096.183-.759c.024-.096.092-.144.204-.144h.486v.909h.77v.636h-.77v1.545c0 .072.016.132.05.18a.183.183 0 0 0 .153.069.326.326 0 0 0 .085-.009.466.466 0 0 0 .06-.024.534.534 0 0 1 .047-.024.12.12 0 0 1 .055-.012c.028 0 .05.007.066.021a.203.203 0 0 1 .053.06l.283.441c-.12.09-.255.158-.405.204-.15.044-.305.066-.465.066Zm2-.894c.07.076.145.13.227.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.058-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.501.058.196.087.419.087.669 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.069 1.108 1.108 0 0 1-.3-.186v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.07.228Zm4.435.297a.234.234 0 0 1-.078.081.193.193 0 0 1-.102.024.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.17-.06.734.734 0 0 0-.22-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.081.086.026.174.055.264.087.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336 1.17 1.17 0 0 1-.41.219 1.837 1.837 0 0 1-.562.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm.527 1.959c0-.072.013-.139.04-.201a.542.542 0 0 1 .11-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.11-.162.537.537 0 0 1-.04-.204Zm0-2.049c0-.072.013-.139.04-.201a.542.542 0 0 1 .11-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.11-.162.537.537 0 0 1-.04-.204Zm2.236 2.484a.522.522 0 0 1-.087.144.485.485 0 0 1-.117.105.512.512 0 0 1-.282.084h-.396l1.704-4.473a.48.48 0 0 1 .468-.315h.396l-1.686 4.455Zm2.028-2.163h1.62v.75h-1.62v-.75Zm78.585-2.292v2.517h.138a.288.288 0 0 0 .132-.024.33.33 0 0 0 .09-.087l.588-.876a.356.356 0 0 1 .123-.111.357.357 0 0 1 .177-.039h.852l-.804 1.107a.987.987 0 0 1-.27.246.713.713 0 0 1 .126.12c.038.044.074.094.108.15l.876 1.488h-.84a.445.445 0 0 1-.18-.033.297.297 0 0 1-.126-.123l-.588-1.101c-.028-.05-.057-.082-.087-.096a.296.296 0 0 0-.135-.024h-.18v1.377h-.93v-4.491h.93Z\" fill=\"#7B7B7B\"/><path d=\"M79.444 51.468h1.62v.75h-1.62v-.75Zm3.078-.912v3.11h-.93v-3.11h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.718 1.59a.514.514 0 0 1-.08.08.179.179 0 0 1-.112.03.247.247 0 0 1-.126-.032 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.38c0 .299.057.528.171.688.116.16.275.24.477.24a.676.676 0 0 0 .255-.04.866.866 0 0 0 .162-.09l.12-.092a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.08l.27.334c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.22.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.1-.627a1.44 1.44 0 0 1 .296-.507 1.39 1.39 0 0 1 .486-.34c.194-.081.418-.122.672-.122.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.894-.786c.236 0 .45.037.644.11a1.4 1.4 0 0 1 .823.823c.078.196.117.417.117.663 0 .248-.04.472-.117.672a1.433 1.433 0 0 1-.325.507 1.434 1.434 0 0 1-.498.32 1.797 1.797 0 0 1-.644.112 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.328-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.115-.663.078-.198.186-.366.326-.504.142-.138.31-.244.505-.318a1.83 1.83 0 0 1 .65-.111Zm0 2.517c.213 0 .37-.075.47-.225.102-.152.153-.382.153-.69 0-.308-.05-.537-.152-.687-.1-.15-.257-.225-.471-.225-.22 0-.382.075-.484.225-.102.15-.152.379-.152.687 0 .308.05.538.153.69.102.15.263.225.483.225Zm2.79-2.133a2.26 2.26 0 0 1 .186-.156 1.136 1.136 0 0 1 .441-.198c.086-.02.179-.03.279-.03.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.3.069.47v1.978h-.93V51.69a.538.538 0 0 0-.105-.354c-.07-.086-.173-.13-.31-.13a.647.647 0 0 0-.287.067c-.088.042-.174.1-.258.174v2.22h-.93v-3.111h.576c.116 0 .192.052.228.156l.054.18Zm3.076-1.596v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm2.327 1.94a.234.234 0 0 1-.078.082.193.193 0 0 1-.102.024.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.17-.06.734.734 0 0 0-.22-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.08.086.027.174.056.264.088.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336 1.17 1.17 0 0 1-.41.219 1.837 1.837 0 0 1-.562.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm1.526-.68v3.11h-.93v-3.11h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.746 1.224a.536.536 0 0 1-.033.186.422.422 0 0 1-.087.147l-1.3 1.716h1.39v.69h-2.46v-.378a.54.54 0 0 1 .12-.306l1.31-1.737h-1.346v-.69h2.406v.372Zm2.244.81a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.04c.078-.025.147-.054.207-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729c.07.176.105.376.105.6 0 .07-.003.127-.009.17a.27.27 0 0 1-.033.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm4.326-1.041a.234.234 0 0 1-.078.08.193.193 0 0 1-.102.025.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.08.086.027.174.056.264.088.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm.635.633h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.67Zm4.045-1.473v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm3.282 3.699v.672h-2.49v-.672h.84V50.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm2.292-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm2.101 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm3.306 1.698h-.894a.26.26 0 0 1-.162-.048.375.375 0 0 1-.096-.114l-.555-.954a.681.681 0 0 1-.081.18l-.456.774a.646.646 0 0 1-.099.11.212.212 0 0 1-.147.052h-.828l1.044-1.608-1.002-1.503h.894c.066 0 .114.009.144.027.032.016.06.044.084.084l.555.92a1.456 1.456 0 0 1 .105-.213l.396-.692a.318.318 0 0 1 .087-.096.217.217 0 0 1 .117-.03h.852l-1.002 1.46 1.044 1.65Zm3.006-.672v.672h-2.49v-.672h.84V50.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm2.292-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm2.101 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm1.074-2.673v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm3.69 1.94a.234.234 0 0 1-.078.082.193.193 0 0 1-.102.024.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.08.086.027.174.056.264.088.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm1.525-.68v3.11h-.93v-3.11h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.746 1.224a.536.536 0 0 1-.033.186.422.422 0 0 1-.087.147l-1.299 1.716h1.389v.69h-2.46v-.378a.54.54 0 0 1 .12-.306l1.311-1.737h-1.347v-.69h2.406v.372Zm2.244.81a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.04c.078-.025.147-.054.207-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729c.07.176.105.376.105.6 0 .07-.003.127-.009.17a.27.27 0 0 1-.033.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm4.327-1.041a.234.234 0 0 1-.078.08.193.193 0 0 1-.102.025.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.08.086.027.174.056.264.088.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm.634.633h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.67Zm-69.443 6.787v3.11h-.93v-3.11h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm1.866.804c.236 0 .451.037.645.11a1.4 1.4 0 0 1 .822.823c.078.196.117.417.117.663 0 .248-.039.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.32 1.797 1.797 0 0 1-.645.112 1.83 1.83 0 0 1-.65-.111 1.498 1.498 0 0 1-.505-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.214 0 .371-.075.471-.225.102-.152.153-.382.153-.69 0-.308-.05-.537-.153-.687-.1-.15-.257-.225-.47-.225-.22 0-.382.075-.484.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.102.15.263.225.483.225Zm1.933.642v-3.111h.576c.116 0 .192.052.228.156l.05.168c.053-.054.107-.103.163-.147a.957.957 0 0 1 .39-.195.977.977 0 0 1 .249-.03c.188 0 .343.049.465.147a.89.89 0 0 1 .282.387.936.936 0 0 1 .432-.411c.088-.042.18-.073.276-.093a1.452 1.452 0 0 1 .765.05.868.868 0 0 1 .345.232c.094.1.165.224.213.372.048.146.072.312.072.498v1.977h-.93V58.69c0-.322-.138-.483-.414-.483a.427.427 0 0 0-.315.126c-.082.082-.123.2-.123.357v1.977h-.93V58.69c0-.178-.035-.303-.105-.375-.07-.072-.173-.108-.31-.108a.53.53 0 0 0-.24.057.879.879 0 0 0-.21.153v2.25h-.93Zm6.918-1.93a.782.782 0 0 0-.03-.215.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.11.45.237.568a.709.709 0 0 0 .495.174.886.886 0 0 0 .28-.04c.077-.025.146-.054.206-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.5-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .73.729c.07.176.104.376.104.6 0 .07-.003.127-.009.17a.27.27 0 0 1-.033.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm5.14-1.721v3.11h-.576c-.116 0-.192-.051-.228-.155l-.054-.18c-.06.058-.122.11-.186.159a1.242 1.242 0 0 1-.207.12 1.175 1.175 0 0 1-.237.075c-.084.02-.176.03-.276.03-.17 0-.321-.03-.453-.087a.948.948 0 0 1-.33-.25 1.08 1.08 0 0 1-.204-.374 1.551 1.551 0 0 1-.07-.474v-1.974h.93v1.974c0 .154.036.273.106.357.07.084.173.126.309.126a.653.653 0 0 0 .285-.063 1.18 1.18 0 0 0 .26-.177v-2.217h.93Zm1.441.273c.112-.096.233-.173.363-.231.132-.06.29-.09.471-.09.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.3.069.47v1.978h-.93V58.69a.538.538 0 0 0-.105-.354c-.07-.086-.173-.13-.309-.13a.647.647 0 0 0-.288.067c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm2.246 2.367a.51.51 0 0 1 .039-.201.542.542 0 0 1 .111-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.039-.204Zm3.728-1.902a.514.514 0 0 1-.081.08.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.032 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.38c0 .299.057.528.171.688.116.16.275.24.477.24a.676.676 0 0 0 .255-.04.866.866 0 0 0 .162-.09l.12-.092a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.08l.27.334c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.34c.194-.081.418-.122.672-.122.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.893-.786c.236 0 .451.037.645.11a1.4 1.4 0 0 1 .822.823c.078.196.117.417.117.663 0 .248-.039.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.32 1.797 1.797 0 0 1-.645.112 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.214 0 .371-.075.471-.225.102-.152.153-.382.153-.69 0-.308-.051-.537-.153-.687-.1-.15-.257-.225-.471-.225-.22 0-.381.075-.483.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.102.15.263.225.483.225Zm1.932.642v-3.111h.576c.116 0 .192.052.228.156l.051.168c.052-.054.106-.103.162-.147a.957.957 0 0 1 .39-.195.977.977 0 0 1 .249-.03c.188 0 .343.049.465.147a.89.89 0 0 1 .282.387.936.936 0 0 1 .432-.411c.088-.042.18-.073.276-.093a1.452 1.452 0 0 1 .765.05.868.868 0 0 1 .345.232c.094.1.165.224.213.372.048.146.072.312.072.498v1.977h-.93V58.69c0-.322-.138-.483-.414-.483a.427.427 0 0 0-.315.126c-.082.082-.123.2-.123.357v1.977h-.93V58.69c0-.178-.035-.303-.105-.375-.07-.072-.173-.108-.309-.108a.53.53 0 0 0-.24.057.879.879 0 0 0-.21.153v2.25h-.93Zm5.704-.036a.522.522 0 0 1-.087.144.485.485 0 0 1-.117.105.512.512 0 0 1-.282.084h-.396l1.704-4.473a.48.48 0 0 1 .468-.315h.396l-1.686 4.455Zm3.372-1.23a3.088 3.088 0 0 0-.459.048c-.12.024-.215.054-.285.09a.357.357 0 0 0-.147.123.3.3 0 0 0-.039.15c0 .106.029.18.087.225a.432.432 0 0 0 .255.063c.12 0 .225-.021.315-.063a.96.96 0 0 0 .273-.204V59.4Zm-1.674-1.413c.188-.166.396-.29.624-.37.23-.081.476-.122.738-.122.188 0 .357.03.507.093a1.088 1.088 0 0 1 .627.642c.056.15.084.314.084.492v1.944h-.426a.446.446 0 0 1-.201-.036c-.044-.024-.081-.074-.111-.15l-.066-.171a2.998 2.998 0 0 1-.225.174c-.072.05-.147.093-.225.129a1.41 1.41 0 0 1-.534.102c-.142 0-.271-.018-.387-.054a.73.73 0 0 1-.483-.432.98.98 0 0 1-.066-.372c0-.112.028-.225.084-.34a.826.826 0 0 1 .291-.314c.138-.096.324-.176.558-.24.234-.064.529-.1.885-.108v-.132c0-.182-.038-.313-.114-.393-.074-.082-.18-.123-.318-.123a.848.848 0 0 0-.459.117c-.054.03-.107.057-.159.08a.44.44 0 0 1-.186.037.268.268 0 0 1-.162-.048.417.417 0 0 1-.108-.114l-.168-.291Zm3.985 1.833c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.5.058.197.087.42.087.67 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.07 1.108 1.108 0 0 1-.3-.185v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388 1.88a.62.62 0 0 0 .228.163.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.88c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.5.058.197.087.42.087.67 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.07 1.108 1.108 0 0 1-.3-.185v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388-1.764v4.49h-.93v-4.49h.93Zm20.04 2.793v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm2.101 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm3.306 1.698h-.894a.26.26 0 0 1-.162-.048.375.375 0 0 1-.096-.114l-.555-.954a.681.681 0 0 1-.081.18l-.456.774a.646.646 0 0 1-.099.11.212.212 0 0 1-.147.052h-.828l1.044-1.608-1.002-1.503h.894c.066 0 .114.009.144.027.032.016.06.044.084.084l.555.92a1.456 1.456 0 0 1 .105-.213l.396-.692a.318.318 0 0 1 .087-.096.217.217 0 0 1 .117-.03h.852l-1.002 1.46 1.044 1.65Zm-75.21 4.8h1.62v.75h-1.62v-.75Zm3.079-.911v3.11h-.93v-3.11h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.718 1.59a.514.514 0 0 1-.08.08.179.179 0 0 1-.112.03.247.247 0 0 1-.126-.032 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.38c0 .299.057.528.171.688.116.16.275.24.477.24a.676.676 0 0 0 .255-.04.866.866 0 0 0 .162-.09l.12-.092a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.08l.27.334c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.22.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.1-.627a1.44 1.44 0 0 1 .296-.507 1.39 1.39 0 0 1 .486-.34c.194-.081.418-.122.672-.122.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.894-.786c.236 0 .45.037.644.11a1.4 1.4 0 0 1 .823.823c.078.196.117.417.117.663 0 .248-.04.472-.117.672a1.433 1.433 0 0 1-.325.507 1.434 1.434 0 0 1-.498.32 1.797 1.797 0 0 1-.644.112 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.328-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.115-.663.078-.198.186-.366.326-.504.142-.138.31-.244.505-.318a1.83 1.83 0 0 1 .65-.111Zm0 2.517c.213 0 .37-.075.47-.225.102-.152.153-.382.153-.69 0-.308-.05-.537-.152-.687-.1-.15-.257-.225-.471-.225-.22 0-.382.075-.484.225-.102.15-.152.379-.152.687 0 .308.05.538.153.69.102.15.263.225.483.225Zm2.79-2.133a2.26 2.26 0 0 1 .186-.156 1.136 1.136 0 0 1 .441-.198c.086-.02.179-.03.279-.03.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.3.069.47v1.978h-.93V65.69a.538.538 0 0 0-.105-.354c-.07-.086-.173-.13-.31-.13a.647.647 0 0 0-.287.067c-.088.042-.174.1-.258.174v2.22h-.93v-3.111h.576c.116 0 .192.052.228.156l.054.18Zm3.076-1.596v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm2.327 1.94a.234.234 0 0 1-.078.082.193.193 0 0 1-.102.024.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.17-.06.734.734 0 0 0-.22-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.08.086.027.174.056.264.088.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336 1.17 1.17 0 0 1-.41.219 1.837 1.837 0 0 1-.562.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm1.526-.68v3.11h-.93v-3.11h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.746 1.224a.536.536 0 0 1-.033.186.422.422 0 0 1-.087.147l-1.3 1.716h1.39v.69h-2.46v-.378a.54.54 0 0 1 .12-.306l1.31-1.737h-1.346v-.69h2.406v.372Zm2.244.81a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.04c.078-.025.147-.054.207-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729c.07.176.105.376.105.6 0 .07-.003.127-.009.17a.27.27 0 0 1-.033.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm4.326-1.041a.234.234 0 0 1-.078.08.193.193 0 0 1-.102.025.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.08.086.027.174.056.264.088.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm.635.633h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.67Zm4.045-1.473v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm3.282 3.699v.672h-2.49v-.672h.84V64.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm2.292-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm2.101 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm3.306 1.698h-.894a.26.26 0 0 1-.162-.048.375.375 0 0 1-.096-.114l-.555-.954a.681.681 0 0 1-.081.18l-.456.774a.646.646 0 0 1-.099.11.212.212 0 0 1-.147.052h-.828l1.044-1.608-1.002-1.503h.894c.066 0 .114.009.144.027.032.016.06.044.084.084l.555.92a1.456 1.456 0 0 1 .105-.213l.396-.692a.318.318 0 0 1 .087-.096.217.217 0 0 1 .117-.03h.852l-1.002 1.46 1.044 1.65Zm21.511-2.74a.536.536 0 0 1-.033.187.422.422 0 0 1-.087.147l-1.299 1.716h1.389v.69h-2.46v-.378a.54.54 0 0 1 .12-.306l1.311-1.737h-1.347v-.69h2.406v.372Zm2.244.81a.782.782 0 0 0-.03-.215.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.45.237.568a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.04c.078-.025.147-.054.207-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729c.07.176.105.376.105.6 0 .07-.003.127-.009.17a.27.27 0 0 1-.033.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm4.326-1.04a.234.234 0 0 1-.078.08.193.193 0 0 1-.102.025.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.08.086.027.174.056.264.088.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm3.413 1.758v.672h-2.49v-.672h.84V64.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm-77.224 5.473h1.62v.75h-1.62v-.75Zm3.079-.912v3.11h-.93v-3.11h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.718 1.59a.514.514 0 0 1-.08.08.179.179 0 0 1-.112.03.247.247 0 0 1-.126-.032 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.38c0 .299.057.528.171.688.116.16.275.24.477.24a.676.676 0 0 0 .255-.04.866.866 0 0 0 .162-.09l.12-.092a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.08l.27.334c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.22.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.1-.627a1.44 1.44 0 0 1 .296-.507 1.39 1.39 0 0 1 .486-.34c.194-.081.418-.122.672-.122.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.894-.786c.235 0 .45.037.644.11a1.4 1.4 0 0 1 .823.823c.078.196.117.417.117.663 0 .248-.04.472-.117.672a1.433 1.433 0 0 1-.325.507 1.434 1.434 0 0 1-.498.32 1.797 1.797 0 0 1-.644.112 1.83 1.83 0 0 1-.652-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.326-.507 1.88 1.88 0 0 1-.115-.672c0-.246.038-.467.115-.663a1.42 1.42 0 0 1 .326-.504c.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.213 0 .37-.075.47-.225.102-.152.153-.382.153-.69 0-.308-.05-.537-.153-.687-.1-.15-.257-.225-.47-.225-.22 0-.382.075-.484.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.103.15.264.225.484.225Zm2.79-2.133a2.26 2.26 0 0 1 .186-.156 1.136 1.136 0 0 1 .441-.198c.086-.02.179-.03.279-.03.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.3.069.47v1.978h-.93V72.69a.538.538 0 0 0-.105-.354c-.07-.086-.173-.13-.31-.13a.647.647 0 0 0-.287.067c-.088.042-.174.1-.258.174v2.22h-.93v-3.111h.576c.116 0 .192.052.228.156l.054.18Zm3.076-1.596v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm2.328 1.94a.234.234 0 0 1-.078.082.193.193 0 0 1-.102.024.346.346 0 0 1-.133-.027 5.984 5.984 0 0 0-.143-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.22-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.069.028.145.055.231.08.086.027.174.056.264.088.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.043.09.064.198.064.324 0 .154-.029.296-.085.426a.898.898 0 0 1-.251.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.562.078c-.105 0-.212-.01-.317-.03a2.26 2.26 0 0 1-.31-.081 1.786 1.786 0 0 1-.272-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.053 0 .102.012.144.036l.14.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .088-.186.202.202 0 0 0-.064-.153.528.528 0 0 0-.164-.102 1.672 1.672 0 0 0-.235-.081 5.792 5.792 0 0 1-.263-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.064-.363c0-.132.026-.257.076-.375a.887.887 0 0 1 .23-.315c.103-.09.23-.161.385-.213.153-.054.334-.081.54-.081a1.712 1.712 0 0 1 .62.114 1.356 1.356 0 0 1 .454.288l-.21.327Zm1.525-.68v3.11h-.93v-3.11h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.746 1.224a.536.536 0 0 1-.033.186.422.422 0 0 1-.087.147l-1.299 1.716h1.389v.69h-2.46v-.378a.54.54 0 0 1 .12-.306l1.311-1.737h-1.347v-.69h2.406v.372Zm2.244.81a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.04c.078-.025.147-.054.207-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729c.07.176.105.376.105.6 0 .07-.003.127-.009.17a.27.27 0 0 1-.033.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm4.327-1.041a.234.234 0 0 1-.078.08.193.193 0 0 1-.102.025.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.08.086.027.174.056.264.088.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm.634.633h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.67Zm4.045-1.473v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm3.282 3.699v.672h-2.49v-.672h.84V71.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm2.292-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm2.101 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm3.306 1.698h-.894a.26.26 0 0 1-.162-.048.375.375 0 0 1-.096-.114l-.555-.954a.681.681 0 0 1-.081.18l-.456.774a.646.646 0 0 1-.099.11.212.212 0 0 1-.147.052h-.828l1.044-1.608-1.002-1.503h.894c.066 0 .114.009.144.027.032.016.06.044.084.084l.555.92a1.456 1.456 0 0 1 .105-.213l.396-.692a.318.318 0 0 1 .087-.096.217.217 0 0 1 .117-.03h.852l-1.002 1.46 1.044 1.65Zm3.006-.672v.672h-2.49v-.672h.84V71.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm2.292-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm2.101 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm1.074-2.673v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm3.69 1.94a.234.234 0 0 1-.078.082.193.193 0 0 1-.102.024.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.08.086.027.174.056.264.088.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm1.526-.68v3.11h-.93v-3.11h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.745 1.224a.536.536 0 0 1-.033.186.422.422 0 0 1-.087.147l-1.299 1.716h1.389v.69h-2.46v-.378a.54.54 0 0 1 .12-.306l1.311-1.737h-1.347v-.69h2.406v.372Zm2.244.81a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.04c.078-.025.147-.054.207-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729c.07.176.105.376.105.6 0 .07-.003.127-.009.17a.27.27 0 0 1-.033.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm4.327-1.041a.234.234 0 0 1-.078.08.193.193 0 0 1-.102.025.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.08.086.027.174.056.264.088.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm.635.633h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.67Zm6.138 2.226v.672h-2.49v-.672h.84V71.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm-75.483 4.56v3.112h-.93v-3.111h.93Zm.096-.851a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm1.867.804c.236 0 .45.037.644.11a1.4 1.4 0 0 1 .823.823c.078.196.117.417.117.663 0 .248-.04.472-.117.672a1.433 1.433 0 0 1-.325.507 1.434 1.434 0 0 1-.498.32 1.797 1.797 0 0 1-.644.112 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.328-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.115-.663.078-.198.186-.366.326-.504.142-.138.31-.244.505-.318a1.83 1.83 0 0 1 .65-.111Zm0 2.517c.213 0 .37-.075.47-.225.102-.152.153-.382.153-.69 0-.308-.05-.537-.152-.687-.1-.15-.257-.225-.471-.225-.22 0-.382.075-.484.225-.102.15-.152.379-.152.687 0 .308.05.538.153.69.102.15.263.225.483.225Zm1.932.642v-3.111h.576c.116 0 .192.052.228.156l.05.168c.053-.054.107-.103.163-.147a.957.957 0 0 1 .39-.195.977.977 0 0 1 .249-.03c.188 0 .343.049.465.147a.89.89 0 0 1 .282.387.936.936 0 0 1 .432-.411c.088-.042.18-.073.276-.093a1.452 1.452 0 0 1 .765.05.868.868 0 0 1 .345.232c.094.1.165.224.213.372.048.146.072.312.072.498v1.977h-.93V79.69c0-.322-.138-.483-.414-.483a.427.427 0 0 0-.315.126c-.082.082-.123.2-.123.357v1.977h-.93V79.69c0-.178-.035-.303-.105-.375-.07-.072-.173-.108-.31-.108a.53.53 0 0 0-.24.057.879.879 0 0 0-.21.153v2.25h-.93Zm6.918-1.93a.782.782 0 0 0-.03-.215.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.11.45.237.568a.709.709 0 0 0 .495.174.886.886 0 0 0 .28-.04c.077-.025.146-.054.206-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.5-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .73.729c.07.176.104.376.104.6 0 .07-.003.127-.009.17a.27.27 0 0 1-.033.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm5.14-1.721v3.11h-.576c-.116 0-.192-.051-.228-.155l-.054-.18c-.06.058-.122.11-.186.159a1.242 1.242 0 0 1-.207.12 1.175 1.175 0 0 1-.237.075c-.084.02-.176.03-.276.03-.17 0-.321-.03-.453-.087a.948.948 0 0 1-.33-.25 1.08 1.08 0 0 1-.204-.374 1.551 1.551 0 0 1-.07-.474v-1.974h.93v1.974c0 .154.036.273.106.357.07.084.173.126.309.126a.653.653 0 0 0 .285-.063 1.18 1.18 0 0 0 .26-.177v-2.217h.93Zm1.442.273c.112-.096.233-.173.363-.231.132-.06.289-.09.47-.09.17 0 .32.03.45.09a.91.91 0 0 1 .334.246c.09.104.158.229.204.375.046.144.069.3.069.47v1.978h-.93V79.69a.538.538 0 0 0-.105-.354c-.07-.086-.173-.13-.31-.13a.647.647 0 0 0-.287.067c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm2.246 2.367a.51.51 0 0 1 .039-.201.542.542 0 0 1 .111-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.039-.204Zm3.727-1.902a.514.514 0 0 1-.081.08.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.032 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.38c0 .299.057.528.171.688.116.16.275.24.477.24a.676.676 0 0 0 .255-.04.866.866 0 0 0 .162-.09l.12-.092a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.08l.27.334c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.34c.194-.081.418-.122.672-.122.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.893-.786c.236 0 .451.037.645.11a1.4 1.4 0 0 1 .822.823c.078.196.117.417.117.663 0 .248-.039.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.32 1.797 1.797 0 0 1-.645.112 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.214 0 .371-.075.471-.225.102-.152.153-.382.153-.69 0-.308-.051-.537-.153-.687-.1-.15-.257-.225-.471-.225-.22 0-.381.075-.483.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.102.15.263.225.483.225Zm1.933.642v-3.111h.576c.116 0 .192.052.228.156l.051.168c.052-.054.106-.103.162-.147a.957.957 0 0 1 .39-.195.977.977 0 0 1 .249-.03c.188 0 .343.049.465.147a.89.89 0 0 1 .282.387.936.936 0 0 1 .432-.411c.088-.042.18-.073.276-.093a1.452 1.452 0 0 1 .765.05.868.868 0 0 1 .345.232c.094.1.165.224.213.372.048.146.072.312.072.498v1.977h-.93V79.69c0-.322-.138-.483-.414-.483a.427.427 0 0 0-.315.126c-.082.082-.123.2-.123.357v1.977h-.93V79.69c0-.178-.035-.303-.105-.375-.07-.072-.173-.108-.309-.108a.53.53 0 0 0-.24.057.879.879 0 0 0-.21.153v2.25h-.93Zm5.703-.036a.522.522 0 0 1-.087.144.485.485 0 0 1-.117.105.512.512 0 0 1-.282.084h-.396l1.704-4.473a.48.48 0 0 1 .468-.315h.396l-1.686 4.455Zm3.373-1.23a3.088 3.088 0 0 0-.459.048c-.12.024-.215.054-.285.09a.357.357 0 0 0-.147.123.3.3 0 0 0-.039.15c0 .106.029.18.087.225a.432.432 0 0 0 .255.063c.12 0 .225-.021.315-.063a.96.96 0 0 0 .273-.204V80.4Zm-1.674-1.413c.188-.166.396-.29.624-.37.23-.081.476-.122.738-.122.188 0 .357.03.507.093a1.088 1.088 0 0 1 .627.642c.056.15.084.314.084.492v1.944h-.426a.446.446 0 0 1-.201-.036c-.044-.024-.081-.074-.111-.15l-.066-.171a2.998 2.998 0 0 1-.225.174c-.072.05-.147.093-.225.129a1.41 1.41 0 0 1-.534.102c-.142 0-.271-.018-.387-.054a.73.73 0 0 1-.483-.432.98.98 0 0 1-.066-.372c0-.112.028-.225.084-.34a.826.826 0 0 1 .291-.314c.138-.096.324-.176.558-.24.234-.064.529-.1.885-.108v-.132c0-.182-.038-.313-.114-.393-.074-.082-.18-.123-.318-.123a.848.848 0 0 0-.459.117c-.054.03-.107.057-.159.08a.44.44 0 0 1-.186.037.268.268 0 0 1-.162-.048.417.417 0 0 1-.108-.114l-.168-.291Zm3.984 1.833c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.5.058.197.087.42.087.67 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.07 1.108 1.108 0 0 1-.3-.185v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388 1.88a.62.62 0 0 0 .228.163.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.88c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.5.058.197.087.42.087.67 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.07 1.108 1.108 0 0 1-.3-.185v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388-1.764v4.49h-.93v-4.49h.93Zm2.444 2.562a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.04c.078-.025.147-.054.207-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729c.07.176.105.376.105.6 0 .07-.003.127-.009.17a.27.27 0 0 1-.033.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm2.346-.81h1.62v.75h-1.62v-.75Zm3.078-.912v3.11h-.93v-3.11h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.719 1.59a.514.514 0 0 1-.081.08.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.032 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.38c0 .299.057.528.171.688.116.16.275.24.477.24a.676.676 0 0 0 .255-.04.866.866 0 0 0 .162-.09l.12-.092a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.08l.27.334c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.34c.194-.081.418-.122.672-.122.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.893-.786c.236 0 .451.037.645.11a1.4 1.4 0 0 1 .822.823c.078.196.117.417.117.663 0 .248-.039.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.32 1.797 1.797 0 0 1-.645.112 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.214 0 .371-.075.471-.225.102-.152.153-.382.153-.69 0-.308-.051-.537-.153-.687-.1-.15-.257-.225-.471-.225-.22 0-.381.075-.483.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.102.15.263.225.483.225Zm2.791-2.133a2.26 2.26 0 0 1 .186-.156 1.136 1.136 0 0 1 .441-.198c.086-.02.179-.03.279-.03.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.3.069.47v1.978h-.93V79.69a.538.538 0 0 0-.105-.354c-.07-.086-.173-.13-.309-.13a.647.647 0 0 0-.288.067c-.088.042-.174.1-.258.174v2.22h-.93v-3.111h.576c.116 0 .192.052.228.156l.054.18Zm2.441.576h1.62v.75h-1.62v-.75Zm4.965 1.527v.672h-2.49v-.672h.84V78.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm2.292-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm2.101 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm3.168 1.026v.672h-2.49v-.672h.84V78.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm-74.452 4.56v3.112h-.93v-3.111h.93Zm.096-.851a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm1.866.804c.236 0 .451.037.645.11a1.4 1.4 0 0 1 .822.823c.078.196.117.417.117.663 0 .248-.039.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.32 1.797 1.797 0 0 1-.645.112 1.83 1.83 0 0 1-.65-.111 1.498 1.498 0 0 1-.505-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.214 0 .371-.075.471-.225.102-.152.153-.382.153-.69 0-.308-.05-.537-.153-.687-.1-.15-.257-.225-.47-.225-.22 0-.382.075-.484.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.102.15.263.225.483.225Zm1.933.642v-3.111h.576c.116 0 .192.052.228.156l.05.168c.053-.054.107-.103.163-.147a.957.957 0 0 1 .39-.195.977.977 0 0 1 .249-.03c.188 0 .343.049.465.147a.89.89 0 0 1 .282.387.936.936 0 0 1 .432-.411c.088-.042.18-.073.276-.093a1.452 1.452 0 0 1 .765.05.868.868 0 0 1 .345.232c.094.1.165.224.213.372.048.146.072.312.072.498v1.977h-.93V86.69c0-.322-.138-.483-.414-.483a.427.427 0 0 0-.315.126c-.082.082-.123.2-.123.357v1.977h-.93V86.69c0-.178-.035-.303-.105-.375-.07-.072-.173-.108-.31-.108a.53.53 0 0 0-.24.057.879.879 0 0 0-.21.153v2.25h-.93Zm6.918-1.93a.782.782 0 0 0-.03-.215.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.11.45.237.568a.709.709 0 0 0 .495.174.886.886 0 0 0 .28-.04c.077-.025.146-.054.206-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.5-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .73.729c.07.176.104.376.104.6 0 .07-.003.127-.009.17a.27.27 0 0 1-.033.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015H93.09Zm5.14-1.721v3.11h-.576c-.116 0-.192-.051-.228-.155l-.054-.18c-.06.058-.122.11-.186.159a1.242 1.242 0 0 1-.207.12 1.175 1.175 0 0 1-.237.075c-.084.02-.176.03-.276.03-.17 0-.321-.03-.453-.087a.948.948 0 0 1-.33-.25 1.08 1.08 0 0 1-.204-.374 1.551 1.551 0 0 1-.07-.474v-1.974h.93v1.974c0 .154.036.273.106.357.07.084.173.126.309.126a.653.653 0 0 0 .285-.063 1.18 1.18 0 0 0 .26-.177v-2.217h.93Zm1.442.273c.111-.096.232-.173.362-.231.132-.06.289-.09.471-.09.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.3.069.47v1.978h-.93V86.69a.538.538 0 0 0-.105-.354c-.07-.086-.173-.13-.309-.13a.643.643 0 0 0-.287.067c-.088.042-.175.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm2.245 2.367a.51.51 0 0 1 .039-.201.542.542 0 0 1 .111-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.039-.204Zm3.728-1.902a.514.514 0 0 1-.081.08.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.032 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.38c0 .299.057.528.171.688.116.16.275.24.477.24a.676.676 0 0 0 .255-.04.866.866 0 0 0 .162-.09l.12-.092a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.08l.27.334c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.34c.194-.081.418-.122.672-.122.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.893-.786c.236 0 .451.037.645.11a1.4 1.4 0 0 1 .822.823c.078.196.117.417.117.663 0 .248-.039.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.32 1.797 1.797 0 0 1-.645.112 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.214 0 .371-.075.471-.225.102-.152.153-.382.153-.69 0-.308-.051-.537-.153-.687-.1-.15-.257-.225-.471-.225-.22 0-.381.075-.483.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.102.15.263.225.483.225Zm28.676-1.557h1.62v.75h-1.62v-.75Zm3.078-.912v3.11h-.93v-3.11h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.719 1.59a.514.514 0 0 1-.081.08.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.032 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.38c0 .299.057.528.171.688.116.16.275.24.477.24a.676.676 0 0 0 .255-.04.866.866 0 0 0 .162-.09l.12-.092a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.08l.27.334c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.34c.194-.081.418-.122.672-.122.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.893-.786c.236 0 .451.037.645.11a1.4 1.4 0 0 1 .822.823c.078.196.117.417.117.663 0 .248-.039.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.32 1.797 1.797 0 0 1-.645.112 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.214 0 .371-.075.471-.225.102-.152.153-.382.153-.69 0-.308-.051-.537-.153-.687-.1-.15-.257-.225-.471-.225-.22 0-.381.075-.483.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.102.15.263.225.483.225Zm2.79-2.133a2.26 2.26 0 0 1 .186-.156 1.136 1.136 0 0 1 .441-.198c.086-.02.179-.03.279-.03.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.3.069.47v1.978h-.93V86.69a.538.538 0 0 0-.105-.354c-.07-.086-.173-.13-.309-.13a.647.647 0 0 0-.288.067c-.088.042-.174.1-.258.174v2.22h-.93v-3.111h.576c.116 0 .192.052.228.156l.054.18Zm2.441.576h1.62v.75h-1.62v-.75Zm4.965 1.527v.672h-2.49v-.672h.84V85.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm2.293-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.05-.132.05h-.27v1.006h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.46 2.022-2.717h.888v2.673h.45Zm-78.213 6.499h1.62v.75h-1.62v-.75Zm3.078-.912v3.11h-.93v-3.11h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.719 1.59a.514.514 0 0 1-.081.08.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.032 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.04.38c0 .299.058.528.172.688.116.16.275.24.477.24a.676.676 0 0 0 .255-.04.866.866 0 0 0 .162-.09l.12-.092a.231.231 0 0 1 .14-.042c.075 0 .13.027.169.08l.27.334c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.34c.194-.081.418-.122.672-.122.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.893-.786c.236 0 .45.037.645.11a1.4 1.4 0 0 1 .822.823c.078.196.117.417.117.663 0 .248-.04.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.32 1.797 1.797 0 0 1-.645.112 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .65-.111Zm0 2.517c.214 0 .37-.075.47-.225.103-.152.154-.382.154-.69 0-.308-.051-.537-.153-.687-.1-.15-.257-.225-.471-.225-.22 0-.381.075-.483.225-.102.15-.153.379-.153.687 0 .308.05.538.153.69.102.15.263.225.483.225Zm2.79-2.133a2.26 2.26 0 0 1 .186-.156 1.136 1.136 0 0 1 .441-.198c.086-.02.18-.03.28-.03.17 0 .32.03.45.09a.91.91 0 0 1 .332.246c.09.104.158.229.204.375.046.144.07.3.07.47v1.978h-.93V93.69a.538.538 0 0 0-.106-.354c-.07-.086-.173-.13-.309-.13a.647.647 0 0 0-.288.067c-.088.042-.174.1-.258.174v2.22h-.93v-3.111h.576c.116 0 .192.052.228.156l.054.18Zm3.077-1.596v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm47.637 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.25l-.084-.473v-.858h.81Zm2.327 1.94a.234.234 0 0 1-.078.082.193.193 0 0 1-.102.024.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.08.086.027.174.056.264.088.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm1.526-.68v3.11h-.93v-3.11h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.745 1.224a.536.536 0 0 1-.033.186.422.422 0 0 1-.087.147l-1.299 1.716h1.389v.69h-2.46v-.378a.54.54 0 0 1 .12-.306l1.311-1.737h-1.347v-.69h2.406v.372Zm2.245.81a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.04c.078-.025.147-.054.207-.086l.168-.087a.358.358 0 0 1 .162-.04c.074 0 .13.028.168.082l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.35.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729c.07.176.105.376.105.6 0 .07-.003.127-.009.17a.27.27 0 0 1-.033.106.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm4.326-1.041a.234.234 0 0 1-.078.08.193.193 0 0 1-.102.025.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.08.086.027.174.056.264.088.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm-73.771 6.27c.236 0 .45.038.645.112a1.4 1.4 0 0 1 .822.822c.078.196.117.417.117.663 0 .248-.04.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.321 1.797 1.797 0 0 1-.645.111 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663a1.44 1.44 0 0 1 .327-.504c.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .65-.111Zm0 2.518c.214 0 .37-.075.47-.225.103-.152.154-.382.154-.69 0-.308-.051-.537-.153-.687-.1-.15-.257-.225-.471-.225-.22 0-.381.075-.483.225-.102.15-.153.379-.153.687 0 .308.05.538.153.69.102.15.263.225.483.225Zm1.932.642v-3.111h.576c.116 0 .192.052.228.156l.051.168c.052-.054.106-.103.162-.147a.957.957 0 0 1 .39-.195.977.977 0 0 1 .25-.03c.187 0 .342.049.464.147a.89.89 0 0 1 .282.387.932.932 0 0 1 .432-.411c.088-.042.18-.073.276-.093a1.452 1.452 0 0 1 .765.05.868.868 0 0 1 .345.232c.094.1.165.224.213.372.048.146.072.312.072.498v1.977h-.93v-1.977c0-.322-.138-.483-.414-.483a.427.427 0 0 0-.315.126c-.082.082-.123.201-.123.357v1.977h-.93v-1.977c0-.178-.035-.303-.105-.375-.07-.072-.173-.108-.309-.108a.53.53 0 0 0-.24.057.879.879 0 0 0-.21.153v2.25h-.93Zm6.919-1.929a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435H90.4Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.039c.078-.026.147-.055.207-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.122-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.49.134-.14.295-.25.483-.332.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729 1.613 1.613 0 0 1 .095.771.27.27 0 0 1-.032.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015H89.23Zm53.7-1.386a2.26 2.26 0 0 1 .186-.156 1.136 1.136 0 0 1 .441-.198c.086-.02.179-.03.279-.03.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.301.069.471v1.977h-.93v-1.977a.538.538 0 0 0-.105-.354c-.07-.086-.173-.129-.309-.129a.647.647 0 0 0-.288.066c-.088.042-.174.1-.258.174v2.22h-.93v-3.111h.576c.116 0 .192.052.228.156l.054.18Zm2.441.576h1.62v.75h-1.62v-.75Zm4.965 1.527v.672h-2.49v-.672h.84V99.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm2.292-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm3.169 1.026v.672h-2.49v-.672h.84V99.79a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.04.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.142h.768v3.702h.72Zm-75.805 5.473h1.62v.75h-1.62v-.75Zm3.079-.912v3.111h-.93v-3.111h.93Zm.096-.852a.502.502 0 0 1-.046.21.573.573 0 0 1-1.034 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .524.333.51.51 0 0 1 .046.213Zm2.718 1.59a.514.514 0 0 1-.08.081.179.179 0 0 1-.112.03.247.247 0 0 1-.126-.033 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.381c0 .298.057.527.171.687.116.16.275.24.477.24a.676.676 0 0 0 .255-.039.866.866 0 0 0 .162-.09l.12-.093a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.081l.27.333c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.22.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.1-.627a1.44 1.44 0 0 1 .296-.507 1.39 1.39 0 0 1 .486-.339c.194-.082.418-.123.672-.123.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.893-.786c.236 0 .451.037.645.111a1.4 1.4 0 0 1 .822.822c.078.196.117.417.117.663 0 .248-.039.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.321 1.797 1.797 0 0 1-.645.111 1.83 1.83 0 0 1-.65-.111 1.498 1.498 0 0 1-.505-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.214 0 .371-.075.471-.225.102-.152.153-.382.153-.69 0-.308-.05-.537-.153-.687-.1-.15-.257-.225-.47-.225-.22 0-.382.075-.484.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.102.15.263.225.483.225Zm2.79-2.133a2.26 2.26 0 0 1 .187-.156 1.136 1.136 0 0 1 .441-.198c.086-.02.179-.03.279-.03.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.301.069.471v1.977h-.93v-1.977a.538.538 0 0 0-.105-.354c-.07-.086-.173-.129-.31-.129a.647.647 0 0 0-.287.066c-.088.042-.174.1-.258.174v2.22h-.93v-3.111h.576c.116 0 .192.052.228.156l.054.18Zm57.548.345a.234.234 0 0 1-.078.081.193.193 0 0 1-.102.024.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.081.086.026.174.055.264.087.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm1.526-.681v3.111h-.93v-3.111h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.746 1.224a.536.536 0 0 1-.033.186.422.422 0 0 1-.087.147l-1.299 1.716h1.389v.69h-2.46v-.378a.54.54 0 0 1 .12-.306l1.311-1.737h-1.347v-.69h2.406v.372Zm1.312-.372v3.111h-.93v-3.111h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm-73.07 7.852v3.111h-.93v-3.111h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm1.867.804c.236 0 .45.037.644.111a1.4 1.4 0 0 1 .823.822c.078.196.117.417.117.663 0 .248-.04.472-.118.672a1.433 1.433 0 0 1-.323.507 1.434 1.434 0 0 1-.499.321 1.797 1.797 0 0 1-.644.111 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.505-.321 1.467 1.467 0 0 1-.326-.507 1.88 1.88 0 0 1-.115-.672c0-.246.039-.467.115-.663.078-.198.186-.366.326-.504.142-.138.31-.244.505-.318a1.83 1.83 0 0 1 .65-.111Zm0 2.517c.213 0 .37-.075.47-.225.103-.152.153-.382.153-.69 0-.308-.05-.537-.153-.687-.1-.15-.257-.225-.47-.225-.22 0-.382.075-.484.225-.102.15-.153.379-.153.687 0 .308.052.538.153.69.102.15.263.225.483.225Zm1.932.642v-3.111h.576c.116 0 .192.052.228.156l.05.168c.053-.054.107-.103.163-.147a.957.957 0 0 1 .39-.195.977.977 0 0 1 .249-.03c.188 0 .343.049.465.147a.89.89 0 0 1 .282.387.936.936 0 0 1 .432-.411c.088-.042.18-.073.276-.093a1.452 1.452 0 0 1 .765.051.868.868 0 0 1 .345.231c.094.1.165.224.213.372.048.146.072.312.072.498v1.977h-.93v-1.977c0-.322-.138-.483-.414-.483a.427.427 0 0 0-.315.126c-.082.082-.123.201-.123.357v1.977h-.93v-1.977c0-.178-.035-.303-.105-.375-.07-.072-.173-.108-.31-.108a.53.53 0 0 0-.24.057.879.879 0 0 0-.21.153v2.25h-.93Zm6.918-1.929a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.11.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .28-.039c.077-.026.146-.055.206-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.5-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.489.134-.14.295-.251.483-.333.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .73.729c.07.176.104.376.104.6 0 .07-.003.127-.009.171a.27.27 0 0 1-.033.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm5.14-1.722v3.111h-.576c-.116 0-.192-.052-.228-.156l-.054-.18c-.06.058-.122.111-.186.159a1.242 1.242 0 0 1-.207.12 1.175 1.175 0 0 1-.237.075c-.084.02-.176.03-.276.03-.17 0-.321-.029-.453-.087a.948.948 0 0 1-.33-.249 1.08 1.08 0 0 1-.204-.375 1.551 1.551 0 0 1-.07-.474v-1.974h.93v1.974c0 .154.036.273.106.357.07.084.173.126.309.126a.653.653 0 0 0 .285-.063 1.18 1.18 0 0 0 .26-.177v-2.217h.93Zm48.56.336a2.26 2.26 0 0 1 .186-.156 1.136 1.136 0 0 1 .441-.198c.086-.02.179-.03.279-.03.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.301.069.471v1.977h-.93v-1.977a.538.538 0 0 0-.105-.354c-.07-.086-.173-.129-.309-.129a.647.647 0 0 0-.288.066c-.088.042-.174.1-.258.174v2.22h-.93v-3.111h.576c.116 0 .192.052.228.156l.054.18Zm2.441.576h1.62v.75h-1.62v-.75Zm4.965 1.527v.672h-2.49v-.672h.84v-2.205a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.039.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.143h.768v3.702h.72Zm2.293-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm-74.02 5.587v3.111h-.93v-3.111h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.719 1.59a.514.514 0 0 1-.082.081.179.179 0 0 1-.11.03.247.247 0 0 1-.126-.033 4.22 4.22 0 0 0-.124-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.296.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.04.381c0 .298.058.527.172.687.116.16.275.24.477.24a.676.676 0 0 0 .255-.039.866.866 0 0 0 .162-.09l.12-.093a.231.231 0 0 1 .14-.042c.075 0 .13.027.168.081l.27.333c-.095.11-.197.2-.302.27a1.604 1.604 0 0 1-.328.162c-.11.038-.22.064-.332.078a2.312 2.312 0 0 1-.328.024c-.19 0-.371-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.113-.684c0-.224.032-.433.099-.627a1.44 1.44 0 0 1 .296-.507 1.39 1.39 0 0 1 .486-.339c.195-.082.419-.123.672-.123.244 0 .459.039.642.117.184.078.35.192.498.342l-.246.327Zm1.893-.786c.236 0 .45.037.645.111a1.4 1.4 0 0 1 .822.822c.078.196.117.417.117.663 0 .248-.04.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.321 1.797 1.797 0 0 1-.645.111 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .65-.111Zm0 2.517c.214 0 .37-.075.47-.225.103-.152.154-.382.154-.69 0-.308-.051-.537-.153-.687-.1-.15-.257-.225-.471-.225-.22 0-.381.075-.483.225-.102.15-.153.379-.153.687 0 .308.05.538.153.69.102.15.263.225.483.225Zm2.79-2.133a2.26 2.26 0 0 1 .186-.156 1.136 1.136 0 0 1 .441-.198c.086-.02.18-.03.28-.03.17 0 .32.03.45.09a.91.91 0 0 1 .332.246c.09.104.158.229.204.375.046.144.07.301.07.471v1.977h-.93v-1.977a.538.538 0 0 0-.106-.354c-.07-.086-.173-.129-.309-.129a.647.647 0 0 0-.288.066c-.088.042-.174.1-.258.174v2.22h-.93v-3.111h.576c.116 0 .192.052.228.156l.054.18Zm3.077-1.596v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm2.327 1.941a.234.234 0 0 1-.078.081.193.193 0 0 1-.102.024.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.22-.03.463.463 0 0 0-.272.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.23.081.087.026.175.055.265.087.09.032.178.07.264.114a.93.93 0 0 1 .23.159.675.675 0 0 1 .163.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.31-.081 1.786 1.786 0 0 1-.272-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.14.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .184-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .62.114 1.356 1.356 0 0 1 .454.288l-.21.327Zm1.526-.681v3.111h-.93v-3.111h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.036 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .526.333c.03.066.044.137.044.213Zm2.745 1.224a.536.536 0 0 1-.033.186.422.422 0 0 1-.087.147l-1.299 1.716h1.389v.69h-2.46v-.378a.54.54 0 0 1 .12-.306l1.311-1.737h-1.347v-.69h2.406v.372Zm38.567 1.041v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm1.075-2.673v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm2.327 1.941a.234.234 0 0 1-.078.081.193.193 0 0 1-.102.024.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.081.086.026.174.055.264.087.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm1.526-.681v3.111h-.93v-3.111h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.745 1.224a.536.536 0 0 1-.033.186.422.422 0 0 1-.087.147l-1.299 1.716h1.389v.69h-2.46v-.378a.54.54 0 0 1 .12-.306l1.311-1.737h-1.347v-.69h2.406v.372Zm2.245.81a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.039c.078-.026.147-.055.207-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.489.134-.14.295-.251.483-.333.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729c.07.176.105.376.105.6 0 .07-.003.127-.009.171a.27.27 0 0 1-.033.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm4.326-1.041a.234.234 0 0 1-.078.081.193.193 0 0 1-.102.024.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.081.086.026.174.055.264.087.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm1.526-.681v3.111h-.93v-3.111h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm-74.288 7.852v3.111h-.93v-3.111h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm1.867.804c.236 0 .45.037.645.111a1.4 1.4 0 0 1 .822.822c.078.196.117.417.117.663 0 .248-.04.472-.118.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.497.321 1.797 1.797 0 0 1-.645.111 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.505-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.113-.672c0-.246.038-.467.114-.663.078-.198.186-.366.326-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.213 0 .37-.075.47-.225.103-.152.154-.382.154-.69 0-.308-.051-.537-.153-.687-.1-.15-.258-.225-.472-.225-.22 0-.38.075-.482.225-.102.15-.153.379-.153.687 0 .308.05.538.153.69.102.15.263.225.483.225Zm1.932.642v-3.111h.576c.116 0 .192.052.228.156l.05.168c.053-.054.107-.103.163-.147a.957.957 0 0 1 .39-.195.977.977 0 0 1 .249-.03c.188 0 .343.049.465.147a.89.89 0 0 1 .282.387.936.936 0 0 1 .432-.411c.088-.042.18-.073.276-.093a1.452 1.452 0 0 1 .765.051.868.868 0 0 1 .345.231c.094.1.165.224.213.372.048.146.072.312.072.498v1.977h-.93v-1.977c0-.322-.138-.483-.414-.483a.427.427 0 0 0-.315.126c-.082.082-.123.201-.123.357v1.977h-.93v-1.977c0-.178-.035-.303-.105-.375-.07-.072-.173-.108-.31-.108a.53.53 0 0 0-.24.057.879.879 0 0 0-.21.153v2.25h-.93Zm6.918-1.929a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.11.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .28-.039c.077-.026.146-.055.206-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.5-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.489.134-.14.295-.251.483-.333.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .73.729c.07.176.104.376.104.6 0 .07-.003.127-.009.171a.27.27 0 0 1-.033.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm5.14-1.722v3.111h-.576c-.116 0-.192-.052-.228-.156l-.054-.18c-.06.058-.122.111-.186.159a1.242 1.242 0 0 1-.207.12 1.175 1.175 0 0 1-.237.075c-.084.02-.176.03-.276.03-.17 0-.321-.029-.453-.087a.948.948 0 0 1-.33-.249 1.08 1.08 0 0 1-.204-.375 1.551 1.551 0 0 1-.07-.474v-1.974h.93v1.974c0 .154.036.273.106.357.07.084.173.126.309.126a.653.653 0 0 0 .285-.063 1.18 1.18 0 0 0 .26-.177v-2.217h.93Zm1.442.273c.112-.096.233-.173.363-.231.132-.06.289-.09.47-.09.17 0 .32.03.45.09.133.058.244.14.334.246.09.104.158.229.204.375.046.144.069.301.069.471v1.977h-.93v-1.977a.538.538 0 0 0-.105-.354c-.07-.086-.173-.129-.31-.129a.647.647 0 0 0-.287.066c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm2.245 2.367c0-.072.013-.139.039-.201a.542.542 0 0 1 .111-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.039-.204Zm3.728-1.902a.514.514 0 0 1-.081.081.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.033 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.381c0 .298.057.527.171.687.116.16.275.24.477.24a.676.676 0 0 0 .255-.039.866.866 0 0 0 .162-.09l.12-.093a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.081l.27.333c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.339c.194-.082.418-.123.672-.123.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.893-.786c.236 0 .451.037.645.111a1.4 1.4 0 0 1 .822.822c.078.196.117.417.117.663 0 .248-.039.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.321 1.797 1.797 0 0 1-.645.111 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.214 0 .371-.075.471-.225.102-.152.153-.382.153-.69 0-.308-.051-.537-.153-.687-.1-.15-.257-.225-.471-.225-.22 0-.381.075-.483.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.102.15.263.225.483.225Zm1.933.642v-3.111h.576c.116 0 .192.052.228.156l.051.168c.052-.054.106-.103.162-.147a.957.957 0 0 1 .39-.195.977.977 0 0 1 .249-.03c.188 0 .343.049.465.147a.89.89 0 0 1 .282.387.936.936 0 0 1 .432-.411c.088-.042.18-.073.276-.093a1.452 1.452 0 0 1 .765.051.868.868 0 0 1 .345.231c.094.1.165.224.213.372.048.146.072.312.072.498v1.977h-.93v-1.977c0-.322-.138-.483-.414-.483a.427.427 0 0 0-.315.126c-.082.082-.123.201-.123.357v1.977h-.93v-1.977c0-.178-.035-.303-.105-.375-.07-.072-.173-.108-.309-.108a.53.53 0 0 0-.24.057.879.879 0 0 0-.21.153v2.25h-.93Zm5.703-.036a.522.522 0 0 1-.087.144.485.485 0 0 1-.117.105.512.512 0 0 1-.282.084h-.396l1.704-4.473a.48.48 0 0 1 .468-.315h.396l-1.686 4.455Zm3.373-1.23a3.088 3.088 0 0 0-.459.048c-.12.024-.215.054-.285.09a.357.357 0 0 0-.147.123.3.3 0 0 0-.039.15c0 .106.029.181.087.225a.432.432 0 0 0 .255.063c.12 0 .225-.021.315-.063a.96.96 0 0 0 .273-.204v-.432Zm-1.674-1.413c.188-.166.396-.289.624-.369.23-.082.476-.123.738-.123.188 0 .357.031.507.093a1.088 1.088 0 0 1 .627.642c.056.15.084.314.084.492v1.944h-.426a.446.446 0 0 1-.201-.036c-.044-.024-.081-.074-.111-.15l-.066-.171a2.998 2.998 0 0 1-.225.174c-.072.05-.147.093-.225.129a1.41 1.41 0 0 1-.534.102c-.142 0-.271-.018-.387-.054a.73.73 0 0 1-.483-.432.98.98 0 0 1-.066-.372c0-.112.028-.225.084-.339a.826.826 0 0 1 .291-.315c.138-.096.324-.176.558-.24.234-.064.529-.1.885-.108v-.132c0-.182-.038-.313-.114-.393-.074-.082-.18-.123-.318-.123a.848.848 0 0 0-.459.117c-.054.03-.107.057-.159.081a.44.44 0 0 1-.186.036.268.268 0 0 1-.162-.048.417.417 0 0 1-.108-.114l-.168-.291Zm3.984 1.833c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.501.058.196.087.419.087.669 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.069 1.108 1.108 0 0 1-.3-.186v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388 1.881c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.501.058.196.087.419.087.669 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.069 1.108 1.108 0 0 1-.3-.186v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388-1.764v4.491h-.93v-4.491h.93Zm2.444 2.562a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.039c.078-.026.147-.055.207-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.489.134-.14.295-.251.483-.333.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729c.07.176.105.376.105.6 0 .07-.003.127-.009.171a.27.27 0 0 1-.033.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm2.346-.81h1.62v.75h-1.62v-.75Zm3.078-.912v3.111h-.93v-3.111h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.719 1.59a.514.514 0 0 1-.081.081.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.033 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.381c0 .298.057.527.171.687.116.16.275.24.477.24a.676.676 0 0 0 .255-.039.866.866 0 0 0 .162-.09l.12-.093a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.081l.27.333c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.339c.194-.082.418-.123.672-.123.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.893-.786c.236 0 .451.037.645.111a1.4 1.4 0 0 1 .822.822c.078.196.117.417.117.663 0 .248-.039.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.321 1.797 1.797 0 0 1-.645.111 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.214 0 .371-.075.471-.225.102-.152.153-.382.153-.69 0-.308-.051-.537-.153-.687-.1-.15-.257-.225-.471-.225-.22 0-.381.075-.483.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.102.15.263.225.483.225Zm2.791-2.133a2.26 2.26 0 0 1 .186-.156 1.136 1.136 0 0 1 .441-.198c.086-.02.179-.03.279-.03.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.301.069.471v1.977h-.93v-1.977a.538.538 0 0 0-.105-.354c-.07-.086-.173-.129-.309-.129a.647.647 0 0 0-.288.066c-.088.042-.174.1-.258.174v2.22h-.93v-3.111h.576c.116 0 .192.052.228.156l.054.18Zm2.44.576h1.62v.75h-1.62v-.75Zm4.966 1.527v.672h-2.49v-.672h.84v-2.205a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.039.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.143h.768v3.702h.72Zm2.292-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm2.101 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm3.168 1.026v.672h-2.49v-.672h.84v-2.205a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.039.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.143h.768v3.702h.72Zm-78.2 5.473h1.62v.75h-1.62v-.75Zm3.077-.912v3.111h-.93v-3.111h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.719 1.59a.514.514 0 0 1-.081.081.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.033 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.381c0 .298.057.527.171.687.116.16.275.24.477.24a.676.676 0 0 0 .255-.039.866.866 0 0 0 .162-.09l.12-.093a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.081l.27.333c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.339c.194-.082.418-.123.672-.123.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.893-.786c.236 0 .451.037.645.111a1.4 1.4 0 0 1 .822.822c.078.196.117.417.117.663 0 .248-.039.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.321 1.797 1.797 0 0 1-.645.111 1.83 1.83 0 0 1-.65-.111 1.498 1.498 0 0 1-.505-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.214 0 .371-.075.471-.225.102-.152.153-.382.153-.69 0-.308-.05-.537-.153-.687-.1-.15-.257-.225-.47-.225-.22 0-.382.075-.484.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.102.15.263.225.483.225Zm2.79-2.133a2.26 2.26 0 0 1 .187-.156 1.136 1.136 0 0 1 .441-.198c.086-.02.179-.03.279-.03.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.301.069.471v1.977h-.93v-1.977a.538.538 0 0 0-.105-.354c-.07-.086-.173-.129-.31-.129a.647.647 0 0 0-.287.066c-.088.042-.174.1-.258.174v2.22h-.93v-3.111h.576c.116 0 .192.052.228.156l.054.18Zm3.077-1.596v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm2.327 1.941a.234.234 0 0 1-.078.081.193.193 0 0 1-.102.024.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.17-.06.734.734 0 0 0-.22-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.081.086.026.174.055.264.087.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336 1.17 1.17 0 0 1-.41.219 1.837 1.837 0 0 1-.562.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm1.526-.681v3.111h-.93v-3.111h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.746 1.224a.536.536 0 0 1-.033.186.422.422 0 0 1-.087.147l-1.299 1.716h1.389v.69h-2.46v-.378a.54.54 0 0 1 .12-.306l1.311-1.737h-1.347v-.69h2.406v.372Zm2.244.81a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.039c.078-.026.147-.055.207-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.489.134-.14.295-.251.483-.333.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729c.07.176.105.376.105.6 0 .07-.003.127-.009.171a.27.27 0 0 1-.033.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm4.326-1.041a.234.234 0 0 1-.078.081.193.193 0 0 1-.102.024.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.081.086.026.174.055.264.087.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm.635.633h2.73v.666h-2.73v-.666Zm0-1.101h2.73v.669h-2.73v-.669Zm4.045-1.473v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm3.281 3.699v.672h-2.49v-.672h.84v-2.205a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.039.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.143h.768v3.702h.72Zm2.293-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm2.1 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm3.307 1.698h-.894a.26.26 0 0 1-.162-.048.375.375 0 0 1-.096-.114l-.555-.954a.681.681 0 0 1-.081.18l-.456.774a.646.646 0 0 1-.099.111.212.212 0 0 1-.147.051h-.828l1.044-1.608-1.002-1.503h.894c.066 0 .114.009.144.027.032.016.06.044.084.084l.555.921a1.456 1.456 0 0 1 .105-.213l.396-.693a.318.318 0 0 1 .087-.096.217.217 0 0 1 .117-.03h.852l-1.002 1.461 1.044 1.65Zm3.005-.672v.672h-2.49v-.672h.84v-2.205a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.039.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.143h.768v3.702h.72Zm2.293-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm2.1 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm1.075-2.673v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm1.2 0v.858l-.084.474a.54.54 0 0 1-.096.249c-.046.056-.122.084-.228.084a.267.267 0 0 1-.21-.084.542.542 0 0 1-.108-.249l-.084-.474v-.858h.81Zm3.689 1.941a.234.234 0 0 1-.078.081.193.193 0 0 1-.102.024.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.081.086.026.174.055.264.087.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm1.526-.681v3.111h-.93v-3.111h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.746 1.224a.536.536 0 0 1-.033.186.422.422 0 0 1-.087.147l-1.299 1.716h1.389v.69h-2.46v-.378a.54.54 0 0 1 .12-.306l1.311-1.737h-1.347v-.69h2.406v.372Zm2.244.81a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.039c.078-.026.147-.055.207-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.489.134-.14.295-.251.483-.333.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729c.07.176.105.376.105.6 0 .07-.003.127-.009.171a.27.27 0 0 1-.033.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm4.326-1.041a.234.234 0 0 1-.078.081.193.193 0 0 1-.102.024.346.346 0 0 1-.132-.027 5.984 5.984 0 0 0-.144-.063 1.3 1.3 0 0 0-.171-.06.734.734 0 0 0-.219-.03.463.463 0 0 0-.273.069.215.215 0 0 0-.093.186c0 .058.02.106.06.144a.614.614 0 0 0 .165.102c.068.028.145.055.231.081.086.026.174.055.264.087.09.032.178.07.264.114a.93.93 0 0 1 .231.159.675.675 0 0 1 .162.228c.042.09.063.198.063.324 0 .154-.028.296-.084.426a.898.898 0 0 1-.252.336c-.11.094-.247.167-.411.219a1.837 1.837 0 0 1-.561.078c-.106 0-.212-.01-.318-.03a2.26 2.26 0 0 1-.309-.081 1.786 1.786 0 0 1-.273-.12 1.245 1.245 0 0 1-.216-.153l.216-.342a.268.268 0 0 1 .09-.093.265.265 0 0 1 .144-.036c.054 0 .102.012.144.036l.141.078a.775.775 0 0 0 .429.114.687.687 0 0 0 .183-.021.339.339 0 0 0 .12-.063.246.246 0 0 0 .087-.186.202.202 0 0 0-.063-.153.528.528 0 0 0-.165-.102 1.672 1.672 0 0 0-.234-.081 5.792 5.792 0 0 1-.264-.087 2.379 2.379 0 0 1-.267-.114.813.813 0 0 1-.396-.426.936.936 0 0 1-.063-.363.887.887 0 0 1 .306-.69c.102-.09.23-.161.384-.213.154-.054.334-.081.54-.081a1.712 1.712 0 0 1 .621.114 1.356 1.356 0 0 1 .453.288l-.21.327Zm2.345.732v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm3.169 1.026v.672h-2.49v-.672h.84v-2.205a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.039.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.143h.768v3.702h.72Zm-76.626 7.672v-3.111h.576c.116 0 .192.052.228.156l.051.168c.052-.054.106-.103.162-.147a.957.957 0 0 1 .39-.195.977.977 0 0 1 .25-.03c.187 0 .342.049.464.147a.89.89 0 0 1 .282.387.936.936 0 0 1 .432-.411c.088-.042.18-.073.276-.093a1.452 1.452 0 0 1 .765.051.868.868 0 0 1 .345.231c.094.1.165.224.213.372.048.146.072.312.072.498v1.977h-.93v-1.977c0-.322-.138-.483-.414-.483a.427.427 0 0 0-.315.126c-.082.082-.123.201-.123.357v1.977h-.93v-1.977c0-.178-.035-.303-.105-.375-.07-.072-.173-.108-.309-.108a.53.53 0 0 0-.24.057.879.879 0 0 0-.21.153v2.25h-.93Zm6.919-1.929a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.039c.078-.026.147-.055.207-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.34-.522 1.972 1.972 0 0 1-.122-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.489.134-.14.295-.251.483-.333.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729 1.613 1.613 0 0 1 .095.771.27.27 0 0 1-.032.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm5.14-1.722v3.111h-.577c-.116 0-.192-.052-.228-.156l-.054-.18c-.06.058-.122.111-.186.159a1.242 1.242 0 0 1-.207.12 1.175 1.175 0 0 1-.237.075c-.084.02-.176.03-.276.03-.17 0-.32-.029-.453-.087a.948.948 0 0 1-.33-.249 1.08 1.08 0 0 1-.204-.375 1.551 1.551 0 0 1-.069-.474v-1.974h.93v1.974c0 .154.035.273.105.357.07.084.173.126.31.126a.653.653 0 0 0 .284-.063 1.18 1.18 0 0 0 .261-.177v-2.217h.93Zm1.441.273c.112-.096.233-.173.363-.231.132-.06.29-.09.471-.09.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.07.301.07.471v1.977h-.93v-1.977a.538.538 0 0 0-.106-.354c-.07-.086-.173-.129-.309-.129a.647.647 0 0 0-.288.066c-.088.042-.174.1-.258.174v2.22h-.93v-4.491h.93v1.653Zm2.246 2.367c0-.072.013-.139.039-.201a.542.542 0 0 1 .111-.162.527.527 0 0 1 .168-.108.518.518 0 0 1 .21-.042.51.51 0 0 1 .207.042c.064.026.12.062.168.108.048.046.085.1.111.162a.503.503 0 0 1-.279.675.545.545 0 0 1-.207.039.553.553 0 0 1-.378-.147.542.542 0 0 1-.111-.162.537.537 0 0 1-.039-.204Zm3.728-1.902a.514.514 0 0 1-.081.081.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.033 4.905 4.905 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.04.381c0 .298.058.527.172.687.116.16.275.24.477.24a.676.676 0 0 0 .255-.039.866.866 0 0 0 .162-.09l.12-.093a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.081l.27.333c-.096.11-.197.2-.303.27a1.597 1.597 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.339c.194-.082.418-.123.672-.123.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.893-.786c.236 0 .451.037.645.111a1.4 1.4 0 0 1 .822.822c.078.196.117.417.117.663 0 .248-.039.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.321 1.797 1.797 0 0 1-.645.111 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.214 0 .371-.075.471-.225.102-.152.153-.382.153-.69 0-.308-.051-.537-.153-.687-.1-.15-.257-.225-.471-.225-.22 0-.381.075-.483.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.102.15.263.225.483.225Zm1.932.642v-3.111h.576c.116 0 .192.052.228.156l.051.168c.052-.054.106-.103.162-.147a.957.957 0 0 1 .39-.195.977.977 0 0 1 .249-.03c.188 0 .343.049.465.147a.89.89 0 0 1 .282.387.936.936 0 0 1 .432-.411c.088-.042.18-.073.276-.093a1.452 1.452 0 0 1 .765.051.868.868 0 0 1 .345.231c.094.1.165.224.213.372.048.146.072.312.072.498v1.977h-.93v-1.977c0-.322-.138-.483-.414-.483a.427.427 0 0 0-.315.126c-.082.082-.123.201-.123.357v1.977h-.93v-1.977c0-.178-.035-.303-.105-.375-.07-.072-.173-.108-.309-.108a.53.53 0 0 0-.24.057.879.879 0 0 0-.21.153v2.25h-.93Zm5.704-.036a.522.522 0 0 1-.087.144.485.485 0 0 1-.117.105.512.512 0 0 1-.282.084h-.396l1.704-4.473a.48.48 0 0 1 .468-.315h.396l-1.686 4.455Zm3.372-1.23a3.088 3.088 0 0 0-.459.048c-.12.024-.215.054-.285.09a.357.357 0 0 0-.147.123.3.3 0 0 0-.039.15c0 .106.029.181.087.225a.432.432 0 0 0 .255.063c.12 0 .225-.021.315-.063a.96.96 0 0 0 .273-.204v-.432Zm-1.674-1.413c.188-.166.396-.289.624-.369.23-.082.476-.123.738-.123.188 0 .357.031.507.093a1.088 1.088 0 0 1 .627.642c.056.15.084.314.084.492v1.944h-.426a.446.446 0 0 1-.201-.036c-.044-.024-.081-.074-.111-.15l-.066-.171a2.998 2.998 0 0 1-.225.174c-.072.05-.147.093-.225.129a1.41 1.41 0 0 1-.534.102c-.142 0-.271-.018-.387-.054a.73.73 0 0 1-.483-.432.98.98 0 0 1-.066-.372c0-.112.028-.225.084-.339a.826.826 0 0 1 .291-.315c.138-.096.324-.176.558-.24.234-.064.529-.1.885-.108v-.132c0-.182-.038-.313-.114-.393-.074-.082-.18-.123-.318-.123a.848.848 0 0 0-.459.117c-.054.03-.107.057-.159.081a.44.44 0 0 1-.186.036.268.268 0 0 1-.162-.048.417.417 0 0 1-.108-.114l-.168-.291Zm3.985 1.833c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.501.058.196.087.419.087.669 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.069 1.108 1.108 0 0 1-.3-.186v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388 1.881c.07.076.146.13.228.162a.703.703 0 0 0 .258.048.548.548 0 0 0 .237-.051.476.476 0 0 0 .186-.162.869.869 0 0 0 .126-.294c.03-.12.045-.266.045-.438 0-.164-.012-.302-.036-.414a.81.81 0 0 0-.102-.27.378.378 0 0 0-.354-.195.674.674 0 0 0-.336.075.934.934 0 0 0-.252.219v1.32Zm-.057-1.881c.122-.13.26-.236.414-.318.156-.084.341-.126.555-.126.162 0 .312.036.45.108.138.072.257.176.357.312.1.136.178.303.234.501.058.196.087.419.087.669 0 .234-.033.45-.099.648-.064.198-.155.37-.273.516-.116.146-.256.26-.42.342a1.178 1.178 0 0 1-.54.123 1.06 1.06 0 0 1-.408-.069 1.108 1.108 0 0 1-.3-.186v1.194h-.93v-4.098h.576c.116 0 .192.052.228.156l.069.228Zm3.388-1.764v4.491h-.93v-4.491h.93Zm2.444 2.562a.782.782 0 0 0-.03-.216.48.48 0 0 0-.093-.186.453.453 0 0 0-.168-.135.58.58 0 0 0-.255-.051.553.553 0 0 0-.414.153c-.1.1-.166.245-.198.435h1.158Zm-1.17.54c.03.26.109.449.237.567a.709.709 0 0 0 .495.174.886.886 0 0 0 .279-.039c.078-.026.147-.055.207-.087l.168-.087a.358.358 0 0 1 .162-.039c.074 0 .13.027.168.081l.27.333c-.096.11-.2.2-.312.27a1.667 1.667 0 0 1-.693.24 2.44 2.44 0 0 1-.333.024c-.218 0-.423-.035-.615-.105a1.446 1.446 0 0 1-.501-.318 1.522 1.522 0 0 1-.339-.522 1.972 1.972 0 0 1-.123-.726c0-.208.035-.405.105-.591.072-.186.174-.349.306-.489.134-.14.295-.251.483-.333.19-.082.404-.123.642-.123.206 0 .394.032.564.096a1.212 1.212 0 0 1 .729.729c.07.176.105.376.105.6 0 .07-.003.127-.009.171a.27.27 0 0 1-.033.105.125.125 0 0 1-.066.054.29.29 0 0 1-.102.015h-1.794Zm2.346-.81h1.62v.75h-1.62v-.75Zm3.078-.912v3.111h-.93v-3.111h.93Zm.096-.852a.502.502 0 0 1-.045.21.573.573 0 0 1-1.035 0 .54.54 0 0 1 .51-.756.57.57 0 0 1 .525.333c.03.066.045.137.045.213Zm2.719 1.59a.514.514 0 0 1-.081.081.179.179 0 0 1-.111.03.247.247 0 0 1-.126-.033 4.22 4.22 0 0 0-.123-.072.697.697 0 0 0-.393-.108.657.657 0 0 0-.297.063.55.55 0 0 0-.204.18.823.823 0 0 0-.12.288 1.691 1.691 0 0 0-.039.381c0 .298.057.527.171.687.116.16.275.24.477.24a.676.676 0 0 0 .255-.039.866.866 0 0 0 .162-.09l.12-.093a.231.231 0 0 1 .141-.042c.074 0 .13.027.168.081l.27.333c-.096.11-.197.2-.303.27a1.604 1.604 0 0 1-.327.162c-.11.038-.221.064-.333.078a2.312 2.312 0 0 1-.327.024c-.19 0-.372-.036-.546-.108a1.364 1.364 0 0 1-.456-.312 1.551 1.551 0 0 1-.312-.507 1.916 1.916 0 0 1-.114-.684c0-.224.033-.433.099-.627a1.44 1.44 0 0 1 .297-.507 1.39 1.39 0 0 1 .486-.339c.194-.082.418-.123.672-.123.244 0 .458.039.642.117.184.078.35.192.498.342l-.246.327Zm1.893-.786c.236 0 .451.037.645.111a1.4 1.4 0 0 1 .822.822c.078.196.117.417.117.663 0 .248-.039.472-.117.672a1.433 1.433 0 0 1-.324.507 1.434 1.434 0 0 1-.498.321 1.797 1.797 0 0 1-.645.111 1.83 1.83 0 0 1-.651-.111 1.498 1.498 0 0 1-.504-.321 1.467 1.467 0 0 1-.327-.507 1.88 1.88 0 0 1-.114-.672c0-.246.038-.467.114-.663.078-.198.187-.366.327-.504.142-.138.31-.244.504-.318a1.83 1.83 0 0 1 .651-.111Zm0 2.517c.214 0 .371-.075.471-.225.102-.152.153-.382.153-.69 0-.308-.051-.537-.153-.687-.1-.15-.257-.225-.471-.225-.22 0-.381.075-.483.225-.102.15-.153.379-.153.687 0 .308.051.538.153.69.102.15.263.225.483.225Zm2.79-2.133a2.26 2.26 0 0 1 .186-.156 1.136 1.136 0 0 1 .441-.198c.086-.02.179-.03.279-.03.17 0 .32.03.45.09a.91.91 0 0 1 .333.246c.09.104.158.229.204.375.046.144.069.301.069.471v1.977h-.93v-1.977a.538.538 0 0 0-.105-.354c-.07-.086-.173-.129-.309-.129a.647.647 0 0 0-.288.066c-.088.042-.174.1-.258.174v2.22h-.93v-3.111h.576c.116 0 .192.052.228.156l.054.18Zm2.441.576h1.62v.75h-1.62v-.75Zm4.965 1.527v.672h-2.49v-.672h.84v-2.205a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.039.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.143h.768v3.702h.72Zm2.293-1.026v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm2.1 0v-1.14c0-.07.002-.145.006-.225.006-.082.014-.167.024-.255l-1.155 1.62h1.125Zm1.26 0v.522a.17.17 0 0 1-.048.12c-.03.034-.074.051-.132.051h-.27v1.005h-.81v-1.005h-1.758a.259.259 0 0 1-.159-.054.231.231 0 0 1-.087-.135l-.096-.459 2.022-2.718h.888v2.673h.45Zm3.307 1.698h-.894a.26.26 0 0 1-.162-.048.375.375 0 0 1-.096-.114l-.555-.954a.681.681 0 0 1-.081.18l-.456.774a.646.646 0 0 1-.099.111.212.212 0 0 1-.147.051h-.828l1.044-1.608-1.002-1.503h.894c.066 0 .114.009.144.027.032.016.06.044.084.084l.555.921a1.456 1.456 0 0 1 .105-.213l.396-.693a.318.318 0 0 1 .087-.096.217.217 0 0 1 .117-.03h.852l-1.002 1.461 1.044 1.65Zm3.005-.672v.672h-2.49v-.672h.84v-2.205a4.707 4.707 0 0 1 .012-.342l-.498.414a.307.307 0 0 1-.132.063.402.402 0 0 1-.12 0 .328.328 0 0 1-.102-.039.246.246 0 0 1-.066-.06l-.294-.39 1.362-1.143h.768v3.702h.72Z\" fill=\"#fff\"/><defs><radialGradient id=\"a\" cx=\"0\" cy=\"0\" r=\"1\" gradientUnits=\"userSpaceOnUse\" gradientTransform=\"matrix(0 38.1792 -124.529 0 110.306 38.73)\"><stop stop-color=\"#2A2B30\"/><stop offset=\"1\" stop-color=\"#1B1C22\"/></radialGradient></defs></svg>");
+/* 830 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
-/***/ }),
-/* 951 */
-/***/ (function(module, exports) {
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return addMonths; });
+/* harmony import */ var _lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(827);
+/* harmony import */ var _toDate_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(828);
+/* harmony import */ var _lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(829);
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"220\" viewBox=\"0 0 220 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path d=\"M73 29c0-7.663 5.84-13.875 13.043-13.875h73.914C167.16 15.125 173 21.337 173 29v51H73V29ZM41 78h-4v132.382c0 2.55 2.015 4.618 4.5 4.618h27c2.485 0 4.5-2.068 4.5-4.618L41 78Z\" fill=\"#AFF1FF\"/>\n|   <path d=\"m73 82-32-4v132.382c0 2.55 2.047 4.618 4.571 4.618H68.43c2.524 0 4.571-2.068 4.571-4.618V82Z\" fill=\"#1B798C\"/>");
 
-/***/ }),
-/* 952 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"120\" height=\"121\" viewBox=\"0 0 120 121\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path d=\"M58.809 37.281c.8 1.2.333 2.833 0 3.5l5.5 17-5.5 13.5v28h2.5l-.5-26 15.5-4.5 2 31h2l-1-30 8-17 2 43.5 2.5.5-1.5-44 6-3c-.167-.833-.8-2.8-2-4-1.5-1.5 0-3.5 1.5-4.5s.5-2 .5-4-1.5-3-4.5-4.5-21.5-3-24.5-3-7.5 1.5-8.5 2-1 2 0 5.5Z\" fill=\"#876F52\"/>\n|   <path d=\"M82.309 70.281c4.8-1.6 3.333-7.667 2-10.5l-4.5-8.5h-9l-4 1.5-3.04 6.055 1.5 4c1 1.334 6.14 3.145 6.54 5.945.4 2.8.167 4.167 0 4.5 1.5-.333 5.7-1.4 10.5-3Z\" fill=\"#2C2C2C\"/>");
+/**
+ * @name addMonths
+ * @category Month Helpers
+ * @summary Add the specified number of months to the given date.
+ *
+ * @description
+ * Add the specified number of months to the given date.
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the months added
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Add 5 months to 1 September 2014:
+ * const result = addMonths(new Date(2014, 8, 1), 5)
+ * //=> Sun Feb 01 2015 00:00:00
+ */
 
-/***/ }),
-/* 953 */
-/***/ (function(module, exports) {
+function addMonths(dirtyDate, dirtyAmount) {
+  Object(_lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_2__["default"])(2, arguments);
+  var date = Object(_toDate_index_js__WEBPACK_IMPORTED_MODULE_1__["default"])(dirtyDate);
+  var amount = Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(dirtyAmount);
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"120\" height=\"134\" viewBox=\"0 0 120 134\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g filter=\"url(#a)\">\n|     <path d=\"M96.847 111.527c-4.522 4.788-28.59 12.191-36.952 11.845-8.363-.346-16.362-3.759-20.17-5.461-4.76-2.128-5.811-3.582-9.381-7.572-3.57-3.99-7.994-15.57-8.47-18.762-.476-3.192-3.332-8.621-8.001-14.698 1.713 1.702 6.017 3.16 8 3.514-1.348-1.064-1.618-3.711-3.332-9.031-1.713-5.32-3.411-18-4.046-23.674.714 2.394 2.523 6.795 4.046 9.348 1.524 2.554 3.648 2.04 6.266 1.684-2.205-3.909-3.84-12.462-5.984-21.784a9.494 9.494 0 0 1-.282-1.217c.096.407.19.812.282 1.217 2.095 6.892 11.32 7.07 15.903 6.23-1.904-1.507-5.855-5.532-6.426-9.575-.571-4.044 1.349-12.68 2.38-16.492.952 2.04 4.094 6.597 9.044 8.512 4.951 1.915 9.347 3.058 11.727 4.92-.634-1.684-1.28-2.626-2.422-6.882-1.142-4.256-8.305-8.493-9.966-13.033 1.429 2.483 13.034 3.234 14.395 5.491 2.561 4.247 9.592 9.77 15.78 12.43 4.95 2.128 8.496 2.475 10.242 6.022-.714-1.685-.363-4.988-.554-7.542-.238-3.192.73-5.893 4.775-14.936-2.142 6.383 3.517 14.46 4.707 18.45 1.19 3.99 1.843 3.326 4.937 8.114 2.475 3.83 2.063 9.126 0 12.938 1.983.621 6.596-3.895 6.596 3.287 0 2.051 1.666-11.438 1.666-16.225.952 3.369 2.856 11.703 2.856 18.087s-2.459 12.413-4.522 14.63c1.666 0 4.351 1.474 6.065-1.293 0 2.38.835 5.624-1.874 10.426-.765 4.37-2.525 10.982-2.525 12.944 0 1.916-2.3 4.98-6.188 8.261 4.522-1.848 1.095 2.06 4.522 1.847 3.428-.213 5.906-3.898 6.065-4.34-.079 1.595-5.541 8.49-9.159 12.32Z\" fill=\"#F58648\" fill-opacity=\".85\"/>");
+  if (isNaN(amount)) {
+    return new Date(NaN);
+  }
 
-/***/ }),
-/* 954 */
-/***/ (function(module, exports) {
+  if (!amount) {
+    // If 0 months, no-op to avoid changing times in the hour before end of DST
+    return date;
+  }
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#clip0)\">\n|     <ellipse opacity=\"0.2\" cx=\"114.306\" cy=\"192\" rx=\"72\" ry=\"7\" fill=\"black\"/>");
+  var dayOfMonth = date.getDate(); // The JS Date object supports date math by accepting out-of-bounds values for
+  // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and
+  // new Date(2020, 13, 1) returns 1 Feb 2021.  This is *almost* the behavior we
+  // want except that dates will wrap around the end of a month, meaning that
+  // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So
+  // we'll default to the end of the desired month by adding 1 to the desired
+  // month and using a date of 0 to back up one day to the end of the desired
+  // month.
 
-/***/ }),
-/* 955 */
-/***/ (function(module, exports) {
+  var endOfDesiredMonth = new Date(date.getTime());
+  endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);
+  var daysInMonth = endOfDesiredMonth.getDate();
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"221\" viewBox=\"0 0 221 221\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <circle cx=\"108.72\" cy=\"153.955\" r=\"58.702\" fill=\"#BFEAFD\"/>\n|   <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M92.25 190.135c30.776 0 55.725-24.949 55.725-55.724 0-11.485-3.475-22.159-9.43-31.027 17.285 10.216 28.878 29.04 28.878 50.572 0 32.421-26.282 58.702-58.703 58.702-25.097 0-46.516-15.75-54.911-37.905 9.999 9.531 23.537 15.382 38.441 15.382Z\" fill=\"#B4D8F0\"/>");
+  if (dayOfMonth >= daysInMonth) {
+    // If we're already at the end of the month, then this is the correct date
+    // and we're done.
+    return endOfDesiredMonth;
+  } else {
+    // Otherwise, we now know that setting the original day-of-month value won't
+    // cause an overflow, so set the desired day-of-month. Note that we can't
+    // just set the date of `endOfDesiredMonth` because that object may have had
+    // its time changed in the unusual case where where a DST transition was on
+    // the last day of the month and its local time was in the hour skipped or
+    // repeated next to a DST transition.  So we use `date` instead which is
+    // guaranteed to still have the original time.
+    date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);
+    return date;
+  }
+}
 
 /***/ }),
-/* 956 */
-/***/ (function(module, exports) {
-
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <ellipse opacity=\".25\" cx=\"80.264\" cy=\"206\" rx=\"60\" ry=\"4\" fill=\"#000\"/>");
+/* 831 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
-/***/ }),
-/* 957 */
-/***/ (function(module, exports) {
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return sub; });
+/* harmony import */ var _subDays_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(832);
+/* harmony import */ var _subMonths_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(833);
+/* harmony import */ var _lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(829);
+/* harmony import */ var _lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(827);
+function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"120\" height=\"121\" viewBox=\"0 0 120 121\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g filter=\"url(#a)\">\n|     <path d=\"M72.776 64.907c-2.03 1.695-9.572 4.258-18.942 1.951-13.95-3.434-18.699-15.55-19.405-20.888 1.424.791 5.14 2.49 8.618 2.955-2.907-3.994-4.942-13.28-3.823-21.653 2.464 2.165 8.225 2.63 10.798 2.592-2.596-2.642-7.514-9.986-6.411-18.23 8.155 7.646 16.196 5.116 20.917 9.026 4.722 3.91 1.972 7.31 5.008 12.797.036-4.19 3.153-10.504 4.707-13.137 0 0 .394 8.084 1.852 11.884 1.458 3.8 4.914 4.919 5.245 11.027.264 4.886-4.06 11.967-6.254 14.897 1.148-.01 4.431-.784 8.374-3.797-.903 4.304-8.655 8.88-10.684 10.576Z\" fill=\"#EE7301\"/>");
 
-/***/ }),
-/* 958 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"120\" height=\"121\" viewBox=\"0 0 120 121\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M67.6445 109.928C62.6445 109.803 41.9484 105.928 37.8234 104.178L34.5734 102.303C36.365 100.803 38.7734 93.6283 40.5734 92.9283C42.8234 92.0533 51.8234 85.1783 58.5734 83.3033C65.3234 81.4283 87.9484 82.9283 92.3234 84.3033C96.6984 85.6783 103.448 89.6783 105.323 92.9283C106.823 95.5283 111.145 103.198 113.02 107.781C110.02 108.906 107.02 109.928 101.77 109.928C99.0195 109.928 72.6445 110.053 67.6445 109.928Z\" fill=\"#4A392D\"/>\n| <path d=\"M42.6983 34.4282C43.3983 30.4282 44.8233 29.5116 45.4483 29.5532L50.1984 32.3032C51.9484 44.3449 55.4484 68.7032 55.4484 69.8032C55.4484 70.9032 59.1984 77.6366 60.0734 80.5532C59.49 81.6366 57.8234 83.8032 56.0734 83.8032C55.4002 83.8032 53.1984 86.4282 50.1984 88.4282C47.7984 90.0282 45.4483 91.0532 40.0734 93.1782C39.24 89.8866 40.0483 85.4532 39.4483 77.5532C38.6983 67.6782 41.8233 39.4282 42.6983 34.4282Z\" fill=\"#CFCFCF\"/>");
 
-/***/ }),
-/* 959 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"120\" height=\"122\" viewBox=\"0 0 120 122\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path d=\"M20.412 55.064 63.955 33.03l35.046 22.033h-7v29.384l22.233 8.584h-4.239v26.999H12.391v-44H5.767L22 65.255V55.064h-1.589Z\" fill=\"#00446A\" stroke=\"#00D1FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n|   <path fill=\"#FFCE51\" d=\"M12.001 77.031h80v43h-80z\"/>");
+/**
+ * @name sub
+ * @category Common Helpers
+ * @summary Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.
+ *
+ * @description
+ * Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be subtracted
+ *
+ * | Key     | Description                        |
+ * |---------|------------------------------------|
+ * | years   | Amount of years to be subtracted   |
+ * | months  | Amount of months to be subtracted  |
+ * | weeks   | Amount of weeks to be subtracted   |
+ * | days    | Amount of days to be subtracted    |
+ * | hours   | Amount of hours to be subtracted   |
+ * | minutes | Amount of minutes to be subtracted |
+ * | seconds | Amount of seconds to be subtracted |
+ *
+ * All values default to 0
+ *
+ * @returns {Date} the new date with the seconds subtracted
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Subtract the following duration from 15 June 2017 15:29:20
+ * const result = sub(new Date(2017, 5, 15, 15, 29, 20), {
+ *   years: 2,
+ *   months: 9,
+ *   weeks: 1,
+ *   days: 7,
+ *   hours: 5,
+ *   minutes: 9,
+ *   seconds: 30
+ * })
+ * //=> Mon Sep 1 2014 10:19:50
+ */
 
-/***/ }),
-/* 960 */
-/***/ (function(module, exports) {
+function sub(date, duration) {
+  Object(_lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_2__["default"])(2, arguments);
+  if (!duration || _typeof(duration) !== 'object') return new Date(NaN);
+  var years = duration.years ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_3__["default"])(duration.years) : 0;
+  var months = duration.months ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_3__["default"])(duration.months) : 0;
+  var weeks = duration.weeks ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_3__["default"])(duration.weeks) : 0;
+  var days = duration.days ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_3__["default"])(duration.days) : 0;
+  var hours = duration.hours ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_3__["default"])(duration.hours) : 0;
+  var minutes = duration.minutes ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_3__["default"])(duration.minutes) : 0;
+  var seconds = duration.seconds ? Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_3__["default"])(duration.seconds) : 0; // Subtract years and months
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"221\" viewBox=\"0 0 221 221\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <path fill=\"#F7F7F7\" d=\"M40.534 21.975h149.434v176.548H40.534z\"/>");
+  var dateWithoutMonths = Object(_subMonths_index_js__WEBPACK_IMPORTED_MODULE_1__["default"])(date, months + years * 12); // Subtract weeks and days
 
-/***/ }),
-/* 961 */
-/***/ (function(module, exports) {
+  var dateWithoutDays = Object(_subDays_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(dateWithoutMonths, days + weeks * 7); // Subtract hours, minutes and seconds
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <ellipse cx=\"4.24397\" cy=\"4.24397\" rx=\"4.24397\" ry=\"4.24397\" transform=\"matrix(-1 0 0 1 158.993 39.2071)\" fill=\"#90C3D3\"/>\n| <path d=\"M155.944 46.6674C153.6 46.6674 151.7 44.7673 151.7 42.4234C151.7 41.4216 152.047 40.5009 152.628 39.7749C151.359 40.5087 150.506 41.8802 150.506 43.4511C150.506 45.795 152.406 47.6951 154.75 47.6951C156.092 47.6951 157.289 47.0721 158.066 46.0996C157.442 46.4607 156.717 46.6674 155.944 46.6674Z\" fill=\"#5E8693\"/>");
+  var minutestoSub = minutes + hours * 60;
+  var secondstoSub = seconds + minutestoSub * 60;
+  var mstoSub = secondstoSub * 1000;
+  var finalDate = new Date(dateWithoutDays.getTime() - mstoSub);
+  return finalDate;
+}
 
 /***/ }),
-/* 962 */
-/***/ (function(module, exports) {
+/* 832 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path d=\"M104.896 59.654a2.035 2.035 0 1 1-4.034-.557c.154-1.114 2.662-4.392 2.662-4.392s1.518 3.888 1.372 4.95Z\" fill=\"url(#a)\"/>\n|   <path d=\"M115.525 62.01a2.034 2.034 0 1 1-4.071 0c0-1.126 2.035-4.715 2.035-4.715s2.036 3.589 2.036 4.714Z\" fill=\"url(#b)\"/>");
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return subDays; });
+/* harmony import */ var _addDays_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(826);
+/* harmony import */ var _lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(829);
+/* harmony import */ var _lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(827);
 
-/***/ }),
-/* 963 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"220\" viewBox=\"0 0 220 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M-45.834 0H86.104c39.488 0 71.5 32.012 71.5 71.5v104.228c0 39.489-32.012 71.5-71.5 71.5H-45.834c-39.488 0-71.499-32.011-71.499-71.5V71.5c0-39.488 32.011-71.5 71.5-71.5Zm0 47.667c-13.162 0-23.833 10.67-23.833 23.833v104.228c0 13.163 10.67 23.834 23.834 23.834H86.104c13.162 0 23.833-10.671 23.833-23.834V71.5c0-13.163-10.67-23.833-23.834-23.833H-45.834Zm131.938-44H-45.834c-37.463 0-67.833 30.37-67.833 67.833v104.228c0 37.464 30.37 67.834 67.834 67.834H86.104c37.463 0 67.833-30.37 67.833-67.834V71.5c0-37.463-30.37-67.833-67.834-67.833ZM-73.334 71.5c0-15.188 12.313-27.5 27.5-27.5H86.104c15.187 0 27.5 12.312 27.5 27.5v104.228c0 15.188-12.313 27.5-27.5 27.5H-45.834c-15.187 0-27.5-12.312-27.5-27.5V71.5Z\" fill=\"#000\"/>");
 
-/***/ }),
-/* 964 */
-/***/ (function(module, exports) {
+/**
+ * @name subDays
+ * @category Day Helpers
+ * @summary Subtract the specified number of days from the given date.
+ *
+ * @description
+ * Subtract the specified number of days from the given date.
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the days subtracted
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Subtract 10 days from 1 September 2014:
+ * const result = subDays(new Date(2014, 8, 1), 10)
+ * //=> Fri Aug 22 2014 00:00:00
+ */
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g clip-path=\"url(#clip0)\">\n| <path opacity=\"0.25\" d=\"M7.91636 163.303C6.26437 157.618 21.1659 153.737 24.6076 152.848C44.9978 145.071 66.956 141.895 88.711 143.62L90.8272 143.788C145.893 143.788 184.853 152.848 189.671 159.066C194.489 165.284 183.942 167.319 189.671 170.708C194.382 173.496 213.24 174.337 212.551 184.996C211.863 195.656 156.766 189.268 149.883 193.71C143 198.151 160.208 200.816 156.766 207.034C154.366 211.371 101.012 210.587 91.3752 207.034C81.7386 203.481 94.4786 198.873 96.1935 193.71C98.2585 187.492 81.7386 189.268 63.1538 189.268C44.569 189.268 6.71107 187.492 1.89278 183.05C-2.92551 178.609 6.71107 175.056 10.1527 173.279C13.5943 171.502 9.98134 170.409 7.91636 163.303Z\" fill=\"url(#paint0_linear)\"/>");
+function subDays(dirtyDate, dirtyAmount) {
+  Object(_lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_1__["default"])(2, arguments);
+  var amount = Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_2__["default"])(dirtyAmount);
+  return Object(_addDays_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(dirtyDate, -amount);
+}
 
 /***/ }),
-/* 965 */
-/***/ (function(module, exports) {
+/* 833 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path d=\"M50.622 75.721 24.21 71.837a2.683 2.683 0 0 1 .39-5.337h21.88a6.34 6.34 0 0 0 5.314-2.88l11.155-17.131a2.112 2.112 0 0 1 3.742 1.908l-8.857 23.106a6.681 6.681 0 0 1-7.21 4.218Z\" fill=\"#AE7D44\"/>\n|   <path d=\"m52.864 76.051-26.363-3.877c-1.485-.218-1.845-2.196-.534-2.924.292-.162.629-.227.96-.185l17.896 2.278A11.89 11.89 0 0 0 57.35 64l6.711-16.618a1.41 1.41 0 0 1 2.622 1.032l-9.662 25.205a3.852 3.852 0 0 1-4.157 2.432Z\" fill=\"#835D30\"/>");
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return subMonths; });
+/* harmony import */ var _lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(827);
+/* harmony import */ var _addMonths_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(830);
+/* harmony import */ var _lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(829);
 
-/***/ }),
-/* 966 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"220\" viewBox=\"0 0 220 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path d=\"M174.849 50.996c1.869-8.47 12.435-19.346 21.345-6.812 8.91 12.535 2.27 44.28-3.634 50.41-16.614 17.254-21.67-25.652-17.711-43.597Z\" stroke=\"url(#a)\" stroke-width=\"4\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n|   <path d=\"M195.723 98.46c1.719 5.057-8.707 13.126-23.218 17.968-14.51 4.842-27.624 4.734-29.344-.323l-.107-.322s-13.519-51.63-14.011-53.066c-.492-1.436 1.98-4.435 3.094-4.689 3.533 1.835 11.779 1.082 22.664-2.64 10.582-3.59 12.883-10.195 15.895-9.936.811 0 4.477.787 5.438 2.835l19.481 49.743.108.43Z\" fill=\"url(#b)\"/>");
 
-/***/ }),
-/* 967 */
-/***/ (function(module, exports) {
+/**
+ * @name subMonths
+ * @category Month Helpers
+ * @summary Subtract the specified number of months from the given date.
+ *
+ * @description
+ * Subtract the specified number of months from the given date.
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the months subtracted
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Subtract 5 months from 1 February 2015:
+ * const result = subMonths(new Date(2015, 1, 1), 5)
+ * //=> Mon Sep 01 2014 00:00:00
+ */
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><path d=\"m3.773 36.96 29.648-1.383h143.55l26.318 1.383.506.613c-.281 14.81-12.368 26.67-27.181 26.67H31.056c-15.068 0-27.283-12.215-27.283-27.283Z\" fill=\"#AEAEAE\"/><path d=\"M4.271 37.564 33.92 36.18h143.55l26.318 1.384c0 15.068-12.215 27.283-27.283 27.283H31.554c-15.067 0-27.283-12.215-27.283-27.283Z\" fill=\"#fff\"/><path d=\"m6.841 39.527 27.002-1.265-16.17 6.063c-4.339 1.627-9.146-.542-10.832-4.798Zm194.411 0-27.071-1.265 16.227 6.07c4.344 1.624 9.154-.547 10.844-4.805ZM10.412 50.205l24.548-10.97-12.597 11.448c-3.41 3.1-8.74 2.85-11.95-.478Zm187.26 0-24.611-10.971 12.638 11.457c3.416 3.097 8.754 2.843 11.973-.486ZM18.134 58.688l18.271-18.656-6.95 14.627c-1.978 4.165-7.072 5.938-11.32 4.03Zm171.797 0L171.612 40.03l6.968 14.63c1.984 4.166 7.091 5.94 11.351 4.03ZM28.442 63.167l9.32-22.31-1.538 15.553c-.388 3.917-3.833 6.863-7.782 6.757Zm151.154 0-9.345-22.315 1.542 15.55c.389 3.92 3.845 6.871 7.803 6.765Z\" fill=\"#fff\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><path d=\"m18.673 44.307.534-.2s-.206-.057-.542-.169l-.512.193a18.516 18.516 0 0 0 .52.176Zm-12.2-4.765.368-.017a8.585 8.585 0 0 1-.128-.343l-.24.36Zm189.191-.284a1.9 1.9 0 0 1-.063.397c-.136.524-.516 1.233-1.432 2.107-.93.889-2.247 1.558-3.306 2-.348.146-.673.27-.952.369l.502.188c4.34 1.63 9.15-.538 10.84-4.794l-5.589-.267ZM21.754 50.284c.381.005.732-.003 1.03-.015l-.328.305c-3.37 3.14-8.704 2.951-11.95-.34l5.033-2.322c.051.104.121.22.216.343.334.432.966.944 2.157 1.411 1.211.475 2.69.603 3.842.618Zm170.777-2.373a1.97 1.97 0 0 1-.217.344c-.335.432-.968.944-2.162 1.41-1.214.475-2.696.603-3.851.618-.383.005-.734-.002-1.033-.014l.338.313c3.375 3.137 8.717 2.945 11.972-.348l-5.047-2.323ZM29.559 54.285l-.159.341c-1.934 4.165-7.008 5.95-11.236 4.044l3.856-3.887c.082.074.185.151.312.227.46.274 1.228.519 2.51.536 1.314.018 2.734-.427 3.802-.86.342-.138.651-.276.915-.401Zm148.413-.25-.244-.523s.191.11.517.275l.232.497a15.83 15.83 0 0 1-.408-.2c-.034-.017-.067-.033-.097-.05Zm12.189 4.895-.259-.26c.112-.05.223-.103.334-.159l-.075.42Zm-159.731-.5c.075.026.16.05.257.066.465.08 1.164.003 2.213-.467 1.071-.48 2.11-1.359 2.866-2.096.21-.204.4-.4.566-.576l-.055.684c-.32 4.02-3.773 7.112-7.817 7.108l1.97-4.72Zm147.175-.001c-.076.027-.162.05-.259.067-.466.08-1.166.003-2.218-.467-1.074-.48-2.115-1.359-2.874-2.096a18.58 18.58 0 0 1-.568-.578l.054.676c.321 4.024 3.785 7.122 7.84 7.118l-1.975-4.72Z\" fill=\"#535353\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><rect x=\"39.95\" y=\"38.164\" width=\"41.579\" height=\"3.687\" rx=\"1.045\" fill=\"#fff\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><rect x=\"-.348\" y=\".348\" width=\"41.685\" height=\"3.687\" rx=\"1.045\" transform=\"matrix(-1 0 0 1 167.712 37.815)\" fill=\"#fff\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><rect x=\".333\" y=\".363\" width=\"3.309\" height=\"19.648\" rx=\"1.045\" transform=\"rotate(2.371 -1024.477 978.77) skewX(-.165)\" fill=\"#fff\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><rect x=\"-.333\" y=\".363\" width=\"3.319\" height=\"19.648\" rx=\"1.045\" transform=\"matrix(-.99915 .04127 .04436 .99901 167.724 43.255)\" fill=\"#fff\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><path d=\"M38.895 59.285c.034-.769.595 1.164 1.39 1.197l1.122.047c.795.032 1.524-1.847 1.49-1.078l-.128 2.887c-.035.77-.707 1.366-1.502 1.333l-1.122-.046c-.795-.033-1.413-.683-1.379-1.452l.129-2.888Zm130.222 0c-.034-.769-.597 1.164-1.394 1.197l-1.124.047c-.798.032-1.528-1.847-1.494-1.078l.129 2.887c.034.77.708 1.366 1.505 1.333l1.125-.046c.797-.033 1.416-.683 1.382-1.452l-.129-2.888ZM44.538 37.812c.881.001-1.304.698-1.304 1.56l-.001 1.217c0 .863 2.184 1.565 1.302 1.563l-3.309-.005c-.881-.002-1.595-.702-1.595-1.565l.001-1.216c0-.863.715-1.561 1.597-1.56l3.309.006Zm118.923 0c-.884.001 1.307.698 1.307 1.56l.001 1.217c0 .863-2.189 1.565-1.306 1.563l3.317-.005c.884-.002 1.6-.702 1.599-1.565v-1.216c-.001-.863-.717-1.561-1.601-1.56l-3.317.006Zm-86.522 4.372c-.881-.006 1.308-.69 1.314-1.553l.009-1.216c.006-.863-2.174-1.578-1.293-1.571l3.31.025c.88.007 1.59.712 1.584 1.574l-.009 1.217c-.006.862-.725 1.556-1.606 1.55l-3.31-.026Zm54.04 0c.883-.006-1.312-.69-1.318-1.553l-.008-1.216c-.006-.863 2.179-1.578 1.295-1.571l-3.317.025c-.884.007-1.595.712-1.589 1.574l.009 1.217c.006.862.727 1.556 1.611 1.55l3.317-.026Z\" fill=\"#535353\"/><rect x=\".338\" y=\".358\" width=\"3.309\" height=\"19.648\" rx=\"1.045\" transform=\"rotate(1.52 -1611.562 1719.996) skewX(-.106)\" fill=\"#fff\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><rect x=\"-.338\" y=\".358\" width=\"3.319\" height=\"19.648\" rx=\"1.045\" transform=\"matrix(-.99965 .02646 .02844 .9996 162.269 43.365)\" fill=\"#fff\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><rect x=\".337\" y=\".359\" width=\"3.309\" height=\"19.648\" rx=\"1.045\" transform=\"rotate(1.709 -1426.368 1724.352) skewX(-.119)\" fill=\"#fff\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><rect x=\"-.337\" y=\".359\" width=\"3.319\" height=\"19.648\" rx=\"1.045\" transform=\"matrix(-.99956 .02977 .032 .99949 156.474 43.362)\" fill=\"#fff\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><rect x=\".344\" y=\".353\" width=\"3.309\" height=\"19.647\" rx=\"1.045\" transform=\"rotate(.668 -3692.336 4830.977) skewX(-.047)\" fill=\"#fff\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><rect x=\"-.344\" y=\".353\" width=\"3.319\" height=\"19.647\" rx=\"1.045\" transform=\"matrix(-.99993 .01163 .0125 .99992 151.206 43.387)\" fill=\"#fff\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><rect x=\"61.74\" y=\"43.755\" width=\"3.309\" height=\"19.647\" rx=\"1.045\" fill=\"#fff\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><rect x=\"-.348\" y=\".348\" width=\"3.319\" height=\"19.647\" rx=\"1.045\" transform=\"matrix(-1 0 0 1 145.867 43.406)\" fill=\"#fff\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><rect x=\".353\" y=\".344\" width=\"3.309\" height=\"19.647\" rx=\"1.045\" transform=\"rotate(-.678 3710.365 -5625.085) skewX(.047)\" fill=\"#fff\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><rect x=\"-.353\" y=\".344\" width=\"3.319\" height=\"19.647\" rx=\"1.045\" transform=\"matrix(-.99993 -.01178 -.01267 .99992 140.53 43.427)\" fill=\"#fff\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><rect x=\".358\" y=\".34\" width=\"3.309\" height=\"19.648\" rx=\"1.045\" transform=\"rotate(-1.406 1808.11 -2914.11) skewX(.098)\" fill=\"#fff\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><rect x=\"-.358\" y=\".34\" width=\"3.319\" height=\"19.648\" rx=\"1.045\" transform=\"matrix(-.9997 -.02446 -.0263 .99965 135.203 43.449)\" fill=\"#fff\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><rect x=\".368\" y=\".33\" width=\"3.308\" height=\"19.649\" rx=\"1.045\" transform=\"matrix(.99863 -.0523 .05594 .99843 77.15 43.544)\" fill=\"#fff\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><rect x=\"-.368\" y=\".33\" width=\"3.318\" height=\"19.649\" rx=\"1.045\" transform=\"matrix(-.99864 -.05218 -.05608 .99843 130.032 43.505)\" fill=\"#fff\" stroke=\"#535353\" stroke-width=\".697\" stroke-linejoin=\"round\"/><path d=\"M44.574 59.41c.024-.769.609 1.158 1.405 1.182l1.121.034c.796.024 1.502-1.864 1.477-1.094l-.093 2.888c-.025.77-.69 1.374-1.486 1.35l-1.122-.034c-.796-.024-1.421-.667-1.396-1.437l.094-2.888Zm118.85 0c-.025-.769-.611 1.158-1.408 1.182l-1.125.034c-.798.024-1.506-1.864-1.481-1.094l.094 2.888c.025.77.692 1.374 1.49 1.35l1.125-.034c.797-.024 1.424-.667 1.399-1.437l-.094-2.888Zm-85.376.07c-.054-.768.725 1.094 1.519 1.042l1.12-.074c.794-.052 1.304-1.998 1.358-1.23l.202 2.884c.053.768-.547 1.433-1.341 1.485l-1.12.073c-.795.052-1.482-.528-1.536-1.296l-.202-2.884Zm51.818 0c.054-.768-.726 1.094-1.523 1.042l-1.122-.074c-.797-.052-1.308-1.998-1.362-1.23l-.202 2.884c-.054.768.548 1.433 1.344 1.485l1.123.073c.796.052 1.486-.528 1.54-1.296l.202-2.884Zm-57.426-.001c-.03-.77.688 1.115 1.483 1.087l1.122-.039c.796-.028 1.369-1.957 1.397-1.188l.108 2.889c.029.769-.593 1.415-1.389 1.443l-1.122.039c-.795.028-1.464-.574-1.492-1.343l-.108-2.888Zm63.05 0c.028-.77-.69 1.115-1.488 1.087l-1.125-.039c-.797-.028-1.372-1.957-1.401-1.188l-.107 2.889c-.029.769.594 1.415 1.392 1.443l1.124.039c.798.028 1.468-.574 1.497-1.343l.108-2.888Zm-68.558-.008c-.012-.77.658 1.13 1.446 1.119l1.111-.015c.789-.011 1.397-1.928 1.41-1.158l.044 2.89c.012.77-.618 1.402-1.406 1.413l-1.111.015c-.789.01-1.437-.604-1.45-1.374l-.044-2.89Zm74.078 0c.012-.77-.659 1.13-1.45 1.119l-1.114-.015c-.79-.011-1.4-1.928-1.412-1.158l-.045 2.89c-.012.77.619 1.402 1.409 1.413l1.115.015c.79.01 1.44-.604 1.452-1.374l.045-2.89Zm-79.567-.041c.004-.77.633 1.142 1.42 1.148l1.112.007c.789.005 1.439-1.899 1.434-1.129l-.018 2.89c-.005.77-.648 1.39-1.436 1.385l-1.111-.008c-.789-.005-1.424-.633-1.42-1.403l.019-2.89Zm85.07 0c-.005-.77-.635 1.142-1.425 1.148l-1.114.007c-.791.005-1.442-1.899-1.438-1.129l.018 2.89c.005.77.65 1.39 1.44 1.385l1.114-.008c.791-.005 1.427-.633 1.423-1.403l-.018-2.89Zm-90.607 0c.005-.77.633 1.142 1.421 1.148l1.112.007c.788.005 1.438-1.899 1.433-1.129l-.018 2.89c-.004.77-.647 1.39-1.436 1.385l-1.111-.008c-.788-.005-1.424-.633-1.42-1.403l.019-2.89Zm96.157 0c-.004-.77-.634 1.142-1.424 1.148l-1.115.007c-.79.005-1.442-1.899-1.437-1.129l.018 2.89c.005.77.65 1.39 1.44 1.385l1.114-.008c.79-.005 1.427-.633 1.423-1.403l-.019-2.89Zm-101.759-.039c.021-.77.608 1.155 1.396 1.176l1.111.03c.788.021 1.48-1.869 1.458-1.1l-.08 2.89c-.022.77-.678 1.376-1.467 1.355l-1.11-.03c-.789-.021-1.41-.662-1.389-1.432l.08-2.889Zm107.376 0c-.022-.77-.61 1.155-1.4 1.176l-1.114.03c-.79.021-1.483-1.869-1.461-1.1l.081 2.89c.021.77.679 1.376 1.469 1.355l1.114-.03c.79-.021 1.413-.662 1.392-1.432l-.081-2.889Z\" fill=\"#535353\"/><path d=\"m13.363 39.957 13.648-.7c-.94.592-2.102 1.05-3.98 1.334-1.437.217-2.887-.159-3.102-.284-.342.135-.618.317-1.706.725-1.335.5-2.492.491-3.309.2-.564-.2-1.284-.867-1.55-1.275Zm181.35 0-13.681-.7c.941.592 2.107 1.05 3.989 1.334 1.441.217 2.895-.159 3.111-.284.342.135.619.317 1.71.725 1.338.5 2.497.491 3.317.2.565-.2 1.287-.867 1.554-1.275ZM16.937 48.233 29.23 42.46c-.628.898-1.515 1.757-3.13 2.724-1.238.74-2.725.94-2.973.905-.26.253-.442.524-1.28 1.309-1.029.962-2.099 1.389-2.969 1.428-.6.027-1.53-.316-1.94-.592Zm174.194 0-12.324-5.774c.629.898 1.519 1.757 3.139 2.724 1.24.74 2.731.94 2.98.905.261.253.443.524 1.283 1.309 1.031.962 2.104 1.389 2.976 1.428.602.027 1.535-.316 1.946-.592ZM23.424 54.55l9.063-9.627c-.246 1.053-.741 2.16-1.858 3.62-.854 1.116-2.13 1.815-2.368 1.87-.145.325-.212.64-.69 1.661-.586 1.252-1.401 2.019-2.176 2.356-.534.232-1.5.235-1.971.12Zm161.204 0-9.086-9.627c.247 1.053.743 2.16 1.862 3.62.857 1.116 2.136 1.815 2.374 1.87.146.325.213.64.692 1.661.587 1.252 1.405 2.019 2.181 2.356.536.232 1.505.235 1.977.12ZM31.645 57.485l4.235-10.313c.11.92.045 1.952-.399 3.442-.34 1.142-1.123 2.064-1.29 2.175-.02.303.02.577-.058 1.534-.094 1.175-.503 2.023-1.004 2.512-.345.338-1.089.611-1.484.65Zm144.741 0-4.246-10.313c-.111.92-.046 1.952.399 3.442.341 1.142 1.126 2.064 1.294 2.175.019.303-.019.577.058 1.534.094 1.175.505 2.023 1.006 2.512.347.338 1.092.611 1.489.65Z\" fill=\"#EC4E3A\"/><path d=\"M18.186 43.128c-.5-.046-1.875-.832-2.49-1.302 1.856.483 3.668-.508 4.343-1.064.856.667 3.45.431 4.64.23-1.964.786-5.993 2.182-6.493 2.136Zm171.693 0c.501-.046 1.88-.832 2.496-1.302-1.861.483-3.677-.508-4.353-1.064-.859.667-3.459.431-4.652.23 1.968.786 6.008 2.182 6.509 2.136ZM22.654 49.342c-.479.146-2.062-.062-2.817-.264 1.904-.252 3.175-1.847 3.573-2.613 1.057.293 3.352-.899 4.367-1.532-1.492 1.462-4.644 4.264-5.123 4.41Zm162.745 0c.48.146 2.067-.062 2.824-.264-1.909-.252-3.183-1.847-3.582-2.613-1.06.293-3.36-.899-4.378-1.532 1.496 1.462 4.655 4.264 5.136 4.41ZM28.915 53.538c-.382.3-1.89.654-2.648.727 1.635-.893 2.214-2.818 2.299-3.669 1.063-.092 2.714-1.996 3.406-2.936-.827 1.878-2.675 5.577-3.057 5.878Zm150.207 0c.382.3 1.896.654 2.654.727-1.639-.893-2.219-2.818-2.304-3.669-1.066-.092-2.721-1.996-3.415-2.936.829 1.878 2.682 5.577 3.065 5.878Zm-143.536 1.59c-.208.35-1.27 1.059-1.832 1.33 1.005-1.18.901-2.895.724-3.605.792-.374 1.521-2.373 1.786-3.326-.101 1.747-.47 5.25-.678 5.6Zm136.848 0c.209.35 1.273 1.059 1.837 1.33-1.007-1.18-.904-2.895-.726-3.605-.794-.374-1.525-2.373-1.791-3.326.102 1.747.472 5.25.68 5.6Z\" fill=\"#4194A7\"/><path d=\"M47.169 40.745c.371-.192.404-1.048 0-1.467-.492-.51-2.508-.329-2.786 0-.28.33-.341.958 0 1.467.34.509 2.322.24 2.786 0Zm113.654 0c-.372-.192-.405-1.048 0-1.467.493-.51 2.514-.329 2.793 0 .28.33.342.958 0 1.467-.341.509-2.327.24-2.793 0ZM74.15 39.249c-.372.191-.405 1.048 0 1.466.491.51 2.507.33 2.786 0 .278-.329.34-.957 0-1.466s-2.322-.24-2.787 0Zm59.624 0c.373.191.405 1.048 0 1.466-.493.51-2.514.33-2.793 0-.28-.329-.342-.957 0-1.466.341-.509 2.328-.24 2.793 0Z\" fill=\"#535353\"/><path d=\"M48.476 38.114c.447.435 1.072 1.791 0 3.732m111.037-3.732c-.448.435-1.076 1.791 0 3.732M73.06 38.062c-.446.435-1.072 1.791 0 3.732m61.806-3.732c.448.435 1.075 1.791 0 3.732\" stroke=\"#535353\" stroke-width=\".976\"/><path d=\"M56.825 39.206c-.546.23-.276 1.075-.072 1.47.562.79 2.88.319 3.969-.016.58.107 3.366.355 3.825.377.458.02 1.156-1.42.38-1.773-.621-.284-3.224.142-4.448.39-.99-.245-3.108-.677-3.654-.448Zm94.316 0c.548.23.277 1.075.073 1.47-.564.79-2.888.319-3.979-.016-.581.107-3.375.355-3.834.377-.46.02-1.16-1.42-.382-1.773.623-.284 3.232.142 4.459.39.993-.245 3.116-.677 3.663-.448Z\" fill=\"#4194A7\"/><path d=\"M52.904 38.968c-.254 0-2.669.83-2.669 1.076 0 .316 2.451.927 2.67.927.173 0 2.725-.77 2.673-.927-.052-.158-2.42-1.076-2.674-1.076Zm102.169 0c.255 0 2.675.83 2.675 1.076 0 .316-2.457.927-2.675.927-.175 0-2.733-.77-2.681-.927.052-.158 2.426-1.076 2.681-1.076Zm-86.233 0c-.255 0-2.67.83-2.67 1.076 0 .316 2.451.927 2.67.927.174 0 2.725-.77 2.673-.927-.051-.158-2.42-1.076-2.674-1.076Zm70.258 0c.255 0 2.675.83 2.675 1.076 0 .316-2.456.927-2.675.927-.175 0-2.732-.77-2.681-.927.052-.158 2.426-1.076 2.681-1.076Zm-98.455 15.38c.483.982.684 2.24.725 2.745.302-1.227.604-2.626.604-3.797 0-1.067-.604-1.66-1.33-1.228-.626.373-.604 1.052 0 2.28Zm126.722 0c-.485.982-.687 2.24-.727 2.745-.303-1.227-.606-2.626-.606-3.797 0-1.067.606-1.66 1.333-1.228.628.373.606 1.052 0 2.28Zm-120.993 0c.483.982.684 2.24.725 2.745.302-1.227.604-2.626.604-3.797 0-1.067-.604-1.66-1.33-1.228-.626.373-.604 1.052 0 2.28Zm115.25 0c-.484.982-.686 2.24-.727 2.745-.303-1.227-.606-2.626-.606-3.797 0-1.067.606-1.66 1.333-1.228.628.373.606 1.052 0 2.28Zm-109.597 0c.483.982.685 2.24.725 2.745.302-1.227.605-2.626.605-3.797 0-1.067-.605-1.66-1.33-1.228-.626.373-.604 1.052 0 2.28Zm103.93 0c-.485.982-.687 2.24-.727 2.745-.303-1.227-.606-2.626-.606-3.797 0-1.067.606-1.66 1.333-1.228.628.373.606 1.052 0 2.28Zm-98.393.004c.504.973.731 2.226.782 2.731.277-1.233.55-2.638.526-3.808-.022-1.067-.639-1.648-1.355-1.202-.618.385-.582 1.063.047 2.28Zm92.842 0c-.505.973-.733 2.226-.784 2.731-.277-1.233-.551-2.638-.527-3.808.022-1.067.64-1.648 1.358-1.202.62.385.584 1.063-.047 2.28Zm-87.384.244c.503.973.73 2.226.781 2.731.277-1.233.55-2.638.526-3.809-.022-1.066-.638-1.647-1.354-1.201-.619.385-.583 1.063.047 2.279Zm81.913 0c-.505.973-.733 2.226-.784 2.731-.277-1.233-.551-2.638-.527-3.809.022-1.066.64-1.647 1.358-1.201.62.385.584 1.063-.047 2.279Zm-76.381.013c.542.953.82 2.197.89 2.7.228-1.243.445-2.657.374-3.826-.065-1.065-.704-1.622-1.402-1.15-.602.408-.54 1.084.138 2.276Zm70.833 0c-.543.953-.821 2.197-.892 2.7-.228-1.243-.446-2.657-.374-3.826.064-1.065.705-1.622 1.405-1.15.604.408.541 1.084-.139 2.276Zm-65.483.001c.55.95.838 2.191.912 2.693.218-1.244.423-2.66.343-3.828-.074-1.064-.718-1.617-1.411-1.14-.6.413-.531 1.09.156 2.275Zm60.121 0c-.551.95-.839 2.191-.915 2.693-.217-1.244-.423-2.66-.342-3.828.073-1.064.718-1.617 1.414-1.14.601.413.532 1.09-.157 2.275Zm-54.576-.326c.586.929.92 2.16 1.015 2.659.17-1.252.32-2.674.195-3.838-.114-1.061-.778-1.59-1.453-1.088-.583.433-.489 1.106.243 2.267Zm49.017 0c-.588.929-.923 2.16-1.018 2.659-.17-1.252-.321-2.674-.195-3.838.114-1.061.78-1.59 1.457-1.088.584.433.49 1.106-.244 2.267ZM40.96 46.432c.412.835.583 1.905.617 2.335.258-1.044.515-2.234.515-3.23 0-.907-.514-1.41-1.131-1.044-.533.317-.514.895 0 1.939Zm126.087 0c-.412.835-.584 1.905-.618 2.335-.258-1.044-.515-2.234-.515-3.23 0-.907.515-1.41 1.133-1.044.534.317.515.895 0 1.939Zm-120.358 0c.41.835.582 1.905.617 2.335.257-1.044.514-2.234.514-3.23 0-.907-.514-1.41-1.131-1.044-.533.317-.514.895 0 1.939Zm114.615 0c-.412.835-.584 1.905-.618 2.335-.258-1.044-.516-2.234-.516-3.23 0-.907.516-1.41 1.134-1.044.534.317.515.895 0 1.939Zm-108.962 0c.411.835.583 1.905.617 2.335.257-1.044.514-2.234.514-3.23 0-.907-.514-1.41-1.13-1.044-.533.317-.515.895 0 1.939Zm103.294 0c-.412.835-.584 1.905-.618 2.335-.258-1.044-.515-2.234-.515-3.23 0-.907.515-1.41 1.133-1.044.534.317.516.895 0 1.939Zm-97.92.003c.428.827.622 1.893.665 2.323.235-1.049.468-2.244.447-3.24-.019-.906-.543-1.4-1.152-1.02-.526.326-.495.903.04 1.937Zm92.533 0c-.43.827-.624 1.893-.667 2.323-.236-1.049-.469-2.244-.448-3.24.019-.906.544-1.4 1.155-1.02.527.326.496.903-.04 1.937Zm-87.075.241c.428.827.621 1.893.664 2.323.236-1.05.468-2.244.448-3.24-.02-.906-.543-1.4-1.152-1.021-.526.327-.496.904.04 1.938Zm81.603 0c-.429.827-.623 1.893-.666 2.323-.236-1.05-.469-2.244-.448-3.24.018-.906.544-1.4 1.155-1.021.527.327.496.904-.041 1.938Zm-76.387.014c.461.81.697 1.868.757 2.296.193-1.057.378-2.26.318-3.254-.055-.905-.599-1.38-1.192-.978-.513.347-.46.922.117 1.935Zm71.158 0c-.462.81-.698 1.868-.759 2.296-.194-1.057-.379-2.26-.318-3.254.055-.905.6-1.38 1.195-.978.513.347.46.922-.118 1.935Zm-65.873.004c.468.807.712 1.863.776 2.29.185-1.058.36-2.262.29-3.256-.061-.905-.609-1.375-1.2-.968-.508.35-.45.925.134 1.934Zm60.575 0c-.468.807-.714 1.863-.777 2.29-.186-1.058-.361-2.262-.292-3.256.062-.905.611-1.375 1.203-.968.511.35.452.925-.134 1.934Zm-55.333-.317c.498.79.783 1.836.863 2.26.144-1.063.272-2.273.166-3.263-.097-.902-.662-1.352-1.236-.925-.496.368-.416.94.207 1.928Zm50.078 0c-.499.79-.785 1.836-.865 2.26-.145-1.063-.273-2.273-.167-3.263.098-.902.664-1.352 1.24-.925.497.368.416.94-.208 1.928Z\" fill=\"#EC4E3A\"/><path d=\"M41.306 57.702c-.477-.985-.671-2.243-.708-2.75-.31 1.226-.62 2.624-.628 3.795-.007 1.066.594 1.662 1.322 1.235.628-.37.61-1.049.014-2.28Zm125.394 0c.479-.985.673-2.243.71-2.75.311 1.226.622 2.624.629 3.795.007 1.066-.595 1.662-1.325 1.235-.63-.37-.612-1.049-.014-2.28Zm-119.666 0c-.477-.985-.671-2.243-.708-2.75-.31 1.226-.62 2.624-.628 3.795-.007 1.066.594 1.662 1.322 1.235.628-.37.61-1.049.014-2.28Zm113.924 0c.479-.985.673-2.243.71-2.75.311 1.226.622 2.624.63 3.795.006 1.066-.596 1.662-1.326 1.235-.63-.37-.612-1.049-.014-2.28Zm-108.27 0c-.477-.985-.671-2.243-.708-2.75-.31 1.226-.621 2.624-.628 3.795-.007 1.066.594 1.662 1.322 1.235.628-.37.61-1.049.014-2.28Zm102.602 0c.478-.985.673-2.243.71-2.75.31 1.226.622 2.624.629 3.795.007 1.066-.595 1.662-1.325 1.235-.63-.37-.612-1.049-.014-2.28Zm-96.996-.004c-.498-.976-.717-2.23-.765-2.736-.285 1.231-.567 2.635-.55 3.806.016 1.066.629 1.65 1.348 1.209.62-.381.589-1.06-.033-2.28Zm91.375 0c.499-.976.719-2.23.767-2.736.285 1.231.568 2.635.551 3.806-.015 1.066-.63 1.65-1.351 1.209-.622-.381-.59-1.06.033-2.28Zm-85.917.242c-.498-.976-.718-2.23-.765-2.736-.285 1.231-.567 2.634-.55 3.805.016 1.067.629 1.651 1.348 1.21.62-.382.589-1.06-.033-2.28Zm80.446 0c.499-.976.719-2.23.767-2.736.285 1.231.568 2.634.551 3.805-.016 1.067-.63 1.651-1.351 1.21-.622-.382-.59-1.06.033-2.28Zm-74.781-.019c-.536-.956-.805-2.202-.873-2.705-.235 1.241-.46 2.654-.397 3.823.058 1.066.694 1.627 1.394 1.158.605-.404.547-1.08-.124-2.276Zm69.102 0c.537-.956.808-2.202.876-2.705.235 1.241.461 2.654.397 3.823-.058 1.066-.695 1.627-1.398 1.158-.606-.404-.547-1.08.125-2.276Zm-63.725-.004c-.544-.952-.824-2.195-.896-2.698-.225 1.243-.439 2.657-.366 3.826.067 1.065.707 1.621 1.404 1.148.602-.409.538-1.085-.142-2.276Zm58.334 0c.546-.952.826-2.195.898-2.698.225 1.243.44 2.657.367 3.826-.067 1.065-.709 1.621-1.408 1.148-.603-.409-.538-1.085.143-2.276Zm-52.663-.364c-.58-.932-.907-2.165-.998-2.665-.177 1.25-.337 2.672-.219 3.837.108 1.062.769 1.594 1.447 1.096.586-.43.495-1.103-.23-2.268Zm46.978 0c.582-.932.91-2.165 1.001-2.665.177 1.25.338 2.672.219 3.837-.107 1.062-.77 1.594-1.45 1.096-.587-.43-.497-1.103.23-2.268Zm-85.918-8.268c-.406-.837-.571-1.907-.603-2.338-.263 1.042-.527 2.23-.534 3.227-.005.907.506 1.414 1.125 1.05.534-.314.52-.891.012-1.938Zm124.957 0c.407-.837.572-1.907.604-2.338.264 1.042.529 2.23.535 3.227.005.907-.507 1.414-1.127 1.05-.536-.314-.521-.891-.012-1.938Zm-119.229 0c-.406-.837-.571-1.907-.603-2.338-.263 1.042-.527 2.23-.534 3.227-.005.907.506 1.414 1.125 1.05.534-.314.52-.891.012-1.938Zm113.486 0c.407-.837.572-1.907.604-2.338.264 1.042.529 2.23.535 3.227.006.907-.506 1.414-1.127 1.05-.536-.314-.521-.891-.012-1.938Zm-107.832 0c-.406-.837-.571-1.907-.603-2.338-.263 1.042-.528 2.23-.534 3.227-.005.907.505 1.414 1.124 1.05.535-.314.52-.891.013-1.938Zm102.164 0c.407-.837.572-1.907.604-2.338.264 1.042.529 2.23.535 3.227.006.907-.506 1.414-1.127 1.05-.536-.314-.521-.891-.012-1.938Zm-96.732-.007c-.423-.83-.61-1.896-.65-2.326-.243 1.047-.482 2.24-.468 3.236.013.907.534 1.404 1.146 1.028.527-.324.5-.9-.028-1.938Zm91.286 0c.424-.83.611-1.896.652-2.326.242 1.047.483 2.24.468 3.236-.013.907-.535 1.404-1.148 1.028-.529-.324-.502-.9.028-1.938Zm-85.829.241c-.423-.83-.61-1.897-.65-2.327-.242 1.048-.482 2.241-.468 3.237.014.907.535 1.404 1.146 1.028.528-.324.501-.901-.028-1.938Zm80.357 0c.424-.83.612-1.897.652-2.327.243 1.048.483 2.241.469 3.237-.014.907-.536 1.404-1.149 1.028-.529-.324-.502-.901.028-1.938Zm-75.027-.013c-.456-.813-.685-1.872-.743-2.3-.2 1.055-.392 2.257-.337 3.251.049.906.59 1.383 1.185.985.515-.343.465-.92-.105-1.936Zm69.685 0c.457-.813.687-1.872.745-2.3.2 1.055.392 2.257.338 3.251-.049.906-.591 1.383-1.189.985-.516-.343-.466-.92.106-1.936Zm-64.378-.001c-.463-.81-.7-1.867-.762-2.294-.19 1.057-.373 2.26-.31 3.254.056.905.6 1.378 1.193.975.512-.347.457-.922-.12-1.935Zm59.057 0c.464-.81.702-1.867.764-2.294.191 1.057.374 2.26.311 3.254-.056.905-.602 1.378-1.196.975-.513-.347-.459-.922.121-1.935Zm-53.707-.344c-.493-.792-.772-1.84-.849-2.266-.15 1.063-.287 2.272-.186 3.263.091.903.653 1.356 1.23.932.498-.365.422-.938-.195-1.929Zm48.344 0c.494-.792.773-1.84.851-2.266.151 1.063.287 2.272.187 3.263-.092.903-.656 1.356-1.234.932-.499-.365-.422-.938.196-1.929Z\" fill=\"#4194A7\"/><path d=\"M108.227 8.574S93.462 6.464 91.514 6.24c-3.108-.353-11.026.462-6.412 11.108 3.074 7.09 4.566-2.62 8.007 1.683\" fill=\"#EEA201\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M97.555 7.058c4.821.675 10.668 1.511 10.668 1.511L93.105 19.025c-1.595-1.993-2.77-.977-3.88-.019-1.284 1.11-2.478 2.14-4.127-1.663-.5-1.152-.852-2.189-1.08-3.121.853-.807 2.526-1.98 4.573-2.841 1.528-.644 2.642-.856 3.466-1.013.435-.082.789-.15 1.08-.257.336-.124.974-.627 1.695-1.197.922-.729 1.982-1.565 2.724-1.856Z\" fill=\"#693F00\" fill-opacity=\".2\" style=\"mix-blend-mode:darken\"/><path d=\"m107.433 8.455-7.64-1.133c-3.746 0-6.78 4.166-6.78 7.912v17.078a6.776 6.776 0 0 0 6.78 6.78h7.64a6.776 6.776 0 0 0 6.778-6.78V15.235c.007-3.74-3.033-6.78-6.778-6.78Z\" fill=\"#fff\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M114.211 19.779c-.113 1.576-.337 4.128-.94 5.247-2.412 4.471-7.629 4.761-12.455 5.03a430.692 430.692 0 0 0-1.28.073c-3.57.206-5.629.325-6.522-.44v2.623c0 .182.007.362.02.54 1.148.484 3.34.876 7.584 1.029 3.596.13 10.907.207 13.592-1.457l.001-.112V19.78Z\" fill=\"#1B1C22\" fill-opacity=\".1\" style=\"mix-blend-mode:darken\"/><path d=\"M97.091 11.482s2.416-3.895 8.238.183c0 0-3.311 4.933-8.238-.183Z\" fill=\"#EEA201\"/><path d=\"M102.194 11.502a1.697 1.697 0 1 1-3.394 0 1.697 1.697 0 0 1 3.394 0Z\" fill=\"#401810\"/><path d=\"M112.054 31.078h-16.59a5.101 5.101 0 0 0-5.103 5.102 5.101 5.101 0 0 0 5.102 5.103h16.591a5.1 5.1 0 0 0 5.102-5.103 5.096 5.096 0 0 0-5.102-5.102Z\" fill=\"#EC4E3A\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M114.474 31.686c-.082.57-.723 1.787-3.29 2.227-3.366.577-18.896.589-19.328.156-.309-.308-.058-1.134.17-1.661a5.09 5.09 0 0 0-1.665 3.772c0 .529.08 1.038.229 1.518.269.159.592.28.977.35 1.638.294 20.258.368 25.362-.355.148-.478.227-.986.227-1.513a5.087 5.087 0 0 0-2.682-4.494Z\" fill=\"#450000\" fill-opacity=\".2\" style=\"mix-blend-mode:darken\"/><path d=\"M123.3 71.374H84.748v46.619H123.3V71.374Z\" fill=\"url(#a)\"/><path d=\"M104.023 110.405s-4.875.614-4.875-3.25 1.959-12.442 4.875-12.495c2.917.053 4.876 8.631 4.876 12.495 0 3.864-4.876 3.25-4.876 3.25Z\" fill=\"url(#b)\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M104.024 123.287v.002H90.237c-5.715 0-5.49-5.295-5.49-5.295h19.277v-.002h19.275s.226 5.295-5.489 5.295h-13.786Z\" fill=\"url(#c)\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M104.024 71.373v-5.295h13.787c5.715 0 5.489 5.295 5.489 5.295h-19.276Zm0 .002v-5.296H90.237c-5.715 0-5.49 5.296-5.49 5.296h19.277Z\" fill=\"url(#d)\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M104.023 109.07a2.136 2.136 0 0 0 2.131-2.131 2.129 2.129 0 0 0-2.131-2.131v4.262Zm0 0a2.136 2.136 0 0 1-2.131-2.131c0-1.173.958-2.131 2.131-2.131v4.262Z\" fill=\"url(#e)\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M104.024 101.064h1.905v2.357h-1.905v.001h-1.905v-2.357h1.905v-.001Z\" fill=\"url(#f)\"/><path d=\"M104.024 114.677a.968.968 0 1 0 0-1.937.968.968 0 0 0 0 1.937Z\" fill=\"#505153\"/><path d=\"M96.565 114.677a.969.969 0 1 0 0-1.938.969.969 0 0 0 0 1.938Z\" fill=\"#EF3836\"/><path d=\"M111.504 114.677a.968.968 0 1 0 0-1.937.968.968 0 0 0 0 1.937Z\" fill=\"#00A2DD\"/><path d=\"M115.438 193.261h-3.314v5.707h3.314v-5.707Z\" fill=\"#F7F8F8\"/><path d=\"M115.438 195.144h-3.314v1.071h3.314v-1.071Z\" fill=\"#00A2DD\"/><path d=\"M116.049 197.997h-4.536v1.943h4.536v-1.943Z\" fill=\"#3E3F41\"/><path d=\"M95.974 193.261H92.66v5.707h3.314v-5.707Z\" fill=\"#F7F8F8\"/><path d=\"M95.974 195.144H92.66v1.071h3.314v-1.071Z\" fill=\"#EF3836\"/><path d=\"M96.585 197.997H92.05v1.943h4.536v-1.943Z\" fill=\"#3E3F41\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M104.024 128.876v-5.657h10.841c5.844 0 8.436 5.657 8.436 5.657h-19.277Zm-.002.001v-5.657h-10.84c-5.845 0-8.437 5.657-8.437 5.657h19.277Z\" fill=\"url(#g)\"/><path d=\"M123.301 128.89H84.747v57.27h38.554v-57.27Z\" fill=\"url(#h)\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M87.214 189.648c-2.729-1.683-2.467-3.502-2.467-3.502h19.277v7.788H91.887c-3.48 0-3.83-1.722-4.09-3.008-.117-.583-.217-1.076-.583-1.278Zm33.62 0c2.729-1.683 2.467-3.502 2.467-3.502h-19.277v7.788h12.137c3.481 0 3.83-1.722 4.09-3.008.118-.583.218-1.076.583-1.278Z\" fill=\"url(#i)\"/><path d=\"M104.024 193.934h-4.461c.137-1.583 2.182-5.134 4.461-5.134v5.134Z\" fill=\"url(#j)\"/><path d=\"M104.024 193.934h4.461c-.137-1.583-2.512-5.134-4.461-5.134v5.134Z\" fill=\"url(#k)\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M104.037 191.168h2.454v1.657h-4.922v-1.657h2.468Z\" fill=\"#F7F8F8\"/><path d=\"M104.024 138.995a2.813 2.813 0 0 1-2.816-2.817 2.813 2.813 0 0 1 2.816-2.816\" fill=\"url(#l)\"/><path d=\"M104.024 138.995a2.814 2.814 0 0 0 2.816-2.817 2.814 2.814 0 0 0-2.816-2.816\" fill=\"url(#m)\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M104.024 175.966h5.957a1.864 1.864 0 0 0 1.869-1.857v-7.912c0-.848-.686-1.533-1.533-1.533h-6.293v11.302Zm-5.807.001h5.807v-11.302h-5.956c-1.034 0-1.87.835-1.87 1.869v7.414c0 1.122.91 2.019 2.02 2.019Z\" fill=\"url(#n)\"/><path d=\"M105.643 180.988h-3.227a.625.625 0 0 1-.623-.623v-.66c0-.337.274-.623.623-.623h3.227c.337 0 .623.274.623.623v.672a.63.63 0 0 1-.623.611Z\" fill=\"#F7F8F8\"/><path d=\"M99.488 180.988h-3.227a.625.625 0 0 1-.623-.623v-.66c0-.337.274-.623.623-.623h3.227c.337 0 .623.274.623.623v.672a.614.614 0 0 1-.623.611Z\" fill=\"#EF3836\"/><path d=\"M111.824 180.988h-3.227a.624.624 0 0 1-.623-.623v-.66c0-.337.274-.623.623-.623h3.227c.337 0 .623.274.623.623v.672a.614.614 0 0 1-.623.611Z\" fill=\"#00A2DD\"/><path d=\"M123.295 38.085a2.852 2.852 0 0 0-2.851-2.851H87.595a2.852 2.852 0 0 0-2.85 2.851v3.198h38.55v-3.198Z\" fill=\"url(#o)\"/><path d=\"M84.747 63.227a2.852 2.852 0 0 0 2.85 2.85h32.85a2.852 2.852 0 0 0 2.851-2.85v-3.199H84.747v3.199Z\" fill=\"url(#p)\"/><path d=\"M123.298 41.285H84.747v18.744h38.551V41.285Z\" fill=\"url(#q)\"/><path opacity=\".1\" d=\"M92.415 41.285h-7.668v18.744h7.668V41.285Z\" fill=\"url(#r)\"/><path opacity=\".1\" d=\"M123.298 41.285h-7.669v18.744h7.669V41.285Z\" fill=\"url(#s)\"/><path d=\"M84.747 41.285h38.551M84.747 60.027h38.551\" stroke=\"#D1D3D4\" stroke-width=\".158\" stroke-miterlimit=\"10\"/><path opacity=\".2\" d=\"M97.285 54.657a4.036 4.036 0 1 1-8.073 0 4.036 4.036 0 0 1 8.073 0Z\" fill=\"url(#t)\"/><path d=\"M97.286 54.097a4.036 4.036 0 1 1-8.073 0 4.036 4.036 0 0 1 8.073 0Z\" fill=\"url(#u)\"/><path d=\"M93.248 57.576a3.478 3.478 0 1 0 0-6.955 3.478 3.478 0 0 0 0 6.955Z\" fill=\"url(#v)\"/><path d=\"M96.424 54.099a3.175 3.175 0 1 1-6.35 0 3.175 3.175 0 0 1 6.35 0Z\" fill=\"#F5F5F5\"/><path opacity=\".1\" d=\"M90.097 53.724H96.4a3.174 3.174 0 0 0-6.304 0Z\" fill=\"url(#w)\"/><path d=\"M92.966 54.191a.097.097 0 0 1-.098-.098c0-.055.044-.098.098-.098h1.89c.055 0 .099.044.099.098a.097.097 0 0 1-.098.098h-1.89Z\" fill=\"#ED1C24\"/><path opacity=\".7\" d=\"M92.966 54.188h1.89a.097.097 0 0 0 .099-.098h-2.087c0 .055.044.098.098.098Z\" fill=\"url(#x)\"/><path opacity=\".3\" d=\"M94.857 54.02h-1.89a.074.074 0 0 0-.074.074h2.04a.077.077 0 0 0-.076-.074Z\" fill=\"url(#y)\"/><path fill=\"url(#z)\" d=\"M93.016 53.869h.463v.463h-.463z\"/><path d=\"M93.313 53.301v-.072h-.127v.072a.127.127 0 1 0 .19.111.124.124 0 0 0-.063-.11Zm.056-.029v-.581a.121.121 0 0 0-.12-.12.121.121 0 0 0-.12.12v.581a.185.185 0 1 0 .241 0Zm-.12.294a.153.153 0 0 1-.095-.273l.006-.005v-.596a.09.09 0 1 1 .18 0v.058h-.079c-.01 0-.02.01-.02.021 0 .011.01.021.02.021h.08v.143h-.08c-.01 0-.02.01-.02.02 0 .012.01.022.02.022h.08v.143h-.08c-.01 0-.02.01-.02.02 0 .012.01.021.02.021h.08v.127l.006.005a.153.153 0 0 1 .058.12.156.156 0 0 1-.156.153Z\" fill=\"#000\"/><path d=\"m91.859 51.966.281.487c.077-.053.157-.1.242-.14l-.28-.487c-.084.042-.164.09-.243.14Z\" fill=\"#3F44C6\"/><path d=\"m92.637 51.629.098.554c.11-.03.226-.05.345-.061l-.098-.554a2.42 2.42 0 0 0-.345.06Z\" fill=\"#3D23DF\"/><path d=\"m91.238 52.544.429.36a1.82 1.82 0 0 1 .135-.16l-.43-.362a4.5 4.5 0 0 0-.134.162Z\" fill=\"#005DB2\"/><path d=\"M90.709 54.06v.071h.56v-.07h-.56Z\" fill=\"#00AEEF\"/><path d=\"m90.837 53.291.527.192c.015-.045.03-.089.048-.132l-.526-.191a2.158 2.158 0 0 0-.049.131Z\" fill=\"#008BA9\"/><path d=\"m95.51 52.935-.532.195c.102.181.176.38.217.593l.532-.195a2.487 2.487 0 0 0-.217-.593Z\" fill=\"#F12254\"/><path d=\"M95.766 53.746h-.567a1.943 1.943 0 0 1 0 .7h.567a2.507 2.507 0 0 0 0-.7Z\" fill=\"#ED1C24\"/><path d=\"m94.301 51.782-.281.488c.153.064.294.148.424.246l.283-.488a2.595 2.595 0 0 0-.426-.246Z\" fill=\"#7D1AFA\"/><path d=\"m95.003 52.256-.432.363c.14.126.262.27.361.43l.432-.364a2.562 2.562 0 0 0-.361-.429Z\" fill=\"#F520C6\"/><path d=\"M93.384 52.12c.143.009.28.033.414.071l.098-.554a2.52 2.52 0 0 0-.414-.072l-.098.554Z\" fill=\"#7305FF\"/><path d=\"M111.135 57.202a.68.68 0 0 1-.678.678h-8.721a.68.68 0 0 1-.677-.678v-4.938a.68.68 0 0 1 .677-.678h8.721a.68.68 0 0 1 .678.678v4.938Z\" fill=\"#fff\"/><path opacity=\".05\" d=\"M106.348 55.18a1.607 1.607 0 1 1-3.214.002 1.607 1.607 0 0 1 3.214-.002Z\" fill=\"url(#A)\"/><path opacity=\".1\" d=\"M110.457 51.586h-8.721a.68.68 0 0 0-.677.678v4.938a.68.68 0 0 0 .677.678h8.721a.68.68 0 0 0 .678-.678v-4.938a.68.68 0 0 0-.678-.678Zm.339 5.616a.34.34 0 0 1-.339.339h-8.721a.34.34 0 0 1-.338-.339v-4.938a.34.34 0 0 1 .338-.339h8.721a.34.34 0 0 1 .339.34v4.937Z\" fill=\"#000\"/><path d=\"M106.348 54.959a1.607 1.607 0 1 1-3.214 0 1.607 1.607 0 0 1 3.214 0Z\" fill=\"url(#B)\"/><path d=\"M106.167 54.961a1.425 1.425 0 1 1-2.85 0 1.425 1.425 0 0 1 2.85 0Z\" fill=\"url(#C)\"/><path d=\"m103.118 55.858-.458.263a.034.034 0 0 0-.012.047.032.032 0 0 0 .046.013l.458-.264a.035.035 0 0 0 .013-.046.034.034 0 0 0-.047-.013Zm-.135-.427c-.005-.018-.024-.03-.041-.024l-.511.136a.034.034 0 0 0-.024.042.032.032 0 0 0 .033.026c.004 0 .007 0 .008-.002l.511-.137a.034.034 0 0 0 .024-.041Zm-.289-1.693a.034.034 0 0 0-.046.012.034.034 0 0 0 .012.047l.458.265a.032.032 0 0 0 .018.005c.011 0 .022-.007.03-.018a.034.034 0 0 0-.012-.046l-.46-.265Zm.885-.86a.034.034 0 0 0-.046-.013c-.016.01-.023.03-.013.047l.263.458a.035.035 0 0 0 .029.017.038.038 0 0 0 .018-.004.035.035 0 0 0 .013-.047l-.264-.458Zm2.739 1.171a.034.034 0 0 0 .029.018.04.04 0 0 0 .018-.005l.457-.263c.016-.01.023-.03.013-.047a.034.034 0 0 0-.046-.013l-.458.264a.036.036 0 0 0-.013.046Zm-3.397.911a.034.034 0 0 0-.034-.034h-.529a.033.033 0 0 0-.033.034c0 .02.014.034.033.034h.529a.033.033 0 0 0 .034-.034Zm3.58-.472c.003.016.018.025.034.025l.008-.001.511-.137a.035.035 0 0 0 .024-.041.035.035 0 0 0-.042-.025l-.511.137a.034.034 0 0 0-.024.042Zm-4.07-.113.511.137.009.001c.015 0 .029-.01.034-.025a.035.035 0 0 0-.024-.042l-.511-.137a.035.035 0 0 0-.042.025.032.032 0 0 0 .023.041Zm.65-1.124a.035.035 0 0 0-.048 0 .035.035 0 0 0 0 .048l.373.374a.035.035 0 0 0 .048 0 .035.035 0 0 0 0-.048l-.373-.374Zm1.035-.627a.034.034 0 0 0-.024.042l.136.511a.034.034 0 0 0 .032.026c.004 0 .007 0 .008-.002a.034.034 0 0 0 .024-.042l-.136-.51a.032.032 0 0 0-.04-.025Zm2.25 3.234a.034.034 0 0 0-.046.013.034.034 0 0 0 .012.046l.458.265a.033.033 0 0 0 .018.005.035.035 0 0 0 .029-.017.035.035 0 0 0-.013-.047l-.458-.265Zm.686-.315-.509-.136a.035.035 0 0 0-.042.024.034.034 0 0 0 .024.041l.511.137.008.002c.014 0 .029-.01.034-.026a.037.037 0 0 0-.026-.042Zm.072-.617h-.528a.033.033 0 0 0-.034.034c0 .02.015.034.034.034h.528c.02 0 .034-.015.034-.034.002-.02-.014-.034-.034-.034Zm-.673-1.675a.035.035 0 0 0-.048 0l-.374.373a.035.035 0 0 0 0 .048.035.035 0 0 0 .048 0l.374-.373a.034.034 0 0 0 0-.048Zm-1.709-.709a.034.034 0 0 0-.034.034v.529c0 .019.015.033.034.033a.034.034 0 0 0 .034-.033v-.529a.035.035 0 0 0-.034-.034Zm1.162.336-.266.458a.035.035 0 0 0 .031.051.034.034 0 0 0 .029-.017l.265-.458c.01-.016.003-.037-.013-.047-.016-.008-.037-.003-.046.013Zm-.537-.254a.035.035 0 0 0-.042.024l-.136.51a.034.034 0 0 0 .024.041.016.016 0 0 0 .008.002c.014 0 .029-.01.032-.026l.137-.509a.032.032 0 0 0-.023-.042Z\" fill=\"#A7A9AC\"/><path d=\"M109.831 53.19a.53.53 0 1 1-1.061-.001.53.53 0 0 1 1.061.001Z\" fill=\"url(#D)\"/><path d=\"M109.746 53.19a.447.447 0 1 1-.894-.001.447.447 0 0 1 .894 0Z\" fill=\"#EF3836\"/><path d=\"M109.83 54.735a.53.53 0 1 1-1.061-.002.53.53 0 0 1 1.061.002Z\" fill=\"url(#E)\"/><path d=\"M109.301 55.18a.447.447 0 1 0 0-.894.447.447 0 0 0 0 .893Z\" fill=\"#505153\"/><path d=\"M109.83 56.277a.53.53 0 1 1-1.061-.002.53.53 0 0 1 1.061.002Z\" fill=\"url(#F)\"/><path d=\"M109.747 56.275a.447.447 0 1 1-.894-.001.447.447 0 0 1 .894 0Z\" fill=\"#00A2DD\"/><path d=\"M112.376 135.493c4.442-4.442 8.552-2.498 10.872 4.75v18.219c0 11.074.038 20.489.038 27.775-.215 2.622-2.642 3.093-2.778 3.755-.516 2.507-1.311 3.961-3.973 3.961-4.251 0-18.073-.005-18.073-.005 0-2.057 4.792-4.739 4.792-10.615 0-5.814.377-39.095 9.122-47.84Zm-1.599-49.745c4.152-6.747 9.754-12.12 12.497-2.304.046 12.214.031 30.627.031 34.271 0 4.069-2.804 5.562-4.891 5.562h-20.71c1.405-1.027 4.378-3.568 5.027-5.514.811-2.433 2.856-23.582 8.046-32.015Z\" fill=\"#67E3FC\" style=\"mix-blend-mode:overlay\"/><path d=\"M84.744 63.219V49.014c1.158 1.95 0 13.821 3.006 15.666 2.095 1.286 19.135 1.304 24.579 1.45-2.832 0-21.02-.401-23.928 3.113-2.5 3.02-1.779 20.961-3.657 21.951 0-2.862.025-16.167.025-20.146 0-3.369 2.786-4.916 4.703-4.916-.316 0-1.217-.035-1.722-.035-1.865 0-3.006-1.405-3.006-2.878Z\" fill=\"#1B1C22\" fill-opacity=\".1\" style=\"mix-blend-mode:darken\"/><path d=\"M123.299 63.159v-8.712c-1.195-.885-3.155-2.29-6.939 1.293-2.298 2.176-4.133 7.778-4.666 10.359h8.45c2.3 0 3.155-1.607 3.155-2.94Z\" fill=\"#67E3FC\" style=\"mix-blend-mode:overlay\"/><path d=\"M89.87 127.994c1.85-2.642 6.275-4.181 8.104-4.684h-5.292c-4.201 0-6.979 3.703-7.939 5.578v17.832c.93 1.263 2.007-14.269 5.128-18.726Z\" fill=\"#1B1C22\" fill-opacity=\".1\" style=\"mix-blend-mode:darken\"/><path d=\"M133.471 206.373c.204-.327.502-.585.855-.739 3.931-1.695 8.835-1.936 13.385-2.757 5.028-.907 9.86-2.873 15.187-3.829 1.81-.326 4.937-1.055 6.777-1.303-.587 2.293.036 5.592.87 7.71-1.343.351-2.68.333-3.851.587-1.604.347-3.213.632-4.793.973-3.928.856-7.675 1.904-11.373 2.749-5.082 1.145-9.84 2.282-14.647 2.73a2.093 2.093 0 0 1-1.029-.189 2.097 2.097 0 0 1-.812-.661c-1.089-1.397-1.692-3.495-.569-5.271Z\" fill=\"#633D2A\"/><path opacity=\".74\" d=\"M166.937 198.873c-1.419.734-3.292.939-4.81 1.448-1.381.462-2.837.643-4.21 1.068-1.426.442-2.965.784-4.429 1.114-1.888.422-3.753 1.075-5.666 1.423-.974.166-1.932.414-2.864.742 1.609.111 3.369-.483 4.995-.572 1.857-.091 3.573-.734 5.329-1.276a32.45 32.45 0 0 1 4.85-1.192c1.247-.188 3.261-.095 4.323-.833.442-.308.702-.743 1.238-1.033.458-.23.878-.53 1.244-.889Zm-22.871 6.304a21.357 21.357 0 0 0-3.6-.197c-1.124.009-2.176.516-3.221.94-.536.216-1.064.456-1.607.667a6.75 6.75 0 0 0-.84.296 6.62 6.62 0 0 0 3.607-.48c-.719.346-1.409.753-2.127 1.101-.59.284-1.509.503-1.97.949a3.35 3.35 0 0 1 .776-.326c.325-.139.669-.255.998-.381.689-.267 1.375-.535 2.087-.736 2.704-.774 5.476-.939 8.228-1.284.935-.117 1.405-.594 2.319-.757-1.547-.025-3.101.464-4.65.208Zm5.541.157c1.176-.566 2.296-.748 3.578-.999 1.469-.285 2.922-.678 4.361-1.031 1.681-.414 3.344-.689 4.994-1.224 1.164-.378 2.517-1.032 3.703-1.134-.412.568-.272 1.649-.064 2.254-1.076-.536-1.924-.759-3.125-.506-1.608.341-3.293.937-4.923 1.379a75.387 75.387 0 0 1-4.618 1.102c-1.547.313-2.826 1.03-4.324 1.518-2.584.846-5.253 1.053-7.894 1.554a48.667 48.667 0 0 1-5.577.725 16.41 16.41 0 0 1 3.704-1.329c1.392-.272 2.853-.095 4.24-.459 1.202-.319 2.473-.517 3.65-.887.682-.216 1.923-.329 2.295-.963Z\" fill=\"#976645\"/><path opacity=\".74\" d=\"M144.13 208.554c-1.573.326-3.033.722-4.649.856-1.396.117-2.818.218-4.202.341-.719.033-1.435.108-2.146.224.116.336.264.661.441.969.282-.027.568-.046.864-.044 1.811.008 3.454-.541 5.23-.753a31.601 31.601 0 0 0 4.758-.85c3.712-1.029 7.792-1.789 11.153-3.738-2.472-.112-5.254 1.42-7.586 2.144-1.252.387-2.61.578-3.863.851Z\" fill=\"#976645\"/><path opacity=\".74\" d=\"M152.726 207.601c4.418-2.089 9.716-3.737 14.601-3.488-.716.72-2.438.761-3.409.83-1.459.109-2.9.389-4.293.833-1.521.46-3.083.864-4.562 1.411-.799.296-1.854.128-2.552.585-.148.012.186-.116.215-.171Zm-11.072 2.992c-1.434.253-2.885.409-4.311.6-1.04.113-2.061.361-3.037.739.298.278.669.466 1.07.541l.109-.031c2.544-.652 5.231-.733 7.754-1.508 1.347-.415 2.67-.911 4.031-1.303 1.361-.393 3.062-.589 4.347-1.275-.365-.096-.756.068-1.123.121-3.038.533-5.806 1.579-8.84 2.116Zm20.243-3.576c1.58-.342 3.181-.623 4.792-.973.406-.09.87-.156 1.369-.225a1.112 1.112 0 0 0-.275-.246c-.533-.334-1.168-.064-1.79.079-1.645.379-3.393.158-5.013.584-1.737.452-3.399 1.046-5.113 1.576-1.118.353-2.477.443-3.528.916-.445.221-.85.516-1.198.873 3.491-.796 7.043-1.777 10.756-2.584Z\" fill=\"#895B3E\"/><path d=\"M172.894 201.196a5.018 5.018 0 0 1-.466 2.761c-.329.634-1.167 1.365-1.883 1.497-.865.16-1.672-.456-2.258-1.009-.693-.649-.987-1.591-1.091-2.507a3.496 3.496 0 0 1 .263-2.01c.593-1.172 1.388-2.532 2.936-2.114.341.096.634.091.929.317.26.214.495.456.699.724.353.452.597.979.713 1.54.075.262.128.53.158.801Z\" fill=\"#895B3E\"/><path d=\"M170.284 198.357c-1.216.098-2.073 1.825-2.229 2.845-.156 1.02.64 2.556 1.489 3.154.356.254 1.018.218 1.403.05.531-.229.855-.886 1.037-1.385.215-.614.499-1.226.431-1.896a3.457 3.457 0 0 0-.795-1.773c-.445-.538-.69-1.052-1.336-.995Z\" fill=\"#5A3722\"/><path d=\"M170.209 198.967c-.606.091-1.196.871-1.442 1.39a2.855 2.855 0 0 0-.141 1.725c.2.789.977 2.482 2.036 1.972.897-.432 1.355-1.975 1.239-2.909a4.077 4.077 0 0 0-.608-1.564c-.319-.454-.537-.698-1.084-.614Z\" fill=\"#895B3E\"/><path d=\"M170.329 199.517c-.707-.022-1.174.885-1.284 1.454a3.058 3.058 0 0 0 .317 1.731c.22.458.648 1.12 1.229.749.58-.371.689-1.297.804-1.946.051-.238.051-.484.001-.721a1.733 1.733 0 0 0-.295-.658c-.199-.327-.325-.588-.772-.609Z\" fill=\"#5A3722\"/><path d=\"M170.203 200.168c-.675.272-.783 1.263-.636 1.862.106.422.325 1.288.884.756.354-.324.676-1.182.579-1.655-.067-.334-.32-1.166-.827-.963Z\" fill=\"#895B3E\"/><path d=\"M170.319 200.833c-.461.19-.614 1.583-.006 1.343.431-.166.499-1.545.006-1.343Zm-2.947-1.711c.318-.003 1.018.059 1.337.041a6.37 6.37 0 0 0-.885-.445c-.185-.005-.324.283-.458.386.045-.018-.026.042.006.018Zm-.514 3.053c.218-.105.788-.38 1.025-.361-.11.103-.428.339-.548.444-.121.105-.241.157-.332.255a1.402 1.402 0 0 1-.145-.338Zm1.065 2.361c.212-.311.491-.569.817-.757-.184.316-.391.752-.568 1.047a.736.736 0 0 1-.249-.29Zm3.328-.093c.059.122.248.385.313.502.086-.068.17-.138.25-.212a7.174 7.174 0 0 0-.563-.29Zm1.532-1.454c-.167.003-.487-.061-.595-.009.149.138.317.257.497.351.041-.117.07-.228.098-.342Zm-1.72-4.48c.05-.086.168-.308.22-.401a1.296 1.296 0 0 0-.178-.101 1.768 1.768 0 0 0-.042.502Z\" fill=\"#5A3722\"/><path d=\"M168.283 204.447a3.337 3.337 0 0 1-.884-1.485 5.119 5.119 0 0 1-.874.495c-.879.242-1.744.506-2.615.769-1.854.559-3.799.193-5.702.484a36.058 36.058 0 0 0-5.628 1.464c-1.88.61-3.815 1.06-5.672 1.712-1.664.583-3.3 1.276-5.011 1.722-2.998.78-6.173.521-9.005-.736a4.903 4.903 0 0 0 .345 1.372c.072.151.131.309.218.453l.016.034c.165.318.359.62.579.902.175.226.391.417.635.565l.019.009c.034.022.071.042.106.061l.034.013c.031.017.063.032.095.046l.04.016c.031.014.063.026.095.037l.039.014.103.03.035.01c.209.053.425.07.64.049 4.804-.448 9.573-1.581 14.652-2.733 2.722-.62 5.478-1.354 8.313-2.04l.159-.038 1.143-.255.302-.078c.477-.108.956-.217 1.439-.323l1.189-.248c1.192-.24 2.396-.463 3.604-.726.085-.02.172-.035.268-.055 1.11-.204 2.346-.217 3.578-.542-.868.173-1.665-.447-2.255-.998Z\" fill=\"#563B13\" style=\"mix-blend-mode:multiply\" opacity=\".44\"/><path d=\"m170.545 205.454.12-.028-.12.028Z\" fill=\"#5B2F07\" style=\"mix-blend-mode:multiply\" opacity=\".32\"/><path d=\"M151.645 213.216a1.427 1.427 0 0 1-.684-.448c-2.001-2.381-3.236-5.699-4.784-8.667-1.71-3.281-4.089-6.228-5.898-9.704-.614-1.181-1.789-3.19-2.359-4.406 1.672-.024 3.755-1.066 4.997-2.032.53.855.811 1.776 1.238 2.531.584 1.036 1.127 2.086 1.703 3.107 1.435 2.535 2.96 4.91 4.337 7.288 1.882 3.273 3.688 6.325 5.041 9.538.094.238.127.493.098.742-.03.248-.122.482-.267.679-.702 1.008-1.982 1.812-3.422 1.372Z\" fill=\"#633D2A\"/><path opacity=\".74\" d=\"M139.278 191.659c.804.836 1.352 2.083 2.027 3.029.612.861 1.053 1.827 1.639 2.689.609.896 1.176 1.887 1.719 2.831.696 1.216 1.543 2.373 2.196 3.621.325.637.702 1.248 1.126 1.826-.278-1.124-1.062-2.221-1.477-3.319-.468-1.257-1.276-2.315-2.025-3.418a24.668 24.668 0 0 1-1.863-3.104c-.399-.821-.777-2.22-1.506-2.811-.303-.246-.653-.343-.966-.657a3.751 3.751 0 0 0-.87-.687Zm9.245 14.512c.148.849.367 1.687.655 2.506.252.769.823 1.396 1.336 2.034.264.327.54.645.801.978.116.181.244.356.383.521a4.966 4.966 0 0 0-1.112-2.385c.39.429.814.827 1.206 1.254.32.352.668.942 1.069 1.175a2.552 2.552 0 0 1-.389-.472c-.165-.197-.317-.411-.474-.613-.33-.423-.661-.844-.952-1.295-1.112-1.71-1.83-3.581-2.664-5.404-.283-.62-.707-.854-1.016-1.45.321 1.066.99 2.041 1.157 3.151Zm-1.106-3.83c-.639-.702-1.006-1.436-1.455-2.268-.514-.955-1.095-1.878-1.648-2.799-.646-1.076-1.195-2.166-1.916-3.198-.508-.728-1.245-1.534-1.572-2.329.472.177 1.168-.12 1.53-.376-.125.838-.09 1.462.343 2.238.581 1.039 1.35 2.084 2.004 3.12.611.968 1.203 1.96 1.752 2.962.55 1.003 1.311 1.747 1.967 2.683 1.134 1.615 1.858 3.407 2.773 5.125a36.638 36.638 0 0 1 1.707 3.69 12.535 12.535 0 0 1-1.704-2.292c-.487-.905-.688-1.94-1.236-2.823-.478-.765-.889-1.6-1.395-2.339-.295-.427-.643-1.257-1.15-1.394Z\" fill=\"#976645\"/><path opacity=\".74\" d=\"M150.78 205.499c.564 1.018 1.15 1.946 1.593 3.029.385.936.763 1.892 1.149 2.819.179.487.386.964.62 1.43.201-.142.387-.304.555-.483a6.404 6.404 0 0 1-.218-.584c-.391-1.244-1.12-2.269-1.651-3.447a23.982 23.982 0 0 0-1.612-3.105c-1.505-2.355-2.909-5.012-4.955-6.954.466 1.716 2.105 3.339 3.102 4.804.534.786.959 1.682 1.417 2.491Z\" fill=\"#976645\"/><path opacity=\".74\" d=\"M148.258 199.78c-2.372-2.642-4.639-5.969-5.541-9.366.641.357 1.046 1.531 1.304 2.184.393.98.896 1.917 1.5 2.79.643.957 1.256 1.953 1.947 2.866.374.493.492 1.248.953 1.641.04.099-.119-.106-.163-.115Zm4.436 7.036c.484.937.906 1.903 1.346 2.846a9.113 9.113 0 0 0 1.162 1.945c.122-.256.167-.546.13-.835l-.045-.069c-.995-1.623-1.637-3.451-2.71-5.037-.575-.847-1.197-1.662-1.759-2.523-.562-.86-1.066-1.99-1.809-2.743.015.268.211.505.327.747 1.024 1.985 2.333 3.688 3.358 5.669Zm-6.834-13.218c-.576-1.02-1.115-2.066-1.704-3.106a13.295 13.295 0 0 1-.45-.896.738.738 0 0 0-.105.234c-.108.428.212.813.444 1.213.615 1.058.849 2.298 1.489 3.33.685 1.107 1.448 2.136 2.18 3.213.481.701.839 1.617 1.388 2.249.246.265.533.487.848.659-1.298-2.246-2.735-4.5-4.09-6.896Z\" fill=\"#895B3E\"/><mask id=\"G\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"137\" y=\"187\" width=\"19\" height=\"27\"><path d=\"M151.645 213.216a1.427 1.427 0 0 1-.684-.448c-2.001-2.381-3.236-5.699-4.784-8.667-1.71-3.281-4.089-6.228-5.898-9.704-.614-1.181-1.789-3.19-2.359-4.406 1.672-.024 3.755-1.066 4.997-2.032.53.855.811 1.776 1.238 2.531.584 1.036 1.127 2.086 1.703 3.107 1.435 2.535 2.96 4.91 4.337 7.288 1.882 3.273 3.688 6.325 5.041 9.538.094.238.127.493.098.742-.03.248-.122.482-.267.679-.702 1.008-1.982 1.812-3.422 1.372Z\" fill=\"#412719\"/></mask><g mask=\"url(#G)\"><path d=\"M151.644 213.216a1.434 1.434 0 0 1-.684-.449c-2.001-2.381-3.236-5.699-4.783-8.667-1.71-3.28-4.09-6.228-5.898-9.704-.615-1.18-1.79-3.19-2.36-4.406 1.672-.024 1.055.518 2.415-.132.53.856 1.718 3.445 2.145 4.201.584 1.035 1.351 2.362 1.926 3.382 1.435 2.536 2.202 3.616 3.579 5.995 1.883 3.272 3.136 4.837 4.489 8.05.094.238.059.541 1.098 1.76 0 0 .364.62.218.818-.702 1.007-.705-.408-2.145-.848Z\" fill=\"#492C1C\" fill-opacity=\".5\"/></g><path d=\"M139.538 187.14a3.473 3.473 0 0 1 1.959-.195c.498.108 1.174.546 1.419 1.013.297.563.059 1.232-.185 1.736-.285.597-.855.974-1.448 1.216a2.41 2.41 0 0 1-1.41.194c-.918-.189-2.007-.481-2.064-1.62-.01-.252-.078-.452.01-.697.087-.218.199-.424.334-.614.227-.326.528-.592.88-.776.16-.1.329-.186.505-.257Z\" fill=\"#895B3E\"/><path d=\"M138.2 189.458c.332.816 1.681 1.083 2.401.999.72-.083 1.58-.915 1.796-1.608.093-.291-.075-.739-.273-.972-.27-.321-.783-.421-1.158-.453-.46-.033-.934-.114-1.37.058a2.276 2.276 0 0 0-1.019.875c-.265.406-.557.669-.377 1.101Z\" fill=\"#5A3722\"/><path d=\"M138.626 189.397c.193.398.847.657 1.251.729.416.052.833-.026 1.191-.224.487-.285 1.456-1.133.881-1.764-.486-.535-1.625-.562-2.228-.308a2.689 2.689 0 0 0-.919.708c-.236.304-.352.499-.176.859Z\" fill=\"#895B3E\"/><path d=\"M138.969 189.211c.139.49.852.641 1.259.61a2.038 2.038 0 0 0 1.095-.54c.26-.236.612-.653.235-.982-.376-.329-1.023-.231-1.485-.189a1.16 1.16 0 0 0-.485.134c-.149.079-.278.19-.378.325-.177.197-.325.332-.241.642Z\" fill=\"#5A3722\"/><path d=\"M139.435 189.178c.331.412 1.021.301 1.392.089.26-.151.795-.462.315-.747-.296-.183-.943-.244-1.24-.089-.21.108-.715.437-.467.747Z\" fill=\"#895B3E\"/><path d=\"M139.857 188.973c.228.281 1.199.127.905-.246-.206-.264-1.149-.054-.905.246Zm-.507 2.341c-.072-.217-.183-.709-.265-.924a4.427 4.427 0 0 0-.106.689c.037.129.261.17.36.243-.022-.027.034.01.011-.008Zm2.166-.216c-.118-.13-.428-.47-.467-.636.093.056.321.23.419.293.097.063.158.136.243.181a.95.95 0 0 1-.195.162Zm1.355-1.171a1.89 1.89 0 0 1-.688-.42c.253.068.592.128.829.195a.488.488 0 0 1-.141.225Zm-.789-2.264c.069-.064.206-.242.27-.309a3.56 3.56 0 0 0-.197-.132 5.157 5.157 0 0 0-.073.441Zm-1.315-.782c.039.114.066.346.125.41a1.58 1.58 0 0 0 .127-.407 2.667 2.667 0 0 0-.252-.003Zm-2.638 2.016c-.069-.019-.244-.058-.318-.077a.953.953 0 0 0-.029.141 1.23 1.23 0 0 0 .347-.064Z\" fill=\"#5A3722\"/><path d=\"m142.916 187.959-.046-.079.046.079Z\" fill=\"#5B2F07\" style=\"mix-blend-mode:multiply\" opacity=\".32\"/><path d=\"M159.127 212.312a2.033 2.033 0 0 1-1.104.209c-4.262-.404-8.679-2.413-13.063-3.798-4.846-1.531-10.027-2.123-15.158-3.748-1.743-.552-4.836-1.371-6.57-1.998 1.616-1.579 2.652-4.509 2.937-6.585 1.346.321 2.511.936 3.66 1.258 1.573.442 3.12.936 4.67 1.372 3.856 1.078 7.646 1.919 11.294 2.902 5.007 1.364 9.726 2.588 14.157 4.388.322.139.601.35.812.614.211.264.347.572.395.895.285 1.613-.193 3.569-2.03 4.491Z\" fill=\"#633D2A\"/><path opacity=\".74\" d=\"M126.176 203.301c1.596.048 3.338.725 4.913.997 1.433.25 2.797.759 4.205 1.034 1.462.286 2.976.703 4.42 1.095 1.857.51 3.806.823 5.652 1.403a18.93 18.93 0 0 0 2.868.691c-1.359-.812-3.187-1.126-4.656-1.785-1.673-.761-3.486-1.016-5.286-1.37a34.898 34.898 0 0 1-4.826-1.22c-1.184-.41-2.906-1.39-4.191-1.274-.536.048-.973.281-1.582.274a5.33 5.33 0 0 0-1.517.155Zm23.084 5.21c.966.67 1.99 1.264 3.063 1.776.99.497 2.156.563 3.275.692.575.067 1.153.112 1.73.186.29.065.583.111.879.14a6.998 6.998 0 0 0-3.394-1.235c.797.045 1.597.028 2.394.071.654.037 1.565.274 2.183.123a3.74 3.74 0 0 1-.837-.086c-.352-.035-.708-.097-1.057-.143-.733-.096-1.463-.188-2.184-.347-2.743-.593-5.255-1.706-7.833-2.665-.877-.327-1.518-.154-2.398-.434 1.346.715 2.943 1.021 4.179 1.922Zm-4.785-2.615c-1.304-.073-2.374-.43-3.618-.805-1.425-.431-2.888-.768-4.319-1.131-1.674-.423-3.264-.949-4.968-1.26-1.202-.22-2.703-.302-3.792-.754.634-.27 1.03-1.202 1.137-1.782.687.914 1.324 1.475 2.499 1.811 1.573.449 3.337.727 4.979 1.104 1.533.354 3.072.747 4.58 1.19 1.507.443 2.972.442 4.52.723 2.672.482 5.113 1.515 7.67 2.299a51.804 51.804 0 0 1 5.239 1.923 17.754 17.754 0 0 1-3.886-.597c-1.352-.407-2.548-1.205-3.939-1.536-1.207-.284-2.418-.695-3.628-.928-.701-.132-1.844-.599-2.474-.257Z\" fill=\"#976645\"/><path opacity=\".74\" d=\"M150.824 205.771c1.537.445 3.007.783 4.488 1.401 1.281.533 2.577 1.091 3.85 1.614.646.296 1.31.558 1.989.784a4.77 4.77 0 0 0 .079-.976 8.973 8.973 0 0 1-.78-.353c-1.584-.82-3.289-1.117-4.948-1.745a33.696 33.696 0 0 0-4.581-1.455c-3.749-.841-7.693-2.064-11.575-2.008 2.114 1.2 5.289 1.22 7.682 1.686 1.284.251 2.566.708 3.796 1.052Z\" fill=\"#976645\"/><path opacity=\".74\" d=\"M142.828 202.674c-4.878-.307-10.315-1.364-14.481-3.759.974-.256 2.504.485 3.389.866 1.332.567 2.73.99 4.165 1.259 1.555.314 3.119.691 4.678.916.843.121 1.688.731 2.52.677.135.057-.219.01-.271.041Zm11.147 2.571c1.379.441 2.727.968 4.069 1.455a12.88 12.88 0 0 0 3.018.771 2.015 2.015 0 0 0-.678-.916l-.111-.023c-2.544-.619-4.939-1.762-7.524-2.273-1.381-.272-2.78-.468-4.162-.764-1.382-.296-2.968-.903-4.424-.929.274.241.696.285 1.043.407 2.921.937 5.85 1.34 8.769 2.272Zm-19.472-6.222c-1.55-.435-3.089-.929-4.67-1.371a19.374 19.374 0 0 1-1.308-.435.967.967 0 0 0 .123.321c.307.508.993.576 1.607.741 1.625.434 3.052 1.398 4.677 1.783 1.741.417 3.484.687 5.242 1.031 1.149.22 2.385.758 3.533.849.497.023.994-.032 1.469-.162-3.443-.93-7.029-1.737-10.673-2.757Z\" fill=\"#895B3E\"/><mask id=\"H\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"123\" y=\"196\" width=\"39\" height=\"17\"><path d=\"M159.127 212.312a2.033 2.033 0 0 1-1.104.209c-4.262-.404-8.679-2.413-13.063-3.798-4.846-1.531-10.027-2.123-15.158-3.748-1.743-.552-4.836-1.371-6.57-1.998 1.616-1.579 2.652-4.509 2.937-6.585 1.346.321 2.511.936 3.66 1.258 1.573.442 3.12.936 4.67 1.372 3.856 1.078 7.646 1.919 11.294 2.902 5.007 1.364 9.726 2.588 14.157 4.388.322.139.601.35.812.614.211.264.347.572.395.895.285 1.613-.193 3.569-2.03 4.491Z\" fill=\"#412719\"/></mask><g mask=\"url(#H)\"><path d=\"M159.126 212.311a2.02 2.02 0 0 1-1.104.21c-4.262-.404-8.678-2.414-13.063-3.799-4.845-1.531-10.027-2.122-15.157-3.747-1.744-.552-4.836-1.371-6.57-1.999 1.616-1.578 1.535-.488 2.24-2.372 1.346.321 5.012 1.68 6.161 2.002 1.574.442 3.607.991 5.157 1.427 3.856 1.078 5.652 1.392 9.3 2.375 5.007 1.363 7.748 1.686 12.178 3.485.322.139.58.461 2.778.654 0 0 .955.251 1.003.575.285 1.612-1.085.268-2.923 1.189Z\" fill=\"#492C1C\" fill-opacity=\".5\"/></g><path d=\"M122.065 198.757a4.65 4.65 0 0 1 1.733-2.008c.594-.361 1.679-.572 2.37-.357.836.26 1.248 1.117 1.496 1.825.297.833.103 1.722-.245 2.504a3.211 3.211 0 0 1-1.195 1.497c-1.083.675-2.433 1.41-3.589.379-.254-.23-.513-.357-.663-.672a3.798 3.798 0 0 1-.267-.896 3.155 3.155 0 0 1 .115-1.557 4.22 4.22 0 0 1 .245-.715Z\" fill=\"#895B3E\"/><path d=\"M122.992 202.21c1.114.467 2.695-.535 3.32-1.284.626-.749.665-2.341.208-3.203-.19-.364-.788-.633-1.207-.671-.575-.054-1.175.329-1.574.647-.483.397-1.026.761-1.287 1.33a2.939 2.939 0 0 0-.154 1.781c.132.633.1 1.155.694 1.4Z\" fill=\"#5A3722\"/><path d=\"M123.351 201.754c.575.2 1.467-.162 1.931-.469.459-.338.792-.8.952-1.322.203-.724.334-2.433-.84-2.499-.993-.056-2.136.978-2.482 1.78a3.459 3.459 0 0 0-.217 1.53c.062.508.136.802.656.98Z\" fill=\"#895B3E\"/><path d=\"M123.509 201.259c.61.336 1.455-.183 1.824-.591.344-.449.536-.982.553-1.533.026-.467-.032-1.191-.719-1.154-.687.037-1.227.733-1.639 1.202a1.538 1.538 0 0 0-.347.579 1.467 1.467 0 0 0-.056.661c.017.352.002.618.384.836Z\" fill=\"#5A3722\"/><path d=\"M123.932 200.792c.723.085 1.293-.663 1.451-1.211.11-.386.333-1.18-.412-1.004-.467.102-1.161.646-1.302 1.07-.102.298-.279 1.08.263 1.145Z\" fill=\"#895B3E\"/><path d=\"M124.15 200.206c.495.055 1.298-.996.65-1.077-.458-.06-1.18 1.018-.65 1.077Zm1.763 2.699c-.279-.141-.864-.505-1.152-.634.166.265.354.517.562.755.16.087.42-.082.587-.104-.048-.005.044-.022.003-.017Zm1.916-2.221c-.241-.014-.874-.049-1.072-.171.146-.033.538-.08.694-.11.156-.031.286-.019.413-.056.005.114-.007.227-.035.337Zm.198-2.375a2.655 2.655 0 0 1-1.079.24c.313-.171.703-.428 1-.586a.63.63 0 0 1 .079.346Zm-2.963-1.421c.007-.125-.032-.421-.033-.544a4.312 4.312 0 0 0-.321.058c.076.122.294.416.354.486Zm-2.042.479c.148.072.398.268.518.275a2.083 2.083 0 0 0-.268-.506 3.504 3.504 0 0 0-.25.231Zm-.641 4.373c-.085.047-.294.172-.385.224.031.056.067.109.108.16.112-.115.205-.244.277-.384Z\" fill=\"#5A3722\"/><path d=\"m126.168 196.393-.118-.032.118.032Z\" fill=\"#5B2F07\" style=\"mix-blend-mode:multiply\" opacity=\".32\"/><g filter=\"url(#I)\"><path d=\"M163.163 201.173c-2.313 1.933-10.912 4.855-21.596 2.225-15.904-3.915-21.319-17.729-22.124-23.816 1.623.903 5.861 2.84 9.826 3.37-3.314-4.554-5.635-15.141-4.358-24.687 2.809 2.468 9.377 2.998 12.31 2.955-2.96-3.012-8.567-11.386-7.309-20.785 9.297 8.718 18.465 5.834 23.848 10.291 5.383 4.457 2.248 8.335 5.709 14.591.042-4.778 3.595-11.976 5.367-14.978 0 0 .449 9.216 2.112 13.549 1.662 4.333 5.603 5.608 5.979 12.572.301 5.571-4.628 13.644-7.13 16.984 1.309-.012 5.052-.894 9.548-4.329-1.03 4.908-9.868 10.125-12.182 12.058Z\" fill=\"#0260EE\"/></g><g filter=\"url(#J)\"><path d=\"M163.163 201.173c-2.313 1.933-10.912 4.855-21.596 2.225-15.904-3.915-21.319-17.729-22.124-23.816 1.623.903 5.861 2.84 9.826 3.37-3.314-4.554-5.635-15.141-4.358-24.687 2.809 2.468 9.377 2.998 12.31 2.955-2.96-3.012-8.567-11.386-7.309-20.785 9.297 8.718 18.465 5.834 23.848 10.291 5.383 4.457 2.248 8.335 5.709 14.591.042-4.778 3.595-11.976 5.367-14.978 0 0 .449 9.216 2.112 13.549 1.662 4.333 5.603 5.608 5.979 12.572.301 5.571-4.628 13.644-7.13 16.984 1.309-.012 5.052-.894 9.548-4.329-1.03 4.908-9.868 10.125-12.182 12.058Z\" fill=\"#007BED\"/></g><g filter=\"url(#K)\"><path d=\"M153.915 200.062c-1.083 1.086-5.053 2.79-9.91 1.481-7.23-1.948-9.539-9.441-9.834-12.761.732.474 2.648 1.482 4.456 1.724-1.461-2.452-2.394-8.216-1.694-13.455 1.256 1.316 4.255 1.526 5.598 1.467-1.318-1.612-3.782-6.125-3.092-11.283 4.149 4.656 8.379 2.966 10.788 5.339 2.409 2.373.927 4.534 2.435 7.914.077-2.615 1.791-6.597 2.638-8.261 0 0 .093 5.037.801 7.388.708 2.351 2.496 3 2.583 6.806.07 3.044-2.284 7.522-3.47 9.38.6-.023 2.323-.551 4.422-2.485-.531 2.698-4.639 5.66-5.721 6.746Z\" fill=\"#7BF7FF\"/></g><path d=\"M104.394 205.964c-.02-.248.017-.48.097-.695.707-1.911 3.509-2.155 5.326-1.234a3.807 3.807 0 0 1 1.829 1.929c.293.658-2.158 1.522-3.23 2.025-1.073.503-3.882-.284-4.022-2.025Z\" fill=\"gray\"/><path d=\"M108.413 207.992c-1.073.497-3.884-.28-4.024-2 1.028.616 3.919 1.478 7.257 0 .293.65-2.16 1.503-3.233 2Z\" fill=\"#5A5A5A\"/><path d=\"M89.64 199.118a1.61 1.61 0 0 0-.098-.696c-.707-1.91-3.508-2.155-5.326-1.234a3.8 3.8 0 0 0-1.828 1.93c-.294.657 2.157 1.521 3.23 2.024 1.072.503 3.88-.283 4.021-2.024Z\" fill=\"gray\"/><path d=\"M85.62 201.145c1.073.497 3.884-.28 4.024-2-1.028.615-3.918 1.478-7.256 0-.294.649 2.159 1.503 3.232 2Z\" fill=\"#5A5A5A\"/><path d=\"M78.713 201.828c-.72.338-2.608-.19-2.703-1.358-.135-1.678 2.695-2.048 4.048-1.047.51.378.725.821.826 1.047.198.441-1.45 1.021-2.17 1.358Z\" fill=\"gray\"/><path d=\"M78.711 201.825c-.721.345-2.61-.194-2.705-1.389.691.428 2.634 1.027 4.878 0 .197.451-1.451 1.044-2.173 1.389Z\" fill=\"#5A5A5A\"/><path d=\"M139.031 218.433c.721.337 2.609-.191 2.703-1.359.136-1.677-2.695-2.047-4.048-1.046-.51.377-.725.82-.826 1.046-.197.442 1.45 1.021 2.171 1.359Z\" fill=\"gray\"/><path d=\"M139.033 218.431c.721.345 2.61-.195 2.705-1.389-.691.427-2.634 1.026-4.878 0-.197.451 1.451 1.044 2.173 1.389Z\" fill=\"#5A5A5A\"/><path d=\"M172.911 210.369c.961.449 3.477-.254 3.603-1.811.181-2.236-3.593-2.729-5.396-1.395a3.373 3.373 0 0 0-1.101 1.395c-.263.588 1.933 1.361 2.894 1.811Z\" fill=\"gray\"/><path d=\"M172.913 210.367c.961.46 3.48-.259 3.606-1.852-.922.57-3.512 1.368-6.502 0-.264.602 1.934 1.392 2.896 1.852Z\" fill=\"#5A5A5A\"/><defs><linearGradient id=\"a\" x1=\"84.748\" y1=\"94.683\" x2=\"123.301\" y2=\"94.683\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#E6E6E6\"/><stop offset=\".1\" stop-color=\"#fff\"/><stop offset=\".162\" stop-color=\"#F6F6F6\"/><stop offset=\".289\" stop-color=\"#EAEAEA\"/><stop offset=\".411\" stop-color=\"#E6E6E6\"/><stop offset=\".55\" stop-color=\"#EEE\"/><stop offset=\".712\" stop-color=\"#fff\"/><stop offset=\".81\" stop-color=\"#F6F6F6\"/><stop offset=\".971\" stop-color=\"#DEDEDE\"/><stop offset=\"1\" stop-color=\"#D9D9D9\"/></linearGradient><linearGradient id=\"b\" x1=\"99.148\" y1=\"102.55\" x2=\"108.899\" y2=\"102.55\" gradientUnits=\"userSpaceOnUse\"><stop/><stop offset=\".02\" stop-color=\"#050505\"/><stop offset=\".131\" stop-color=\"#1D1D1D\"/><stop offset=\".2\" stop-color=\"#262626\"/><stop offset=\".23\" stop-color=\"#212121\"/><stop offset=\".397\" stop-color=\"#090909\"/><stop offset=\".5\"/><stop offset=\".75\" stop-color=\"#262626\"/><stop offset=\".836\" stop-color=\"#1D1D1D\"/><stop offset=\".975\" stop-color=\"#050505\"/><stop offset=\"1\"/></linearGradient><linearGradient id=\"c\" x1=\"84.747\" y1=\"120.641\" x2=\"123.301\" y2=\"120.641\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#E6E6E6\"/><stop offset=\".1\" stop-color=\"#F2F2F2\"/><stop offset=\".162\" stop-color=\"#E9E9E9\"/><stop offset=\".289\" stop-color=\"#DDD\"/><stop offset=\".411\" stop-color=\"#D9D9D9\"/><stop offset=\".532\" stop-color=\"#E2E2E2\"/><stop offset=\".712\" stop-color=\"#F7F7F7\"/><stop offset=\".828\" stop-color=\"#EEE\"/><stop offset=\"1\" stop-color=\"#D9D9D9\"/></linearGradient><linearGradient id=\"d\" x1=\"84.747\" y1=\"68.727\" x2=\"123.301\" y2=\"68.727\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#E6E6E6\"/><stop offset=\".1\" stop-color=\"#F2F2F2\"/><stop offset=\".162\" stop-color=\"#E9E9E9\"/><stop offset=\".289\" stop-color=\"#DDD\"/><stop offset=\".411\" stop-color=\"#D9D9D9\"/><stop offset=\".532\" stop-color=\"#E2E2E2\"/><stop offset=\".712\" stop-color=\"#F7F7F7\"/><stop offset=\".828\" stop-color=\"#EEE\"/><stop offset=\"1\" stop-color=\"#D9D9D9\"/></linearGradient><linearGradient id=\"e\" x1=\"101.892\" y1=\"106.939\" x2=\"106.154\" y2=\"106.939\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#E6E6E6\"/><stop offset=\".1\" stop-color=\"#fff\"/><stop offset=\".162\" stop-color=\"#F6F6F6\"/><stop offset=\".289\" stop-color=\"#EAEAEA\"/><stop offset=\".411\" stop-color=\"#E6E6E6\"/><stop offset=\".55\" stop-color=\"#EEE\"/><stop offset=\".712\" stop-color=\"#fff\"/><stop offset=\".81\" stop-color=\"#F6F6F6\"/><stop offset=\".971\" stop-color=\"#DEDEDE\"/><stop offset=\"1\" stop-color=\"#D9D9D9\"/></linearGradient><linearGradient id=\"f\" x1=\"102.119\" y1=\"102.243\" x2=\"105.929\" y2=\"102.243\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#E6E6E6\"/><stop offset=\".1\" stop-color=\"#fff\"/><stop offset=\".162\" stop-color=\"#F6F6F6\"/><stop offset=\".289\" stop-color=\"#EAEAEA\"/><stop offset=\".411\" stop-color=\"#E6E6E6\"/><stop offset=\".55\" stop-color=\"#EEE\"/><stop offset=\".712\" stop-color=\"#fff\"/><stop offset=\".81\" stop-color=\"#F6F6F6\"/><stop offset=\".971\" stop-color=\"#DEDEDE\"/><stop offset=\"1\" stop-color=\"#D9D9D9\"/></linearGradient><linearGradient id=\"g\" x1=\"84.745\" y1=\"126.048\" x2=\"123.301\" y2=\"126.048\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#C2C2C2\"/><stop offset=\".1\" stop-color=\"#D7D7D7\"/><stop offset=\".162\" stop-color=\"#C8C8C8\"/><stop offset=\".289\" stop-color=\"#CDCDCD\"/><stop offset=\".411\" stop-color=\"#C7C7C7\"/><stop offset=\".55\" stop-color=\"#CFCFCF\"/><stop offset=\".712\" stop-color=\"#DDD\"/><stop offset=\".81\" stop-color=\"#D6D6D6\"/><stop offset=\".971\" stop-color=\"#C1C1C1\"/><stop offset=\"1\" stop-color=\"#BABABA\"/></linearGradient><linearGradient id=\"h\" x1=\"84.747\" y1=\"157.525\" x2=\"123.301\" y2=\"157.525\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#E6E6E6\"/><stop offset=\".1\" stop-color=\"#F2F2F2\"/><stop offset=\".162\" stop-color=\"#E9E9E9\"/><stop offset=\".289\" stop-color=\"#DDD\"/><stop offset=\".411\" stop-color=\"#D9D9D9\"/><stop offset=\".532\" stop-color=\"#E2E2E2\"/><stop offset=\".712\" stop-color=\"#F7F7F7\"/><stop offset=\".828\" stop-color=\"#EEE\"/><stop offset=\"1\" stop-color=\"#D9D9D9\"/></linearGradient><linearGradient id=\"i\" x1=\"84.74\" y1=\"190.04\" x2=\"123.308\" y2=\"190.04\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#C2C2C2\"/><stop offset=\".1\" stop-color=\"#D7D7D7\"/><stop offset=\".162\" stop-color=\"#C8C8C8\"/><stop offset=\".289\" stop-color=\"#CDCDCD\"/><stop offset=\".411\" stop-color=\"#C7C7C7\"/><stop offset=\".55\" stop-color=\"#CFCFCF\"/><stop offset=\".712\" stop-color=\"#DDD\"/><stop offset=\".81\" stop-color=\"#D6D6D6\"/><stop offset=\".971\" stop-color=\"#C1C1C1\"/><stop offset=\"1\" stop-color=\"#BABABA\"/></linearGradient><linearGradient id=\"j\" x1=\"99.563\" y1=\"191.367\" x2=\"108.485\" y2=\"191.367\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#9A9A9A\"/><stop offset=\".1\" stop-color=\"#878787\"/><stop offset=\".162\" stop-color=\"#878787\"/><stop offset=\".289\" stop-color=\"#9A9A9A\"/><stop offset=\".411\" stop-color=\"#959595\"/><stop offset=\".55\" stop-color=\"#B7B7B7\"/><stop offset=\".712\" stop-color=\"#BEBEBE\"/><stop offset=\".81\" stop-color=\"#9D9D9D\"/><stop offset=\".971\" stop-color=\"#959595\"/><stop offset=\"1\" stop-color=\"#828282\"/></linearGradient><linearGradient id=\"k\" x1=\"99.563\" y1=\"191.367\" x2=\"108.485\" y2=\"191.367\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#9A9A9A\"/><stop offset=\".1\" stop-color=\"#878787\"/><stop offset=\".162\" stop-color=\"#878787\"/><stop offset=\".289\" stop-color=\"#9A9A9A\"/><stop offset=\".411\" stop-color=\"#959595\"/><stop offset=\".55\" stop-color=\"#B7B7B7\"/><stop offset=\".712\" stop-color=\"#BEBEBE\"/><stop offset=\".81\" stop-color=\"#9D9D9D\"/><stop offset=\".971\" stop-color=\"#959595\"/><stop offset=\"1\" stop-color=\"#828282\"/></linearGradient><linearGradient id=\"l\" x1=\"101.208\" y1=\"136.178\" x2=\"106.84\" y2=\"136.178\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#E6E6E6\"/><stop offset=\".24\" stop-color=\"#fff\"/><stop offset=\".49\" stop-color=\"#EAEAEA\"/><stop offset=\".771\" stop-color=\"#EEE\"/><stop offset=\".971\" stop-color=\"#DEDEDE\"/><stop offset=\"1\" stop-color=\"#D9D9D9\"/></linearGradient><linearGradient id=\"m\" x1=\"101.208\" y1=\"136.178\" x2=\"106.84\" y2=\"136.178\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#E6E6E6\"/><stop offset=\".24\" stop-color=\"#fff\"/><stop offset=\".49\" stop-color=\"#EAEAEA\"/><stop offset=\".771\" stop-color=\"#EEE\"/><stop offset=\".971\" stop-color=\"#DEDEDE\"/><stop offset=\"1\" stop-color=\"#D9D9D9\"/></linearGradient><linearGradient id=\"n\" x1=\"96.199\" y1=\"170.315\" x2=\"111.85\" y2=\"170.315\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#E6E6E6\"/><stop offset=\".1\" stop-color=\"#fff\"/><stop offset=\".162\" stop-color=\"#F6F6F6\"/><stop offset=\".289\" stop-color=\"#EAEAEA\"/><stop offset=\".411\" stop-color=\"#E6E6E6\"/><stop offset=\".55\" stop-color=\"#EEE\"/><stop offset=\".712\" stop-color=\"#fff\"/><stop offset=\".81\" stop-color=\"#F6F6F6\"/><stop offset=\".971\" stop-color=\"#DEDEDE\"/><stop offset=\"1\" stop-color=\"#D9D9D9\"/></linearGradient><linearGradient id=\"o\" x1=\"84.744\" y1=\"38.259\" x2=\"123.295\" y2=\"38.259\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#E6E6E6\"/><stop offset=\".1\" stop-color=\"#F2F2F2\"/><stop offset=\".162\" stop-color=\"#E9E9E9\"/><stop offset=\".289\" stop-color=\"#DDD\"/><stop offset=\".411\" stop-color=\"#D9D9D9\"/><stop offset=\".532\" stop-color=\"#E2E2E2\"/><stop offset=\".712\" stop-color=\"#F7F7F7\"/><stop offset=\".828\" stop-color=\"#EEE\"/><stop offset=\"1\" stop-color=\"#D9D9D9\"/></linearGradient><linearGradient id=\"p\" x1=\"84.746\" y1=\"63.052\" x2=\"123.298\" y2=\"63.052\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#E6E6E6\"/><stop offset=\".1\" stop-color=\"#F2F2F2\"/><stop offset=\".162\" stop-color=\"#E9E9E9\"/><stop offset=\".289\" stop-color=\"#DDD\"/><stop offset=\".411\" stop-color=\"#D9D9D9\"/><stop offset=\".532\" stop-color=\"#E2E2E2\"/><stop offset=\".712\" stop-color=\"#F7F7F7\"/><stop offset=\".828\" stop-color=\"#EEE\"/><stop offset=\"1\" stop-color=\"#D9D9D9\"/></linearGradient><linearGradient id=\"q\" x1=\"84.746\" y1=\"50.657\" x2=\"123.298\" y2=\"50.657\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#E6E6E6\"/><stop offset=\".1\" stop-color=\"#fff\"/><stop offset=\".162\" stop-color=\"#F6F6F6\"/><stop offset=\".289\" stop-color=\"#EAEAEA\"/><stop offset=\".411\" stop-color=\"#E6E6E6\"/><stop offset=\".55\" stop-color=\"#EEE\"/><stop offset=\".712\" stop-color=\"#fff\"/><stop offset=\".81\" stop-color=\"#F6F6F6\"/><stop offset=\".971\" stop-color=\"#DEDEDE\"/><stop offset=\"1\" stop-color=\"#D9D9D9\"/></linearGradient><linearGradient id=\"r\" x1=\"84.746\" y1=\"50.657\" x2=\"92.415\" y2=\"50.657\" gradientUnits=\"userSpaceOnUse\"><stop/><stop offset=\"1\" stop-opacity=\"0\"/></linearGradient><linearGradient id=\"s\" x1=\"123.298\" y1=\"50.657\" x2=\"115.629\" y2=\"50.657\" gradientUnits=\"userSpaceOnUse\"><stop/><stop offset=\"1\" stop-opacity=\"0\"/></linearGradient><linearGradient id=\"t\" x1=\"93.249\" y1=\"50.621\" x2=\"93.249\" y2=\"58.694\" gradientUnits=\"userSpaceOnUse\"><stop/><stop offset=\"1\" stop-color=\"#999\"/></linearGradient><linearGradient id=\"u\" x1=\"93.25\" y1=\"50.06\" x2=\"93.25\" y2=\"58.134\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#E6E6E6\"/><stop offset=\"1\" stop-color=\"#999\"/></linearGradient><linearGradient id=\"v\" x1=\"93.249\" y1=\"57.575\" x2=\"93.249\" y2=\"50.621\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#E6E6E6\"/><stop offset=\"1\" stop-color=\"#999\"/></linearGradient><linearGradient id=\"w\" x1=\"93.249\" y1=\"50.923\" x2=\"93.249\" y2=\"53.723\" gradientUnits=\"userSpaceOnUse\"><stop/><stop offset=\"1\" stop-opacity=\"0\"/></linearGradient><linearGradient id=\"x\" x1=\"93.911\" y1=\"54.189\" x2=\"93.911\" y2=\"54.091\" gradientUnits=\"userSpaceOnUse\"><stop/><stop offset=\"1\" stop-opacity=\"0\"/></linearGradient><linearGradient id=\"y\" x1=\"93.911\" y1=\"54.095\" x2=\"93.911\" y2=\"54.02\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#fff\"/><stop offset=\"1\" stop-color=\"#fff\" stop-opacity=\"0\"/></linearGradient><linearGradient id=\"A\" x1=\"103.134\" y1=\"55.181\" x2=\"106.349\" y2=\"55.181\" gradientUnits=\"userSpaceOnUse\"><stop/><stop offset=\"1\" stop-color=\"#999\"/></linearGradient><linearGradient id=\"B\" x1=\"104.741\" y1=\"53.351\" x2=\"104.741\" y2=\"56.565\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#E6E6E6\"/><stop offset=\"1\" stop-color=\"#CCC\"/></linearGradient><linearGradient id=\"C\" x1=\"104.742\" y1=\"56.385\" x2=\"104.742\" y2=\"53.536\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#F2F2F2\"/><stop offset=\"1\" stop-color=\"#CCC\"/></linearGradient><linearGradient id=\"D\" x1=\"109.301\" y1=\"52.66\" x2=\"109.301\" y2=\"53.719\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#BFBFBF\"/><stop offset=\"1\" stop-color=\"gray\"/></linearGradient><linearGradient id=\"E\" x1=\"109.3\" y1=\"54.205\" x2=\"109.3\" y2=\"55.264\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#BFBFBF\"/><stop offset=\"1\" stop-color=\"gray\"/></linearGradient><linearGradient id=\"F\" x1=\"109.3\" y1=\"55.748\" x2=\"109.3\" y2=\"56.807\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#BFBFBF\"/><stop offset=\"1\" stop-color=\"gray\"/></linearGradient><filter id=\"I\" x=\"110.818\" y=\"131.81\" width=\"73.153\" height=\"81.261\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\"4.313\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"J\" x=\"117.718\" y=\"138.71\" width=\"59.352\" height=\"67.46\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".863\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"K\" x=\"132.446\" y=\"165.509\" width=\"28.915\" height=\"38.233\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".863\" result=\"effect1_foregroundBlur\"/></filter><pattern id=\"z\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\"><use xlink:href=\"#L\" transform=\"scale(.05882)\"/></pattern><image id=\"L\" width=\"17\" height=\"17\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAACXBIWXMAAC4jAAAuIwF4pT92AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVFJREFUeNrcU8FSgzAUXFIEgVatWK899gPqL9T/P/VoL1qtdpwipSQkJL6E0akzwelV9wJJ2H37Ng/gXyHwbUbxuRkNM9Sco1EKSojgZJGLyysznU4RRxFWqwcwFkJrhWK/d+d9YsFx9cXiHsYYZMOh29Nti5fnNZbLJUTTkCvpFWI/Fow5gTM26CrQ+jq/wXx+hzAMe9v5FpnNZuSiqy6oon3ymkNRJi21dDuZICKhMI6NV8S2IsmulA1aIls1rTUGA+beeV2jJbE0SYkQ+J1oGFRV5T6UUhJPOxGL3e4dRVEiSbOugAfhUepm87rBeDyG4JFrwTrgQrgPq6rswhU88IpY1ETIsgyy6UhfTpRqUZYf4Fy4fHqdWGy3b0EcRy60JE0cef30SAMn3NwIErdtnzSxeZ4bO1w2QEsaURbV4eDOfK38CnuV9tb+1l/8KcAAI7nCkIZFmYoAAAAASUVORK5CYII=\"/></defs></svg>");
+function subMonths(dirtyDate, dirtyAmount) {
+  Object(_lib_requiredArgs_index_js__WEBPACK_IMPORTED_MODULE_2__["default"])(2, arguments);
+  var amount = Object(_lib_toInteger_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(dirtyAmount);
+  return Object(_addMonths_index_js__WEBPACK_IMPORTED_MODULE_1__["default"])(dirtyDate, -amount);
+}
 
 /***/ }),
-/* 968 */
-/***/ (function(module, exports) {
+/* 834 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"221\" viewBox=\"0 0 220 221\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M69.132 153.2a4.728 4.728 0 0 0 0 9.457h75.653a4.728 4.728 0 0 0 0-9.457H69.132Zm-.511 37.32a4.728 4.728 0 1 0 0 9.456h77.228a4.728 4.728 0 1 0 0-9.456H68.621Z\" fill=\"#8E8E8E\"/>\n|   <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"m151.897 147.604-11.522.001v58.246h11.521a1.92 1.92 0 0 0 1.92-1.92V166.27h2.372c1.06 0 1.92-.86 1.92-1.92v-10.345a1.92 1.92 0 0 0-1.92-1.92h-2.371v-2.56a1.92 1.92 0 0 0-1.92-1.921Zm-8.496 15.361a.788.788 0 1 0 0 1.576h7.88a.788.788 0 1 0 0-1.576h-7.88Zm-.788 4.284c0-.436.353-.788.788-.788h7.88a.788.788 0 1 1 0 1.576h-7.88a.788.788 0 0 1-.788-.788Zm.788 2.708a.788.788 0 1 0 0 1.576h7.88a.788.788 0 1 0 0-1.576h-7.88Z\" fill=\"#EDEDED\"/>");
+"use strict";
 
-/***/ }),
-/* 969 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"51\" height=\"50\" viewBox=\"0 0 51 50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <path d=\"M29.385 25.06a11.413 11.413 0 0 1-5.92 3.733c-6.132 1.582-12.385-2.105-13.967-8.237-1.34-5.187 1.094-10.462 5.588-12.921-.762.063-1.529.192-2.294.39-7.325 1.89-11.73 9.36-9.84 16.685 1.89 7.325 9.361 11.73 16.686 9.84a13.691 13.691 0 0 0 9.747-9.49Z\" fill=\"#FFE27C\"/>");
+var _interopRequireDefault = __webpack_require__(1);
 
-/***/ }),
-/* 970 */
-/***/ (function(module, exports) {
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.hasPassword = void 0;
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"120\" height=\"120\" viewBox=\"0 0 120 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M51.6 50.4H49.2V60C49.2 63.1986 50.5905 66.0725 52.7999 68.05V64.3291C52.0382 63.0649 51.6 61.5836 51.6 60V50.4Z\" fill=\"#FFDDBD\"/>\n| <path d=\"M68.4 50.4H70.7999V60C70.7999 63.1986 69.4094 66.0725 67.2 68.05V64.3291C67.9617 63.0649 68.4 61.5836 68.4 60V50.4Z\" fill=\"#FFDDBD\"/>");
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-/***/ }),
-/* 971 */
-/***/ (function(module, exports) {
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path d=\"M163.306 63.544v95l-74-33.5-13-99.5 76 18.456c10.8 3.6 11 12.5 11 19.544Z\" fill=\"#C4C4C4\"/>\n|   <path d=\"m163.306 150-59-28.884V114l59 28.884V150Z\" fill=\"#41488A\"/>");
+var _instance = __webpack_require__(743);
 
-/***/ }),
-/* 972 */
-/***/ (function(module, exports) {
+var _bitwarden = __webpack_require__(835);
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"220\" viewBox=\"0 0 220 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path d=\"M90.43 160.346h42.655s2.666 32.88 15.107 32.88c-21.328 2.666-68.426 5.332-71.981 0 11.552 0 14.219-32.88 14.219-32.88Z\" fill=\"url(#a)\"/>\n|   <rect x=\"65.547\" y=\"192.338\" width=\"90.643\" height=\"8.887\" rx=\"1\" fill=\"#E0E0E0\"/>");
+var _capability = __webpack_require__(836);
 
-/***/ }),
-/* 973 */
-/***/ (function(module, exports) {
+/**
+ * Checks whether the user has a password
+ *
+ * @param {import("../CozyClient").default} client - The CozyClient instance
+ * @returns {Promise<boolean>} - Returns true if the user has a password
+ */
+var hasPassword = /*#__PURE__*/function () {
+  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client) {
+    var hasExtensionInstalled, hasPasswordDefined;
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            _context.next = 2;
+            return (0, _bitwarden.hasExtensionInstalledAttribute)(client);
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"52\" height=\"50\" viewBox=\"0 0 52 50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path opacity=\"0.7\" d=\"M29.8424 44.2922L50.2494 45.4882C48.1563 44.8902 43.8358 43.6942 43.2976 43.6942C42.6248 43.6942 44.2693 42.2739 42.7743 42.2739C41.2793 42.2739 38.065 43.6942 37.5417 43.6942C37.0185 43.6942 38.2145 42.7972 36.7942 42.6477C35.374 42.4982 35.075 43.6942 34.2527 43.6942C33.4305 43.6942 34.0285 42.4982 33.1315 42.2739C32.2344 42.0497 31.3374 43.6194 30.8889 43.6942C30.5301 43.754 30.0417 44.1178 29.8424 44.2922Z\" fill=\"white\"/>\n| <path d=\"M29.1395 44.5047L49.5465 45.7007C47.4535 45.1027 43.1329 43.9067 42.5947 43.9067C41.9219 43.9067 43.5664 42.4864 42.0714 42.4864C40.5764 42.4864 37.3621 43.9067 36.8389 43.9067C36.3156 43.9067 37.5116 43.0097 36.0914 42.8602C34.6711 42.7107 34.3721 43.9067 33.5498 43.9067C32.7276 43.9067 33.3256 42.7107 32.4286 42.4864C31.5316 42.2622 30.6346 43.832 30.1861 43.9067C29.8272 43.9665 29.3389 44.3303 29.1395 44.5047Z\" fill=\"#4D89AA\"/>");
+          case 2:
+            hasExtensionInstalled = _context.sent;
+            _context.next = 5;
+            return (0, _instance.hasPasswordDefinedAttribute)(client);
 
-/***/ }),
-/* 974 */
-/***/ (function(module, exports) {
+          case 5:
+            hasPasswordDefined = _context.sent;
+            return _context.abrupt("return", !((0, _capability.isMagicLink)(client) || (0, _capability.isOIDC)(client)) || hasExtensionInstalled || hasPasswordDefined);
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"120\" height=\"120\" viewBox=\"0 0 120 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g clip-path=\"url(#clip0)\">\n| <path d=\"M35.5176 92.0063L46.8603 74.7403L43.9052 63.3258C42.8825 59.3751 45.2826 55.3985 49.2662 54.4438L57.5394 52.4611C58.0182 52.3464 58.498 52.2805 58.9735 52.2603L66.2112 44.3613C68.045 42.36 71.1945 42.2299 73.2458 44.0707C74.6596 45.3393 75.1828 47.2129 74.7713 48.9102C76.5047 48.3886 78.477 48.7649 79.9316 50.0701C81.7341 51.6877 82.1795 54.2272 81.187 56.2654C82.7355 56.0587 84.3716 56.5104 85.6301 57.6398C87.2461 59.0899 87.7993 61.2621 87.2344 63.1827C88.608 62.9857 90.065 63.3801 91.1828 64.3832C93.155 66.153 93.3247 69.1474 91.5617 71.0714L84.9212 78.3187C84.4918 78.7872 83.9874 79.1491 83.4416 79.4029C82.8656 81.6182 81.6872 83.8179 79.9351 85.7301C77.0772 88.8492 73.2847 90.5528 69.7444 90.5626L57.924 106.534C47.5683 100.474 44.1523 98.0546 35.5176 92.0063Z\" fill=\"#FFD1BD\"/>");
+          case 7:
+          case "end":
+            return _context.stop();
+        }
+      }
+    }, _callee);
+  }));
 
-/***/ }),
-/* 975 */
-/***/ (function(module, exports) {
+  return function hasPassword(_x) {
+    return _ref.apply(this, arguments);
+  };
+}();
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"51\" height=\"50\" viewBox=\"0 0 51 50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path d=\"m11.785 22.057.01.007c.225.063.476.121.74.182l.207.048c.35.082.72.174 1.013.29.145.057.298.131.426.231a.771.771 0 0 1 .307.505c.037.295.083.676-.176 1.06-.227.336-.65.617-1.286.942-.339.173-.7.324-1.039.46-.076.032-.152.062-.225.091-.26.104-.499.2-.716.298-.283.127-.486.24-.615.347a.474.474 0 0 0-.106.114c-.011.018-.01.027-.01.027 0 .161.014.292.059.413a.954.954 0 0 0 .294.394c.359.307 1.099.66 2.621.976.27.055.54.11.811.163 1.245.249 2.476.494 3.44.882.593.24 1.13.548 1.52.981.4.446.626 1 .626 1.675 0 .575-.264 1.07-.634 1.484-.368.411-.867.77-1.404 1.085-.959.562-2.129 1.033-3.104 1.426l-.34.138c-.33.133-.687.263-1.058.397-.88.32-1.837.666-2.69 1.168-.492.289-.922.615-1.257.996H8.063c.459-.765 1.164-1.342 1.926-1.79.931-.546 2.027-.944 2.933-1.273a28.187 28.187 0 0 0 1.277-.489c.985-.397 2.088-.842 2.983-1.367.5-.292.907-.594 1.185-.905.276-.308.4-.594.4-.87 0-.45-.143-.784-.391-1.059-.259-.287-.652-.53-1.18-.744-.876-.352-1.999-.577-3.24-.825h-.001l-.852-.172c-1.561-.323-2.492-.714-3.034-1.178a1.88 1.88 0 0 1-.558-.772 2.063 2.063 0 0 1-.117-.734c0-.38.221-.66.45-.849.227-.189.525-.343.824-.478.237-.107.501-.213.763-.317l.212-.085c.336-.136.664-.274.963-.427.64-.328.863-.518.943-.638.044-.064.06-.119.036-.345a1.093 1.093 0 0 0-.17-.081 6.816 6.816 0 0 0-.882-.249l-.194-.045c-.29-.067-.596-.137-.864-.216-.088-.026-.113-.077-.14-.128-.023-.046-.046-.093-.115-.124l-.037-.016c-.124-.055-.226-.1-.337-.208a6.721 6.721 0 0 1-.47-.501l-.002-.003c.666-.332.96-.158 1.41.108Z\" fill=\"#E4A400\"/>\n|   <path d=\"M13.55 21.795c-.137.048-.328.104-.564.173l-.474.14a11.06 11.06 0 0 0-1.361.492 3.48 3.48 0 0 0-.595.336 1.415 1.415 0 0 0-.45.497.873.873 0 0 0-.017.76c.104.236.302.43.537.596.47.331 1.063.546 1.664.705.593.156 1.232.267 1.824.369l.035.006c.613.106 1.165.203 1.613.332.468.136.711.28.808.407.092.12.104.222.052.363-.065.176-.233.404-.534.677-.598.543-1.555 1.118-2.604 1.688-.457.248-1.052.486-1.73.758l-.17.068c-.733.295-1.54.625-2.28 1.029-.954.519-1.866 1.198-2.368 2.14l1.225-.314c.391-.42.973-.686 1.583-1.019.687-.374 1.447-.687 2.184-.982l.182-.073c.66-.265 1.306-.524 1.813-.799 1.046-.568 2.094-1.19 2.783-1.814.342-.31.638-.658.779-1.04a1.25 1.25 0 0 0-.184-1.241c-.292-.382-.797-.59-1.283-.731-.506-.147-1.113-.252-1.712-.356l-.017-.003c-.605-.104-1.21-.209-1.764-.355-.563-.148-1.032-.33-1.37-.567a.758.758 0 0 1-.219-.205.631.631 0 0 1 .16-.15c.11-.08.257-.163.44-.246.364-.168.813-.317 1.243-.447l.424-.126c.258-.075.495-.145.654-.201l-.307-.867Z\" fill=\"#E4A400\"/>");
+exports.hasPassword = hasPassword;
 
 /***/ }),
-/* 976 */
-/***/ (function(module, exports) {
-
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"120\" height=\"120\" viewBox=\"0 0 120 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M29.1226 15C29.1226 13.3431 30.4657 12 32.1226 12H81.3226C82.9794 12 84.3226 13.3431 84.3226 15V50.4H29.1226V15Z\" fill=\"#AFF1FF\"/>\n| <path d=\"M29.1226 13C29.1226 12.4477 28.6748 12 28.1226 12H10.9226C10.3703 12 9.92256 12.4477 9.92256 13V50.4H29.1226V13Z\" fill=\"#AFF1FF\"/>");
+/* 835 */
+/***/ (function(module, exports, __webpack_require__) {
 
-/***/ }),
-/* 977 */
-/***/ (function(module, exports) {
+"use strict";
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"220\" viewBox=\"0 0 220 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path d=\"M96.788 205.658c-19.867 0-38.66-2.902-52.92-8.157-7.417-2.725-13.343-6.019-17.619-9.745-6.761-5.902-8.193-11.902-8.193-15.901 0-4 1.412-10 8.193-15.902 4.296-3.745 10.222-7.019 17.62-9.745 14.259-5.255 33.052-8.157 52.919-8.157 19.867 0 38.66 2.902 52.919 8.157 7.418 2.726 13.344 6.02 17.62 9.745 6.761 5.902 8.193 11.902 8.193 15.902 0 3.999-1.412 9.999-8.193 15.901-4.296 3.745-10.222 7.02-17.62 9.745-14.259 5.255-33.052 8.157-52.92 8.157Zm0-52.372c-18.057 0-34.941 2.549-47.51 7.196-10.838 4-15.79 8.706-15.79 11.392s4.932 7.392 15.79 11.392c12.569 4.627 29.433 7.196 47.51 7.196 18.077 0 34.941-2.549 47.51-7.196 10.838-4 15.79-8.706 15.79-11.392s-4.932-7.392-15.79-11.392c-12.569-4.647-29.433-7.196-47.51-7.196Z\" fill=\"#E7A423\"/>\n|   <path d=\"M33.665 174.433c6.16-9.8 32.082-17.156 63.123-17.156 31.041 0 56.962 7.356 63.123 17.156.911-1.449 1.39-2.951 1.39-4.49 0-11.955-28.883-21.647-64.513-21.647-35.63 0-64.513 9.692-64.513 21.647 0 1.539.479 3.041 1.39 4.49Zm83.861 21.095c-4.144 2.479-9.326 4.583-15.255 6.181.293.002.586.002.879.002 18.262 0 35.536-2.667 48.643-7.497 6.8-2.505 12.247-5.515 16.196-8.958 6.233-5.425 7.531-10.94 7.531-14.616v-.114c-5.802 9.965-10.036 19.121-57.994 25.002Z\" fill=\"#C2732F\"/>");
 
-/***/ }),
-/* 978 */
-/***/ (function(module, exports) {
+var _interopRequireDefault = __webpack_require__(1);
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path d=\"M36.801 184.571c4.726 8.593 12.71 19.871 16.112 24.436 11.815 0 7.43-35.624 3.76-53.436l-24.168-1.612c-.537 6.624-.43 22.019 4.296 30.612Zm143.412.438c-5.114 8.368-13.605 19.269-17.211 23.674-11.803-.54-5.794-35.926-1.314-53.552l24.215-.506c.234 6.641-.576 22.016-5.69 30.384Z\" fill=\"#FFDDC7\"/>\n|   <circle cx=\"110.611\" cy=\"102.528\" r=\"93.436\" fill=\"url(#a)\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.hasExtensionInstalledAttribute = void 0;
 
-/***/ }),
-/* 979 */
-/***/ (function(module, exports) {
+var _regenerator = _interopRequireDefault(__webpack_require__(293));
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M86.02 26.357a.213.213 0 0 0-.158.206V53.38c0 .118.096.213.213.213h5.892a.213.213 0 0 0 .213-.213V24.965a.213.213 0 0 0-.269-.206l-5.892 1.598Z\" fill=\"#956D46\"/><path d=\"M5.27 98.776a.213.213 0 0 0 .085.399l21.497 1.8a.85.85 0 0 0 .552-.146l66.68-45.55a.213.213 0 0 0-.12-.388h-8.806a.852.852 0 0 0-.41.106L5.27 98.777Z\" fill=\"#946C45\"/><path d=\"M101.67 89.703c1.957-1.232 11.593-1.442 18.581-1.37 2.67.029 5.334-.074 8.001-.208 4.904-.246 13.228-.309 18.594 1.578 7.566 2.662 7.081 10.09 6.551 16.597-.313 3.85-.69 7.713-1.329 11.523-1.319 7.873-2.692 20.09 3.492 10.835 4.097-6.13 7.612-2.962 7.612 0-.55 12.591-10.034 26.419-38.914 26.419-24.171 0-34.149-17.928-36.536-23.133-.427-.93-.83-1.916-.593-2.911.55-2.314 3.06-5.524 6.129-2.009.493.566.961 1.094 1.405 1.587 4.473 4.974 6.705 3.026 4.987-3.439-8.985-33.797-.697-33.757 2.02-35.469Z\" fill=\"url(#a)\"/><path d=\"M102.39 90.934c1.892-1.221 11.133-1.438 17.935-1.372 2.736.027 5.47-.081 8.203-.217 4.809-.237 12.783-.273 17.946 1.59 7.437 2.68 6.904 10.197 6.383 16.737-.3 3.759-.653 7.532-1.264 11.253-1.294 7.868-2.684 20.276 3.385 10.968 3.998-6.131 7.428-2.962 7.428 0-.536 12.593-9.791 26.422-37.974 26.422-23.617 0-33.349-17.977-35.662-23.156-.41-.917-.798-1.885-.576-2.865.525-2.317 2.98-5.564 5.987-2.035.506.594.983 1.146 1.435 1.66 4.326 4.923 6.51 3.045 4.858-3.297-8.857-34.016-.74-33.973 1.916-35.688Z\" fill=\"#B87557\"/><path d=\"M132.709 132c.4 0 1.5-2 2-3-.4.8 1.167 2.333 2 3-.771 0-1.605 2.481-1.962 3.854a1.081 1.081 0 0 1-.038.146l.038-.146c.275-1.511-2.522-3.854-2.038-3.854Zm-19 0c.4 0 1.5-2 2-3-.4.8 1.167 2.333 2 3-.771 0-1.605 2.481-1.962 3.854a1.081 1.081 0 0 1-.038.146l.038-.146c.275-1.511-2.522-3.854-2.038-3.854Z\" fill=\"#925E47\"/><path d=\"M103.325 132.666 89.858 170.31h8.12l10.474-37.644h-5.127Z\" fill=\"url(#b)\"/><path d=\"M97.975 170.416h-8.12a.046.046 0 0 1-.03-.013.09.09 0 0 1-.021-.037.161.161 0 0 1 0-.111l13.464-37.644a.088.088 0 0 1 .024-.036.04.04 0 0 1 .031-.013h5.127c.01-.001.021.004.031.013.01.008.018.021.024.036a.193.193 0 0 1 .007.049.193.193 0 0 1-.007.049L98.031 170.36a.095.095 0 0 1-.023.042.044.044 0 0 1-.033.014Zm-8.009-.21h7.969l10.419-37.435h-5.005l-13.383 37.435Z\" fill=\"#442D13\"/><path d=\"M98.198 132.666 81.734 170.31h8.123l13.468-37.644h-5.127Z\" fill=\"url(#c)\"/><path d=\"M89.853 170.415h-8.12a.04.04 0 0 1-.032-.014.092.092 0 0 1-.023-.041.183.183 0 0 1 0-.111l16.468-37.645c.008-.021.022-.037.037-.043h5.126c.012-.001.023.004.033.014.01.01.018.024.023.042a.177.177 0 0 1 0 .104l-13.472 37.645c-.009.025-.023.042-.04.049Zm-7.994-.209h7.96l13.394-37.435h-4.986l-16.368 37.435Z\" fill=\"#442D13\"/><path d=\"m118.707 132.666-4.491 37.644h8.123l1.495-37.644h-5.127Z\" fill=\"url(#d)\"/><path d=\"M122.338 170.416h-8.12a.037.037 0 0 1-.027-.009.079.079 0 0 1-.021-.028.15.15 0 0 1-.005-.043c0-.015.001-.029.005-.043l4.473-37.645a.139.139 0 0 1 .023-.061c.011-.015.025-.024.04-.025h5.126a.051.051 0 0 1 .048 0 .155.155 0 0 1 0 .08l-1.476 37.645a.135.135 0 0 1 0 .049.15.15 0 0 1-.013.044.08.08 0 0 1-.024.029.039.039 0 0 1-.029.007Zm-8.046-.209h7.987l1.476-37.435h-4.997l-4.466 37.435Z\" fill=\"#442D13\"/><path d=\"M93.069 132.666 73.61 170.31h8.12l16.464-37.644H93.07Z\" fill=\"url(#e)\"/><path d=\"M81.733 170.415h-8.12a.048.048 0 0 1-.034-.017.102.102 0 0 1-.024-.044.183.183 0 0 1 0-.111l19.461-37.645a.082.082 0 0 1 .021-.028.046.046 0 0 1 .027-.009h5.119a.051.051 0 0 1 .032.017c.01.009.017.023.023.039a.184.184 0 0 1 0 .111l-16.453 37.644a.08.08 0 0 1-.022.034.034.034 0 0 1-.03.009Zm-7.983-.209h7.95l16.372-37.435h-4.975L73.75 170.206Z\" fill=\"#442D13\"/><path d=\"m113.581 132.666-7.485 37.644h8.119l4.492-37.644h-5.126Z\" fill=\"url(#f)\"/><path d=\"M114.217 170.415h-8.12a.037.037 0 0 1-.029-.01.092.092 0 0 1-.023-.033.17.17 0 0 1 0-.092l7.474-37.645a.123.123 0 0 1 .025-.054c.011-.013.024-.02.038-.02h5.126c.01 0 .019.003.027.009a.076.076 0 0 1 .021.028.154.154 0 0 1 0 .086l-4.477 37.651a.108.108 0 0 1-.022.06c-.011.015-.026.022-.04.02Zm-8.031-.209h7.979l4.466-37.435h-5.005l-7.44 37.435Z\" fill=\"#442D13\"/><path d=\"M108.449 132.666 97.975 170.31h8.12l7.485-37.644h-5.131Z\" fill=\"url(#g)\"/><path d=\"M106.095 170.416h-8.12a.05.05 0 0 1-.03-.013.096.096 0 0 1-.024-.037.17.17 0 0 1 0-.098l10.474-37.645a.11.11 0 0 1 .023-.043.046.046 0 0 1 .032-.018h5.13c.02.002.039.018.052.043a.17.17 0 0 1 .007.046.17.17 0 0 1-.007.046l-7.477 37.651a.109.109 0 0 1-.023.052c-.01.012-.023.018-.037.016Zm-8.02-.21h7.976l7.441-37.435h-5.001l-10.415 37.435Z\" fill=\"#442D13\"/><path d=\"M77.69 132.666 49.254 170.31h8.12l25.444-37.644H77.69Z\" fill=\"url(#h)\"/><path d=\"M57.373 170.415h-8.12a.043.043 0 0 1-.036-.017.107.107 0 0 1-.023-.051.163.163 0 0 1 0-.117l28.455-37.644a.034.034 0 0 1 .04 0h5.127c.013-.001.026.006.036.018a.12.12 0 0 1 .023.05.17.17 0 0 1 .002.063.121.121 0 0 1-.02.053l-25.44 37.62c-.013.018-.028.027-.044.025Zm-7.94-.209h7.917l25.3-37.436h-4.938l-28.278 37.436Z\" fill=\"#442D13\"/><path d=\"M73.032 132.666h-.188L37.715 170.31H49.25l28.437-37.644h-4.654Z\" fill=\"url(#i)\"/><path d=\"M49.251 170.421H37.718c-.014.001-.028-.006-.04-.019a.124.124 0 0 1-.023-.055.182.182 0 0 1 .002-.065.123.123 0 0 1 .024-.052l35.128-37.645a.04.04 0 0 1 .037 0h4.842a.06.06 0 0 1 .035.021c.01.011.019.028.024.047a.193.193 0 0 1 0 .067.134.134 0 0 1-.022.056l-28.419 37.645a.047.047 0 0 1-.055 0Zm-11.316-.21H49.23l28.286-37.435h-4.65l-34.93 37.435Z\" fill=\"#442D13\"/><path d=\"M82.814 132.666 57.371 170.31h8.123l22.447-37.644h-5.127Z\" fill=\"url(#j)\"/><path d=\"M65.494 170.415h-8.12a.048.048 0 0 1-.036-.018.115.115 0 0 1-.023-.05.201.201 0 0 1 0-.062.156.156 0 0 1 .018-.055l25.44-37.644a.034.034 0 0 1 .041 0h5.127c.012-.001.025.006.035.018.011.012.02.029.024.049a.153.153 0 0 1 0 .111l-22.462 37.62a.06.06 0 0 1-.02.024.037.037 0 0 1-.024.007Zm-7.954-.209h7.924l22.325-37.436h-4.953L57.54 170.206Z\" fill=\"#442D13\"/><path d=\"M87.941 132.666 65.494 170.31h8.12l19.457-37.644h-5.13Z\" fill=\"url(#k)\"/><path d=\"M73.614 170.415h-8.12a.048.048 0 0 1-.035-.016.107.107 0 0 1-.024-.046.174.174 0 0 1 0-.117l22.462-37.645a.044.044 0 0 1 .044 0h5.13a.056.056 0 0 1 .033.019c.01.011.017.025.022.043a.142.142 0 0 1 0 .111l-19.465 37.614a.082.082 0 0 1-.02.028.046.046 0 0 1-.028.009Zm-7.969-.21h7.939L92.93 132.77h-4.964l-22.322 37.435Z\" fill=\"#442D13\"/><path d=\"m164.853 132.666 22.45 37.644h8.12l-25.44-37.644h-5.13Z\" fill=\"url(#l)\"/><path d=\"M195.424 170.416h-8.119a.035.035 0 0 1-.022.009.031.031 0 0 1-.022-.009l-22.451-37.675a.169.169 0 0 1-.01-.056c0-.019.004-.038.01-.055a.102.102 0 0 1 .023-.049c.011-.013.023-.019.036-.019h5.13a.038.038 0 0 1 .041 0l25.443 37.645a.159.159 0 0 1 0 .117.127.127 0 0 1-.018.066c-.011.017-.026.026-.041.026Zm-8.093-.209h7.92l-25.293-37.435h-4.949l22.322 37.435Z\" fill=\"#442D13\"/><path d=\"m123.835 132.666-1.495 37.644h8.119l-1.498-37.644h-5.126Z\" fill=\"url(#m)\"/><path d=\"M130.457 170.416h-8.119a.046.046 0 0 1-.048 0 .134.134 0 0 1 0-.08l1.48-37.676a.148.148 0 0 1 .019-.07c.012-.018.027-.029.043-.028h5.127c.016-.001.032.009.044.028.013.018.02.043.022.07l1.495 37.645a.16.16 0 0 1-.003.044.15.15 0 0 1-.015.036c-.012.02-.028.031-.045.031Zm-8.053-.21h7.987l-1.476-37.435h-5.024l-1.487 37.435Z\" fill=\"#442D13\"/><path d=\"m159.726 132.666 19.458 37.644h8.119l-22.45-37.644h-5.127Z\" fill=\"url(#n)\"/><path d=\"M187.303 170.416h-8.119a.037.037 0 0 1-.027-.009.079.079 0 0 1-.021-.028l-19.458-37.644a.2.2 0 0 1 0-.111.108.108 0 0 1 .025-.045.047.047 0 0 1 .034-.017h5.127a.051.051 0 0 1 .048 0l22.447 37.645a.187.187 0 0 1 0 .117.146.146 0 0 1-.019.061c-.01.017-.023.028-.037.031Zm-8.09-.209h7.939l-22.325-37.435h-4.96l19.346 37.435Z\" fill=\"#442D13\"/><path d=\"m154.599 132.666 16.461 37.644h8.123l-19.457-37.644h-5.127Z\" fill=\"url(#o)\"/><path d=\"M179.183 170.415h-8.12a.034.034 0 0 1-.027-.011.069.069 0 0 1-.021-.032l-16.468-37.644a.169.169 0 0 1 0-.111.094.094 0 0 1 .023-.042c.01-.01.021-.015.032-.014h5.127c.009 0 .018.003.027.009a.09.09 0 0 1 .021.028l19.454 37.645a.169.169 0 0 1 0 .111.125.125 0 0 1-.019.042.056.056 0 0 1-.029.019Zm-8.09-.209h7.949l-19.346-37.435h-4.972l16.369 37.435Z\" fill=\"#442D13\"/><path d=\"M175.109 132.666h-5.126l25.44 37.644h8.123l-28.437-37.644Z\" fill=\"url(#p)\"/><path d=\"M203.547 170.416h-8.12a.033.033 0 0 1-.04 0l-25.448-37.669a.159.159 0 0 1 0-.117.1.1 0 0 1 .022-.052c.011-.013.024-.018.037-.016h5.126a.038.038 0 0 1 .041 0l28.419 37.645a.138.138 0 0 1 .02.052.179.179 0 0 1-.001.061.115.115 0 0 1-.022.05c-.01.013-.022.021-.034.022v.024Zm-8.098-.209h7.921l-28.283-37.435h-4.934l25.296 37.435Z\" fill=\"#442D13\"/><path d=\"m215.076 170.31-35.124-37.644h-4.843l28.437 37.644h11.53Z\" fill=\"url(#q)\"/><path d=\"M215.076 170.415h-11.53a.049.049 0 0 1-.041 0l-28.437-37.663a.149.149 0 0 1-.02-.057.189.189 0 0 1 .002-.067.126.126 0 0 1 .023-.048c.011-.012.023-.019.036-.019h4.842a.033.033 0 0 1 .033 0l35.129 37.644a.113.113 0 0 1 .023.053.163.163 0 0 1 .001.066.118.118 0 0 1-.024.053c-.011.013-.024.02-.037.019v.019Zm-11.512-.21h11.298l-34.93-37.435h-4.642l28.274 37.435Z\" fill=\"#442D13\"/><path d=\"m149.469 132.666 13.471 37.644h8.12l-16.461-37.644h-5.13Z\" fill=\"url(#r)\"/><path d=\"M171.06 170.416h-8.12a.048.048 0 0 1-.031-.013.091.091 0 0 1-.024-.037l-13.468-37.644a.178.178 0 0 1 0-.105.101.101 0 0 1 .027-.048.042.042 0 0 1 .04-.008h5.126c.02.003.038.019.052.044l16.46 37.644c.007.017.01.036.01.056a.142.142 0 0 1-.01.055.1.1 0 0 1-.026.044.043.043 0 0 1-.036.012Zm-8.083-.21h7.961l-16.372-37.435h-4.983l13.394 37.435Z\" fill=\"#442D13\"/><path d=\"m144.344 132.666 10.478 37.644h8.119l-13.471-37.644h-5.126Z\" fill=\"url(#s)\"/><path d=\"M162.94 170.416h-8.119a.047.047 0 0 1-.035-.014.09.09 0 0 1-.024-.042l-10.475-37.651a.148.148 0 0 1 0-.098.096.096 0 0 1 .022-.036c.009-.009.02-.014.03-.013h5.145c.01-.001.021.004.03.013a.096.096 0 0 1 .022.036l13.471 37.645a.198.198 0 0 1 0 .11.09.09 0 0 1-.029.042.048.048 0 0 1-.038.008Zm-8.079-.21h7.969l-13.394-37.435h-4.994l10.419 37.435Z\" fill=\"#442D13\"/><path d=\"m128.959 132.666 1.498 37.644h8.12l-4.488-37.644h-5.13Z\" fill=\"url(#t)\"/><path d=\"M138.577 170.415h-8.119c-.016 0-.032-.01-.043-.029a.137.137 0 0 1-.02-.07l-1.499-37.645a.224.224 0 0 1 .019-.08.043.043 0 0 1 .044 0h5.13c.015.001.029.01.041.026a.134.134 0 0 1 .022.061l4.488 37.644a.16.16 0 0 1 0 .087.058.058 0 0 1-.031.014.053.053 0 0 1-.032-.008Zm-8.06-.21h7.983l-4.462-37.435h-5.009l1.488 37.435Z\" fill=\"#442D13\"/><path d=\"m134.09 132.666 4.488 37.644h8.12l-7.481-37.644h-5.127Z\" fill=\"url(#u)\"/><path d=\"M146.702 170.416h-8.12a.05.05 0 0 1-.04-.022.133.133 0 0 1-.023-.058l-4.491-37.651a.154.154 0 0 1 0-.086c.013-.024.032-.037.051-.037h5.127c.013 0 .026.007.036.02a.122.122 0 0 1 .023.053l7.484 37.645c.006.014.009.03.009.046a.12.12 0 0 1-.029.079.045.045 0 0 1-.027.011Zm-8.072-.21h7.983l-7.441-37.435h-5.004l4.462 37.435Z\" fill=\"#442D13\"/><path d=\"m139.217 132.666 7.481 37.644h8.123l-10.478-37.644h-5.126Z\" fill=\"url(#v)\"/><path d=\"M154.822 170.416h-8.12a.05.05 0 0 1-.037-.018.119.119 0 0 1-.026-.05l-7.488-37.651a.139.139 0 0 1-.007-.046c0-.016.002-.032.007-.046a.084.084 0 0 1 .023-.031.044.044 0 0 1 .029-.012h5.126c.012 0 .024.006.035.016.01.011.019.027.024.045l10.474 37.645a.133.133 0 0 1 .009.049.126.126 0 0 1-.009.049.103.103 0 0 1-.017.033.06.06 0 0 1-.023.017Zm-8.076-.21h7.976l-10.404-37.435h-5.012l7.44 37.435Z\" fill=\"#442D13\"/><g style=\"mix-blend-mode:screen\" fill=\"#6C4D31\"><path d=\"M98.06 170.415h-8.119c-.01.002-.022-.002-.032-.011a.093.093 0 0 1-.023-.038.183.183 0 0 1 0-.111l13.464-37.645a.09.09 0 0 1 .021-.036.044.044 0 0 1 .03-.013h5.13c.011 0 .021.005.03.014a.088.088 0 0 1 .022.035.135.135 0 0 1 .009.05.133.133 0 0 1-.009.049L98.12 170.36a.098.098 0 0 1-.025.042.044.044 0 0 1-.034.013Zm-7.997-.209h7.968l10.408-37.435h-4.993l-13.383 37.435Z\" style=\"mix-blend-mode:screen\"/><path d=\"M89.94 170.415h-8.12c-.012.001-.023-.004-.033-.014a.092.092 0 0 1-.023-.041.164.164 0 0 1 0-.111l16.465-37.645a.097.097 0 0 1 .022-.032.048.048 0 0 1 .03-.011h5.126a.04.04 0 0 1 .032.014c.01.01.018.024.023.042a.15.15 0 0 1 0 .104l-13.471 37.645a.086.086 0 0 1-.022.036c-.009.009-.02.014-.03.013Zm-7.998-.209h7.96l13.394-37.435h-4.982l-16.372 37.435Zm40.481.21h-8.119a.047.047 0 0 1-.028-.009.096.096 0 0 1-.024-.028.16.16 0 0 1-.005-.044c0-.015.001-.029.005-.043l4.477-37.644a.124.124 0 0 1 .023-.061c.011-.016.025-.025.04-.026h5.126a.046.046 0 0 1 .048 0 .215.215 0 0 1 0 .08l-1.498 37.645a.159.159 0 0 1-.006.08.113.113 0 0 1-.016.031.067.067 0 0 1-.023.019Zm-8.045-.21h7.986l1.477-37.435h-4.99l-4.473 37.435Z\" style=\"mix-blend-mode:screen\"/><path d=\"M81.82 170.415H73.7a.048.048 0 0 1-.035-.017.104.104 0 0 1-.024-.044.183.183 0 0 1 0-.111l19.468-37.645a.08.08 0 0 1 .022-.028.045.045 0 0 1 .026-.009h5.127a.051.051 0 0 1 .031.017.1.1 0 0 1 .024.039.164.164 0 0 1 0 .111l-16.468 37.644a.08.08 0 0 1-.022.034.034.034 0 0 1-.03.009Zm-7.995-.209h7.95l16.383-37.435h-4.971l-19.362 37.435Zm40.48.209h-8.12a.038.038 0 0 1-.029-.011.08.08 0 0 1-.023-.032.17.17 0 0 1-.007-.046.17.17 0 0 1 .007-.046l7.474-37.645a.14.14 0 0 1 .01-.038.073.073 0 0 1 .019-.028.041.041 0 0 1 .024-.013.045.045 0 0 1 .025.005h5.126a.047.047 0 0 1 .023.012.08.08 0 0 1 .018.025.154.154 0 0 1 0 .087l-4.488 37.65a.119.119 0 0 1-.02.06c-.011.015-.025.022-.039.02Zm-8.035-.209h7.983l4.462-37.435h-5.005l-7.44 37.435Z\" style=\"mix-blend-mode:screen\"/><path d=\"M106.182 170.415h-8.12a.042.042 0 0 1-.03-.013.086.086 0 0 1-.021-.036.142.142 0 0 1 0-.099l10.471-37.644a.097.097 0 0 1 .024-.045.047.047 0 0 1 .035-.017h5.145a.057.057 0 0 1 .028.012.093.093 0 0 1 .023.031.161.161 0 0 1 .007.049.163.163 0 0 1-.007.05l-7.492 37.644a.122.122 0 0 1-.025.051.046.046 0 0 1-.038.017Zm-8.02-.209h7.976l7.44-37.435h-5l-10.416 37.435Zm-40.706.21h-8.12a.043.043 0 0 1-.036-.017.107.107 0 0 1-.023-.051.172.172 0 0 1 0-.064.121.121 0 0 1 .022-.053l28.419-37.644a.034.034 0 0 1 .04 0h5.127c.013-.002.026.004.036.017a.11.11 0 0 1 .023.05.15.15 0 0 1 .011.059.145.145 0 0 1-.011.058L57.5 170.391a.059.059 0 0 1-.02.02.034.034 0 0 1-.024.005Zm-7.939-.209h7.917l25.3-37.436h-4.939l-28.278 37.436Z\" style=\"mix-blend-mode:screen\"/><path d=\"M49.338 170.417H37.804c-.013 0-.026-.007-.037-.02a.125.125 0 0 1-.022-.053.187.187 0 0 1 .002-.066.122.122 0 0 1 .024-.052l35.128-37.644a.033.033 0 0 1 .034 0h4.842c.012 0 .025.007.035.019a.12.12 0 0 1 .024.049.203.203 0 0 1 0 .123l-28.419 37.644a.055.055 0 0 1-.038.019.055.055 0 0 1-.04-.019Zm-11.312-.209h11.293l28.275-37.435h-4.643l-34.925 37.435Zm27.552.208h-8.12a.048.048 0 0 1-.036-.018.115.115 0 0 1-.023-.05.191.191 0 0 1 0-.117l25.459-37.644a.034.034 0 0 1 .04 0h5.127c.013-.002.025.004.036.017a.11.11 0 0 1 .023.05.164.164 0 0 1 0 .111l-22.462 37.62a.06.06 0 0 1-.02.024.037.037 0 0 1-.024.007Zm-7.954-.209h7.928l22.321-37.436h-4.949l-25.3 37.436Z\" style=\"mix-blend-mode:screen\"/><path d=\"M73.699 170.417h-8.12a.048.048 0 0 1-.035-.017.115.115 0 0 1-.024-.045.157.157 0 0 1-.01-.058c0-.021.003-.042.01-.059l22.462-37.645a.05.05 0 0 1 .044 0h5.13a.056.056 0 0 1 .033.019c.01.011.017.025.023.043a.161.161 0 0 1 0 .111L73.746 170.38a.082.082 0 0 1-.022.028.046.046 0 0 1-.026.009Zm-7.969-.21h7.94l19.346-37.435h-4.96L65.73 170.207Zm129.777.208h-8.12a.037.037 0 0 1-.022.008.04.04 0 0 1-.022-.008l-22.451-37.675a.143.143 0 0 1 0-.111.11.11 0 0 1 .023-.051c.011-.012.024-.018.036-.017h5.127a.036.036 0 0 1 .04 0l25.444 37.645a.159.159 0 0 1 0 .117.123.123 0 0 1-.016.065c-.01.018-.024.027-.039.027Zm-8.094-.209h7.928l-25.3-37.435h-4.949l22.321 37.435Zm-56.87.209h-8.12a.046.046 0 0 1-.048 0 .13.13 0 0 1-.005-.04c0-.014.001-.027.005-.04l1.48-37.675a.137.137 0 0 1 .02-.07c.011-.019.027-.029.043-.029h5.13c.016 0 .031.01.043.029a.137.137 0 0 1 .02.07l1.476 37.644a.137.137 0 0 1 .005.04.13.13 0 0 1-.005.04c-.012.018-.028.029-.044.031Zm-8.053-.209h7.986L129 132.771h-5.023l-1.487 37.435Z\" style=\"mix-blend-mode:screen\"/><path d=\"M187.386 170.415h-8.12a.037.037 0 0 1-.027-.009.079.079 0 0 1-.021-.028l-19.458-37.644a.169.169 0 0 1 0-.111.118.118 0 0 1 .022-.045.047.047 0 0 1 .034-.017h5.13a.043.043 0 0 1 .044 0l22.447 37.645a.159.159 0 0 1 0 .117.161.161 0 0 1-.017.06.07.07 0 0 1-.034.032Zm-8.09-.209h7.938l-22.325-37.435h-4.96l19.347 37.435Z\" style=\"mix-blend-mode:screen\"/><path d=\"M179.269 170.415h-8.119a.035.035 0 0 1-.03-.009.077.077 0 0 1-.022-.034l-16.446-37.644a.169.169 0 0 1 0-.111.1.1 0 0 1 .024-.039.049.049 0 0 1 .031-.017h5.112c.009 0 .018.003.027.009a.09.09 0 0 1 .021.028l19.458 37.645a.198.198 0 0 1 0 .111.126.126 0 0 1-.023.043.05.05 0 0 1-.033.018Zm-8.09-.209h7.95l-19.347-37.435h-4.971l16.368 37.435Zm32.452.209h-8.119a.035.035 0 0 1-.041 0l-25.448-37.669a.159.159 0 0 1-.01-.059c0-.02.003-.041.01-.058a.11.11 0 0 1 .023-.051c.011-.012.024-.018.036-.017h5.127a.036.036 0 0 1 .04 0l28.419 37.645a.113.113 0 0 1 .023.052.178.178 0 0 1-.001.065.135.135 0 0 1-.018.066c-.011.017-.026.026-.041.026Zm-8.097-.209h7.916l-28.278-37.435h-4.938l25.3 37.435Z\" style=\"mix-blend-mode:screen\"/><path d=\"M171.15 170.415h-8.119c-.011.001-.021-.004-.03-.013a.085.085 0 0 1-.022-.036l-13.475-37.645a.177.177 0 0 1 0-.104.094.094 0 0 1 .023-.042c.01-.01.021-.015.032-.014h5.127a.05.05 0 0 1 .028.012.093.093 0 0 1 .023.031l16.461 37.645c.006.017.01.036.01.055 0 .02-.004.039-.01.056a.104.104 0 0 1-.019.038.047.047 0 0 1-.029.017Zm-8.086-.209h7.961l-16.372-37.435h-4.983l13.394 37.435Z\" style=\"mix-blend-mode:screen\"/><path d=\"M163.026 170.415h-8.12a.042.042 0 0 1-.034-.013.096.096 0 0 1-.025-.042l-10.474-37.651a.133.133 0 0 1-.009-.049c0-.018.003-.035.009-.05a.088.088 0 0 1 .022-.035.042.042 0 0 1 .029-.014h5.131c.01 0 .02.004.029.013a.092.092 0 0 1 .022.036l13.471 37.645a.169.169 0 0 1 0 .111.095.095 0 0 1-.022.035.052.052 0 0 1-.029.014Zm-8.079-.209h7.968l-13.394-37.435h-4.993l10.419 37.435Zm-16.284.209h-8.119c-.016 0-.032-.01-.043-.028a.137.137 0 0 1-.02-.07l-1.476-37.645a.155.155 0 0 1 0-.08.046.046 0 0 1 .048 0h5.126c.015.001.029.01.04.025.012.016.02.037.023.061l4.488 37.645a.154.154 0 0 1 .005.043.15.15 0 0 1-.005.043.05.05 0 0 1-.033.018.046.046 0 0 1-.034-.012Zm-8.06-.209h7.987l-4.466-37.435h-5.009l1.488 37.435Z\" style=\"mix-blend-mode:screen\"/><path d=\"M146.784 170.415h-8.119c-.014.002-.028-.005-.039-.02a.119.119 0 0 1-.02-.06l-4.496-37.651a.149.149 0 0 1 0-.086.078.078 0 0 1 .022-.028.043.043 0 0 1 .026-.009h5.127c.013-.001.026.006.037.02a.106.106 0 0 1 .022.054l7.485 37.645a.17.17 0 0 1 .007.046.17.17 0 0 1-.007.046.093.093 0 0 1-.02.03.044.044 0 0 1-.025.013Zm-8.068-.209h7.98l-7.441-37.435h-5.004l4.465 37.435Z\" style=\"mix-blend-mode:screen\"/><path d=\"M154.906 170.415h-8.12c-.013.001-.026-.005-.037-.017a.123.123 0 0 1-.026-.051l-7.481-37.644a.201.201 0 0 1-.007-.05.2.2 0 0 1 .007-.049c.014-.025.032-.04.052-.043h5.134c.012 0 .024.006.035.017a.12.12 0 0 1 .024.045l10.478 37.644a.159.159 0 0 1 0 .099.098.098 0 0 1-.025.04c-.011.008-.023.012-.034.009Zm-8.076-.209h7.976l-10.419-37.435h-4.997l7.44 37.435Z\" style=\"mix-blend-mode:screen\"/></g><path d=\"M214.653 171h-177v9h177v-9Z\" fill=\"url(#w)\"/><path d=\"M214.588 179.998H37.716c-.009.001-.018-.011-.026-.036a.563.563 0 0 1-.022-.106 2.607 2.607 0 0 1-.014-.333v-8.119c0-.106.008-.205.02-.279.01-.075.026-.119.042-.125h176.872c.009 0 .017.01.024.031.008.02.015.05.021.087a1.871 1.871 0 0 1 .018.286v8.119a2.73 2.73 0 0 1-.012.343.478.478 0 0 1-.023.106c-.009.023-.018.032-.028.026Zm-176.809-.878h176.747v-7.313H37.779v7.313Z\" fill=\"#6A4C2E\"/><path d=\"M215.073 170.279H37.715v.561h177.358v-.561Z\" fill=\"#845F3D\" style=\"mix-blend-mode:screen\"/><path d=\"M49.35 170.292h-.147v9.71h.146v-9.71Zm8.167 0h-.146v9.71h.146v-9.71Zm8.123 0h-.146v9.71h.147v-9.71Zm8.015-.001-.146.001.034 9.71.147-.002-.035-9.709Zm8.177 0-.147.001.03 9.71.146-.001-.03-9.71Zm8.113-.042-.146.001.004 2.108.147-.001-.005-2.108Z\" fill=\"#563D22\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M89.949 170.292h-.147v9.71h.147v-9.71Zm8.171 0h-.146v9.71h.147v-9.71Zm8.12 0h-.147v9.71h.147v-9.71Zm8.014-.001-.147.001.035 9.71.146-.002-.034-9.709Zm8.179 0-.147.001.03 9.71.146-.001-.029-9.71Zm8.121 0-.146.001.022 9.71.146-.001-.022-9.71Zm8.078.001h-.146v9.71h.146v-9.71Zm8.169 0h-.147v9.71h.147v-9.71Zm8.122 0h-.146v9.71h.146v-9.71Zm8.023 9.71h-.146l-.008-9.71h.147l.007 9.71Zm8.052-9.71h-.146v9.71h.146v-9.71Zm8.234-.029-.146.001.005 2.108.146-.001-.005-2.108Z\" fill=\"#563D22\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M179.231 170.292h-.146v9.71h.146v-9.71Zm8.169 0h-.147v9.71h.147v-9.71Zm8.085 0h-.147v9.71h.147v-9.71Zm8.056-.001-.146.001.034 9.71.147-.002-.035-9.709Z\" fill=\"#563D22\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M53.863 162.42c-.159.46-.34.899-.539 1.313l.06-.129c.04-.087 0-.148-.049-.068-.153.326-.317.639-.49.937l-.252.37c.168-.302.306-.648.406-1.024.082-.308.06-.554-.158-.45a4.124 4.124 0 0 0-.967 1.061 9.321 9.321 0 0 0-1.045 1.59c-.092.185-.435.863-.291 1.147.144.283.642-.222.815-.383.03 0 .056-.185 0-.141a2.22 2.22 0 0 1-.527.394c-.222.08-.166-.228-.063-.524-.02.068-.032.141-.037.216a.107.107 0 0 0 0 .068c.162.185.528-.259.653-.389a7.202 7.202 0 0 0 1-1.202.29.29 0 0 0-.033.062c-.018 0 0 .099 0 .068.22-.214.419-.487.587-.808h.019c.42-.556.756-1.27.981-2.083.037-.105-.04-.111-.07-.025Zm-2.118 2.953a2.84 2.84 0 0 0 .369-.617c0-.037.022-.129-.022-.117a1.214 1.214 0 0 0-.458.475l-.085.123c.055-.086.114-.179.173-.259a5.09 5.09 0 0 1 .499-.616s.28-.21.188 0a3.429 3.429 0 0 1-.771 1.165l.107-.154Zm-.399.437c.07-.153.147-.295.233-.425a3.17 3.17 0 0 1 .335-.419c-.062.105-.144.203-.203.29-.11.205-.232.391-.365.554Zm-.37.185a8.01 8.01 0 0 1 .798-1.232l-.173.252a7.748 7.748 0 0 0-.61.98l-.11.21c.037-.099.059-.173.092-.21h.004Zm.924-.351a4.219 4.219 0 0 1-.96.931.459.459 0 0 1 0-.259c.044-.111.174-.345.244-.475.07-.129.144-.265.221-.394-.112.184-.21.391-.291.616-.03.086 0 .154.051.111.487-.357 1.251-1.029 1.362-1.991a.056.056 0 0 0 0-.043c-.085-.123-.255 0-.424.197l.313-.425c.088-.109.18-.209.273-.302.237-.253.24.197.14.45a5.732 5.732 0 0 1-.933 1.584h.004Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M53.303 162.378a4.684 4.684 0 0 0-1.051.857c-.37.493-.765.955-1.108 1.491a11.4 11.4 0 0 0-.922 1.603 12.141 12.141 0 0 0-.646 1.689c-.022.074.037.049.055 0 .219-.597.455-1.175.709-1.732.286-.55.601-1.057.94-1.516.3-.457.64-.826.95-1.233a6.534 6.534 0 0 1 1.08-1.023c.015-.05.034-.173-.007-.136Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M50.88 167.383c-.27.179-.517.431-.79.616-.144.087-.144-.172-.1-.326.045-.155.082-.222.115-.339.066-.222.159-.426.229-.648.03-.086-.03-.086-.056 0-.025.087-.623 1.344-.413 1.523.103.086.218 0 .314-.08.24-.184.474-.39.701-.617.018-.055.04-.154 0-.129Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"m50.546 167.425-.214.161c-.03 0-.044.154 0 .117.044-.037.144-.105.214-.167.07-.061.044-.142 0-.111Zm5.829-7.831c-.76 1.196-1.476 2.423-2.214 3.65-.026.043-.019.117.022.067a30.51 30.51 0 0 0 2.214-3.649c.022-.068.015-.154-.022-.068Zm17.16-20.16c-.025 0-.03 0-.04-.049-.005-.005-.01-.008-.015-.008a2.229 2.229 0 0 1-.384.205c-.044 0-.077.198 0 .154.078-.043.314-.271.37-.178h.021s-.132.351-.15.407c-.08.257-.169.506-.267.745a13.926 13.926 0 0 1-.978 1.689 12.66 12.66 0 0 1-1.25 1.541c-.352.407-.739 1.024-1.211 1.03a5.624 5.624 0 0 1 .62-1.504c.221-.407.454-.802.7-1.178a4.732 4.732 0 0 0-.401.814c-.108.29-.285.549-.285.9a.07.07 0 0 0 .008.033c.004.009.011.015.018.016.007.009.016.014.024.014.009 0 .017-.005.024-.014l.074-.043a.57.57 0 0 1-.165.208.305.305 0 0 1-.204.064c-.033 0-.078.11-.04.123a.4.4 0 0 0 .271-.103.8.8 0 0 0 .212-.304.111.111 0 0 0 0-.043c.284-.22.551-.5.793-.832.412-.568.798-1.186 1.156-1.85a.144.144 0 0 0 .025-.074h.037c.096-.149.173-.329.225-.53.048-.17.085-.347.111-.53 0-.092-.063 0-.07 0a.694.694 0 0 0-.048.167c-.011.061-.037.154-.055.234a2.076 2.076 0 0 1-.214.53.2.2 0 0 0 0 .049.039.039 0 0 0-.034 0c-.324.543-.638 1.097-.989 1.591-.19.265-.39.506-.601.721-.06.068-.395.413-.44.357-.044-.055.144-.493.37-.9-.023.081-.045.155-.063.235-.019.08 0 .098.03.098a.424.424 0 0 0 .232-.154c.208-.203.403-.441.583-.709.35-.36.654-.829.897-1.381.096-.308-.155-.203-.225-.141a3.632 3.632 0 0 0-.476.481c.24-.303.483-.586.738-.876.026-.031.037-.148 0-.098-.31.351-.624.69-.92 1.072a36.5 36.5 0 0 1 .591-.851 9.443 9.443 0 0 1 1.144-1.177c.03 0 .041-.148 0-.105a7.457 7.457 0 0 0-1.085 1.036c-.39.505-.76 1.06-1.136 1.596-.322.475-.627.981-.912 1.517a5.45 5.45 0 0 0-.609 1.596c0 .05 0 .099.033.105.435-.069.844-.377 1.163-.875.469-.617.989-1.122 1.44-1.794.387-.558.742-1.178 1.058-1.849.164-.348.29-.743.37-1.165 0 0-.063-.006-.07-.013Zm-2.155 2.411a1.011 1.011 0 0 0-.063.123c-.03.08 0 .129.045.062.151-.229.314-.435.487-.617a2.02 2.02 0 0 1 .276-.308c-.018 0 .27-.203.126.092a7.391 7.391 0 0 1-1.151 1.56c-.137.166-.395.468-.167-.074.136-.299.285-.579.447-.838Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M71.828 141.419a3.025 3.025 0 0 1-.273.407 1.787 1.787 0 0 0-.273.425c0 .05 0 .099.033.068.11-.119.21-.26.299-.419.092-.129.177-.271.255-.425.033-.074-.008-.13-.041-.056Zm.103.093a4.89 4.89 0 0 0-.42.616c-.038.074 0 .136.044.062.114-.228.273-.37.398-.579.026-.068.026-.161-.022-.099Zm1.183-1.72a14.062 14.062 0 0 1-.768 1.739 19.633 19.633 0 0 1-.996 1.602c-.045.068-.026.191.033.111.345-.448.667-.943.963-1.479.319-.604.603-1.256.85-1.948.014-.093-.056-.093-.082-.025Zm1.29-1.48c-.243.616-.572 1.14-.834 1.744a4.549 4.549 0 0 1-.431.833 4.13 4.13 0 0 0-.421.727c-.048.099 0 .172.059.08.3-.435.575-.914.823-1.43.255-.678.598-1.233.849-1.929.033-.081-.022-.081-.044-.025Zm-5.009 6.022c-.671.986-1.424 1.8-2.092 2.792-.04.062-.026.185.03.105.697-.937 1.431-1.794 2.088-2.811.037-.049.022-.154-.026-.086Zm-.646 1.436c-.137.185-.288.339-.429.524 0 0-.033.092 0 .099.034.006.115-.118.167-.179.051-.062.191-.241.284-.37.03-.043.018-.129-.022-.074Zm12.303.727c.04 0 .077-.185 0-.154a.373.373 0 0 0-.137.136c-.07.105-.151.185-.225.29a2.92 2.92 0 0 0-.303.789c0 .067 0 .185.048.148.148-.087.273-.376.37-.543a.89.89 0 0 0 .155-.268c.04-.106.068-.224.08-.348.034-.037.023-.05.011-.05Zm-.281.568c-.052.067-.118.191-.188.283.033-.139.079-.268.136-.382.056-.093.115-.16.174-.247.031-.058.064-.114.1-.166l-.104.185c0 .037 0 .086.022.049a.468.468 0 0 1 .06-.098 1.03 1.03 0 0 1-.2.376Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M81.372 146.037a8.764 8.764 0 0 1-.671 1.448c0-.031 0-.055-.03 0-.17.241-.369.721-.613.845.23-.92.633-1.688 1.148-2.189.04-.043.056-.191 0-.135-.3.249-.569.596-.79 1.019a5.46 5.46 0 0 0-.494 1.446c0 .037 0 .111.033.099.29-.176.538-.51.701-.949-.022.068 0 .142.048.074.15-.223.285-.473.403-.746.14-.268.258-.569.347-.894.018-.117-.063-.068-.082-.018Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M82.287 144.494c-.114.321-.232.647-.369.962.022-.062.048-.13.067-.191.018-.062-.03-.087-.052 0-.355 1.104-.819 2.101-1.373 2.946-.262.382-.528.746-.786 1.134-.126.192-.37.438-.225-.043.074-.234.114-.499.188-.739.019-.062 0-.074-.033-.044a6.41 6.41 0 0 1 .461-1.128c.4-.838.888-1.545 1.443-2.083.026 0 .06-.154 0-.123-.535.44-1.007 1.071-1.38 1.849-.47.793-.81 1.773-.99 2.848 0 .105.052.074.07 0 .108-.376.208-.746.315-1.11-.056.216-.107.438-.174.647a.884.884 0 0 0-.066.383s.018.03.033 0c.207-.13.392-.342.539-.617.27-.437.583-.789.852-1.233.217-.391.42-.803.61-1.232.088-.192.173-.383.254-.58-.203.518-.413 1.03-.635 1.523a13.8 13.8 0 0 1-1.65 2.545c-.048.068-.03.204.037.118a14.267 14.267 0 0 0 1.661-2.441 23.549 23.549 0 0 0 1.28-3.329c.041-.154-.05-.154-.077-.062Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M82.217 143.907a20.819 20.819 0 0 0-2.052 2.922 16.496 16.496 0 0 0-1.429 3.556c-.03.111.06.081.082 0a18.617 18.617 0 0 1 1.428-3.445 28.8 28.8 0 0 1 2-2.947c.04-.049.023-.154-.03-.086Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M80.049 146.651a10.92 10.92 0 0 0-.882 1.979c-.321.813-.66 1.621-.934 2.465-.04.13.048.13.081.037a96.89 96.89 0 0 1 .809-2.157c.26-.817.58-1.577.952-2.262.022-.062.022-.136-.026-.062Zm1.395 1.13c-.41.616-.842 1.146-1.259 1.719-.417.574-.885 1.344-1.343 1.991-.044.062-.026.185.033.105.44-.579.83-1.233 1.259-1.849.428-.616.897-1.233 1.328-1.886.03-.05.019-.13-.018-.08Zm119.136 16.55c.226.812.562 1.525.982 2.083h.022c.163.31.353.576.565.789.033 0 .037-.03.022-.067l-.033-.062c.301.469.631.882.985 1.233.129.123.491.573.653.388a.11.11 0 0 0 .005-.037.114.114 0 0 0-.005-.037 1.371 1.371 0 0 0-.036-.216c.099.302.155.617-.067.524a2.216 2.216 0 0 1-.528-.388c-.055-.043-.029.105 0 .136.174.16.631.739.816.382.185-.358-.199-.962-.292-1.141a9.705 9.705 0 0 0-1.037-1.615 4.061 4.061 0 0 0-.963-1.054c-.218-.104-.244.142-.162.45.103.374.24.72.406 1.024-.082-.124-.166-.241-.251-.376a11.327 11.327 0 0 1-.488-.931c-.044-.08-.092 0-.051.068l.059.129a13.057 13.057 0 0 1-.535-1.319c-.022-.08-.104-.08-.067.037Zm2.307 3.119a3.744 3.744 0 0 1-.546-.709 4.104 4.104 0 0 1-.222-.456c-.096-.222.192 0 .189 0 .173.187.34.393.498.616l.17.259-.085-.123a1.287 1.287 0 0 0-.458-.475c-.044 0-.033.087-.022.117.104.236.228.444.369.617l.107.154Zm-.085-.314c-.059-.087-.136-.185-.203-.296.218.226.411.511.572.844a3.14 3.14 0 0 1-.369-.548Zm.834.943-.107-.21a8.197 8.197 0 0 0-.612-.986l-.174-.253c.289.369.557.782.801 1.233l.092.216Zm-1.963-2.127c-.096-.259-.096-.709.14-.456.092.099.185.197.273.308l.336.413c-.174-.197-.343-.327-.428-.203a.071.071 0 0 0-.004.021c0 .008.002.015.004.022.118.955.875 1.64 1.347 2.022.055.043.081 0 .052-.111a3.51 3.51 0 0 0-.288-.617c.074.124.151.253.221.389.07.135.196.363.24.481a.449.449 0 0 1 .03.252 4.028 4.028 0 0 1-.971-.924 5.848 5.848 0 0 1-.952-1.597Zm-3.531-4.507c.757 1.196 1.476 2.429 2.215 3.649.029.044.018.124-.023.074a32.273 32.273 0 0 1-2.214-3.649c-.026-.043-.015-.129.022-.074Zm-15.812-21.974c.079.423.204.818.369 1.165.316.671.669 1.291 1.056 1.849.45.672.97 1.172 1.439 1.794.326.518.748.836 1.196.9.037 0 .04-.055.033-.105a5.44 5.44 0 0 0-.609-1.596 16.41 16.41 0 0 0-.911-1.517c-.37-.536-.739-1.091-1.134-1.596a7.734 7.734 0 0 0-1.085-1.036c-.051-.043-.04.074 0 .105a9.35 9.35 0 0 1 1.122 1.177c.203.278.399.561.591.851-.295-.382-.605-.721-.919-1.073-.044-.049-.033.068 0 .099.24.29.487.573.738.875a3.728 3.728 0 0 0-.476-.48c-.07-.062-.321-.167-.225.141.243.552.548 1.021.897 1.381.179.268.375.506.583.709a.42.42 0 0 0 .232.154c.034 0 .045-.049.034-.098a3.763 3.763 0 0 0-.067-.235c.207.407.399.832.351.9-.048.068-.369-.289-.439-.357a5.924 5.924 0 0 1-.602-.721c-.347-.494-.661-1.048-.989-1.591a.032.032 0 0 0-.033 0 .2.2 0 0 0 0-.049 2.006 2.006 0 0 1-.214-.53c-.019-.08-.041-.154-.056-.234-.015-.081-.037-.111-.048-.167-.011-.055-.077-.117-.066 0 .023.183.059.361.107.53.054.2.13.38.225.53 0 0 .029.037.041 0a.17.17 0 0 0 .022.074c.358.664.746 1.282 1.159 1.85.24.334.505.613.789.832a.155.155 0 0 0 0 .043.808.808 0 0 0 .214.305.4.4 0 0 0 .274.102c.036 0 0-.13-.041-.124a.303.303 0 0 1-.203-.064.577.577 0 0 1-.166-.207l.077.043h.045c.006-.003.011-.01.015-.019a.088.088 0 0 0 .007-.03c0-.351-.177-.616-.281-.9a5.271 5.271 0 0 0-.402-.814 18 18 0 0 1 .698 1.178c.262.432.473.942.623 1.504-.461 0-.86-.617-1.214-1.03a12.65 12.65 0 0 1-1.251-1.541 13.86 13.86 0 0 1-.978-1.689 7.523 7.523 0 0 1-.262-.746 4.327 4.327 0 0 0-.155-.406h.022c.048-.093.277.129.369.178.092.05.03-.135 0-.154a2.233 2.233 0 0 1-.384-.204c-.005 0-.01.003-.015.007 0 .056 0 0-.04.049-.041.05-.063-.024-.063-.012Zm2.609 3.187c.229.542-.025.24-.166.074a7.528 7.528 0 0 1-1.151-1.56c-.14-.296.144-.08.125-.092.099.089.193.192.281.308.171.183.332.389.483.617.041.067.078 0 .045-.062a1.012 1.012 0 0 0-.063-.123c.169.255.323.535.461.838h-.015Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M184.063 141.419c.084.149.175.285.273.407.104.117.196.261.273.425.018.05 0 .099-.033.068-.11-.119-.21-.26-.299-.419a3.187 3.187 0 0 1-.255-.425c-.03-.074.007-.13.041-.056Zm-.104.093c.151.186.293.392.424.616.037.074 0 .136-.048.062-.114-.228-.273-.37-.398-.579-.03-.068-.019-.161.022-.099Zm-1.184-1.72c.23.615.49 1.197.779 1.739.315.563.647 1.098.996 1.602.045.068.026.191-.033.111a11.878 11.878 0 0 1-.952-1.479 13.985 13.985 0 0 1-.849-1.948c-.037-.093.033-.093.059-.025Zm-1.289-1.48c.243.616.575 1.14.837 1.744.121.308.264.588.429.833.155.214.295.458.417.727.048.099 0 .172-.059.08a10.274 10.274 0 0 1-.82-1.43c-.254-.678-.598-1.233-.852-1.929-.03-.081.026-.081.048-.025Zm5.009 6.022c.668.986 1.421 1.8 2.089 2.792.044.062.025.185-.03.105-.686-.937-1.424-1.812-2.089-2.811-.033-.049-.018-.154.03-.086Zm.636 1.436c.137.185.288.339.428.524 0 0 .034.092 0 .099-.033.006-.114-.118-.162-.179-.048-.062-.196-.241-.288-.37-.018-.043-.007-.129.022-.074Zm-12.313.776c.029.248.113.469.237.616.114.167.239.456.387.543.066.037.066-.081.048-.148a2.759 2.759 0 0 0-.303-.789c-.073-.105-.151-.185-.225-.29a.347.347 0 0 0-.136-.136c-.067 0-.026.13 0 .154 0 0-.008.013-.008.05Zm.104.141a.529.529 0 0 1 .059.099c.026.037.04 0 .022-.049l-.104-.185c.037.049.067.111.104.166.037.056.114.154.17.247.057.114.103.243.136.382-.07-.092-.136-.216-.188-.284a1.073 1.073 0 0 1-.199-.376Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M174.519 146.036c.189.525.415 1.011.671 1.449 0-.031 0-.056.03 0 .17.24.369.721.612.844-.23-.915-.633-1.679-1.147-2.176-.045-.043-.059-.191 0-.135.3.249.569.595.789 1.019.22.423.389.914.495 1.446 0 .037 0 .111-.03.099-.291-.176-.54-.51-.704-.949.022.068 0 .141-.048.074a4.884 4.884 0 0 1-.403-.746 4.446 4.446 0 0 1-.347-.894c-.014-.129.067-.08.082-.031Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M173.601 144.494c.115.321.233.647.351.962l-.067-.191c-.025-.087.03-.087.052 0 .36 1.095.826 2.082 1.38 2.922.266.382.532.745.787 1.134.125.191.369.437.225-.043-.074-.235-.115-.5-.185-.74-.018-.062 0-.074.033-.043a6.639 6.639 0 0 0-.465-1.128c-.398-.838-.886-1.544-1.439-2.084-.03 0-.063-.154 0-.123.536.44 1.007 1.072 1.38 1.849.471.792.812 1.773.989 2.848 0 .105-.051.074-.07 0-.107-.376-.203-.746-.313-1.109.059.215.107.437.173.647.049.11.072.245.066.382 0 0 0 .031-.033 0a1.656 1.656 0 0 1-.539-.616c-.265-.438-.583-.789-.848-1.233-.219-.39-.424-.802-.613-1.233-.089-.191-.17-.382-.251-.58.199.518.413 1.03.631 1.523a13.815 13.815 0 0 0 1.65 2.546c.048.068.029.203-.033.117a13.986 13.986 0 0 1-1.658-2.416 23.547 23.547 0 0 1-1.28-3.329c-.052-.154.044-.154.077-.062Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M173.672 143.907c.735.87 1.423 1.848 2.055 2.922.587 1.053 1.071 2.253 1.436 3.556.033.111-.059.081-.081 0a18.658 18.658 0 0 0-1.428-3.445 28.184 28.184 0 0 0-2.001-2.947c-.051-.049-.033-.154.019-.086Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M175.839 146.651c.343.594.639 1.259.882 1.979.321.813.661 1.621.934 2.465.044.13-.045.13-.082.037-.262-.727-.531-1.442-.804-2.157a13.477 13.477 0 0 0-.952-2.262c-.034-.062-.019-.136.022-.062Zm-1.394 1.13c.41.616.841 1.146 1.258 1.719.417.574.886 1.344 1.344 1.991.044.062.026.185-.033.105-.44-.579-.831-1.233-1.259-1.849-.428-.616-.897-1.233-1.329-1.886-.025-.05-.014-.13.019-.08Zm-85.807 10.68a4.482 4.482 0 0 0-.709 1.073 5.005 5.005 0 0 0-.299.709 5.65 5.65 0 0 1-.265.813c-.052.105 0 .241.066.136.435-.539.775-1.263.986-2.096 0-.074-.04-.055-.056 0a5.798 5.798 0 0 1-.738 1.584 8.71 8.71 0 0 1 .203-.616c.206-.574.483-1.068.812-1.449.044-.074.055-.209 0-.154Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M88.849 158.049c-.166.703-.39 1.365-.664 1.966-.293.783-.69 1.439-1.163 1.918-.037.03-.074.215 0 .172.474-.384.874-.984 1.152-1.732a10.13 10.13 0 0 0 .782-2.336c0-.136-.088-.074-.107.012Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M88.955 157.008a19.94 19.94 0 0 0-1.447 2.916c-.196.548-.37 1.097-.583 1.639a20.054 20.054 0 0 0-.48 1.776c-.026.092.048.061.066 0 .181-.506.277-1.079.469-1.572.192-.493.395-1.091.583-1.64a21.47 21.47 0 0 1 1.447-3.082c.052-.056 0-.123-.055-.037Zm.543.364c-.15.37-.273.765-.41 1.147a11.68 11.68 0 0 1-.294.746c-.048.117-.082.32-.16.394-.077.074-.077.179 0 .173.163 0 .237-.432.31-.617.226-.579.403-1.232.632-1.781.026-.099-.044-.142-.078-.062Zm24.699-21.754c-.03.136-.067.271-.093.413-.029.125-.04.261-.029.395 0 .055.048 0 .062 0a.76.76 0 0 0 .048-.309c.018-.172.045-.341.082-.505.018-.111-.059-.056-.07.006Zm.546.352c.133-.41.215-.86.241-1.324a5.683 5.683 0 0 0-.086-1.376c0-.061-.078.037-.07.086.195 1.289-.148 2.269-.406 3.428v.08l-.044.142c-.037.117.044.123.073.03.107-.332.203-.678.318-1.004.022-.074 0-.087-.026-.062Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M89.197 156.157a4.994 4.994 0 0 0-.834 1.159c-.275.485-.532 1-.767 1.541a16.837 16.837 0 0 0-.62 1.781c-.212.599-.388 1.23-.525 1.887-.018.092.048.049.06 0a28.016 28.016 0 0 1 1.037-3.298c.22-.535.46-1.047.716-1.535.26-.566.58-1.047.944-1.418.034-.037.045-.16-.01-.117Zm-1.01 4.536c-.454.715-.83 1.572-1.302 2.263-.048.067-.03.203.033.117.49-.661.934-1.414 1.321-2.244.037-.111.007-.222-.052-.136Zm.352-.407c-.085.216-.17.419-.25.617-.023.061 0 .092.04.055s.077-.222.133-.32a2.83 2.83 0 0 0 .136-.346c.033-.08-.033-.08-.059-.006Zm1.357-4.611a9.286 9.286 0 0 1-.273 1.621c-.114.475-.177 1.005-.31 1.461-.236.795-.646 1.473-.808 2.324-.019.105.055.074.074 0 .262-.906.738-1.652.93-2.608.192-.955.48-1.892.472-2.884 0-.074-.081.03-.085.086Zm-.472.526c-.061.155-.13.301-.206.437-.034.062 0 .154.04.086a2.76 2.76 0 0 0 .23-.499c.032-.092-.038-.098-.064-.024Zm16.142-.358a13.158 13.158 0 0 1-.739 3.495c.219-.836.357-1.724.41-2.632.026-.813-.369-.302-.601-.037-.36.472-.648 1.078-.842 1.769a7.339 7.339 0 0 0-.424 2.546c0 .105.096 0 .099-.074.054-1.383.396-2.692.967-3.698.167-.284.363-.514.58-.678.155-.117.07.906.059 1.023a14.93 14.93 0 0 1-.336 1.929c0 .05 0 .062.026.05-.07.172-.144.351-.222.517-.22.485-.416.998-.587 1.535-.203.617-.494 1.159-.679 1.788 0 .049.019.049.03 0 .236-.616.539-1.122.76-1.751.231-.655.485-1.287.76-1.892.481-1.158.756-2.519.794-3.927.011-.086-.055-.012-.055.037Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M104.416 156.454c-.123.286-.238.582-.343.887a9.058 9.058 0 0 0-.83 3.366c0 .086.059 0 .062-.037.1-.821.269-1.613.502-2.355a9 9 0 0 1 .34-.881c.122-.29.192-.617.321-.913.033-.08-.011-.141-.052-.067Zm-.566 4.579c-.056.111-.115.235-.174.346-.059.11 0 .123.033.067.033-.055.07-.129.104-.197a1.6 1.6 0 0 0 .088-.191c.019-.074-.033-.062-.051-.025Zm-.596.02c-.04.376-.092.752-.147 1.122a3.169 3.169 0 0 0-.067.776c0 .074.063 0 .07-.043.099-.62.167-1.253.203-1.892.008-.074-.055-.013-.059.037Zm21.037 3.974c.022-.03.04-.08 0-.098-.222-.204-.277.45-.31.684-.059.413-.107.832-.155 1.233-.019.154-.104.549 0 .616a.363.363 0 0 0 .299 0c.147-.092.195-.265.265-.499.09-.308.128-.65.111-.991a2.777 2.777 0 0 0-.21-.945Zm-.203 1.505c0-.124.026-.247.04-.364.014-.105.031-.208.052-.308.041-.191.026.271.026.32a3.594 3.594 0 0 1-.092.549l-.023.117c-.04.185-.07 0-.073-.093a.094.094 0 0 0 .052-.036.194.194 0 0 0 .036-.075c.019-.08.004-.11-.018-.11Zm-.122.782c-.041 0-.048-.111-.041-.259l.022.037c.207.272.314-.567.34-.758.026-.191.078-.98-.122-.672 0-.049.033-.098.052-.148.018-.049-.044-.111-.074-.03a2.429 2.429 0 0 0-.074.203c.018-.217.06-.427.126-.616.243.69.38 2.095-.229 2.243Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M124.435 164.799c0-.062-.073.043-.066.099.13.553.194 1.144.188 1.738-.03.258-.103.497-.209.692-.106.194-.241.337-.392.411-.03 0-.085.124-.041.142.17.05.266-.185.421-.296.116-.118.206-.298.254-.511.226-.734.015-1.572-.155-2.275Zm-.418.167c0-.093-.07-.031-.078 0a25.643 25.643 0 0 0-.262 1.8c-.029.363-.111.838.144.986.037 0 .1-.105.063-.154-.203-.271-.111-.857-.067-1.233.059-.45.137-.918.2-1.399Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M124.469 164.361c-.033-.074-.114.062-.089.13.135.313.231.667.285 1.041.059.45.029.937.085 1.394 0 .08.066 0 .07-.056a5.596 5.596 0 0 0-.025-1.313 4.66 4.66 0 0 0-.326-1.196Zm-.232-1.115c-.114.357-.188.752-.306 1.109a8.033 8.033 0 0 0-.34 1.344c-.066.481-.099.974-.099 1.467 0 .327-.07.765.055 1.048.026.062.081-.037.074-.092a6.825 6.825 0 0 1 0-1.196c.007-.48.045-.958.114-1.424.082-.431.193-.845.332-1.233.096-.314.155-.659.248-.968.04-.148-.045-.154-.078-.055Zm.381.893a1.24 1.24 0 0 1-.047-.284c0-.104-.019-.209-.022-.32-.004-.111-.081 0-.081.086s.019.234.022.352c-.002.05.004.1.017.144a.272.272 0 0 0 .06.108c.029.025.062-.043.051-.086Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M124.809 163.757c0-.043-.055 0-.052.062.114.807.155 1.638.122 2.465a8.05 8.05 0 0 1-.162 1.375c-.093.432-.299.74-.369 1.171-.019.087.044.056.062 0 .158-.383.303-.78.436-1.189.106-.456.16-.941.159-1.43a11.88 11.88 0 0 0-.196-2.454Zm-.565 4.471c-.044.241-.07.494-.111.74-.022.13-.048.259-.066.388 0 .037-.052.148-.033.179.018.031-.067.056-.067.086v.074c0 .031.041 0 .059 0 .06-.098.1-.225.115-.363.051-.37.092-.746.155-1.11.033-.086-.041-.043-.052.006Zm-.307.135c-.028.373-.068.744-.122 1.109-.022.111.059.056.077 0 .074-.37.119-.756.133-1.146.011-.099-.081-.031-.088.037Zm.347-6.037c-.104.314-.181.616-.288.949-.11.263-.208.539-.292.826a15.868 15.868 0 0 0-.339 1.948 17.285 17.285 0 0 0-.078 1.96c.012.329.036.656.07.98-.001.255.015.51.048.759 0 .055.056 0 .056-.062-.019-.549-.026-1.085-.052-1.634-.021-.635.002-1.272.07-1.898a16.27 16.27 0 0 1 .314-1.917c.083-.329.183-.644.299-.943.107-.308.173-.617.265-.956.03-.098-.044-.098-.073-.012Zm-.613 6.728c0-.056-.055 0-.055.055a3.222 3.222 0 0 0 0 .278c0 .055.048 0 .048-.037.006-.099.008-.197.007-.296Zm28.396-32.228a.18.18 0 0 1-.057.101c-.026.021-.056.025-.083.01a.14.14 0 0 0 .053-.059.278.278 0 0 0 .028-.095c.07-.339-.236-.943-.332-1.183-.096-.241-.292-.765-.51-.777-.012.003-.024.013-.033.029a.126.126 0 0 0-.015.057c-.011.191.001.385.037.567a.4.4 0 0 0 0-.049 1.448 1.448 0 0 1 0-.703s0-.061-.018-.061h-.041c-.018 0-.052.08-.022.098.03.019-.018.05-.037.13a1.135 1.135 0 0 0 0 .419 4.6 4.6 0 0 0 .402 1.27c.144.271.713 1.054.757.215-.033-.08-.103-.006-.129.031Zm-.635-1.035.118.283c.037.081.079.156.126.222l-.019.043-.055-.166a5.264 5.264 0 0 1-.159-.382h-.011Zm.369.758a.06.06 0 0 0 .035-.013.115.115 0 0 0 .028-.036c.055.221 0 .265-.07.123a.542.542 0 0 0 .029-.074h-.022Zm-.214-.993a5.6 5.6 0 0 1 .155.413l-.044-.055a4.24 4.24 0 0 1-.251-.58c-.033-.086-.115.031-.118.118l-.056-.154a.018.018 0 0 0-.022 0 1.985 1.985 0 0 1-.044-.321c.155.037.299.413.38.579Zm.309-.228a3.446 3.446 0 0 0-.502-.9c-.044-.061-.129.117-.085.179.354.52.631 1.17.809 1.899.029.104.129-.068.118-.148a5.122 5.122 0 0 0-.34-1.03Zm.572.715a3.204 3.204 0 0 0-.254-.734c-.03-.067-.1.056-.078.111.094.238.179.485.255.74.022.08.088-.055.077-.117Zm-6.7 22.936a2.023 2.023 0 0 0-.166-.413c-.067-.123-.081-.277-.163-.376-.081-.099-.085.062-.081.117a.321.321 0 0 0 0 .062h.03c.077.18.146.369.206.567.086.237.146.498.177.77a3.026 3.026 0 0 1-.173-.523 8.404 8.404 0 0 0-.292-.783c-.025-.08-.107.061-.084.123.088.271.184.542.28.801.071.279.168.537.288.765.041.055.096-.074.1-.13a3.04 3.04 0 0 0-.122-.98Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M146.011 160.72c-.417-.66-.882-1.85-.801-2.867 0-.154-.111 0-.122.068a4.277 4.277 0 0 0 .192 1.59c.148.475.332 1.233.664 1.369.041.025.1-.105.067-.16Zm.152-.729c-.167-.989-.482-1.891-.916-2.619-.04-.068-.132.11-.092.184.216.415.412.856.587 1.32.159.357.177.881.336 1.232.044.105.107-.049.085-.117Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M145.822 160.872c-.282-.413-.491-.945-.606-1.541a7.501 7.501 0 0 1-.343-2.102c0-.117-.081 0-.085.049-.017.717.074 1.43.266 2.072.159.567.303 1.46.694 1.695.044.024.114-.13.074-.173Zm.779-.167a29.111 29.111 0 0 0-.439-1.923 21.014 21.014 0 0 0-1.476-3.452c-.034-.074-.122.074-.093.142a31.17 31.17 0 0 1 1.322 3.156c.155.562.29 1.141.402 1.732.026.117.055.228.081.345a.734.734 0 0 0-.077-.142c-.037-.043-.104.093-.067.142.065.1.113.228.137.37.029.129.026.271.055.4.03.13.063-.043.067-.067a1.557 1.557 0 0 0 0-.216c.07.289.123.588.158.894 0 .055.045 0 .048-.037a5.44 5.44 0 0 0-.118-1.344Zm-.386.624c-.041-.13-.089-.272-.122-.407-.033-.136-.051.031-.051.055a.287.287 0 0 0 .029.124c.029.087.05.18.063.277.038.184.091.359.158.518.023.043.063 0 .06-.074a2.174 2.174 0 0 0-.137-.493Zm-10.346-21.143a29.555 29.555 0 0 1-.498-3.908c0-.074-.07 0-.07.074.011.769.064 1.534.158 2.287.028.58.146 1.137.344 1.615.026.062.074-.031.066-.068Zm0-2.237a.686.686 0 0 0 0-.111c-.034-.197-.048-.401-.074-.617 0-.086-.07 0-.093.05a5.862 5.862 0 0 1-.033-.419c0-.118-.103 0-.103.104.003.304.022.607.055.906.003.232.044.458.118.654.034.062.082-.08.082-.123a1.965 1.965 0 0 0-.03-.29c0 .074.078-.08.078-.154Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M135.666 136.174c-.019 0-.052.049-.037.08.121.253.099.616.169.906.037.142.137.586.078.734v.086c.288-.019-.085-1.72-.21-1.806Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M136.013 136.567c-.022-.074-.103.055-.085.129.052.251.082.512.089.777 0 .104.092 0 .096-.074a3.248 3.248 0 0 0-.1-.832Zm.112 4.92a10.886 10.886 0 0 1-.668-2.324 11.755 11.755 0 0 1-.236-1.646 7.273 7.273 0 0 1-.034-1.788c.026-.123-.066-.067-.081 0a6.34 6.34 0 0 0-.04 1.35c.019.652.088 1.296.206 1.917.104.524.247 1.03.369 1.541.089.339.214.913.428 1.073.034.037.082-.08.056-.123Zm-.236-2.356c-.018-.142-.026-.283-.04-.425-.015-.142-.085 0-.078.08 0 .16.026.321.044.481a.793.793 0 0 0 .096.376c.022 0 .059-.043.056-.08-.015-.148-.059-.308-.078-.432Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><path d=\"M135.98 135.673c-.018-.08-.095.056-.084.123a26.65 26.65 0 0 1 .443 3.082c.04.45.022.9.055 1.35.033.45-.059.851-.022 1.289 0 .092.077 0 .081-.068.162-1.961-.002-3.959-.473-5.776Z\" fill=\"#815716\" style=\"mix-blend-mode:multiply\" opacity=\".4\"/><g style=\"mix-blend-mode:multiply\" opacity=\".3\" fill=\"#766C5C\"><path d=\"M73.206 132.968c-.738 1.06-1.535 1.997-2.295 3.008a55.514 55.514 0 0 1-2.392 2.928 107.05 107.05 0 0 1-2.42 2.688 93.021 93.021 0 0 1-2.584 2.65c-.879.876-1.687 1.702-2.536 2.54-.849.838-1.672 1.812-2.499 2.755a87.786 87.786 0 0 1-2.472 2.694c-.838.882-1.694 1.893-2.536 2.86-.49.568-1.019 1.036-1.52 1.566-.502.53-1.012 1.091-1.543 1.658-1.011 1.073-1.993 2.219-2.979 3.366-.985 1.146-1.9 2.231-2.864 3.316-.468.537-.967 1.005-1.439 1.541-.45.534-.915 1.028-1.395 1.48-.022 0-.03.105 0 .074a30.257 30.257 0 0 0 2.35-2.466c.813-.863 1.58-1.849 2.374-2.725a489.58 489.58 0 0 1 4.982-5.578c.838-.912 1.706-1.745 2.529-2.694a85.216 85.216 0 0 1 2.543-2.811c1.675-1.775 3.277-3.741 5.004-5.381a133.022 133.022 0 0 0 6.156-6.269c.93-1.011 1.875-2.096 2.742-3.261.462-.616.916-1.233 1.373-1.849.458-.617.986-1.233 1.447-1.948.048-.099.03-.222-.026-.142Zm-15.18 17.789c-.263.314-.554.549-.812.875-.318.401-.646.783-.967 1.178-.646.789-1.325 1.504-1.993 2.243-1.347 1.474-2.69 2.984-4.06 4.408-.628.653-1.174 1.491-1.78 2.2-.313.364-.634.709-.944 1.085-.306.409-.626.786-.96 1.128-.671.648-1.265 1.467-1.904 2.189-.639.721-1.31 1.541-1.982 2.262 0 0-.022.086 0 .061.653-.616 1.259-1.405 1.886-2.095.628-.691 1.24-1.504 1.904-2.158.665-.653 1.285-1.455 1.942-2.157.306-.333.583-.734.882-1.097.299-.364.624-.703.923-1.092.645-.832 1.372-1.541 2.059-2.28a179.32 179.32 0 0 0 2.041-2.226c.675-.752 1.3-1.405 1.915-2.188.3-.376.606-.733.897-1.122.292-.388.646-.739.96-1.14.03-.025.03-.117-.008-.074Zm-8.676 7.823c-.867.943-1.738 1.849-2.583 2.848-.432.493-.864.992-1.299 1.473-.436.481-.952.925-1.425 1.387-.384.388-.754.816-1.107 1.282a16.81 16.81 0 0 1-1.432 1.535c-.454.45-.882.962-1.332 1.43-.203.21-.417.395-.62.616-.203.222-.406.549-.62.808 0 0-.022.092 0 .062.372-.461.758-.887 1.159-1.276.49-.438.944-.987 1.424-1.449.48-.462.867-.832 1.277-1.319.41-.487.808-1.042 1.248-1.48.439-.437.886-.838 1.325-1.276.439-.437.937-1.072 1.398-1.608.853-.999 1.724-1.961 2.584-2.941.04-.024.052-.141.004-.092Zm-4.063 6.103c-.314.504-.676.92-1.07 1.233a9.96 9.96 0 0 0-1.044 1.232c-.372.516-.762.995-1.167 1.437-.349.395-.68.834-.989 1.313-.022.03-.022.141.019.086.369-.444.694-.912 1.077-1.307.388-.419.758-.882 1.108-1.387a11.57 11.57 0 0 1 1.188-1.405c.34-.302.65-.693.915-1.159.026-.049-.007-.099-.037-.043Zm6.9-6.214c-.767 1.005-1.564 1.924-2.354 2.885-.79.962-1.506 1.905-2.277 2.817a138.446 138.446 0 0 0-4.551 5.727c-.037.049-.022.154.03.092 1.52-1.96 3.064-3.867 4.631-5.72.738-.888 1.477-1.812 2.215-2.743.738-.931 1.576-1.929 2.336-2.953.044-.061.026-.172-.03-.105Zm6.789-4.919c-1.108 1.19-2.215 2.312-3.296 3.501-1.155 1.27-2.37 2.386-3.517 3.699-.554.616-1.045 1.38-1.587 2.034a38.83 38.83 0 0 0-1.64 2.127 40.3 40.3 0 0 0-1.593 2.36c-.255.42-.491.882-.757 1.276a6.02 6.02 0 0 1-.782 1.135c-.03 0-.052.172 0 .135.17-.169.325-.377.46-.616.27-.401.529-.814.783-1.233.5-.836 1.024-1.628 1.573-2.373.586-.795 1.166-1.603 1.775-2.355s1.107-1.467 1.69-2.157c1.133-1.344 2.377-2.411 3.514-3.699 1.136-1.288 2.273-2.416 3.384-3.698.03-.062.04-.185-.007-.136Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M65.36 147.163a129.956 129.956 0 0 1-9.19 10.584c-1.55 1.603-3.141 3.082-4.595 4.931-1.455 1.85-2.695 4.056-4.127 5.918-.018 0-.018.092 0 .055 1.436-1.732 2.661-3.908 4.06-5.708 1.506-1.917 3.163-3.396 4.765-5.06a114.78 114.78 0 0 0 9.112-10.615c.037-.068.022-.167-.026-.105Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M67.578 145.376c-.804 1.054-1.657 1.991-2.495 2.971-.837.98-1.56 1.948-2.37 2.854-.807.906-1.586 1.911-2.402 2.811-.815.9-1.546 1.812-2.318 2.712-.77.9-1.59 1.64-2.362 2.521-.37.395-.753.753-1.147 1.073-.447.388-.838.918-1.274 1.331-.435.413-.738.826-1.107 1.233-.369.407-.856.913-1.266 1.406-.33.406-.646.84-.948 1.3-.344.518-.639 1.116-.964 1.665-.483.813-.922 1.72-1.42 2.502-.038.056-.023.167.029.093.321-.481.598-1.048.9-1.56.303-.511.617-1.054.92-1.59.682-1.187 1.446-2.234 2.277-3.119.786-.863 1.565-1.757 2.362-2.595.369-.407.797-.715 1.192-1.091.395-.376.797-.925 1.203-1.363.406-.437.738-.709 1.107-1.115.37-.407.838-.913 1.248-1.387.786-.906 1.56-1.85 2.35-2.756 1.606-1.849 3.156-3.834 4.765-5.683.59-.678 1.178-1.362 1.731-2.127.037-.043.026-.129-.01-.086Zm9.242-12.383c-.76.961-1.477 2.046-2.244 2.971-.768.924-1.491 1.812-2.23 2.743-1.476 1.849-2.952 3.698-4.321 5.776-.019 0-.019.098 0 .068.324-.389.605-.876.922-1.289.37-.487.738-.986 1.14-1.454.739-.907 1.477-1.85 2.215-2.799a129.46 129.46 0 0 1 2.384-2.953c.801-.967 1.432-2.003 2.16-2.971.04-.055.025-.154-.026-.092Zm-1.175.097a31.98 31.98 0 0 1-2.215 2.867c-.39.493-.793.943-1.166 1.467a26.202 26.202 0 0 1-1.248 1.602 59.473 59.473 0 0 0-4.683 5.943v.037c1.528-2.189 3.24-4.038 4.88-5.992.737-.881 1.439-1.849 2.166-2.774.442-.493.812-.998 1.203-1.529.391-.53.738-.949 1.107-1.516.03-.068.011-.197-.044-.105Zm-6.135 8.631c-.49.616-.985 1.233-1.457 1.892-.472.66-1.048 1.233-1.528 1.948-.044.062-.026.191.033.111.469-.616.97-1.196 1.447-1.849.476-.654 1.011-1.387 1.524-2.065.026 0 .015-.074-.018-.037Zm-5.32 3.753a6.424 6.424 0 0 1-.857.987c-.314.333-.59.764-.912 1.097-.65.672-1.277 1.43-1.922 2.12-.646.691-1.215 1.233-1.776 1.93-.56.696-1.14 1.331-1.712 2.028v.043c.572-.653 1.17-1.233 1.73-1.911.562-.678 1.248-1.344 1.868-2.009.62-.666 1.266-1.443 1.912-2.139.317-.339.59-.777.904-1.122a6.17 6.17 0 0 0 .801-.943c.019-.05 0-.136-.037-.081Zm9.902-11.829c-.21.346-.442.65-.694.906-.313.389-.635.795-.956 1.178-.56.671-1.133 1.319-1.679 2.021-1.196 1.523-2.425 2.978-3.654 4.439-.026.03-.037.148 0 .098 1.21-1.393 2.421-2.792 3.591-4.278.635-.813 1.292-1.59 1.938-2.379.266-.321.52-.653.782-.986.26-.262.497-.577.709-.937.03-.074-.008-.124-.037-.062Zm-6.352 7.132c-1.108 1.529-2.385 2.687-3.518 4.161-1.133 1.473-2.388 2.687-3.569 4.056-.033.043-.048.185 0 .123 1.174-1.294 2.377-2.527 3.503-3.939 1.125-1.412 2.469-2.737 3.594-4.315.037-.061.026-.135-.01-.086Zm11.227-7.587a43.31 43.31 0 0 1-1.793 2.712c-.631.817-1.22 1.72-1.76 2.7-.038.074 0 .179.043.099 1.122-1.911 2.425-3.489 3.532-5.394.056-.074.037-.216-.022-.117Zm-.438-.408c-.37.456-.739.931-1.078 1.418-.37.464-.711.984-1.022 1.553-.03.062 0 .148.037.081a31.453 31.453 0 0 1 2.088-2.965c.041-.05.023-.148-.025-.087Zm2.18.365c-.635 1.011-1.359 1.898-2.02 2.866-.66.968-1.346 2.176-2.051 3.206-.329.48-.683.9-1.015 1.368-.332.468-.676 1.054-1.026 1.56-.35.505-.775 1.06-1.144 1.547-.37.487-.738 1.048-1.108 1.491-1.502 1.708-2.886 3.754-4.284 5.69-1.4 1.936-2.953 3.822-4.263 6.035-.019 0 0 .105 0 .055 1.306-2.126 2.786-3.914 4.192-5.837 1.407-1.923 2.898-4.056 4.451-5.807.37-.407.661-.962 1.012-1.387.35-.425.69-.881 1.026-1.35.716-1.005 1.398-2.065 2.126-3.082.727-1.017 1.354-2.17 2.044-3.211.69-1.042 1.436-1.979 2.093-3.083.037-.024.022-.117-.033-.061Zm-5.882 9.578c-1.147 1.634-2.34 3.187-3.487 4.821-1.148 1.633-2.26 3.248-3.392 4.863a364.427 364.427 0 0 0-3.322 4.833 226.742 226.742 0 0 0-3.351 5.314c-.026.043 0 .129.022.074 1.107-1.696 2.144-3.52 3.322-5.08 1.177-1.559 2.192-3.242 3.321-4.826 1.13-1.584 2.255-3.261 3.385-4.882 1.13-1.621 2.384-3.329 3.554-5.036.004-.05-.011-.136-.052-.081Zm-7.946 6.294c-2.517 3.323-5.211 6.257-7.75 9.499-1.285 1.628-2.584 3.236-3.839 4.932a49.627 49.627 0 0 0-1.93 2.595c-.624.9-1.248 1.849-1.92 2.65 0 0-.025.099 0 .062a27.96 27.96 0 0 0 1.772-2.324 92.788 92.788 0 0 1 1.92-2.57c1.295-1.708 2.62-3.366 3.934-5.037 2.576-3.304 5.288-6.349 7.839-9.708.033-.068.018-.16-.026-.099Zm-3.292 5.135a150.72 150.72 0 0 0-2.698 3.747c-.886 1.283-1.845 2.725-2.816 4.007a596.258 596.258 0 0 1-2.827 3.699c-.428.548-.882 1.048-1.277 1.664a89.442 89.442 0 0 0-1.266 2.016c-.018 0 0 .08 0 .043.41-.586.82-1.184 1.214-1.813.403-.584.826-1.129 1.266-1.633a614.41 614.41 0 0 0 2.827-3.699c.938-1.232 1.883-2.662 2.805-4.025.923-1.362 1.846-2.65 2.78-3.939.044-.043.029-.117-.008-.067Zm2.854-2.8c-1.162 1.467-2.214 3.138-3.321 4.704-1.108 1.565-2.152 3.236-3.248 4.814-1.096 1.578-2.237 2.952-3.322 4.475a72.016 72.016 0 0 1-1.775 2.355c-.598.77-1.185 1.646-1.816 2.373-.03 0-.037.148 0 .099.565-.605 1.033-1.332 1.546-1.948.61-.765 1.23-1.511 1.813-2.324 1.107-1.566 2.31-2.996 3.42-4.58 2.27-3.236 4.378-6.781 6.722-9.863.026-.08.014-.154-.019-.105Zm3.887-5.238c-.579.765-1.055 1.732-1.649 2.466-.033.037-.03.166.018.111.61-.727 1.074-1.732 1.654-2.515.03-.031.018-.111-.022-.062Zm7.443-9.942c-.897 1.288-1.739 2.681-2.65 3.957a74.694 74.694 0 0 1-1.477 1.985c-.243.315-.494.617-.738.943-.243.327-.487.777-.76 1.129 0 0-.022.08 0 .055.221-.242.43-.512.627-.808.23-.32.488-.579.739-.887.505-.654 1.014-1.288 1.498-1.985.484-.697.926-1.276 1.347-1.985a62.18 62.18 0 0 1 1.443-2.318c.015-.055.004-.129-.03-.086Zm-5.097 6.293c-.51.83-1.07 1.567-1.672 2.2-.65.666-1.3 1.338-1.923 2.065-.624.728-1.192 1.56-1.816 2.281-.624.721-1.148 1.516-1.709 2.293v.056c.61-.74 1.185-1.554 1.809-2.256.623-.703 1.192-1.548 1.808-2.269.616-.721 1.292-1.418 1.938-2.077a14.158 14.158 0 0 0 1.587-2.219c.018-.05.018-.136-.022-.074Zm-6.179 6.25c-.332.55-.693 1.051-1.078 1.497a18.967 18.967 0 0 0-1.162 1.609c0 .031-.022.117 0 .08.44-.523.83-1.146 1.266-1.67.364-.427.698-.922.996-1.473.037-.05.004-.093-.022-.043Zm-.613 2.99c-.45.351-.764 1.091-1.177 1.541 0 0-.041.117 0 .086.45-.357.738-1.165 1.18-1.535.019-.018.034-.123-.003-.092Zm-3.182 6.774c-.513.814-1.107 1.517-1.627 2.287-.602.863-1.214 1.702-1.823 2.552-.61.851-1.174 1.708-1.757 2.565a29.736 29.736 0 0 0-1.635 2.552c-.026.049 0 .104.026.061 1.151-1.646 2.262-3.365 3.421-4.999.576-.814 1.159-1.615 1.727-2.466.569-.85 1.163-1.602 1.69-2.465.026-.056.026-.154-.022-.087Zm-.096 1.318c-1.225 1.664-2.407 3.409-3.643 5.042-.583.765-1.107 1.652-1.668 2.466-.284.401-.55.832-.823 1.233a5.19 5.19 0 0 1-.908 1.202c-.04.031-.081.216 0 .172.225-.209.434-.466.62-.764.321-.413.613-.888.912-1.344a75.996 75.996 0 0 1 1.756-2.57c.595-.832 1.285-1.726 1.901-2.632.617-.906 1.248-1.85 1.89-2.725.022-.043.007-.136-.037-.08Zm.148 1.061a148.494 148.494 0 0 1-2.835 4.642c-.461.727-.956 1.399-1.44 2.089-.483.691-.974 1.578-1.476 2.355-.036.062-.022.173.03.099.48-.703.926-1.455 1.395-2.17.469-.715 1.03-1.449 1.517-2.225a99.546 99.546 0 0 0 2.82-4.722c.062-.049.036-.099-.011-.068Zm11.697-14.823c-1.313 1.88-2.557 3.895-3.797 5.899-.631 1.011-1.296 1.954-1.912 3.002-.616 1.048-1.285 2.028-1.9 3.082-1.237 2.102-2.688 3.809-4.031 5.708a76.22 76.22 0 0 0-2.074 3.082c-.624.992-1.156 2.12-1.75 3.168-.033.056 0 .148.037.081.598-1.011 1.14-2.109 1.764-3.083a81.504 81.504 0 0 1 2.078-3.082c1.333-1.911 2.802-3.587 4.027-5.702.59-1.017 1.24-1.929 1.845-2.952.606-1.023 1.262-2.01 1.894-3.021 1.28-2.052 2.531-4.154 3.856-6.127.004-.055-.003-.123-.037-.055Zm2.459.997a352.552 352.552 0 0 1-3.348 5.369c-1.133 1.788-2.244 3.742-3.381 5.585-1.137 1.843-2.185 3.766-3.355 5.548-.587.881-1.188 1.732-1.775 2.607-.587.875-1.107 1.806-1.687 2.614-.037.055-.022.16.03.092.565-.746 1.066-1.627 1.605-2.429.62-.918 1.259-1.8 1.879-2.718 1.17-1.744 2.214-3.699 3.358-5.498 1.144-1.8 2.24-3.748 3.385-5.585 1.144-1.837 2.266-3.563 3.321-5.449.067-.105.023-.228-.033-.136Zm10.258-14c-1.063 1.757-2.247 3.317-3.399 4.895a58.603 58.603 0 0 0-3.473 5.283c-1.07 1.849-2.137 3.698-3.24 5.498-1.104 1.8-2.233 3.489-3.233 5.406 0 .043 0 .074.026 0 1.044-1.936 2.214-3.662 3.347-5.449 1.133-1.788 2.174-3.594 3.24-5.425a61.478 61.478 0 0 1 3.396-5.165 63.272 63.272 0 0 0 3.38-4.969c.027-.018.008-.16-.044-.074Zm-10.126 16.701c-1.037 1.683-2.137 3.261-3.203 4.894-1.067 1.634-1.971 3.298-2.924 4.968-.472.845-.922 1.72-1.398 2.565-.476.844-1.034 1.565-1.477 2.465-.442.9-.874 1.708-1.34 2.528a32.323 32.323 0 0 1-1.505 2.663c-.022 0 0 .092 0 .055a25.352 25.352 0 0 0 1.476-2.466 52.24 52.24 0 0 0 1.303-2.373c.469-.931 1.048-1.683 1.554-2.558.505-.875.87-1.646 1.343-2.447.993-1.763 1.979-3.538 3.041-5.19 1.063-1.652 2.156-3.261 3.174-4.999.011-.05 0-.148-.044-.105Zm-9.456 14.023c-.147-.166-.428.376-.524.505a31.835 31.835 0 0 0-1.136 1.726 29.918 29.918 0 0 0-2.067 3.471c-.03.068 0 .117.04.049a29.615 29.615 0 0 1 1.632-2.687c.564-.882 1.136-1.739 1.708-2.602.307-.456.067.235 0 .407-.066.173-.229.53-.34.789-.232.549-.486 1.06-.737 1.578-.51 1.023-1.031 2.03-1.565 3.021-.04.08 0 .141.048.067a69.176 69.176 0 0 0 1.742-3.328 37.13 37.13 0 0 0 .793-1.732c.192-.342.337-.751.425-1.196a.11.11 0 0 0-.003-.039.068.068 0 0 0-.016-.029Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M65.009 168.418c-.292.512-.572 1.048-.886 1.529-.037.056 0 .167.03.099a15.74 15.74 0 0 0 .893-1.554c.03-.055.003-.141-.037-.074Zm7.035-11.903c-1.155 1.812-2.177 3.896-3.42 5.548-.027.043 0 .117.021.068a21.726 21.726 0 0 0 1.68-2.534c.568-1.023 1.203-1.954 1.745-3.014.022-.037 0-.068-.026-.068Zm10.315-19.554c-3.234 4.198-6.212 8.846-9.227 13.488-1.506 2.336-2.99 4.728-4.536 7.002-1.547 2.275-3.078 4.42-4.628 6.602-.654.918-1.325 1.794-1.979 2.706-.653.912-1.218 1.849-1.845 2.725-.03.037 0 .117 0 .067.779-1.011 1.476-2.176 2.255-3.205a115.387 115.387 0 0 0 2.344-3.23c1.535-2.194 3.13-4.315 4.628-6.559 3.056-4.611 5.979-9.456 9.072-13.986a195.175 195.175 0 0 1 3.927-5.548c.051-.025.036-.123-.011-.062Zm-10.824 17.501c-.436.585-.882 1.14-1.292 1.781-.41.641-.849 1.412-1.295 2.121-.908 1.43-1.927 2.687-2.875 4.05-.949 1.362-1.923 2.613-2.88 3.963a48.42 48.42 0 0 0-2.612 3.816c-.033.055 0 .16.026.086.387-.621.797-1.203 1.225-1.744.45-.617.878-1.233 1.321-1.85.96-1.313 1.93-2.619 2.886-3.951.956-1.331 1.927-2.675 2.876-4.037.457-.654.87-1.406 1.295-2.121.424-.715.897-1.338 1.347-2.003.052-.074.019-.167-.022-.111Zm-5.255 8.728a270.677 270.677 0 0 1-1.871 3.119c-.628 1.036-1.137 2.115-1.735 3.132-.022.031 0 .098 0 .055.598-1.005 1.14-2.102 1.742-3.082.602-.98 1.27-2.065 1.875-3.144.04-.061.018-.123-.011-.08Zm19.723-30.297c-.281.506-.58.983-.894 1.43a34.936 34.936 0 0 1-1.03 1.548c-.737 1.054-1.424 2.157-2.136 3.236-.712 1.078-1.477 2.145-2.215 3.248-.738 1.104-1.32 2.269-2.022 3.329-.026.037 0 .111 0 .062.738-1.011 1.343-2.201 2.044-3.249.702-1.048 1.477-2.127 2.215-3.224.738-1.097 1.454-2.17 2.163-3.224.369-.511.697-1.023 1.026-1.572.323-.473.63-.977.919-1.51.04-.092-.011-.16-.07-.074Zm-2.536.043c-1.392 2.275-2.894 4.346-4.3 6.596-.343.555-.664 1.147-1 1.72-.336.573-.772 1.146-1.137 1.757-.738 1.233-1.517 2.465-2.262 3.698v.05c.738-1.135 1.502-2.257 2.214-3.452.336-.567.694-1.085 1.052-1.615.358-.531.738-1.233 1.107-1.85 1.414-2.342 2.953-4.444 4.362-6.817.026-.05.012-.167-.036-.087Zm.353.224c-.524.758-1.004 1.603-1.506 2.398-.033.049 0 .154.026.086.52-.77.996-1.621 1.516-2.385.015-.068 0-.167-.036-.099Zm96.417-.192c.739 1.06 1.54 1.997 2.3 3.008a57.158 57.158 0 0 0 2.388 2.928 99.603 99.603 0 0 0 2.421 2.688c.815.881 1.709 1.775 2.583 2.651.875.875 1.687 1.701 2.536 2.539.849.839 1.675 1.812 2.499 2.756.823.943 1.653 1.812 2.487 2.693.834.882 1.694 1.893 2.536 2.86.49.568 1.018 1.036 1.52 1.566s1.03 1.11 1.543 1.658c1.015 1.073 1.997 2.219 2.978 3.366a333.318 333.318 0 0 0 2.864 3.316c.473.537.967 1.005 1.44 1.541.449.533.915 1.027 1.395 1.48.026 0 .029.105 0 .074a30.294 30.294 0 0 1-2.355-2.466c-.808-.863-1.58-1.849-2.369-2.724a513.959 513.959 0 0 0-4.983-5.579c-.841-.912-1.705-1.745-2.532-2.694a88.491 88.491 0 0 0-2.539-2.811c-1.701-1.781-3.299-3.748-5.023-5.387a131.406 131.406 0 0 1-6.152-6.269 40.297 40.297 0 0 1-2.743-3.261c-.461-.616-.919-1.233-1.376-1.849-.458-.617-.982-1.233-1.443-1.948-.048-.093-.03-.216.025-.136Zm15.183 17.789c.262.314.55.548.808.875.318.401.646.783.967 1.178.65.789 1.325 1.504 1.997 2.243 1.344 1.474 2.687 2.984 4.06 4.408.624.653 1.174 1.491 1.775 2.2.314.364.635.709.945 1.085.305.407.624.784.956 1.128.668.647 1.262 1.467 1.901 2.189.638.721 1.31 1.541 1.982 2.262.018 0 .022.086 0 .061-.654-.616-1.263-1.405-1.886-2.095-.624-.691-1.24-1.504-1.905-2.158-.664-.653-1.262-1.467-1.912-2.157-.31-.333-.586-.734-.882-1.098-.295-.363-.623-.702-.922-1.091-.65-.832-1.373-1.541-2.06-2.28-.686-.74-1.376-1.474-2.059-2.219-.683-.746-1.299-1.406-1.912-2.189-.299-.376-.605-.733-.901-1.122-.295-.388-.645-.739-.955-1.14-.037-.031-.034-.123.003-.08Zm8.686 7.823c.867.943 1.738 1.849 2.583 2.848.432.493.86.992 1.296 1.473.435.481.952.925 1.424 1.387.385.39.754.818 1.108 1.282.458.559.936 1.072 1.432 1.535.45.45.882.962 1.328 1.43.207.21.421.394.62.616.2.222.41.549.624.808 0 0 .022.092 0 .062a12.94 12.94 0 0 0-1.188-1.27c-.487-.438-.941-.987-1.421-1.449-.48-.462-.868-.832-1.281-1.319-.413-.487-.804-1.042-1.247-1.479-.443-.438-.886-.839-1.322-1.276-.435-.438-.937-1.073-1.398-1.609-.857-.999-1.724-1.96-2.584-2.941-.022-.03-.029-.147.026-.098Zm4.057 6.103c.314.505.676.922 1.071 1.233.365.365.713.777 1.04 1.232.374.516.764.996 1.17 1.437.349.394.678.833.986 1.313.026.03.026.141 0 .086-.369-.444-.698-.912-1.078-1.307a12.49 12.49 0 0 1-1.107-1.387 12.397 12.397 0 0 0-1.188-1.405 4.467 4.467 0 0 1-.919-1.159c-.045-.049-.008-.099.025-.043Zm-6.906-6.214c.767 1.005 1.568 1.924 2.354 2.885.787.962 1.503 1.905 2.274 2.817a130.9 130.9 0 0 1 4.551 5.727c.04.049.022.154-.026.092a176.598 176.598 0 0 0-4.636-5.72 100.566 100.566 0 0 1-2.196-2.743c-.719-.931-1.587-1.917-2.351-2.953-.04-.061-.026-.172.03-.105Zm6.383 11.199a5.816 5.816 0 0 1-.778-1.134c-.27-.394-.502-.857-.761-1.276a43.963 43.963 0 0 0-1.59-2.361 33.817 33.817 0 0 0-1.639-2.126c-.561-.672-1.037-1.412-1.591-2.035-1.147-1.3-2.362-2.416-3.517-3.698-.406-.45-.823-.888-1.236-1.319-.786-1.036-1.657-1.849-2.48-2.817-.824-.968-1.61-2.059-2.425-3.082-.816-1.024-1.477-2.127-2.248-3.082-.413-.518-.841-.999-1.258-1.511a10.83 10.83 0 0 1-1.108-1.405c-.026-.043-.085.074-.059.117.305.515.644.971 1.012 1.356.42.475.823 1.017 1.232 1.529.779.98 1.477 2.133 2.244 3.131a90.075 90.075 0 0 0 2.432 3.008c.192.228.392.45.591.666l.018.037c.631.715 1.281 1.399 1.931 2.084l.07.086c.462.485.919.986 1.369 1.504 1.137 1.319 2.38 2.385 3.51 3.698.579.691 1.107 1.455 1.69 2.158.583.703 1.189 1.559 1.775 2.355a29.663 29.663 0 0 1 1.573 2.373c.254.431.516.844.786 1.233.134.241.288.448.457.616.052.068.034-.08 0-.105Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M188.089 147.163a128.457 128.457 0 0 0 9.19 10.584c1.55 1.603 3.141 3.082 4.591 4.931 1.451 1.85 2.694 4.056 4.13 5.918.019 0 0 .092 0 .055-1.436-1.732-2.657-3.908-4.06-5.708-1.502-1.917-3.163-3.396-4.764-5.06-3.16-3.241-6.203-6.786-9.117-10.615-.033-.068-.018-.167.03-.105Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M185.867 145.376c.805 1.054 1.657 1.991 2.495 2.971.838.98 1.561 1.948 2.373 2.854.812.906 1.584 1.911 2.399 2.811.816.9 1.547 1.812 2.322 2.712.775.9 1.587 1.628 2.358 2.522.371.394.756.752 1.152 1.072.446.388.834.919 1.269 1.332.436.413.739.826 1.108 1.232.369.407.856.913 1.266 1.406.328.404.644.839.944 1.301.344.517.643 1.115.967 1.664.48.814.923 1.72 1.418 2.502.036.056.022.167-.026.093-.321-.481-.598-1.048-.901-1.56a96.405 96.405 0 0 1-.923-1.59c-.68-1.188-1.443-2.235-2.273-3.119-.79-.863-1.569-1.757-2.366-2.595-.369-.407-.797-.715-1.188-1.091-.391-.376-.797-.913-1.2-1.381-.402-.468-.756-.709-1.107-1.116-.351-.407-.838-.912-1.247-1.387-.79-.906-1.565-1.849-2.351-2.755-1.606-1.849-3.16-3.834-4.769-5.683-.59-.678-1.177-1.363-1.727-2.127-.037-.025-.026-.111.007-.068Zm3.391.098a6.2 6.2 0 0 0 .852.987c.318.333.594.764.912 1.097.653.672 1.277 1.43 1.923 2.12.646.691 1.218 1.233 1.779 1.93.561.696 1.147 1.331 1.712 2.028v.043c-.576-.653-1.17-1.233-1.735-1.911-.564-.678-1.243-1.344-1.867-2.009-.624-.666-1.266-1.443-1.912-2.139-.317-.339-.587-.777-.9-1.122a6.062 6.062 0 0 1-.783-.943c-.04-.05-.026-.136.019-.081Zm-9.901-11.829c.207.347.439.651.69.906.321.395.635.795.959 1.178.561.671 1.13 1.319 1.676 2.021 1.196 1.523 2.428 2.978 3.654 4.439.029.03.037.148 0 .098-1.211-1.393-2.418-2.792-3.588-4.278-.638-.813-1.295-1.59-1.941-2.379-.262-.321-.52-.653-.782-.986a4.877 4.877 0 0 1-.709-.937c-.03-.074.007-.124.041-.062Zm6.351 7.132c1.107 1.529 2.388 2.687 3.517 4.161 1.129 1.473 2.392 2.687 3.569 4.056.037.043.048.185 0 .123-1.177-1.294-2.377-2.527-3.506-3.939-1.13-1.412-2.469-2.737-3.591-4.315-.045-.061-.022-.135.011-.086Zm-11.23-7.587c.58.949 1.178 1.849 1.798 2.712.63.818 1.219 1.721 1.76 2.7.037.074 0 .179-.044.099-1.126-1.905-2.421-3.489-3.547-5.394-.04-.074-.022-.216.033-.117Zm.437-.408c.369.456.738.931 1.081 1.418.367.465.708.985 1.019 1.553.029.062 0 .148-.037.081a30.228 30.228 0 0 0-2.089-2.965c-.037-.05-.022-.148.026-.087Zm-2.18.365c.638 1.011 1.358 1.898 2.022 2.866.665.968 1.347 2.176 2.052 3.206.325.48.683.9 1.012 1.368.328.468.679 1.054 1.029 1.56.351.505.761 1.06 1.159 1.547.399.487.716 1.048 1.107 1.491 1.506 1.708 2.89 3.754 4.285 5.69 1.395 1.936 2.953 3.822 4.263 6.035.022 0 0 .105-.018.055-1.303-2.126-2.783-3.914-4.193-5.837-1.41-1.923-2.893-4.056-4.429-5.807-.369-.407-.66-.962-1.015-1.387-.354-.425-.69-.881-1.022-1.35-.72-1.005-1.403-2.065-2.13-3.082-.727-1.017-1.35-2.17-2.044-3.211-.694-1.042-1.436-1.979-2.089-3.083-.059-.024-.041-.117.011-.061Zm5.882 9.578c1.152 1.634 2.34 3.187 3.492 4.821 1.151 1.633 2.258 3.248 3.391 4.863 1.133 1.615 2.215 3.2 3.322 4.833a194.918 194.918 0 0 1 3.362 5.314c.03.043.019.129 0 .074-1.107-1.696-2.144-3.52-3.321-5.08-1.178-1.559-2.193-3.242-3.304-4.826-1.11-1.584-2.251-3.261-3.38-4.882-1.13-1.621-2.388-3.329-3.558-5.036-.055-.05-.044-.136-.004-.081Zm7.95 6.294c2.514 3.323 5.212 6.257 7.751 9.499 1.281 1.628 2.583 3.236 3.835 4.932.646.856 1.295 1.713 1.919 2.619a33.612 33.612 0 0 0 1.919 2.651c.018 0 .026.099 0 .062a28.277 28.277 0 0 1-1.768-2.324 100.462 100.462 0 0 0-1.919-2.571c-1.299-1.707-2.62-3.365-3.934-5.036-2.584-3.304-5.285-6.349-7.836-9.727-.029-.074-.015-.166.033-.105Zm3.291 5.135a141.243 141.243 0 0 1 2.698 3.747c.882 1.283 1.845 2.725 2.816 4.007.97 1.282 1.882 2.466 2.831 3.699.424.548.882 1.048 1.273 1.664.391.616.856 1.331 1.27 2.016.018 0 0 .08 0 .043a36.891 36.891 0 0 1-1.215-1.813 17.588 17.588 0 0 0-1.269-1.633c-.953-1.233-1.886-2.466-2.824-3.699-.937-1.232-1.886-2.662-2.808-4.025a151.683 151.683 0 0 0-2.78-3.939c-.04-.043-.029-.117.008-.067Zm-2.852-2.8c1.159 1.468 2.215 3.138 3.322 4.704 1.107 1.565 2.148 3.236 3.248 4.814 1.1 1.578 2.214 2.953 3.322 4.475a72.07 72.07 0 0 0 1.778 2.355c.602.77 1.167 1.646 1.794 2.348.03 0 .041.148 0 .099-.539-.579-1.026-1.294-1.535-1.942-.609-.764-1.229-1.51-1.816-2.324-1.107-1.565-2.307-2.995-3.418-4.58-2.273-3.236-4.381-6.78-6.72-9.862-.019-.062-.008-.136.025-.087Zm-3.893-5.238c.583.765 1.059 1.732 1.65 2.466.033.037.029.166 0 .111-.606-.727-1.074-1.732-1.654-2.515-.04-.031-.04-.111.004-.062Zm-7.426-9.942c.901 1.288 1.742 2.681 2.65 3.957a99.35 99.35 0 0 0 1.477 1.985c.247.314.498.616.738.943.24.327.491.771.764 1.104 0 0 .022.08 0 .055a6.427 6.427 0 0 1-.628-.807c-.228-.321-.487-.58-.738-.888-.509-.654-1.015-1.288-1.502-1.985-.487-.697-.915-1.282-1.351-1.979-.435-.696-.948-1.572-1.443-2.317-.026-.037-.015-.111.033-.068Zm5.084 6.293a13.46 13.46 0 0 0 1.668 2.2c.654.666 1.3 1.338 1.927 2.065.627.728 1.192 1.56 1.812 2.281.62.721 1.148 1.516 1.709 2.293v.056c-.609-.74-1.185-1.554-1.809-2.256-.623-.703-1.192-1.548-1.812-2.269a42.354 42.354 0 0 0-1.937-2.077 13.86 13.86 0 0 1-1.587-2.219c-.022-.05-.011-.136.029-.074Zm6.178 6.25c.331.552.69 1.053 1.074 1.497a18.97 18.97 0 0 1 1.166 1.609c.019.031.023.117 0 .08-.435-.523-.83-1.146-1.266-1.67a8.669 8.669 0 0 1-.992-1.473c-.045-.05-.011-.093.018-.043Zm.615 2.99c.451.351.764 1.091 1.178 1.541.018 0 .037.117 0 .086-.45-.357-.738-1.165-1.178-1.535-.022-.018-.036-.123 0-.092Zm3.183 6.774c.513.814 1.089 1.517 1.624 2.287.601.863 1.214 1.702 1.823 2.552.609.851 1.174 1.708 1.757 2.565a30.005 30.005 0 0 1 1.639 2.552c.022.049 0 .104-.03.061-1.148-1.646-2.262-3.365-3.418-4.999-.575-.814-1.162-1.615-1.727-2.466-.565-.85-1.162-1.602-1.694-2.465-.029-.056-.018-.154.026-.087Zm.094 1.318c1.222 1.664 2.403 3.409 3.643 5.042.583.765 1.107 1.652 1.668 2.466.284.401.546.832.823 1.233.264.473.569.878.904 1.202.045.031.082.216 0 .172a3.611 3.611 0 0 1-.62-.764c-.324-.413-.616-.888-.911-1.344a76.214 76.214 0 0 0-1.761-2.57c-.594-.832-1.28-1.726-1.9-2.632-.62-.906-1.244-1.85-1.886-2.725-.023-.043-.008-.136.04-.08Zm5.573 10.147c-.487-.776-.952-1.627-1.476-2.354a41.739 41.739 0 0 1-1.436-2.09 173.146 173.146 0 0 1-2.403-3.902h-.022c-.136-.234-.273-.462-.406-.696-.029-.05-.055 0-.04.049l-.738-1.11c-.443-.616-.923-1.232-1.381-1.849-.022 0-.066.062-.044.093.421.616.856 1.177 1.273 1.787.419.656.859 1.273 1.318 1.849h.033a94.644 94.644 0 0 0 2.174 3.625c-.819-1.103-1.676-2.139-2.44-3.359-.026-.044-.077.067-.051.11a37.1 37.1 0 0 0 2.399 3.403c.402.543.771 1.147 1.162 1.714.391.567.831 1.134 1.251 1.695h.037c.251.401.502.795.764 1.177.048.031.063-.08.026-.142Zm-17.406-23.909c1.311 1.88 2.554 3.895 3.798 5.899.631 1.011 1.296 1.954 1.908 3.002.613 1.048 1.285 2.028 1.905 3.082 1.232 2.102 2.687 3.809 4.026 5.708a71.7 71.7 0 0 1 2.075 3.082c.627.992 1.158 2.12 1.749 3.168.037.056 0 .148-.037.081-.598-1.011-1.14-2.109-1.76-3.083a82.723 82.723 0 0 0-2.078-3.082c-1.336-1.911-2.802-3.587-4.031-5.702-.586-1.017-1.236-1.929-1.823-2.952s-1.266-2.01-1.897-3.021c-1.277-2.052-2.528-4.154-3.853-6.127-.037-.055-.026-.123.018-.055Zm6.854 17.721c.144-.166.424.376.524.505.395.549.764 1.135 1.137 1.726a29.897 29.897 0 0 1 2.055 3.452c.034.068 0 .117-.037.05a30.31 30.31 0 0 0-1.635-2.688c-.561-.881-1.133-1.738-1.708-2.601-.303-.456-.067.234 0 .407.066.172.225.53.339.789.233.548.484 1.06.738 1.578a80.203 80.203 0 0 0 1.569 3.039c.044.08 0 .141-.048.067a71.222 71.222 0 0 1-1.742-3.328 37.237 37.237 0 0 1-.794-1.732 4.16 4.16 0 0 1-.42-1.196.105.105 0 0 1 .004-.04.057.057 0 0 1 .018-.028Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M188.436 168.418c.295.512.572 1.048.886 1.529.037.056.022.167-.026.099a14.97 14.97 0 0 1-.897-1.554c-.029-.055 0-.141.037-.074Zm1.646.314c-.594-.808-1.107-1.763-1.683-2.614-.576-.85-1.192-1.726-1.779-2.607-1.166-1.757-2.215-3.699-3.351-5.548-1.137-1.849-2.241-3.748-3.385-5.585-1.144-1.837-2.247-3.55-3.343-5.369-.03-.043-.052-.037-.067 0l-.417-.709c-.76-1.263-1.646-2.243-2.465-3.384-.03-.037-.085.08-.059.124.804 1.171 1.664 2.206 2.447 3.421a77.313 77.313 0 0 1 2.251 3.735c.72 1.27 1.476 2.811 2.148 4.278.328.697.661 1.393 1.011 2.053a.1.1 0 0 0 0 .061c.539 1.061 1.174 1.991 1.742 3.015.521.92 1.084 1.771 1.683 2.546.037.049.048 0 .019-.068a37.867 37.867 0 0 1-2.351-3.767c.025 0 .048-.086.029-.117-1.41-2.342-2.543-5.06-3.871-7.52l1.199 1.917c1.14 1.849 2.244 3.748 3.384 5.585 1.141 1.837 2.185 3.754 3.359 5.498.616.919 1.255 1.8 1.875 2.719.539.801 1.041 1.682 1.609 2.428.037.068.055-.037.015-.092Zm-18.997-31.771c3.234 4.198 6.216 8.846 9.227 13.488 1.51 2.336 2.993 4.728 4.536 7.002 1.543 2.275 3.082 4.42 4.632 6.602.65.918 1.321 1.794 1.975 2.706.653.912 1.218 1.849 1.863 2.725.026.037 0 .117-.022.067-.778-1.011-1.476-2.176-2.251-3.205a125.307 125.307 0 0 1-2.344-3.23c-1.539-2.194-3.129-4.315-4.632-6.559-3.052-4.611-5.975-9.456-9.071-13.986a224.128 224.128 0 0 0-3.927-5.548c-.045-.025-.03-.123.014-.062Zm10.828 17.501c.435.586.882 1.14 1.288 1.782.406.641.856 1.411 1.295 2.101.912 1.431 1.927 2.688 2.876 4.05.948 1.363 1.926 2.632 2.878 3.952.89 1.232 1.805 2.465 2.617 3.815.03.056.018.16-.026.087a20.592 20.592 0 0 0-1.225-1.745c-.454-.616-.879-1.233-1.321-1.849-.964-1.313-1.931-2.62-2.887-3.951-.955-1.332-1.926-2.676-2.875-4.038-.457-.653-.874-1.405-1.295-2.12-.421-.715-.908-1.338-1.351-2.004-.029-.043-.018-.135.026-.08Zm5.253 8.728c.62 1.048 1.248 2.084 1.872 3.119.623 1.036 1.14 2.115 1.734 3.132.022.031 0 .098 0 .055-.601-1.005-1.14-2.102-1.745-3.082a82.505 82.505 0 0 1-1.872-3.144c-.025-.061-.025-.123.011-.08Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M167.427 132.893c.287.505.59.982.908 1.43.332.537.683 1.042 1.034 1.548.738 1.054 1.424 2.157 2.137 3.236.712 1.078 1.476 2.145 2.214 3.248.738 1.104 1.318 2.269 2.019 3.329.026.037 0 .111-.019.062-.716-1.011-1.343-2.201-2.044-3.249-.701-1.048-1.477-2.127-2.215-3.224-.738-1.097-1.41-2.182-2.137-3.236a31.03 31.03 0 0 1-1.022-1.572 16.868 16.868 0 0 1-.926-1.498c-.041-.092.007-.16.051-.074Zm18.646 25.575c-.668-1.165-1.313-2.33-2.037-3.396a80.564 80.564 0 0 1-2.14-3.304c-1.455-2.404-2.99-4.673-4.4-7.157 0-.031-.052 0-.059.068l-1.011-1.67c-.369-.617-.775-1.147-1.137-1.757-.362-.61-.653-1.165-1-1.72-1.406-2.25-2.908-4.315-4.296-6.596-.048-.08-.067.037-.03.099 1.395 2.373 2.953 4.475 4.363 6.817.369.617.701 1.233 1.107 1.85.406.616.716 1.048 1.052 1.615.579.986 1.196 1.917 1.808 2.848 1.13 1.923 2.292 3.791 3.444 5.677a62.112 62.112 0 0 0 2.14 3.316c.735 1.054 1.458 2.262 2.178 3.427-.007.025.041-.074.018-.117Zm-16.445-25.308c.524.758 1.004 1.603 1.524 2.398.034.049.019.154-.025.086-.521-.77-.997-1.621-1.517-2.385-.03-.068-.019-.167.018-.099Zm-50.33-.069a21.597 21.597 0 0 1-.255 2.022c-.107.782-.162 1.578-.255 2.361-.203 1.682-.513 3.316-.738 4.986-.225 1.671-.387 3.243-.587 4.864-.092.733-.173 1.479-.258 2.213-.085.733-.21 1.572-.277 2.361 0 .068.048 0 .052 0 .173-1.486.406-2.953.583-4.432.207-1.695.402-3.397.642-5.073.24-1.677.517-3.175.716-4.784.096-.777.144-1.572.236-2.355.119-.719.202-1.453.251-2.194-.007-.179-.107-.074-.11.031Zm-2.1 18.776c-.505 2.811-.771 5.702-1.158 8.562-.203 1.523-.403 3.039-.613 4.562-.211 1.522-.439 2.983-.609 4.5 0 .086.066 0 .074-.044.162-1.454.402-2.884.609-4.315.206-1.43.395-2.909.594-4.364.199-1.455.387-2.885.553-4.315.082-.702.141-1.417.229-2.12.107-.826.259-1.634.369-2.466.026-.105-.037-.062-.048 0Zm2.845-17.647c0-.068-.063 0-.06.068.074 1.233-.217 2.465-.343 3.655a144.339 144.339 0 0 0-.369 3.958c-.214 2.601-.635 5.171-.911 7.754-.277 2.583-.48 5.301-.739 7.952-.129 1.344-.299 2.681-.446 4.025-.148 1.344-.388 2.645-.509 3.994 0 .081.055 0 .062-.036.332-2.682.713-5.339.982-8.014.269-2.675.498-5.461.805-8.174.291-2.582.701-5.153.911-7.76.104-1.313.229-2.632.369-3.939.085-1.153.332-2.324.248-3.483Zm3.103 3.932c-.159.524-.351 1.036-.517 1.554a13.408 13.408 0 0 0-.369 1.59 69.726 69.726 0 0 0-.52 3.563c-.369 2.749-.739 5.498-1.063 8.266-.325 2.768-.543 5.375-.923 8.014-.185 1.3-.321 2.619-.491 3.932l-.266 2.035c-.07.718-.169 1.429-.295 2.126 0 .086.048.049.059 0 .221-1.181.394-2.386.517-3.606.177-1.319.332-2.65.513-3.976.181-1.325.369-2.552.52-3.852.152-1.301.266-2.645.414-3.964.302-2.7.657-5.387 1.015-8.069.177-1.319.35-2.65.55-3.963.092-.601.203-1.194.332-1.776.14-.653.398-1.233.575-1.849.041-.099-.025-.105-.051-.025Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M122.634 142.614c-.102.369-.19.748-.262 1.135a69.84 69.84 0 0 0-.196 1.763c-.118 1.183-.317 2.336-.436 3.519-.228 2.355-.339 4.747-.616 7.089-.277 2.343-.771 4.519-1.129 6.781a143.896 143.896 0 0 0-.893 6.836c0 .068.048 0 .051 0 .288-2.361.602-4.703.975-7.021.347-2.158.812-4.272 1.088-6.454.277-2.182.369-4.598.591-6.892.1-1.115.262-2.206.398-3.31.074-.579.133-1.165.196-1.744.083-.575.186-1.141.31-1.695.019-.13-.063-.074-.077-.007Zm.479-.412c-.1 1.017-.148 2.034-.229 3.082-.089 1.152-.225 2.287-.318 3.433-.184 2.244-.265 4.518-.409 6.781-.144 2.262-.292 4.376-.403 6.577-.121 2.318-.313 4.611-.442 6.922 0 .08.059 0 .062-.037.159-2.25.347-4.493.48-6.75.133-2.256.273-4.388.424-6.589.152-2.201.237-4.518.403-6.781.085-1.146.218-2.28.306-3.427.089-1.146.096-2.157.192-3.224.007-.111-.059-.037-.066.013Zm-.942 8.882a70.926 70.926 0 0 0-.295 4.623 60.452 60.452 0 0 1-.406 4.648c-.192 1.504-.255 3.082-.421 4.568-.166 1.485-.339 2.891-.48 4.315 0 .049.034 0 .041 0 .244-1.344.343-2.805.506-4.186.177-1.522.269-3.082.454-4.586.189-1.533.327-3.083.413-4.642.088-1.596.088-3.205.255-4.789 0-.068-.067 0-.067.049Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M121.15 160.829c-.225.136-.369.906-.465 1.233a21.2 21.2 0 0 0-.491 2.423c-.284 1.775-.513 3.612-.738 5.418 0 .092.066 0 .074-.043.203-1.48.41-2.947.605-4.426.185-1.493.498-2.934.93-4.278.107-.129.137-.074.092.166a5.42 5.42 0 0 1-.036.543c-.034.364-.107.715-.148 1.079a56.858 56.858 0 0 0-.236 2.182 154.395 154.395 0 0 1-.476 4.629c0 .099.07 0 .077-.049.24-1.8.391-3.625.583-5.443.089-.826.222-1.64.31-2.466.011-.105.144-1.122-.081-.968Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M120.205 166.526c-.107 1.005-.321 1.998-.369 3.015 0 .098.066 0 .074-.044.136-.992.277-2.003.369-3.008-.008-.074-.07-.012-.074.037Zm2.539-16.292c-.192 3.285-.447 6.552-.617 9.862-.077 1.585-.107 3.175-.199 4.753-.045.708-.066 1.42-.063 2.133 0 .752-.062 1.516-.036 2.268 0 .05.04 0 .044-.037.133-3.082.21-6.121.369-9.178.162-3.273.402-6.528.557-9.801-.004-.093-.055-.037-.055 0Zm.621-16.793a12.978 12.978 0 0 0-.369 1.535c-.174.728-.318 1.48-.454 2.238-.266 1.51-.546 2.99-.856 4.475-.31 1.486-.565 2.94-.894 4.389-.328 1.449-.586 3.039-.834 4.531a50.546 50.546 0 0 0-.465 4.315c-.125 1.602-.236 3.211-.417 4.801-.158 1.437-.369 2.861-.579 4.315-.211 1.455-.336 3.033-.465 4.574 0 .08.062 0 .066-.043.174-1.467.266-2.946.469-4.401.203-1.455.424-2.848.594-4.278.185-1.529.306-3.082.428-4.611a52.61 52.61 0 0 1 .502-4.666c.251-1.467.509-2.922.823-4.352.314-1.43.594-2.922.897-4.383.303-1.461.576-2.829.819-4.315a78.75 78.75 0 0 1 .369-2.077c.074-.358.159-.715.233-1.073.053-.327.124-.645.214-.949.03-.099-.048-.099-.081-.025Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M119.862 156.478c-.307 2.293-.65 4.567-.942 6.873a460.706 460.706 0 0 1-.42 3.285c-.144 1.091-.248 2.33-.425 3.471 0 .111.059.055.078 0 .174-.959.307-1.938.398-2.928.155-1.165.296-2.336.447-3.508.151-1.171.273-2.397.435-3.587.163-1.19.325-2.416.48-3.631.008-.074-.048-.018-.051.025Zm2.963-23.708c-.026-.037-.081.074-.052.111.111.16-.129 1.116-.158 1.313-.093.617-.218 1.233-.321 1.812-.203 1.233-.488 2.386-.739 3.582a142.156 142.156 0 0 1-1.605 7.335 4.035 4.035 0 0 0-.074.302l-.103-.037a4.268 4.268 0 0 1 0-.32c0-.284.055-.617.077-.869.052-.617.115-1.233.2-1.85.177-1.288.369-2.558.55-3.852.18-1.295.31-2.639.461-3.952.074-.616.155-1.232.225-1.849.07-.616.048-1.159.126-1.701 0-.08-.059 0-.071 0-.077.493-.07 1.029-.125 1.535-.074.616-.162 1.233-.24 1.849-.177 1.375-.336 2.762-.502 4.142-.166 1.381-.369 2.676-.539 4.026a40.918 40.918 0 0 0-.166 1.818c-.026.376-.159.999-.037 1.356h.041a3.96 3.96 0 0 0 .369-1.233c.166-.721.325-1.448.491-2.17a147 147 0 0 0 .959-4.432c.274-1.374.584-2.718.82-4.117.122-.728.247-1.455.369-2.182.051-.124.162-.456.044-.617Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M122.315 132.831c-.432 2.466-.901 4.882-1.292 7.348 0 .105.055.049.07 0 .295-1.196.458-2.466.694-3.668.236-1.202.413-2.465.605-3.698.019-.111-.063-.056-.077.018Zm-.493.579c-.151.931-.262 1.881-.387 2.817 0 .087.062 0 .07-.036.121-.931.225-1.85.369-2.787.018-.086-.045-.049-.052.006Zm-.831-.405c-.195 1.565-.369 3.15-.542 4.715-.174 1.566-.369 3.082-.513 4.593-.292 3.15-.761 6.25-1.082 9.388-.321 3.137-.605 6.435-.993 9.628-.188 1.56-.369 3.119-.564 4.679-.1.77-.196 1.547-.318 2.305a17.213 17.213 0 0 0-.229 1.917c0 .087.063 0 .071-.043.121-1.424.369-2.835.572-4.241.21-1.547.369-3.082.557-4.672.369-3.2.683-6.423 1.019-9.641.335-3.218.797-6.244 1.107-9.401.147-1.534.321-3.082.502-4.586.181-1.504.313-3.125.491-4.684-.004-.081-.07-.013-.078.043Zm-3.616 35.265a19.777 19.777 0 0 1-.159 1.733c0 .086.048.049.059 0 .09-.575.142-1.164.155-1.757.018-.087-.037-.019-.055.024Zm.427-15.72a192.884 192.884 0 0 0-1.258 8.266c-.369 2.774-.786 5.622-1.067 8.464 0 .105.074 0 .081-.049.314-2.78.716-5.548 1.071-8.285.354-2.737.764-5.628 1.225-8.402.011-.074-.041-.043-.052.006Zm-1.868 15.77c-.03.302-.063.616-.096.9 0 .068.052 0 .055-.037.037-.296.066-.616.095-.894.004-.061-.051-.012-.054.031Zm2.153-35.014c-.623 2.903-1.166 5.856-1.72 8.802-.572 3.083-1.266 6.017-1.993 8.982-.69 2.823-1.284 5.726-1.9 8.629a127.688 127.688 0 0 0-1.705 8.68c0 .08.059 0 .066 0a136.028 136.028 0 0 1 1.742-8.723c.627-2.872 1.236-5.775 1.927-8.63.69-2.854 1.387-5.782 1.941-8.777.554-2.996 1.059-6.029 1.69-8.988.022-.061-.022-.024-.048.025Zm-2.75 17.13c-.819 3.217-1.498 6.534-2.214 9.825-.344 1.603-.738 3.162-1.108 4.734-.369 1.572-.656 3.347-1.107 4.932-.026.092.033.098.056 0 .439-1.474.697-3.082 1.07-4.599.402-1.639.83-3.248 1.188-4.931.713-3.341 1.429-6.682 2.171-10.005.007-.043-.045 0-.056.044Zm1.511-5.634c-.325 2.009-.679 3.976-.897 6.022-.225 2.145-.45 4.315-.69 6.429-.24 2.115-.461 4.198-.738 6.288-.133 1.048-.24 2.102-.369 3.15l-.177 1.535c-.019.48-.083.953-.192 1.399-.03.068.022.092.044.037.08-.203.128-.436.14-.678.045-.456.111-.919.166-1.375.144-1.122.281-2.25.429-3.378.284-2.151.531-4.315.771-6.472.24-2.158.502-4.426.716-6.645.214-2.219.565-4.229.867-6.349.011-.093-.063-.037-.07.037Zm-.156-1.817c-.816 4.105-1.107 8.414-1.805 12.581 0 .086.048.043.059 0 .842-4.099 1.004-8.47 1.805-12.588.018-.092-.048-.024-.059.007Zm-2.149 12.913c-.251 1.122-.421 2.299-.716 3.39-.295 1.091-.52 2.398-.782 3.588-.262 1.189-.55 2.373-.805 3.575a53.014 53.014 0 0 0-.336 1.757c-.103.591-.254 1.159-.343 1.756 0 .093.052.05.063 0 .494-2.373.993-4.74 1.524-7.101.266-1.189.487-2.404.771-3.581.285-1.177.443-2.256.676-3.384.015-.099-.041-.062-.052 0Zm-1.935 11.711c-.107.616-.177 1.276-.317 1.899 0 .086.044.043.055 0 .135-.621.242-1.258.321-1.905.012-.08-.051-.043-.059.006Zm1.301-4.005c-.125.678-.232 1.374-.347 2.059 0 .074.041.037.052 0 .129-.679.225-1.381.347-2.065.015-.081-.04-.044-.052.006Zm3.634-30.512c-.31 1.639-.738 3.199-1.107 4.802-.369 1.602-.664 3.211-1 4.814-.664 3.125-1.476 6.164-2.214 9.246-.369 1.529-.798 3.014-1.192 4.525-.395 1.51-.779 3.242-1.263 4.789-.922 2.953-1.915 5.844-2.89 8.747-.04.117.045.13.078 0 .978-2.897 1.967-5.794 2.901-8.735.461-1.448.808-2.995 1.203-4.493.395-1.498.83-2.99 1.214-4.512.384-1.523.738-3.12 1.108-4.667.369-1.547.786-3.02 1.107-4.586.321-1.566.642-3.211.978-4.802.336-1.59.767-3.162 1.07-4.796l.067-.388c.022-.043-.048 0-.06.056Zm-4.966 24.328a.363.363 0 0 0-.145.158.723.723 0 0 0-.073.261c-.059.257-.14.497-.24.715-.089.271-.174.549-.255.832-.369 1.19-.705 2.367-1.125 3.501a23.657 23.657 0 0 0-.528 1.615c-.159.555-.41 1.19-.587 1.807-.177.616-.336 1.171-.513 1.75a12.487 12.487 0 0 1-.591 1.794c-.04.086 0 .148.052.068.338-.78.619-1.625.838-2.515.303-1.023.649-2.004.952-3.027.303-1.023.668-1.935.993-2.922.325-.986.587-2.028.912-3.02.029-.093.258-.869.166-.419-.093.45-.222.998-.325 1.504-.229 1.109-.41 2.256-.609 3.378a37.615 37.615 0 0 1-.797 3.513c-.152.537-.296 1.073-.447 1.609-.122.505-.26.999-.413 1.48-.037.104.037.104.066 0 .142-.423.265-.862.369-1.313.152-.524.296-1.061.443-1.585.283-.968.529-1.964.738-2.983.211-1.073.369-2.17.591-3.236.111-.53.195-1.079.31-1.609.105-.432.194-.875.266-1.325.011-.019-.015-.044-.048-.031Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M110.834 164.448a30.437 30.437 0 0 1-.646 2.545c-.236.919-.439 1.85-.712 2.75-.022.067.022.098.048.037.269-.767.489-1.579.657-2.423.279-.934.519-1.9.716-2.891.011-.117-.056-.08-.063-.018Zm1.521-21.465c-.406 2.164-.62 4.401-.941 6.602-.34 2.336-.761 4.697-.846 7.107a15.853 15.853 0 0 1-.446 3.261c-.266 1.079-.554 2.145-.831 3.212-.276 1.066-.59 2.268-.889 3.402a37.642 37.642 0 0 1-.864 3.15c-.04.105.037.105.067 0 .316-.914.59-1.869.819-2.854.292-1.128.605-2.237.897-3.359.524-2.041 1.236-4.118 1.358-6.355.05-1.168.143-2.329.277-3.477.155-1.196.332-2.386.495-3.581.162-1.196.332-2.367.472-3.563.14-1.196.325-2.392.491-3.594.011-.049-.052.018-.059.049Zm1.014-1.261c-.055.425-.191.801-.258 1.233-.08.486-.175.965-.284 1.436-.179.844-.32 1.709-.421 2.589-.225 1.849-.557 3.698-.719 5.585 0 .086.059 0 .066-.037.218-1.893.554-3.73.775-5.622.108-.981.266-1.944.472-2.879.075-.361.136-.73.185-1.103.063-.419.192-.801.24-1.233.007-.068-.052-.006-.056.031Zm2.71-8.817c-.096 1.079-.446 2.09-.649 3.12-.203 1.029-.37 2.206-.595 3.304-.225 1.097-.509 1.972-.705 3.002a68.05 68.05 0 0 1-.738 3.291c-.018.093.052.05.067 0 .299-1.07.563-2.166.789-3.285.211-1.091.547-2.096.757-3.187.21-1.091.369-2.201.572-3.292.248-.972.443-1.978.583-3.008.011-.105-.077-.012-.081.055Zm-1.917 12.612c-.446 2.164-1.059 4.229-1.583 6.337-.236.955-.406 1.941-.613 2.909-.206.968-.494 1.923-.693 2.916-.019.098.051.049.066 0 .251-.974.524-1.936.738-2.928.214-.993.369-1.948.598-2.903.498-2.121 1.107-4.167 1.532-6.331.022-.099-.033-.049-.045 0Zm-.262-12.315c-.151.702-.339 1.393-.498 2.096-.159.702-.284 1.491-.458 2.2a34.286 34.286 0 0 0-.812 4.506c0 .148.104 0 .115-.068.391-3.008 1.107-5.837 1.716-8.747.022-.098-.048-.049-.063.013Zm-.785 5.547c-.063.37-.126.74-.192 1.116 0 .086.052.043.059 0l.188-1.11c.015-.117-.044-.055-.055-.006Zm-2.594 11.263c-.498 3.224-1.155 6.404-1.794 9.554-.638 3.15-1.266 6.3-2.03 9.376 0 .049.03.037.037 0 .41-1.43.738-2.965 1.067-4.438.328-1.473.683-3.175 1.007-4.771.65-3.212 1.277-6.448 1.768-9.734.015-.08-.048-.043-.055.013Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M110.169 154.365a37.125 37.125 0 0 1-.62 4.352 30.976 30.976 0 0 1-.425 2.163c-.147.531-.299 1.067-.42 1.615-.31 1.369-.661 2.7-.975 4.069-.273 1.196-.697 2.342-.849 3.606 0 .061.045 0 .048 0 .244-1.307.624-2.515.923-3.791.299-1.276.679-2.682.993-4.038.136-.616.336-1.159.469-1.763.132-.604.243-1.368.369-2.04.259-1.364.437-2.769.531-4.192.022-.098-.041-.03-.044.019Zm14.65-6.556c-.118 1.955-.221 3.915-.432 5.85-.21 1.936-.288 3.699-.48 5.548-.192 1.849-.557 3.662-.812 5.505a38.886 38.886 0 0 0-.398 5.362c0 .081.077 0 .077-.061.052-1.812.207-3.612.462-5.375.247-1.85.598-3.637.812-5.499.214-1.861.269-3.698.461-5.548.192-1.849.306-3.877.369-5.819.022-.104-.055-.024-.059.037Zm.676-5.921c-.077 1.719-.181 3.445-.262 5.165-.081 1.72-.155 3.391-.336 5.073-.18 1.683-.317 3.36-.45 5.049-.066.807-.133 1.609-.166 2.416-.048.777-.048 1.56 0 2.336 0 .037.037 0 .037-.037a41.63 41.63 0 0 1 .284-4.993c.152-1.689.288-3.371.465-5.048.153-1.613.253-3.239.299-4.87.074-1.709.139-3.419.196-5.128-.008-.074-.067-.013-.067.037Zm.852-4.968a58.48 58.48 0 0 0-.291 4.031c-.059 1.331-.137 2.675-.151 4.007-.034 2.65-.244 5.276-.299 7.921-.056 2.527-.211 5.03.04 7.545.149 1.295.232 2.608.247 3.926 0 1.356 0 2.725.052 4.081 0 .043.041 0 .041 0 .033-1.233 0-2.466 0-3.699a39.019 39.019 0 0 0-.211-3.951 40.897 40.897 0 0 1-.199-3.859c0-.702.063-1.405.1-2.102.037-.696.033-1.3.048-1.954.062-2.589.313-5.153.317-7.754 0-1.387.081-2.786.129-4.167.04-1.344.123-2.684.251-4.013-.003-.142-.07-.062-.074-.012Zm-1.162 25.993c-.051-.85-.022-1.707-.092-2.558a25.664 25.664 0 0 1-.114-2.274c0-.746.059-1.492.11-2.232.111-1.67.262-3.335.37-5.011 0-.068-.048 0-.052.031-.129 1.615-.281 3.223-.402 4.845a21.68 21.68 0 0 0-.082 4.179c.083.77.117 1.554.1 2.336 0 .783.092 1.566.096 2.349.004.783.022 1.51 0 2.268v.912c.043.427.043.862 0 1.289 0 .031.018 0 .026 0a3.11 3.11 0 0 0 .055-.82v-1.085c0-.666.048-1.307 0-1.973-.048-.665.033-1.491-.015-2.256Zm.365 2.085c0-.056-.055 0-.055.055.084 1.726.033 3.452.062 5.184 0 .056.055 0 .055-.043a73.17 73.17 0 0 0-.062-5.196Zm1.852-17.778c-.184-3.865-.044-7.742-.144-11.619 0-.056-.055 0-.051.055.088 3.902-.107 7.792.077 11.712.089 1.923.27 3.822.41 5.739.14 1.917.251 3.92.369 5.887 0 .049.048 0 .048-.05-.218-3.926-.52-7.816-.709-11.724Zm2.281 21.512c-.044-.536-.103-1.06-.151-1.59-.114-1.233-.166-2.509-.266-3.754-.209-2.589-.424-5.174-.645-7.754 0-.068-.067 0-.063.067.192 2.466.369 4.932.568 7.397.096 1.196.159 2.398.244 3.594.04.567.107 1.122.155 1.683.064.52.106 1.048.125 1.578-.029.043-.048.117 0 .142v.037c.026.086.092-.056.096-.099a8.292 8.292 0 0 0-.063-1.301Zm-1.606-29.422c-.122-2.152-.306-4.315-.369-6.467 0-.08-.074 0-.074.074.033 2.158.214 4.358.329 6.516.125 2.275.258 4.549.42 6.818 0 .098.096 0 .093-.093-.129-2.287-.255-4.568-.399-6.848Zm1.107 11.275c-.059-1.628-.17-3.243-.229-4.87-.059-1.627-.218-3.162-.314-4.746-.096-1.585-.151-3.261-.225-4.895 0-.055-.055 0-.052.056.063 1.572.122 3.143.185 4.715s.232 3.181.299 4.778c.066 1.596.133 3.242.221 4.863.082 1.51.262 3.002.347 4.512 0 .037.037 0 .037-.037-.066-1.461-.206-2.909-.269-4.376Zm-.823-.809c0-.049-.048 0-.044.044.062.721.121 1.442.155 2.169 0 .056.051 0 .051-.049a59.688 59.688 0 0 0-.162-2.164Zm-1.532 5.246c0-1.177-.074-2.348-.092-3.526a99.67 99.67 0 0 1 .029-3.766c.022-2.392.089-4.759.056-7.151-.022-1.232-.085-2.465-.104-3.655-.018-1.19-.085-2.503-.055-3.748 0-.086-.066 0-.066.037-.056 2.361.033 4.722.096 7.077.062 2.354 0 4.869 0 7.31 0 1.202-.03 2.398-.026 3.594.003 1.196.062 2.343.096 3.508.066 2.428-.03 4.845 0 7.273 0 .037.037 0 .037 0 0-1.165.048-2.33.081-3.495s-.041-2.317-.052-3.458Zm.312 11.972c-.051-1.061-.018-2.133-.018-3.193 0-.099-.096 0-.096.098 0 .993-.022 1.991 0 2.984.022.992.092 2.12.096 3.18 0 .068.062 0 .062-.061.014-.986.003-1.997-.044-3.008Zm.256-7.983c0-.08-.078 0-.074.074.029.691 0 1.375.033 2.059.026.802.044 1.603.044 2.404a56.99 56.99 0 0 0 .118 4.679c0 .068.063 0 .063-.062-.147-3.02-.003-6.102-.184-9.154Zm.593 3.188c-.077-1.232-.228-2.465-.324-3.698-.196-2.515-.27-5.048-.502-7.551 0-.062-.063 0-.059.061.195 2.528.247 5.08.435 7.613.092 1.233.236 2.466.332 3.699.096 1.233.148 2.496.251 3.741 0 .05.048 0 .048-.049-.04-1.276-.096-2.552-.181-3.816Zm.728 5.363a116.78 116.78 0 0 1-.125-2.595c-.059-1.615-.093-3.23-.152-4.845 0-.086-.077 0-.081.061-.018.716.037 1.418.059 2.127.03.851.037 1.701.067 2.552.029.851.081 1.738.136 2.608.056.869.056 1.645.126 2.465 0 .074.07 0 .066-.068-.059-.764-.059-1.541-.096-2.305Zm-.061-6.326c0-.074-.07 0-.067.068.056.617.06 1.276.122 1.905 0 .086.081 0 .074-.074-.052-.629-.066-1.27-.129-1.899Zm-4.391-28.243c0-.092-.092 0-.089.093.033.69-.055 1.393-.059 2.089-.003.697 0 1.511 0 2.269 0 1.615-.066 3.193-.155 4.802-.162 2.977-.158 5.961-.147 8.95 0 .043.044 0 .044-.043 0-3.144.085-6.269.266-9.4.077-1.418.129-2.805.125-4.235 0-.752 0-1.504-.018-2.262-.019-.759.077-1.511.033-2.263Zm.019 11.272c0 .955-.07 1.911-.114 2.86-.045.949-.048 2.01-.093 3.014-.037.888-.044 1.763-.088 2.651-.045.888-.104 1.929-.178 2.891 0 .074.052 0 .06 0 .121-.906.162-1.849.243-2.755.081-.907.059-1.893.1-2.836.04-.943.029-2.003.066-3.002.037-.999.07-1.892.067-2.848 0-.092-.063-.024-.063.025Zm-.723 7.936c0 .85-.033 1.695-.044 2.546.005.723-.03 1.445-.107 2.157 0 .043.033 0 .037 0 .105-.714.154-1.447.144-2.182.022-.845.026-1.701.022-2.546 0-.08-.052-.018-.052.025Zm1.363-19.307c-.262 2.497-.207 5.055-.414 7.564 0 .074.052 0 .056-.037.339-2.466.184-5.055.409-7.558.008-.068-.048-.012-.051.031Zm.059 3.544c-.019 1.27-.163 2.534-.185 3.804 0 .068.048 0 .048 0 .052-.685.074-1.375.107-2.065.026-.586.085-1.165.089-1.757 0-.086-.059-.025-.059.018Zm.853-3.852c0-.067-.063 0-.063.062 0 1.504 0 3.002-.07 4.5-.037.733-.033 1.473-.059 2.207-.026.733-.081 1.485-.063 2.231 0 .074.067 0 .067-.055.055-1.541.077-3.083.155-4.63.059-1.436.059-2.878.033-4.315Zm-.597 7.34c0 .902-.041 1.803-.122 2.694 0 .062.044 0 .048 0 .099-.894.142-1.803.129-2.712.004-.08-.055-.037-.055.018Zm3.494-3.241c-.07-1.171.115-2.361.019-3.52 0-.074-.07 0-.067.068.019.605.007 1.211-.037 1.812a22.577 22.577 0 0 0 0 1.726c.041 1.147.082 2.281.181 3.421 0 .037.033 0 .033-.037-.047-1.152-.047-2.324-.129-3.47Zm1.927 16.402c0-1.042-.107-2.084-.17-3.126-.063-1.041-.104-2.268-.181-3.396-.078-1.128-.266-2.17-.314-3.273a223.147 223.147 0 0 0-.162-3.261c-.126-2.219-.163-4.444-.325-6.657 0-.074-.07 0-.07.067.118 2.176.125 4.358.244 6.528.059 1.085.114 2.17.169 3.249.056 1.078.24 2.151.34 3.236.1 1.085.114 2.151.184 3.224.071 1.072.144 2.065.185 3.082.077 2.139.1 4.315.055 6.448 0 .08.056 0 .059-.037.089-2.026.084-4.06-.014-6.084Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M130.516 160.613c0-.617-.052-1.233-.059-1.887v-2.169c.01-2.875-.192-5.74-.602-8.532 0-.055-.055 0-.052.056.359 2.754.539 5.565.536 8.383 0 .672-.037 1.325 0 1.985.036.66.059 1.399.07 2.09 0 1.405.129 2.749.221 4.142 0 .062.055 0 .052-.055-.022-1.332-.166-2.663-.166-4.013Zm-.247-24.785c-.033-.906-.255-1.775-.34-2.675 0-.093-.084 0-.081.086.07.912.236 1.8.296 2.718-.007.829.041 1.656.143 2.466 0 .086.096-.049.093-.111-.089-.814-.089-1.646-.111-2.484Zm3.082 19.496c-.325-2.54-.594-5.092-.956-7.613-.351-2.41-.793-4.771-1.074-7.212-.14-1.233-.196-2.466-.288-3.748-.092-1.282-.247-2.373-.273-3.551 0-.104-.096 0-.096.099.039 1.136.113 2.267.222 3.39.088 1.233.151 2.509.276 3.754.259 2.509.738 4.932 1.108 7.397.369 2.466.642 4.932.952 7.397.31 2.466.76 4.975 1.129 7.44 0 .081.074 0 .067-.067-.274-2.46-.757-4.864-1.067-7.286Zm-1.846-20.236a26.716 26.716 0 0 0-.251-2.263c0-.067-.085.037-.074.093.104.747.177 1.505.218 2.268.064.791.165 1.572.303 2.336.018.099.099 0 .092-.092-.089-.783-.214-1.553-.288-2.342Zm5.463 27.793c-.199-1.424-.399-2.848-.59-4.278-.392-2.903-.783-5.813-1.325-8.63-.543-2.817-1.355-5.609-1.912-8.488a150.586 150.586 0 0 1-.775-4.383 45.498 45.498 0 0 1-.576-4.259c0-.068-.066 0-.063.068.105 1.381.276 2.746.513 4.081.214 1.356.458 2.693.698 4.037.528 2.971 1.351 5.764 1.934 8.698s.967 5.837 1.373 8.784c.406 2.946.863 5.769 1.306 8.63 0 .061.067 0 .063-.062-.196-1.387-.447-2.78-.646-4.198Zm-3.746-23.491c-.111-.549-.177-1.135-.277-1.695-.221-1.233-.369-2.466-.561-3.699 0-.049-.055 0-.048.049a63.334 63.334 0 0 0 1.107 6.732c0 .049.063-.031.059-.068-.081-.438-.188-.839-.28-1.319Zm2.02 8.144c-.214-1.177-.369-2.379-.624-3.538a121.565 121.565 0 0 1-.738-3.778c-.369-2.361-.738-4.728-1.192-7.065 0-.055-.07.037-.059.087.443 2.465.816 4.98 1.214 7.471.174 1.097.395 2.176.62 3.248.255 1.233.44 2.466.698 3.668.029.055.089-.043.081-.093Zm-1.171-8.452c-.251-1.578-.476-3.162-.705-4.746 0-.056-.055 0-.051.049.214 1.596.439 3.187.686 4.771.015.099.081-.018.07-.074Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M137.135 167.111c-.078-.616-.174-1.288-.266-1.929-.177-1.233-.34-2.41-.546-3.6-.406-2.355-.938-4.654-1.37-7.003a109.343 109.343 0 0 0-1.565-7.064c-.295-1.159-.557-2.33-.845-3.482a32.752 32.752 0 0 1-.9-3.637c0-.099-.096 0-.089.086.173 1.098.42 2.159.738 3.162.303 1.141.55 2.318.838 3.464a98.724 98.724 0 0 1 1.606 7.083c.42 2.41.941 4.771 1.398 7.163.237 1.233.395 2.466.587 3.748.1.616.192 1.282.281 1.923.088.641.221 1.109.276 1.695 0 .093.093 0 .089-.092-.041-.524-.17-1.017-.232-1.517Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M136.409 165.983a551.35 551.35 0 0 1-2.096-11.712 143.462 143.462 0 0 0-1-5.295 91.958 91.958 0 0 0-.572-2.583c-.203-.85-.476-1.849-.672-2.774 0-.049-.063.031-.055.081.177.887.395 1.75.609 2.619.214.87.413 1.85.605 2.78.369 1.85.738 3.767 1.056 5.671a377.543 377.543 0 0 0 2.063 11.299c.011.062.074-.03.062-.086Zm.039 3.057c-.218-1.11-.332-2.269-.502-3.397-.17-1.128-.347-2.213-.535-3.31-.388-2.256-.69-4.543-1.148-6.781 0-.061-.081.05-.07.105.439 2.299.76 4.642 1.163 6.959.191 1.098.37 2.197.535 3.298.158 1.079.269 2.176.483 3.23.015.074.085-.043.074-.104Zm-.82-1.845c-.082-.585-.181-1.165-.274-1.738-.188-1.159-.402-2.305-.568-3.47-.166-1.165-.328-2.343-.502-3.508a56.235 56.235 0 0 1-.494-3.667c.077 1.198.209 2.385.394 3.55.167 1.171.322 2.349.48 3.52.325 2.361.816 4.666 1.107 7.039 0 .093.085 0 .082-.08-.048-.555-.155-1.097-.225-1.646Zm-.396-4.473c0-.055-.059 0-.051.056.096.665.181 1.337.247 2.015 0 .074.07 0 .067-.067a36.353 36.353 0 0 0-.263-2.004Zm-3.464-1.856a95.192 95.192 0 0 0-.258-7.175c-.211-2.337-.447-4.661-.643-7.003-.195-2.342-.398-4.851-.708-7.231 0-.067-.063 0-.059.062.14 1.128.221 2.275.31 3.421.088 1.147.221 2.466.321 3.668.192 2.336.454 4.666.635 7.009.18 2.372.28 4.759.299 7.15.051 2.456.222 4.901.513 7.311 0 .092.088 0 .085-.08a86.041 86.041 0 0 1-.495-7.132Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M131.417 162.913c-.019-.555-.211-6.571-.111-6.577.018 0 .04-.068 0-.068h-.03a.032.032 0 0 0-.018.015.071.071 0 0 0-.011.028 96.22 96.22 0 0 0 .044 6.288c.052 2.151.03 4.315.055 6.441 0 .099.096 0 .096-.08a123.14 123.14 0 0 0-.025-6.047Zm-.388 5.931a39.551 39.551 0 0 1 0-2.336c0-.086-.062 0-.062.037a49.056 49.056 0 0 0-.029 1.787c.04.724.048 1.451.026 2.176 0 .081.058 0 .065 0 .05-.551.05-1.112 0-1.664Zm1.845-6.369c-.206-1.917-.369-3.84-.572-5.757-.398-3.89-.826-7.773-1.262-11.65 0-.056-.055 0-.052.049.403 3.914.776 7.828 1.178 11.712.199 1.917.369 3.84.583 5.751.214 1.911.406 3.828.565 5.764 0 .03.025 0 .025 0a88.158 88.158 0 0 0-.465-5.869Zm-.119 3.681c-.088-1.177-.195-2.355-.276-3.538 0-.056-.056 0-.052.055.151 2.275.314 4.556.465 6.83 0 .08.07 0 .07-.074-.022-1.085-.125-2.188-.207-3.273Zm-1.237-20.576c-.125-.734-.195-1.492-.317-2.219a53.607 53.607 0 0 1-.539-4.266c0-.056-.052 0-.048.049.084 1.397.236 2.78.454 4.136.148.783.244 1.585.347 2.386.103.801.258 1.492.395 2.219 0 .049.066-.031.059-.074-.1-.746-.225-1.492-.351-2.231Zm2.556 21.413c-.089-.783-.162-1.572-.247-2.355-.177-1.676-.406-3.341-.613-5.011-.387-3.156-.657-6.355-1.177-9.462 0-.062-.059 0-.052.055.491 3.138.738 6.356 1.107 9.536.196 1.677.417 3.347.602 5.03.147 1.551.348 3.087.601 4.599 0 .061.074-.043.071-.093-.078-.795-.207-1.553-.292-2.299Zm.59.335c0-.062-.059 0-.055.055.122.82.262 1.634.417 2.435 0 .043.052 0 .048-.055-.103-.826-.28-1.621-.41-2.435Zm.51 1.312c0-.062-.067 0-.059.061.06.453.135.899.225 1.338 0 .049.059-.037.055-.074-.048-.45-.158-.875-.221-1.325Zm3.075-.747a52.293 52.293 0 0 0-.31-2.299c-.236-1.59-.41-3.205-.587-4.814a74.804 74.804 0 0 0-.583-4.611c-.295-1.677-.579-3.347-.867-5.024 0-.061-.063 0-.056.056.251 1.572.491 3.137.761 4.697.261 1.647.472 3.316.631 4.999.169 1.615.347 3.224.583 4.814.114.758.229 1.517.325 2.287.063.759.151 1.512.262 2.256 0 .056.07-.037.062-.08-.114-.715-.144-1.529-.221-2.281Zm-1.392-21.24c-.254-1.516-.812-2.866-1.269-4.229-.019-.055-.082.05-.063.099.402 1.301.823 2.558 1.148 3.921.164.729.23 1.509.195 2.286.001.798-.026 1.594-.081 2.386 0 .08.059 0 .067-.031.097-.738.138-1.494.121-2.25a10.434 10.434 0 0 0-.118-2.182Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M135.9 144.68c0-.056-.07.037-.059.086.226.685.424 1.393.594 2.121.156.864.2 1.774.129 2.669 0 .086.063 0 .071-.044.206-1.787-.248-3.304-.735-4.832Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M137.857 149.29c-.089-1.307-.462-2.466-.738-3.698a16.236 16.236 0 0 0-.513-1.948c-.229-.691-.539-1.307-.779-1.979-.022-.056-.078.043-.063.086.479 1.16.885 2.399 1.211 3.699.133.616.24 1.233.398 1.849.191.672.323 1.386.392 2.12a56.61 56.61 0 0 1 .14 4.402c0 1.572-.188 3.131-.155 4.703 0 .08.077 0 .081-.068.033-1.51.155-3.008.162-4.518a64.233 64.233 0 0 0-.136-4.648Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M137.327 148.976c0-.061-.063 0-.055.056.137 1.479.206 2.973.206 4.469 0 1.467-.081 2.953 0 4.42 0 .067.063 0 .059-.062-.037-2.984.1-5.924-.21-8.883Zm1.053-4.297a63.675 63.675 0 0 1-1.296-6.084 17.971 17.971 0 0 0-.631-2.7c-.22-.794-.534-1.505-.923-2.09-.188-.24-.561-.561-.778-.234a2.4 2.4 0 0 0-.167.739c-.019.265 0 .534.056.784 0 .061.074-.044.063-.093-.066-.39-.06-.805.018-1.19.089-.53.613 0 .72.148.383.581.687 1.291.893 2.084.498 1.541.683 3.261.989 4.931.144.771.369 1.486.539 2.238.195.869.409 1.713.649 2.552.24.838.469 1.529.702 2.299.232.771.439 1.615.675 2.416 0 .044.052-.037.044-.067-.35-2.01-1.048-3.828-1.553-5.733Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M141.972 162.167a65.464 65.464 0 0 1-.649-3.125c-.395-2.078-.679-4.167-1.155-6.202-.476-2.034-1.078-3.963-1.613-5.936-.535-1.972-1.144-4.08-1.709-6.127 0-.043-.055 0-.044.068 1.052 4 2.214 7.927 3.229 11.952.509 2.01.772 4.124 1.163 6.164.188.999.369 1.998.601 2.965.233.968.502 1.985.698 3.008 0 .056.066-.03.059-.073a29 29 0 0 0-.58-2.694Zm-.447 1.843c-.266-1.436-.491-2.891-.772-4.315-.549-2.78-1.062-5.547-1.631-8.346 0-.043-.052.031-.044.068.531 2.737.996 5.498 1.535 8.229.561 2.836.96 5.751 1.587 8.55 0 .061.078-.043.07-.087-.221-1.38-.498-2.736-.745-4.099Zm-1.973-.376c-.067-1.713-.078-3.433-.148-5.147a61.645 61.645 0 0 0-.484-4.931 65.082 65.082 0 0 0-.553-4.549c0-.037-.056.031-.052.068.215 1.514.38 3.047.495 4.592.169 1.646.369 3.279.457 4.931.089 1.652.104 3.44.148 5.147.066 1.659.204 3.307.413 4.932 0 .08.07 0 .067-.068-.089-1.615-.281-3.292-.343-4.975Zm-.403.209c-.136-1.602-.21-3.217-.369-4.82 0-.055-.055 0-.051.055.14 1.609.206 3.23.336 4.839.129 1.609.369 3.181.524 4.778 0 .043.04 0 .04-.044-.07-1.627-.358-3.193-.48-4.808Zm1.219-1.084c0-.055-.07.037-.063.093.225 1.233.447 2.527.653 3.797.207 1.27.329 2.404.514 3.594 0 .086.081 0 .073-.074-.206-2.509-.738-4.993-1.177-7.41Zm.258 4.234c0-.068-.063 0-.056.056.063.616.152 1.27.218 1.911 0 .067.067 0 .063-.068-.074-.623-.166-1.252-.225-1.899Zm-2.418-6.008c0-.056-.052 0-.048.049.045 2.628.198 5.248.458 7.841 0 .092.088 0 .081-.087-.245-2.585-.409-5.19-.491-7.803Zm6.477 5.14c-.284-1.486-.517-2.996-.805-4.482-.288-1.485-.605-2.915-.915-4.37-.31-1.455-.598-2.823-.971-4.186-.373-1.362-.76-2.7-1.14-4.05-.38-1.35-.698-2.804-1.082-4.185-.383-1.381-.823-2.762-1.206-4.167-.174-.616-.303-1.276-.473-1.905a25.157 25.157 0 0 1-.483-1.991c0-.049-.063.037-.056.08.499 2.768 1.311 5.351 2.038 7.958.369 1.381.697 2.817 1.07 4.204.373 1.387.76 2.7 1.14 4.05a112.31 112.31 0 0 1 1.883 8.322c.295 1.479.546 2.977.819 4.469.273 1.492.627 2.86.901 4.315 0 .049.066-.037.059-.074-.211-1.344-.543-2.651-.779-3.988Zm-.874-1.344c-.306-1.233-.631-2.509-.948-3.76-.668-2.663-1.263-5.369-1.938-8.013 0-.037-.044 0-.037.055.642 2.62 1.207 5.295 1.845 7.915.639 2.62 1.325 5.048 1.875 7.643 0 .056.07 0 .063-.074a55.086 55.086 0 0 0-.86-3.766Zm0 2.484c0-.049-.059.031-.048.068.18.715.343 1.442.509 2.17 0 .043.052 0 .044-.068a38.43 38.43 0 0 0-.505-2.17Zm-6.676-34.106c0-.049-.063 0-.052.074a168.49 168.49 0 0 1 1.388 6.164c0 .056.07 0 .063-.074a70.238 70.238 0 0 0-1.399-6.164Zm4.727 15.921c-.417-1.8-.926-3.538-1.391-5.307-.465-1.77-1.07-3.335-1.476-5.098-.2-.845-.369-1.695-.594-2.528a19.307 19.307 0 0 1-.613-2.878c0-.068-.07 0-.063.068.092.82.242 1.618.447 2.379.232.906.439 1.849.646 2.749.398 1.775.996 3.378 1.476 5.104s.963 3.508 1.413 5.283c.451 1.775.897 3.698 1.37 5.511 0 .03.033 0 .026-.037-.454-1.739-.835-3.502-1.241-5.246Zm-2.761-12.019c-.276-1.338-.542-2.694-.86-4.007 0-.049-.062.031-.051.074.306 1.325.553 2.694.849 4.025.014.062.073-.037.062-.092Zm.656 1.325c-.166-.715-.291-1.467-.443-2.194-.181-.863-.369-1.72-.502-2.601 0-.062-.062 0-.055.055.229 1.523.557 3.002.849 4.494.291 1.492.823 3.014 1.181 4.555 0 .043.055 0 .048-.068-.299-1.461-.746-2.804-1.078-4.241Zm6.691 16.981c-.428-1.233-.96-2.287-1.443-3.44-.484-1.152-.942-2.465-1.477-3.643a23.425 23.425 0 0 1-1.303-3.772c0-.062-.081.043-.066.099a24.432 24.432 0 0 0 1.192 3.698c.487 1.233.963 2.466 1.451 3.655.487 1.19 1.022 2.226 1.457 3.434.436 1.208.79 2.62 1.196 3.92 0 .043.056 0 .045-.067a50.87 50.87 0 0 0-1.052-3.884Zm2.73 13.934a13.251 13.251 0 0 1-.274-1.073c-.096-.382-.221-.746-.324-1.122-.237-.863-.425-1.769-.639-2.65-.45-1.85-.76-3.798-1.251-5.641a57.925 57.925 0 0 0-1.521-5.073c-.302-.832-.609-1.664-.922-2.465-.314-.802-.668-1.541-.967-2.367-.019-.056-.074.043-.059.086.262.783.59 1.485.874 2.244.285.758.587 1.682.897 2.508a56.173 56.173 0 0 1 1.565 5.265c.491 1.849.801 3.772 1.251 5.64.214.881.406 1.781.643 2.644.103.376.221.74.332 1.11.087.37.198.724.332 1.054 0 .031.081-.105.063-.16Zm-1.347-7.8c0-.037-.052 0-.045.068.513 2.17.971 4.383 1.477 6.553 0 .031.044 0 .037-.056-.421-2.225-.945-4.395-1.469-6.565Zm-.249 7.181c-.221-.918-.387-1.88-.59-2.817-.203-.937-.421-1.929-.646-2.885 0-.049-.059 0-.052.074.203.906.369 1.85.58 2.737l.332 1.547c.086.489.193.967.321 1.43.015.074.066-.037.055-.086Zm-1.69-6.053c0-.037-.037 0-.033 0 .192 1.282.546 2.465.719 3.766 0 .049.056 0 .052-.049-.133-1.264-.528-2.435-.738-3.717Zm2.225 6.017c-.147-.506-.277-1.023-.413-1.535a56.09 56.09 0 0 1-.757-3.236c0-.043-.059.037-.051.08.206 1.042.431 2.059.697 3.082.287.978.541 1.982.761 3.008 0 .049.047 0 .047-.055a6.092 6.092 0 0 0-.284-1.344Zm2.743-2.885a29.774 29.774 0 0 0-.989-3.458c-.409-1.159-.889-2.244-1.284-3.415-.395-1.171-.757-2.466-1.137-3.742-.38-1.275-.804-2.416-1.199-3.636-.395-1.221-.72-2.293-1.126-3.397-.406-1.103-.897-2.256-1.351-3.365-.863-2.102-2.044-3.81-2.639-6.202-.018-.067-.088.05-.073.111a14.496 14.496 0 0 0 1 2.996c.505 1.054 1.03 2.047 1.476 3.156.447 1.11.926 2.232 1.358 3.372.432 1.14.801 2.361 1.185 3.557.384 1.196.819 2.311 1.163 3.452.343 1.14.738 2.502 1.133 3.735s.86 2.281 1.288 3.421c.415 1.138.784 2.32 1.107 3.539.022.092.107-.062.088-.124Zm-1.429-2.177c-.429-1.424-.831-2.872-1.318-4.247 0-.037-.052.031-.041.062.458 1.325.842 2.718 1.244 4.099.402 1.381.834 2.712 1.166 4.142 0 .031.037 0 .03-.049a48.456 48.456 0 0 0-1.081-4.007Zm.454 3.157c0-.037-.052 0-.041.061.307 1.104.613 2.201.879 3.335 0 .05.062-.031.055-.068a29.485 29.485 0 0 0-.893-3.328Zm3.894 2.545c-.24-1.153-.676-2.188-.96-3.31-.313-1.233-.708-2.41-1.059-3.6a160.146 160.146 0 0 0-2.214-7.046c-.787-2.293-1.691-4.487-2.503-6.78-.409-1.141-.793-2.312-1.203-3.452-.41-1.141-.923-2.238-1.388-3.341-.022-.05-.077.043-.059.086.436 1.066.89 2.121 1.292 3.23.402 1.11.779 2.33 1.174 3.483.797 2.305 1.675 4.524 2.48 6.817.805 2.294 1.521 4.673 2.214 7.04.351 1.196.691 2.404 1.063 3.588.185.579.344 1.183.532 1.762.188.58.369 1.085.528 1.659.025.111.118-.056.103-.136Zm-.628-.283a26.382 26.382 0 0 0-.989-3.082c0-.037-.048 0-.037.055a38.28 38.28 0 0 1 .975 3.132c.011.024.073-.062.051-.105Zm-8.126-28.404c-.675-2.355-1.602-4.562-2.111-7.046 0-.086-.107.056-.092.136.253 1.155.556 2.278.908 3.359a71.209 71.209 0 0 0 1.225 3.656c.022.061.1-.05.07-.105Zm4.385 11.928c-.462-1.498-.99-2.935-1.444-4.432-.454-1.498-.911-3.039-1.413-4.519-.502-1.479-.967-3.137-1.476-4.678-.532-1.472-1.005-3-1.418-4.574 0-.056-.07.037-.059.086a52.46 52.46 0 0 0 1.307 4.488c.498 1.559.941 3.162 1.447 4.709.505 1.547.963 3.008 1.424 4.525.462 1.516 1.03 3.02 1.532 4.549.029.08.122-.074.1-.154Zm-4.323-15.12c-.428-1.443-.849-2.885-1.274-4.315 0-.056-.066.037-.055.08.421 1.449.823 2.91 1.262 4.315.034.105.082 0 .067-.08Zm.302 8.136c-.391-.992-.805-1.966-1.192-2.971a35.79 35.79 0 0 1-.945-3.236c-.587-2.133-1.321-4.118-2.022-6.164-.026-.068-.1.055-.078.117.69 2.046 1.366 4.099 1.964 6.226.273 1.111.594 2.188.959 3.223.369.999.808 1.961 1.211 2.941.037.111.136-.056.103-.136Zm-3.746-8.074c-.262-.888-.505-1.794-.764-2.688a13.665 13.665 0 0 0-.701-2.232c-.026-.049-.092.074-.063.13.302.748.55 1.553.738 2.398.237.838.462 1.689.709 2.521.019.074.103-.062.081-.129Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M142.016 140.488a61.406 61.406 0 0 1-1.975-6.904c0-.043-.052.031-.044.068a57.179 57.179 0 0 0 1.952 6.941c.019.062.085-.043.067-.105Zm3.356 7.198c-.27-.789-.557-1.56-.842-2.33-.284-.771-.664-1.572-.981-2.38a44.284 44.284 0 0 1-1.724-5.023c0-.062-.081.049-.066.104a46.863 46.863 0 0 0 1.631 4.932c.299.82.657 1.578.974 2.379.318.802.609 1.646.941 2.466.023.006.085-.099.067-.148Zm-1.301-.319a93.867 93.867 0 0 1-1.081-2.842c-.018-.049-.066.037-.055.08.35.962.701 1.923 1.07 2.86.026.062.089-.049.066-.098Zm10.95 14.121c-.609-2.546-1.587-4.789-2.336-7.218-.779-2.521-1.451-5.129-2.233-7.644a141.062 141.062 0 0 0-2.444-7.187 36.932 36.932 0 0 0-1.295-3.205c-.55-1.116-1.17-2.109-1.657-3.304-.03-.068-.1.055-.078.11a31.944 31.944 0 0 0 1.407 3.015 33.592 33.592 0 0 1 1.402 3.439 167.378 167.378 0 0 1 2.462 7.175c.778 2.429 1.476 5.086 2.27 7.589.793 2.502 1.73 4.789 2.435 7.323.026.061.085-.044.067-.093Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M155.223 170.075c-.738-2.885-1.531-5.726-2.262-8.63-.738-3.002-1.403-6.072-2.13-9.086-.369-1.473-.627-2.989-1.004-4.45-.376-1.461-.815-2.75-1.243-4.106-.222-.69-.406-1.417-.631-2.108-.226-.69-.48-1.374-.739-2.059a55.678 55.678 0 0 1-1.38-4.148c0-.062-.085.049-.07.105a50.064 50.064 0 0 0 1.292 4.013c.487 1.368.952 2.73 1.384 4.142.432 1.411.874 2.687 1.251 4.087.376 1.399.649 2.983 1 4.463.716 3.039 1.332 6.164 2.074 9.16.742 2.995 1.587 5.806 2.366 8.716.033.055.107-.068.092-.099Zm1.746-.147c-.834-3.082-1.808-6.023-2.687-9.055-.432-1.498-.856-3.009-1.328-4.476a38.127 38.127 0 0 0-.705-2.003c-.056-.148-.399-1.233-.539-1.134-.14.098-.137.271-.122.481.081.722.218 1.424.406 2.089.369 1.517.782 3.021 1.166 4.537.794 3.138 1.55 6.306 2.355 9.437 0 .062.029.124.048.185.018.062.081-.043.066-.098-.708-2.842-1.384-5.702-2.092-8.544-.369-1.418-.738-2.817-1.082-4.235-.162-.653-.343-1.294-.502-1.948a15.601 15.601 0 0 1-.243-1.232c0-.124-.026-.228-.037-.346-.026-.265.207.247.21.247 1.045 2.423 1.739 5.277 2.517 7.952.779 2.675 1.691 5.387 2.466 8.167a.115.115 0 0 0 0 .037v.05a.058.058 0 0 0 0 .037h.026c.044 0 .096-.081.077-.148Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M156.496 169.841c-.406-2.102-1.108-4.038-1.683-6.01a105.384 105.384 0 0 1-.868-3.052c-.14-.524-.284-1.048-.424-1.578s-.281-.931-.369-1.418c0-.055-.074.044-.063.099.185.974.495 1.917.738 2.86.244.943.554 2.047.849 3.082.598 2.047 1.233 4.044 1.772 6.165-.015.006.048-.099.048-.148Zm-1.795-5.313c0-.043-.059.031-.048.068.369 1.38.738 2.78 1.074 4.179 0 .043.059 0 .048-.074a102.402 102.402 0 0 0-1.074-4.173Zm3.595 4.347a23.136 23.136 0 0 0-.664-2.398c-.277-.943-.535-1.899-.827-2.823-.583-1.85-1.14-3.736-1.723-5.591a110.854 110.854 0 0 0-1.883-5.48c-.664-1.782-1.314-3.699-1.974-5.548-.019-.055-.078.043-.063.092.616 1.85 1.192 3.699 1.845 5.499a136.65 136.65 0 0 1 1.875 5.505c.591 1.867 1.137 3.735 1.728 5.584.295.925.568 1.85.845 2.805.251.838.557 1.646.76 2.509.015.049.092-.086.081-.154Zm-1.431-2.683c-.332-1.079-.639-2.176-.963-3.261 0-.037-.052.031-.041.062a85.34 85.34 0 0 1 1.679 6.127s.037 0 .037-.043a21.263 21.263 0 0 0-.712-2.885Zm-6.43-22.148a35.375 35.375 0 0 0-2.059-5.505c-.369-.838-.738-1.75-1.108-2.57a33.014 33.014 0 0 1-1.162-2.614c-.022-.055-.085.049-.067.099.313.88.662 1.722 1.045 2.521.369.851.738 1.751 1.107 2.601.801 1.782 1.476 3.699 2.185 5.548.019.062.07-.037.059-.08Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M154.515 155.047a30.128 30.128 0 0 0-.93-2.675c-.347-.9-.66-1.835-.938-2.799-.572-1.991-1.162-3.957-1.816-5.874a81.587 81.587 0 0 0-2.096-5.548 63.855 63.855 0 0 1-2.129-5.264c-.019-.056-.078.043-.063.086a52.963 52.963 0 0 0 2.081 5.313 122.58 122.58 0 0 1 2.093 5.579c.661 1.88 1.259 3.871 1.845 5.856.254.911.546 1.791.875 2.632.369.906.738 1.812 1.041 2.768 0 .049.048-.031.037-.074Zm-.382-7.161a20.582 20.582 0 0 0-.841-1.652c-.351-.617-.668-1.32-1.004-1.967-.336-.647-.624-1.171-.934-1.75a23.337 23.337 0 0 1-.952-2.146 17.172 17.172 0 0 0-.79-1.615 25.061 25.061 0 0 1-.949-2.12 43.9 43.9 0 0 1-.789-1.954c-.126-.321-.24-.647-.351-.98a6.401 6.401 0 0 1-.317-.949c0-.056-.074.037-.067.086.13.588.305 1.145.521 1.658.254.734.538 1.43.83 2.127.292.696.524 1.3.819 1.917.296.616.687 1.27.986 1.985.247.616.476 1.183.738 1.738.262.555.661 1.233.996 1.849.336.617.676 1.313 1.012 1.966.336.654.701 1.233 1.026 1.85.033.105.081.012.066-.043Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M151.155 140.883c-.266-.66-.598-1.233-.9-1.849a63 63 0 0 1-1.008-2.139c-.325-.734-.642-1.418-.948-2.146-.266-.616-.491-1.276-.783-1.849-.018-.037-.074.062-.055.105.28.616.505 1.233.738 1.892.284.752.624 1.449.937 2.17.602 1.387 1.285 2.626 1.96 3.914.03.007.07-.067.059-.098Zm2.318 4.376c-.414-1.029-.761-2.133-1.178-3.15-.417-1.017-.863-1.997-1.269-3.026-.849-2.17-1.761-4.266-2.684-6.35-.022-.049-.073.044-.055.081a342.476 342.476 0 0 1 2.561 6.262 77.55 77.55 0 0 0 1.274 3.052c.218.487.369 1.023.576 1.528.206.506.476 1.147.712 1.695.022.068.081-.049.063-.092Zm-2.942-8.777c-.446-1.276-1.048-2.398-1.476-3.698 0-.05-.07.043-.055.086.398 1.301.985 2.466 1.45 3.698.037.062.096-.037.081-.086Zm10.897 32.824c-.654-1.769-1.333-3.507-1.945-5.32-.613-1.812-1.17-3.698-1.742-5.547a66.755 66.755 0 0 0-1.901-5.326c-.369-.888-.701-1.788-1.045-2.682-.343-.893-.764-1.726-1.158-2.582-.026-.056-.093.055-.071.104.37.814.739 1.578 1.074 2.435.336.857.68 1.819 1.026 2.713a81.041 81.041 0 0 1 1.96 5.51c.262.851.506 1.708.757 2.571.251.863.62 1.849.934 2.786.634 1.849 1.332 3.662 2.033 5.455.026.037.1-.061.078-.117Zm-3.499-6.855c-.315-.974-.62-1.958-.915-2.953-.292-.98-.654-1.917-.964-2.879a601.44 601.44 0 0 1-1.956-6.164c-.321-1.023-.66-2.022-1.004-3.026a32.52 32.52 0 0 0-1.199-2.904c-.022-.049-.078.05-.059.087a51.586 51.586 0 0 1 2.081 5.812c.639 2.078 1.303 4.124 1.953 6.165.306.973.642 1.923.967 2.878.325.956.609 1.96.926 2.928.664 2.022 1.428 3.945 2.133 5.918.019.049.063 0 .052-.074-.609-1.96-1.373-3.816-2.015-5.788Zm.235 2.366c-.288-.93-.58-1.849-.849-2.798-.27-.95-.535-1.985-.842-2.953 0-.043-.059.037-.048.074.292.906.51 1.849.772 2.799.262.949.553 1.88.841 2.811a609.526 609.526 0 0 0 1.775 5.597c0 .037.056 0 .045-.068-.521-1.849-1.148-3.637-1.694-5.462Zm1.26 5.031a40.629 40.629 0 0 0-.738-2.379c0-.049-.067.037-.052.08.247.789.487 1.584.738 2.379.011.056.078-.037.052-.08Zm1.52.476c-.096-.309-.251-.543-.351-.845 0-.055-.07.037-.055.086.096.302.251.537.347.845.014.055.073-.043.059-.086Zm1.634-.563a13.577 13.577 0 0 0-.601-1.794c-.259-.752-.524-1.498-.786-2.25-.524-1.498-1.056-2.995-1.587-4.493-1.045-2.947-2.097-5.887-3.248-8.723-.022-.055-.081.043-.063.093a293.01 293.01 0 0 1 3.207 8.778l1.58 4.512c.244.702.483 1.405.738 2.102.111.308.218.616.314.924.136.32.259.653.369.999-.004.092.096-.062.077-.148Zm-74.502-36.669c-.202.388-.45.709-.664 1.085-.214.376-.446.912-.672 1.343a33.048 33.048 0 0 1-1.58 2.682c-.261.394-.564.715-.844 1.072-.304.415-.589.866-.853 1.35-.483.833-.908 1.757-1.388 2.595-.022.044 0 .111.03.062.513-.857.974-1.787 1.476-2.638.267-.457.551-.884.853-1.276.296-.341.582-.707.856-1.097.513-.783.998-1.617 1.45-2.497.233-.444.44-.918.669-1.368.228-.45.498-.795.738-1.233.022-.08-.026-.136-.07-.08Zm.466-.119a17.586 17.586 0 0 1-.993 1.849c-.369.709-.756 1.338-1.136 2.016-.76 1.356-1.643 2.601-2.274 4.142a15.735 15.735 0 0 0-.675 1.973c-.229.875-.399 1.763-.672 2.601a29.91 29.91 0 0 1-1.845 4.605c-.026.049 0 .08.026.037a26.646 26.646 0 0 0 1.775-4.272c.251-.73.465-1.496.638-2.287.203-.847.462-1.653.772-2.404.627-1.596 1.55-2.878 2.329-4.265.369-.678.782-1.301 1.136-2.022.354-.602.677-1.254.963-1.948.034-.086-.022-.086-.044-.025Zm-4.577 7.559a13.602 13.602 0 0 0-1.107 2.842c-.17.697-.3 1.399-.487 2.084a15.39 15.39 0 0 1-.739 2.028c-.018.043 0 .104.026.055.493-.96.877-2.063 1.133-3.255a10.79 10.79 0 0 1 .547-2.04c.118-.247.199-.549.302-.814.104-.265.244-.561.37-.838.032-.074-.008-.105-.045-.062Zm-2.991 8.887c-.406.617-.846 1.092-1.23 1.733a9.228 9.228 0 0 1-1.476 1.849c-.487.468-.981.894-1.476 1.374a10.149 10.149 0 0 0-1.28 1.763c-.407.66-.765 1.394-1.17 2.047-.407.653-.816 1.356-1.237 2.028a46.518 46.518 0 0 0-2.466 4.315c-.018.031 0 .074 0 .037.842-1.399 1.606-2.928 2.477-4.315.871-1.387 1.594-2.737 2.418-4.068a9.154 9.154 0 0 1 1.361-1.763c.51-.494 1.045-.919 1.55-1.424a8.672 8.672 0 0 0 1.285-1.529c.417-.672.863-1.27 1.288-1.929.037-.068.018-.204-.044-.118Zm-2.447 2.275c-.367.502-.75.969-1.148 1.399-.37.376-.779.574-1.133.974a16.252 16.252 0 0 0-1.927 2.928c-.03.056 0 .136.034.074.314-.53.64-1.035.974-1.516a12.33 12.33 0 0 1 1.107-1.443c.166-.172.37-.234.532-.388.162-.154.402-.401.601-.616.35-.405.68-.852.99-1.338.032-.037.018-.136-.03-.074Zm-.093-2.471a25.63 25.63 0 0 1-.993 2.194c-.033.074 0 .161.04.093.395-.674.731-1.435 1-2.262.03-.074-.025-.081-.047-.025Zm-1.29 2.509c-.413.617-.804 1.307-1.229 1.923-.41.578-.8 1.195-1.166 1.85-.369.659-.675 1.411-1.055 2.052-.38.641-.801 1.319-1.2 1.985-.823 1.375-1.62 2.768-2.469 4.105a82.958 82.958 0 0 0-2.41 4.013c-.03.056 0 .136.037.074.786-1.356 1.61-2.644 2.406-3.976.41-.671.838-1.313 1.251-1.978.414-.666.809-1.418 1.222-2.115.413-.696.738-1.232 1.13-1.849.363-.606.705-1.246 1.025-1.917a18.9 18.9 0 0 1 1.196-1.954c.45-.684.864-1.412 1.3-2.114.029-.068.018-.154-.038-.099Zm-6.568 12.019a85.298 85.298 0 0 1-1.846 2.989c-.598.855-1.16 1.78-1.679 2.768-.026.056 0 .117.03.068a7.79 7.79 0 0 0 .66-1.091c.325-.565.668-1.098 1.03-1.597.642-.974 1.236-2.015 1.845-3.082.011-.024-.003-.117-.04-.055Zm-3.606 5.295a5.19 5.19 0 0 0-.258.475s0 .074.022.043a6.05 6.05 0 0 0 .255-.456c.022-.037.01-.111-.019-.062Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M76.628 155.431a155.79 155.79 0 0 0-3.69 6.781c-1.185 2.318-2.24 4.672-3.444 6.898-.03.055 0 .135.037.074.572-.943 1.107-2.022 1.613-3.045.616-1.196 1.203-2.466 1.812-3.643a178.748 178.748 0 0 1 3.716-7.003c.026-.043-.007-.129-.044-.062Zm-5.875 9.282c-.21.179-.394.429-.542.734-.31.493-.613.98-.93 1.455-.318.474-.573.844-.842 1.288-.27.444-.446.912-.686 1.344-.041.074 0 .172.044.092.174-.296.338-.609.49-.937.21-.408.44-.785.687-1.128.458-.702.915-1.399 1.366-2.12a4.22 4.22 0 0 1 .317-.469c.06-.098.107-.067.148.105a3.025 3.025 0 0 1-.118.388 26.7 26.7 0 0 1-.465 1.233c-.37.95-.738 1.85-1.137 2.799-.022.055 0 .098.03.043.49-1.134.948-2.299 1.424-3.446.033-.092.624-1.615.214-1.381Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M69.102 167.914c-.282.606-.588 1.18-.915 1.719-.03.056 0 .161.026.093a15.11 15.11 0 0 0 .944-1.738c.04-.093-.01-.167-.055-.074Zm4.992-8.692c-.421.801-.875 1.559-1.248 2.428-.026.068 0 .117.04.056.37-.857.824-1.634 1.241-2.466.03-.025-.004-.074-.033-.018Zm7.746-9.401c-.952 1.602-2.063 2.934-3.096 4.382a49.844 49.844 0 0 0-2.983 4.537c-1.937 3.44-3.48 7.465-5.48 10.831-.026.043 0 .135.022.074 1.986-3.126 3.466-6.997 5.3-10.344a51.224 51.224 0 0 1 3.1-4.796 58.297 58.297 0 0 0 3.167-4.586c.037-.061.022-.185-.03-.098Zm-9.888 15.274c-.388.789-.775 1.584-1.174 2.361a28.088 28.088 0 0 1-1.218 2.398c-.03.043 0 .129.026.074a21.75 21.75 0 0 0 1.177-2.256c.425-.82.85-1.64 1.244-2.503.04-.099-.01-.166-.055-.074Zm4.703-8.703c-.144.241-.276.5-.42.74-.026.043 0 .123 0 .068.144-.24.28-.499.42-.74.045-.043.034-.123 0-.068Zm7.726-10.356c-.89 2.225-2.089 4.037-3.233 5.886a62.827 62.827 0 0 0-3.037 5.708c-.982 2.035-1.901 4.149-2.923 6.165-.499.974-.997 1.941-1.477 2.921-.254.506-.527.993-.782 1.498-.213.506-.452.979-.716 1.412-.022 0-.022.129 0 .08.208-.281.392-.609.546-.974.244-.499.51-.962.764-1.455.532-1.029 1.048-2.077 1.587-3.082 1.063-2.003 2.023-4.136 3.023-6.232a66.881 66.881 0 0 1 3.24-6.084c1.145-1.732 2.172-3.669 3.064-5.776.033-.117-.03-.117-.056-.067Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M78.568 155.127c-2.307 4.419-4.743 8.66-6.876 13.333-.026.049 0 .092.03.037 2.265-4.476 4.613-8.846 6.886-13.315.033-.068-.007-.123-.04-.055Zm-5.616 12.133c-.295.654-.616 1.27-.908 1.936-.03.068 0 .117.04.049.156-.289.278-.616.429-.912.151-.296.321-.678.476-1.023.03-.068-.007-.117-.037-.05ZM85.4 145.715c-1.008 2.065-2.137 3.963-3.196 5.955-1.06 1.991-2.14 4.043-3.13 6.164-.49 1.06-.993 2.102-1.476 3.156-.484 1.054-1.008 1.904-1.477 2.909a62.651 62.651 0 0 1-1.476 2.978c-.513.961-.886 1.947-1.376 2.86-.03.049 0 .092.03.043.501-.894.922-1.905 1.413-2.811.49-.906 1.026-1.929 1.476-2.946.45-1.018 1.007-1.905 1.476-2.904.469-.998.997-2.096 1.477-3.156 1.967-4.253 4.259-8.013 6.274-12.211.063-.049.022-.111-.015-.037Zm-9.805 18.622c-.738 1.486-1.443 2.965-2.093 4.543-.022.056 0 .105.033.043a119.77 119.77 0 0 1 2.086-4.549c.022-.043-.004-.08-.026-.037Zm16.114-30.432c-.318.617-.66 1.134-.978 1.72l-1.06 1.979c-.679 1.269-1.387 2.465-2.007 3.828-.62 1.362-1.148 2.7-1.794 3.939-.328.616-.624 1.294-.945 1.941-.32.648-.708 1.326-1.026 2.065-.037.087 0 .154.052.068.31-.659.635-1.276.974-1.886.34-.61.613-1.319.949-1.942.66-1.233 1.221-2.601 1.816-3.908.594-1.307 1.317-2.564 1.985-3.834l1.048-1.997c.336-.617.698-1.233 1.034-1.911.037-.074-.008-.13-.048-.062Zm1.025-1.067a26.934 26.934 0 0 0-1.764 2.861c-.044.086 0 .154.048.067.542-1.011 1.14-1.929 1.738-2.848.033-.049.019-.141-.022-.08Zm-1.164.518c-.769 1.307-1.451 2.731-2.245 4.007-.853 1.362-1.764 2.626-2.628 3.97-.863 1.343-1.709 2.626-2.557 3.957a18.57 18.57 0 0 0-1.137 1.979 25.9 25.9 0 0 0-.875 2.194c-.026.074.026.074.048 0 .298-.785.62-1.542.967-2.268.383-.724.793-1.406 1.23-2.041.848-1.327 1.7-2.644 2.553-3.951.838-1.294 1.716-2.521 2.536-3.84.819-1.319 1.42-2.651 2.151-3.951.037-.037 0-.136-.044-.056Zm-5.682 10.036c-.232.516-.49.999-.771 1.442 0 0-.022.105 0 .068.14-.158.264-.351.369-.573.151-.29.299-.58.443-.882.03-.067-.008-.117-.04-.055Zm4.914-10.214c-1.041 1.769-2.071 3.545-3.123 5.289-.517.851-1.044 1.683-1.568 2.515-.525.832-1.026 1.763-1.562 2.601-.059.093-.531.832-.594.444-.048-.296.13-.814.2-1.085.157-.568.336-1.12.535-1.652a25.092 25.092 0 0 1 1.343-3.039c.482-.884.992-1.724 1.528-2.515.51-.783.797-1.849 1.307-2.663.04-.061.022-.178-.03-.104-.565.881-.904 2.052-1.476 2.928a26.53 26.53 0 0 0-1.584 2.743c-.49.982-.929 2.032-1.314 3.137-.062.185-.856 2.503-.527 2.589a.43.43 0 0 0 .271-.089.79.79 0 0 0 .223-.275c.319-.452.62-.936.905-1.448.609-1.036 1.254-2.004 1.878-3.014a151.678 151.678 0 0 0 3.64-6.257c.032-.08 0-.191-.052-.105Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M90.575 132.892a296.294 296.294 0 0 1-2.65 4.315c-.893 1.43-1.72 2.867-2.65 4.161-.022.031-.314.382-.296.278.052-.244.128-.471.226-.672.184-.463.369-.913.587-1.344a39.91 39.91 0 0 1 1.136-2.151c.864-1.566 1.739-3.126 2.584-4.716.03-.049 0-.129-.034-.068-.933 1.554-1.819 3.193-2.716 4.808a36.06 36.06 0 0 0-1.27 2.466c-.166.364-.317.74-.465 1.122-.073.185-.217.524-.177.764 0 0 0 .05.023.05a.281.281 0 0 0 .173-.048.479.479 0 0 0 .148-.162c.25-.321.472-.697.708-1.042.558-.82 1.078-1.72 1.613-2.583 1.04-1.682 2.122-3.297 3.1-5.079.045-.074.008-.179-.04-.099Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M90.215 132.887c-.52.944-1.188 1.683-1.701 2.669-.255.494-.543.913-.801 1.394-.259.48-.602.912-.871 1.436-.026.049 0 .111.03.061.28-.382.553-.826.819-1.232.298-.432.576-.9.834-1.4.505-1.072 1.188-1.849 1.73-2.86.038-.08-.003-.135-.04-.068Zm-.469.142a6.208 6.208 0 0 1-.516.974c-.03.05-.019.13.022.074.202-.291.381-.622.535-.986.03-.08-.008-.136-.04-.062Zm1.707-.259a3.971 3.971 0 0 0-.461.839c-.218.437-.454.85-.683 1.276-.052.098 0 .172.059.08.192-.339.369-.684.565-1.036.15-.374.328-.714.531-1.011.04-.049.074-.215-.011-.148Zm2.253.168a16.053 16.053 0 0 1-1.034 2.212c-.369.709-.705 1.474-1.055 2.207-.351.734-.816 1.554-1.244 2.299-.428.746-.716 1.387-1.048 2.102-1.477 3.126-3.067 6.109-4.691 9.043-.026.05 0 .087.03.043 1.656-2.971 3.28-5.973 4.816-9.123.738-1.516 1.58-2.872 2.306-4.395.37-.733.687-1.485 1.052-2.206.35-.663.657-1.387.916-2.158.047-.098-.023-.105-.049-.024Zm-.579.405c-.812 1.701-1.683 3.31-2.477 5.03-.793 1.72-1.694 3.23-2.583 4.777a66.314 66.314 0 0 0-2.613 5.104 66.11 66.11 0 0 1-2.466 5.08c-.026.043 0 .117.03.061a64.929 64.929 0 0 0 2.44-4.894 77.45 77.45 0 0 1 2.63-5.086c.916-1.633 1.79-3.082 2.584-4.789.794-1.708 1.676-3.483 2.506-5.234.03-.067-.018-.129-.051-.049Zm4.19-.122a21.493 21.493 0 0 0-1.631 2.509c-.562.937-1.108 1.899-1.676 2.817a63.776 63.776 0 0 1-3.776 5.603 8.36 8.36 0 0 1-.539.617c-.08.086-.165.159-.254.216-.17.117-.159-.235-.111-.401.174-.537.368-1.056.58-1.553.49-1.233 1.022-2.386 1.535-3.582.97-2.25 1.99-4.438 3.037-6.589.048-.093 0-.167-.055-.074a96.003 96.003 0 0 0-3.359 7.224c-.494 1.153-1.004 2.287-1.476 3.471-.066.166-.805 2.04-.229 1.75a3.05 3.05 0 0 0 .812-.844c.37-.444.687-.925 1.023-1.4.738-1.029 1.431-2.102 2.125-3.193a109.951 109.951 0 0 0 1.99-3.273 26.048 26.048 0 0 1 2.015-3.162c.048-.031.059-.222-.011-.136Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M97.117 132.85c-1.92 2.764-3.749 5.7-5.477 8.797-.112.214-.236.41-.37.585-.162.197.07-.74.074-.777.067-.228.14-.443.214-.665.334-.954.697-1.878 1.09-2.768.693-1.627 1.52-3.082 2.188-4.74.037-.099-.037-.105-.067-.031-.767 1.929-1.73 3.606-2.506 5.548a23.885 23.885 0 0 0-1.015 2.885c-.051.191-.258.973.056.702.124-.134.235-.3.328-.493.218-.388.447-.764.672-1.146.513-.876 1.04-1.726 1.569-2.583a184.517 184.517 0 0 1 3.292-5.16c.04-.104.018-.246-.048-.154Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M96.072 132.899a10.576 10.576 0 0 1-.841 1.67 26.426 26.426 0 0 1-1.026 1.732 5.39 5.39 0 0 1-.45.678c-.108.118-.133.173-.09 0 .072-.273.159-.535.26-.782.424-1.165.918-2.25 1.365-3.397.037-.092-.034-.135-.067-.055-.56 1.337-1.243 2.632-1.657 4.124-.022.086-.11.369-.04.456.144.191.527-.537.601-.654.37-.616.738-1.233 1.107-1.849.36-.538.671-1.161.923-1.849.004-.142-.059-.142-.085-.074Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M95.673 133.092c-.292.53-.628.98-.886 1.553-.033.074 0 .16.044.093.15-.235.29-.482.425-.74.166-.265.32-.542.472-.826.052-.08-.007-.173-.055-.08Zm1.771.042a82.32 82.32 0 0 1-1.38 3.039c-.233.487-.425 1.023-.672 1.498-.247.474-.59 1.047-.9 1.584-1.108 1.806-2.282 3.538-3.344 5.449-.558 1.011-.978 2.182-1.477 3.242-.498 1.06-.985 2.238-1.513 3.317-1.033 2.12-2.303 3.908-3.322 6.059 0 .037 0 .068.023.031 1.059-2.096 2.303-3.914 3.362-6.004.539-1.06 1.015-2.195 1.535-3.279.52-1.085.945-2.22 1.499-3.237 1.107-1.997 2.321-3.766 3.473-5.652a42.753 42.753 0 0 0 2.782-5.961c.015-.129-.025-.129-.066-.086Zm-3.994 8.864c-.709 1.19-1.454 2.318-2.093 3.612-.34.678-.612 1.442-.911 2.17a80.162 80.162 0 0 1-.967 2.237c-1.336 2.959-2.868 5.653-4.12 8.723 0 .049.02.068.034 0a77.185 77.185 0 0 1 2.041-4.315c.712-1.381 1.406-2.712 2.063-4.13.657-1.418 1.185-2.891 1.816-4.315a52.838 52.838 0 0 1 2.17-3.945c.03-.019.004-.093-.033-.037Zm-6.168 14.517c-.5.927-.958 1.916-1.37 2.958-.453 1.141-.959 2.22-1.446 3.323-.487 1.103-1.004 2.219-1.51 3.316-.203.467-.39.955-.557 1.461-.214.617-.465 1.184-.686 1.794-.022.055.022.062.04 0 .21-.549.45-1.066.668-1.609.218-.542.432-1.159.69-1.695a98.823 98.823 0 0 0 1.521-3.31c.424-.962.871-1.905 1.27-2.91a36.55 36.55 0 0 1 1.424-3.285c.037-.043-.007-.123-.044-.043Zm-2.475 3.495c-.333.832-.739 1.596-1.067 2.416-.328.82-.738 1.695-1.107 2.515-.37.82-.738 1.547-1.108 2.336-.184.401-.394.777-.59 1.159-.19.465-.401.906-.631 1.319-.019 0-.019.099 0 .068.183-.23.342-.512.469-.832.188-.405.389-.794.601-1.165.45-.82.85-1.745 1.262-2.614a68.885 68.885 0 0 0 2.215-5.184c.044-.074-.022-.074-.044-.018Zm3.409-10.419c-1.756 3.643-3.768 6.935-5.643 10.399-.915 1.689-1.867 3.323-2.742 5.08a191.98 191.98 0 0 0-1.288 2.632c-.214.45-.44.9-.635 1.374-.14.333-.31.617-.446.937-.019.043 0 .074.022.031.125-.271.284-.499.406-.795.195-.462.413-.894.623-1.332a96.51 96.51 0 0 1 1.4-2.743c.9-1.713 1.845-3.365 2.756-5.06 1.875-3.465 3.831-6.824 5.588-10.48.048-.055.007-.11-.04-.043Zm-4.874 10.831c-.185.117-.332.469-.473.697-.217.357-.45.696-.66 1.072-.465.851-1.004 1.603-1.428 2.509a32.369 32.369 0 0 1-1.517 2.854c-.222.364-.44.727-.65 1.103-.217.478-.449.937-.694 1.375-.03.037 0 .117.022.068.151-.252.289-.527.41-.82.221-.431.455-.842.701-1.233a62.42 62.42 0 0 0 1.266-2.237c.413-.759.782-1.486 1.188-2.213.406-.728.92-1.622 1.403-2.367.107-.167.207-.339.317-.494.111-.154-.08.315-.103.389-.133.437-.28.863-.428 1.288a33.36 33.36 0 0 1-1.148 2.91c-.395.856-.812 1.689-1.185 2.57-.17.367-.35.719-.542 1.054-.08.161-.154.33-.222.506-.044.104-.088.332-.155.413-.066.08-.059.234 0 .154.06-.08.178-.419.263-.617.193-.438.406-.85.638-1.233.166-.283.299-.653.45-.961.229-.469.44-.962.657-1.436.391-.857.738-1.745 1.107-2.657.33-.815.609-1.684.83-2.595 0-.062-.014-.117-.047-.099Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M81.79 163.812c-.794 2.096-1.846 3.915-2.772 5.856-.052.111 0 .192.066.087.51-.906.963-1.942 1.428-2.922.479-.953.922-1.954 1.329-2.996.033-.08-.03-.086-.052-.025Zm2.54-5.965c-.228.413-.464.807-.712 1.183-.03.043 0 .136.023.074.25-.388.49-.789.738-1.233.01-.031-.023-.074-.048-.024Zm1.603-1.333c-.421.869-.846 1.72-1.252 2.601-.036.08 0 .142.049.062.402-.882.826-1.738 1.24-2.614.033-.049-.008-.086-.037-.049Zm2.951-9.777c-.938 2.084-2.137 3.761-3.145 5.733-1.007 1.973-2.114 3.902-3.166 5.856-1.052 1.954-2.31 3.773-3.433 5.721-.527.912-1.03 1.849-1.546 2.792a80.82 80.82 0 0 1-.86 1.498c-.233.4-.428.844-.657 1.233-.026.043 0 .104.026.061.233-.382.432-.813.66-1.202.23-.388.54-.894.801-1.35.55-.949 1.075-1.935 1.624-2.885.491-.844 1.004-1.652 1.517-2.465-.288.548-.59 1.078-.87 1.639-.37.771-.739 1.56-1.152 2.294a90.701 90.701 0 0 1-1.21 2.095c-.414.691-.71 1.486-1.108 2.145-.03.05-.018.136.022.074.413-.616.738-1.442 1.13-2.102.39-.659.79-1.306 1.166-1.997.376-.69.771-1.504 1.151-2.28.38-.777.786-1.406 1.108-2.189a.132.132 0 0 0 0-.08 48.83 48.83 0 0 0 1.63-2.743c1.053-1.96 2.145-3.853 3.156-5.868 1.012-2.016 2.215-3.804 3.178-5.943.048-.049.007-.123-.022-.037Zm-7.31 14.092c-.369.696-.738 1.405-1.137 2.089-.398.685-.738 1.443-1.107 2.152-.738 1.38-1.384 2.86-2.07 4.315-.023.043 0 .111.025.061.348-.621.676-1.273.982-1.954.37-.715.709-1.43 1.045-2.163.708-1.541 1.505-2.99 2.288-4.426.052-.074.015-.154-.026-.074Zm6.336-15.188c-1.033 2.096-2.118 4.111-3.2 6.164-1.08 2.053-2.158 4.229-3.28 6.281-1.122 2.053-2.348 3.865-3.51 5.819-.54.9-1.048 1.85-1.558 2.805-.28.524-.546 1.073-.849 1.566-.27.421-.524.868-.764 1.337-.03.062 0 .105.034.05.262-.507.541-.986.838-1.437.258-.406.487-.869.738-1.3.564-1.011 1.129-2.028 1.712-3.002 1.107-1.849 2.31-3.637 3.388-5.585 1.107-2.04 2.17-4.204 3.27-6.281 1.1-2.078 2.215-4.167 3.24-6.343.03-.093-.018-.16-.058-.074Zm-11.195 19.541a31.252 31.252 0 0 1-1.413 2.781c-.226.388-.443.782-.654 1.195-.177.268-.323.59-.428.95-.022.104.056.08.074 0a6.68 6.68 0 0 1 .565-1.178c.21-.407.432-.801.65-1.196.441-.8.854-1.644 1.236-2.527.033-.062-.008-.062-.03-.025Zm1.536-.568a29.826 29.826 0 0 1-1.686 2.903c-.273.401-.558.777-.816 1.202-.258.426-.51.968-.804 1.387-.026.037 0 .105 0 .062.295-.407.538-.912.808-1.362.27-.45.594-.876.897-1.307a24.775 24.775 0 0 0 1.616-2.842c.044-.049.015-.092-.015-.043Zm4.469-10.509c-.368.616-.664 1.344-1.01 1.991-.347.647-.706 1.319-1.052 1.991-.698 1.356-1.418 2.669-2.119 4.013-.037.067 0 .154.04.086a41.004 41.004 0 0 0 2.082-3.822c.343-.678.69-1.344 1.041-2.009.35-.666.69-1.467 1.06-2.17.036-.093-.004-.136-.041-.08Zm5.991-8.409c-.324.717-.67 1.407-1.037 2.065a51.843 51.843 0 0 0-1.137 2.392c-.036.086 0 .148.048.068.395-.777.768-1.585 1.156-2.367a26.73 26.73 0 0 0 1.022-2.133c.03-.08-.03-.08-.052-.025Zm.636-3.118c-.17.413-.37.795-.532 1.233-.03.074.022.098.048.043.173-.413.37-.795.535-1.233.026-.074-.026-.105-.051-.043Zm1.269 2.612c-.34.666-.668 1.357-.993 2.041-.033.068 0 .123.041.055.347-.653.657-1.368.99-2.046.032-.062-.004-.111-.038-.05Zm2.296-1.453c-.83 2.009-1.757 3.883-2.602 5.874-.443 1.042-.842 2.139-1.3 3.163-.457 1.023-.793 1.935-1.162 2.94 0 .049.019.068.033 0 .89-1.954 1.694-4.001 2.54-6.004.431-1.023.9-1.991 1.354-2.99.454-.998.816-1.96 1.214-2.959.026-.061-.048-.098-.077-.024Zm6.824-3.619a16.105 16.105 0 0 1-1.554 1.998 33.857 33.857 0 0 0-1.591 1.898c-.998 1.376-1.845 3.033-2.502 4.895-.328.954-.588 1.97-.775 3.026-.185.937-.277 1.942-.421 2.91-.336 2.28-.927 4.376-1.377 6.589-.026.123.067.068.081 0 .44-1.985 1.034-3.914 1.33-5.985.167-.925.302-1.866.405-2.817.065-.562.162-1.111.292-1.64.123-.58.276-1.141.457-1.677.648-1.965 1.518-3.703 2.562-5.116a25.625 25.625 0 0 1 1.653-1.991 15.324 15.324 0 0 0 1.476-1.966c.041-.08.023-.21-.037-.124Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M100.26 140.15a22.774 22.774 0 0 1-1.971 3.261 33.168 33.168 0 0 0-1.986 2.706 25.714 25.714 0 0 0-1.531 3.237 28.401 28.401 0 0 0-1.107 4.043c0 .043.025.037.033 0 .188-.678.32-1.387.51-2.065.206-.729.453-1.425.737-2.077a24.88 24.88 0 0 1 1.657-3.341c.291-.425.598-.818.92-1.177.346-.438.678-.919 1.007-1.394a22.45 22.45 0 0 0 1.79-3.143c.015-.068-.026-.124-.059-.05Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M94.492 151.707c-.233.968-.484 1.917-.687 2.916-.203.998-.325 2.053-.55 3.026-.458 1.985-.993 3.909-1.377 5.937 0 .067.037.037.048 0 .465-1.998.986-3.945 1.447-5.943.222-.974.34-2.034.532-3.026.096-.487.18-.974.287-1.455.108-.481.244-.968.37-1.461 0-.08-.07-.043-.07.006Zm4.192-6.904c-.238.356-.461.739-.668 1.147-.28.512-.583.986-.86 1.504-.276.518-.45 1.048-.697 1.56a19.043 19.043 0 0 0-.683 1.627c-.369 1.085-.738 2.188-1.048 3.329a59.382 59.382 0 0 0-.76 3.938c0 .068.037.037.048 0 .2-.863.343-1.756.505-2.638 0 .043.052.031.07 0 .292-.801.536-1.652.82-2.465.03-.087-.03-.087-.052 0-.288.807-.535 1.652-.826 2.465.047-.246.092-.487.143-.727.259-1.233.739-2.287 1.108-3.452a15.61 15.61 0 0 1 .694-1.732c.232-.53.435-1.097.682-1.609.248-.512.51-.943.772-1.406.262-.462.494-.973.778-1.405.041-.136.026-.228-.025-.136Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M98.888 143.353a43.16 43.16 0 0 1-2.248 3.816c-.67 1.182-1.215 2.548-1.61 4.037-.442 1.579-.79 3.243-1.143 4.889a174.813 174.813 0 0 0-1.023 5.054c0 .093.048.05.06 0 .18-.783.31-1.59.486-2.379.178-.789.37-1.664.55-2.466.37-1.683.739-3.39 1.174-5.017.436-1.611 1.045-3.073 1.797-4.315.37-.617.739-1.172 1.108-1.757.32-.565.615-1.168.882-1.806.04-.068 0-.117-.034-.056Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M96.647 149.543c-.33.69-.625 1.426-.879 2.2-.03.099.052.068.07 0 .255-.764.58-1.448.86-2.188.03-.074-.03-.074-.051-.012Zm-.194 1.424c-.17.425-.32.869-.48 1.307-.018.055 0 .074.037 0 .181-.419.325-.882.495-1.313.03-.068-.03-.068-.052.006Zm-3.806 2.361a51.708 51.708 0 0 0-1.476 4.142 49.45 49.45 0 0 1-1.79 4.407c-.303.679-.546 1.424-.875 2.072a89.372 89.372 0 0 0-.945 1.917c-.31.647-.645 1.269-.952 1.935-.306.666-.642 1.282-.908 1.973-.022.061.023.086.045.037.598-1.326 1.24-2.595 1.875-3.871.317-.617.642-1.233.97-1.85.329-.616.58-1.374.882-2.058a50.63 50.63 0 0 0 1.698-4.186c.51-1.485.938-3.051 1.528-4.463.015-.068-.026-.123-.052-.055Zm-4.286 12.558c-.14.289-.284.579-.42.875a4.433 4.433 0 0 0-.185.407 4.068 4.068 0 0 1-.14.4c-.026.062 0 .136.037.074.111-.22.208-.459.288-.715.144-.339.299-.671.454-.998.026-.056-.008-.099-.034-.043Zm2.229-3.825a57.73 57.73 0 0 1-1.634 4.099 24.363 24.363 0 0 0-1.572 3.785c-.03.098.04.105.062 0a26.61 26.61 0 0 1 1.643-3.878 27.945 27.945 0 0 0 1.55-4.006c.022-.068-.026-.062-.048 0Zm-4.285-1.102c-.27.697-.52 1.412-.79 2.102s-.406 1.436-.642 2.133c-.236.696-.535 1.399-.805 2.102-.27.702-.52 1.559-.841 2.281-.033.073 0 .135.044.061.258-.594.496-1.211.713-1.849.28-.758.594-1.486.882-2.244.287-.758.439-1.553.7-2.299.263-.746.543-1.504.79-2.287.015-.062-.029-.055-.051 0Zm-2.045 5.081c-.26.727-.55 1.424-.867 2.083a8.407 8.407 0 0 0-.716 1.911c0 .068.03.043.044 0 .472-1.387 1.137-2.577 1.583-3.982.022-.068-.026-.068-.044-.012Zm1.777-1.678a71.106 71.106 0 0 0-2.026 5.097c-.037.105.033.142.07.062.336-.775.643-1.584.919-2.422.34-.913.69-1.813 1.078-2.669.03-.081-.011-.13-.04-.068Zm6.48-17.093c-.299.999-.62 1.972-.93 2.959-.27.875-.37 1.898-.602 2.817a45.445 45.445 0 0 0-.609 3.082 15.407 15.407 0 0 1-.885 3.359c-.336.808-.661 1.628-1.03 2.392-.428.894-.96 1.627-1.432 2.466-.472.838-.875 1.547-1.292 2.354-.476.913-.87 1.924-1.288 2.904-.037.086 0 .154.048.068a41.479 41.479 0 0 1 2.746-5.45 22.8 22.8 0 0 0 1.3-2.225c.394-.801.737-1.689 1.084-2.546.738-1.763.864-3.926 1.336-5.874.126-.53.255-1.06.37-1.603.094-.576.21-1.142.346-1.695.288-1.005.657-1.936.886-2.99.004-.055-.037-.018-.048-.018Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M93.613 143.78a61.308 61.308 0 0 0-2.16 5.455 20.745 20.745 0 0 0-.889 2.466c-.24.942-.442 1.91-.605 2.897 0 .105.07 0 .081 0 .207-.9.41-1.804.61-2.712.25-.901.554-1.758.907-2.558a66.098 66.098 0 0 1 2.096-5.443c.03-.117-.007-.173-.04-.105Zm-3.363 8.266a12.595 12.595 0 0 1-.668 1.585c-.244.456-.428.943-.657 1.417a17.283 17.283 0 0 1-.797 1.467 6.177 6.177 0 0 0-.506 1.233c-.04.117.044.117.074.037.19-.532.417-1.023.679-1.461.246-.41.476-.844.69-1.3.218-.469.406-.962.646-1.418.223-.471.42-.975.59-1.504.026-.117-.029-.117-.051-.056Zm-.608 2.749c-.081.203-.155.419-.248.616-.033.062 0 .117.037.05.096-.204.17-.432.259-.617.026-.099-.026-.105-.048-.049Zm8.592-19.478c-1.192 2.688-2.462 5.283-3.562 8.081a108.053 108.053 0 0 0-2.974 9.062c-.034.117.044.123.07 0 .915-2.953 1.827-5.893 2.893-8.71 1.108-2.91 2.395-5.628 3.614-8.408.033-.037-.008-.093-.041-.025Zm-6.243 17.153a58.576 58.576 0 0 0-1.162 3.89c-.03.104.059.055.077 0 .34-1.307.716-2.602 1.107-3.865.023-.062-.01-.062-.022-.025Zm6.434-19.09a38.241 38.241 0 0 0-1.35 3.23 73.17 73.17 0 0 1-1.536 3.736 89.554 89.554 0 0 0-1.388 3.421 78.948 78.948 0 0 0-1.306 3.581c-.037.111.04.111.07.031.83-2.324 1.76-4.543 2.66-6.781.211-.53.466-1.011.676-1.547.21-.536.48-1.233.738-1.88.491-1.233.934-2.546 1.477-3.698.026-.105-.011-.155-.04-.093Zm1.322-.573c-.716 1.393-1.325 2.941-1.993 4.395-.055.118 0 .216.07.093.694-1.43 1.277-2.971 1.975-4.414.044-.092-.008-.16-.052-.074Zm.802-.116a42.634 42.634 0 0 1-1.576 3.378c-.532 1.073-1.008 2.226-1.52 3.323-.514 1.097-1.016 2.071-1.529 3.082a29.118 29.118 0 0 0-1.244 3.249c-.03.074.026.104.052.043.461-1.097.823-2.3 1.34-3.329a109.194 109.194 0 0 0 1.524-3.119c.49-1.06.99-2.25 1.517-3.322a40.69 40.69 0 0 0 1.476-3.292c.052-.08-.015-.08-.04-.013Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M95.424 142.595c-.539 1.369-.941 2.867-1.498 4.223-.558 1.356-1.052 2.737-1.55 4.13-.034.092.036.092.062 0 .528-1.356.993-2.774 1.54-4.112.546-1.337.959-2.86 1.476-4.247.04-.043-.011-.043-.03.006Zm5.681-9.991c-.369.69-.612 1.51-.945 2.238a39.852 39.852 0 0 0-.926 2.139c-.638 1.658-1.321 3.267-1.941 4.931-.034.086.03.123.059.049a176.237 176.237 0 0 0 1.845-4.629c.325-.826.664-1.615 1.019-2.41.354-.795.575-1.56.919-2.262.044-.068 0-.124-.03-.056Zm.315.881c-.48 1.06-.956 2.139-1.417 3.224-.229.536-.417 1.115-.653 1.645-.237.531-.458 1.024-.672 1.554-.04.105.033.142.074.061.457-.97.883-1.98 1.277-3.026.214-.555.472-1.067.701-1.603.229-.536.476-1.202.738-1.794.037-.08-.011-.141-.048-.061Zm-.637 3.219a.863.863 0 0 0-.136.252c-.037.105-.063.216-.1.321-.037.105 0 .086.041.049a.596.596 0 0 0 .077-.228.783.783 0 0 1 .126-.283.14.14 0 0 0 .023-.04.217.217 0 0 0 .01-.053.046.046 0 0 0-.005-.021c-.003-.006-.007-.011-.012-.013-.004-.002-.009-.001-.013.001-.005.003-.008.008-.011.015Zm1.894-3.686c-.213.466-.401.963-.561 1.485-.221.666-.483 1.295-.738 1.948-.446 1.233-.867 2.423-1.336 3.606-.033.087.026.105.059.043.484-1.023.91-2.119 1.273-3.273.214-.616.443-1.196.661-1.794.218-.597.428-1.325.701-1.941.045-.099-.011-.173-.059-.074Zm-.605.29a7.608 7.608 0 0 0-.402 1.017c-.166.468-.339.93-.509 1.393-.033.086.029.086.055 0 .265-.83.566-1.625.901-2.38.04-.043-.004-.098-.045-.03Zm-10.748 29.555a5.191 5.191 0 0 0-.657 1.332 20.978 20.978 0 0 0-.687 1.707 42.157 42.157 0 0 0-1.28 4.044c-.03.105.055.055.073 0 .178-.666.37-1.319.584-1.967.214-.647.435-1.115.616-1.707a19.535 19.535 0 0 1 .985-2.398c.093-.242.194-.475.303-.696-.03.169-.069.334-.114.493-.06.259-.122.511-.185.764-.151.579-.317 1.147-.469 1.726a80.445 80.445 0 0 1-.502 1.849c-.151.518-.369.98-.494 1.504-.019.074.04.05.055 0 .196-.548.399-1.06.572-1.633.174-.573.37-1.282.524-1.936.155-.653.34-1.233.502-1.849.136-.376.22-.797.247-1.233-.003-.037-.047-.024-.073 0Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M90.14 166.55c-.18.567-.328 1.159-.502 1.732-.173.574-.369 1.054-.55 1.597-.022.074.023.098.049.037a39.153 39.153 0 0 0 1.048-3.347c.018-.068-.03-.074-.045-.019Zm1.227-5.72a18.288 18.288 0 0 1-.805 2.318c-.28.753-.534 1.533-.76 2.336-.107.358-.207.721-.31 1.085a8.542 8.542 0 0 1-.473 1.147 13.786 13.786 0 0 0-.66 1.849c0 .074.04.049.055 0 .244-.721.54-1.362.816-2.053.15-.331.285-.679.406-1.042.103-.369.207-.739.314-1.109.229-.803.484-1.585.764-2.342.282-.687.522-1.42.716-2.189.018-.074-.052 0-.063 0Zm3.076-1.653c-.701 1.622-.956 3.662-1.635 5.308-.336.814-.694 1.59-1 2.429-.177.474-.325.98-.502 1.454a6.97 6.97 0 0 0-.369 1.313c-.022.13.07.074.085 0 .227-.967.525-1.884.886-2.73.325-.876.708-1.683 1.052-2.534.645-1.615.944-3.538 1.546-5.196.018-.074-.037-.105-.063-.044Zm3.961-10.553c-.28.857-.62 1.652-.897 2.503-.276.85-.62 1.806-.937 2.712a67.749 67.749 0 0 0-.856 2.663c-.273.894-.443 1.787-.668 2.687-.466 1.85-.824 3.761-1.44 5.493-.302.85-.572 1.72-.897 2.539-.325.82-.65 1.566-.937 2.386-.04.111.04.117.07 0 .284-.764.62-1.467.915-2.225.155-.407.329-.771.465-1.233.137-.463.288-.882.443-1.313.292-.806.55-1.647.768-2.515.218-.9.369-1.849.62-2.706.258-.98.454-1.991.738-2.959s.546-1.714.808-2.608c.547-1.849 1.248-3.593 1.846-5.405.015-.056-.026-.062-.04-.019Zm4.229-11.922a66.585 66.585 0 0 1-.8 4.438 38.327 38.327 0 0 1-.982 4.278c-.402 1.337-.856 2.626-1.292 3.926-.225.678-.465 1.338-.683 2.01-.217.672-.369 1.338-.538 2.003-.023.08.029.08.044 0 .2-.659.369-1.344.564-1.997.196-.653.48-1.325.716-1.991.473-1.344.942-2.7 1.359-4.093.389-1.339.701-2.736.933-4.173a60.45 60.45 0 0 0 .739-4.457c.011-.061-.052.006-.06.056Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M102.272 136.672c-.436 1.264-.941 2.466-1.321 3.779a84.97 84.97 0 0 1-1.255 3.969c-.218.617-.443 1.233-.65 1.887a23.86 23.86 0 0 0-.458 1.886 47.044 47.044 0 0 1-1.107 3.92c-.033.093.034.087.056 0a28.807 28.807 0 0 0 1.107-3.6c.166-.671.262-1.349.465-1.997.203-.647.465-1.38.701-2.065a64.782 64.782 0 0 0 1.248-3.976c.372-1.356.845-2.539 1.266-3.803.036-.062-.026-.068-.052 0Zm-3.808 10.813c-.558 1.547-1.063 3.125-1.68 4.605a28.244 28.244 0 0 0-.708 2.059c-.262.789-.572 1.522-.82 2.33 0 .061.022.061.037 0 .273-.783.565-1.547.845-2.324.28-.777.513-1.554.83-2.293a63.836 63.836 0 0 0 1.544-4.371c.04-.061-.03-.061-.048-.006Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M101.602 140.648c-.164.32-.306.672-.42 1.048-.233.616-.436 1.233-.665 1.849a26.331 26.331 0 0 0-1.107 3.483c0 .062.037.031.048 0 .315-1.14.685-2.234 1.107-3.273.189-.493.369-.999.543-1.51.128-.452.28-.883.454-1.289a29.778 29.778 0 0 1-.919 3.65c-.414 1.232-.938 2.36-1.421 3.519a4.52 4.52 0 0 1-.126.265c.063-.129-.273.493-.254.296.04-.369.114-.724.221-1.054.177-.616.34-1.233.535-1.849.406-1.233.89-2.41 1.347-3.594.034-.08-.029-.08-.051 0-.487 1.233-1.023 2.423-1.443 3.748-.192.616-.343 1.233-.517 1.849-.085.308-.247.839-.177 1.19h.037c.317-.123.542-.943.738-1.344a46.6 46.6 0 0 0 .889-2.145 27.962 27.962 0 0 0 1.285-4.771c-.03-.093-.074-.111-.104-.068Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M100.323 144.73c-.162.345-.287.715-.435 1.073-.033.08 0 .142.048.061a3.95 3.95 0 0 0 .162-.437c.079-.226.165-.445.259-.654.04-.055-.008-.104-.034-.043Zm2.012-7.657c-.274.962-.687 1.776-.956 2.743-.03.111.04.111.07.031.347-.892.664-1.816.948-2.768.022-.08-.044-.061-.062-.006Zm1.411-4.179c-.276.925-.649 1.775-.941 2.694-.029.098.037.098.063 0 .34-.86.65-1.751.93-2.669.022-.087-.033-.087-.052-.025Zm.253.29a13.76 13.76 0 0 0-.764 2.182c-.092.406-.192.807-.269 1.232-.078.426-.081.851-.133 1.264-.24 1.893-.628 3.699-.923 5.579 0 .123.07.061.085 0 .369-1.726.653-3.471.923-5.24.058-.375.101-.756.129-1.14.05-.468.128-.927.232-1.369.193-.874.454-1.703.775-2.465.034-.105-.029-.105-.055-.043Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M104.204 133.208a44.699 44.699 0 0 0-.539 1.67c-.026.087.033.087.055 0 .181-.548.37-1.109.536-1.664.029-.062-.03-.068-.052-.006Zm.729-.117c-.291.715-.55 1.465-.775 2.243-.22.955-.397 1.935-.528 2.935-.295 1.917-.967 3.606-1.266 5.516 0 .099.052.05.063 0 .413-1.719.937-3.39 1.266-5.159.17-.9.284-1.849.458-2.731.215-.984.496-1.925.837-2.804.03-.074-.033-.074-.055 0Zm2.579.066c-.272.69-.518 1.406-.738 2.145-.222.765-.369 1.578-.58 2.361a58.007 58.007 0 0 1-1.509 4.975 55.56 55.56 0 0 0-1.55 4.629c-.229.882-.443 1.782-.691 2.651a27.436 27.436 0 0 0-.609 2.237c0 .062.034 0 .045 0 .413-1.59.878-3.143 1.31-4.721a57.425 57.425 0 0 1 1.609-4.735c.516-1.453.976-2.96 1.377-4.512.221-.826.406-1.67.605-2.509.222-.855.485-1.68.786-2.465.03-.124-.029-.124-.055-.056Zm-.514-.196c-.299 1.27-.804 2.373-1.085 3.649-.029.136.067.062.089 0 .336-1.233.812-2.355 1.067-3.643.018-.117-.056-.068-.071-.006Zm-.651.358c-.435 1.516-.889 3.021-1.292 4.568-.206.789-.409 1.578-.601 2.379a27.44 27.44 0 0 1-.558 2.201c-.169.524-.129-.617-.125-.74.026-.438.07-.875.114-1.307.098-.881.231-1.75.399-2.601.321-1.664.871-3.162 1.174-4.839.022-.111-.063-.062-.074 0-.369 1.917-.986 3.643-1.329 5.579-.077.462-.664 4.413-.28 4.352.177 0 .31-.617.369-.851.254-.962.465-1.954.712-2.928.495-1.954 1.03-3.877 1.543-5.819.014-.056-.041-.037-.052.006Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M105.968 133.528c-.295.789-.546 1.615-.886 2.355-.044.092-.206.517-.136.135.058-.326.132-.643.221-.949.185-.666.369-1.331.569-1.991.033-.105-.041-.111-.067 0-.275.81-.521 1.645-.738 2.503 0 0-.244 1.103-.029.856.168-.248.307-.547.409-.881.259-.634.493-1.298.698-1.985.018-.086-.022-.086-.041-.043Zm.336-.573a27.197 27.197 0 0 0-1.17 3.902c-.174.684-.395 1.325-.569 2.003-.166.703-.29 1.432-.369 2.176 0 .08.048 0 .059 0 .166-.616.259-1.344.399-2.003.14-.66.369-1.233.528-1.849.312-1.45.707-2.845 1.181-4.167.033-.081-.011-.142-.059-.062Zm-1.574 4.278a9.96 9.96 0 0 0-.432 2.022c0 .074.056 0 .059-.037a12.3 12.3 0 0 1 .421-1.954c.022-.087-.029-.093-.048-.031Zm.789.395a21.748 21.748 0 0 0-1.019 4.093c0 .074.048 0 .06 0 .147-.562.27-1.141.369-1.732.188-.789.406-1.554.631-2.318.037-.111-.019-.111-.041-.043Zm2.457-4.709c-.177.579-.402 1.122-.564 1.72-.211.776-.41 1.571-.624 2.348-.214.777-.465 1.529-.657 2.324a37.27 37.27 0 0 1-.69 2.466c-.465 1.485-.956 2.94-1.381 4.456-.424 1.517-.764 3.002-1.155 4.494 0 .068.037.049.052 0 .483-1.405.805-2.983 1.214-4.45.41-1.468.923-2.972 1.392-4.451.21-.666.398-1.356.583-2.046.24-.882.483-1.751.738-2.633.188-.69.369-1.35.542-2.065.174-.715.421-1.374.624-2.132.033-.118-.044-.124-.074-.031Zm-5.102 11.999c-.446 1.455-1.019 2.799-1.52 4.211-.502 1.411-1.041 3.014-1.584 4.499-.542 1.486-1.078 2.854-1.583 4.315a37.162 37.162 0 0 0-1.34 4.315c0 .062.037.043.048 0 .196-.69.388-1.387.594-2.071.207-.684.517-1.479.78-2.207.52-1.461 1.106-2.86 1.627-4.315.52-1.454 1.007-2.891 1.52-4.315.513-1.423 1.071-2.884 1.517-4.413.026-.086-.037-.093-.059-.019Zm-3.119 10.98c0-.044-.033-.044-.055 0-.188.203-.295.702-.41 1.011-.221.616-.468 1.152-.697 1.732a44.244 44.244 0 0 0-1.333 3.784c-.369 1.289-.878 2.466-1.27 3.699a45.77 45.77 0 0 0-.475 1.646 12.504 12.504 0 0 0-.391 1.578c0 .098.07 0 .08-.049.11-.585.26-1.147.444-1.677.158-.543.317-1.091.483-1.627.34-1.098.775-2.109 1.107-3.212a43.33 43.33 0 0 1 1.108-3.279c.417-1.067.811-2.004 1.188-3.027.026-.074.188-.616.107-.185a10 10 0 0 1-.144.771c-.151.616-.295 1.232-.461 1.849-.321 1.196-.639 2.392-.99 3.563a87.073 87.073 0 0 1-1.066 3.341 18.026 18.026 0 0 0-.849 2.872c0 .117.067.062.081 0a22.13 22.13 0 0 1 .978-3.143c.37-1.092.739-2.238 1.056-3.372.317-1.134.602-2.17.89-3.267.162-.617.32-1.233.453-1.85.11-.359.166-.756.166-1.158Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M97.871 161.447c-.457 1.51-.966 2.964-1.402 4.499-.391 1.387-.827 2.731-1.192 4.13 0 .068.037.05.048 0 .919-2.823 1.738-5.738 2.602-8.629.026-.062-.033-.068-.056 0Zm-2.335 7.125c-.1.388-.196.777-.295 1.159 0 .037.018.037.026 0 .128-.374.233-.768.313-1.177.019-.05-.033-.025-.044.018Zm3.801-13.044c-.34.956-.694 1.911-1.052 2.848-.026.074.022.099.048.043a37.96 37.96 0 0 0 1.044-2.878c.019-.062-.026-.062-.04-.013Zm-1.971 3.564c-.3.894-.569 1.8-.9 2.663-.333.863-.687 1.794-1.045 2.675-.358.882-.676 1.646-.975 2.515-.299.869-.586 1.85-.9 2.774-.033.105.037.099.066 0 .329-.832.58-1.72.875-2.583.295-.863.68-1.8 1.033-2.687.355-.888.654-1.671.967-2.515.314-.845.62-1.886.934-2.842.022-.062-.033-.062-.055 0Zm-1.428 5.233a60.19 60.19 0 0 1-1.081 2.836c-.38.93-.738 1.947-1.126 2.884-.03.074 0 .136.044.062.403-.937.757-1.948 1.144-2.897.388-.949.739-1.88 1.082-2.86.03-.093-.033-.093-.063-.025Zm.314-.179c-.458 1.393-.934 2.75-1.332 4.192-.037.136.055.111.08 0 .388-1.436.853-2.792 1.289-4.192.018-.049-.022-.049-.037 0Zm4.011-14.364c-.587 1.677-1.244 3.261-1.92 4.839a113.42 113.42 0 0 0-1.897 4.697c-1.232 3.243-2.446 6.504-3.554 9.863-.025.068.026.074.045 0 .55-1.535 1.107-3.082 1.642-4.617.616-1.714 1.288-3.366 1.927-5.061a134.164 134.164 0 0 1 1.989-4.974 63.356 63.356 0 0 0 1.823-4.753c.03-.043-.033-.043-.055.006Zm-7.301 17.976c-.236.715-.457 1.436-.694 2.145-.029.086.034.092.056 0 .236-.709.465-1.43.701-2.139.03-.074-.037-.08-.063-.006Zm5.429-16.624a183.278 183.278 0 0 1-1.384 4.315c-.254.758-.55 1.461-.778 2.243-.23.783-.44 1.511-.661 2.269-.037.117.044.117.074 0a40.23 40.23 0 0 0 .705-2.25c.218-.764.52-1.486.771-2.244.473-1.418.912-2.872 1.333-4.315.029-.086-.037-.092-.06-.018Zm-2.425 6.615c-.173.579-.34 1.171-.517 1.744-.018.055 0 .055.03 0 .203-.561.369-1.159.528-1.744h-.041Zm-.696-.403c-.066.197-.118.407-.177.616 0 .068.026.074.044 0 .06-.203.108-.413.174-.616.018-.043-.026-.043-.04 0Zm7.211-13.269c-.369 1.048-.738 2.058-1.107 3.082a21.006 21.006 0 0 0-.524 1.615c-.197.568-.411 1.12-.642 1.652-.037.092.026.117.063.049.433-.983.815-2.026 1.14-3.119.369-1.079.757-2.151 1.107-3.249.041-.092-.018-.092-.037-.03Zm-1.007 1.613c-.222.617-.458 1.159-.698 1.726-.026.068 0 .123.041.056.247-.574.479-1.159.697-1.763.022-.062-.011-.068-.04-.019Zm2.243-1.558c-.889 2.416-1.653 4.962-2.465 7.446-.185.561-.417 1.079-.572 1.664a87.97 87.97 0 0 0-.484 1.893c-.158.659-.258 1.325-.39 1.978-.134.654-.344 1.35-.48 2.047-.023.098.051.049.066 0a38.63 38.63 0 0 0 .852-3.699c.147-.668.321-1.319.521-1.948.191-.646.401-1.276.631-1.886.83-2.465 1.55-5.03 2.399-7.477.015-.08-.041-.08-.078-.018Zm-3.319 9.116c-.13.407-.273.801-.414 1.19-.026.08.03.086.052 0 .144-.395.28-.789.41-1.19.022-.055-.048-.062-.048 0Zm1.965-1.245c-.192.684-.428 1.325-.624 2.003a29.674 29.674 0 0 0-.52 2.158c-.17.813-.476 1.535-.69 2.311-.214.777-.344 1.43-.499 2.152a52.984 52.984 0 0 1-1.266 4.863 26.608 26.608 0 0 0-.538 2.01c-.185.783-.421 1.51-.628 2.268-.03.111.037.105.067 0 .48-1.288.738-2.768 1.147-4.099.467-1.468.88-2.981 1.241-4.531.18-.776.343-1.565.531-2.342.188-.777.476-1.517.69-2.299.214-.783.303-1.455.484-2.164.181-.709.45-1.553.668-2.33.026-.068-.041-.074-.063 0Zm-2.839 9.627a40.253 40.253 0 0 0-1.21 4.179c-.314 1.356-.783 2.577-1.108 3.927 0 .055.033.043.044 0 .168-.636.359-1.254.572-1.85.218-.53.395-1.103.528-1.707a43.1 43.1 0 0 1 1.233-4.506c.018-.099-.037-.105-.06-.043Zm-.974 1.455c-.446 1.177-.848 2.391-1.284 3.575-.214.586-.432 1.171-.62 1.781a6.08 6.08 0 0 0-.332 1.418c0 .111.07 0 .081 0a35.27 35.27 0 0 1 1.019-3.291c.402-1.135.771-2.306 1.184-3.434.034-.105-.022-.105-.047-.049Zm-1.867 6.374a3.258 3.258 0 0 1-.084.543c0 .043.022.037.033 0 .07-.184.108-.398.11-.617.007-.012-.037.074-.059.074Zm3.518-11.952c-.192.617-.417 1.233-.612 1.85-.022.067.026.067.044 0 .214-.617.428-1.233.62-1.85.022-.055-.029-.061-.052 0Zm1.28-5.16a29.07 29.07 0 0 0-.687 2.607c-.018.105.056.056.071 0 .214-.875.439-1.732.675-2.589.022-.086-.037-.068-.059-.018Zm1.348-.474a35.229 35.229 0 0 0-1.325 4.642c-.022.099.052.062.07 0 .21-.677.389-1.38.535-2.102.203-.868.45-1.706.739-2.503.062-.092.003-.092-.019-.037Zm5.186-11.218a22.61 22.61 0 0 1-.709 2.034c-.254.697-.502 1.399-.767 2.09-.266.69-.561 1.368-.86 2.034-.24.536-.51 1.06-.716 1.633a63.16 63.16 0 0 0-1.244 4.155c-.369 1.344-.72 2.712-1.074 4.075 0 .055.033.043.044 0 .399-1.4.738-2.83 1.159-4.223.203-.696.425-1.374.635-2.071.208-.745.446-1.466.712-2.157.499-1.233 1.067-2.324 1.543-3.563.262-.685.506-1.4.738-2.102.23-.613.435-1.252.613-1.911.015-.099-.059-.05-.074.006Zm-1.894 9.795c-.277.616-.484 1.288-.738 1.91-.255.623-.609 1.369-.915 2.047-.307.678-.521 1.233-.761 1.849a20.402 20.402 0 0 0-.561 1.967 53.08 53.08 0 0 0-.93 4.758c-.277 1.628-.708 3.181-.989 4.808 0 .099.052.05.066 0 .329-1.473.68-2.94.967-4.432.247-1.573.546-3.122.894-4.641.188-.697.343-1.43.564-2.102.256-.714.536-1.404.838-2.065l.834-1.905c.292-.672.495-1.436.786-2.108.034-.105-.014-.185-.055-.086Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M102.527 162.568c-.199.993-.339 1.997-.594 2.959a39.568 39.568 0 0 0-.686 3.125c-.022.13.066.062.085 0 .243-.967.402-1.985.66-2.952.236-1.021.433-2.064.591-3.126.029-.092-.045-.055-.056-.006Zm.174 2.461c-.37 1.498-.801 2.959-1.163 4.469-.022.092.048.055.066 0 .206-.637.38-1.301.521-1.985.214-.832.435-1.658.635-2.497.018-.074-.045-.037-.059.013Zm.039 1.127c-.151.524-.284 1.054-.432 1.584-.022.08.03.08.048 0 .155-.518.277-1.06.421-1.59.018-.037-.022-.043-.037.006Zm4.112-14.45a68.085 68.085 0 0 0-.653 4.641c-.084.88-.207 1.747-.369 2.596-.19.84-.438 1.64-.738 2.385-.524 1.381-1.045 2.743-1.506 4.186a32.888 32.888 0 0 0-.576 2.071 22.275 22.275 0 0 1-.59 2.262c-.041.105.04.111.07 0 .214-.625.395-1.281.539-1.96.206-.795.421-1.591.664-2.355.48-1.504 1.034-2.916 1.576-4.352.497-1.337.838-2.82 1.004-4.37.207-1.726.413-3.44.686-5.147.03-.13-.088-.08-.107.043Zm-.51.45c-.14.574-.247 1.171-.388 1.745-.026.098.056.055.07 0 .133-.574.237-1.165.369-1.745.019-.086-.04-.049-.051 0Zm4.434-14.898a46.427 46.427 0 0 0-.96 3.291c-.273 1.165-.612 2.275-.926 3.415-.284 1.03-.602 2.016-.849 3.082a97.418 97.418 0 0 1-.945 3.662c-.022.08.045.061.063 0 .317-1.097.639-2.195.923-3.323.284-1.128.598-2.145.889-3.23.62-2.299 1.192-4.623 1.846-6.879.033-.08-.023-.08-.041-.018Zm1-4.395c-.177.616-.388 1.177-.579 1.763-.192.585-.369 1.356-.565 2.015-.044.142.048.136.085.037.218-.616.35-1.233.535-1.849.184-.616.417-1.276.587-1.935.048-.118-.033-.13-.063-.031Zm.671.136a49.246 49.246 0 0 0-1.181 3.606c-.369 1.375-.561 2.872-.857 4.315-.295 1.442-.638 2.749-.97 4.099-.369 1.455-.705 2.916-1.126 4.315-.033.111.041.111.07.031.831-2.528 1.381-5.289 2.041-7.946.347-1.393.55-2.866.845-4.315a35.206 35.206 0 0 1 1.24-4.08c.03-.093-.036-.099-.062-.025Zm.466-.113c-.236 1.313-.565 2.583-.82 3.89a236.556 236.556 0 0 1-.863 4.216c-.262 1.233-.569 2.466-.86 3.699-.155.616-.34 1.233-.48 1.898-.14.666-.251 1.313-.369 1.973 0 .092.055.049.066 0 .27-1.233.532-2.466.86-3.699a96.85 96.85 0 0 0 .934-3.865c.288-1.294.554-2.681.823-4.025.27-1.344.565-2.706.797-4.074.015-.148-.055-.093-.088-.013Zm-3.29 13.199c-.196.616-.413 1.19-.58 1.849-.166.66-.298 1.319-.453 1.979a51.714 51.714 0 0 0-.864 4.377c-.115.795-.181 1.602-.303 2.397a33.108 33.108 0 0 1-.439 2.146c-.339 1.522-.679 3.045-1 4.58 0 .092.048.049.059 0a86.742 86.742 0 0 0 1.757-8.63c.2-1.545.482-3.057.841-4.519.159-.653.288-1.331.432-1.991.172-.728.376-1.435.609-2.114.037-.123-.026-.123-.059-.074Zm-1.177 8.581c-.21.955-.48 1.886-.657 2.86-.018.105.059.055.07 0 .203-.962.443-1.893.646-2.854.011-.074-.048-.006-.059-.006Zm.664-4.574c-.126.505-.255 1.004-.369 1.51-.022.08.044.043.059 0l.369-1.504c.015-.086-.044-.056-.059-.006Zm1.917-6.065a29.477 29.477 0 0 0-1.033 4.543 61.75 61.75 0 0 1-.949 5.048c-.657 3.193-1.387 6.349-2.059 9.536 0 .093.052.043.066 0 .399-1.541.738-3.144 1.107-4.715.17-.777.311-1.572.48-2.343.17-.77.369-1.522.51-2.293.365-1.541.674-3.118.926-4.722.091-.904.226-1.794.402-2.663.185-.807.41-1.584.613-2.373.011-.092-.048-.074-.063-.018Zm-4.037 16.833a47.264 47.264 0 0 0-1.21 4.778c-.167.832-.37 1.645-.521 2.465-.081.401-.159.808-.243 1.233a2.965 2.965 0 0 0-.119.684c0 .068.06 0 .063-.037.056-.288.129-.567.218-.832.084-.341.158-.688.221-1.042.155-.77.333-1.522.484-2.293a59.099 59.099 0 0 1 1.166-4.931c.026-.055-.037-.092-.059-.025Zm-.589 3.773c-.218.869-.454 1.708-.653 2.589-.199.882-.369 1.849-.554 2.749-.022.105.056.056.071 0 .199-.912.369-1.849.564-2.755.096-.401.181-.801.273-1.233.093-.431.266-.9.369-1.381.008-.074-.055-.018-.07.031Zm.414-.926c-.285.872-.504 1.8-.653 2.762 0 .086.055 0 .062 0 .111-.456.2-.931.299-1.4.1-.468.24-.9.369-1.35.004-.11-.066-.067-.077-.012Zm-.177-5.843c-.524 2.034-1.148 3.988-1.694 6.004-.273 1.005-.613 1.942-.852 2.971a38.13 38.13 0 0 0-.595 2.977c-.018.118.063.056.078 0 .229-.924.395-1.88.616-2.804.251-1.024.572-1.967.845-2.965.565-2.059 1.163-4.075 1.669-6.164.022-.136-.034-.074-.067-.019Zm-1.399 6.559c-.111.037-.203.339-.262.475a9.696 9.696 0 0 0-.414 1.362 35.798 35.798 0 0 0-.808 3.661c0 .099.055.056.066 0 .153-.901.342-1.784.565-2.644.195-.862.442-1.688.738-2.466.078-.185.129.043.122.179-.029.298-.07.592-.122.882-.066.45-.147.887-.229 1.331a68.395 68.395 0 0 1-.542 2.786c-.026.099.051.074.07 0 .274-1.097.496-2.229.664-3.384.037-.228.428-2.275.152-2.182Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M104.664 166.691c-.111.53-.196 1.067-.31 1.591a9.268 9.268 0 0 0-.218 1.282c0 .092.059 0 .067 0 .188-.943.328-1.911.516-2.854.015-.099-.044-.068-.055-.019Zm2.166-10.283c-.148.574-.369 1.085-.517 1.646-.133.456-.236.956-.35 1.424a40.493 40.493 0 0 1-.99 3.434c-.343 1.029-.701 2.04-1.011 3.082a29.523 29.523 0 0 0-.79 3.143c0 .099.052.05.063 0a59.38 59.38 0 0 1 1.901-6.361c.35-1.012.653-2.067.908-3.156.114-.524.243-1.036.369-1.56.125-.524.343-1.091.48-1.664.018-.08-.048-.037-.063.012Zm-4.494.594c-.178.481-.333.983-.465 1.504-.158.555-.343 1.085-.52 1.621a200.387 200.387 0 0 0-1.089 3.366c-.35 1.128-.675 2.065-.952 3.15-.14.567-.304 1.117-.491 1.645-.173.475-.258 1.005-.417 1.486-.026.074.022.068.044 0 .163-.413.24-.894.395-1.313.19-.471.36-.961.513-1.467.31-1.116.646-2.195.982-3.292.336-1.097.709-2.25 1.067-3.372.173-.542.343-1.078.505-1.627.143-.578.303-1.144.48-1.695.029-.062-.03-.062-.052-.006Zm-1.705 6.053c-.369 1.06-.683 2.207-1.004 3.31-.321 1.103-.553 2.392-.922 3.489-.023.068.025.068.044 0 .369-1.085.616-2.343.948-3.477.332-1.134.631-2.237.986-3.316.029-.068-.03-.068-.052-.006Zm.824-1.329c-.631 2.323-1.384 4.573-1.897 6.984 0 .092.048.061.066 0 .31-1.079.58-2.189.86-3.286.318-1.233.687-2.466 1.015-3.698.004-.062-.033-.037-.044 0Zm-1.332 6.926a6.237 6.237 0 0 0-.196.968c0 .08.056 0 .063-.037a8.26 8.26 0 0 1 .185-.937c.018-.074-.041-.043-.052.006Zm4.034-15.386c-.133.584-.3 1.146-.498 1.676a91.853 91.853 0 0 0-.546 1.757c-.332 1.147-.627 2.324-.941 3.483-.314 1.159-.439 2.466-.698 3.698-.258 1.233-.598 2.583-.882 3.884-.029.129.074.068.092 0 .307-1.233.595-2.466.883-3.699.287-1.233.409-2.743.778-4.025.332-1.14.602-2.33.923-3.477.166-.616.351-1.165.531-1.744.181-.495.329-1.019.443-1.566.022-.123-.07-.067-.085.013Zm5.711-16.681c-.554 3.286-1.609 6.263-2.358 9.45-.189.795-.322 1.621-.528 2.404-.207.783-.45 1.628-.698 2.429-.465 1.498-.93 2.996-1.38 4.506-.026.086.033.092.052 0 .468-1.504.952-2.996 1.432-4.488.474-1.516.88-3.091 1.214-4.709.181-.826.428-1.609.635-2.416.206-.808.369-1.578.598-2.355a49.791 49.791 0 0 0 1.107-4.845c.007-.08-.063-.037-.074.024Zm-.451.384c-.414 1.276-.838 2.552-1.218 3.853-.38 1.3-.76 2.817-1.185 4.191a54.857 54.857 0 0 1-1.273 3.797 28.48 28.48 0 0 0-1.174 3.459c-.04.16.092.08.118 0 .349-1.234.756-2.42 1.218-3.545.454-1.171.827-2.41 1.211-3.655.384-1.245.738-2.682 1.107-4.007.369-1.325.812-2.712 1.229-4.056.033-.092-.015-.092-.033-.037Zm-4.222 14.404c-.111.399-.234.788-.369 1.165-.03.08.029.08.052 0 .139-.378.262-.772.369-1.178-.008-.043-.052-.03-.052.013Zm3.831-18.411c-.247.998-.513 1.972-.775 2.952-.291 1.091-.52 2.219-.83 3.292-.569 1.954-1.152 3.883-1.617 5.918-.018.08.044.036.056 0 .542-2.041 1.136-4.032 1.719-6.041.277-.968.484-1.998.739-2.984.254-.986.531-2.083.775-3.144.022-.098-.052-.049-.067.007Zm-2.964 10.073c-.417 1.584-.849 3.18-1.321 4.715-.03.093.033.093.059 0 .28-.789.465-1.658.697-2.466.233-.807.417-1.504.609-2.262.019-.068-.033-.031-.044.013Zm3.391-10.389c-.498 1.948-1.107 3.84-1.457 5.893-.019.111.055.049.07 0 .516-1.935.996-3.927 1.454-5.899.022-.099-.052-.056-.067.006Zm.476.557c-.225.875-.572 1.658-.79 2.539-.022.081.041.05.059 0a21.72 21.72 0 0 0 .794-2.552c.022-.098-.048-.043-.063.013Zm.518-.113c-.363.87-.682 1.79-.952 2.749-.162.524-.369 1.018-.528 1.541-.158.524-.273 1.11-.42 1.652-.026.081.025.074.048 0 .132-.369.244-.759.332-1.165.158-.585.341-1.151.546-1.695a45.21 45.21 0 0 1 1.019-3.082c.029-.043-.011-.098-.045 0Zm-.086.932c-.177.685-.369 1.356-.553 2.034-.022.068.037.05.051 0 .211-.659.369-1.362.558-2.052.003-.068-.056-.031-.056.018Zm.488-.876c-.155.826-.369 1.591-.553 2.398a7.766 7.766 0 0 0-.115 1.097c-.033.5-.136.98-.195 1.467 0 .099.07 0 .077 0 .07-.376.133-.752.185-1.134.052-.382.066-.955.144-1.418.083-.385.178-.764.284-1.134.092-.413.162-.838.236-1.233.015-.141-.051-.098-.063-.043Zm.435-.227c-.114.406-.21.819-.306 1.232-.023.087.044.05.059 0 .099-.406.192-.819.299-1.232.018-.062-.041-.044-.052 0Zm4.37.468a59.274 59.274 0 0 0-1.085 5.048c-.026.142.074.074.096 0 .369-1.664.657-3.396 1.067-5.048.026-.117-.059-.068-.078 0Zm.91.635c-.144.573-.295 1.14-.443 1.714-.018.074.037.055.052 0a26.26 26.26 0 0 0 .461-1.726c0-.08-.059-.043-.07.012Zm39.115 13.246a19.785 19.785 0 0 0-.878-3.291 16.407 16.407 0 0 0-1.258-2.731c-.24-.425-.48-.851-.713-1.282-.232-.432-.483-.709-.69-1.128-.026-.05-.096.08-.074.129.164.338.34.657.528.956.236.413.454.856.683 1.288.516.914.975 1.911 1.373 2.977.37 1.025.666 2.119.882 3.261.221 1.196.443 2.386.738 3.557 0 .068.085-.043.074-.093-.218-1.177-.458-2.41-.665-3.643Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M154.31 144.096a36.792 36.792 0 0 0-1.255-2.848c-.018-.05-.066.037-.051.08.369.943.834 1.744 1.17 2.724a23.6 23.6 0 0 1 .786 3.261c0 .062.077-.037.07-.086a19.726 19.726 0 0 0-.72-3.131Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M162.633 164.91a21.15 21.15 0 0 0-.646-1.849c-.229-.616-.369-1.276-.601-1.849a139.674 139.674 0 0 0-1.455-3.779c-.45-1.128-.9-2.262-1.339-3.402-.236-.617-.447-1.233-.701-1.85-.255-.616-.525-1.3-.761-1.972-.86-2.466-1.328-5.283-2.214-7.755-.439-1.105-.976-2.09-1.595-2.922-.62-.924-1.476-1.325-1.952-2.527-.022-.055-.081.049-.063.093.369 1.047 1.056 1.645 1.646 2.323.33.421.633.896.905 1.418.318.504.606 1.06.859 1.658a33.527 33.527 0 0 1 1.108 3.699c.35 1.362.682 2.731 1.107 4.031.424 1.301.952 2.398 1.402 3.625a103.11 103.11 0 0 0 1.41 3.575c.484 1.177.978 2.466 1.451 3.76.225.617.42 1.233.616 1.849.196.617.506 1.32.738 1.998.026.074.104-.056.085-.124Zm-8.019-25.236a16.419 16.419 0 0 0-.679-1.529c-.266-.555-.458-1.196-.709-1.769-.487-1.104-.904-2.281-1.38-3.391-.037-.086-.125.068-.096.142.458 1.141.856 2.33 1.343 3.446.229.53.403 1.134.654 1.634.251.499.546 1.035.812 1.565.018.037.066-.061.055-.098Zm-.332.198a36.836 36.836 0 0 1-1.204-2.86c0-.049-.07.043-.055.086a20.658 20.658 0 0 0 1.211 2.861c.025.049.073-.037.048-.087Zm-3.422-4.895c-.24-.74-.528-1.449-.738-2.195-.022-.08-.104.056-.085.124.1.345.225.665.339.992.131.406.275.799.432 1.177.011.062.067-.043.052-.098Zm-.03-1.504c-.041-.136-.104-.253-.148-.388-.044-.136-.066.037-.055.08.011.043.107.253.151.388.044.136.063-.037.052-.08Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M158.597 150.35a74.198 74.198 0 0 1-2.934-7.397 14.152 14.152 0 0 0-.583-1.504 2.25 2.25 0 0 0-.277-.401c-.166-.222-.325-.487-.476-.733a46.18 46.18 0 0 1-1.698-2.977c-.022-.044-.085.073-.067.117.469.986 1.012 1.886 1.532 2.798.258.444.591.808.827 1.276.242.492.456 1.02.638 1.578a90.08 90.08 0 0 0 2.953 7.397c.026.074.114-.074.085-.154Zm.555-.616a53.826 53.826 0 0 0-1.708-4.099c-.628-1.332-1.185-2.713-1.742-4.13-1.108-2.817-1.92-5.943-3.045-8.741-.026-.068-.1.061-.078.117.506 1.331.923 2.761 1.373 4.148a74.454 74.454 0 0 0 1.587 4.445c1.107 2.86 2.462 5.449 3.547 8.352.022.074.081-.024.066-.092Zm-1.401-4.869a110.243 110.243 0 0 0-1.285-3.316c-.446-1.085-.911-2.115-1.295-3.261a162.125 162.125 0 0 0-1.178-3.39c-.195-.555-.369-1.135-.586-1.671-.041-.105-.119-.357-.211-.308-.029 0-.07.148-.022.136.048-.013.34.906.369.973.17.524.343 1.048.524 1.566.369 1.06.738 2.139 1.107 3.206.369 1.066.834 2.052 1.263 3.082.428 1.029.83 2.077 1.236 3.125.018.074.103-.074.078-.142Zm3.836 5.196c-1.215-2.823-2.639-5.375-3.968-8.013a45.342 45.342 0 0 1-1.805-4.395 61.34 61.34 0 0 0-1.727-4.192c-.022-.055-.085.049-.063.099 1.189 2.7 2.082 5.763 3.351 8.365.665 1.368 1.384 2.662 2.063 4.019.68 1.356 1.362 2.878 2.078 4.271.023.019.093-.104.071-.154Zm-3.331-8.341c-.295-.678-.646-1.307-.978-1.941a30.142 30.142 0 0 1-1.107-2.404c-.336-.808-.698-1.579-1.012-2.411-.136-.358-.26-.731-.369-1.115a6.618 6.618 0 0 0-.328-.876c-.022-.049-.07.037-.055.08.228.672.406 1.387.638 2.053.308.838.642 1.648 1 2.429a52.979 52.979 0 0 0 2.167 4.265c.018.037.059-.043.044-.08Zm5.027 14.136c-.597-1.547-1.277-3.014-1.911-4.518-.635-1.504-1.229-2.922-1.89-4.315-.661-1.393-1.373-2.706-1.982-4.149a130.778 130.778 0 0 1-1.845-4.66c0-.043-.063.037-.048.068.561 1.541 1.107 3.082 1.716 4.58.609 1.498 1.31 2.792 1.963 4.179 1.37 2.904 2.584 5.992 3.938 8.907.026.031.074-.049.059-.092Zm1.703 7.1c-.321-.795-.676-1.553-1.026-2.305-.351-.752-.709-1.665-1.052-2.509-.617-1.51-1.211-3.039-1.897-4.469-.026-.056-.1.08-.078.135.631 1.48 1.303 2.935 1.868 4.494.612 1.695 1.424 3.15 2.1 4.777.011.074.085-.061.085-.123Zm3.234 5.234c-1.547-3.804-3.263-7.397-4.868-11.133-.794-1.849-1.665-3.606-2.473-5.443-.399-.912-.834-1.775-1.236-2.687-.403-.913-.801-1.85-1.218-2.799-.019-.043-.067.043-.048.074.409.931.782 1.911 1.173 2.866.392.956.801 1.85 1.196 2.743.794 1.85 1.654 3.619 2.473 5.443a219.7 219.7 0 0 0 2.487 5.388c.853 1.769 1.654 3.735 2.459 5.634.022.049.073-.049.055-.086Zm-1.295 1.497a21.645 21.645 0 0 0-.879-2.183c-.314-.733-.613-1.479-.915-2.225-.624-1.522-1.266-3.026-1.905-4.531-.638-1.504-1.332-3.082-1.967-4.666-.635-1.584-1.406-3.026-2.033-4.629 0-.043-.059.037-.048.074.583 1.578 1.284 3.014 1.911 4.543.628 1.529 1.281 3.144 1.942 4.697.66 1.553 1.269 3.033 1.908 4.543.638 1.51 1.277 2.99 1.904 4.5.03.068.104-.062.082-.123Zm-1.279-.58a17.833 17.833 0 0 0-1.029-2.608c-.399-.9-.761-1.849-1.134-2.768-.372-.918-.682-1.744-1.037-2.607-.354-.863-.808-1.782-1.173-2.718-.713-1.807-1.525-3.483-2.281-5.234-.395-.906-.738-1.849-1.107-2.798a20.333 20.333 0 0 0-.997-2.491c-.022-.043-.074.062-.052.105.383.855.724 1.76 1.019 2.706.317.912.664 1.788 1.026 2.651.738 1.763 1.569 3.421 2.307 5.19.369.869.738 1.695 1.107 2.546.369.85.738 1.849 1.107 2.774.369.924.694 1.75 1.059 2.607.366.857.779 1.794 1.108 2.731.044.043.092-.043.077-.086Zm-1.215-1.212a11.5 11.5 0 0 1-.336-.888c0-.03-.041 0-.034.056.102.303.216.596.34.875 0 0 .041-.025.03-.043Zm-.742 2.507c-.509-1.474-1.089-2.867-1.58-4.365-.491-1.497-.989-2.94-1.557-4.351-.27-.698-.515-1.42-.735-2.164a29.845 29.845 0 0 0-.738-2.145 111.425 111.425 0 0 1-1.624-4.377c-.018-.043-.062.037-.051.074.479 1.467.956 2.91 1.498 4.315.269.703.546 1.412.775 2.158.229.745.476 1.59.764 2.342.532 1.368 1.045 2.731 1.502 4.173a41.917 41.917 0 0 0 1.698 4.444c.007.05.066-.055.048-.104Zm.419-.769a8.072 8.072 0 0 0-.558-1.461c-.265-.586-.491-1.233-.738-1.819-.026-.055-.085.05-.066.093.446 1.085.878 2.182 1.31 3.279.011.062.066-.043.052-.092Zm-.106-1.306a17.771 17.771 0 0 0-.609-1.689c-.022-.062-.081.043-.062.092.103.29.21.573.313.857.086.296.187.578.303.844.022.043.066-.061.055-.104Zm-1.452-5.741a20.604 20.604 0 0 0-.738-1.591c-.019-.037-.067.05-.052.087.247.524.498 1.048.738 1.59.015.049.067-.043.052-.086Zm5.349 6.781a13.513 13.513 0 0 0-.568-1.313c-.203-.493-.395-.999-.605-1.479a41.655 41.655 0 0 0-1.181-2.571c-.023-.049-.093.08-.071.123.395.851.739 1.751 1.137 2.614.367.965.77 1.889 1.207 2.768.033.055.118-.086.081-.142Zm1.384.21c-.697-1.332-1.284-2.83-1.904-4.254-.62-1.424-1.414-2.78-2.089-4.222-.022-.049-.081.049-.059.092.661 1.461 1.395 2.805 2.037 4.315.321.752.642 1.511.975 2.256.27.727.598 1.391.974 1.973.033.025.092-.111.066-.16Zm.925.234c-.266-.777-.646-1.455-.953-2.195-.306-.739-.668-1.59-.989-2.404-.321-.813-.708-1.633-1.041-2.465-.332-.833-.738-1.807-1.107-2.7-.694-1.671-1.41-3.317-2.1-4.993-.328-.795-.69-1.56-1.044-2.33a32.063 32.063 0 0 1-1.108-2.392c-.022-.056-.077.043-.062.086.308.796.644 1.56 1.007 2.287.35.777.695 1.56 1.037 2.349.739 1.701 1.44 3.439 2.152 5.165.635 1.533 1.272 3.064 1.912 4.593-.491-1.098-1.048-2.121-1.587-3.156-.712-1.369-1.307-2.922-1.96-4.371a187.169 187.169 0 0 1-1.819-4.173c-.026-.062-.089.049-.067.099.58 1.43 1.155 2.86 1.768 4.253.613 1.393 1.163 2.823 1.816 4.13s1.384 2.583 1.989 3.994a40.174 40.174 0 0 0 1.864 4.05c.018.037.066-.055.052-.098a27.474 27.474 0 0 0-.351-.845c.194.389.37.801.528 1.233.007.018.077-.074.063-.117Zm1.65-.111a31.762 31.762 0 0 0-.69-1.448c.041 0 .092-.099.07-.154-.472-1.196-.838-2.503-1.27-3.748a40.379 40.379 0 0 0-1.328-3.699 24.263 24.263 0 0 0-1.624-2.841 64.54 64.54 0 0 1-1.916-3.199c-.022-.05-.081.067-.055.117a82.082 82.082 0 0 0 1.786 3.137 30.057 30.057 0 0 1 1.742 3.138c.46 1.136.883 2.313 1.266 3.526.425 1.177.783 2.428 1.251 3.55a19.896 19.896 0 0 1-.823-1.849c-.461-1.233-.926-2.466-1.384-3.736-.022-.055-.081.044-.066.093.908 2.466 1.727 5.122 2.982 7.2.022.055.074-.043.059-.087Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M169.412 165.089a64.464 64.464 0 0 0-2.214-5.431c-.026-.056-.081.049-.063.092.369.857.738 1.745 1.107 2.608s.713 1.911 1.107 2.817c.019.049.063-.031.063-.086Zm3.241 5.08a7.573 7.573 0 0 0-.406-.783c-.144-.296-.299-.616-.443-.888 0-.037-.066.056-.051.093.269.579.55 1.134.849 1.664.022.037.062-.049.051-.086Zm3.707-.013c-.446-.777-.9-1.541-1.373-2.281-.472-.74-.923-1.658-1.391-2.466-.967-1.689-1.816-3.557-2.779-5.258-.964-1.701-2.019-3.279-3.086-4.851a32.156 32.156 0 0 1-1.476-2.355 25.973 25.973 0 0 1-1.351-2.65c-.018-.043-.066.037-.052.074.359.865.752 1.689 1.178 2.465.444.865.92 1.682 1.424 2.447 1.049 1.591 2.104 3.132 3.082 4.839.978 1.708 1.845 3.545 2.79 5.265.458.826.912 1.695 1.395 2.465.484.771 1.041 1.658 1.558 2.466.04.068.118-.093.081-.16Zm-2.776-.517c-.262-.746-.586-1.424-.874-2.145-.288-.721-.565-1.418-.849-2.121a34.465 34.465 0 0 0-1.846-3.877c-1.402-2.509-2.683-5.203-4.251-7.434-.019 0-.052.049-.033.074 1.527 2.194 2.745 4.931 4.122 7.397a32.165 32.165 0 0 1 1.901 4.007c.568 1.43 1.107 2.897 1.731 4.259.037.074.125-.08.099-.16Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M173.037 168.96a370.042 370.042 0 0 0-1.989-4.5c-.018-.043-.066.037-.052.074.665 1.51 1.27 3.082 1.982 4.53.022.043.078-.061.059-.104Zm.159-2.059c-.369-.912-.834-1.757-1.255-2.613-.48-.974-.982-1.924-1.476-2.891-.495-.968-.997-1.967-1.51-2.928a26.708 26.708 0 0 0-.738-1.32c-.262-.431-.568-.832-.83-1.3-.019-.031-.063.055-.045.092.469.869.982 1.658 1.44 2.54.457.881.956 1.849 1.424 2.786.956 1.917 2.001 3.699 2.923 5.69.041.037.078-.031.067-.056Zm1.162 1.043c-.424-.807-.86-1.596-1.288-2.398-.018 0-.063.05-.044.087.779 1.498 1.561 2.989 2.321 4.518.019.037.059-.055.048-.086-.3-.766-.647-1.477-1.037-2.121Zm.34 1.56a17.256 17.256 0 0 0-.916-1.733s-.051.044-.037.074c.292.617.613 1.147.908 1.733.015.03.056-.044.045-.074Zm2.911.017c-.454-.95-1-1.794-1.502-2.669-.502-.876-1-1.77-1.52-2.626-1.071-1.763-2.196-3.422-3.292-5.135-2.171-3.39-3.828-7.446-5.514-11.496-.026-.062-.093.055-.07.104 1.609 4.093 3.24 8.1 5.381 11.484 1.107 1.72 2.214 3.378 3.295 5.123 1.082 1.744 2.06 3.643 3.174 5.313.023.043.067-.055.048-.098Zm.508.247c-.506-.888-.949-1.85-1.436-2.805-.487-.955-.985-2.01-1.476-3.033a32.089 32.089 0 0 0-1.432-2.539 31.108 31.108 0 0 1-.771-1.431c-.251-.486-.532-.819-.779-1.269-.476-.857-1.026-1.603-1.517-2.466a36.796 36.796 0 0 1-1.458-3.144c-.919-2.028-1.971-3.859-2.882-5.893-.023-.049-.082.05-.063.093.804 2.151 1.912 3.951 2.82 5.979.435.974.845 1.997 1.325 2.91.479.912 1.074 1.707 1.598 2.582.228.382.479.728.708 1.11.229.382.51.955.772 1.418.553.98 1.147 1.849 1.653 2.921.443.931.867 1.85 1.34 2.756.472.906.993 1.985 1.546 2.885.026.061.074-.031.052-.074Zm-6.649-13.413c-.45-.98-.985-1.849-1.421-2.842-.435-.992-.908-2.009-1.373-3.008a57.724 57.724 0 0 0-2.746-5.184 133.84 133.84 0 0 1-3.207-5.702c-.502-.937-.948-1.941-1.421-2.922-.472-.98-1.048-2.009-1.535-3.082-.026-.055-.089.056-.067.099.451 1.023.938 2.009 1.407 3.008.468.999.863 1.905 1.328 2.811 1.019 1.991 2.137 3.846 3.219 5.739.509.887 1.037 1.738 1.528 2.663.49.924.919 1.812 1.358 2.749.439.937.959 1.942 1.413 2.946.454 1.005.975 1.85 1.477 2.78.011.056.055-.024.04-.055Zm-10.447-18.751a69.633 69.633 0 0 0-1.012-2.534c-.35-.826-.686-1.454-.996-2.219 0-.037-.052 0-.041.062.288.783.642 1.51.964 2.268.321.758.66 1.695 1.037 2.466.018.068.062-.006.048-.043Zm4.021 8.432c-.83-2.065-1.904-3.822-2.797-5.807-.893-1.985-2.03-3.766-2.979-5.751 0 0-.059.049-.044.08.923 2.01 2.004 3.803 2.916 5.831.428.95.863 1.881 1.332 2.781.469.899.993 2.003 1.506 2.977.026.055.085-.056.066-.111Zm-.301-1.148a37.38 37.38 0 0 0-1.93-3.908c0-.031-.055.049-.037.08.65 1.289 1.303 2.565 1.912 3.914.019.05.07-.043.055-.086Zm2.366 7.929c-.196-.537-.417-1.054-.627-1.572-.403-.986-.816-1.948-1.163-2.99-.159-.487-.288-.986-.458-1.455-.18-.473-.378-.926-.594-1.356-.483-.998-1.022-1.917-1.55-2.848h-.026a11.716 11.716 0 0 0-.576-1.109c-.033-.056-.11.099-.077.16.192.404.397.789.616 1.153.006.007.013.011.021.011.007 0 .014-.004.02-.011.782 1.559 1.683 3.014 2.248 4.833.261.892.564 1.749.904 2.564.369.869.738 1.744 1.107 2.62.079.185.151.378.214.579.114.376-.173.037-.247-.055a5.897 5.897 0 0 1-.602-1.011 43.272 43.272 0 0 1-1.185-2.608 47.193 47.193 0 0 1-.996-2.564c-.162-.456-.314-.918-.487-1.362a15.37 15.37 0 0 1-.561-1.474c0-.043-.059.037-.048.074.29.934.612 1.839.963 2.713.321.938.674 1.846 1.056 2.718.336.795.697 1.56 1.07 2.312.18.385.379.746.594 1.078.126.185.321.53.506.5a.063.063 0 0 0 .029-.023.122.122 0 0 0 .019-.045c.07-.284-.078-.647-.17-.832Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M164.575 147.496a25.515 25.515 0 0 0-.845-2.219c-.022-.056-.078.043-.059.086.136.364.276.727.42 1.079.144.351.266.776.421 1.146.022.056.078-.043.063-.092Zm-2.824-6.651c-.55-1.128-1.044-2.348-1.627-3.421a47.069 47.069 0 0 1-1.783-3.544c-.03-.062-.096.061-.074.111a44.654 44.654 0 0 0 1.606 3.347c.638 1.159 1.107 2.558 1.793 3.649.048.049.111-.086.085-.142Zm4.733 13.697c-.952-1.571-1.683-3.408-2.528-5.128-.424-.869-.83-1.763-1.255-2.632-.424-.869-.941-1.85-1.402-2.75-.462-.899-.834-1.781-1.259-2.656a47.441 47.441 0 0 0-1.435-2.682c-.986-1.726-1.846-3.593-2.772-5.412-.022-.043-.081.062-.056.111.868 1.812 1.694 3.655 2.65 5.351.465.826.93 1.652 1.362 2.533.432.882.879 1.849 1.333 2.805.454.955.885 1.726 1.325 2.595.439.869.885 1.849 1.339 2.792.864 1.763 1.621 3.662 2.613 5.246.037.062.126-.111.085-.173Zm-8.289-15.144a33.56 33.56 0 0 0-1.457-3.119c-.55-1.03-1.012-2.176-1.565-3.2-.019-.037-.067.056-.048.099.52.986.952 2.102 1.476 3.082s1.059 2.096 1.554 3.199c.007.062.055-.024.04-.061Zm6.418 13.695c-.505-1.326-1.151-2.521-1.731-3.76-.579-1.239-1.159-2.657-1.697-4.026-.539-1.368-1.126-2.619-1.717-3.914-.59-1.294-1.306-2.613-1.867-3.988-.019-.049-.07.037-.055.08 1.088 2.774 2.424 5.246 3.517 8.013a61.181 61.181 0 0 0 1.642 3.865c.587 1.239 1.266 2.515 1.846 3.841.003.049.062-.056.062-.111Zm-2.864-5.283c-.516-1.233-1.085-2.41-1.59-3.655-.022-.049-.07.037-.056.08.499 1.233 1.041 2.466 1.576 3.699.026.037.089-.05.07-.124Zm3.506 5.493a21.562 21.562 0 0 0-1.03-2.287 58.805 58.805 0 0 1-1.277-2.706c-.022-.043-.074.043-.055.08.342.868.712 1.705 1.107 2.509.409.813.801 1.658 1.177 2.515.033.061.1-.056.078-.111Zm1.348 5.991c-.45-1.098-.838-2.263-1.328-3.317-.491-1.054-.956-2.108-1.477-3.125-.018-.043-.066.055-.048.099.532 1.066.989 2.206 1.477 3.31.461 1.011.797 2.176 1.288 3.15.044.049.107-.068.088-.117Zm.117-.438a9.347 9.347 0 0 0-.488-1.109c0-.037-.062.055-.048.086.174.364.321.758.488 1.122.018.025.059-.062.048-.099Zm1.142 1.297-.317-.617c-.022-.043-.078.068-.055.117.107.21.21.419.321.617.018.012.07-.056.051-.117Zm-4.487-8.854c-.451-1.073-.989-2.028-1.44-3.082-.022-.056-.077.043-.059.086.436 1.085.949 2.077 1.429 3.082.029.068.088-.037.07-.086Zm2.347 3.619c-.28-.548-.616-1.011-.908-1.553-.025-.043-.084.074-.059.123.285.549.613 1.023.908 1.553.037.05.1-.073.059-.123Zm-4.401-11.89c-.369-.839-.698-1.757-1.108-2.546-.409-.789-.679-1.578-1.085-2.293-.195-.345-.413-.654-.605-1.005-.192-.351-.399-.9-.642-1.288a11.222 11.222 0 0 1-1.292-2.54c-.022-.068-.088.049-.074.105a9.028 9.028 0 0 0 1.026 2.293c.488.74.842 1.664 1.329 2.404.227.32.428.689.598 1.097.147.407.318.789.509 1.14.48.851.831 1.85 1.296 2.731.022.025.066-.068.048-.098Zm1.385 2.181a13.96 13.96 0 0 1-.738-1.523 52.127 52.127 0 0 0-1.314-2.817c-.019-.037-.067.05-.048.087.457.978.901 1.976 1.332 2.995.406.944.878 1.807 1.329 2.688.018.037.062-.055.048-.086a7.43 7.43 0 0 0-.609-1.344Zm1.634 4.087c-.236-.536-.45-1.097-.683-1.64-.232-.542-.516-1.005-.771-1.51-.026-.043-.081.068-.059.111.277.549.565 1.085.812 1.664.185.526.403 1.017.649 1.467.023.037.071-.055.052-.092Zm-4.327-10.434c-.205-.53-.43-1.038-.672-1.523a9.278 9.278 0 0 0-.671-1.374c-.569-.9-.897-2.121-1.458-3.014-.034-.05-.1.086-.067.141.251.468.471.978.657 1.523.204.508.435.985.69 1.424.517.931.971 1.96 1.477 2.922.011.037.059-.056.044-.099Zm-1.655-4.502c-.14-.339-.291-.665-.421-1.017 0-.037-.055.031-.044.062.127.359.269.703.424 1.029 0 0 .056-.043.041-.074Zm.813.58a12.97 12.97 0 0 0-.934-2.219c-.022-.037-.07.061-.052.104.336.691.644 1.418.923 2.176.022.056.077-.061.063-.061Zm3.932 9.726a57.026 57.026 0 0 0-1.14-2.743c-.403-.894-1.001-1.818-1.44-2.817-.022-.049-.077.05-.059.093.428 1.023.923 1.917 1.384 2.891.225.474.443.961.653 1.448.146.449.326.863.536 1.233.029.031.103-.055.066-.105Zm1.187-4.098a22.027 22.027 0 0 0-1.454-3.964c-.69-1.3-1.476-2.465-2.174-3.748-.029-.055-.099.087-.07.148.646 1.289 1.395 2.417 2.067 3.668a24.074 24.074 0 0 1 1.524 4.062c.03.099.137-.074.107-.166Zm6.758 12.016c-.83-1.664-1.653-3.329-2.546-4.894a59.2 59.2 0 0 1-2.51-4.808c-.767-1.708-1.417-3.576-2.159-5.314-.742-1.738-1.557-3.322-2.347-4.968-.026-.05-.096.074-.074.123.771 1.671 1.58 3.286 2.307 5.012.727 1.726 1.424 3.698 2.214 5.486a48.878 48.878 0 0 0 2.373 4.518c.93 1.609 1.787 3.304 2.661 4.987.037.092.111-.08.081-.142Zm6.647 9.516c-1.162-2.367-2.447-4.574-3.668-6.855-1.222-2.28-2.539-4.697-3.876-6.959-.645-1.103-1.31-2.182-1.956-3.279a42.694 42.694 0 0 1-1.867-3.347c-1.174-2.466-2.292-5.024-3.462-7.508-.026-.05-.085.055-.063.098.569 1.233 1.085 2.509 1.639 3.748.554 1.239 1.177 2.564 1.768 3.84a37.984 37.984 0 0 0 1.709 3.082c.668 1.159 1.365 2.275 2.044 3.415 1.34 2.232 2.621 4.556 3.887 6.91 1.265 2.355 2.557 4.587 3.764 6.978.041.074.111-.061.081-.123Zm2.878 7.718c-.428-.771-.772-1.658-1.155-2.466-.384-.807-.812-1.566-1.189-2.392-.376-.826-.697-1.59-1.066-2.28-.458-.833-.923-1.659-1.381-2.466-.863-1.572-1.642-3.261-2.506-4.833a18.7 18.7 0 0 0-1.332-2.089c-.151-.204-.476-.826-.694-.722-.026 0-.059.081-.052.124.059.318.157.612.288.863.148.333.27.696.41 1.041.336.82.683 1.628 1.018 2.466.026.068.1-.055.078-.111-.417-1.017-.849-2.022-1.251-3.082-.078-.203-.151-.401-.236-.616a3.406 3.406 0 0 1-.107-.284c-.037-.099-.214-.37-.034-.21.177.197.341.422.491.672 1.133 1.548 2.023 3.495 2.953 5.351.93 1.855 2.092 3.698 3.008 5.751.421.937.893 1.788 1.34 2.681.416.963.862 1.889 1.336 2.774.044.025.114-.117.081-.172Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M179.685 169.527a37.23 37.23 0 0 0-1.528-3.15 143.882 143.882 0 0 1-1.643-3.26c-1.136-2.281-2.336-4.439-3.321-6.929-.022-.062-.085.049-.067.099a42.103 42.103 0 0 0 1.455 3.415c.549 1.128 1.129 2.219 1.694 3.328.564 1.11 1.063 2.213 1.638 3.274.576 1.06 1.107 2.268 1.731 3.322.008.031.056-.062.041-.099Zm-.258-1.207c-.162-.376-.369-.684-.535-1.06-.022-.05-.074.043-.056.08.163.376.369.684.539 1.054.004.049.07-.037.052-.074Zm3.778.406a47.43 47.43 0 0 0-2.395-4.488c-.86-1.467-1.846-2.737-2.754-4.093a48.603 48.603 0 0 1-2.546-4.598c-.827-1.578-1.724-3.045-2.635-4.482-.026-.043-.082.068-.056.111a76.298 76.298 0 0 1 2.517 4.414 52.282 52.282 0 0 0 2.517 4.666c.916 1.375 1.883 2.645 2.761 4.087.878 1.443 1.624 3.082 2.521 4.5.029.043.088-.074.07-.117Zm-.16.561a4.937 4.937 0 0 1-.561-.857 32.393 32.393 0 0 0-.793-1.233c-.51-.801-1.037-1.578-1.528-2.398a42.065 42.065 0 0 0-1.451-2.244c-.118-.172-.539-.733-.642-.24-.078.37.203.918.314 1.196.254.616.516 1.233.797 1.849.399.845.812 1.664 1.203 2.515.335.814.727 1.558 1.166 2.219.034.049.096-.086.067-.135-.713-1.357-1.355-2.805-2.038-4.204a39.508 39.508 0 0 1-.904-2.016 8.706 8.706 0 0 1-.446-1.196c-.052-.203-.074-.222.088-.08.101.097.197.207.288.327.203.271.391.616.587.887.447.66.871 1.369 1.31 2.041.439.671.849 1.313 1.277 1.96.36.663.759 1.262 1.192 1.787.045-.006.115-.141.074-.178Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M183.068 170.199a3.529 3.529 0 0 0-.439-.739c-.284-.432-.546-.9-.827-1.332a28.363 28.363 0 0 0-1.793-2.435c-.045-.055-.096.08-.085.148.055.271.255.499.35.734.152.357.336.684.502 1.023.37.721.775 1.368 1.13 2.09 0 .043.077-.062.059-.105-.299-.617-.657-1.233-.975-1.849-.188-.376-.369-.752-.56-1.135a6.469 6.469 0 0 0-.178-.333c.478.609.939 1.244 1.384 1.905.259.382.499.795.739 1.233.218.305.426.631.623.974.033.012.107-.123.07-.179Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/><path d=\"M182.472 169.953a1.38 1.38 0 0 0-.173-.314l-.214-.327c-.022-.043-.074.062-.048.099l.188.308c.067.105.126.222.192.327.066.104.066-.056.055-.093Zm2.751-.704c-.93-1.541-1.804-3.162-2.768-4.648a35.644 35.644 0 0 0-1.539-2.176 17.12 17.12 0 0 1-1.627-2.213 54.249 54.249 0 0 0-2.931-4.709c-1.037-1.535-1.978-3.261-2.974-4.87-.03-.043-.089.074-.06.123.945 1.603 1.846 3.329 2.839 4.833.992 1.504 2 3.082 2.93 4.734.472.763.978 1.466 1.513 2.102.561.74 1.107 1.479 1.646 2.281.539.801.964 1.504 1.432 2.28.462.844.955 1.639 1.477 2.38.033.043.088-.074.062-.117Zm-.239.79a9.025 9.025 0 0 0-.561-1.078c-.24-.444-.491-.876-.738-1.307-.487-.832-1.048-1.529-1.495-2.429-.026-.043-.089.074-.063.13.417.856.93 1.553 1.395 2.336.465.783.908 1.676 1.384 2.466.03.073.1-.081.078-.118Zm1.133-.363a1.891 1.891 0 0 0-.413-.654 4.385 4.385 0 0 1-.598-.93c-.029-.068-.099.055-.077.111.28.616.705 1.017 1.018 1.596.03.049.085-.074.07-.123Zm-5.614-8.622c-.934-1.677-1.997-3.126-2.953-4.79a269.523 269.523 0 0 0-3.022-5.19c-.491-.82-.953-1.689-1.443-2.509-.491-.82-.997-1.541-1.514-2.281-.516-.74-1.051-1.479-1.553-2.225a26.279 26.279 0 0 1-1.477-2.669c-.022-.05-.081.068-.055.117a30.92 30.92 0 0 0 1.365 2.595c.48.814 1.023 1.535 1.54 2.287.516.752 1.033 1.473 1.509 2.287.476.814 1.008 1.775 1.517 2.65.989 1.677 1.986 3.335 2.953 5.055.477.839.979 1.638 1.505 2.392.535.776 1.03 1.658 1.58 2.398.029.043.074-.068.048-.117Zm5.234 7.068c-.535-.851-1.04-1.745-1.55-2.638-.509-.894-1.107-1.714-1.65-2.577-.542-.863-1.107-1.72-1.73-2.509a38.203 38.203 0 0 1-1.75-2.373c-.037-.049-.107.092-.07.148.55.844 1.148 1.633 1.735 2.41a37.464 37.464 0 0 1 1.723 2.515c.557.881 1.107 1.683 1.643 2.595.484.92 1.007 1.781 1.564 2.577.048.049.119-.093.085-.148Zm-12.677-20.909c-.797-1.153-1.561-2.361-2.369-3.495-.808-1.135-1.646-2.152-2.384-3.397-.738-1.245-1.314-2.583-2.049-3.748-.387-.616-.804-1.183-1.177-1.849-.373-.666-.76-1.307-1.107-1.997-.033-.068-.115.092-.081.16a33.52 33.52 0 0 0 2.177 3.773c.771 1.183 1.395 2.626 2.126 3.877.731 1.251 1.546 2.139 2.318 3.236.83 1.177 1.653 2.398 2.513 3.514.011.049.056-.019.033-.074Zm-2.908-5.073c-.45-.838-.952-1.597-1.432-2.392a43.893 43.893 0 0 1-1.358-2.465c-.436-.839-.923-1.437-1.347-2.213-.425-.777-.871-1.751-1.329-2.595-.033-.056-.103.086-.074.147.45.857.856 1.763 1.299 2.626.443.863.916 1.449 1.333 2.238.896 1.683 1.886 3.181 2.86 4.728.022.043.048-.037.048-.074Zm7.212 13.061c-1.259-2.133-2.488-4.315-3.761-6.411-.022-.037-.078.068-.052.111 1.259 2.121 2.436 4.395 3.772 6.387.019.03.063-.056.041-.087Zm2.129 2.681a17.888 17.888 0 0 0-1.052-1.849 21.392 21.392 0 0 1-1.019-1.923 15.841 15.841 0 0 0-1.022-1.812 16.63 16.63 0 0 1-1.108-1.628c-.025-.049-.088.08-.062.13.311.562.652 1.078 1.018 1.541.404.587.774 1.235 1.108 1.935a49.237 49.237 0 0 0 2.096 3.699c.011.061.059-.043.041-.093Zm-8.076-7.982c-.705-1.369-1.432-2.694-2.125-4.075-.739-1.516-1.51-3.026-2.241-4.567-.328-.691-.738-1.282-1.052-1.973-.369-.783-.697-1.627-1.066-2.41-.687-1.424-1.595-2.503-2.362-3.785-.041-.068-.126.105-.085.173.812 1.35 1.775 2.527 2.454 4.08.332.765.653 1.535 1.004 2.275s.72 1.295 1.056 1.973c1.409 2.872 2.816 5.732 4.366 8.401.022.062.074-.049.051-.092Zm-5.457-11.797a8.944 8.944 0 0 0-.436-1.233 10.64 10.64 0 0 0-.819-1.19c-.495-.758-.79-1.849-1.318-2.552-.037-.049-.107.099-.07.148.424.73.809 1.52 1.152 2.361.223.384.463.738.719 1.06.266.465.496.983.687 1.541.029.062.103-.068.085-.135Zm1.757 2.329a365.275 365.275 0 0 1-2.698-5.116c0-.031-.063.056-.044.093.442.875.889 1.744 1.325 2.619.417.894.872 1.736 1.361 2.521.026.044.082-.061.056-.117Zm4.598 9.449c-.808-1.665-1.672-3.255-2.502-4.895-.41-.807-.886-1.541-1.322-2.311-.435-.771-.922-1.628-1.372-2.466-.026-.049-.093.074-.063.13a87.729 87.729 0 0 0 2.583 4.691c.462.77.849 1.689 1.274 2.515.424.826.896 1.645 1.339 2.465.022.074.093-.068.063-.129Zm.66.062a23.051 23.051 0 0 0-1.048-1.738c-.026-.043-.085.074-.056.117.369.561.702 1.153 1.041 1.75.026.05.089-.074.063-.129Zm3.994 9.819c-.937-1.701-1.771-3.544-2.668-5.307-.476-.937-.952-1.849-1.443-2.793-.229-.425-.473-.826-.705-1.232-.233-.407-.458-.746-.668-1.159-.026-.05-.092.08-.067.135.207.42.447.771.657 1.178.211.407.465.85.694 1.276.495.912.964 1.849 1.436 2.817.878 1.75 1.687 3.698 2.687 5.264.037.037.111-.117.077-.179Zm1.387-.092a13.895 13.895 0 0 0-1.137-1.534c-.037-.044-.103.098-.066.135.398.473.779.986 1.14 1.535.03.049.096-.086.063-.136Zm-7.429-8.666a13.635 13.635 0 0 0-1.299-2.503c-.514-.881-1.06-1.707-1.536-2.644-.018-.037-.066.055-.048.098.886 1.788 2.049 3.224 2.798 5.191.048.055.107-.074.085-.142Zm1.39 5.079a19.096 19.096 0 0 0-1.038-2.312c-.188-.394-.324-.844-.498-1.232-.173-.389-.336-.709-.509-1.055-.816-1.602-1.742-3.026-2.621-4.524-.025-.043-.081.068-.055.111.823 1.418 1.657 2.823 2.436 4.315.221.425.432.863.638 1.313.167.357.288.77.447 1.14.351.82.738 1.584 1.107 2.38.045.049.111-.074.093-.136Zm3.595 6.595c-.336-.684-.676-1.368-1-2.071-.122-.259-.229-.542-.37-.801a13.799 13.799 0 0 1-.502-.987c-.022-.055-.084.05-.066.099.104.252.221.487.351.703.203.394.394.805.572 1.233.302.653.627 1.276.952 1.898.033.037.085-.074.063-.074Zm-9.651-18.539c-.454-.918-.889-1.849-1.362-2.749-.025-.05-.084.068-.059.117.469.894.886 1.849 1.362 2.749.026.043.081-.068.059-.117Zm-3.49-6.597c-.532-1.435-1.19-2.728-1.952-3.834-.03-.044-.089.074-.059.117a26.4 26.4 0 0 1 1.959 3.791c.022.068.078-.031.052-.074Zm-.59-2.603c-.251-.58-.535-1.116-.794-1.689-.022-.056-.077.049-.059.092.251.573.532 1.116.79 1.689.022.062.081-.043.063-.092Zm3.738 6.512a17.332 17.332 0 0 0-.764-1.603c-.026-.049-.088.074-.062.129.265.506.509 1.042.738 1.572.048.056.107-.049.088-.098Zm2.87-3.058a8.767 8.767 0 0 1-.262-.672c-.089-.241-.236-.401-.328-.617a7.375 7.375 0 0 0-.68-1.294 54.6 54.6 0 0 0-.852-1.387c-.292-.456-.65-.943-.945-1.455-.033-.055-.1.08-.07.142.509.974 1.107 1.849 1.664 2.749.269.431.516.899.739 1.399.085.189.181.362.287.518.141.216.24.481.37.703.048.031.092-.056.077-.086Zm3.824 6.342c-.248-.438-.525-.832-.794-1.233-.275-.437-.53-.907-.764-1.405-.531-1.042-1.011-2.152-1.546-3.187-1.037-2.01-2.115-4.019-3.252-5.875-.022-.043-.077.068-.052.111 1.067 1.893 2.093 3.877 3.123 5.831.539 1.03 1.022 2.127 1.565 3.15.53.945 1.092 1.838 1.683 2.676.018.037.051-.037.037-.068Zm1.337 1.962c-1.133-2.429-2.263-4.858-3.484-7.163-.609-1.147-1.252-2.25-1.868-3.36-.679-1.232-1.443-2.342-2.137-3.563-.033-.055-.111.099-.077.161.649 1.233 1.373 2.287 2.026 3.482.653 1.196 1.273 2.232 1.875 3.391.601 1.159 1.291 2.385 1.886 3.661.251.543.531 1.042.793 1.566.318.616.594 1.331.941 1.929.015 0 .056-.074.045-.104Zm-1.003-3.127a28.35 28.35 0 0 0-1.476-2.712c-.55-.906-1.023-1.954-1.617-2.786-.026-.043-.081.068-.055.111a36.309 36.309 0 0 1 1.502 2.73c.258.481.546.919.808 1.394.262.474.487.967.76 1.38.041.031.1-.086.078-.117Zm.725.365a5.322 5.322 0 0 0-.59-1.067c-.277-.437-.543-.893-.816-1.331-.553-.882-1.026-1.849-1.531-2.817a46.615 46.615 0 0 0-3.37-5.258c-.026-.037-.074.068-.052.105a67.512 67.512 0 0 1 3.244 5.221c.491.881.923 1.849 1.444 2.687.52.839 1.062 1.726 1.609 2.565.026.043.077-.062.062-.105Zm9.863 17.245c-1.99-3.699-3.839-7.539-5.813-11.231-.026-.049-.085.068-.059.123.97 1.917 1.893 3.902 2.893 5.776 1 1.874 1.871 3.748 2.953 5.406.007.025.04-.043.026-.074Zm-2.203-2.514c-1.166-2.212-2.495-4.185-3.709-6.324-.022-.037-.07.056-.048.099 1.192 2.176 2.454 4.253 3.691 6.361.033.049.096-.08.066-.136Zm-.669-1.721c-.661-1.51-1.495-2.805-2.185-4.278-.022-.049-.07.037-.055.08.675 1.498 1.428 2.91 2.188 4.315.019.013.07-.08.052-.117Zm6.875 12.292a53.561 53.561 0 0 0-2.904-4.993 39.458 39.458 0 0 1-1.477-2.465c-.468-.869-1.081-1.671-1.594-2.546-.026-.043-.085.068-.059.117.48.851 1.004 1.621 1.476 2.466.473.844.956 1.689 1.477 2.465 1.044 1.597 2.033 3.354 3.011 5.067.03.111.096-.055.07-.111Zm-.918-2.427a53.82 53.82 0 0 0-2.506-4.426c-.026-.037-.078.061-.052.104a187.792 187.792 0 0 1 2.495 4.451c.026.055.089-.074.063-.129Zm1.641 3.07c-.185-.302-.399-.561-.569-.894-.025-.043-.084.068-.059.117.17.333.369.616.569.9.033.074.088-.074.059-.123Zm3.639.061a10.273 10.273 0 0 0-1.107-1.59c-.03-.037-.085.08-.056.117.388.493.739 1.048 1.108 1.584.029.025.081-.068.055-.111Zm-11.481-17.581c-.657-1.035-1.292-2.126-1.993-3.082a64.706 64.706 0 0 1-2.034-2.915c-.029-.05-.096.08-.063.129a66.37 66.37 0 0 0 2.008 2.971c.687.962 1.31 2.096 2.008 3.082.037.031.114-.123.074-.185Zm1.361 1.38c-.498-.746-.967-1.541-1.454-2.306-.487-.764-1.107-1.645-1.628-2.465-.025-.037-.073.068-.051.105.502.801 1.015 1.584 1.52 2.379.506.795 1.001 1.683 1.539 2.466.037.018.107-.124.074-.179Zm-9.363-15.557c-.55-.881-1.141-1.683-1.713-2.521a43.818 43.818 0 0 1-.79-1.19 6.147 6.147 0 0 0-.871-1.202c-.048-.049-.129.13-.084.173.278.312.533.679.76 1.091.284.45.568.906.864 1.344a89.69 89.69 0 0 0 1.73 2.465c.052.081.144-.092.104-.16Zm-.446.746c-1.402-1.985-2.631-4.278-4.008-6.306-.022-.037-.067.056-.044.093 1.362 2.065 2.583 4.383 3.971 6.38.04.055.107-.105.081-.167Zm5.37 3.408c-.491-.795-.993-1.578-1.476-2.392-.484-.813-.963-1.658-1.476-2.422-.513-.764-.956-1.412-1.432-2.127a26.466 26.466 0 0 1-1.528-2.385c-.03-.056-.107.092-.074.154.438.816.909 1.583 1.41 2.293.502.77.985 1.547 1.502 2.293 1.044 1.498 1.937 3.267 3.015 4.709.03.044.089-.08.059-.123Zm2.191 3.7c-.823-1.233-1.631-2.466-2.439-3.699-.809-1.232-1.687-2.404-2.536-3.6-.033-.043-.096.081-.063.13.845 1.196 1.698 2.392 2.514 3.649a108.927 108.927 0 0 0 2.45 3.662c.037.049.111-.105.074-.142Zm11.018 16.525-1.321-1.991c-.465-.697-.956-1.325-1.402-2.059-.93-1.516-1.875-3.014-2.79-4.555a129.643 129.643 0 0 0-2.805-4.506c-.96-1.474-1.92-2.799-2.853-4.217-.034-.055-.104.087-.067.142 1.864 2.854 3.743 5.683 5.536 8.673.919 1.541 1.864 3.039 2.79 4.574.443.74.931 1.368 1.403 2.053.472.684.937 1.417 1.447 2.052.026.05.103-.105.062-.166Zm-14.218-23.146a39.299 39.299 0 0 1-3.359-4.931c-.029-.05-.092.074-.062.123a33.238 33.238 0 0 0 3.351 4.931c.037.068.11-.08.07-.123Zm4.891-.222c-.317-.505-.664-.949-.974-1.461-.31-.511-.653-1.158-.996-1.713-.739-1.19-1.58-2.176-2.344-3.317-.033-.049-.1.087-.066.142.719 1.122 1.509 2.127 2.214 3.261a30.96 30.96 0 0 0 2.074 3.255c.044.055.126-.105.092-.167Zm.428-.887c-.535-.844-1.166-1.516-1.735-2.318l-.856-1.177c-.288-.388-.594-.727-.864-1.153-.029-.049-.096.081-.062.136.236.382.505.684.738 1.042l.959 1.337a47.36 47.36 0 0 0 1.75 2.281c.037.037.099-.092.07-.148Zm2.281 1.638c-.826-1.128-1.826-1.85-2.661-2.965-.036-.05-.107.098-.07.148a28.146 28.146 0 0 0 2.661 2.958c.037.044.104-.092.07-.141Zm13.701 16.187a14.711 14.711 0 0 0-.978-1.269c-.369-.444-.793-.783-1.177-1.233-.03-.037-.085.08-.056.117.347.4.739.721 1.071 1.122.332.4.738.906 1.081 1.362.033.068.089-.056.059-.099Zm3.542 3.182c-.553-.678-1.074-1.394-1.664-1.979-.591-.586-1.177-1.165-1.72-1.849-.033-.037-.089.08-.059.117.539.69 1.137 1.233 1.701 1.849.285.321.58.616.853.937.273.321.543.703.834.999.033.067.085-.044.055-.074Zm-.917-1.856a17.06 17.06 0 0 0-1.233-1.559c-.029-.037-.085.08-.055.117.41.53.838 1.023 1.236 1.584.026.012.081-.099.052-.142Zm1.169 6.405a23.417 23.417 0 0 0-2.315-2.417c-.369-.357-.712-.746-1.062-1.134-.351-.388-.783-.783-1.148-1.233-.03-.037-.081.074-.056.111a25.329 25.329 0 0 0 2.185 2.466c.369.382.738.709 1.108 1.079.369.369.811.869 1.225 1.294.04-.031.088-.117.063-.166Zm-5.026-4.66c-.997-1.578-2.167-2.798-3.256-4.179-.542-.691-1.074-1.412-1.638-2.04-.565-.629-1.193-1.19-1.757-1.85-.03 0-.085.08-.056.111.528.654 1.086 1.233 1.632 1.849.546.617 1.148 1.443 1.716 2.17.568.728 1.107 1.369 1.664 2.053.558.684 1.082 1.381 1.632 2.046.018 0 .092-.117.063-.16Zm1.48 11.064c-.244-.4-.528-.733-.787-1.103-.258-.37-.524-.752-.793-1.116-.513-.678-1.078-1.232-1.554-2.009-.022-.037-.066.055-.044.092.487.73.997 1.418 1.528 2.059.531.697 1.004 1.646 1.602 2.17.029.025.07-.056.048-.093Zm2.062-.192a11.39 11.39 0 0 1-1.679-2.028c-.026-.043-.085.074-.056.111.292.419.594.82.897 1.233.231.357.494.652.779.875.044 0 .114-.16.059-.191Zm2.28.334a4.755 4.755 0 0 0-.823-.844c-.037-.037-.096.092-.059.123.28.265.546.567.823.844.033.037.096-.08.059-.123Z\" style=\"mix-blend-mode:multiply\" opacity=\".3\"/></g><path d=\"M73.96 132.825c-.256.298-.503.617-.739.955a6.72 6.72 0 0 0-.653.833c-.03.055 0 .123.037.074.184-.241.369-.457.572-.697.27-.339.509-.74.79-1.06.029-.031.04-.154-.008-.105Zm-.192.624a15.403 15.403 0 0 0-1.52 1.918s0 .049 0 0c.49-.66 1.003-1.276 1.516-1.887.026.013.03-.061.004-.031Zm1.13-.112c-.425.555-.875 1.048-1.303 1.596-.428.549-.934 1.239-1.428 1.856-.495.616-.89 1.171-1.333 1.75-.247.321-.531.574-.771.9-.24.327-.425.617-.646.9v.05c.174-.204.34-.426.506-.654.236-.314.502-.555.738-.863.535-.684 1.055-1.417 1.609-2.022a17.03 17.03 0 0 0 1.277-1.645c.447-.617.926-1.178 1.373-1.8.026-.037.007-.111-.022-.068Zm-5.588 6.706c-.447.69-1.026 1.165-1.499 1.8v.055a17.616 17.616 0 0 0 1.503-1.806c.03-.03.022-.086-.004-.049Zm-5.454 6.542c-1.65 2.021-3.485 3.612-5.05 5.831v.062c1.643-2.035 3.426-3.742 5.05-5.819.051-.007.047-.118 0-.074Zm-4.797 6.342c-.336.345-.68.659-1.015 1.004-.402.419-.779.9-1.181 1.313-.675.697-1.362 1.356-1.997 2.145-.04.05-.037.198.022.13 1.385-1.529 2.79-2.99 4.178-4.506.023-.031.03-.123-.007-.086Zm-2.772.924c-.37.499-.805.9-1.196 1.368a27.99 27.99 0 0 0-1.056 1.338c-.694.93-1.38 1.886-2.07 2.823a43.88 43.88 0 0 1-2.38 2.909 16.024 16.024 0 0 0-1.927 2.571v.043c1.303-2.077 2.92-3.538 4.329-5.406.694-.925 1.395-1.849 2.081-2.774.687-.925 1.51-1.812 2.215-2.798.055-.044.044-.13.004-.074ZM49.3 163.16c-1.576 2.022-3.034 4.315-4.603 6.343-.022 0-.022.123 0 .08a28.964 28.964 0 0 0 2.318-3.125c.388-.574.794-1.098 1.196-1.64.402-.542.738-1.079 1.107-1.59.03-.044.019-.111-.018-.068Zm.501 1.609c-.653.832-1.25 1.793-1.9 2.638-.65.844-1.196 1.905-1.813 2.829-.033.05-.018.148.026.08.595-.85 1.108-1.849 1.731-2.656.34-.456.687-.888 1.011-1.375.325-.487.635-.974.975-1.424.04-.055.022-.16-.03-.092Zm3.691-2.897c-1.432.783-2.52 2.613-3.58 4.315-.026.043 0 .129.022.074 1.06-1.622 2.17-3.452 3.55-4.315.038.012.038-.099.008-.074Zm-3.758 5.121a10.673 10.673 0 0 0-.698 2.004c-.025.117.063.061.082 0 .178-.703.398-1.375.657-2.004.022-.043-.019-.068-.041 0Zm4.448-13.222c-1.406 1.516-2.776 3.082-4.163 4.672-.694.783-1.355 1.646-2.056 2.423-.701.776-1.358 1.645-2.052 2.428-.026 0-.037.123 0 .086.72-.702 1.358-1.59 2.074-2.311.716-.721 1.366-1.615 2.06-2.41 1.384-1.597 2.756-3.224 4.152-4.796.018-.031.025-.136-.015-.092Zm-10.045 11.208c-.645.654-1.236 1.473-1.904 2.059a17.206 17.206 0 0 0-1.923 2.151v.074c.653-.616 1.27-1.38 1.923-2.021.653-.642 1.255-1.468 1.897-2.164.044-.031.055-.148.007-.099Zm-4.078 4.283c-.23.303-.514.469-.739.765-.022 0-.022.129 0 .086.24-.283.513-.481.739-.795.04-.031.033-.099 0-.056Zm6.981-5.296c-.737.906-1.476 1.781-2.262 2.57-.786.789-1.443 1.88-2.214 2.743-.026 0-.037.136 0 .093.804-.832 1.51-1.899 2.31-2.743a31.34 31.34 0 0 0 2.17-2.589c.052-.043.037-.13-.003-.074Zm13.707-15.692c-.296.321-.595.617-.871.999-.03.037-.019.111.022.068a17.4 17.4 0 0 1 .856-.98c.026-.025.033-.13-.007-.087Zm6.014-8.15c-.535.653-1.107 1.233-1.635 1.849-.03.037-.03.148 0 .099a39.165 39.165 0 0 0 1.624-1.849c.06-.031.06-.154.011-.099Zm5.648-6.473c-.879 1.121-1.775 2.194-2.62 3.378-.026.037-.026.147 0 .098.911-1.097 1.767-2.262 2.638-3.421.03 0 .019-.099-.018-.055Zm-5.572 9.734c-.313.419-.66.77-.985 1.165-.31.407-.607.841-.89 1.301-.288.419-.605.77-.907 1.152-.37.475-.739 1.005-1.108 1.467v.043c.37-.406.687-.893 1.037-1.319.351-.425.65-.672.945-1.103.295-.432.642-.949.967-1.418.325-.468.668-.789.982-1.233.004-.024-.007-.098-.04-.055Zm-2.881 4.401c-.369.444-.767.851-1.14 1.301-.022.03-.03.123 0 .08.369-.438.767-.851 1.14-1.307.026-.025.033-.111 0-.074Zm-2.979 3.735c-.399.493-.812.949-1.222 1.412 0 0-.03.104 0 .074.41-.438.83-.919 1.23-1.424.018 0 .025-.099-.008-.062Zm-2.369 2.929c-.403.542-.908.838-1.325 1.35-.034.037-.052.185 0 .123.465-.41.91-.88 1.332-1.406.04-.037.03-.111-.007-.067Zm2.151-.357c-.639.9-1.332 1.695-2 2.527-.595.78-1.16 1.62-1.694 2.515-.026.049 0 .136.022.074.586-.888 1.158-1.744 1.79-2.546.63-.801 1.299-1.609 1.904-2.465.033-.068.019-.148-.022-.105Zm6.234-7.76c-.786.974-1.628 1.849-2.41 2.805v.061a32.88 32.88 0 0 0 2.414-2.78c.037-.031.033-.135-.004-.086Zm-3.081-3.318c-1.801 1.849-3.669 3.538-5.426 5.548-.03.037-.04.16 0 .111 1.78-1.93 3.64-3.625 5.422-5.548.04-.043.048-.173.004-.111Zm13.413-9.307c-.602 1.03-1.35 1.8-1.934 2.86-.033.062 0 .148.037.081.627-.993 1.336-1.85 1.927-2.879.025-.062 0-.136-.03-.062ZM66.93 147.705c-.579.672-1.106 1.492-1.638 2.238-.531.746-1.155 1.313-1.712 2.022-.558.709-1.23 1.528-1.823 2.336-.595.807-1.222 1.664-1.846 2.466v.049c.58-.703 1.137-1.43 1.702-2.164.564-.733 1.229-1.522 1.845-2.299.616-.777 1.137-1.307 1.712-2.003.576-.697 1.137-1.776 1.768-2.534.026-.049.034-.16-.007-.111Zm-6.987 9.427c-.893 1.073-1.75 2.244-2.654 3.286-.904 1.041-1.683 2.262-2.539 3.353v.043c.893-1.072 1.724-2.274 2.632-3.322.907-1.048 1.705-2.219 2.583-3.298.011-.025.007-.105-.022-.062Zm-2.983 4.863c-.65.832-1.273 1.732-1.904 2.608-.631.875-1.37 1.849-1.997 2.897-.022.037 0 .098 0 .055.65-.992 1.351-1.849 2.026-2.811.676-.961 1.24-1.812 1.883-2.675.044-.043.033-.129-.008-.074Zm-4.278 6.558c-.148.246-.3.48-.447.721-.143.192-.28.398-.41.616-.022.05 0 .099.03.056.3-.411.582-.861.841-1.344.023-.025.012-.093-.014-.049Zm16.308-20.946a32.784 32.784 0 0 1-2.584 3.206 19.661 19.661 0 0 0-2.248 3.082v.043a22.124 22.124 0 0 1 2.344-2.978 32.754 32.754 0 0 0 2.52-3.273c.026-.043 0-.142-.033-.08Zm-3.02 5.142c-.37.524-.76.986-1.144 1.467-.384.481-.716 1.066-1.085 1.584-.37.518-.68 1.079-1.03 1.603a16.4 16.4 0 0 0-.982 1.578c0 .037 0 .067.022 0 .34-.573.703-1.109 1.085-1.603.37-.499.68-1.06 1.041-1.566.362-.505.646-1.011.993-1.479.347-.469.764-.993 1.107-1.529.052.012.037-.117-.007-.055Zm8.353-12.213a28.178 28.178 0 0 1-1.978 2.922c-.329.45-.639.925-.956 1.393-.318.469-.661.838-.978 1.295v.043c1.41-1.666 2.728-3.542 3.938-5.603.04-.056.003-.099-.026-.05Zm4.247-7.272-.69.961c-.229.321-.498.537-.738.876-.24.339-.461.616-.687.9-.225.283-.487.684-.738 1.017v.049a41.37 41.37 0 0 0 2.842-3.698c.06-.074.06-.167.011-.105Zm-3.434 4.757a5.277 5.277 0 0 0-.432.716c-.026.055 0 .092.033.043.13-.246.27-.479.417-.697.026-.031.015-.105-.018-.062Zm6.136-4.763c-1.333 1.849-2.632 3.816-3.924 5.757-.025.037 0 .111 0 .068 1.33-1.886 2.617-3.822 3.931-5.739.052-.049.037-.148-.007-.086Zm-5.841 8.463c-.712.881-1.391 1.849-2.1 2.724a55.96 55.96 0 0 0-2.233 2.984c-.03.043 0 .129.023.074.708-.98 1.476-1.849 2.173-2.817.325-.45.665-.894.997-1.325.395-.506.76-1.067 1.151-1.579.019-.061.019-.123-.01-.061Zm-5.595 9.134a276.83 276.83 0 0 1-2.543 3.945c-.797 1.233-1.669 2.287-2.421 3.582-.037.061-.023.185.03.105.778-1.233 1.645-2.318 2.435-3.532.856-1.32 1.68-2.688 2.52-4.032.027-.043.016-.123-.021-.068Zm-5.001 6.947c-.292.419-.572.857-.864 1.27-.03.037 0 .11 0 .061.307-.388.576-.85.864-1.27.04-.037.03-.117 0-.061Zm-4.755 6.367c-.55.87-1.107 1.696-1.708 2.466-.602.771-1.189 1.714-1.772 2.62-.033.055-.022.148.026.086.587-.746 1.126-1.609 1.694-2.385.568-.777 1.192-1.769 1.775-2.694.048-.062.034-.166-.014-.093Zm-3.329 2.442c-.553.758-1.085 1.572-1.66 2.274-.03 0-.041.154 0 .105a6.82 6.82 0 0 0 .79-1.072c.28-.444.586-.826.881-1.233.037-.043.026-.124-.01-.074Zm9.641-8.716a53.38 53.38 0 0 1-2.757 3.699 30.111 30.111 0 0 0-2.768 4.167v.037a40.232 40.232 0 0 1 2.879-4.106 36.804 36.804 0 0 0 2.657-3.698c.037-.062.037-.173-.01-.099Zm-.95 3.181a41.796 41.796 0 0 1-2.952 4.315c-.941 1.233-1.78 2.712-2.69 4.013v.043c.439-.53.833-1.184 1.254-1.745.484-.616.92-1.368 1.395-2.021a40.918 40.918 0 0 0 3.005-4.519c.047-.074.022-.141-.012-.086Zm-5.438 7.768a2.94 2.94 0 0 1-.502.696c-.019 0-.034.105 0 .086.198-.182.373-.427.516-.721.023-.061.015-.117-.014-.061Zm19.538-27.326c-.502.616-.975 1.337-1.477 1.972a24.393 24.393 0 0 0-1.398 1.973c-.48.752-.986 1.454-1.454 2.225-.47.77-.927 1.522-1.403 2.262v.049c.469-.616.908-1.343 1.34-2.04.432-.696.993-1.448 1.476-2.194.484-.746.908-1.369 1.384-1.998.532-.702 1.019-1.473 1.543-2.182.04-.037.03-.117-.011-.067Zm-5.942 9.817a5.721 5.721 0 0 0-.55.808c-.201.303-.39.628-.565.974 0 .037 0 .129.022.08a7.84 7.84 0 0 0 .477-.77c.217-.333.395-.703.63-1.005.023-.031.023-.13-.014-.087Zm8.448-9.917a12.71 12.71 0 0 1-.993 1.658c-.37.586-.709 1.233-1.063 1.818-.738 1.233-1.535 2.349-2.266 3.588-.037.055-.022.173.026.092.764-1.171 1.565-2.287 2.288-3.526.369-.616.694-1.232 1.052-1.849.356-.532.688-1.109.993-1.726.025-.068-.011-.117-.037-.055Zm-3.836 5.882a80.912 80.912 0 0 0-1.015 1.646c-.03.056 0 .154.026.087.332-.561.668-1.122 1.011-1.665.015-.043.015-.098-.022-.068Zm-7.365 13.164a30.817 30.817 0 0 0-2.45 4.007c-.023.043 0 .104.025.055.812-1.331 1.59-2.718 2.45-3.97.038-.055.02-.154-.025-.092Zm.907-4.325a25.042 25.042 0 0 0-2.306 3.747c-.026.05 0 .124.03.068a80.504 80.504 0 0 1 2.299-3.735c.033-.05.018-.142-.023-.08Zm2.552-8.747c-.646.876-1.244 1.85-1.879 2.725-.299.413-.568.869-.863 1.282-.295.413-.657.9-.963 1.418-.55.881-1.13 1.689-1.647 2.626-.516.937-1.107 1.954-1.675 2.922-.022.037 0 .111 0 .061.56-.887 1.107-1.8 1.642-2.718.535-.919 1.148-1.788 1.716-2.706.569-.919 1.215-1.8 1.82-2.682.605-.881 1.225-1.898 1.845-2.811.063-.08.048-.178.004-.117Zm-6.645 10.799c-.184.278-.369.574-.546.845 0 0-.022.111 0 .074.194-.269.38-.555.557-.857.037-.037.022-.117-.011-.062Zm16.625-25.101c-.177.296-.402.543-.594.808-.27.387-.526.798-.768 1.232-.476.802-.985 1.548-1.476 2.349 0 .031 0 .099.018.056a28.759 28.759 0 0 0 1.477-2.238c.254-.413.487-.869.738-1.264.192-.289.413-.548.59-.869.081-.031.052-.111.015-.074Zm1.024-.123c-.676.839-1.248 1.93-1.956 2.688-.122.129-.347.357-.137-.049.163-.315.303-.654.48-.943.306-.5.602-1.03.915-1.517.045-.068.026-.197-.033-.111-.343.506-.664 1.073-.996 1.609a9.02 9.02 0 0 0-.37.721 2.395 2.395 0 0 0-.265.654s0 .08.022.074c.369-.056.738-.789 1.015-1.153.446-.617.9-1.233 1.332-1.849.033-.068.033-.173-.007-.124Zm.477-.196c-.264.415-.54.808-.827 1.177-.34.431-.594 1.023-.92 1.479-.649.9-1.217 1.998-1.845 2.959-.022.031 0 .093 0 .049.646-.912 1.218-1.947 1.846-2.878.295-.432.546-.931.834-1.369.288-.437.612-.869.9-1.337.067-.05.056-.148.011-.08Zm.744.357c-.291.345-.553.814-.83 1.202-.332.474-.624 1.035-.934 1.547-.051.086-.033.247.04.136.296-.444.565-.931.846-1.406.136-.234.299-.444.45-.659.151-.216.284-.487.44-.678.04-.05.055-.222-.012-.142Zm-3.804.197c-.565.955-1.107 1.942-1.702 2.842-.594.9-1.206 1.775-1.782 2.718-.04.068-.026.191.03.111.597-.9 1.206-1.769 1.8-2.669.595-.9 1.108-1.942 1.68-2.91.033-.055.018-.166-.026-.092Zm6.459.455a34.768 34.768 0 0 1-1.159 1.917c-.025.043 0 .123.022.068.4-.616.794-1.27 1.163-1.954.022-.043-.004-.074-.026-.031Zm3.384-.986a2.75 2.75 0 0 1-.302.518c-.096.154-.2.295-.31.419-.034.043-.049.179 0 .123.133-.143.257-.31.368-.499.112-.158.211-.338.296-.537.022-.08-.03-.08-.052-.024Zm-2.614 5.131c-.598 1.171-1.255 2.244-1.82 3.464-.302.654-.66 1.233-.966 1.849-.307.617-.584 1.313-.897 1.942-.022.043 0 .08.026.037.302-.561.583-1.146.86-1.738.276-.592.682-1.233.989-1.849.594-1.233 1.236-2.429 1.845-3.65.04-.067 0-.123-.037-.055Zm-9.02 15.044c-.37.567-.683 1.159-1.019 1.744-.317.622-.615 1.27-.893 1.942-.284.616-.576 1.233-.841 1.849-.266.617-.51 1.073-.739 1.64 0 0 0 .043.022 0 .244-.542.528-1.023.772-1.572a51.26 51.26 0 0 1 .856-1.806c.284-.573.524-1.233.816-1.806.291-.573.69-1.301 1.048-1.923.033-.056.007-.124-.022-.068Zm-2.1 6.282a250.23 250.23 0 0 0-1.92 3.539c-.634 1.189-1.335 2.391-1.94 3.698-.027.062 0 .099.036.05.34-.617.642-1.27 1.004-1.85.334-.508.642-1.06.923-1.652.594-1.307 1.288-2.509 1.937-3.735.037-.062-.003-.111-.04-.05Zm-2.236-1.06c-.322.617-.669 1.233-.986 1.881-.318.647-.639 1.331-.997 1.947a32.831 32.831 0 0 0-1.87 3.588c0 .043 0 .068.021 0 .628-1.288 1.344-2.466 2.037-3.699.314-.57.61-1.166.886-1.787.307-.66.639-1.276.949-1.923.033-.019-.008-.074-.04-.007Zm-4.386 7.239a37.046 37.046 0 0 0-1.643 3.353c-.033.086.026.111.056.049.535-1.128 1.107-2.219 1.616-3.365.022-.05-.003-.087-.03-.037Zm2.031-7.99c-.668 1.122-1.384 2.151-2.034 3.291-.65 1.141-1.417 2.38-2.104 3.613v.037c.388-.537.739-1.178 1.085-1.763.347-.586.676-1.079 1-1.646.676-1.184 1.407-2.25 2.064-3.465.048-.049.022-.123-.011-.067Zm-5.053 8.228a16.846 16.846 0 0 1-1.09 1.775c-.416.654-.819 1.344-1.225 2.022-.025.043 0 .136.023.074.424-.616.837-1.288 1.247-1.948.388-.57.75-1.188 1.081-1.849.03-.086-.007-.13-.036-.074Zm-2.102 2.897c-.193.389-.396.752-.588 1.134 0 0 0 .062 0 0 .21-.357.406-.739.598-1.128.037-.012.011-.049-.01-.006Zm14.308-23.953c-.291.45-.642.826-.956 1.233-.318.41-.618.859-.897 1.344-.23.472-.43.982-.597 1.522-.226.617-.432 1.233-.657 1.887 0 .043 0 .055.03 0 .198-.45.368-.937.545-1.412a14.15 14.15 0 0 1 .68-1.763c.285-.515.592-.997.918-1.442.314-.426.654-.826.945-1.289.04-.049.03-.135-.01-.08Zm-3.735 7.126c-.273.388-.48.881-.76 1.233-.026.037-.026.141 0 .092.274-.398.53-.829.767-1.288.045-.006.034-.093-.007-.037Zm.883-.617a.524.524 0 0 0-.163.185c-.075.13-.157.246-.247.345-.03.031-.04.148 0 .099.073-.076.141-.165.203-.265a.79.79 0 0 1 .192-.259c.033-.018.059-.135.014-.105Zm4.871-7.131a36.99 36.99 0 0 1-.827 2.743c-.159.443-.369.832-.535 1.232-.166.401-.31.789-.476 1.178-.037.098 0 .166.055.074.774-1.584 1.396-3.357 1.846-5.258.007-.062-.063-.025-.063.031Zm-2.115 4.843a7.907 7.907 0 0 1-.628 1.467c-.033.062 0 .105.037.049.254-.444.469-.946.639-1.491.026-.081-.03-.087-.048-.025Zm8.425-13.091c-.207.401-.41.826-.635 1.196-.2.299-.391.616-.572.949-.03.062 0 .142.037.081.21-.339.432-.66.639-1.005.202-.372.393-.761.572-1.165.033-.068-.008-.124-.04-.056Zm-3.055 2.688a6.49 6.49 0 0 1-.546.93c-.03.05-.018.136.022.081.21-.281.396-.606.554-.968.037-.056-.008-.099-.03-.043Zm7.301-5.339a23.83 23.83 0 0 1-.96 1.898c-.347.69-.642 1.455-.989 2.151-.672 1.35-1.148 2.953-1.845 4.278-.034.062 0 .111.037.05a17.54 17.54 0 0 0 .89-1.985c.332-.827.69-1.623 1.073-2.386.343-.684.635-1.436.97-2.126.317-.586.612-1.204.883-1.85.059-.129-.026-.129-.06-.03Zm-.295 2.374c-.295.616-.664 1.122-.949 1.763-.284.641-.575 1.461-.885 2.163-.31.703-.58 1.313-.827 2.004-.122.333-.229.684-.34 1.035a.588.588 0 0 0 0 .413c.026.08.1-.055.082-.117-.063-.253.15-.752.217-.961.104-.327.244-.617.37-.937.243-.617.516-1.233.767-1.85.251-.616.484-1.232.738-1.849.255-.616.598-1.06.86-1.64.04-.037-.007-.086-.033-.024Zm-1.375 4.153c-.074.166-.137.339-.214.493-.078.154 0 .117.04.055.074-.16.137-.333.21-.499.027-.062-.007-.111-.036-.049Zm2.415-1.559a23.04 23.04 0 0 0-1.635 2.54c-.284.536-.635.943-.949 1.43-.313.487-.638 1.091-.989 1.584-.04.062-.022.173.03.105.627-.851 1.207-1.819 1.805-2.719.287-.444.542-.961.815-1.43.273-.468.627-.974.945-1.436.026-.043.015-.111-.022-.074Zm-5.791 5.69c-.413.759-.8 1.597-1.173 2.411-.052.111 0 .197.062.086.37-.814.738-1.677 1.148-2.466.03-.043-.011-.086-.037-.031Zm-2.829 7.254c-.639 1.233-1.244 2.466-1.897 3.699a41.07 41.07 0 0 0-1.871 3.809c0 .037 0 .068.022 0a65.702 65.702 0 0 1 1.845-3.587c.635-1.159 1.273-2.608 1.934-3.871.04-.087 0-.087-.033-.05Zm-3.466 6.023c-.421.746-.79 1.572-1.23 2.281-.439.709-.822 1.51-1.21 2.275-.022.043 0 .104.026.061.926-1.344 1.653-3.026 2.462-4.555.04-.074 0-.13-.048-.062Zm-5.456 9.118a12.2 12.2 0 0 0-.657 1.183c-.25.432-.524.82-.764 1.264-.03.055 0 .123.034.074.265-.389.516-.802.763-1.233.248-.432.4-.857.654-1.233.037-.018.022-.123-.03-.055Zm7.887-5.45c-.609 1.301-1.244 2.558-1.845 3.846-.019.05 0 .111.03.062a37.927 37.927 0 0 0 1.867-3.846c.022-.074-.019-.136-.052-.062Zm-2.832 5.733c-.277.752-.635 1.411-.926 2.151-.026.056 0 .068.037 0 .356-.663.67-1.389.933-2.163.034-.037-.025-.037-.044.012Zm4.526-11.958c-.148.345-.318.671-.466 1.023 0 .049 0 .086.03.037.148-.352.314-.672.461-1.023.023-.05-.003-.087-.025-.037Zm3.362-2.658c-.125.39-.273.757-.443 1.097-.133.32-.284.616-.432.925-.291.573-.553 1.189-.83 1.781-.045.086 0 .148.051.068.332-.617.61-1.282.916-1.917.317-.589.585-1.248.793-1.96.022-.081-.04-.044-.055.006Zm-2.429 6.116c-.154.413-.313.819-.472 1.232a12.86 12.86 0 0 0-.524 1.233c-.284 1.048-.657 2.053-.993 3.082 0 .037 0 .056.026 0 .372-.883.705-1.81.996-2.773.281-.962.694-1.85 1.026-2.762.034-.074-.033-.08-.058-.012Zm-2.18 6.724a50.07 50.07 0 0 0-1.332 3.643c0 .055 0 .074.033 0 .495-1.165.86-2.466 1.336-3.643.022-.025-.019-.043-.037 0Zm-.158-1.609c-.25.616-.568 1.159-.827 1.775a14.897 14.897 0 0 1-.738 1.744c-.25.42-.435.925-.657 1.375-.221.45-.505 1.073-.738 1.621 0 .037 0 .074.026.031.517-1.06 1.019-2.139 1.58-3.131.238-.491.45-1.017.63-1.572.244-.617.554-1.19.802-1.85.007-.055-.052-.055-.078.007Zm5.214-5.005c-.769 2.139-1.69 4.111-2.746 5.875-.532.881-1.034 1.849-1.602 2.681a9.243 9.243 0 0 0-.624 1.178c-.207.431-.369.937-.59 1.343-.019.044 0 .093.025.056.168-.322.32-.666.454-1.029a9.435 9.435 0 0 1 .85-1.566c.302-.426.564-.931.852-1.381.288-.45.572-.906.852-1.368.491-.814.912-1.733 1.366-2.596a26.982 26.982 0 0 0 1.214-3.186c.026-.062-.03-.068-.052-.007Zm-5.327 11.023c-.089.185-.17.382-.255.561-.025.056 0 .093.026.043.089-.185.166-.382.255-.567.018-.043-.004-.08-.026-.037Zm7.036-13.829c-.17.554-.361 1.089-.572 1.603-.033.086.026.111.056.049a8.55 8.55 0 0 0 .575-1.664c.019-.086-.059-.043-.059.012Zm-.094 1.517a35.94 35.94 0 0 1-2 5.487c-.738 1.584-1.314 3.316-1.974 4.968 0 .049 0 .068.033 0 .767-1.664 1.369-3.538 2.159-5.178.177-.364.299-.801.472-1.171.174-.37.37-.888.554-1.332.33-.889.607-1.83.827-2.811.022-.074-.056-.024-.07.037Zm-4.288 10.788c-.21.518-.432 1.017-.664 1.504a4.425 4.425 0 0 0-.413 1.036c-.023.104.055.08.073 0a9.33 9.33 0 0 1 .528-1.233c.18-.407.35-.826.517-1.233.026-.099-.022-.123-.04-.074Zm7.753-21.471c-.936 1.27-1.594 3.021-1.871 4.981 0 .068.044 0 .052 0 .359-1.875.993-3.57 1.845-4.931.022-.025.011-.081-.026-.05Zm.759.586c-.304.443-.59.919-.857 1.424a10.062 10.062 0 0 0-.668 1.849c0 .049.019.049.034 0 .201-.615.43-1.204.682-1.763a13.8 13.8 0 0 1 .816-1.424c.048-.049.033-.142-.007-.086Zm-.149 1.979c-.184.291-.346.62-.48.98-.022.068.023.093.049.037.14-.327.291-.64.453-.937.03-.049.015-.148-.022-.08Zm1.36-1.066a6.54 6.54 0 0 1-.332.69c-.03.068 0 .111.036.056.131-.219.248-.461.347-.721.03-.081-.03-.087-.051-.025Zm1.672-12.968c-.266.665-.642 1.189-.923 1.849-.28.659-.48 1.294-.738 1.923-.506 1.295-1.14 2.466-1.66 3.699-.02.049 0 .067.036 0 .554-1.165 1.174-2.275 1.665-3.52.27-.678.513-1.387.778-2.071.266-.685.624-1.233.879-1.887.037-.049-.019-.049-.037.007Zm-.62-1.45c-.37.993-.797 1.924-1.155 2.928-.022.062.018.08.04.037.43-.933.822-1.916 1.17-2.94.03-.08-.03-.08-.055-.025Zm-4.953 11.213a44.481 44.481 0 0 0-1.916 5.616c0 .043.022.031.03 0 .284-.888.568-1.775.867-2.645.347-.986.687-1.997 1.063-2.958.03-.062-.007-.062-.044-.013Zm-2.215 5.497c-.151.462-.317.9-.487 1.344-.018.049 0 .074.037 0 .179-.425.341-.868.487-1.326.026-.068-.022-.068-.037-.018Zm9.978-15.81a31.176 31.176 0 0 0-1.476 3.612c-.03.105.037.105.063.031.236-.648.457-1.301.738-1.917.28-.617.506-1.104.738-1.683.019-.074-.041-.105-.063-.043Zm1.45-1.214c-.432 1.454-1.059 2.724-1.51 4.16-.018.062.022.062.037 0a40.441 40.441 0 0 0 1.521-4.154c.037-.087-.033-.062-.048-.006Zm.45.461c-.24.752-.535 1.468-.782 2.22-.022.061.018.086.04.037a23.94 23.94 0 0 0 .786-2.238c.023-.074-.029-.074-.044-.019Zm.612.104c-.28.849-.513 1.738-.698 2.657-.195 1.036-.254 2.133-.435 3.175 0 .111.063.061.077 0 .185-.98.251-2.004.421-2.996.174-.97.404-1.909.687-2.805.022-.092-.034-.092-.052-.031Zm-.74 5.371c-.403 1.584-.657 3.249-1.052 4.833-.026.105.059.08.077 0 .439-1.56.635-3.249 1.023-4.845.014-.062-.037-.031-.048.012Zm1.838-4.796a34.187 34.187 0 0 1-.738 2.521c-.03.099.037.099.062.031.27-.827.508-1.681.713-2.558.029-.068-.026-.037-.037.006Zm.96 1.27c-.141.549-.333 1.036-.484 1.572-.029.099.037.105.063 0 .179-.519.342-1.054.487-1.603.022-.067-.052-.024-.066.031Zm1.171-1.535a35.596 35.596 0 0 0-.919 2.675c-.222.789-.369 1.615-.576 2.423 0 .074.037.049.052 0 .218-.728.369-1.51.583-2.256.267-.978.571-1.927.908-2.842.026-.08-.026-.08-.048 0Zm-.095 1.466c-.111.425-.237.838-.37 1.233-.025.092.034.092.056 0 .133-.419.254-.845.369-1.282.033-.05-.041-.007-.055.049Zm-2.629 7.632a44.048 44.048 0 0 1-1.31 3.575 19.078 19.078 0 0 0-.487 1.696c-.185.616-.325 1.269-.488 1.904 0 .068.041.056.056 0 .177-.616.325-1.263.517-1.849.164-.628.353-1.237.564-1.825a39.233 39.233 0 0 0 1.218-3.476c.004-.08-.052-.087-.07-.025Zm-1.884 7.507c-.318.998-.661 2.009-.927 3.051-.018.068.037.049.052 0 .321-1.005.62-2.022.934-3.033.029-.08-.033-.086-.059-.018Zm-1.583 4.883a66.779 66.779 0 0 1-1.044 3.976 42.332 42.332 0 0 0-1 3.458c-.019.081.037.056.051 0 .37-1.183.739-2.385 1.074-3.581.375-1.255.702-2.548.978-3.871.019-.08-.048-.037-.059.018Zm-3.265 10.401c-.184.715-.476 1.331-.694 2.022-.218.69-.42 1.189-.612 1.806-.023.061 0 .086.04.031.243-.518.45-1.078.62-1.671.207-.758.517-1.418.698-2.194.014-.074-.04-.044-.052.006Zm-.529-3.929c-.491 1.597-1.192 3.002-1.572 4.704-.023.092.047.067.066 0 .458-1.615 1.07-3.082 1.557-4.691.023-.074-.033-.074-.051-.013Zm-1.201-1.763c-.48 1.276-1.078 2.429-1.477 3.785a20.98 20.98 0 0 1-.804 1.991c-.277.666-.484 1.43-.738 2.121 0 .037 0 .049.026 0 .31-.703.542-1.492.848-2.195.248-.567.47-1.159.69-1.744.222-.586.473-1.338.716-1.998.244-.659.536-1.294.776-1.966.04-.049-.015-.049-.037.006Zm-2.931 5.463a18.17 18.17 0 0 0-.299.844c-.093.256-.178.519-.255.789 0 .074.037.056.052 0 .16-.562.343-1.106.546-1.627.022-.05-.026-.056-.044-.006Zm.334-3.699c-.248.616-.506 1.232-.764 1.849-.258.616-.45 1.313-.716 1.905a43.2 43.2 0 0 0-1.233 3.421c0 .037 0 .049.026 0 .214-.524.406-1.085.616-1.621.21-.537.462-1.233.739-1.85.276-.616.442-1.233.671-1.849a98.01 98.01 0 0 1 .738-1.917c0 .006-.055 0-.077.062Zm-2.764 7.662c-.078.32-.18.62-.306.894 0 .037 0 .074.022.043.073-.102.129-.234.163-.382.051-.191.125-.363.17-.561.01-.068-.037-.037-.049.006Zm5.22-13.74c-.273.665-.517 1.362-.794 2.028a20.722 20.722 0 0 0-.65 1.756c-.021.074.02.093.049.037a54.87 54.87 0 0 0 1.435-3.791c.034-.055-.018-.08-.04-.03Zm-1.292 4.278a6.888 6.888 0 0 0-.295.968c0 .055.03.037.04 0 .045-.154.085-.315.133-.463.048-.147.115-.32.166-.486.022-.068-.026-.074-.044-.019Zm2.971-7.12c-.306.949-.705 1.806-.992 2.78-.03.099.033.093.059.031.184-.481.346-.986.513-1.479.166-.494.336-.851.472-1.307.026-.087-.03-.087-.052-.025Zm8.648-8.056c-.307.752-.58 1.535-.89 2.274-.033.08 0 .142.048.062.332-.721.587-1.529.89-2.293.033-.068-.022-.099-.048-.043Zm1.289-3.631c-.136.432-.369.783-.472 1.233-.022.068.033.043.048 0 .151-.413.343-.783.48-1.233.026-.061-.034-.061-.056 0Zm2.069-7.688c-.135.569-.296 1.12-.483 1.646-.181.573-.369 1.134-.539 1.714-.317 1.079-.557 2.207-.875 3.292-.026.086.033.086.056 0 .347-1.135.627-2.306.967-3.446.169-.574.369-1.134.516-1.708.158-.482.293-.985.403-1.504.029-.086-.034-.049-.045.006Zm-1.771 4.865c-.085.351-.159.703-.258 1.042-.03.098.04.105.066.031.1-.352.166-.716.247-1.079.019-.08-.044-.043-.055.006Zm.568-3.538c-1.045 3.218-1.934 6.577-2.849 9.906-.026.092.037.098.059 0 .472-1.597.9-3.236 1.391-4.821.491-1.584.927-3.421 1.458-5.085.026-.062-.037-.068-.059 0Zm3.541.985a39.454 39.454 0 0 0-.738 2.589c-.262.968-.406 1.998-.613 2.996 0 .086.045.043.06 0 .45-1.849.778-3.797 1.354-5.548.037-.111-.037-.117-.063-.037Zm-.278 4.075c-.236.863-.432 1.756-.672 2.619-.029.111.041.111.067.031.26-.863.488-1.753.682-2.663.026-.111-.059-.055-.077.013Zm-3.145 7.613c-.218.832-.495 1.615-.687 2.466a62.912 62.912 0 0 0-.568 2.811c0 .086.044.043.055 0 .395-1.788.845-3.526 1.277-5.289.026-.092-.055-.055-.077.012Zm-1.278 4.506c-.133.777-.265 1.548-.369 2.33 0 .093.052.05.063 0 .137-.77.255-1.547.369-2.324.004-.092-.052-.055-.063-.006Zm.046 3.772c-.181 1.153-.472 2.274-.712 3.39-.096.45-.247.894-.369 1.332a18.113 18.113 0 0 0-.34 1.59c0 .08.041.037.052 0a50.301 50.301 0 0 0 1.417-6.318c.015-.08-.04-.031-.048.006Zm-1.374 6.843a31.87 31.87 0 0 0-.632 4.272c0 .055.041 0 .048 0 .266-1.406.296-2.885.635-4.266.019-.086-.037-.055-.051-.006Zm-.277 4.667c-.042.133-.07.277-.082.426-.03.216-.08.424-.147.616-.026.074.018.093.048.037.063-.133.107-.289.129-.456.02-.212.056-.419.107-.616.033-.062-.029-.068-.055-.007Zm3.06-10.966c-.225 1.584-.738 3.014-1.041 4.561-.273 1.442-.579 2.885-.775 4.358 0 .074.052 0 .059 0 .251-1.535.591-3.033.878-4.549.288-1.516.764-2.848.938-4.377.007-.104-.052-.037-.059.007Zm-5.797 2.439a17.627 17.627 0 0 0-.787 4.432c0 .08.056 0 .06-.037.157-1.509.418-2.981.778-4.389.019-.068-.037-.056-.051-.006Zm-1.195 6.8a31.625 31.625 0 0 1-.554 2.398c-.18.681-.326 1.386-.435 2.108 0 .074.048 0 .055 0 .187-.688.348-1.394.484-2.114.204-.79.377-1.601.517-2.429.011-.086-.06-.012-.067.037Zm-.372-2.199c-.14.542-.303 1.072-.45 1.615-.148.542-.24 1.134-.369 1.695-.019.086.048.068.062 0 .137-.499.207-1.03.329-1.535.144-.616.321-1.19.472-1.8.026-.062-.029-.025-.044.025Zm-.505-.112c-.439 1.849-1.218 3.507-1.583 5.431 0 .067.037.049.048 0 .262-.906.56-1.788.812-2.7.251-.913.568-1.794.778-2.743.019-.074-.044-.037-.055.012Zm5.395-9.148c-.091.796-.215 1.58-.369 2.348a36.055 36.055 0 0 1-1.044 4.254c-.218.684-.48 1.313-.687 2.009 0 .05 0 .05.03 0a43.46 43.46 0 0 0 1.339-3.988c.189-.752.352-1.522.488-2.305a20.14 20.14 0 0 0 .302-2.367c.015-.081-.055 0-.059.049Zm4.24-.012c-.1.438-.158.9-.17 1.369-.028.463-.082.921-.162 1.368-.077.616-.177 1.177-.28 1.769-.104.592-.222 1.005-.296 1.523 0 .037.022 0 .026 0a35.56 35.56 0 0 0 .653-3.033c.059-.469.133-.937.178-1.412a16.12 16.12 0 0 1 .121-1.59c.019-.105-.055-.055-.07.006Zm-1.47 6.866c-.369 1.337-.738 2.65-1.067 3.994a31.869 31.869 0 0 0-.454 2.083c-.107.617-.313 1.147-.391 1.757 0 .05.037 0 .041 0 .14-.616.321-1.152.454-1.757.151-.696.306-1.393.472-2.083.321-1.338.683-2.644 1.004-3.982.019-.136-.044-.093-.059-.012Zm-.884 6.282c-.09.285-.169.579-.237.881-.059.296-.114.617-.188.882-.018.067.037.043.052 0a4.78 4.78 0 0 0 .181-.789c.068-.339.15-.671.243-.993.011-.068-.04-.031-.051.019Zm3.144-4.432c-.284.845-.609 1.658-.864 2.528-.151.517-.347.998-.516 1.497a8.462 8.462 0 0 0-.303 1.387c0 .074.037.037.048 0 .447-1.886 1.14-3.581 1.694-5.381.03-.092-.037-.092-.059-.031Zm2.859-3.607c-.324 2.084-.941 4.013-1.254 6.097 0 .086.044.043.055 0a67.108 67.108 0 0 0 1.281-6.121c.014-.105-.074-.037-.082.024Zm1.12-3.543c-.114 1.018-.295 2.016-.409 3.033a102.672 102.672 0 0 1-.41 3.267c-.314 2.158-.524 4.365-1.008 6.442 0 .074.041.043.052 0 .45-2.123.82-4.291 1.107-6.491a45.57 45.57 0 0 0 .369-3.082c.089-1.03.285-2.114.369-3.187.008-.111-.062-.031-.07.018Zm-2.065 12.551a9.273 9.273 0 0 1-.184 1.073c-.019.086.044.049.059 0 .086-.358.15-.73.192-1.11.011-.086-.06-.018-.067.037Zm2.687-20.744c-.321 1.375-.66 2.737-.904 4.161-.022.13.074.074.093 0 .269-1.399.557-2.786.871-4.161.011-.067-.048-.067-.06 0Zm2.459-14.294a27.774 27.774 0 0 1-.292 1.781c-.096.616-.199 1.233-.288 1.849-.192 1.313-.306 2.657-.542 3.945 0 .068.037.037.044 0 .24-1.183.413-2.428.59-3.643.096-.653.192-1.313.285-1.972.115-.651.208-1.311.28-1.979.007-.123-.07-.043-.077.019Zm-.857 7.082a42.3 42.3 0 0 0-.254 1.904c0 .074.055 0 .063 0 .11-.616.169-1.282.254-1.917.008-.104-.055-.037-.063.013Zm.187-6.749c-.096.616-.203 1.171-.314 1.75-.111.58-.288 1.153-.402 1.745 0 .08.041.049.055 0 .331-1.115.579-2.292.738-3.507 0-.093-.066-.05-.077.012Zm-.613-.284c-.107.721-.269 1.417-.391 2.132-.122.715-.295 1.418-.406 2.139-.111.722-.299 1.4-.421 2.109-.122.708-.255 1.405-.369 2.114 0 .098.055.055.066 0 .148-.703.281-1.412.406-2.121.126-.709.31-1.399.44-2.114.254-1.418.553-2.829.738-4.278.015-.117-.063-.062-.063.019Zm-1.742 5.325c-.136.678-.225 1.374-.369 2.046 0 .068.041 0 .052 0 .162-.653.225-1.374.369-2.046.007-.074-.044-.043-.052 0Zm-.813.457c-.461 1.849-.827 3.754-1.284 5.609 0 .074.04.05.055 0 .258-.813.465-1.668.62-2.552.092-.474.225-.918.343-1.38.118-.463.211-1.135.332-1.689.023-.093-.051-.043-.066.012Zm-.206-5.583c-.305.925-.552 1.9-.739 2.909 0 .093.048.044.063 0 .118-.437.207-.9.314-1.35.107-.45.288-1.023.428-1.541.018-.092-.052-.074-.066-.018Zm-1.221 8.745c-.158.542-.281 1.11-.369 1.695-.089.542-.21 1.06-.273 1.609 0 .086.059 0 .066 0 .251-1.054.321-2.244.628-3.261.026-.111-.033-.111-.052-.043Zm-1.078 1.634c-.225.838-.344 1.744-.543 2.601a23.484 23.484 0 0 0-.531 2.7c0 .062.044 0 .048 0 .203-.9.395-1.806.605-2.7.21-.894.269-1.757.476-2.589.018-.111-.044-.061-.055-.012Zm-1.013 5.794a4.965 4.965 0 0 1-.147.795c-.019.074.04.037.052 0a5.4 5.4 0 0 0 .147-.82c.004-.074-.048-.018-.052.025Zm8.117-16.544c-.144.875-.214 1.744-.314 2.632-.1.887-.243 1.689-.306 2.558 0 .062.04 0 .044 0 .107-.814.24-1.609.369-2.416.126-.919.17-1.85.299-2.774-.007-.117-.085-.056-.092 0Zm.617 1.707c-.133.918-.277 1.849-.369 2.767-.048.463-.13.919-.192 1.381-.063.463-.107 1.06-.192 1.584 0 .068.037.05.051 0 .193-.856.33-1.745.41-2.65.14-1.03.24-2.084.369-3.119-.007-.08-.07-.013-.077.037Zm-1.289 11.663c-.13 1.134-.281 2.262-.395 3.397-.115 1.134-.248 2.435-.436 3.606-.018.117.063.061.078 0 .225-1.136.388-2.304.487-3.489.107-1.184.225-2.367.343-3.545-.007-.08-.07-.012-.077.031Zm-.947 10.539c-.266 2.324-.705 4.592-.889 6.947 0 .08.059 0 .066-.037.21-2.336.653-4.611.882-6.947.011-.074-.055-.012-.059.037Zm-.942 2.844c-.192 1.177-.299 2.385-.472 3.569-.174 1.183-.369 2.515-.495 3.803 0 .05.033 0 .037 0 .17-1.233.369-2.428.55-3.655.181-1.227.255-2.466.424-3.699.011-.092-.04-.055-.044-.018Zm1.42 3.469a30.867 30.867 0 0 0-.369 3.039c0 .117.081 0 .089-.055.081-1.017.258-2.01.369-3.027-.008-.086-.081-.012-.089.043Zm2.33-15.257a41.107 41.107 0 0 0-.772 4.087 32.322 32.322 0 0 0-.147 2.336c-.037.77-.122 1.529-.181 2.293 0 .08.055 0 .063-.037.118-1.424.225-2.848.369-4.272.166-1.507.413-2.986.738-4.419.018-.105-.059-.062-.07.012Zm2.169-11.094a26.32 26.32 0 0 1-.469 2.083c-.029.105.056.056.074 0 .184-.672.337-1.367.458-2.077.015-.136-.052-.093-.063-.006Zm-.312-.914c-.17.709-.321 1.431-.465 2.152-.018.092.048.049.063 0 .155-.715.295-1.443.458-2.152.022-.086-.041-.049-.056 0Zm1.414-1.818c-.08.87-.226 1.719-.435 2.527-.155.752-.299 1.504-.454 2.256 0 .08.044.056.059 0 .203-.735.372-1.496.505-2.274.194-.818.318-1.677.369-2.552.019-.074-.044-.007-.044.043Zm-.597 6.215a2.859 2.859 0 0 0-.111.561c-.037.296-.096.585-.133.881 0 .086.059 0 .07-.031.042-.202.076-.407.104-.616.021-.266.062-.527.121-.777.037-.08-.022-.086-.051-.018Zm-.44 6.335c-.122 1.122-.303 2.207-.454 3.317-.151 1.109-.173 2.305-.277 3.445 0 .068.045 0 .048 0 .081-.462.093-.943.148-1.411.074-.617.122-1.276.188-1.911.067-.635.181-1.147.251-1.732.07-.586.115-1.147.162-1.726.004-.105-.062-.031-.066.018Zm-1.348 12.04c-.107.616-.189 1.232-.277 1.886 0 .074.051 0 .059 0 .122-.617.173-1.233.277-1.849.011-.13-.048-.093-.059-.037Zm-.321 4.067c-.163 1.676-.473 3.285-.495 4.999 0 .055.041 0 .044 0 .045-.395.089-.789.141-1.184.051-.394.04-.82.085-1.233.103-.869.228-1.719.291-2.601.004-.105-.059-.018-.066.019Zm1.691-1.232c-.085 1.387-.111 2.781-.196 4.167-.092 1.486-.258 2.972-.288 4.47 0 .08.056 0 .059-.037.141-1.431.244-2.891.336-4.315.093-1.424.096-2.867.152-4.315.003-.087-.06-.007-.063.03Zm.147-5.005c-.041.524-.082 1.054-.118 1.585 0 .055.04 0 .044 0 .066-.529.111-1.065.136-1.603.004-.093-.055-.031-.062.018Zm-2.277-2.853c-.096 1.06-.24 2.102-.295 3.174 0 .074.055 0 .059-.037.103-1.06.21-2.114.295-3.174.008-.08-.055-.013-.059.037Zm3.972-14.161c0-.074-.074 0-.074.061 0 1.233-.117 2.521-.073 3.767 0 .098.092 0 .095-.081.037-1.245.066-2.496.052-3.747Zm.291 3.705c0-.068-.067 0-.067.055v2.034c0 .876-.059 1.751-.092 2.62 0 .086.063 0 .066-.037.067-.766.107-1.538.118-2.312.011-.782-.018-1.571-.025-2.36Zm.499 3.718c-.018.246-.025.493-.04.739 0 .062.044 0 .048 0 .025-.24.025-.493.044-.739.018-.099-.052-.044-.052 0Zm.638-3.558c-.037.734-.04 1.474-.085 2.207-.06.67-.099 1.345-.118 2.022 0 .099.089 0 .092-.08.1-1.393.115-2.786.174-4.186.004-.08-.059-.012-.063.037Zm.487 3.631c0-.093-.063 0-.066.037-.041.998 0 1.997-.034 2.996a83.537 83.537 0 0 0-.055 2.823c0 1.072-.044 2.151-.055 3.224 0 .924.029 1.849.066 2.773 0 .062.055 0 .055-.055-.055-1.973.048-3.914.052-5.887 0-.974 0-1.966.041-2.94.04-.974-.022-1.985-.004-2.971Zm-.277 12.077c0-.062-.062 0-.058.061.031.492.045.986.04 1.48 0 .068.059 0 .059-.062a18.22 18.22 0 0 0-.041-1.479Zm.32 2.008c0-.074-.07 0-.067.068.152 2.29.214 4.594.185 6.897 0 .093.074 0 .074-.049.07-2.31.006-4.627-.192-6.916Zm-.023 7.083c0-.068-.065 0-.065.068v1.535c0 .074.051 0 .055-.037.034-.52.038-1.045.01-1.566Zm-.593.463c0-.062-.058 0-.058.062v.739c0 .068.062 0 .062-.061.018-.247-.004-.487-.004-.74Zm2.608-5.141c-.04-.567-.022-1.141-.07-1.708-.088-1.097-.229-2.182-.336-3.273 0-.074-.073 0-.07.074.107 1.103.185 2.219.277 3.329.041.505.037 1.017.074 1.522.037.506.081 1.067.136 1.591 0 .074.067 0 .067-.062-.03-.493-.044-1.011-.078-1.473Zm-.334-11.078c-.059-1.233-.14-2.496-.159-3.735 0-.074-.066 0-.066.068.016 2.546.139 5.088.369 7.606 0 .062.055 0 .051-.055-.07-1.295-.136-2.589-.195-3.884Zm.366 3.391c0-.068-.066 0-.059.055.094.768.15 1.547.166 2.33 0 .074.066 0 .063-.061a18.436 18.436 0 0 0-.17-2.324Zm1.701 9.961c-.048-1.282-.181-2.564-.27-3.834-.173-2.552-.601-5.005-.815-7.545 0-.08-.074 0-.071.074.17 2.558.595 5.03.776 7.588.18 2.559.398 5.043.575 7.564 0 .074.07 0 .07-.068-.029-1.276-.221-2.509-.265-3.779Zm-.874-11.59c0-.08-.074 0-.07.068.047.746.118 1.486.214 2.219 0 .08.07 0 .066-.068-.055-.746-.169-1.479-.21-2.219Zm-.914-16.315a51.056 51.056 0 0 1-.13-3.027c0-.061-.055 0-.055.056 0 .961 0 1.935.055 2.891.03.511.078 1.017.111 1.528.016.47.051.938.103 1.4 0 .068.067 0 .063-.062-.048-.937-.081-1.855-.147-2.786Zm-.562.407c-.052-.789-.122-1.578-.155-2.367-.033-.789-.126-1.745-.148-2.62 0-.062-.059 0-.055.056.022 3.353.413 6.675.594 10.004 0 .049.048 0 .044-.043-.055-1.677-.177-3.384-.28-5.03Zm-.7-1.357c0-.068-.059 0-.059.055.044.789 0 1.584.062 2.367 0 .068.059 0 .063-.049a16.61 16.61 0 0 0-.066-2.373Zm-.433 1.473c-.056-1.751-.189-3.501-.218-5.252 0-.074-.07 0-.07.056 0 1.726.151 3.427.173 5.147 0 .826.055 1.658.07 2.465.019.95 0 1.899.081 2.842 0 .056.052 0 .052-.049-.055-1.726-.022-3.471-.088-5.209Zm-.21 4.31c0-.056-.054 0-.05.055.021.253 0 .512.025.771 0 .043.04 0 .044-.037a7.155 7.155 0 0 0-.019-.789Zm-.793-9.562c0-.067-.067 0-.067.056v3.187c0 .912-.07 1.806-.055 2.724h.022c.022-.986.133-1.966.151-2.952.019-.987-.04-2.022-.051-3.015Zm-.408 6.233c0 .284-.021.561-.021.845 0 .055.054 0 .054-.044 0-.283 0-.573.022-.856.011-.056-.055-.013-.055.055Zm-.37-6.534c-.037.375-.056.754-.056 1.134 0 .456-.077.918-.099 1.375 0 .092.066 0 .07-.044.04-.394.059-.801.096-1.195.037-.395 0-.882.04-1.301.008-.068-.051-.006-.051.031Zm3.854 12.292c0-.055-.059 0-.055.056.103 1.282.114 2.589.155 3.871 0 .049.041 0 .041-.031a28.096 28.096 0 0 0-.141-3.896Zm.467 1.517c0-.068-.062 0-.062.061.015.277.021.555.018.832 0 .087.062 0 .066-.037a9.764 9.764 0 0 0-.022-.856Zm-3.95 4.836c-.078 1.061-.233 2.09-.332 3.144-.1 1.054-.126 2.09-.166 3.125 0 .062.04 0 .044 0 .125-1.047.159-2.114.243-3.174.085-1.06.218-2.059.274-3.082.011-.13-.063-.062-.063-.013Zm-1.769 7.128c-.063.955-.089 1.911-.159 2.866-.07.956-.199 2.004-.251 3.021 0 .111.078 0 .085-.05.092-1.011.211-2.028.292-3.045.081-1.017.04-1.892.099-2.835.004-.08-.062-.013-.066.043Zm.291.836c-.005.225-.02.45-.043.672 0 .074.054 0 .058-.031.024-.226.038-.455.04-.684-.011-.056-.055.006-.055.043Zm7.29-7.649c-.04-1.017-.173-2.028-.21-3.046 0-.073-.07 0-.07.074 0 1.024.111 2.065.17 3.083.059 1.017.036 2.083.077 3.119 0 .086.081 0 .081-.081 0-1.047-.003-2.083-.048-3.149Zm-.052 7.682c0-.055-.051 0-.051.05.037.906 0 1.8 0 2.7a24.606 24.606 0 0 0-.022 2.139c0 .067.059 0 .062-.05.088-1.609.092-3.228.011-4.839Zm.253 5.812c0-.056-.054 0-.054.055v.808c0 .055.051 0 .051-.037.007-.278.003-.549.003-.826Zm2.179-.765c-.118-.912-.129-1.849-.254-2.761 0-.068-.067 0-.059.061.221 1.714.203 3.495.398 5.221 0 .074.067 0 .067-.067a20.834 20.834 0 0 0-.152-2.454Zm.295 4.286c0-.08-.077 0-.073.068l.022.296c.018.222.036.437.058.653 0 .093.081 0 .077-.08-.004-.308-.055-.623-.084-.937Zm.839-2.46a16.087 16.087 0 0 1-.229-1.775c-.103-1.06-.251-2.108-.332-3.174a20.22 20.22 0 0 0-.21-1.498c-.074-.487-.126-.98-.2-1.467-.155-1.055-.369-2.078-.52-3.126 0-.061-.067 0-.063.062.151.999.295 1.997.443 2.99.074.493.114.992.188 1.485.074.493.196 1.104.248 1.677.088.992.228 1.966.324 2.952.052.543.107 1.079.185 1.609.077.53.225 1.153.314 1.745 0 .092.088 0 .081-.087a16.115 16.115 0 0 0-.229-1.393Zm.178-.542c0-.068-.07 0-.062.068.036.339.073.684.125 1.023 0 .074.07 0 .066-.068-.036-.339-.084-.678-.129-1.023Zm-1.948-18.192c0-.056-.066.031-.059.074.185 1.177.343 2.361.543 3.532 0 .08.081 0 .074-.08a50.202 50.202 0 0 0-.558-3.526Zm1.176.865c-.152-.475-.262-.974-.391-1.467 0-.056-.071.043-.059.092.107.444.199.9.321 1.338.121.437.258.832.347 1.276 0 .068.077-.043.073-.093a5.118 5.118 0 0 0-.291-1.146Zm-1.501-9.359c-.24-1.233-.391-2.466-.583-3.698 0-.062-.063 0-.059.061.296 2.437.708 4.83 1.233 7.157 0 .043.051 0 .044-.056-.166-1.171-.41-2.311-.635-3.464Zm1.189 3.526c-.065-.285-.12-.575-.166-.869 0-.068-.066 0-.059.055.046.304.104.602.173.894.011.049.059-.037.052-.08Zm.23-7.137a18.976 18.976 0 0 0-.369-2.41c-.023-.087-.115.061-.096.141.35 1.591.335 3.354.686 4.932 0 .067.081-.044.074-.099-.089-.838-.199-1.695-.295-2.564Zm.436 1.392c0-.08-.081 0-.074.081.1.826.211 1.645.34 2.465 0 .074.074 0 .07-.074-.081-.832-.218-1.646-.336-2.472Zm-4.268-.148a24.486 24.486 0 0 0-.21-2.774c0-.08-.074 0-.07.074.158 1.775.136 3.563.269 5.338 0 .049.041 0 .041-.037-.022-.869-.022-1.732-.03-2.601Zm.141 5.874s-.029.05 0 .05c.028 0 .018-.05 0-.05Zm6.603-4.826a11.955 11.955 0 0 0-.491-2.169c0-.05-.07.037-.055.08.208.753.367 1.543.472 2.354.062.674.148 1.341.259 1.998 0 .049.055 0 .051-.068-.077-.697-.118-1.461-.236-2.195Zm1.409 6.239c-.118-.456-.277-.888-.406-1.332a12.106 12.106 0 0 0-.388-1.294c-.022-.043-.07.037-.055.08.138.363.253.749.343 1.153.126.517.284 1.004.428 1.51.248.875.469 1.769.72 2.638 0 0 .033 0 .03-.037-.203-.931-.443-1.812-.672-2.718Zm.885 5.658a28.143 28.143 0 0 0-.627-2.151c0-.043-.059.037-.048.074.173.684.424 1.343.557 2.046.1.744.231 1.475.391 2.188 0 .05.056-.03.052-.067a29.358 29.358 0 0 0-.325-2.09Zm-.18.315c0-.055-.066.037-.055.081.07.283.126.576.166.875 0 .068.063 0 .063-.068a4.95 4.95 0 0 0-.174-.888Zm-1.307-1.64a16.837 16.837 0 0 0-.399-1.819c0-.049-.066.037-.055.087.149.601.272 1.219.369 1.849.077.61.13 1.228.159 1.849 0 .049.04 0 .04-.031a9.731 9.731 0 0 0-.114-1.935Zm-.17 4.08c0-.061-.059 0-.059.062.04.715.055 1.433.044 2.151-.051.642-.063 1.29-.037 1.936 0 .049.044 0 .048-.043.018-.327.026-.654.026-.987 0-.332.054-.752.069-1.14a21.01 21.01 0 0 0-.091-1.979Zm.35 6.132c0-.061-.059 0-.055.062.055.616.047 1.27.084 1.898 0 .062.051 0 .051-.043a13.446 13.446 0 0 0-.08-1.917Zm.263 1.093c0-.062-.059 0-.059.062-.008.263.008.527.048.782 0 .044.047 0 .047-.049.008-.265-.033-.53-.036-.795Zm.753 2.427c-.055-.82-.088-1.64-.136-2.466-.089-1.645 0-3.297-.085-4.931 0-.074-.07 0-.066.068.029.783 0 1.559 0 2.336 0 .777 0 1.634.033 2.466.049 1.623.194 3.233.435 4.808 0 .049.045 0 .045-.043-.06-.789-.178-1.517-.226-2.238Zm.289 4.97c0-.074-.074 0-.07.074.04.955.173 1.886.258 2.835 0 .105.107 0 .1-.098-.092-.944-.233-1.862-.288-2.811Zm1.005-2.301a59.011 59.011 0 0 1-.233-4.278c0-.055-.052 0-.052.05-.01 1.444.053 2.888.189 4.315.177 1.331.243 2.693.398 4.031 0 .068.063 0 .059-.062a82.179 82.179 0 0 0-.361-4.056Zm.404 2.88c0-.068-.073 0-.066.068.038.256.068.515.088.777 0 .067.062 0 .059-.062a5.933 5.933 0 0 0-.081-.783Zm.974-1.96c0-.055-.071.037-.059.093.247 1.404.453 2.827.616 4.265 0 .099.1 0 .092-.092a51.712 51.712 0 0 0-.649-4.266Zm1.395 2.884a593.44 593.44 0 0 1-1.975-10.207c0-.05-.059.03-.051.074.31 1.682.542 3.402.863 5.079.321 1.676.676 3.483 1.089 5.159.019.068.085-.049.074-.105Zm-.087-3.451c0-.056-.077.043-.066.092.085.419.158.845.24 1.264 0 .049.059-.031.055-.068a16.17 16.17 0 0 0-.229-1.288Zm.117-5.235a12.092 12.092 0 0 0-.469-1.726c0-.037-.041 0-.041.05v.037c0 .043.041 0 .041-.037.054.497.153.977.295 1.424.14.616.292 1.233.403 1.911 0 .092.084 0 .084-.087a9.06 9.06 0 0 0-.313-1.572Zm1.16.791a17.418 17.418 0 0 0-.424-1.615c-.019-.062-.078.037-.063.092.157.528.297 1.07.421 1.622.022.092.088-.044.066-.099Zm-.701-4.124a101.69 101.69 0 0 1-.465-1.794c-.151-.604-.343-1.233-.461-1.849a34.531 34.531 0 0 0-.709-3.175c-.328-1.122-.542-2.324-.889-3.439 0-.056-.074.043-.059.092.321 1.079.524 2.244.797 3.353.273 1.11.531 2.213.738 3.341.111.574.284 1.116.424 1.671.141.555.307 1.196.469 1.781.318 1.122.628 2.238.93 3.372 0 .037.045 0 .037-.055a50.573 50.573 0 0 0-.812-3.298Zm-2.317-12.409c-.159-.567-.321-1.122-.476-1.689-.019-.062-.081.043-.07.098.251 1.017.531 2.004.764 3.027 0 .062.066-.037.062-.08a6.356 6.356 0 0 0-.28-1.356Zm-1.244-7.661c0-.043-.051 0-.044.062.072.537.163 1.066.273 1.584 0 .043.048 0 .044-.055a24.331 24.331 0 0 0-.273-1.591Zm.866.432c-.188-1.122-.55-2.17-.668-3.322 0-.068-.067 0-.063.061.143 1.101.342 2.18.594 3.224.229 1.233.469 2.416.738 3.606 0 0 .03 0 .026-.043-.184-1.147-.428-2.336-.627-3.526Zm3.051 8.171a7.738 7.738 0 0 0-.675-1.565 9.215 9.215 0 0 1-.912-1.763c-.022-.056-.085.049-.07.105.22.584.483 1.12.783 1.596.31.53.557 1.128.841 1.695.007.013.044-.043.033-.068Zm4.127 14.044c-.224-.959-.49-1.89-.793-2.786a70.72 70.72 0 0 0-.893-2.669c-.019-.056-.074.037-.06.08.296.906.576 1.849.853 2.743.277.894.513 1.849.834 2.725.022.055.07-.044.059-.093Zm.647.448a24.094 24.094 0 0 0-.657-2.071c-.022-.062-.085.043-.067.098.211.691.399 1.43.65 2.084.022.067.074-.056.074-.111Zm-2.843 2.166c-.191-.696-.306-1.424-.527-2.108a24.764 24.764 0 0 1-.502-2.404c0-.056-.07.037-.063.086.148.765.251 1.547.424 2.293.089.382.218.746.318 1.122.08.377.179.742.295 1.091.019.05.067-.037.055-.08Zm.281 1.823c0-.062-.077.037-.07.086.14.808.307 1.597.443 2.398 0 .086.081 0 .074-.074-.1-.795-.292-1.615-.447-2.41Zm1.387.382c0-.055-.066 0-.055.08.402 1.504.738 3.082 1.107 4.586 0 .056.07-.037.063-.08a33.32 33.32 0 0 0-1.115-4.586Zm1.913 4.457c-.122-.474-.277-.931-.403-1.405 0-.05-.063 0-.051.074.121.48.258.949.402 1.411.022.05.07-.037.052-.08Zm.687-1.276a24.264 24.264 0 0 0-.451-2.058c-.188-.691-.428-1.32-.623-1.991-.019-.062-.078.037-.063.092.17.616.388 1.233.554 1.849.092.352.188.697.273 1.048.085.352.14.771.247 1.134.018.081.074-.024.063-.074Zm1.072.679a11.657 11.657 0 0 0-.398-1.343c-.019-.056-.074.043-.059.086.14.444.276.881.402 1.338.015.055.066-.037.055-.081Zm1.699 1.005c-.388-1.097-.716-2.256-1.081-3.372-.366-1.116-.775-2.219-1.144-3.347 0-.055-.071.043-.056.086.343 1.147.738 2.256 1.107 3.391.369 1.134.698 2.268 1.108 3.353.014.068.084-.043.066-.111Zm-.468-3.41c-.107-.339-.214-.678-.318-1.023-.018-.056-.077.043-.062.092.099.345.199.69.313 1.023.03.062.081-.043.067-.092Zm-4.631-13.553c-.576-1.622-1.137-3.255-1.742-4.845-.022-.056-.081.043-.063.092.572 1.547 1.107 3.125 1.654 4.703.254.74.553 1.437.808 2.182.254.746.557 1.652.838 2.466 0 .037.055-.031.044-.061-.48-1.548-1.004-3.033-1.539-4.537Zm-3.724-13.667a33.564 33.564 0 0 0-.738-2.527 29.617 29.617 0 0 1-.801-2.528c0-.074-.089.05-.074.111.218.894.476 1.759.771 2.589.262.82.499 1.677.772 2.466.022.068.085-.049.07-.111Zm1.763 4.389c-.295-.813-.601-1.621-.867-2.465 0-.05-.063 0-.048.074.26.848.548 1.671.864 2.465.018.043.062-.037.051-.074Zm.174-2.472c-.24-.851-.424-1.744-.664-2.589a38.573 38.573 0 0 1-.86-2.657c0-.049-.059.031-.052.074.215.878.474 1.724.775 2.528.128.438.238.888.332 1.35.117.476.254.937.41 1.38.015.056.07-.043.059-.086Zm.378-.075c-.115-.333-.214-.678-.318-1.017-.018-.056-.07.037-.059.08.177.616.399 1.184.55 1.8 0 .043.063-.031.055-.068a4.085 4.085 0 0 0-.228-.795Zm2.119 3.711c-.602-2.015-1.295-3.939-1.808-6.028 0-.05-.059.031-.048.074a77.87 77.87 0 0 0 1.708 5.917c.591 1.954 1.056 4.087 1.776 5.918 0 .043.051 0 .044-.062-.539-1.948-1.111-3.895-1.672-5.819Zm1.494 2.17a11.523 11.523 0 0 0-.531-1.899c-.022-.055-.078.043-.063.093.203.616.351 1.269.52 1.91.023.062.085-.049.074-.104Zm.08-8.464c-.262-.734-.55-1.436-.827-2.151a15.439 15.439 0 0 1-.771-2.213c0-.062-.078.043-.067.098.171.736.4 1.428.683 2.059.307.765.591 1.541.927 2.269.022.043.07-.062.055-.062Zm.361.402c-.023-.056-.082.043-.063.086.269.659.561 1.294.834 1.948.226.616.473 1.211.738 1.781 0 0 .048-.037.037-.068a40.2 40.2 0 0 0-1.546-3.747Zm2.048 3.199a27.314 27.314 0 0 0-.801-2.078c-.022-.061-.085.05-.066.099.247.709.524 1.399.801 2.077.026.062.085-.043.066-.098Zm.421 6.764c-.188-.716-.424-1.387-.623-2.096a21.102 21.102 0 0 0-.565-1.85c-.018-.043-.059 0-.048.068.19.554.352 1.133.484 1.732.166.728.394 1.412.59 2.115a37.415 37.415 0 0 0 1.14 3.945c.019.043.06-.031.048-.068-.369-1.264-.686-2.552-1.026-3.846Zm.927 2.093c0-.049-.066.037-.055.08.249 1.041.554 2.042.911 2.99 0 .043.056 0 .045-.068-.244-1.042-.631-1.979-.901-3.002Zm2.085 8.39a38.898 38.898 0 0 0-.89-2.971c0-.05-.055 0-.044.068.284.992.587 1.978.882 2.964.015.05.063-.018.052-.061Zm1.429 7.631c-.351-1.196-.701-2.392-1.059-3.582-.358-1.189-.775-2.354-1.063-3.593 0-.056-.067.037-.056.086a44.193 44.193 0 0 0 1.008 3.698c.369 1.196.686 2.38 1.107 3.526.011.05.081-.074.063-.135Zm-.204 1.216a19.4 19.4 0 0 0-.738-2.466c-.018-.049-.066.037-.051.08.271.8.517 1.623.738 2.466.011.055.062-.037.051-.08Zm-5.832-12.817a56.652 56.652 0 0 1-.539-2.095c0-.056-.07.037-.059.086.266 1.381.705 2.62.989 3.988 0 .056.071-.037.067-.08a12 12 0 0 0-.458-1.899Zm.811 1.528c0-.055-.07.044-.059.093.042.231.102.453.177.659 0 .037.052 0 .044-.067-.055-.228-.114-.45-.162-.685Zm8.498 12.151c-1.166-3.476-2.196-7.045-3.532-10.349-.026-.062-.085.043-.066.092a119.634 119.634 0 0 1 1.823 5.172c.568 1.763 1.081 3.507 1.694 5.202.026.074.103-.055.081-.117Zm.31-2.071a11.466 11.466 0 0 0-.424-.986c-.026-.056-.089.055-.067.098.156.318.302.649.436.993 0 .062.077-.049.055-.105Zm.597-6.462a48.514 48.514 0 0 0-1.941-4.388s-.059.049-.044.08c.66 1.442 1.291 2.921 1.904 4.432.026.043.103-.062.081-.124Zm3.248 8.532c-.399-.931-.76-1.899-1.133-2.861-.373-.961-.771-1.904-1.129-2.878-.023-.068-.093.049-.074.105.339.992.738 1.954 1.107 2.909.369.955.738 1.942 1.144 2.842.037.074.111-.062.085-.117Zm.606-1.996c-.236-.536-.494-1.042-.738-1.559-.018-.037-.074.061-.055.098.243.518.498 1.03.738 1.56.015.055.078-.056.055-.099Zm-7.688-13.428a52.157 52.157 0 0 1-1.007-3.489 73.82 73.82 0 0 0-.975-4.086c0-.056-.07.036-.059.086.332 1.307.609 2.632.886 3.97a27.924 27.924 0 0 0 1.107 3.606c.011.049.059-.044.048-.087Zm-.986-6.101-.262-.845c0-.055-.078.043-.063.093.081.283.162.567.251.85.026.062.089-.043.074-.098Zm-3.067-8.63c-.35-1.202-.823-2.293-1.225-3.452 0-.043-.067.037-.052.08.164.564.345 1.113.543 1.646.247.58.443 1.233.679 1.806.022.05.066-.037.055-.08Zm3.888 8.106c-.428-1.11-.797-2.293-1.273-3.353-.476-1.061-1.085-1.887-1.576-2.904-.022-.043-.085.068-.063.111.476 1.042 1.056 1.917 1.539 2.941.484 1.023.831 2.243 1.314 3.291.022.037.085-.043.059-.086Zm-1.819-6.04c-.233-.617-.436-1.27-.657-1.905-.019-.043-.067.043-.052.08.114.339.229.678.34 1.023.081.319.186.62.313.894.026.019.074-.092.056-.092Zm-.049-1.912a27.976 27.976 0 0 0-.772-2.095c0-.056-.073.043-.059.092.223.733.47 1.445.738 2.133.041.068.115-.068.093-.13Zm3.001.026a46.127 46.127 0 0 0-2.31-4.999c-.03-.056-.096.08-.067.135.787 1.621 1.539 3.298 2.307 4.932.019.055.07-.031.07-.068Zm1.042.442a10.95 10.95 0 0 0-.808-1.485c-.023-.05-.082.067-.056.123.255.505.55.943.794 1.467.029.062.092-.049.07-.105Zm2.918 12.342c-.343-.856-.738-1.627-1.085-2.465-.019-.049-.07.037-.056.08a23.43 23.43 0 0 0 1.074 2.521c.022.025.085-.092.067-.136Zm-.345.986c-.439-1.054-.841-2.163-1.303-3.193-.461-1.029-1.052-1.849-1.531-2.866-.019-.037-.071.056-.052.086.465 1.017 1 1.936 1.476 2.959.236.53.406 1.159.664 1.658.259.5.466.98.702 1.467.003.044.062-.067.044-.111Zm1.282-2.169c-.144-.413-.369-.74-.52-1.14-.022-.05-.082.049-.063.092.16.401.34.779.539 1.128.015.031.055-.049.044-.08Zm2.558.664c-.24-.654-.606-1.116-.864-1.733-.022-.049-.078.044-.059.087.118.286.252.554.398.801.167.296.318.617.469.937.019.037.07-.055.056-.092Zm4.48 7.694c-.211-.383-.41-.777-.616-1.165-.207-.389-.532-.863-.768-1.363-.414-.881-.86-1.719-1.273-2.601a65.472 65.472 0 0 1-2.267-6.059c-.022-.062-.081.043-.062.092a56.417 56.417 0 0 0 2.214 6.164c.812 1.806 1.845 3.354 2.742 5.024.015-.012.041-.068.03-.092Zm1.025.288c-.336-.696-.739-1.325-1.089-1.991-.03-.055-.103.086-.07.148.349.692.721 1.351 1.114 1.973.019.03.07-.081.045-.13Zm5.47 11.084c-.675-1.486-1.52-2.749-2.236-4.179-.716-1.43-1.621-2.466-2.344-3.878-.026-.043-.085.074-.059.124.668 1.387 1.55 2.465 2.214 3.815.347.709.709 1.381 1.085 2.041.377.659.82 1.51 1.274 2.176.033.043.088-.062.066-.099Zm-3.574-5.405a8.903 8.903 0 0 0-.801-1.572c-.022-.037-.081.074-.055.117.288.493.539 1.029.808 1.541.019.012.059-.086.048-.086Zm-2.737-.66a6.664 6.664 0 0 0-.679-1.676 24.634 24.634 0 0 1-.97-1.899c-.019-.043-.078.068-.059.111.243.586.498 1.141.775 1.683.14.277.291.536.431.814.141.277.285.715.443 1.06.022.049.074-.049.059-.093Zm-3.117-5.116c-.251-.573-.531-1.109-.808-1.645-.277-.537-.646-1.098-.953-1.671-.022-.037-.073.062-.051.105.269.542.576 1.042.856 1.578.281.536.58 1.183.893 1.744.022.044.081-.067.063-.111Zm2.995-7.785a11.967 11.967 0 0 0-1.232-2.084c-.026-.037-.078.068-.052.111.199.339.424.616.627.98s.395.74.591 1.11c.026.037.085-.074.066-.117Zm5.311 8.66c-.35-.715-.719-1.412-1.051-2.145a14.667 14.667 0 0 0-.912-1.788 68.9 68.9 0 0 1-2.059-3.495c-.026-.043-.082.068-.056.117.299.615.618 1.201.956 1.757.325.549.635 1.14.978 1.658.392.63.752 1.314 1.074 2.047.318.671.672 1.313 1.008 1.966.029.043.099-.068.062-.117Zm4.743 9.474c-.783-1.763-1.739-3.291-2.551-5.011 0-.043-.066.037-.048.074a87.905 87.905 0 0 0 2.517 5.079c.03.056.107-.086.082-.142Zm.283-3.848a27.58 27.58 0 0 0-1.439-2.206c-.026-.037-.078.067-.052.111.476.739.964 1.467 1.429 2.231.029.049.092-.08.062-.136Zm3.5 4.741c-.683-1.233-1.31-2.466-1.975-3.698a37.99 37.99 0 0 0-2.258-3.502c-.03-.043-.085.074-.056.111.739 1.122 1.477 2.244 2.137 3.458.661 1.215 1.314 2.651 2.067 3.835.055.03.137-.124.085-.204Zm-8.858-16.187c-.425-.715-.868-1.393-1.292-2.102-.022-.037-.07.056-.048.099.417.727.849 1.424 1.281 2.126.022.044.084-.08.059-.123Zm-.369-2.668a14.23 14.23 0 0 0-.911-1.473c-.022-.031-.063.055-.045.086.318.475.609.987.905 1.492.003.037.051-.068.051-.105Zm-7.058-9.332a17.842 17.842 0 0 0-1.668-2.675c-.037-.043-.107.099-.07.148.62.777 1.055 1.892 1.664 2.681.041.05.118-.092.074-.154Zm-.885-3.711c-.738-1.714-1.728-2.953-2.606-4.414-.026-.043-.081.074-.055.117.406.721.863 1.344 1.28 2.047.417.702.882 1.565 1.311 2.367.025.049.092-.074.07-.117Zm-3.267.666a7.29 7.29 0 0 0-.506-1.178 13.05 13.05 0 0 0-.623-1.196c-.03-.043-.093.087-.063.13.401.743.771 1.532 1.107 2.361.037.067.103-.056.085-.117Zm-.408-2.252c-.2-.48-.42-.938-.657-1.368-.022-.056-.081.043-.059.086.198.489.417.953.657 1.387.022.043.074-.062.059-.105Zm9.979 6.586a18.708 18.708 0 0 0-1.314-2.182c-.026-.043-.081.068-.055.111.45.721.875 1.473 1.328 2.188.012.043.063-.068.041-.117Zm3.82 4.615c-.306-.616-.609-1.233-.941-1.775l-.502-.808c-.188-.314-.31-.721-.491-1.048-.369-.616-.801-1.115-1.174-1.726-.372-.61-.871-1.233-1.291-1.849-.033-.049-.104.086-.07.142.409.666.852 1.276 1.258 1.948.406.672.797 1.128 1.166 1.744.151.298.293.609.425.931.174.325.359.634.553.925.297.608.63 1.166.993 1.664.048.025.107-.099.074-.148Zm.631.407a7.85 7.85 0 0 0-.845-1.43c-.026-.043-.081.074-.055.117.28.468.561.949.849 1.399.022.037.066-.049.051-.086Zm-1.167-3.562c-.86-1.394-1.731-2.762-2.584-4.18a42.918 42.918 0 0 0-2.82-3.982c-.029-.037-.085.08-.059.117.897 1.307 1.846 2.552 2.687 3.958a63.745 63.745 0 0 0 2.724 4.173c.029.031.07-.056.052-.086Zm4.309 14.548a26.256 26.256 0 0 0-1.845-3.083c-.317-.443-.579-.986-.882-1.46-.303-.475-.661-.999-.985-1.511-.023-.037-.067.056-.045.099.602 1.017 1.178 2.12 1.82 3.082.642.962 1.247 1.997 1.889 2.959.023.055.071-.043.048-.086Zm2.959 3.518c-.35-.708-.738-1.356-1.107-2.04-.369-.684-.808-1.233-1.144-1.966-.026-.056-.085.049-.063.092.295.638.62 1.235.971 1.788.428.752.845 1.51 1.288 2.244.022.043.078-.062.055-.118Zm1.225 1.073c-.192-.487-.535-.727-.764-1.14-.022-.037-.074.061-.052.111.113.198.236.377.369.536.133.185.251.407.388.586.026.037.073-.056.059-.093Zm-.507-2.367a8.608 8.608 0 0 0-.642-1.332c-.288-.505-.638-.894-.926-1.387-.022-.043-.074.062-.052.105.251.468.557.863.823 1.319.266.456.48.949.738 1.399.022.043.074-.061.059-.104Zm6.031 7.046c-.476-.807-1.026-1.491-1.514-2.28-.487-.789-.978-1.437-1.454-2.183-.033-.049-.103.093-.07.142a63.4 63.4 0 0 0 2.986 4.426c.026.037.074-.068.052-.105Zm1.315-1.03a13.279 13.279 0 0 0-1.477-2.201c-.022 0-.07.062-.044.099.255.357.524.697.768 1.079.243.382.472.77.738 1.115.015.062.051-.043.015-.092Zm-4.607-6.059c-.229-.415-.475-.8-.738-1.153a7.635 7.635 0 0 0-.868-1.153c-.029 0-.081.08-.051.111.583.617 1.059 1.56 1.601 2.293.03.062.078-.055.056-.098Zm-.121-1.351c-.395-.616-.812-1.232-1.214-1.849-.403-.616-.805-1.294-1.241-1.849-.025-.037-.073.062-.051.099.841 1.232 1.624 2.539 2.443 3.784.03-.012.092-.135.063-.185Zm-4.923-9.153c-.454-.654-.904-1.295-1.332-1.997-.022-.031-.063.055-.044.086.416.716.859 1.39 1.325 2.016.026.037.077-.068.051-.105Zm6.524 8.815a56.66 56.66 0 0 1-1.779-2.848c-.291-.493-.645-.906-.959-1.35-.314-.444-.609-.912-.908-1.375-.639-.98-1.332-1.849-1.967-2.829-.635-.98-1.369-2.071-2.019-3.168-.022-.043-.078.067-.055.111.612 1.072 1.251 2.095 1.889 3.119.639 1.023 1.307 1.904 1.96 2.866.653.962 1.233 1.849 1.864 2.725.631.875 1.214 2.015 1.915 2.878.034.043.093-.074.059-.129Zm.174-.893c-.417-.53-.834-1.085-1.269-1.572-.03-.037-.082.074-.052.105.432.499.838 1.073 1.262 1.597.019.037.078-.087.059-.13Zm6.312 10.8a19.899 19.899 0 0 0-1.144-1.72 19.803 19.803 0 0 0-1.296-1.714c-.026 0-.07.068-.044.099a32.51 32.51 0 0 1 2.436 3.439c.011.037.07-.067.048-.104Zm-.599-4.358a9.1 9.1 0 0 0-.971-1.449c-.181-.246-.343-.53-.524-.777-.181-.246-.369-.388-.531-.616-.026-.043-.081.068-.056.111.159.253.369.419.521.66.151.24.347.517.513.789.306.505.679.906.993 1.405.025.043.073-.062.055-.123Zm.972-.123c-.369-.697-.874-1.233-1.269-1.905 0 0-.052.049-.037.08.388.694.81 1.331 1.262 1.905.026.043.063-.049.044-.08Zm5.952 4.862c-.262-.382-.565-.69-.841-1.048-.277-.357-.587-.887-.886-1.331-.58-.863-1.211-1.627-1.816-2.466a155.21 155.21 0 0 0-1.79-2.428c-.602-.802-1.21-1.523-1.808-2.3-.034-.043-.1.093-.067.142.557.752 1.141 1.461 1.694 2.219.554.758 1.192 1.603 1.772 2.466.579.863 1.247 1.578 1.845 2.398.583.873 1.2 1.682 1.845 2.422.034.031.074-.043.052-.074Zm-13.67-16.507c-.694-.962-1.451-1.8-2.152-2.749-.026-.031-.074.068-.048.098.697.956 1.443 1.813 2.152 2.756.025.031.073-.05.048-.105Zm-6.896-8.575c-.594-.733-1.192-1.461-1.775-2.225-.03-.037-.089.086-.059.129.317.426.635.851.974 1.233.254.365.523.699.805.999.029.018.085-.099.055-.136Zm2.81 1.759a28.442 28.442 0 0 0-2.51-3.514c-.882-1.177-1.816-2.256-2.672-3.489-.033-.043-.099.093-.066.142.815 1.233 1.716 2.238 2.55 3.409.428.616.882 1.159 1.329 1.707.446.549.874 1.233 1.325 1.85.022.024.066-.068.044-.105Zm-.049-1.056a5.99 5.99 0 0 0-.816-1.073c-.033-.037-.088.087-.059.118.133.156.262.316.388.48.138.21.286.4.443.567.011.025.044-.055.044-.092Zm-1.789-4.017c-.476-.617-.992-1.196-1.454-1.85-.461-.653-.815-1.454-1.295-2.071-.938-1.233-1.779-2.706-2.801-3.698-.048-.05-.126.117-.082.166.978 1.023 1.801 2.466 2.695 3.699.461.616.86 1.35 1.306 2.009.503.68 1.035 1.298 1.591 1.849.022.007.063-.074.04-.104Zm4.503 5.909c-.639-1.048-1.403-1.849-2.071-2.854a88.658 88.658 0 0 0-2.074-2.965c-.029-.043-.088.074-.059.117.69.999 1.369 2.01 2.056 3.014.686 1.005 1.395 1.85 2.093 2.799.029.037.077-.068.055-.111Zm1.037-2.792c-.284-.487-.634-.881-.945-1.331-.025-.037-.077.067-.051.111.294.485.614.925.956 1.313.022.024.062-.056.04-.093Zm-3.244-5.349a13.031 13.031 0 0 0-1.923-2.342 20.982 20.982 0 0 1-1.941-2.411c-.033-.049-.107.099-.07.148.607.89 1.249 1.713 1.919 2.466.68.691 1.329 1.463 1.941 2.312.037.018.111-.136.074-.173Zm13.047 14.349c-.436-.512-.856-1.054-1.281-1.584a17.88 17.88 0 0 0-1.428-1.443 82.3 82.3 0 0 1-1.351-1.356c-.446-.456-.904-.832-1.332-1.306-.033-.037-.096.092-.063.129.369.456.812.82 1.211 1.233.479.499.959 1.005 1.443 1.492.483.487.885.869 1.317 1.331.432.462.919 1.159 1.403 1.677.044.049.125-.117.081-.173Zm-1.004-.129a41.797 41.797 0 0 1-.823-.943c-.03-.037-.078.074-.052.099.277.314.546.647.823.961.052.031.089-.08.052-.117Zm11.127 12.283a16.6 16.6 0 0 1-1.476-1.997 12.814 12.814 0 0 0-1.513-1.788c-.026 0-.071.062-.048.093.491.526.964 1.098 1.417 1.714a18.91 18.91 0 0 0 1.565 2.138c.025.044.092-.098.055-.16Zm.887-.77c-.546-.579-1.107-1.146-1.624-1.781-.026-.037-.077.074-.051.105.516.653 1.066 1.233 1.609 1.812.037.018.099-.099.066-.136Zm-.993 3.724c-1.067-1.381-2.004-3.02-3.082-4.37-.52-.654-1.029-1.319-1.557-1.954-.594-.709-1.24-1.307-1.846-1.985-.029-.037-.084.08-.055.111.568.653 1.155 1.27 1.727 1.917.572.647 1.108 1.399 1.646 2.09 1.074 1.35 2.019 2.977 3.119 4.315.026.006.074-.093.048-.124Zm1.334.782c-.266-.302-.531-.616-.79-.906-.033-.043-.096.086-.062.129.255.324.521.622.797.894.029.025.085-.08.055-.117Zm-8.953-6.243c-.498-.727-1.081-1.276-1.612-1.923-.532-.647-1.108-1.3-1.658-1.978-.025-.037-.077.073-.051.104.539.697 1.089 1.356 1.631 2.034.543.679 1.107 1.233 1.624 1.893.033.043.096-.086.066-.13Zm.631 1.536c-.214-.29-.45-.512-.66-.808-.037-.049-.107.099-.071.148.21.292.433.554.668.783.034.037.089-.08.063-.123Z\" fill=\"#766C5C\" style=\"mix-blend-mode:screen\" opacity=\".5\"/><g opacity=\".3\"><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M71.524 140.905a14.86 14.86 0 0 0-1.428 2.361 13.938 13.938 0 0 0-1.085 2.466 3.62 3.62 0 0 0 .841-.617c.297-.168.586-.374.864-.616a13.939 13.939 0 0 0 1.476-2.195c.46-.69.877-1.454 1.248-2.28.17-.426.302-.894.457-1.338a8.48 8.48 0 0 0 .35-1.233l-.132.056c-.816 1.282-1.742 2.25-2.59 3.396Z\" fill=\"url(#x)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M76.983 153.086c.116-.063.23-.137.343-.221.42-.309.83-.617 1.233-1.024a25.192 25.192 0 0 0 2.166-2.108c.782-.924 1.214-2.398 1.624-3.803.267-.888.501-1.802.701-2.737.037-.179.428-2.034.31-2.145a11.98 11.98 0 0 1-.86 1.522c-1.317 1.973-2.816 3.495-3.868 5.93-.524 1.233-.97 2.509-1.476 3.748a6.424 6.424 0 0 0-.221.617c-.023.08-.104.302.048.221Z\" fill=\"url(#y)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M113.472 138.077a13.298 13.298 0 0 0-.181 2.213c.369-.302.528-1.233.738-1.763.374-.913.691-1.888.945-2.909.221-.968.351-2.004.579-2.953h-.845c-.372.969-.68 2.002-.919 3.082a30.016 30.016 0 0 0-.317 2.33Z\" fill=\"url(#z)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M124.956 164.879a23.073 23.073 0 0 0-.373-3.754c-.041-.204-.111-.672-.244-.771-.239-.172-1.107 4.543-1.158 4.932a50.307 50.307 0 0 0-.192 3.371 24.068 24.068 0 0 1-.17 1.646h2.137c-.048-1.8.033-3.624 0-5.424Z\" fill=\"url(#A)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M135.337 139.821c.163.792.359 1.565.586 2.312.067.178.266.745.399.394.075-.215.125-.451.148-.696.148-1.319.187-2.665.118-4.001a37.704 37.704 0 0 0-.421-3.082 22.952 22.952 0 0 1-.129-2.071h-1.576c.258 2.404.284 4.857.875 7.144Z\" fill=\"url(#B)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M151.475 136.622c.712 1.282 1.683 2.016 2.462 3.15-.218-.863-.554-1.658-.783-2.515a14.197 14.197 0 0 0-.889-2.466c-.332-.703-.69-1.399-.993-2.145h-1.052c.253 1.453.68 2.806 1.255 3.976Z\" fill=\"url(#C)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"m61.914 163.553-.713.906c-.657.857-1.284 1.775-1.937 2.626-.846 1.103-1.724 2.139-2.584 3.224h.99c.616-.974 1.206-2.004 1.845-2.959.808-1.245 1.587-2.552 2.399-3.797Z\" fill=\"url(#D)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M49.04 158.628c.823-.919 1.657-1.85 2.498-2.706 1.683-1.751 3.385-3.422 5.012-5.32 1.063-1.233 2.1-2.521 3.13-3.828l-15.896 17.032c.963-.735 1.9-1.558 2.809-2.466.838-.82 1.631-1.8 2.447-2.712Z\" fill=\"url(#E)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M73.455 146.51c1.919-2.558 3.665-5.474 5.554-8.1 1.008-1.405 1.99-2.86 3.008-4.247.37-.499.738-.992 1.107-1.498h-.856c-2.801 4.876-6.267 8.593-8.813 13.845Z\" fill=\"url(#F)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M90.105 138.694c1.148-1.979 2.307-3.927 3.362-6.029h-.65c-2.446 4.555-5.045 8.926-7.012 14.104 1.506-2.583 2.801-5.48 4.3-8.075Z\" fill=\"url(#G)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M91.084 148.853c1.476-3.446 2.99-6.818 4.503-10.202-.62 1.116-1.277 2.182-1.846 3.359a60.757 60.757 0 0 0-2.657 6.843Z\" fill=\"url(#H)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M98.867 145.154c-.458 1.356-.93 2.706-1.333 4.105 1.181-2.848 1.93-6.164 3.196-8.907a43.53 43.53 0 0 0 1.982-4.981c.292-.912.624-1.794.927-2.706h-.572c-.772 2.54-1.765 4.882-2.584 7.397-.58 1.658-1.044 3.415-1.617 5.092Z\" fill=\"url(#I)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M99.416 165.391c.672-2.626 1.421-5.191 2.122-7.792-.897 2.108-1.325 4.629-2.14 6.824-.477 1.264-.912 2.57-1.377 3.803-.251.691-.51 1.375-.738 2.071h.952c.077-.222.151-.443.218-.672.39-1.35.605-2.847.963-4.234Z\" fill=\"url(#J)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M115.742 158.159c.306-2.743.528-5.547.904-8.235.325-2.361.82-4.691.912-7.113-.786 4.826-1.661 9.622-2.399 14.479-.628 4.315-.926 8.698-1.476 13.019h.62c.413-4.068.985-8.112 1.439-12.15Z\" fill=\"url(#K)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M129.361 141.553c0-.826-.034-1.646-.052-2.466-.052-2.145-.185-4.278-.269-6.417h-.311c.144 2.972.392 5.924.632 8.883Z\" fill=\"url(#L)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M137.597 161.629c-.439-3.871-.841-7.755-1.303-11.62.107 3.594.345 7.174.713 10.72.288 3.205.575 6.411.97 9.579h.801c-.369-2.897-.845-5.782-1.181-8.679Z\" fill=\"url(#M)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M140.082 138.323c.27 1.171.524 2.348.779 3.532.181.904.419 1.774.708 2.595-.49-2.54-.944-5.11-1.376-7.662-.233-1.338-.458-2.694-.709-4.025 0 0 0-.05-.018-.08h-.687c.436 1.874.871 3.754 1.303 5.64Z\" fill=\"url(#N)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M159.22 133.139c.392.697.809 1.356 1.2 2.053.391.697.683 1.307 1.03 1.954.738 1.406 1.627 2.626 2.428 3.951.565.925 1.107 1.85 1.654 2.836-.978-2.213-2.064-4.352-3.112-6.528-.324-.672-.664-1.331-.996-1.997-.332-.666-.583-1.276-.916-1.849-.195-.327-.405-.617-.616-.937h-.919c.081.203.163.363.247.517Z\" fill=\"url(#O)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M192.455 165.791c-2.214-3.279-4.296-6.922-6.713-9.826a35.48 35.48 0 0 0 2.347 3.958 82.032 82.032 0 0 1 2.584 4.191c.431.797.89 1.553 1.372 2.263.473.665.971 1.282 1.44 1.954.469.672.934 1.356 1.417 1.997h.738c-.443-.66-.904-1.27-1.362-1.905a140.686 140.686 0 0 1-1.823-2.632Z\" fill=\"url(#P)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M203.681 166.943a29.827 29.827 0 0 0-3.451-3.883c-.428-.395-.838-.82-1.259-1.233-.352-.434-.758-.729-1.188-.863l1.934 3.446a29.673 29.673 0 0 0 1.919 3.18c.686.9 1.447 1.597 2.163 2.423l.262.302h2.34a71.543 71.543 0 0 1-2.72-3.372Z\" fill=\"url(#Q)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M157.52 156.181c.539 1.516 1.17 2.922 1.724 4.426.424 1.152.716 2.465 1.229 3.538-.155-1.535-.698-2.941-1.178-4.235a178.722 178.722 0 0 1-1.642-4.642c-.801-2.33-1.772-4.493-2.584-6.78.318.998.657 1.972.967 2.971.48 1.566.934 3.205 1.484 4.722Z\" fill=\"url(#R)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M188.235 147.268c-.169-.265-.31-.555-.461-.839a91.367 91.367 0 0 0-1.107-1.923c-.738-1.233-1.403-2.638-2.27-3.698-.823-.926-1.708-1.691-2.635-2.281a7.34 7.34 0 0 1-.908-.74c.439.715.875 1.436 1.299 2.176.635 1.116 1.218 2.342 1.893 3.39.732 1.072 1.54 1.987 2.407 2.725.369.345.797.616 1.159 1.048.288.32.631.863 1 .826a3.23 3.23 0 0 0-.377-.684Z\" fill=\"url(#S)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M173.18 143.41a8.01 8.01 0 0 1-1.148-1.449c.313.752.627 1.504.915 2.281a20.964 20.964 0 0 0 1.701 3.6 58.534 58.534 0 0 0 4.153 6.028c-1.049-2.632-2.064-5.283-3.389-7.557-.668-1.12-1.418-2.096-2.232-2.903Z\" fill=\"url(#T)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M144.099 153.986c.037.246.062.505.103.758.085.542.188 1.079.277 1.615.192 1.177.387 2.349.598 3.514.217 1.189.544 2.315.97 3.334.31.752.602 1.529.934 2.257-.446-2.053-.28-4.315-.738-6.368-.458-2.053-1.31-3.551-2.144-5.11Z\" fill=\"url(#U)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M103.116 163.967c.095-.228.188-.462.28-.703.154-.39.329-.755.524-1.091.52-.809.931-1.792 1.207-2.885.244-1.04.435-2.112.572-3.205.07-.567.111-1.147.181-1.714.075-.438.123-.889.144-1.344a8.21 8.21 0 0 0-.565.672c-.317.617-.642 1.233-.967 1.887-.518.85-.91 1.89-1.144 3.038a51.897 51.897 0 0 0-.465 3.52c-.048.512-.07 1.03-.111 1.547a3.39 3.39 0 0 0-.044.907c.018.117.388-.629.388-.629Z\" fill=\"url(#V)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M86.673 164.583a46.95 46.95 0 0 0 1.148-1.886c.644-1.03 1.186-2.224 1.605-3.538.137-.475.248-.974.37-1.474.077-.326.774-3.396.62-4.006a.036.036 0 0 1-.037-.007.083.083 0 0 1-.026-.043c-.137-.407-.875.746-1.02.931-.637.762-1.193 1.7-1.641 2.774a57.402 57.402 0 0 0-1.4 4.05 18.617 18.617 0 0 0-.597 2.299c-.104.519-.17 1.057-.196 1.603-.018 1.122 1.004-.438 1.174-.703Z\" fill=\"url(#W)\"/><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M51.98 166.542a25.861 25.861 0 0 0 2.361-3.291 40.279 40.279 0 0 0 1.986-3.952 4.86 4.86 0 0 0-1.351 1.061c-.435.443-.875.85-1.325 1.232-.99.804-1.923 1.788-2.783 2.935a31.102 31.102 0 0 0-2.214 3.852 17.356 17.356 0 0 1-1.03 1.905h1.284l.554-.623a94.21 94.21 0 0 0 2.517-3.119Z\" fill=\"url(#X)\"/></g><path style=\"mix-blend-mode:multiply\" opacity=\".3\" d=\"M202.782 158.295c1.646 1.849 3.322 3.606 4.953 5.548a269.65 269.65 0 0 1 4.846 5.923l.369.463h1.923l-16.52-17.679a59.446 59.446 0 0 0 4.429 5.745Z\" fill=\"url(#Y)\"/><path d=\"M178.378 140.791h-23.326a.5.5 0 0 0-.467.676l7.967 21.139c.113.3.4.498.72.498h31.326a.5.5 0 0 0 .4-.801l-16.006-21.206a.77.77 0 0 0-.614-.306Z\" fill=\"#FCF7F7\"/><path stroke=\"#9A9A9A\" stroke-opacity=\".56\" stroke-width=\".895\" stroke-linecap=\"round\" d=\"M189.287 160.618h-9.373\"/><path stroke=\"#9A9A9A\" stroke-opacity=\".56\" stroke-width=\".733\" stroke-linecap=\"round\" d=\"M186.702 156.137h-16.869m15.136-2.2h-12.468m9.001-4.401H166.1m17.135 2.2H169.3\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M50.583 26 11.8 28.395a.355.355 0 0 0-.333.354V59.91l39.116-11.508V26.001Zm0 29.209L11.467 69.336v26.479c0 .27.292.442.529.31l38.587-21.599V55.209Zm4.26 16.933V53.671l28.534-10.306v12.597a.355.355 0 0 1-.181.31l-28.354 15.87Zm0-24.992V25.738L83 24.001a.355.355 0 0 1 .376.354v14.4L54.843 47.15Z\" fill=\"#FFF8D3\"/><path d=\"M113.709 111c.4 0 1.5-2 2-3-.4.8 1.167 2.333 2 3-.771 0-1.605 2.481-1.962 3.854a1.081 1.081 0 0 1-.038.146l.038-.146c.275-1.511-2.522-3.854-2.038-3.854Zm19 0c.4 0 1.5-2 2-3-.4.8 1.167 2.333 2 3-.771 0-1.605 2.481-1.962 3.854a1.081 1.081 0 0 1-.038.146l.038-.146c.275-1.511-2.522-3.854-2.038-3.854Z\" fill=\"#925E47\"/><path d=\"M72.985 146.223c-.814-2.847 2.015-4.823 4.54-5.866 1.27-.525 2.793-.621 3.879.223 2.011 1.562.603 4.04.069 5.643-.62 1.858-7.183 4.571-8.488 0Z\" fill=\"#ABABAB\"/><mask id=\"Z\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"72\" y=\"139\" width=\"11\" height=\"10\"><path d=\"M72.985 146.223c-.814-2.847 2.015-4.823 4.54-5.866 1.27-.525 2.793-.621 3.879.223 2.011 1.562.603 4.04.069 5.643-.62 1.858-7.183 4.571-8.488 0Z\" fill=\"#ABABAB\"/></mask><g mask=\"url(#Z)\"><path d=\"M73.638 147.529c9.14 2.612 8.488-6.529 6.53-8.487.652.435 2.088 1.305 2.61 1.305.654 0 0 6.529-1.305 7.835-1.045 1.045-5.223 1.306-7.182 1.306l-.653-1.959Z\" fill=\"#7B7B7B\"/></g><path d=\"M75.597 147.529c0-1.088 0-2.611 1.306-3.264\" stroke=\"#676767\" stroke-width=\".392\" stroke-linecap=\"round\"/><path d=\"M75.952 148.511c-2 3.167-4.884 9.452-.5 10 4 .5 6-2.5 12.5-1.5 9.933 1.528 8-3.5 11-6 2.4-2 4-1.5 4.5-1\" stroke=\"#000\" stroke-width=\".3\" stroke-linecap=\"round\"/><path d=\"M146.653 133h-44a1 1 0 0 0-1 1v27a1 1 0 0 0 1 1h44a1 1 0 0 0 1-1v-27a1 1 0 0 0-1-1Z\" fill=\"#2F2F2F\" stroke=\"#2F2F2F\"/><path d=\"M146.653 131h-44a1 1 0 0 0-1 1v27a1 1 0 0 0 1 1h44a1 1 0 0 0 1-1v-27a1 1 0 0 0-1-1Z\" fill=\"#ABABAB\" stroke=\"#ABABAB\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M124.393 141.704c-.531 0-1.691.653-2.423 3.149-.15.513-.385 1-.642 1.468-.455.828-.871 1.982-.871 2.818 0 1.313 0 4.374 4.811 3.937 2.727-.248 3.419-2.122 3.384-3.815-.015-.689-.209-1.343-.469-1.981a1.887 1.887 0 0 1-1.468-3.471 3.09 3.09 0 0 1-.135-.793c0-1.049-1.458-1.312-2.187-1.312Z\" fill=\"#C4C4C4\"/><path d=\"M124.229 140.761c0-.629-.378-2.076-1.887-2.831\" stroke=\"#C4C4C4\" stroke-width=\".6\" stroke-linecap=\"round\"/><g opacity=\".3\" filter=\"url(#aa)\"><path d=\"M81.153 26.5 11.653 38l-2.5 132.5h207l-135-144Z\" fill=\"url(#ab)\"/></g><defs><linearGradient id=\"a\" x1=\"99.461\" y1=\"84.469\" x2=\"150.66\" y2=\"160.048\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#996148\"/><stop offset=\"1\" stop-color=\"#996148\" stop-opacity=\"0\"/></linearGradient><linearGradient id=\"b\" x1=\"1519.54\" y1=\"26.884\" x2=\"1519.54\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#9A6E42\"/><stop offset=\".34\" stop-color=\"#94673C\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"c\" x1=\"1741.85\" y1=\"26.884\" x2=\"1741.85\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#9A6E42\"/><stop offset=\".34\" stop-color=\"#94673C\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"d\" x1=\"853.747\" y1=\"26.884\" x2=\"853.747\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#9A6E42\"/><stop offset=\".34\" stop-color=\"#94673C\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"e\" x1=\"2405.15\" y1=\"26.884\" x2=\"2405.15\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#966D44\"/><stop offset=\".34\" stop-color=\"#9C7046\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"f\" x1=\"791.138\" y1=\"26.884\" x2=\"791.138\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#966C42\"/><stop offset=\".34\" stop-color=\"#986838\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"g\" x1=\"1577.9\" y1=\"26.884\" x2=\"1577.9\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#966D44\"/><stop offset=\".34\" stop-color=\"#9C7046\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"h\" x1=\"2629.95\" y1=\"26.884\" x2=\"2629.95\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#9A6E42\"/><stop offset=\".34\" stop-color=\"#94673C\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"i\" x1=\"2208.92\" y1=\"26.884\" x2=\"2208.92\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#966C42\"/><stop offset=\".34\" stop-color=\"#986838\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"j\" x1=\"2956.66\" y1=\"26.884\" x2=\"2956.66\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#966D44\"/><stop offset=\".34\" stop-color=\"#9C7046\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"k\" x1=\"1563.48\" y1=\"26.884\" x2=\"1563.48\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#966C42\"/><stop offset=\".34\" stop-color=\"#986838\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"l\" x1=\"1825.43\" y1=\"26.884\" x2=\"1825.43\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#966C42\"/><stop offset=\".34\" stop-color=\"#986838\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"m\" x1=\"892.403\" y1=\"26.884\" x2=\"892.403\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#966D44\"/><stop offset=\".34\" stop-color=\"#9C7046\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"n\" x1=\"2775.14\" y1=\"26.884\" x2=\"2775.14\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#966D44\"/><stop offset=\".34\" stop-color=\"#9C7046\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"o\" x1=\"1490\" y1=\"26.884\" x2=\"1490\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#966C42\"/><stop offset=\".34\" stop-color=\"#986838\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"p\" x1=\"3353.15\" y1=\"26.884\" x2=\"3353.15\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#966D44\"/><stop offset=\".34\" stop-color=\"#9C7046\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"q\" x1=\"3248.17\" y1=\"26.884\" x2=\"3248.17\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#9A6E42\"/><stop offset=\".34\" stop-color=\"#94673C\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"r\" x1=\"1809.58\" y1=\"26.884\" x2=\"1809.58\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#9A6E42\"/><stop offset=\".34\" stop-color=\"#94673C\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"s\" x1=\"1154.56\" y1=\"26.884\" x2=\"1154.56\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#966C42\"/><stop offset=\".34\" stop-color=\"#986838\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"t\" x1=\"651.411\" y1=\"26.884\" x2=\"651.411\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#966C42\"/><stop offset=\".34\" stop-color=\"#986838\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"u\" x1=\"818.932\" y1=\"26.884\" x2=\"818.932\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#966C42\"/><stop offset=\".34\" stop-color=\"#986838\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"v\" x1=\"1339.04\" y1=\"26.884\" x2=\"1339.04\" y2=\"2472.28\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#9A6E42\"/><stop offset=\".34\" stop-color=\"#94673C\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"w\" x1=\"126.155\" y1=\"170.553\" x2=\"126.155\" y2=\"186.237\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".13\" stop-color=\"#99724B\"/><stop offset=\".37\" stop-color=\"#76573A\"/><stop offset=\".7\" stop-color=\"#3F2C1D\"/><stop offset=\"1\" stop-color=\"#050000\"/></linearGradient><linearGradient id=\"x\" x1=\"551.038\" y1=\"114.191\" x2=\"551.038\" y2=\"651.962\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"y\" x1=\"823.814\" y1=\"107.171\" x2=\"823.814\" y2=\"890.317\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"z\" x1=\"583.852\" y1=\"111.239\" x2=\"583.852\" y2=\"606.565\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"A\" x1=\"624.059\" y1=\"132.28\" x2=\"624.059\" y2=\"778.967\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"B\" x1=\"707.127\" y1=\"104.681\" x2=\"707.127\" y2=\"751.874\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"C\" x1=\"1302.39\" y1=\"112.623\" x2=\"1302.39\" y2=\"575.514\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"D\" x1=\"363.622\" y1=\"144.501\" x2=\"363.622\" y2=\"583.435\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"E\" x1=\"650.057\" y1=\"98.915\" x2=\"650.057\" y2=\"1205.29\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"F\" x1=\"1137.8\" y1=\"93.761\" x2=\"1137.8\" y2=\"993.116\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"G\" x1=\"1164.99\" y1=\"93.034\" x2=\"1164.99\" y2=\"1009.21\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"H\" x1=\"770.405\" y1=\"109.984\" x2=\"770.405\" y2=\"772.79\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"I\" x1=\"1138.47\" y1=\"86.036\" x2=\"1138.47\" y2=\"1163.98\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"J\" x1=\"809.213\" y1=\"121.79\" x2=\"809.213\" y2=\"946.793\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"K\" x1=\"932.449\" y1=\"65.54\" x2=\"932.449\" y2=\"1851.84\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"L\" x1=\"285.012\" y1=\"107.71\" x2=\"285.012\" y2=\"684.723\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"M\" x1=\"808.453\" y1=\"92.97\" x2=\"808.453\" y2=\"1411.57\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"N\" x1=\"913.895\" y1=\"99.616\" x2=\"913.895\" y2=\"864.028\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"O\" x1=\"2373.1\" y1=\"100.837\" x2=\"2373.1\" y2=\"835.617\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"P\" x1=\"4290.17\" y1=\"115.607\" x2=\"4290.17\" y2=\"1048.6\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"Q\" x1=\"4037.47\" y1=\"134.687\" x2=\"4037.47\" y2=\"742.132\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"R\" x1=\"1913.55\" y1=\"104.492\" x2=\"1913.55\" y2=\"1121.57\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"S\" x1=\"3272.3\" y1=\"109.117\" x2=\"3272.3\" y2=\"769.637\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"T\" x1=\"2698.55\" y1=\"108.496\" x2=\"2698.55\" y2=\"882.118\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"U\" x1=\"986.67\" y1=\"121.619\" x2=\"986.67\" y2=\"867.325\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"V\" x1=\"700.637\" y1=\"120.478\" x2=\"700.637\" y2=\"872.887\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"W\" x1=\"758.644\" y1=\"119.418\" x2=\"758.644\" y2=\"908.291\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"X\" x1=\"385.552\" y1=\"128.433\" x2=\"385.552\" y2=\"841.99\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"Y\" x1=\"7770.33\" y1=\"102.872\" x2=\"7770.33\" y2=\"1251.29\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#A67C52\"/><stop offset=\".34\" stop-color=\"#996F46\"/><stop offset=\".98\" stop-color=\"#774D25\"/><stop offset=\"1\" stop-color=\"#754C24\"/></linearGradient><linearGradient id=\"ab\" x1=\"75.653\" y1=\"33.5\" x2=\"8.653\" y2=\"69\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#FFD597\"/><stop offset=\"1\" stop-color=\"#FDDE70\" stop-opacity=\"0\"/></linearGradient><filter id=\"aa\" x=\"4.485\" y=\"21.832\" width=\"216.336\" height=\"153.336\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\"2.334\" result=\"effect1_foregroundBlur\"/></filter></defs></svg>");
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(295));
 
-/***/ }),
-/* 980 */
-/***/ (function(module, exports) {
+var _dsl = __webpack_require__(495);
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <path d=\"M200.087 111.868c0 55.657-39.388 99.5-86.5 99.5s-86.5-43.843-86.5-99.5c0-55.658 39.388-99.5 86.5-99.5s86.5 43.842 86.5 99.5Z\" stroke=\"#51350B\" stroke-opacity=\".65\" stroke-width=\"11\"/>");
+/**
+ * Checks the value of the extension_installed attribute
+ *
+ * @param {import("../CozyClient").default} client - The CozyClient instance
+ * @returns {Promise<boolean>} - Returns the value of the extension_installed attribute
+ */
+var hasExtensionInstalledAttribute = /*#__PURE__*/function () {
+  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client) {
+    var _yield$client$fetchQu, extension_installed;
 
-/***/ }),
-/* 981 */
-/***/ (function(module, exports) {
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            _context.prev = 0;
+            _context.next = 3;
+            return client.fetchQueryAndGetFromState({
+              definition: (0, _dsl.Q)('io.cozy.settings').getById('io.cozy.settings.bitwarden'),
+              options: {
+                as: 'io.cozy.settings/io.cozy.settings.bitwarden',
+                singleDocData: true
+              }
+            });
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M72.109 18.619C72.109 10.545 78.262 4 85.85 4h77.874c7.59 0 13.742 6.545 13.742 14.619V72.35H72.109V18.618ZM38.394 70.244H34.18V209.72c0 2.688 2.123 4.866 4.741 4.866h28.447c2.618 0 4.74-2.178 4.74-4.866L38.395 70.244Z\" fill=\"#AFF1FF\"/><path d=\"m72.109 74.459-33.715-4.215V209.72c0 2.688 2.157 4.866 4.817 4.866h24.082c2.66 0 4.816-2.178 4.816-4.866V74.459Z\" fill=\"#1B798C\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M72.109 74.458h104.497V204.05c0 5.819-4.75 10.536-10.609 10.536h-83.28c-5.858 0-10.608-4.717-10.608-10.536V74.459Zm6.365 6.322v123.269c0 2.328 1.9 4.215 4.244 4.215h83.144c2.426 0 4.243-1.887 4.243-4.215V80.779h-91.63Z\" fill=\"#AFF1FF\"/><path d=\"M78.43 74.458h91.661V204.05c0 2.328-1.844 4.215-4.119 4.215H82.549c-2.275 0-4.12-1.887-4.12-4.215V74.459Z\" fill=\"#005E71\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M80.537 14.404a4.214 4.214 0 0 1 7.92-2.01 3.89 3.89 0 0 0-4.759 3.793v56.031a4.216 4.216 0 0 1-3.16-4.081V14.404Z\" fill=\"#fff\"/><rect x=\"161.625\" y=\"38.072\" width=\"4.854\" height=\"24.27\" rx=\"2\" fill=\"#000\"/><path d=\"M170.102 201.798a2.98 2.98 0 0 0-.17-.185c-1.625-1.625-13.543.044-22.493 1.297-4.295.601-7.907 1.107-9.369 1.107-2.335 0-5.959-.645-9.455-1.267-3.253-.578-6.395-1.137-8.279-1.137-1.795 0-4.225.507-6.851 1.056-3.091.646-6.455 1.348-9.38 1.348h-25.55a5.82 5.82 0 0 0-.113.347 4.215 4.215 0 0 0 4.203 3.899h83.253a4.214 4.214 0 0 0 4.214-4.214l-.01-2.251Z\" fill=\"#E9FFFF\"/><path d=\"M88.129 205.868c-.702.329-2.538-.186-2.63-1.324-.132-1.634 2.624-1.996 3.94-1.019.495.368.703.799.802 1.019.192.43-1.411.995-2.112 1.324Z\" fill=\"#fff\"/><path d=\"M88.127 205.869c-.702.325-2.54-.183-2.631-1.308.672.403 2.562.967 4.745 0 .192.425-1.412.983-2.114 1.308Z\" fill=\"#CCE5E7\"/><path d=\"M91.313 206.494c-.614.288-2.223-.162-2.303-1.159-.116-1.431 2.298-1.748 3.45-.893.434.322.617.7.703.893.168.376-1.236.871-1.85 1.159Z\" fill=\"#fff\"/><path d=\"M91.312 206.496c-.615.285-2.225-.161-2.305-1.146.589.353 2.244.847 4.156 0 .168.372-1.237.861-1.851 1.146Z\" fill=\"#CCE5E7\"/><path d=\"M83.313 206.652c.471.221 1.706-.124 1.768-.888.088-1.097-1.763-1.339-2.647-.685a1.66 1.66 0 0 0-.54.685c-.13.288.948.667 1.42.888Z\" fill=\"#fff\"/><path d=\"M83.314 206.651c.472.226 1.707-.127 1.769-.908-.452.279-1.722.671-3.19 0-.129.295.95.682 1.421.908Z\" fill=\"#CCE5E7\"/><path d=\"M159.273 202.968c.471.221 1.706-.124 1.768-.888.088-1.097-1.763-1.339-2.647-.684a1.655 1.655 0 0 0-.54.684c-.129.289.948.668 1.419.888Z\" fill=\"#fff\"/><path d=\"M159.274 202.968c.472.225 1.707-.128 1.769-.909-.452.28-1.722.671-3.189 0-.13.295.949.683 1.42.909Z\" fill=\"#CCE5E7\"/><path d=\"m144.019 197.445.742 3.659a.29.29 0 0 1-.066.238.286.286 0 0 1-.228.094c-.674-.049-2.162.107-3.659 2.021a.606.606 0 0 0-.035.693c.443.72 1.53 2.279 2.744 2.495 1.347.244 5.654-3.002 6.928-3.991a.443.443 0 0 0 .077-.612 19.195 19.195 0 0 1-2.881-5.392.285.285 0 0 0-.332-.186l-3.072.624a.268.268 0 0 0-.107.046.27.27 0 0 0-.08.085.284.284 0 0 0-.031.226Z\" fill=\"#685530\" stroke=\"#685530\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M151.029 197.924v3.737a.286.286 0 0 1-.11.224.29.29 0 0 1-.245.049c-.65-.182-2.14-.333-3.991 1.252a.611.611 0 0 0-.166.665c.291.795 1.046 2.538 2.192 2.993 1.27.509 6.141-1.814 7.579-2.526a.44.44 0 0 0 .243-.422.438.438 0 0 0-.046-.165 19.147 19.147 0 0 1-1.758-5.84.284.284 0 0 0-.279-.245h-3.137a.284.284 0 0 0-.282.278Z\" fill=\"#6D5B31\" stroke=\"#6D5B31\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M141.051 152.742s11.539.998 13.753 0c0 0 .675 12.704 1.194 14.834.518 2.13 2.846 28.237 1.35 31.729 0 0-2.994 1.951-7.901-.938 0 0-2.243-32.82-.913-33.984 0 0-.705 9.181-1.716 11.463a2.294 2.294 0 0 0-.146 1.496c.972 3.928 4.476 18.188 4.19 18.474-.332.333-3.159 3.825-8.98 2.827 0 0-4.323-23.115-4.157-24.113.166-.997 4.989-19.293 3.326-21.788Z\" fill=\"#1F3325\" stroke=\"#1F3325\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><mask id=\"a\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"137\" y=\"152\" width=\"22\" height=\"56\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M141.051 152.742s11.539.998 13.753 0c0 0 .675 12.704 1.194 14.834.518 2.13 2.846 28.237 1.35 31.729 0 0-.795.518-2.236.625.322 1.31.782 2.584 1.373 3.801a.438.438 0 0 1-.06.483.43.43 0 0 1-.136.104c-1.439.712-6.31 3.035-7.58 2.526-.7-.278-1.255-1.037-1.646-1.767-1.422.92-2.864 1.692-3.546 1.568-1.214-.216-2.302-1.775-2.744-2.495a.606.606 0 0 1 .035-.693c1.497-1.914 2.985-2.07 3.658-2.021a.267.267 0 0 0 .125-.021.27.27 0 0 0 .103-.073.293.293 0 0 0 .061-.112.298.298 0 0 0 .006-.126l-.464-2.289a11.77 11.77 0 0 1-2.415-.172s-4.323-23.115-4.157-24.113c.025-.153.16-.713.365-1.56 1.128-4.678 4.369-18.116 2.961-20.228Zm9.341 49.128c.107.019.201.041.282.064a.29.29 0 0 0 .245-.049.279.279 0 0 0 .11-.224v-2.493a13.39 13.39 0 0 1-1.582-.801l-.081-1.216c-.353.249-.77.505-1.251.738a19.21 19.21 0 0 0 2.277 3.981Zm-2.277-33.129c-.03 4.256.253 10.921.566 16.852-.805-3.369-1.615-6.658-2.009-8.251a2.294 2.294 0 0 1 .146-1.496c.54-1.218.992-4.401 1.297-7.105Z\" fill=\"#6D5B31\"/><path d=\"m154.804 152.742.499-.026a.501.501 0 0 0-.705-.43l.206.456Zm-13.753 0 .043-.498a.5.5 0 0 0-.459.776l.416-.278Zm14.947 14.834-.486.118.486-.118Zm1.35 31.729.273.419a.497.497 0 0 0 .186-.222l-.459-.197Zm-2.236.625-.037-.499a.502.502 0 0 0-.449.618l.486-.119Zm1.373 3.801-.45.219.004.008.446-.227Zm.046.165.499-.037-.499.037Zm-.106.318-.377-.329.377.329Zm-.136.104-.22-.449-.002.001.222.448Zm-7.58 2.526.186-.464h-.001l-.185.464Zm-1.646-1.767.44-.237a.498.498 0 0 0-.712-.183l.272.42Zm-3.546 1.568.089-.492h-.001l-.088.492Zm-2.744-2.495.426-.261-.002-.004-.424.265Zm.035-.693-.394-.308-.001.001.395.307Zm3.658-2.021-.036.499.008.001.028-.5Zm.125-.021.193.462-.193-.462Zm.103-.073.375.331-.375-.331Zm.061-.112.481.135-.481-.135Zm.006-.126.492-.089-.002-.011-.49.1Zm-.464-2.289.49-.099a.502.502 0 0 0-.508-.401l.018.5Zm-2.415-.172-.491.092a.499.499 0 0 0 .407.401l.084-.493Zm-4.157-24.113-.493-.082.493.082Zm.365-1.56.486.117.001-.007-.487-.11Zm0 0-.486-.118-.002.007.488.111Zm12.584 28.964-.134.481.004.001.13-.482Zm-.282-.064-.401.299c.077.103.19.172.316.194l.085-.493Zm.527.015-.305-.396.305.396Zm.081-.099-.449-.22.449.22Zm.029-.125h-.5v.002l.5-.002Zm0-2.493h.5a.501.501 0 0 0-.306-.461l-.194.461Zm-1.582-.801-.499.034a.502.502 0 0 0 .245.397l.254-.431Zm-.081-1.216.499-.033a.5.5 0 0 0-.787-.376l.288.409Zm-1.251.738-.218-.449a.5.5 0 0 0-.243.644l.461-.195Zm.566-12.296-.486.116a.5.5 0 0 0 .986-.142l-.5.026Zm-.566-16.852.5.004a.5.5 0 0 0-.997-.06l.497.056Zm-1.443 8.601-.487.117.001.004.486-.121Zm.146-1.496.454.208.003-.006-.457-.202Zm7.78-23.56c-.206.093-.568.18-1.085.247a19.86 19.86 0 0 1-1.809.13c-1.375.047-3.011.016-4.587-.046a144.075 144.075 0 0 1-5.527-.332l-.368-.03-.096-.008-.024-.002-.006-.001h-.002l-.043.498-.043.498.002.001h.007l.025.002.098.008.371.031a144.523 144.523 0 0 0 5.566.334c1.586.063 3.25.094 4.661.047a20.8 20.8 0 0 0 1.903-.138c.538-.07 1.021-.171 1.368-.327l-.411-.912Zm1.885 15.171c-.119-.489-.256-1.641-.393-3.143a225.04 225.04 0 0 1-.385-4.988 507.2 507.2 0 0 1-.289-4.595l-.083-1.466-.023-.407-.005-.106-.002-.027v-.009l-.499.026-.5.027v.002l.001.007.001.027.006.107.022.408c.02.352.048.857.084 1.469.071 1.226.172 2.882.289 4.605.117 1.723.25 3.515.387 5.011.135 1.479.277 2.713.418 3.289l.971-.237Zm1.324 32.045c.224-.522.354-1.39.432-2.438.08-1.071.11-2.401.102-3.893-.016-2.986-.183-6.654-.414-10.273-.23-3.62-.523-7.198-.791-10.004a162.323 162.323 0 0 0-.374-3.546c-.109-.916-.205-1.589-.279-1.891l-.971.237c.056.231.146.84.257 1.773.11.919.237 2.123.371 3.522.267 2.796.56 6.363.789 9.972.23 3.611.396 7.257.412 10.215.008 1.48-.022 2.78-.099 3.813-.079 1.056-.203 1.768-.354 2.119l.919.394Zm-2.658.926a6.43 6.43 0 0 0 1.798-.383c.209-.079.371-.155.484-.213.057-.03.101-.054.132-.073l.039-.023a.075.075 0 0 1 .012-.007l.004-.003.001-.001.001-.001h.001l-.273-.419-.273-.419.001-.001h.001l-.002.001-.017.01a3.54 3.54 0 0 1-.464.213 5.432 5.432 0 0 1-1.519.322l.074.997Zm1.786 3.085a18.61 18.61 0 0 1-1.337-3.702l-.972.238a19.702 19.702 0 0 0 1.409 3.901l.9-.437Zm.095.346a.939.939 0 0 0-.1-.355l-.891.454a.072.072 0 0 1-.007-.025l.998-.074Zm-.046.365a.94.94 0 0 0 .046-.365l-.998.074c0-.009.001-.017.004-.026l.948.317Zm-.183.32a.936.936 0 0 0 .183-.32l-.948-.317a.059.059 0 0 1 .012-.022l.753.659Zm-.293.224a.958.958 0 0 0 .293-.224l-.753-.659a.065.065 0 0 1 .021-.016l.439.899Zm-7.985 2.54c.26.104.561.12.849.102.296-.019.626-.077.971-.159.69-.165 1.487-.44 2.274-.746 1.577-.614 3.17-1.381 3.893-1.739l-.443-.896c-.715.354-2.277 1.105-3.813 1.703-.769.3-1.518.555-2.143.705-.314.075-.583.12-.802.134-.228.014-.356-.009-.414-.032l-.372.928Zm-1.901-1.995c.398.742 1.024 1.647 1.902 1.996l.37-.929c-.523-.208-1.005-.822-1.391-1.54l-.881.473Zm-3.194 1.824c.278.05.581.004.863-.073.29-.08.607-.206.934-.359.653-.306 1.39-.743 2.109-1.208l-.543-.84c-.703.455-1.397.864-1.991 1.143-.297.139-.557.24-.773.299-.225.062-.358.065-.421.054l-.178.984Zm-3.081-2.725c.23.375.633.976 1.145 1.518.5.528 1.168 1.07 1.937 1.207l.176-.984c-.445-.08-.927-.425-1.386-.91a8.546 8.546 0 0 1-1.02-1.354l-.852.523Zm-.165-.639c-.012.226.047.451.168.643l.847-.531a.098.098 0 0 1-.016-.062l-.999-.05Zm.231-.623c-.139.179-.22.396-.231.623l.999.05a.1.1 0 0 1 .022-.059l-.79-.614Zm4.09-2.212c-.827-.062-2.482.156-4.089 2.211l.788.616c1.386-1.773 2.708-1.868 3.228-1.83l.073-.997Zm-.104.016a.21.21 0 0 1 .096-.017l-.057.999a.805.805 0 0 0 .346-.059l-.385-.923Zm-.079.056a.22.22 0 0 1 .079-.056l.385.923a.79.79 0 0 0 .285-.204l-.749-.663Zm-.047.086a.22.22 0 0 1 .047-.086l.749.663a.779.779 0 0 0 .167-.308l-.963-.269Zm-.004.097a.227.227 0 0 1 .004-.097l.963.269a.782.782 0 0 0 .017-.35l-.984.178Zm-.462-2.279.464 2.289.98-.199-.464-2.288-.98.198Zm-2.009.222c.904.155 1.743.206 2.517.179l-.036-1a11.266 11.266 0 0 1-2.312-.165l-.169.986Zm-4.566-24.688a1.243 1.243 0 0 0-.009.262c.004.086.012.189.024.306.023.233.062.54.114.906.103.734.259 1.724.45 2.879.383 2.31.908 5.296 1.438 8.248a1691.076 1691.076 0 0 0 1.956 10.69l.137.736.036.194.01.049.002.013.001.003v.001l.491-.092.492-.092v-.001l-.001-.003-.002-.012-.01-.05-.036-.193-.137-.735-.487-2.632c-.403-2.182-.938-5.102-1.468-8.052a652.829 652.829 0 0 1-1.435-8.236 122.688 122.688 0 0 1-.447-2.854 21.905 21.905 0 0 1-.109-.867 4.012 4.012 0 0 1-.02-.251c-.004-.073 0-.079-.004-.053l-.986-.164Zm.372-1.596c-.201.831-.343 1.42-.372 1.596l.986.164c.022-.129.149-.661.358-1.525l-.972-.235Zm-.002.007.975.221-.975-.221Zm3.033-19.839c.1.15.198.479.241 1.044.041.543.027 1.231-.034 2.034-.121 1.604-.426 3.607-.812 5.705-.773 4.193-1.862 8.709-2.426 11.049l.972.235c.564-2.338 1.659-6.879 2.437-11.103.389-2.11.701-4.154.826-5.81.063-.828.08-1.572.034-2.186-.045-.593-.154-1.145-.406-1.523l-.832.555Zm10.174 48.432a3.22 3.22 0 0 0-.332-.074l-.17.985c.089.015.167.034.233.052l.269-.963Zm-.104-.005a.226.226 0 0 1 .1.004l-.261.965a.765.765 0 0 0 .356.012l-.195-.981Zm-.091.042a.223.223 0 0 1 .091-.042l.195.981a.777.777 0 0 0 .324-.147l-.61-.792Zm-.063.077a.214.214 0 0 1 .063-.077l.61.792a.783.783 0 0 0 .225-.276l-.898-.439Zm-.022.097a.206.206 0 0 1 .022-.097l.898.439a.785.785 0 0 0 .08-.347l-1 .005Zm0-2.495v2.493h1v-2.493h-1Zm-1.336-.37c.571.336 1.118.609 1.641.83l.389-.921a12.84 12.84 0 0 1-1.522-.771l-.508.862Zm-.326-1.615.06.901.016.236.004.061.001.015v.005l.499-.034.499-.034v-.005l-.001-.015-.005-.06a22.147 22.147 0 0 0-.015-.236l-.06-.899-.998.065Zm-.534 1.156a9.385 9.385 0 0 0 1.322-.78l-.577-.817a8.472 8.472 0 0 1-1.181.698l.436.899Zm2.461 3.233a18.707 18.707 0 0 1-2.219-3.877l-.921.389a19.747 19.747 0 0 0 2.337 4.085l.803-.597Zm-1.613-16.005c-.313-5.932-.596-12.583-.566-16.822l-1-.007c-.03 4.272.254 10.951.567 16.881l.999-.052Zm-2.995-8.104c.394 1.591 1.204 4.879 2.009 8.246l.973-.232c-.806-3.371-1.617-6.662-2.011-8.255l-.971.241Zm.178-1.826a2.802 2.802 0 0 0-.179 1.822l.973-.233a1.805 1.805 0 0 1 .114-1.172l-.908-.417Zm1.254-6.952a76.934 76.934 0 0 1-.556 4.082c-.22 1.291-.46 2.332-.701 2.876l.914.405c.299-.673.555-1.833.772-3.113.221-1.3.412-2.782.565-4.138l-.994-.112Z\" fill=\"#6D5B31\"/></mask><g mask=\"url(#a)\"><path d=\"M140.552 158.563c.497.373 5.932.975 7.65.688 5.736-.958 6.843 3.698 8.073 3.183.729-.305-.383-3.871-.743-5.764l-.133-1.852-14.532 1.014-.315 2.731Z\" fill=\"#0B2112\"/></g><mask id=\"b\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"137\" y=\"152\" width=\"22\" height=\"56\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M141.051 152.742s11.539.998 13.753 0c0 0 .675 12.704 1.194 14.834.518 2.13 2.846 28.237 1.35 31.729 0 0-.795.518-2.236.625.322 1.31.782 2.584 1.373 3.801a.438.438 0 0 1-.06.483.43.43 0 0 1-.136.104c-1.439.712-6.31 3.035-7.58 2.526-.7-.278-1.255-1.037-1.646-1.767-1.422.92-2.864 1.692-3.546 1.568-1.214-.216-2.302-1.775-2.744-2.495a.606.606 0 0 1 .035-.693c1.497-1.914 2.985-2.07 3.658-2.021a.267.267 0 0 0 .125-.021.27.27 0 0 0 .103-.073.293.293 0 0 0 .061-.112.298.298 0 0 0 .006-.126l-.464-2.289a11.77 11.77 0 0 1-2.415-.172s-4.323-23.115-4.157-24.113c.025-.153.16-.713.365-1.56 1.128-4.678 4.369-18.116 2.961-20.228Zm9.341 49.128c.107.019.201.041.282.064a.29.29 0 0 0 .245-.049.279.279 0 0 0 .11-.224v-2.493a13.39 13.39 0 0 1-1.582-.801l-.081-1.216c-.353.249-.77.505-1.251.738a19.21 19.21 0 0 0 2.277 3.981Zm-2.277-33.129c-.03 4.256.253 10.921.566 16.852-.805-3.369-1.615-6.658-2.009-8.251a2.294 2.294 0 0 1 .146-1.496c.54-1.218.992-4.401 1.297-7.105Z\" fill=\"#6D5B31\"/><path d=\"m154.804 152.742.499-.026a.501.501 0 0 0-.705-.43l.206.456Zm-13.753 0 .043-.498a.5.5 0 0 0-.459.776l.416-.278Zm14.947 14.834-.486.118.486-.118Zm1.35 31.729.273.419a.497.497 0 0 0 .186-.222l-.459-.197Zm-2.236.625-.037-.499a.502.502 0 0 0-.449.618l.486-.119Zm1.373 3.801-.45.219.004.008.446-.227Zm.046.165.499-.037-.499.037Zm-.106.318-.377-.329.377.329Zm-.136.104-.22-.449-.002.001.222.448Zm-7.58 2.526.186-.464h-.001l-.185.464Zm-1.646-1.767.44-.237a.498.498 0 0 0-.712-.183l.272.42Zm-3.546 1.568.089-.492h-.001l-.088.492Zm-2.744-2.495.426-.261-.002-.004-.424.265Zm.035-.693-.394-.308-.001.001.395.307Zm3.658-2.021-.036.499.008.001.028-.5Zm.125-.021.193.462-.193-.462Zm.103-.073.375.331-.375-.331Zm.061-.112.481.135-.481-.135Zm.006-.126.492-.089-.002-.011-.49.1Zm-.464-2.289.49-.099a.502.502 0 0 0-.508-.401l.018.5Zm-2.415-.172-.491.092a.499.499 0 0 0 .407.401l.084-.493Zm-4.157-24.113-.493-.082.493.082Zm.365-1.56.486.117.001-.007-.487-.11Zm0 0-.486-.118-.002.007.488.111Zm12.584 28.964-.134.481.004.001.13-.482Zm-.282-.064-.401.299c.077.103.19.172.316.194l.085-.493Zm.527.015-.305-.396.305.396Zm.081-.099-.449-.22.449.22Zm.029-.125h-.5v.002l.5-.002Zm0-2.493h.5a.501.501 0 0 0-.306-.461l-.194.461Zm-1.582-.801-.499.034a.502.502 0 0 0 .245.397l.254-.431Zm-.081-1.216.499-.033a.5.5 0 0 0-.787-.376l.288.409Zm-1.251.738-.218-.449a.5.5 0 0 0-.243.644l.461-.195Zm.566-12.296-.486.116a.5.5 0 0 0 .986-.142l-.5.026Zm-.566-16.852.5.004a.5.5 0 0 0-.997-.06l.497.056Zm-1.443 8.601-.487.117.001.004.486-.121Zm.146-1.496.454.208.003-.006-.457-.202Zm7.78-23.56c-.206.093-.568.18-1.085.247a19.86 19.86 0 0 1-1.809.13c-1.375.047-3.011.016-4.587-.046a144.075 144.075 0 0 1-5.527-.332l-.368-.03-.096-.008-.024-.002-.006-.001h-.002l-.043.498-.043.498.002.001h.007l.025.002.098.008.371.031a144.523 144.523 0 0 0 5.566.334c1.586.063 3.25.094 4.661.047a20.8 20.8 0 0 0 1.903-.138c.538-.07 1.021-.171 1.368-.327l-.411-.912Zm1.885 15.171c-.119-.489-.256-1.641-.393-3.143a225.04 225.04 0 0 1-.385-4.988 507.2 507.2 0 0 1-.289-4.595l-.083-1.466-.023-.407-.005-.106-.002-.027v-.009l-.499.026-.5.027v.002l.001.007.001.027.006.107.022.408c.02.352.048.857.084 1.469.071 1.226.172 2.882.289 4.605.117 1.723.25 3.515.387 5.011.135 1.479.277 2.713.418 3.289l.971-.237Zm1.324 32.045c.224-.522.354-1.39.432-2.438.08-1.071.11-2.401.102-3.893-.016-2.986-.183-6.654-.414-10.273-.23-3.62-.523-7.198-.791-10.004a162.323 162.323 0 0 0-.374-3.546c-.109-.916-.205-1.589-.279-1.891l-.971.237c.056.231.146.84.257 1.773.11.919.237 2.123.371 3.522.267 2.796.56 6.363.789 9.972.23 3.611.396 7.257.412 10.215.008 1.48-.022 2.78-.099 3.813-.079 1.056-.203 1.768-.354 2.119l.919.394Zm-2.658.926a6.43 6.43 0 0 0 1.798-.383c.209-.079.371-.155.484-.213.057-.03.101-.054.132-.073l.039-.023a.075.075 0 0 1 .012-.007l.004-.003.001-.001.001-.001h.001l-.273-.419-.273-.419.001-.001h.001l-.002.001-.017.01a3.54 3.54 0 0 1-.464.213 5.432 5.432 0 0 1-1.519.322l.074.997Zm1.786 3.085a18.61 18.61 0 0 1-1.337-3.702l-.972.238a19.702 19.702 0 0 0 1.409 3.901l.9-.437Zm.095.346a.939.939 0 0 0-.1-.355l-.891.454a.072.072 0 0 1-.007-.025l.998-.074Zm-.046.365a.94.94 0 0 0 .046-.365l-.998.074c0-.009.001-.017.004-.026l.948.317Zm-.183.32a.936.936 0 0 0 .183-.32l-.948-.317a.059.059 0 0 1 .012-.022l.753.659Zm-.293.224a.958.958 0 0 0 .293-.224l-.753-.659a.065.065 0 0 1 .021-.016l.439.899Zm-7.985 2.54c.26.104.561.12.849.102.296-.019.626-.077.971-.159.69-.165 1.487-.44 2.274-.746 1.577-.614 3.17-1.381 3.893-1.739l-.443-.896c-.715.354-2.277 1.105-3.813 1.703-.769.3-1.518.555-2.143.705-.314.075-.583.12-.802.134-.228.014-.356-.009-.414-.032l-.372.928Zm-1.901-1.995c.398.742 1.024 1.647 1.902 1.996l.37-.929c-.523-.208-1.005-.822-1.391-1.54l-.881.473Zm-3.194 1.824c.278.05.581.004.863-.073.29-.08.607-.206.934-.359.653-.306 1.39-.743 2.109-1.208l-.543-.84c-.703.455-1.397.864-1.991 1.143-.297.139-.557.24-.773.299-.225.062-.358.065-.421.054l-.178.984Zm-3.081-2.725c.23.375.633.976 1.145 1.518.5.528 1.168 1.07 1.937 1.207l.176-.984c-.445-.08-.927-.425-1.386-.91a8.546 8.546 0 0 1-1.02-1.354l-.852.523Zm-.165-.639c-.012.226.047.451.168.643l.847-.531a.098.098 0 0 1-.016-.062l-.999-.05Zm.231-.623c-.139.179-.22.396-.231.623l.999.05a.1.1 0 0 1 .022-.059l-.79-.614Zm4.09-2.212c-.827-.062-2.482.156-4.089 2.211l.788.616c1.386-1.773 2.708-1.868 3.228-1.83l.073-.997Zm-.104.016a.21.21 0 0 1 .096-.017l-.057.999a.805.805 0 0 0 .346-.059l-.385-.923Zm-.079.056a.22.22 0 0 1 .079-.056l.385.923a.79.79 0 0 0 .285-.204l-.749-.663Zm-.047.086a.22.22 0 0 1 .047-.086l.749.663a.779.779 0 0 0 .167-.308l-.963-.269Zm-.004.097a.227.227 0 0 1 .004-.097l.963.269a.782.782 0 0 0 .017-.35l-.984.178Zm-.462-2.279.464 2.289.98-.199-.464-2.288-.98.198Zm-2.009.222c.904.155 1.743.206 2.517.179l-.036-1a11.266 11.266 0 0 1-2.312-.165l-.169.986Zm-4.566-24.688a1.243 1.243 0 0 0-.009.262c.004.086.012.189.024.306.023.233.062.54.114.906.103.734.259 1.724.45 2.879.383 2.31.908 5.296 1.438 8.248a1691.076 1691.076 0 0 0 1.956 10.69l.137.736.036.194.01.049.002.013.001.003v.001l.491-.092.492-.092v-.001l-.001-.003-.002-.012-.01-.05-.036-.193-.137-.735-.487-2.632c-.403-2.182-.938-5.102-1.468-8.052a652.829 652.829 0 0 1-1.435-8.236 122.688 122.688 0 0 1-.447-2.854 21.905 21.905 0 0 1-.109-.867 4.012 4.012 0 0 1-.02-.251c-.004-.073 0-.079-.004-.053l-.986-.164Zm.372-1.596c-.201.831-.343 1.42-.372 1.596l.986.164c.022-.129.149-.661.358-1.525l-.972-.235Zm-.002.007.975.221-.975-.221Zm3.033-19.839c.1.15.198.479.241 1.044.041.543.027 1.231-.034 2.034-.121 1.604-.426 3.607-.812 5.705-.773 4.193-1.862 8.709-2.426 11.049l.972.235c.564-2.338 1.659-6.879 2.437-11.103.389-2.11.701-4.154.826-5.81.063-.828.08-1.572.034-2.186-.045-.593-.154-1.145-.406-1.523l-.832.555Zm10.174 48.432a3.22 3.22 0 0 0-.332-.074l-.17.985c.089.015.167.034.233.052l.269-.963Zm-.104-.005a.226.226 0 0 1 .1.004l-.261.965a.765.765 0 0 0 .356.012l-.195-.981Zm-.091.042a.223.223 0 0 1 .091-.042l.195.981a.777.777 0 0 0 .324-.147l-.61-.792Zm-.063.077a.214.214 0 0 1 .063-.077l.61.792a.783.783 0 0 0 .225-.276l-.898-.439Zm-.022.097a.206.206 0 0 1 .022-.097l.898.439a.785.785 0 0 0 .08-.347l-1 .005Zm0-2.495v2.493h1v-2.493h-1Zm-1.336-.37c.571.336 1.118.609 1.641.83l.389-.921a12.84 12.84 0 0 1-1.522-.771l-.508.862Zm-.326-1.615.06.901.016.236.004.061.001.015v.005l.499-.034.499-.034v-.005l-.001-.015-.005-.06a22.147 22.147 0 0 0-.015-.236l-.06-.899-.998.065Zm-.534 1.156a9.385 9.385 0 0 0 1.322-.78l-.577-.817a8.472 8.472 0 0 1-1.181.698l.436.899Zm2.461 3.233a18.707 18.707 0 0 1-2.219-3.877l-.921.389a19.747 19.747 0 0 0 2.337 4.085l.803-.597Zm-1.613-16.005c-.313-5.932-.596-12.583-.566-16.822l-1-.007c-.03 4.272.254 10.951.567 16.881l.999-.052Zm-2.995-8.104c.394 1.591 1.204 4.879 2.009 8.246l.973-.232c-.806-3.371-1.617-6.662-2.011-8.255l-.971.241Zm.178-1.826a2.802 2.802 0 0 0-.179 1.822l.973-.233a1.805 1.805 0 0 1 .114-1.172l-.908-.417Zm1.254-6.952a76.934 76.934 0 0 1-.556 4.082c-.22 1.291-.46 2.332-.701 2.876l.914.405c.299-.673.555-1.833.772-3.113.221-1.3.412-2.782.565-4.138l-.994-.112Z\" fill=\"#6D5B31\"/></mask><g mask=\"url(#b)\"><path d=\"M141.281 171.22c0-.522-.321-1.619-.611-1.87-.29-.251.033-4.239-.345-3.673-.224.335-1.24 4.702-1.817 7.009l-.601 2.247s0 .852 1.33.526c1.33-.327 1.433-1.078 1.433-1.078l.611-3.161Zm8.355-5.771c-.222 1.396-.979 6.535-.921 9.42.024 1.182 1.582 2.933 1.768 1.025.187-1.909-.571-12.19-.847-10.445Zm-2.306 37c-1.204.515-1.136 1.639-.731 1.934.51.37 1.112-.147 1.643-.863.636-.857 1.297-1.231 1.191-1.528-.268-.75-.899-.059-2.103.457Zm-5.772-.144c-.821.556-.775 1.769-.498 2.087.347.399 1.04-.223 1.402-.995.434-.925 1.256-1.277 1.735-2.159-.538.124-1.818.51-2.639 1.067Z\" fill=\"#fff\" fill-opacity=\".5\" style=\"mix-blend-mode:overlay\"/></g><path d=\"M148.784 135.946c4.156 0 7.525-4.728 7.525-10.56 0-5.832-3.369-10.56-7.525-10.56-4.156 0-7.525 4.728-7.525 10.56 0 5.832 3.369 10.56 7.525 10.56Z\" fill=\"#4F311A\" stroke=\"#4F311A\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M148.7 127.299c2.939 0 5.322-2.978 5.322-6.652s-2.383-6.652-5.322-6.652-5.321 2.978-5.321 6.652 2.382 6.652 5.321 6.652Z\" fill=\"#FFDDBD\" stroke=\"#FFDDBD\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M156.35 124.139c0 .421-.014.837-.041 1.247-.399-5.935-3.534-8.897-7.442-8.897-3.908 0-7.209 2.962-7.608 8.897-.028-.41-.042-.826-.042-1.247 0-6.52 3.388-11.807 7.567-11.807s7.566 5.287 7.566 11.807Z\" fill=\"#4F311A\" stroke=\"#4F311A\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"m158.396 151.661 2.05 3.825c.77 1.663 2.616 5.654 1.936 8.253a7.312 7.312 0 0 0-.263 2.017l-1.395 2.112a.468.468 0 0 0 .133.651c.104.068.23.093.352.068a.47.47 0 0 0 .298-.201l.851-1.289c.073.198.165.388.275.569l.515 2.953a.478.478 0 0 0 .194.303.475.475 0 0 0 .522.009.456.456 0 0 0 .205-.295.452.452 0 0 0 .004-.183l-.191-1.101.444 1.152a.468.468 0 0 0 .876-.332l-.354-.915.392.6a.473.473 0 0 0 .65.138.473.473 0 0 0 .137-.65l-1.088-1.663c.019-.076.033-.154.042-.233l.79.468a.479.479 0 0 0 .355.051.458.458 0 0 0 .287-.215.464.464 0 0 0-.163-.643l-1.394-.831a8.278 8.278 0 0 0-.07-.271l-.289-1.771c.374-1.519.499-3.865-.401-8.427-.633-3.213-1.799-4.979-2.737-6.399a13.197 13.197 0 0 1-1.006-1.689l-1.957 3.939Zm-27.851-10.007-3.605 2.416c-1.579.93-5.37 3.159-8.023 2.737a7.33 7.33 0 0 0-2.033-.063l-2.239-1.181a.47.47 0 0 0-.438.83l1.366.721c-.19.092-.37.202-.539.329l-2.888.803a.466.466 0 0 0-.339.397.47.47 0 0 0 .595.507l1.077-.299-1.103.555a.472.472 0 0 0-.198.622.473.473 0 0 0 .615.218l.875-.442-.559.449a.471.471 0 0 0-.072.66.47.47 0 0 0 .659.073l1.548-1.246c.078.011.157.017.236.018l-.387.832a.48.48 0 0 0-.016.359.468.468 0 0 0 .865.039l.691-1.469c.087-.03.176-.062.263-.096l1.734-.462c1.548.223 3.895.117 8.346-1.227 3.135-.946 4.778-2.279 6.099-3.352a13.29 13.29 0 0 1 1.583-1.168l-4.113-1.56Z\" fill=\"#FFDDBD\"/><path d=\"m113.433 138.349.978-.347 2.237 17.213-.978.347-2.237-17.213Z\" fill=\"#D6BD65\"/><path d=\"m113.433 138.349-2.1-.409 2.237 17.212 2.1.41-2.237-17.213Z\" fill=\"#FBE8A4\"/><g filter=\"url(#c)\"><g filter=\"url(#d)\"><path d=\"M119.155 137.609c-.716.776-3.593 2.22-7.488 1.901-5.797-.475-8.409-4.851-9.003-6.864.617.219 2.208.647 3.631.615-1.4-1.361-2.758-4.813-2.796-8.104 1.115.684 3.454.513 4.484.342-1.196-.859-3.597-3.388-3.635-6.629 3.718 2.449 6.797.986 8.92 2.205 2.122 1.218 1.217 2.695 2.755 4.623-.23-1.616.653-4.236 1.123-5.344 0 0 .629 3.088 1.436 4.463.806 1.375 2.258 1.595 2.747 3.927.39 1.865-.932 4.853-1.642 6.115.46-.074 1.732-.571 3.139-1.97-.112 1.711-2.956 3.944-3.671 4.72Z\" fill=\"#EE7301\"/></g><g filter=\"url(#e)\"><path d=\"M119.155 137.609c-.716.776-3.593 2.22-7.488 1.901-5.797-.475-8.409-4.851-9.003-6.864.617.219 2.208.647 3.631.615-1.4-1.361-2.758-4.813-2.796-8.104 1.115.684 3.454.513 4.484.342-1.196-.859-3.597-3.388-3.635-6.629 3.718 2.449 6.797.986 8.92 2.205 2.122 1.218 1.217 2.695 2.755 4.623-.23-1.616.653-4.236 1.123-5.344 0 0 .629 3.088 1.436 4.463.806 1.375 2.258 1.595 2.747 3.927.39 1.865-.932 4.853-1.642 6.115.46-.074 1.732-.571 3.139-1.97-.112 1.711-2.956 3.944-3.671 4.72Z\" fill=\"#ED7200\"/></g><g filter=\"url(#f)\"><path d=\"M115.843 137.726c-.326.425-1.636 1.211-3.413 1.028-2.644-.273-3.839-2.68-4.113-3.785.282.121 1.008.359 1.657.345-.64-.75-1.263-2.647-1.284-4.454.509.378 1.576.289 2.045.198-.546-.475-1.644-1.867-1.664-3.646 1.698 1.352 3.1.556 4.069 1.229.969.673.558 1.481 1.261 2.542-.106-.887.294-2.323.507-2.93 0 0 .29 1.696.659 2.452.37.756 1.032.881 1.257 2.161.18 1.024-.419 2.662-.742 3.352.21-.039.79-.309 1.43-1.074-.05.939-1.344 2.158-1.669 2.582Z\" fill=\"#FFDC5F\"/></g></g><path d=\"m126.94 144.07 3.605-2.416 4.113 1.56c-.556.35-1.085.74-1.583 1.168-1.321 1.073-2.964 2.406-6.099 3.352-4.451 1.344-6.798 1.45-8.346 1.227l-3.057-1.847-1.366-.721a.47.47 0 0 1 .438-.83l2.239 1.181a7.33 7.33 0 0 1 2.033.063c2.653.422 6.444-1.807 8.023-2.737Z\" fill=\"#FFDAB8\"/><path d=\"M146.372 125.968s-4.157.166-4.656.831c-.476.636-10.196 13.848-11.079 15.047a.305.305 0 0 1-.166.115c-1.084.296-10.332 2.802-12.411 2.682a.312.312 0 0 0-.332.274c-.143 1.164-.499 5.097 1.207 5.663 1.996.665 15.964-1.331 16.63-2.661.543-1.088 4.639-6.17 5.576-9.627a.316.316 0 0 0-.446-.361.32.32 0 0 0-.155.176c-1.157 3.41-3.171 10.905-.853 16.381a.316.316 0 0 0 .103.131c.697.517 6.599 4.513 16.035-.557a.318.318 0 0 0 .166-.288c-.058-1.856-.569-16.412-1.969-17.501 0 0 5.987 29.601 6.818 29.934.832.332 4.989.166 5.322-.998.332-1.164-8.315-37.251-9.479-37.417 0 0-4.008-1.829-5.58-1.829l-4.731.005Z\" fill=\"#D8CA25\" stroke=\"#D8CA25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M147.3 156.678a.067.067 0 0 1-.031-.005.095.095 0 0 1-.027-.017.11.11 0 0 1-.018-.026.088.088 0 0 1-.007-.032c-.399-16.089 1.307-30.497 1.331-30.64a.082.082 0 0 1 .091-.073.089.089 0 0 1 .056.032c.013.017.02.039.017.061-.016.143-1.723 14.54-1.33 30.615a.087.087 0 0 1-.006.032.088.088 0 0 1-.017.028.08.08 0 0 1-.027.018.071.071 0 0 1-.032.007Z\" fill=\"#000\"/><path d=\"M143.312 122.582s-1.164 3.991 0 4.269c1.164.277 9.334.633 10.342 0 1.008-.634.981-4.906.368-4.542-.614.364-5.383 1.912-10.71.273Z\" fill=\"#D3BA2A\" stroke=\"#D3BA2A\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M146.539 120.397c.505 0 .914-.26.914-.582 0-.321-.409-.582-.914-.582-.505 0-.915.261-.915.582 0 .322.41.582.915.582Z\" fill=\"#fff\"/><path d=\"M146.372 120.564a.416.416 0 1 0 0-.831.416.416 0 0 0 0 .831Z\" fill=\"#1A8235\"/><path d=\"M150.363 120.397c.505 0 .915-.26.915-.582 0-.321-.41-.582-.915-.582-.505 0-.914.261-.914.582 0 .322.409.582.914.582Z\" fill=\"#fff\"/><path d=\"M150.197 120.564a.416.416 0 1 0 0-.831.416.416 0 0 0 0 .831Z\" fill=\"#1A8235\"/><path d=\"M155.851 118.402a.522.522 0 0 1-.436.51c-6.532 1.078-11.606.333-13.275.024a.514.514 0 0 1-.303-.178.51.51 0 0 1-.121-.33v-.026c0-5.282 3.159-9.562 7.067-9.562 3.908 0 7.068 4.28 7.068 9.562Z\" fill=\"#1F3325\" stroke=\"#1F3325\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M153.107 112.187a.021.021 0 0 1-.02-.015c-.778-2.28-3.253-3.14-3.993-3.349a.536.536 0 0 0-.292 0c-.684.171-2.984.931-3.486 3.347a.011.011 0 0 1-.003.008.012.012 0 0 1-.005.005.011.011 0 0 1-.008.003l-.007-.001a.019.019 0 0 1-.008-.002.017.017 0 0 1-.006-.006c-.002-.003-.003-.005-.003-.008a.014.014 0 0 1 0-.009c.514-2.434 2.819-3.204 3.516-3.382a.597.597 0 0 1 .314 0c.745.21 3.234 1.078 4.023 3.376a.02.02 0 0 1 .001.008c0 .002 0 .005-.002.008a.02.02 0 0 1-.004.006l-.007.004-.01.007Z\" fill=\"#0D160F\"/><path d=\"M148.413 122.704h-.01c-.213 0-.666-.112-.717-.303a.154.154 0 0 1 .075-.181c.148-.103.264-1.136.291-2.074a.07.07 0 0 1 .006-.032c.004-.01.01-.02.018-.027a.084.084 0 0 1 .028-.018.09.09 0 0 1 .033-.004.08.08 0 0 1 .057.026.078.078 0 0 1 .024.058c-.013.469-.078 2.011-.362 2.207-.01 0-.014.01-.014.012.146.096.315.154.489.166.155.015.21-.013.215-.022a.088.088 0 0 1 .016-.028.086.086 0 0 1 .026-.02.085.085 0 0 1 .063-.004.085.085 0 0 1 .048.042c.005.01.008.021.009.031a.093.093 0 0 1-.004.033c-.022.061-.087.138-.291.138Z\" fill=\"#E8C5AF\"/><path d=\"M118.748 147.551c.031.799-.045 1.469-.17 1.497l-2.027.484c.117-.071.187-.722.157-1.497-.03-.775-.15-1.375-.27-1.39l2.026-.484c.125-.03.252.592.284 1.39Z\" fill=\"#FFEA2C\"/><rect x=\"148.22\" y=\"127.662\" width=\".357\" height=\".8\" rx=\".1\" transform=\"rotate(2.47 148.22 127.662)\" fill=\"#000\"/><path d=\"M147.634 128.751c-.294-.248.368-.723.621-.882 0 .258-.054.513-.136.659-.097.171-.281.395-.485.223Z\" stroke=\"#000\" stroke-width=\".2\" stroke-linejoin=\"round\"/><mask id=\"g\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"117\" y=\"108\" width=\"50\" height=\"59\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M155.726 118.737a.52.52 0 0 0 .125-.334c0-5.282-3.16-9.562-7.068-9.562-3.908 0-7.067 4.28-7.067 9.562v.026a.51.51 0 0 0 .288.462c-.504 1.581-.787 3.363-.787 5.248 0 .421.014.836.041 1.246v.001c0 .639.041 1.265.118 1.873-1.353 1.833-6.226 8.455-8.942 12.146l-1.797 2.441a.299.299 0 0 1-.166.115c-1.084.296-10.332 2.802-12.411 2.683a.31.31 0 0 0-.332.274c-.143 1.164-.499 5.097 1.207 5.662 1.995.666 15.964-1.33 16.629-2.66.15-.3.57-.904 1.12-1.693.786-1.13 1.836-2.64 2.74-4.185-.853 3.728-1.37 8.588.263 12.446a.311.311 0 0 0 .103.132c.697.517 6.599 4.513 16.034-.557a.328.328 0 0 0 .125-.12.318.318 0 0 0 .042-.168c-.035-1.092-.226-6.584-.662-11.14 1.811 8.719 4.928 23.339 5.511 23.572.831.333 4.989.166 5.321-.998.333-1.164-8.315-37.25-9.479-37.416 0 0-.202-.092-.533-.236.104-.7.159-1.427.159-2.171.028-.41.042-.826.042-1.247 0-1.894-.286-3.684-.794-5.27a.52.52 0 0 0 .17-.132Z\" fill=\"#D3BA2A\"/><path d=\"m155.851 118.403.5.002v-.002h-.5Zm-.125.334-.38-.324.38.324Zm-6.943-9.896v.5-.5Zm-7.067 9.562h.5-.5Zm0 .026h-.5v.003l.5-.003Zm.121.33.383-.321-.383.321Zm.167.132.476.152a.5.5 0 0 0-.254-.6l-.222.448Zm-.787 5.248h-.5.5Zm.041 1.246h.5l-.001-.033-.499.033Zm0 .001h.5-.5Zm.118 1.873.403.297a.5.5 0 0 0 .093-.361l-.496.064Zm-8.942 12.146.393.308a.106.106 0 0 0 .01-.012l-.403-.296Zm0 0-.393-.309-.009.011.402.298Zm0 0-.402-.297-.001.001.403.296Zm-1.797 2.441-.402-.296-.002.003.404.293Zm-.166.115-.131-.482h-.001l.132.482Zm-12.411 2.683-.035.498.006.001.029-.499Zm-.221.07.318.386-.318-.386Zm-.111.204.496.061v-.001l-.496-.06Zm1.207 5.662.158-.474h-.001l-.157.474Zm16.629-2.66-.447-.224.447.224Zm1.12-1.693-.403-.297-.008.011.411.286Zm0 0 .402.296.008-.011-.41-.285Zm2.74-4.185.487.112a.501.501 0 0 0-.919-.364l.432.252Zm.263 12.446.462-.191-.002-.004-.46.195Zm.103.132.298-.402-.003-.002-.295.404Zm16.034-.557-.235-.442-.001.001.236.441Zm.167-.288-.5.016.5-.016Zm-.662-11.14.489-.101a.5.5 0 0 0-.987.149l.498-.048Zm5.511 23.572-.186.464.186-.464Zm5.321-.998.481.138-.481-.138Zm-9.479-37.416-.207.455c.043.02.089.033.137.04l.07-.495Zm-.533-.236-.495-.073a.5.5 0 0 0 .297.532l.198-.459Zm.159-2.171.488-.111a.502.502 0 0 0-.988.111h.5Zm0 0-.487.111a.5.5 0 0 0 .986-.077l-.499-.034Zm.042-1.247h.5-.5Zm-.794-5.27-.217-.451a.5.5 0 0 0-.259.603l.476-.152Zm-.205-.469a.021.021 0 0 1-.005.013l.761.649c.156-.183.242-.416.244-.657l-1-.005Zm-6.568-9.059c1.759 0 3.389.961 4.597 2.597 1.209 1.636 1.971 3.92 1.971 6.465h1c0-2.737-.818-5.234-2.166-7.059-1.349-1.825-3.252-3.003-5.402-3.003v1Zm-6.567 9.062c0-2.545.762-4.829 1.97-6.465 1.209-1.636 2.839-2.597 4.597-2.597v-1c-2.149 0-4.053 1.178-5.401 3.003-1.348 1.825-2.166 4.322-2.166 7.059h1Zm0 .026v-.026h-1v.026h1Zm.004.009c-.003-.003-.004-.007-.004-.012l-1 .006c.001.237.085.466.237.648l.767-.642Zm.006.005-.006-.005-.767.642c.091.109.203.196.328.259l.445-.896Zm-.509 5.696c0-1.836.276-3.566.763-5.096l-.953-.304c-.52 1.632-.81 3.466-.81 5.4h1Zm.04 1.213c-.027-.399-.04-.803-.04-1.213h-1c0 .432.014.859.043 1.28l.997-.067Zm.001.034v-.001h-1v.001h1Zm.114 1.809a14.448 14.448 0 0 1-.114-1.809h-1c0 .66.042 1.307.122 1.936l.992-.127Zm-9.035 12.506c2.716-3.691 7.588-10.312 8.942-12.145l-.805-.594c-1.354 1.834-6.227 8.456-8.943 12.146l.806.593Zm-.01.012-.786-.617.786.617Zm.008-.01.001-.001-.804-.595v.001l.803.595Zm-1.795 2.44 1.796-2.441-.805-.593-1.796 2.441.805.593Zm-.438.301a.802.802 0 0 0 .44-.304l-.809-.587a.187.187 0 0 1 .107-.074l.262.965Zm-12.571 2.699c.592.034 1.62-.114 2.786-.335a88.295 88.295 0 0 0 3.938-.863 212.158 212.158 0 0 0 5.847-1.501l-.263-.965c-.54.147-3.117.846-5.817 1.493-1.35.324-2.726.633-3.891.853-1.187.225-2.094.345-2.542.319l-.058.999Zm.126-.043a.181.181 0 0 1-.132.042l.071-.997a.812.812 0 0 0-.575.184l.636.771Zm.067-.122a.19.19 0 0 1-.067.122l-.636-.771a.81.81 0 0 0-.29.529l.993.12Zm.868 5.128c-.241-.08-.455-.291-.628-.686-.173-.396-.277-.916-.328-1.491-.102-1.145.018-2.378.088-2.95l-.993-.122c-.072.592-.202 1.908-.091 3.161.055.624.173 1.266.408 1.803.236.538.618 1.031 1.23 1.234l.314-.949Zm16.025-2.41c.022-.043.026-.018-.093.057a3.035 3.035 0 0 1-.47.226c-.419.169-1.003.347-1.711.526-1.413.359-3.266.709-5.17.999a71.89 71.89 0 0 1-5.427.63c-.793.056-1.49.084-2.045.078-.576-.007-.941-.05-1.108-.106l-.316.949c.331.11.839.15 1.412.157.594.006 1.32-.023 2.128-.081 1.617-.115 3.584-.346 5.507-.638 1.921-.293 3.809-.649 5.265-1.018.726-.184 1.359-.375 1.838-.568.239-.096.455-.198.629-.308.16-.1.351-.246.456-.456l-.895-.447Zm1.156-1.755c-.534.768-.985 1.413-1.156 1.755l.895.447c.129-.258.518-.82 1.082-1.631l-.821-.571Zm.008-.011.805.593-.805-.593Zm2.711-4.14c-.892 1.525-1.931 3.02-2.719 4.151l.821.571c.785-1.127 1.847-2.653 2.761-4.218l-.863-.504Zm1.155 12.503c-1.568-3.706-1.084-8.433-.236-12.139l-.975-.223c-.858 3.749-1.407 8.742.29 12.752l.921-.39Zm-.062-.077a.187.187 0 0 1 .064.081l-.924.382c.057.138.15.256.27.344l.59-.807Zm15.503-.594c-9.212 4.95-14.903 1.039-15.5.596l-.596.803c.797.591 6.909 4.673 16.569-.518l-.473-.881Zm-.072.07a.191.191 0 0 1 .073-.071l.47.883a.816.816 0 0 0 .322-.311l-.865-.501Zm-.025.099a.183.183 0 0 1 .025-.099l.865.501a.808.808 0 0 0 .109-.435l-.999.033Zm-.66-11.108c.435 4.539.626 10.016.66 11.108l.999-.032c-.034-1.093-.225-6.598-.664-11.171l-.995.095Zm6.195 23.06a.42.42 0 0 1 .143.094l.02.023.006.008-.003-.005a4.96 4.96 0 0 1-.207-.534 32.574 32.574 0 0 1-.514-1.804c-.4-1.531-.9-3.646-1.438-6.032-1.078-4.769-2.309-10.601-3.215-14.959l-.979.203c.906 4.36 2.139 10.198 3.218 14.977.54 2.388 1.042 4.516 1.447 6.064.202.773.381 1.409.531 1.863.074.226.145.419.211.565.033.072.071.148.115.214.027.041.12.182.293.251l.372-.928Zm4.655-.671c-.004.012-.023.06-.118.135a1.767 1.767 0 0 1-.437.23c-.396.153-.927.266-1.499.336-.568.07-1.152.095-1.639.082-.514-.013-.847-.066-.962-.112l-.372.928c.3.12.798.171 1.309.184.536.014 1.169-.013 1.786-.089.612-.075 1.234-.202 1.738-.397.252-.097.493-.219.693-.375.199-.156.382-.368.462-.647l-.961-.275Zm-9.069-36.784c-.126-.018-.197-.083-.207-.092-.016-.015-.017-.021-.004-.001.027.039.071.116.13.243.116.251.262.628.434 1.126.342.991.771 2.408 1.255 4.118.967 3.417 2.145 7.973 3.278 12.565a558.132 558.132 0 0 1 2.998 12.756c.391 1.773.704 3.273.91 4.364.103.546.177.984.221 1.301.022.158.035.279.041.365l.003.084c-.001.023-.003-.001.01-.045l.961.275a.813.813 0 0 0 .028-.205 2.058 2.058 0 0 0-.004-.174 6.69 6.69 0 0 0-.048-.437c-.047-.34-.125-.797-.229-1.349a159.899 159.899 0 0 0-.916-4.394 564.85 564.85 0 0 0-3.004-12.781c-1.134-4.596-2.315-9.165-3.287-12.598-.485-1.714-.92-3.153-1.272-4.172a13.632 13.632 0 0 0-.472-1.22 2.676 2.676 0 0 0-.213-.389.958.958 0 0 0-.146-.171.61.61 0 0 0-.326-.159l-.141.99Zm-.661-.272c.163.071.295.129.385.17l.104.046a.236.236 0 0 1 .026.012l.007.003h.001l.001.001.207-.455.208-.455h-.001l-.002-.001a34.162 34.162 0 0 0-.54-.239l-.396.918Zm-.143-2.63c0 .72-.053 1.421-.154 2.098l.99.147c.108-.725.164-1.476.164-2.245h-1Zm.988-.111-.975.222.975-.222Zm-.946-1.136c0 .41-.014.815-.041 1.214l.998.067c.029-.422.043-.849.043-1.281h-1Zm-.77-5.118c.491 1.535.77 3.274.77 5.118h1c0-1.944-.293-3.785-.818-5.423l-.952.305Zm.266-.608-.007.005.434.901c.127-.061.241-.148.334-.257l-.761-.649Z\" fill=\"#D3BA2A\"/></mask><g mask=\"url(#g)\"><path d=\"M153.176 125.166c.152-1.092.092-2.462 0-3.004.029-.045.107-.709 0-1.378-.085-.532-.198-.723-.291-1.077.278-.569.254-4.489-.198-6.084-1.346-4.756-3.511-5.334-3.121-5.334.991 0 5.182 2.183 6.253 3.096 1.072.913 3.431 20.172 2.927 20.172-.158 0-2.13-2.554-2.874-2.942-.423-.221-2.709-.816-2.987-1.054-.278-.238.1-1.03.291-2.395Zm-27.263 24.112c-1.124.155-7.468 1.23-8.486.661.723 3.978 19.25-.306 20.051-1.826.64-1.215 1.412-5.107 1.412-7.931-.421 1.415-1.429 2.677-2.27 4.147-.909 1.587-2.178 2.681-2.41 2.947-.561.641-6.295 1.725-8.297 2.002Zm28.719-1.058c0-2.149-.08-5.348.6-8.314 0 2.321.599 3.777.599 5.019 0 1.585.497 5.095 1.071 7.782.461 2.164 1.117 6.621 1.117 7.672l-2.788-3.624c-.303-.102-.647-1.01-.365-1.986.15-.517-.234-4.374-.234-6.549Z\" fill=\"#B0A333\" fill-opacity=\".55\" style=\"mix-blend-mode:multiply\"/></g><mask id=\"h\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"117\" y=\"108\" width=\"50\" height=\"59\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M155.726 118.737a.52.52 0 0 0 .125-.334c0-5.282-3.16-9.562-7.068-9.562-3.908 0-7.067 4.28-7.067 9.562v.026a.51.51 0 0 0 .288.462c-.504 1.581-.787 3.363-.787 5.248 0 .421.014.836.041 1.246v.001c0 .639.041 1.265.118 1.873-1.353 1.833-6.226 8.455-8.942 12.146l-1.797 2.441a.299.299 0 0 1-.166.115c-1.084.296-10.332 2.802-12.411 2.683a.31.31 0 0 0-.332.274c-.143 1.164-.499 5.097 1.207 5.662 1.995.666 15.964-1.33 16.629-2.66.15-.3.57-.904 1.12-1.693.786-1.13 1.836-2.64 2.74-4.185-.853 3.728-1.37 8.588.263 12.446a.311.311 0 0 0 .103.132c.697.517 6.599 4.513 16.034-.557a.328.328 0 0 0 .125-.12.318.318 0 0 0 .042-.168c-.035-1.092-.226-6.584-.662-11.14 1.811 8.719 4.928 23.339 5.511 23.572.831.333 4.989.166 5.321-.998.333-1.164-8.315-37.25-9.479-37.416 0 0-.202-.092-.533-.236.104-.7.159-1.427.159-2.171.028-.41.042-.826.042-1.247 0-1.894-.286-3.684-.794-5.27a.52.52 0 0 0 .17-.132Z\" fill=\"#D3BA2A\"/><path d=\"m155.851 118.403.5.002v-.002h-.5Zm-.125.334-.38-.324.38.324Zm-6.943-9.896v.5-.5Zm-7.067 9.562h.5-.5Zm0 .026h-.5v.003l.5-.003Zm.121.33.383-.321-.383.321Zm.167.132.476.152a.5.5 0 0 0-.254-.6l-.222.448Zm-.787 5.248h-.5.5Zm.041 1.246h.5l-.001-.033-.499.033Zm0 .001h.5-.5Zm.118 1.873.403.297a.5.5 0 0 0 .093-.361l-.496.064Zm-8.942 12.146.393.308a.106.106 0 0 0 .01-.012l-.403-.296Zm0 0-.393-.309-.009.011.402.298Zm0 0-.402-.297-.001.001.403.296Zm-1.797 2.441-.402-.296-.002.003.404.293Zm-.166.115-.131-.482h-.001l.132.482Zm-12.411 2.683-.035.498.006.001.029-.499Zm-.221.07.318.386-.318-.386Zm-.111.204.496.061v-.001l-.496-.06Zm1.207 5.662.158-.474h-.001l-.157.474Zm16.629-2.66-.447-.224.447.224Zm1.12-1.693-.403-.297-.008.011.411.286Zm0 0 .402.296.008-.011-.41-.285Zm2.74-4.185.487.112a.501.501 0 0 0-.919-.364l.432.252Zm.263 12.446.462-.191-.002-.004-.46.195Zm.103.132.298-.402-.003-.002-.295.404Zm16.034-.557-.235-.442-.001.001.236.441Zm.167-.288-.5.016.5-.016Zm-.662-11.14.489-.101a.5.5 0 0 0-.987.149l.498-.048Zm5.511 23.572-.186.464.186-.464Zm5.321-.998.481.138-.481-.138Zm-9.479-37.416-.207.455c.043.02.089.033.137.04l.07-.495Zm-.533-.236-.495-.073a.5.5 0 0 0 .297.532l.198-.459Zm.159-2.171.488-.111a.502.502 0 0 0-.988.111h.5Zm0 0-.487.111a.5.5 0 0 0 .986-.077l-.499-.034Zm.042-1.247h.5-.5Zm-.794-5.27-.217-.451a.5.5 0 0 0-.259.603l.476-.152Zm-.205-.469a.021.021 0 0 1-.005.013l.761.649c.156-.183.242-.416.244-.657l-1-.005Zm-6.568-9.059c1.759 0 3.389.961 4.597 2.597 1.209 1.636 1.971 3.92 1.971 6.465h1c0-2.737-.818-5.234-2.166-7.059-1.349-1.825-3.252-3.003-5.402-3.003v1Zm-6.567 9.062c0-2.545.762-4.829 1.97-6.465 1.209-1.636 2.839-2.597 4.597-2.597v-1c-2.149 0-4.053 1.178-5.401 3.003-1.348 1.825-2.166 4.322-2.166 7.059h1Zm0 .026v-.026h-1v.026h1Zm.004.009c-.003-.003-.004-.007-.004-.012l-1 .006c.001.237.085.466.237.648l.767-.642Zm.006.005-.006-.005-.767.642c.091.109.203.196.328.259l.445-.896Zm-.509 5.696c0-1.836.276-3.566.763-5.096l-.953-.304c-.52 1.632-.81 3.466-.81 5.4h1Zm.04 1.213c-.027-.399-.04-.803-.04-1.213h-1c0 .432.014.859.043 1.28l.997-.067Zm.001.034v-.001h-1v.001h1Zm.114 1.809a14.448 14.448 0 0 1-.114-1.809h-1c0 .66.042 1.307.122 1.936l.992-.127Zm-9.035 12.506c2.716-3.691 7.588-10.312 8.942-12.145l-.805-.594c-1.354 1.834-6.227 8.456-8.943 12.146l.806.593Zm-.01.012-.786-.617.786.617Zm.008-.01.001-.001-.804-.595v.001l.803.595Zm-1.795 2.44 1.796-2.441-.805-.593-1.796 2.441.805.593Zm-.438.301a.802.802 0 0 0 .44-.304l-.809-.587a.187.187 0 0 1 .107-.074l.262.965Zm-12.571 2.699c.592.034 1.62-.114 2.786-.335a88.295 88.295 0 0 0 3.938-.863 212.158 212.158 0 0 0 5.847-1.501l-.263-.965c-.54.147-3.117.846-5.817 1.493-1.35.324-2.726.633-3.891.853-1.187.225-2.094.345-2.542.319l-.058.999Zm.126-.043a.181.181 0 0 1-.132.042l.071-.997a.812.812 0 0 0-.575.184l.636.771Zm.067-.122a.19.19 0 0 1-.067.122l-.636-.771a.81.81 0 0 0-.29.529l.993.12Zm.868 5.128c-.241-.08-.455-.291-.628-.686-.173-.396-.277-.916-.328-1.491-.102-1.145.018-2.378.088-2.95l-.993-.122c-.072.592-.202 1.908-.091 3.161.055.624.173 1.266.408 1.803.236.538.618 1.031 1.23 1.234l.314-.949Zm16.025-2.41c.022-.043.026-.018-.093.057a3.035 3.035 0 0 1-.47.226c-.419.169-1.003.347-1.711.526-1.413.359-3.266.709-5.17.999a71.89 71.89 0 0 1-5.427.63c-.793.056-1.49.084-2.045.078-.576-.007-.941-.05-1.108-.106l-.316.949c.331.11.839.15 1.412.157.594.006 1.32-.023 2.128-.081 1.617-.115 3.584-.346 5.507-.638 1.921-.293 3.809-.649 5.265-1.018.726-.184 1.359-.375 1.838-.568.239-.096.455-.198.629-.308.16-.1.351-.246.456-.456l-.895-.447Zm1.156-1.755c-.534.768-.985 1.413-1.156 1.755l.895.447c.129-.258.518-.82 1.082-1.631l-.821-.571Zm.008-.011.805.593-.805-.593Zm2.711-4.14c-.892 1.525-1.931 3.02-2.719 4.151l.821.571c.785-1.127 1.847-2.653 2.761-4.218l-.863-.504Zm1.155 12.503c-1.568-3.706-1.084-8.433-.236-12.139l-.975-.223c-.858 3.749-1.407 8.742.29 12.752l.921-.39Zm-.062-.077a.187.187 0 0 1 .064.081l-.924.382c.057.138.15.256.27.344l.59-.807Zm15.503-.594c-9.212 4.95-14.903 1.039-15.5.596l-.596.803c.797.591 6.909 4.673 16.569-.518l-.473-.881Zm-.072.07a.191.191 0 0 1 .073-.071l.47.883a.816.816 0 0 0 .322-.311l-.865-.501Zm-.025.099a.183.183 0 0 1 .025-.099l.865.501a.808.808 0 0 0 .109-.435l-.999.033Zm-.66-11.108c.435 4.539.626 10.016.66 11.108l.999-.032c-.034-1.093-.225-6.598-.664-11.171l-.995.095Zm6.195 23.06a.42.42 0 0 1 .143.094l.02.023.006.008-.003-.005a4.96 4.96 0 0 1-.207-.534 32.574 32.574 0 0 1-.514-1.804c-.4-1.531-.9-3.646-1.438-6.032-1.078-4.769-2.309-10.601-3.215-14.959l-.979.203c.906 4.36 2.139 10.198 3.218 14.977.54 2.388 1.042 4.516 1.447 6.064.202.773.381 1.409.531 1.863.074.226.145.419.211.565.033.072.071.148.115.214.027.041.12.182.293.251l.372-.928Zm4.655-.671c-.004.012-.023.06-.118.135a1.767 1.767 0 0 1-.437.23c-.396.153-.927.266-1.499.336-.568.07-1.152.095-1.639.082-.514-.013-.847-.066-.962-.112l-.372.928c.3.12.798.171 1.309.184.536.014 1.169-.013 1.786-.089.612-.075 1.234-.202 1.738-.397.252-.097.493-.219.693-.375.199-.156.382-.368.462-.647l-.961-.275Zm-9.069-36.784c-.126-.018-.197-.083-.207-.092-.016-.015-.017-.021-.004-.001.027.039.071.116.13.243.116.251.262.628.434 1.126.342.991.771 2.408 1.255 4.118.967 3.417 2.145 7.973 3.278 12.565a558.132 558.132 0 0 1 2.998 12.756c.391 1.773.704 3.273.91 4.364.103.546.177.984.221 1.301.022.158.035.279.041.365l.003.084c-.001.023-.003-.001.01-.045l.961.275a.813.813 0 0 0 .028-.205 2.058 2.058 0 0 0-.004-.174 6.69 6.69 0 0 0-.048-.437c-.047-.34-.125-.797-.229-1.349a159.899 159.899 0 0 0-.916-4.394 564.85 564.85 0 0 0-3.004-12.781c-1.134-4.596-2.315-9.165-3.287-12.598-.485-1.714-.92-3.153-1.272-4.172a13.632 13.632 0 0 0-.472-1.22 2.676 2.676 0 0 0-.213-.389.958.958 0 0 0-.146-.171.61.61 0 0 0-.326-.159l-.141.99Zm-.661-.272c.163.071.295.129.385.17l.104.046a.236.236 0 0 1 .026.012l.007.003h.001l.001.001.207-.455.208-.455h-.001l-.002-.001a34.162 34.162 0 0 0-.54-.239l-.396.918Zm-.143-2.63c0 .72-.053 1.421-.154 2.098l.99.147c.108-.725.164-1.476.164-2.245h-1Zm.988-.111-.975.222.975-.222Zm-.946-1.136c0 .41-.014.815-.041 1.214l.998.067c.029-.422.043-.849.043-1.281h-1Zm-.77-5.118c.491 1.535.77 3.274.77 5.118h1c0-1.944-.293-3.785-.818-5.423l-.952.305Zm.266-.608-.007.005.434.901c.127-.061.241-.148.334-.257l-.761-.649Z\" fill=\"#D3BA2A\"/></mask><g mask=\"url(#h)\" fill=\"#fff\" fill-opacity=\".7\"><path d=\"M143.56 115.838c.231-.817 1.586-3.677 1.109-4.149-1.626 0-2.121 1.859-2.541 2.879-.619 1.504-.821 3.784-.29 4.137.53.354 1.451-1.91 1.722-2.867Zm-2.233 31.077c-.169-1.772-.805-4.838-1.157-5.655-1.266 0-1.215 4.076-1.286 6.875-.07 2.8 1.346 6.593 1.979 6.826.633.233 1.308-1.586.464-2.869-.844-1.283.211-2.961 0-5.177Zm-19.705-1.401c-.82 0-3.972-.59-3.472-1.014 2.576-.274 10.41-1.955 11.789-2.439.573-.201 1.095 1.415 1.328 1.974.233.558-.559.838-1.956.465-1.397-.372-6.664 1.014-7.689 1.014Z\" style=\"mix-blend-mode:overlay\"/><path d=\"M133.493 141.499c-.554.672-1.929 1.707-2.275 2.532-.297 0-1.286-.941-1.286-1.337 0-.395 3.017-4.204 3.561-4.847.544-.643 3.462-4.451 3.462-3.363 0 1.088-2.77 6.174-3.462 7.015Zm9.339-16.656c-.048-.647.316-1.479.504-1.813.653.259.801 2.072.712 2.719-.089.648-.86.94-1.216.94s.059-1.036 0-1.846Zm-1.823-2.36c.092-1.443.601-2.719.781-3.008 1.414 0 .946 2.474.894 2.767-.114.648-.597 1.943-.597 3.405-.057.092-.818.613-.964.298-.269-.578-.228-1.676-.114-3.462Zm3.16-.34c-.573-.136-.922-.189-1.03-.423-.153-1.127.438-1.828.964-1.675.14.041 1.16.209 1.467.296.109.031.052 1.469-.197 1.802-.249.332-.422.187-1.204 0Zm3.708.27c-.043-.035-.012-.088-.01-.119.044-.138.117-.159.168-.164.041-.004.124.059.113.085-.018.044-.07.175-.108.206a.128.128 0 0 1-.163-.008Z\" style=\"mix-blend-mode:overlay\"/></g><g filter=\"url(#i)\"><circle cx=\"110.653\" cy=\"129.12\" r=\"32.142\" fill=\"#FFEEC4\" fill-opacity=\".15\"/></g><path d=\"M105.683 74.4s-.898 8.109-.449 9.67c.449 1.562-1.372 8.561-1.737 9.67-.2.61-1.744 10.582-1.744 11.475 0 1.708-1.317 7.851-1.729 7.866-.915.033-2.957-13.763-2.957-15.764 0-2.001-1.634-13.157-2.063-14.908-.43-1.75-.895-8.009-.895-8.009h11.574Z\" fill=\"#DAE8E8\"/><path d=\"M100.614 105.994c0 .616-.214 2.738-.321 3.722.578.835 1.476-4.943 1.476-5.905 0-.963.835-6.933.835-7.767 0-.835.834-4.43 1.669-5.328.667-.719.278-3.21 0-4.364-.278.042-.835.27-.835.834 0 .706-1.091 4.364-1.669 5.52-.577 1.155-.642 7.575-1.155 8.858-.514 1.284 0 3.659 0 4.43Z\" fill=\"#fff\"/><path d=\"M98.561 79.368c.382-.741.5-3.792.341-4.966h-3.127c-.382 0-.504 4.636-.673 5.624-.17.989.54 5.865.625 6.82.085.956.523 3.476.644 4.294.111.75.641 4.84.718 5.528.069.62 1.026-1.47 1.026-2.211v-5.19c0-.972-.281-4.395-.341-5.044s.31-3.928.787-4.855Z\" fill=\"#B3C7C7\" style=\"mix-blend-mode:multiply\"/><path d=\"M88.895 74.4s-.297 5.06-.746 6.562c-.448 1.503-.89 5.222-.89 6.773-.412 1.925-.478 6.03-.661 6.545-.178.5-1.424 6.976-1.424 7.708 0 1.399-.933 4.091-1.299 4.103-.406.014-.885-2.259-1.21-3.803-.259-1.236.074-2.547-.485-3.759-.56-1.212-.974-8.418-.974-11.279-.351-2.203-1.009-5.684-1.17-6.288-.38-1.434-.356-6.562-.356-6.562h9.215Zm29.999 0s-.335 5.758-.838 7.47c-.259.881-.116 2.79-.305 4.33-.177 1.446-.967 5.507-.967 6.363-.461 2.19-.966 6.055-.966 7.048 0 .993-1.101 5.357-1.101 6.191 0 1.592-1.047 4.656-1.457 4.67-.456.015-.546-1.316-.91-3.074-.291-1.407-.992-4.641-.992-5.533 0-.893-.988-8.066-.988-8.737 0-2.43-.235-2.906-.448-3.624-.802-2.697-.306-6.947-.486-7.635-.427-1.633-.883-7.469-.883-7.469h10.341Z\" fill=\"#DAE8E8\"/><path d=\"M114.214 99.562c.013.528.153 2.399.083 3.246.514.703 1.158-4.273 1.136-5.1-.021-.825.563-5.965.545-6.681-.018-.716.618-3.818 1.314-4.608.557-.631.168-2.759-.096-3.744-.238.043-.987.205-.974.69.015.605-.84 3.768-1.31 4.772-.47 1.004-.384 6.512-.796 7.625-.412 1.113.081 3.139.098 3.8Z\" fill=\"#fff\"/><path d=\"M112.118 79.89c.353-.881.147-3.892 0-5.288-.056-.586-1.922.059-2.275.059-.352 0-.392 4.96-.548 6.135-.157 1.175.838 6.963.916 8.1.079 1.135.799 4.935.799 5.836 0 .901.22 5.324.77 5.545.551.22.338-1.436.338-2.318v-6.17c0-1.156-.496-5.178-.551-5.949-.055-.771.111-4.848.551-5.95Z\" fill=\"#B3C7C7\" fill-opacity=\".5\" style=\"mix-blend-mode:multiply\"/><path d=\"M87.54 74.4s.788 10.163.394 12.12c-.394 1.958 1.206 10.731 1.526 12.121.176.765 1.532 13.263 1.532 14.383 0 2.14 1.157 9.84 1.519 9.858.804.042 2.598-17.249 2.598-19.758 0-2.508 1.436-16.49 1.813-18.685.377-2.195.785-10.039.785-10.039H87.54Z\" fill=\"#E9FFFF\"/><path d=\"M95.375 81.416c-.112-1.165.325-4.999.558-6.77.446-.445 1.369-.185 1.774 0-.084 1.897-.279 5.908-.38 6.77-.127 1.077-.887 7.278-.93 7.738-.042.46-.753 4.924-.753 6.242 0 .823-.353 3.953-.48 4.375-.127.421-.15 4.986-.257 5.815-.129.984-.657 7.063-.728 7.32-.07.257-.554 4.879-.642 5.179-.079.27-.603.718-.603-.098.302-3.396.907-10.352.907-11.01 0-.822.07-8.794 0-9.617-.07-.822.767-8.668.767-9.3 0-.633.906-5.189.767-6.644Z\" fill=\"#fff\"/><path d=\"M89.835 74.4h-2.2c-.339.766.338 4.47.338 6.214 0 1.745 0 5.71-.172 6.912-.115.801.475 4.78.606 5.408.133.633.7 4.095 1.053 5.793.238 1.145.687 6.662.784 6.109.097-.553.812-4.431.812-4.772 0-.34-.435-3.532-.484-4.596-.048-1.064-.676-9.107-.676-10.044 0-.936.336-3.575.046-4-.29-.426.29-4.044.29-4.852 0-.809-.01-2.172-.397-2.172Z\" fill=\"#A9CACA\" style=\"mix-blend-mode:multiply\"/><path d=\"M102.847 74.4s.42 6.214.683 7.054c.263.84.204 6.454.473 7.302.148.466 1.628 10.295 1.628 10.978 0 1.305.739 4.21 1.043 4.221.675.025 1.478-5.846 1.478-7.688 0-.905 1.126-6.694 1.419-8.982 0-2.679.472-5.582.472-6.356 0-1.523.263-6.529.263-6.529h-7.459Z\" fill=\"#E4FCFC\"/><path d=\"M105.736 75.934c.369-.91.962-1.31 1.212-1.395-.42-.133-2.427-.134-3.062-.134-.635 0-.991-.238-1.049.486-.057.723.658 6.537.816 7.399.133.719.256 5.533.409 6.768.046.372.468 3.045.776 4.268 0-1.67.205-5.332.205-6.076 0-.93.347-4.34.404-4.96.058-.62-.173-5.219.289-6.356Z\" fill=\"#B3C7C7\" fill-opacity=\".6\" style=\"mix-blend-mode:multiply\"/><path d=\"M117.246 74.4s.193 2.995.602 4.236c.409 1.24.511 4.587.641 5.41.13.821 1.212 5.156 1.212 5.566 0 .784.653 2.528.92 2.535.596.015 1.127-3.027 1.28-3.516.153-.489 1.118-4.237 1.376-5.61.212-1.132.581-3.421 1.054-4.385.473-.964.998-4.236.998-4.236h-8.083Z\" fill=\"#E9FFFF\"/><path d=\"M120.052 75.363c.37-.5 1.643-.906 1.893-.954h-3.633c-.667 0-1.096-.06-1.063.234.035.31.348 3.424.645 4.07.175.379.418 2.607.515 3.678.019.209.249 1.305.425 2.215 0-.919.206-3.038.206-3.448 0-.511.382-2.608.44-2.949.058-.34.11-2.22.572-2.846Z\" fill=\"#B3C7C7\" fill-opacity=\".6\" style=\"mix-blend-mode:multiply\"/><path d=\"M118.062 79.561c.461-.615.985.553 1.028 1.498.043.946.421 3.882.679 4.183.258.3.783 1.69 1.209.978.72-1.206 2.348-6.936 2.604-6.778.352.218.129 1.316 0 1.618-.059.138-.452 2.487-1.071 4.896-.722 2.81-1.556 6.078-1.759 6.078-.57 0-1.018-2.573-1.274-3.907l-.078-.332c-.194-.775-.652-2.404-.894-3.854-.22-2.275-.325-3.79-.444-4.38Z\" fill=\"#fff\"/><path d=\"M80.208 80.32c.615-1.228 1.464.906 1.522 2.795.057 1.89.562 7.753.906 8.354.344.6.08 3.194 1.613 3.194.762 0 3.134-15.095 3.475-14.779.47.435.172 2.188 0 2.79-.08.277-.958 5.994-1.355 10.962-.304 1.772-.697 2.895-1 4.615-.656 3.729-1.235 6.787-1.42 6.787-.762 0-1.36-5.14-1.702-7.806a25.09 25.09 0 0 1-.114-1.23l-.403-4.353c-.293-4.545-1.343-10.34-1.522-11.328Z\" fill=\"#B3C7C7\" fill-opacity=\".5\" style=\"mix-blend-mode:multiply\"/><path d=\"M107.503 96.796c-.118.651-.389 2.916-.51 3.968-.517.817.025-5.385.209-6.402.183-1.017.803-7.415.962-8.296.159-.882.326-4.772-.021-5.814-.277-.834.439-3.42.832-4.61.164.077.466.379.358.976-.134.745-.154 4.73-.016 6.016.138 1.284-1.045 8.071-.971 9.485.074 1.413-.697 3.864-.843 4.677Z\" fill=\"#fff\"/><defs><filter id=\"c\" x=\"101.664\" y=\"117.87\" width=\"22.162\" height=\"22.686\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".5\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"d\" x=\"92.664\" y=\"108.87\" width=\"40.162\" height=\"40.685\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\"5\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"e\" x=\"100.664\" y=\"116.87\" width=\"24.162\" height=\"24.686\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\"1\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"f\" x=\"106.317\" y=\"125.412\" width=\"13.194\" height=\"15.369\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\"1\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"i\" x=\"63.511\" y=\"81.977\" width=\"94.284\" height=\"94.284\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\"7.5\" result=\"effect1_foregroundBlur\"/></filter></defs></svg>");
+          case 3:
+            _yield$client$fetchQu = _context.sent;
+            extension_installed = _yield$client$fetchQu.data.extension_installed;
+            return _context.abrupt("return", Boolean(extension_installed));
 
-/***/ }),
-/* 982 */
-/***/ (function(module, exports) {
+          case 8:
+            _context.prev = 8;
+            _context.t0 = _context["catch"](0);
+            return _context.abrupt("return", false);
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M61.3057 75.9688H159.306V85.0303H61.3057V75.9688Z\" fill=\"#660000\"/>\n| <circle cx=\"110.307\" cy=\"97.8012\" r=\"26.9765\" fill=\"#DD6565\"/>");
+          case 11:
+          case "end":
+            return _context.stop();
+        }
+      }
+    }, _callee, null, [[0, 8]]);
+  }));
 
-/***/ }),
-/* 983 */
-/***/ (function(module, exports) {
+  return function hasExtensionInstalledAttribute(_x) {
+    return _ref.apply(this, arguments);
+  };
+}();
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g opacity=\"0.22\" filter=\"url(#filter0_f)\">\n| <ellipse cx=\"113.844\" cy=\"196.113\" rx=\"64.4507\" ry=\"9.11322\" fill=\"white\"/>");
+exports.hasExtensionInstalledAttribute = hasExtensionInstalledAttribute;
 
 /***/ }),
-/* 984 */
-/***/ (function(module, exports) {
-
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <path d=\"M153.928 152.995c-2.556-.731-4.108-3.043-4.564-4.108 0-1.141 2.966-.913 3.879 1.141.913 2.054 2.967 2.282 4.564 2.967 1.598.684 2.511 1.369 4.336 2.966 1.826 1.598 6.847 1.141 5.934 2.283-.913 1.141-7.987-.457-8.9-2.283-.913-1.825-2.054-2.053-5.249-2.966Z\" fill=\"#33887E\"/>");
+/* 836 */
+/***/ (function(module, exports, __webpack_require__) {
 
-/***/ }),
-/* 985 */
-/***/ (function(module, exports) {
+"use strict";
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"220\" viewBox=\"0 0 220 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <g opacity=\".85\">");
 
-/***/ }),
-/* 986 */
-/***/ (function(module, exports) {
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.isMagicLink = exports.isOIDC = void 0;
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <path fill=\"#000816\" d=\"M15.455 20.497H191.82v178.894H15.455z\"/>");
+/**
+ * Checks if the instance can auth with OIDC
+ *
+ * @param {import("../CozyClient").default} client - The CozyClient instance
+ * @returns {boolean} - Returns true if the instance can auth with OIDC
+ */
+var isOIDC = function isOIDC(client) {
+  var _client$capabilities$;
 
-/***/ }),
-/* 987 */
-/***/ (function(module, exports) {
+  return (_client$capabilities$ = client.capabilities.can_auth_with_oidc) !== null && _client$capabilities$ !== void 0 ? _client$capabilities$ : false;
+};
+/**
+ * Checks if the instance can auth with magic link
+ *
+ * @param {import("../CozyClient").default} client - The CozyClient instance
+ * @returns {boolean} - Returns true if the instance can auth with magic link
+ */
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M92.988 93.633c-4.032 4.323-15.111 15.411-20.235 14.143-5.124-1.267-7.856-19.149-7.856-20.622\" stroke=\"#FFDDBD\" stroke-width=\"5.517\"/><path d=\"M64.897 87.154c0 .789.783 6.284 2.298 11.413\" stroke=\"#CEA47D\" stroke-width=\"5.517\" stroke-linecap=\"round\"/><path d=\"M57.152 88.16c1.868 1.12 8.873.155 12.143-.468 3.269-4.67-4.67-7.472-7.473-7.472-2.802 0-5.137 1.401-6.538 1.401-1.4 0-5.137-1.868-5.137 0s4.67 5.137 7.005 6.538Z\" fill=\"#C9804A\"/><path d=\"M67.608 88.471c-.686-.522-.919-1.37-.52-1.893l.869-1.142c.398-.523 1.277-.524 1.963-.002.686.522.919 1.37.52 1.893l-.869 1.142c-.398.523-1.277.524-1.963.002Zm-14.609-4.828c-.747.431-1.619.319-1.948-.25l-.717-1.244c-.329-.57.01-1.38.756-1.811.746-.431 1.618-.319 1.947.25l.718 1.244c.328.57-.01 1.38-.756 1.811Zm6.144 5.847c-.81-.296-1.273-1.06-1.037-1.706l2.026-5.526c.237-.645 1.085-.928 1.894-.631.81.297 1.273 1.06 1.037 1.706l-2.026 5.526c-.237.645-1.085.928-1.894.631Zm-3.549-.397c-.832-.225-1.37-.91-1.203-1.53l1.304-4.823c.167-.62.978-.94 1.81-.715.832.225 1.37.91 1.203 1.53l-1.304 4.823c-.168.62-.978.94-1.81.715Zm7.322-.513c-.696-.51-.933-1.37-.53-1.922l1.752-2.399c.403-.552 1.295-.588 1.99-.08.697.508.934 1.368.53 1.92l-1.75 2.4c-.404.552-1.296.588-1.992.08Z\" fill=\"#FFDDBD\"/><path d=\"M127.318 93.633c4.032 4.323 15.111 15.411 20.235 14.143 5.124-1.267 7.856-19.149 7.856-20.622\" stroke=\"#FFDDBD\" stroke-width=\"5.517\"/><path d=\"M155.409 87.154c0 .789-.783 6.284-2.298 11.413\" stroke=\"#CEA47D\" stroke-width=\"5.517\" stroke-linecap=\"round\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M97.48 85.595a4.59 4.59 0 0 1 2.233-1.435l5.85-1.67a14.709 14.709 0 0 1 7.832-.07l6.664 1.777c.838.223 1.57.67 2.138 1.264a1.84 1.84 0 0 1 2.059.13l8.9 6.884a.92.92 0 0 1 .165 1.29l-5.16 6.673a.92.92 0 0 1-1.29.165l-3.419-2.644-.076 35.52H96.192l.146-35.125-3.252 2.516a.919.919 0 0 1-1.29-.165l-5.16-6.672a.92.92 0 0 1 .164-1.29l8.9-6.884a1.838 1.838 0 0 1 1.78-.264Z\" fill=\"#DCDCDC\"/><path opacity=\".5\" d=\"M120.708 88.055a.46.46 0 0 1-.263-.744l1.22-1.473a1.84 1.84 0 0 1 2.544-.28l6.657 5.166c.434.337.018 1.014-.479.779l-3.682-1.745a16.552 16.552 0 0 0-3.84-1.271l-2.157-.432Zm-24.315.522a4.598 4.598 0 0 1 3.335-4.421l5.835-1.667a14.71 14.71 0 0 1 7.832-.07l6.099 1.627c.95.253.894 1.62-.074 1.793l-11.731 2.112a5.519 5.519 0 0 0-3.755 2.594l-7.54 12.58V88.577Z\" fill=\"#0260EE\"/><path d=\"M119.525 121.367c.486-.713.762-1.55.795-2.413l.726-18.873c.242-1.487 2.434-1.31 2.434.197v24.679a3.862 3.862 0 0 1-3.861 3.862h-3.435a.92.92 0 0 1-.76-1.438l4.101-6.014Z\" fill=\"#C4C4C4\"/><path d=\"m96.192 133.479 5.303 66.165h4.339l1.9-51.321c.017-.48.273-.925.676-1.187a1.455 1.455 0 0 1 2.252 1.202l.475 51.306 4.338 1.408 7.901-67.573H96.192Z\" fill=\"#B67D55\"/><path d=\"m123.309 133.479-7.633 65.243h-4.727l-1.592-51.12a1.613 1.613 0 0 0-.745-1.312c-.465-.297-.786-.81-.768-1.362.032-.96.42-2.167 2.951-2.861 3.562-.976 6.168-6.09 7.144-8.588h5.37Z\" fill=\"#92552A\"/><path d=\"M110.172 197.945h6.063v4.49h4.322c4.56 0 8.256 3.351 8.256 6.434 0 2.601-5.69 2.34-8.864 2.195-.59-.027-1.093-.05-1.456-.05-1.161 0-1.613-.536-2.064-1.072-.452-.537-.903-1.073-2.064-1.073-1.14 0-2.064.961-2.064 2.145h-2.129v-13.069Z\" fill=\"#545F7C\"/><path d=\"M107.066 197.945h-6.316v4.49h-4.501c-4.75 0-8.6 3.351-8.6 6.434 0 2.601 5.292 2.34 8.6 2.195a39.35 39.35 0 0 1 1.516-.05c1.21 0 1.68-.536 2.15-1.072.47-.537.94-1.073 2.15-1.073 1.187 0 2.15.961 2.15 2.145h2.851v-13.069Z\" fill=\"#6E7B9D\"/><path d=\"M105.714 70.719h7.856v12.275c0 1.356-.879 2.455-1.964 2.455h-3.928c-1.085 0-1.964-1.1-1.964-2.455V70.719Z\" fill=\"#FFDDBD\"/><rect x=\"105.714\" y=\"71.701\" width=\"7.856\" height=\"9.82\" rx=\"1.839\" fill=\"#C9804A\"/><path d=\"M163.154 88.16c-1.868 1.12-8.873.155-12.142-.468-3.269-4.67 4.67-7.472 7.472-7.472 2.802 0 5.137 1.401 6.538 1.401 1.401 0 5.138-1.868 5.138 0s-4.671 5.137-7.006 6.538Z\" fill=\"#C9804A\"/><path d=\"M152.698 88.471c.686-.522.919-1.37.521-1.893l-.87-1.142c-.398-.523-1.277-.524-1.963-.002-.686.522-.919 1.37-.52 1.893l.869 1.142c.398.523 1.277.524 1.963.002Zm14.61-4.828c.746.431 1.618.319 1.947-.25l.717-1.244c.329-.57-.009-1.38-.756-1.811-.746-.431-1.618-.319-1.947.25l-.717 1.244c-.329.57.009 1.38.756 1.811Zm-6.145 5.847c.809-.296 1.274-1.06 1.037-1.706l-2.026-5.526c-.237-.645-1.085-.928-1.894-.631-.809.297-1.273 1.06-1.037 1.706l2.026 5.526c.237.645 1.085.928 1.894.631Zm3.549-.397c.832-.225 1.371-.91 1.203-1.53l-1.304-4.823c-.167-.62-.978-.94-1.81-.715-.832.225-1.37.91-1.203 1.53l1.304 4.823c.168.62.978.94 1.81.715Zm-7.322-.513c.696-.51.933-1.37.53-1.922l-1.752-2.399c-.403-.552-1.294-.588-1.991-.08-.696.508-.933 1.368-.53 1.92l1.752 2.4c.403.552 1.295.588 1.991.08Z\" fill=\"#FFDDBD\"/><g filter=\"url(#a)\"><path d=\"M125.812 74.333c-2.466 2.06-11.633 5.176-23.023 2.372-16.954-4.174-22.726-18.9-23.584-25.389 1.73.962 6.248 3.027 10.475 3.592-3.534-4.855-6.008-16.14-4.647-26.317 2.995 2.631 9.997 3.196 13.124 3.15-3.156-3.21-9.133-12.137-7.792-22.157 9.911 9.294 19.684 6.219 25.423 10.97 5.739 4.752 2.397 8.886 6.086 15.555.044-5.094 3.833-12.767 5.722-15.967 0 0 .478 9.824 2.251 14.443 1.772 4.62 5.973 5.978 6.374 13.402.321 5.94-4.934 14.545-7.601 18.106 1.396-.012 5.386-.953 10.178-4.614-1.098 5.231-10.519 10.793-12.986 12.854Z\" fill=\"#0260EE\"/></g><g filter=\"url(#b)\"><path d=\"M125.812 74.333c-2.466 2.06-11.633 5.176-23.023 2.372-16.954-4.174-22.726-18.9-23.584-25.389 1.73.962 6.248 3.027 10.475 3.592-3.534-4.855-6.008-16.14-4.647-26.317 2.995 2.631 9.997 3.196 13.124 3.15-3.156-3.21-9.133-12.137-7.792-22.157 9.911 9.294 19.684 6.219 25.423 10.97 5.739 4.752 2.397 8.886 6.086 15.555.044-5.094 3.833-12.767 5.722-15.967 0 0 .478 9.824 2.251 14.443 1.772 4.62 5.973 5.978 6.374 13.402.321 5.94-4.934 14.545-7.601 18.106 1.396-.012 5.386-.953 10.178-4.614-1.098 5.231-10.519 10.793-12.986 12.854Z\" fill=\"#007BED\"/></g><g filter=\"url(#c)\"><path d=\"M115.952 73.148c-1.154 1.158-5.387 2.975-10.565 1.58-7.707-2.078-10.169-10.065-10.483-13.605.78.506 2.823 1.58 4.75 1.838-1.558-2.613-2.552-8.759-1.805-14.343 1.338 1.403 4.535 1.627 5.967 1.563-1.405-1.718-4.031-6.53-3.296-12.028 4.423 4.964 8.932 3.163 11.5 5.692 2.568 2.53.989 4.833 2.596 8.437.082-2.788 1.909-7.032 2.813-8.806 0 0 .099 5.37.854 7.875.754 2.506 2.66 3.198 2.753 7.255.074 3.246-2.435 8.02-3.699 10 .639-.024 2.476-.587 4.714-2.65-.566 2.877-4.945 6.035-6.099 7.192Z\" fill=\"#7BF7FF\"/></g><path d=\"M79.947 64.205c2.379-2.681 7.525-8.303 9.082-9.341 1.946-1.298 4.411-2.466 7.525 1.037m41.97 8.304c-2.378-2.681-7.525-8.303-9.082-9.341-1.946-1.298-4.411-2.466-7.525 1.037\" stroke=\"#65687D\" stroke-width=\"1.839\" stroke-linecap=\"round\"/><circle cx=\"92.585\" cy=\"68.682\" fill=\"#F0FDFF\" fill-opacity=\".55\" r=\"12.131\"/><ellipse cx=\"125.702\" cy=\"68.774\" rx=\"12.154\" ry=\"11.546\" fill=\"#F0FDFF\" fill-opacity=\".55\"/><path d=\"M114.888 66.148c-.535 0-1.003-.34-1.279-.798a5.097 5.097 0 0 0-4.374-2.476 5.097 5.097 0 0 0-4.374 2.476c-.276.459-.743.798-1.278.798-.842 0-1.459-.798-1.082-1.55a7.532 7.532 0 0 1 13.468 0c.378.752-.24 1.55-1.081 1.55Z\" fill=\"#9EA7BD\"/><rect x=\"78.909\" y=\"62.259\" width=\"4.862\" height=\"3.646\" rx=\".92\" fill=\"#9EA7BD\"/><rect x=\"134.7\" y=\"62.259\" width=\"4.862\" height=\"3.646\" rx=\".92\" fill=\"#9EA7BD\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M90.262 67.13a4.254 4.254 0 1 1-.575 1.36 4.286 4.286 0 0 1 .575-1.36Zm30.368.027a4.254 4.254 0 0 1 7.657 1.03 4.239 4.239 0 0 1-.816 3.997 4.244 4.244 0 0 1-3.25 1.51 4.241 4.241 0 0 1-3.094-1.335l-.024-.025a4.239 4.239 0 0 1-1.136-2.894 4.227 4.227 0 0 1 .663-2.282Z\" fill=\"#000\"/><path d=\"m90.866 58.11 5.948 1.243-11.711 17.42-3.294-5.035 9.057-13.628Zm33.094 0 5.948 1.243-11.712 17.42-3.293-5.035 9.057-13.628Zm-26.282 1.95 2.255 1.093-12.556 18.484-1.66-.968 11.96-18.608Zm33.094 0 2.255 1.093-12.555 18.484-1.661-.968 11.961-18.608Z\" opacity=\".65\" fill=\"#EAFCFF\"/><path d=\"M103.797 68.681c0 6.192-5.02 11.212-11.212 11.212s-11.211-5.02-11.211-11.212 5.02-11.211 11.211-11.211c6.193 0 11.212 5.02 11.212 11.211Zm33.094 0c0 6.192-5.019 11.212-11.211 11.212s-11.212-5.02-11.212-11.212 5.02-11.211 11.212-11.211 11.211 5.02 11.211 11.211Z\" stroke=\"#9EA7BD\" stroke-width=\"1.839\"/><g filter=\"url(#d)\" fill=\"#0260EE\"><path d=\"M156.288 40.276c-2.356 3.142 0 4.489 1.473 4.91 3.438.982 4.419-1.964 4.91-4.42.393-1.963-1.145-7.037-1.964-9.328-.491 1.636-2.062 5.695-4.419 8.838Zm-1.215-5.298c1.307 1.467 1.248 2.09 1.055 2.217.706-.19.652-1.338-.33-2.32-1.243-1.243-.367-2.496-.044-3.266-.772.512-1.988 1.903-.681 3.37Z\"/></g><path d=\"M158.597 46.168h-.236a.322.322 0 0 0-.2.058c-.611.471-.574 2.314-.448 3.484a.436.436 0 0 0 .438.386c.4 0 .728-.587.678-.984-.092-.729.053-1.633.228-2.332.077-.304-.147-.612-.46-.612Z\" fill=\"#5C3F2E\"/><rect x=\"153.833\" y=\"67.773\" width=\"8.838\" height=\"7.856\" rx=\"3.928\" fill=\"#916F57\"/><rect x=\"153.833\" y=\"49.114\" width=\"8.838\" height=\"24.551\" rx=\"1.839\" fill=\"#F1ECD9\"/><path opacity=\".5\" d=\"M156.617 50.894c-.958-.359-.701-1.78.323-1.78h3.892c1.016 0 1.839.823 1.839 1.839v7.453c0 .526-.739.64-.898.139l-1.643-5.204a2.76 2.76 0 0 0-1.662-1.753l-1.851-.694Z\" fill=\"#0260EE\"/><path d=\"m163.163 62.862-1.191-3.175a1.16 1.16 0 0 0-2.246.407v4.687a2.01 2.01 0 1 0 3.891-.706l-.454-1.213Zm-10.641-6.541 1.164-2.91a.586.586 0 0 1 1.129.217v3.135a1.189 1.189 0 1 1-2.293-.442Zm.329 11.294v1.14a1.964 1.964 0 1 0 3.928 0v-5.376c0-.943-1.25-1.275-1.718-.456l-1.801 3.152c-.268.469-.409 1-.409 1.54Z\" fill=\"#F1ECD9\"/><g filter=\"url(#e)\"><path d=\"M157.761 42.24c-.393 1.178.164 1.8.491 1.964 3.928.982 3.765-5.074 2.946-7.365.393 1.57-.818 3.273-1.473 3.928 0-.393-.654-.819-.982-1.473-.163.818-.589 1.767-.982 2.946Z\" fill=\"#7BF7FF\"/></g><g filter=\"url(#f)\" fill=\"#0260EE\"><path d=\"M156.288 40.276c-2.356 3.142 0 4.489 1.473 4.91 3.438.982 4.419-1.964 4.91-4.42.393-1.963-1.145-7.037-1.964-9.328-.491 1.636-2.062 5.695-4.419 8.838Zm-1.215-5.298c1.307 1.467 1.248 2.09 1.055 2.217.706-.19.652-1.338-.33-2.32-1.243-1.243-.367-2.496-.044-3.266-.772.512-1.988 1.903-.681 3.37Z\"/></g><path d=\"m156.003 69.065-1.371.548a.49.49 0 0 0 .317.927l1.99-.569a1.62 1.62 0 0 0 1.093-1.046l.496-1.49a.49.49 0 0 0-.902-.374l-.473.945a2.2 2.2 0 0 1-1.15 1.059Zm5.846-2.845.487-.244a.607.607 0 0 0-.271-1.15h-.088a.694.694 0 0 1-.491-.203l-.208-.208a.807.807 0 0 0-1.292.932l.151.302c.315.63 1.082.886 1.712.57Zm-7.485-10.006-.835.417a.547.547 0 1 0 .682.817l1.031-1.374a.536.536 0 0 0 .09-.19l.307-1.228c.044-.177-.173-.3-.303-.171a.179.179 0 0 0-.043.07l-.318.954c-.102.307-.322.56-.611.705Z\" fill=\"#906F57\"/><path opacity=\".5\" d=\"M154.324 54.024c0-.327.098-.982.491-.982.491 0-.491 1.473-.491.982Zm-.465 12.662.336-1.345a.68.68 0 1 1 1.304.38l-.554 1.661a.571.571 0 0 1-1.112-.18v-.304c0-.071.009-.143.026-.212Zm6.273-5.788h-.897a.49.49 0 1 0 0 .982h.796c.415 0 .794.234.979.605l.319.637a.581.581 0 1 0 .931-.671l-1.146-1.146a1.387 1.387 0 0 0-.982-.407Z\" fill=\"#0260EE\"/><g filter=\"url(#g)\"><path d=\"M37.526 101.161c2.356 3.143 0 4.49-1.473 4.91-3.438.982-4.42-1.964-4.91-4.419-.393-1.964 1.145-7.037 1.963-9.329.491 1.637 2.063 5.696 4.42 8.838Z\" fill=\"#0260EE\"/></g><path d=\"M35.843 107.054h-.236a.326.326 0 0 0-.2.057c-.61.472-.574 2.314-.447 3.485a.436.436 0 0 0 .437.386c.4 0 .729-.588.679-.984-.092-.729.052-1.633.228-2.332a.488.488 0 0 0-.46-.612Z\" fill=\"#5C3F2E\"/><rect x=\"31.08\" y=\"128.658\" width=\"8.838\" height=\"7.856\" rx=\"3.928\" fill=\"#916F57\"/><rect x=\"31.08\" y=\"109.999\" width=\"8.838\" height=\"24.551\" rx=\"1.839\" fill=\"#F1ECD9\"/><path opacity=\".5\" d=\"M33.864 111.78c-.959-.36-.701-1.781.323-1.781h3.892a1.84 1.84 0 0 1 1.839 1.839v7.454c0 .526-.74.64-.898.138l-1.644-5.204a2.76 2.76 0 0 0-1.662-1.752l-1.85-.694Z\" fill=\"#0260EE\"/><path d=\"m40.41 123.748-1.191-3.176a1.16 1.16 0 0 0-2.247.408v4.686a2.01 2.01 0 1 0 3.892-.706l-.455-1.212Zm-10.642-6.541 1.165-2.911a.585.585 0 0 1 1.129.217v3.135a1.19 1.19 0 1 1-2.294-.441Zm.33 11.293v1.14a1.964 1.964 0 1 0 3.928 0v-5.376c0-.943-1.25-1.275-1.718-.456l-1.801 3.152c-.268.469-.41 1-.41 1.54Z\" fill=\"#F1ECD9\"/><g filter=\"url(#h)\"><path d=\"M36.053 103.126c.393 1.178-.163 1.8-.49 1.964-3.929.982-3.765-5.074-2.947-7.365-.393 1.57.819 3.273 1.473 3.928 0-.393.655-.819.982-1.473.164.818.59 1.767.982 2.946Z\" fill=\"#7BF7FF\"/></g><g filter=\"url(#i)\"><path d=\"M37.526 101.161c2.356 3.143 0 4.49-1.473 4.91-3.438.982-4.42-1.964-4.91-4.419-.393-1.964 1.145-7.037 1.963-9.329.491 1.637 2.063 5.696 4.42 8.838Z\" fill=\"#0260EE\"/></g><path d=\"m33.25 129.951-1.371.548a.49.49 0 0 0 .317.927l1.99-.569a1.62 1.62 0 0 0 1.092-1.046l.497-1.49a.49.49 0 0 0-.902-.374l-.473.945a2.2 2.2 0 0 1-1.15 1.059Zm5.846-2.846.487-.243a.607.607 0 0 0-.272-1.15h-.087a.692.692 0 0 1-.491-.204l-.208-.207a.806.806 0 0 0-1.293.931l.151.303c.316.63 1.082.885 1.713.57Zm-7.486-10.006-.834.417a.547.547 0 1 0 .682.817l1.03-1.374a.528.528 0 0 0 .09-.189l.308-1.228c.044-.178-.174-.301-.303-.172a.18.18 0 0 0-.044.071l-.318.954c-.102.306-.322.56-.61.704Z\" fill=\"#906F57\"/><path opacity=\".5\" d=\"M31.57 114.91c0-.328.099-.982.492-.982.49 0-.491 1.473-.491.982Zm-.464 12.662.336-1.345a.68.68 0 1 1 1.304.379l-.554 1.662a.57.57 0 0 1-1.112-.181v-.303c0-.072.009-.143.026-.212Zm6.273-5.788h-.898a.491.491 0 0 0 0 .982h.797c.414 0 .793.234.979.605l.318.637a.582.582 0 1 0 .932-.671l-1.146-1.146a1.387 1.387 0 0 0-.982-.407Z\" fill=\"#0260EE\"/><g filter=\"url(#j)\"><path d=\"M191.641 101.161c2.357 3.143 0 4.49-1.473 4.91-3.437.982-4.419-1.964-4.91-4.419-.174-.87.031-2.35.384-3.928.199-1.473.794-4.615 1.58-5.4.274.912.883 2.578 1.778 4.418.347.715 1.72-2.697 2.15-1.964-.982 2.455-.041 5.674.491 6.383Z\" fill=\"#0260EE\"/><g filter=\"url(#k)\"><path d=\"M191.641 101.161c2.357 3.143 0 4.49-1.473 4.91-3.437.982-4.419-1.964-4.91-4.419-.174-.87.031-2.35.384-3.928.199-1.473.794-4.615 1.58-5.4.274.912.883 2.578 1.778 4.418.347.715 1.72-2.697 2.15-1.964-.982 2.455-.041 5.674.491 6.383Z\" fill=\"#0260EE\"/></g></g><path d=\"M189.333 107.054h.235c.072 0 .144.014.2.057.611.472.575 2.314.448 3.485a.436.436 0 0 1-.437.386c-.4 0-.729-.588-.679-.984.092-.729-.053-1.633-.228-2.332a.488.488 0 0 1 .461-.612Z\" fill=\"#5C3F2E\"/><rect width=\"8.838\" height=\"7.856\" rx=\"3.928\" transform=\"matrix(-1 0 0 1 194.096 128.658)\" fill=\"#916F57\"/><rect width=\"8.838\" height=\"24.551\" rx=\"1.839\" transform=\"matrix(-1 0 0 1 194.096 109.999)\" fill=\"#F1ECD9\"/><path opacity=\".5\" d=\"M191.312 111.78c.959-.36.701-1.781-.323-1.781h-3.892a1.84 1.84 0 0 0-1.839 1.839v7.454c0 .526.74.64.898.138l1.643-5.204a2.764 2.764 0 0 1 1.662-1.752l1.851-.694Z\" fill=\"#0260EE\"/><path d=\"m184.767 123.748 1.19-3.176a1.161 1.161 0 0 1 2.247.408v4.686a2.01 2.01 0 1 1-3.892-.706l.455-1.212Zm10.641-6.541-1.165-2.911a.584.584 0 0 0-1.129.217v3.135a1.19 1.19 0 1 0 2.294-.441Zm-.33 11.293v1.14a1.964 1.964 0 1 1-3.928 0v-5.376c0-.943 1.25-1.275 1.718-.456l1.801 3.152c.268.469.409 1 .409 1.54Z\" fill=\"#F1ECD9\"/><g filter=\"url(#l)\"><path d=\"M191.641 102.635c.393 1.178-1.636 2.291-1.964 2.455-3.928.982-3.764-5.074-2.946-7.365-.393 2.749.818 5.073 1.473 5.892.491.491 3.044-2.161 3.437-.982Z\" fill=\"#7BF7FF\"/></g><path d=\"m191.926 129.951 1.371.548a.49.49 0 0 1-.317.927l-1.99-.569a1.623 1.623 0 0 1-1.093-1.046l-.496-1.49a.49.49 0 0 1 .902-.374l.473.945a2.2 2.2 0 0 0 1.15 1.059Zm-5.846-2.846-.487-.243a.606.606 0 0 1 .271-1.15h.088a.692.692 0 0 0 .491-.204l.208-.207a.805.805 0 0 1 1.292.931l-.151.303a1.276 1.276 0 0 1-1.712.57Zm7.486-10.006.834.417a.547.547 0 1 1-.682.817l-1.031-1.374a.532.532 0 0 1-.09-.189l-.307-1.228c-.044-.178.173-.301.303-.172a.18.18 0 0 1 .044.071l.317.954c.103.306.323.56.612.704Z\" fill=\"#906F57\"/><path opacity=\".5\" d=\"M193.605 114.91c0-.328-.098-.982-.491-.982-.491 0 .491 1.473.491.982Zm.465 12.662-.337-1.345a.678.678 0 1 0-1.303.379l.554 1.662a.571.571 0 0 0 1.112-.181v-.303a.885.885 0 0 0-.026-.212Zm-6.273-5.788h.898a.491.491 0 0 1 0 .982h-.797c-.415 0-.794.234-.979.605l-.319.637a.581.581 0 1 1-.931-.671l1.146-1.146c.26-.261.613-.407.982-.407Z\" fill=\"#0260EE\"/><g filter=\"url(#m)\"><path d=\"M62.995 40.276c2.357 3.142 0 4.49-1.473 4.91-3.437.982-4.419-1.964-4.91-4.42-.174-.87.031-2.35.385-3.927.199-1.473.794-4.616 1.58-5.401.273.912.883 2.578 1.777 4.419.348.714 1.72-2.698 2.15-1.964-.982 2.455-.04 5.673.491 6.383Z\" fill=\"#0260EE\"/><g filter=\"url(#n)\"><path d=\"M62.995 40.276c2.357 3.142 0 4.49-1.473 4.91-3.437.982-4.419-1.964-4.91-4.42-.174-.87.031-2.35.385-3.927.199-1.473.794-4.616 1.58-5.401.273.912.883 2.578 1.777 4.419.348.714 1.72-2.698 2.15-1.964-.982 2.455-.04 5.673.491 6.383Z\" fill=\"#0260EE\"/></g></g><path d=\"M60.687 46.168h.236c.071 0 .143.014.2.058.61.471.574 2.314.447 3.484a.436.436 0 0 1-.437.386c-.4 0-.729-.587-.678-.984.091-.729-.053-1.633-.229-2.332-.076-.304.147-.612.461-.612Z\" fill=\"#5C3F2E\"/><rect width=\"8.838\" height=\"7.856\" rx=\"3.928\" transform=\"matrix(-1 0 0 1 65.45 67.773)\" fill=\"#916F57\"/><rect width=\"8.838\" height=\"24.551\" rx=\"1.839\" transform=\"matrix(-1 0 0 1 65.45 49.114)\" fill=\"#F1ECD9\"/><path opacity=\".5\" d=\"M62.666 50.894c.959-.359.701-1.78-.322-1.78H58.45a1.84 1.84 0 0 0-1.839 1.839v7.453c0 .526.74.64.898.139l1.644-5.204a2.759 2.759 0 0 1 1.662-1.753l1.85-.694Z\" fill=\"#0260EE\"/><path d=\"m56.121 62.862 1.19-3.175a1.16 1.16 0 0 1 2.247.407v4.687a2.01 2.01 0 1 1-3.892-.706l.455-1.213Zm10.641-6.541-1.164-2.91a.586.586 0 0 0-1.13.217v3.135a1.19 1.19 0 1 0 2.294-.442Zm-.329 11.294v1.14a1.964 1.964 0 1 1-3.929 0v-5.376c0-.943 1.25-1.275 1.718-.456l1.802 3.152c.268.469.409 1 .409 1.54Z\" fill=\"#F1ECD9\"/><g filter=\"url(#o)\"><path d=\"M62.996 41.75c.392 1.178-1.637 2.29-1.964 2.454-3.928.982-3.765-5.074-2.946-7.365-.393 2.75.818 5.074 1.473 5.892.49.491 3.044-2.16 3.437-.982Z\" fill=\"#7BF7FF\"/></g><path d=\"m63.28 69.065 1.371.548a.49.49 0 0 1-.317.927l-1.99-.568a1.622 1.622 0 0 1-1.092-1.047l-.497-1.49a.49.49 0 0 1 .903-.374l.472.946a2.2 2.2 0 0 0 1.15 1.058Zm-5.845-2.845-.488-.244a.607.607 0 0 1 .272-1.15h.087a.693.693 0 0 0 .491-.203l.208-.208a.807.807 0 0 1 1.293.932l-.151.302a1.276 1.276 0 0 1-1.712.57Zm7.485-10.006.834.417a.547.547 0 1 1-.682.817l-1.03-1.374a.531.531 0 0 1-.09-.19l-.307-1.228c-.045-.177.173-.3.302-.171a.18.18 0 0 1 .044.07l.318.954c.102.307.322.56.611.705Z\" fill=\"#906F57\"/><path opacity=\".5\" d=\"M64.96 54.024c0-.327-.099-.982-.491-.982-.492 0 .49 1.473.49.982Zm.465 12.662-.337-1.345a.68.68 0 1 0-1.303.38l.554 1.661a.57.57 0 0 0 1.112-.18v-.304a.877.877 0 0 0-.026-.212Zm-6.274-5.787h.898a.491.491 0 1 1 0 .982h-.796c-.415 0-.794.234-.98.605l-.318.637a.582.582 0 1 1-.932-.672l1.146-1.146c.26-.26.614-.406.982-.406Z\" fill=\"#0260EE\"/><g opacity=\".5\" filter=\"url(#p)\"><g filter=\"url(#q)\"><path d=\"M86.1 122.177c1.414 1.885 0 2.693-.883 2.946-2.063.589-2.652-1.179-2.947-2.652-.235-1.178.688-4.222 1.179-5.597.294.982 1.237 3.417 2.651 5.303Z\" fill=\"#0260EE\"/></g><path d=\"M84.357 127.479c-.05-.398.017-.882.109-1.282.055-.241-.121-.485-.37-.485a.234.234 0 0 0-.156.048c-.35.302-.327 1.385-.252 2.078a.261.261 0 0 0 .262.231c.24 0 .437-.352.407-.59Z\" fill=\"#5C3F2E\"/><rect x=\"81.359\" y=\"138.675\" width=\"5.303\" height=\"4.714\" rx=\"2.357\" fill=\"#916F57\"/><rect x=\"81.359\" y=\"127.479\" width=\"5.303\" height=\"14.73\" rx=\"1.839\" fill=\"#F1ECD9\"/><path opacity=\".5\" d=\"M83.908 128.877c-.752-.282-.55-1.398.253-1.398h.776c.953 0 1.725.773 1.725 1.725v2.658c0 .526-.74.64-.898.138l-.552-1.748a2.167 2.167 0 0 0-1.304-1.375Z\" fill=\"#0260EE\"/><path d=\"m86.957 135.728-.714-1.905a.696.696 0 0 0-1.348.245v2.811a1.206 1.206 0 1 0 2.335-.423l-.273-.728Zm-6.384-3.924.698-1.746a.35.35 0 0 1 .678.13v1.881a.714.714 0 1 1-1.376-.265Zm.197 6.776v.684a1.179 1.179 0 1 0 2.357 0v-2.519c0-.758-1.005-1.025-1.381-.366l-.73 1.277c-.16.282-.246.6-.246.924Z\" fill=\"#F1ECD9\"/><g filter=\"url(#r)\"><path d=\"M85.216 123.355c.236.707-.098 1.08-.294 1.178-2.357.59-2.259-3.044-1.768-4.419-.236.943.491 1.964.884 2.357 0-.236.393-.491.589-.884.098.491.354 1.061.59 1.768Z\" fill=\"#7BF7FF\"/></g><g filter=\"url(#s)\"><path d=\"M86.1 122.177c1.414 1.885 0 2.693-.883 2.946-2.063.589-2.652-1.179-2.947-2.652-.235-1.178.688-4.222 1.179-5.597.294.982 1.237 3.417 2.651 5.303Z\" fill=\"#0260EE\"/></g><path d=\"m82.661 139.45-.822.329a.295.295 0 0 0 .19.556l1.194-.341a.972.972 0 0 0 .656-.628l.298-.894a.293.293 0 0 0-.542-.224l-.283.567a1.32 1.32 0 0 1-.69.635Zm3.509-1.707.291-.146a.365.365 0 0 0-.162-.69h-.053a.417.417 0 0 1-.295-.122l-.124-.125a.485.485 0 0 0-.776.559l.09.182a.766.766 0 0 0 1.028.342Zm-4.492-6.003-.5.25a.328.328 0 1 0 .409.49l.618-.824a.32.32 0 0 0 .054-.114l.184-.737c.027-.106-.104-.18-.181-.103a.11.11 0 0 0-.026.043l-.191.572a.732.732 0 0 1-.367.423Z\" fill=\"#906F57\"/><path opacity=\".5\" d=\"M81.654 130.426c0-.196.06-.589.295-.589.294 0-.295.884-.295.589Zm-.279 7.597.202-.807a.407.407 0 1 1 .782.228l-.332.996a.343.343 0 0 1-.668-.108v-.182c0-.043.006-.086.016-.127Zm3.764-3.473H84.6a.295.295 0 0 0 0 .59h.478c.249 0 .476.14.588.363l.19.382a.35.35 0 1 0 .56-.403l-.688-.688a.835.835 0 0 0-.59-.244Z\" fill=\"#0260EE\"/></g><g opacity=\".5\" filter=\"url(#t)\"><g filter=\"url(#u)\"><path d=\"M191.194 58.179c-1.632 2.175 0 3.108 1.02 3.4 2.379.68 3.059-1.36 3.399-3.06.272-1.36-.793-4.872-1.36-6.459-.339 1.133-1.427 3.943-3.059 6.119Z\" fill=\"#0260EE\"/></g><path d=\"M193.205 64.297c.058-.459-.019-1.018-.125-1.479-.064-.279.14-.56.426-.56.065 0 .131.013.18.055.404.35.378 1.6.292 2.398a.303.303 0 0 1-.303.267c-.277 0-.505-.407-.47-.681Z\" fill=\"#5C3F2E\"/><rect width=\"6.119\" height=\"5.439\" rx=\"2.719\" transform=\"matrix(-1 0 0 1 196.664 77.215)\" fill=\"#916F57\"/><rect width=\"6.119\" height=\"16.997\" rx=\"1.839\" transform=\"matrix(-1 0 0 1 196.664 64.298)\" fill=\"#F1ECD9\"/><path opacity=\".5\" d=\"M193.724 65.91c.868-.325.635-1.612-.293-1.612h-1.046a1.84 1.84 0 0 0-1.84 1.839v3.676c0 .526.74.64.899.139l.775-2.455a2.497 2.497 0 0 1 1.505-1.587Z\" fill=\"#0260EE\"/><path d=\"m190.205 73.816.825-2.199a.802.802 0 0 1 1.555.282v3.245a1.391 1.391 0 1 1-2.694-.49l.314-.838Zm7.367-4.528-.806-2.016a.406.406 0 0 0-.782.15v2.171a.824.824 0 1 0 1.588-.305Zm-.228 7.818v.789a1.36 1.36 0 0 1-2.72 0v-2.906c0-.875 1.16-1.183 1.594-.424l.843 1.474c.185.325.283.693.283 1.067Z\" fill=\"#F1ECD9\"/><g filter=\"url(#v)\"><path d=\"M192.214 59.539c-.272.816.113 1.246.34 1.36 2.719.68 2.606-3.513 2.039-5.1.272 1.088-.566 2.267-1.02 2.72 0-.272-.453-.567-.679-1.02-.114.567-.408 1.224-.68 2.04Z\" fill=\"#7BF7FF\"/></g><g filter=\"url(#w)\"><path d=\"M191.194 58.179c-1.632 2.175 0 3.108 1.02 3.4 2.379.68 3.059-1.36 3.399-3.06.272-1.36-.793-4.872-1.36-6.459-.339 1.133-1.427 3.943-3.059 6.119Z\" fill=\"#0260EE\"/></g><path d=\"m195.162 78.11.949.38a.339.339 0 0 1-.22.641l-1.377-.394a1.125 1.125 0 0 1-.757-.724l-.343-1.032a.338.338 0 0 1 .624-.258l.328.654c.166.334.45.594.796.733Zm-4.047-1.97-.337-.169a.42.42 0 0 1 .188-.796h.06a.48.48 0 0 0 .34-.14l.144-.144a.559.559 0 0 1 .895.644l-.105.21a.883.883 0 0 1-1.185.395Zm5.182-6.927.577.288a.378.378 0 1 1-.472.566l-.713-.951a.36.36 0 0 1-.063-.132l-.212-.85c-.031-.122.12-.208.209-.118a.12.12 0 0 1 .03.049l.221.66c.07.212.222.388.423.488Z\" fill=\"#906F57\"/><path opacity=\".5\" d=\"M196.324 67.697c0-.226-.068-.68-.34-.68-.34 0 .34 1.02.34.68Zm.322 8.766-.233-.932a.47.47 0 1 0-.902.263l.383 1.15a.396.396 0 0 0 .77-.124v-.21a.605.605 0 0 0-.018-.147Zm-4.343-4.007h.622a.34.34 0 0 1 0 .68h-.552a.759.759 0 0 0-.678.419l-.22.44a.403.403 0 1 1-.645-.464l.793-.793a.963.963 0 0 1 .68-.282Z\" fill=\"#0260EE\"/></g><g opacity=\".75\" filter=\"url(#x)\"><g filter=\"url(#y)\"><path d=\"M34.447 24.956c-1.938 2.584 0 3.691 1.211 4.037 2.826.808 3.634-1.615 4.037-3.633.323-1.615-.942-5.787-1.614-7.67-.404 1.345-1.696 4.682-3.634 7.266Z\" fill=\"#0260EE\"/></g><path d=\"M37.14 29.802h.062a.3.3 0 0 1 .198.059c.487.406.456 1.9.353 2.853a.358.358 0 0 1-.36.317c-.328 0-.598-.483-.557-.809.07-.561-.03-1.25-.16-1.807-.073-.305.15-.613.465-.613Z\" fill=\"#5C3F2E\"/><rect width=\"7.267\" height=\"6.46\" rx=\"3.23\" transform=\"matrix(-1 0 0 1 40.943 47.564)\" fill=\"#916F57\"/><rect width=\"7.267\" height=\"20.186\" rx=\"1.839\" transform=\"matrix(-1 0 0 1 40.943 32.223)\" fill=\"#F1ECD9\"/><path opacity=\".5\" d=\"M37.81 34.003c.96-.359.701-1.78-.322-1.78h-1.972a1.84 1.84 0 0 0-1.84 1.839v5.271c0 .526.74.64.899.139l1.12-3.546a2.759 2.759 0 0 1 1.662-1.752l.453-.17Z\" fill=\"#0260EE\"/><path d=\"m33.273 43.527.98-2.61a.954.954 0 0 1 1.846.334v3.853a1.653 1.653 0 1 1-3.2-.58l.374-.997Zm8.749-5.377-.957-2.394a.482.482 0 0 0-.929.178v2.578a.978.978 0 1 0 1.886-.363Zm-.271 9.285v.937a1.615 1.615 0 1 1-3.23 0v-3.805c0-.943 1.25-1.275 1.718-.456l1.176 2.058c.22.385.336.822.336 1.266Z\" fill=\"#F1ECD9\"/><g filter=\"url(#z)\"><path d=\"M35.658 26.57c-.323.97.134 1.48.404 1.616 3.23.807 3.095-4.172 2.422-6.056.323 1.292-.673 2.691-1.211 3.23 0-.324-.538-.674-.808-1.212-.134.673-.484 1.454-.807 2.423Z\" fill=\"#7BF7FF\"/></g><g filter=\"url(#A)\"><path d=\"M34.447 24.956c-1.938 2.584 0 3.691 1.211 4.037 2.826.808 3.634-1.615 4.037-3.633.323-1.615-.942-5.787-1.614-7.67-.404 1.345-1.696 4.682-3.634 7.266Z\" fill=\"#0260EE\"/></g><path d=\"m39.16 48.627 1.127.451a.403.403 0 0 1-.26.762l-1.637-.467a1.333 1.333 0 0 1-.898-.86l-.409-1.226a.403.403 0 0 1 .742-.307l.389.777c.198.396.535.706.946.87Zm-4.807-2.34-.4-.2a.499.499 0 0 1 .223-.946h.072a.57.57 0 0 0 .404-.167l.17-.17a.664.664 0 0 1 1.063.765l-.124.249a1.05 1.05 0 0 1-1.408.47Zm6.154-8.227.686.344a.45.45 0 1 1-.56.671l-.848-1.13a.437.437 0 0 1-.074-.155l-.252-1.01c-.037-.146.142-.247.249-.14a.148.148 0 0 1 .035.057l.262.784c.084.252.265.46.502.58Z\" fill=\"#906F57\"/><path opacity=\".5\" d=\"M40.54 36.26c0-.269-.08-.807-.404-.807-.403 0 .404 1.211.404.807Zm.382 10.41-.277-1.105a.559.559 0 1 0-1.071.312l.455 1.366a.47.47 0 0 0 .914-.148v-.25a.717.717 0 0 0-.021-.174Zm-5.158-4.757h.738a.404.404 0 1 1 0 .807h-.654a.9.9 0 0 0-.806.498l-.261.523a.478.478 0 1 1-.766-.552l.942-.942c.214-.214.505-.334.807-.334Z\" fill=\"#0260EE\"/></g><g opacity=\".75\" filter=\"url(#B)\"><g filter=\"url(#C)\"><path d=\"M163.908 156.548c1.938 2.584 0 3.691-1.211 4.037-2.826.808-3.633-1.615-4.037-3.633-.323-1.615.942-5.787 1.615-7.671.404 1.346 1.696 4.683 3.633 7.267Z\" fill=\"#0260EE\"/></g><path d=\"M161.215 161.394h-.061a.304.304 0 0 0-.199.059c-.486.406-.456 1.9-.353 2.853.02.183.176.317.36.317.329 0 .599-.483.558-.809-.071-.561.029-1.25.16-1.807.073-.305-.151-.613-.465-.613Z\" fill=\"#5C3F2E\"/><rect x=\"157.412\" y=\"179.156\" width=\"7.267\" height=\"6.46\" rx=\"3.23\" fill=\"#916F57\"/><rect x=\"157.412\" y=\"163.815\" width=\"7.267\" height=\"20.186\" rx=\"1.839\" fill=\"#F1ECD9\"/><path opacity=\".5\" d=\"M160.545 165.595c-.959-.359-.701-1.78.323-1.78h1.972a1.84 1.84 0 0 1 1.839 1.839v5.271c0 .526-.74.64-.898.139l-1.12-3.546a2.757 2.757 0 0 0-1.662-1.752l-.454-.171Z\" fill=\"#0260EE\"/><path d=\"m165.082 175.119-.979-2.611a.953.953 0 0 0-1.847.335v3.853a1.653 1.653 0 1 0 3.2-.58l-.374-.997Zm-8.749-5.378.958-2.393a.481.481 0 0 1 .928.179v2.577a.978.978 0 1 1-1.886-.363Zm.271 9.286v.937a1.616 1.616 0 0 0 3.23 0v-3.805c0-.942-1.25-1.274-1.718-.456l-1.175 2.058a2.544 2.544 0 0 0-.337 1.266Z\" fill=\"#F1ECD9\"/><g filter=\"url(#D)\"><path d=\"M162.698 158.163c.322.969-.135 1.48-.404 1.615-3.23.807-3.095-4.172-2.423-6.056-.323 1.292.673 2.691 1.212 3.229 0-.323.538-.672.807-1.211.135.673.485 1.454.808 2.423Z\" fill=\"#7BF7FF\"/></g><g filter=\"url(#E)\"><path d=\"M163.908 156.548c1.938 2.584 0 3.691-1.211 4.037-2.826.808-3.633-1.615-4.037-3.633-.323-1.615.942-5.787 1.615-7.671.404 1.346 1.696 4.683 3.633 7.267Z\" fill=\"#0260EE\"/></g><path d=\"m159.196 180.22-1.127.45a.403.403 0 0 0 .26.762l1.636-.467c.423-.121.76-.443.899-.861l.408-1.225a.402.402 0 0 0-.742-.307l-.388.777a1.817 1.817 0 0 1-.946.871Zm4.806-2.341.401-.2a.5.5 0 0 0-.223-.946h-.072a.57.57 0 0 1-.404-.167l-.171-.171a.663.663 0 0 0-1.063.766l.125.249c.259.518.889.728 1.407.469Zm-6.154-8.226-.686.343a.45.45 0 1 0 .561.671l.847-1.129a.44.44 0 0 0 .074-.156l.253-1.01c.036-.146-.143-.247-.249-.141a.153.153 0 0 0-.036.058l-.261.784a1 1 0 0 1-.503.58Z\" fill=\"#906F57\"/><path opacity=\".5\" d=\"M157.815 167.852c0-.269.081-.807.404-.807.404 0-.404 1.211-.404.807Zm-.381 10.411.276-1.106a.558.558 0 1 1 1.072.312l-.455 1.366a.47.47 0 0 1-.915-.148v-.25a.68.68 0 0 1 .022-.174Zm5.157-4.758h-.738a.403.403 0 1 0 0 .807h.655a.9.9 0 0 1 .805.498l.262.523a.478.478 0 1 0 .766-.552l-.942-.942a1.145 1.145 0 0 0-.808-.334Z\" fill=\"#0260EE\"/></g><defs><filter id=\"a\" x=\"70.009\" y=\".389\" width=\"77.984\" height=\"86.628\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\"4.598\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"b\" x=\"77.365\" y=\"7.745\" width=\"63.272\" height=\"71.915\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".92\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"c\" x=\"93.065\" y=\"36.314\" width=\"30.825\" height=\"40.757\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".92\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"d\" x=\"154.036\" y=\"30.978\" width=\"9.158\" height=\"14.862\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".23\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"e\" x=\"157.166\" y=\"36.379\" width=\"4.964\" height=\"8.391\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".23\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"f\" x=\"145.301\" y=\"22.242\" width=\"26.629\" height=\"32.333\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\"4.598\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"g\" x=\"30.62\" y=\"91.863\" width=\"8.365\" height=\"14.862\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".23\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"h\" x=\"31.684\" y=\"97.265\" width=\"4.964\" height=\"8.391\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".23\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"i\" x=\"21.884\" y=\"83.128\" width=\"25.837\" height=\"32.333\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\"4.598\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"j\" x=\"184.735\" y=\"91.863\" width=\"8.365\" height=\"14.862\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".23\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"k\" x=\"175.999\" y=\"83.128\" width=\"25.837\" height=\"32.333\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\"4.598\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"l\" x=\"185.799\" y=\"97.265\" width=\"6.353\" height=\"8.391\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".23\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"m\" x=\"56.09\" y=\"30.978\" width=\"8.365\" height=\"14.862\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".23\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"n\" x=\"47.354\" y=\"22.242\" width=\"25.837\" height=\"32.333\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\"4.598\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"o\" x=\"57.153\" y=\"36.379\" width=\"6.353\" height=\"8.391\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".23\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"p\" x=\"78.682\" y=\"115.035\" width=\"10.465\" height=\"30.193\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".92\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"q\" x=\"81.773\" y=\"116.414\" width=\"5.387\" height=\"9.285\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".23\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"r\" x=\"82.41\" y=\"119.654\" width=\"3.347\" height=\"5.403\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".23\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"s\" x=\"73.037\" y=\"107.679\" width=\"22.858\" height=\"26.756\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\"4.598\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"t\" x=\"187.962\" y=\"50.221\" width=\"11.509\" height=\"34.272\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".92\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"u\" x=\"190.042\" y=\"51.6\" width=\"6.074\" height=\"10.572\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".23\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"v\" x=\"191.66\" y=\"55.34\" width=\"3.72\" height=\"6.092\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".23\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"w\" x=\"181.307\" y=\"42.865\" width=\"23.545\" height=\"28.043\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\"4.598\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"x\" x=\"31.873\" y=\"16.77\" width=\"11.14\" height=\"38.173\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".46\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"y\" x=\"33.165\" y=\"17.229\" width=\"7.042\" height=\"12.383\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".23\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"z\" x=\"35.087\" y=\"21.67\" width=\"4.246\" height=\"7.063\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".23\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"A\" x=\"24.43\" y=\"8.494\" width=\"24.513\" height=\"29.854\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\"4.598\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"B\" x=\"155.343\" y=\"148.362\" width=\"11.14\" height=\"38.174\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".46\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"C\" x=\"158.149\" y=\"148.821\" width=\"7.042\" height=\"12.383\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".23\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"D\" x=\"159.023\" y=\"153.262\" width=\"4.246\" height=\"7.063\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\".23\" result=\"effect1_foregroundBlur\"/></filter><filter id=\"E\" x=\"149.413\" y=\"140.086\" width=\"24.513\" height=\"29.854\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/><feGaussianBlur stdDeviation=\"4.598\" result=\"effect1_foregroundBlur\"/></filter></defs></svg>");
 
-/***/ }),
-/* 988 */
-/***/ (function(module, exports) {
+exports.isOIDC = isOIDC;
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M156.177 162.265a2.199 2.199 0 0 1 .782 3.011l-2.427 4.13a2.2 2.2 0 1 1-3.793-2.229l2.427-4.13a2.2 2.2 0 0 1 3.011-.782Zm-7.28 12.389a2.2 2.2 0 0 1 .782 3.011l-4.854 8.26a2.2 2.2 0 1 1-3.793-2.229l4.853-8.26a2.2 2.2 0 0 1 3.012-.782Zm-9.707 16.519a2.2 2.2 0 0 1 .782 3.011l-4.853 8.26a2.2 2.2 0 0 1-3.794-2.23l4.853-8.259a2.2 2.2 0 0 1 3.012-.782Zm-9.707 16.519a2.2 2.2 0 0 1 .782 3.011l-2.427 4.13a2.2 2.2 0 1 1-3.793-2.229l2.427-4.13a2.199 2.199 0 0 1 3.011-.782Zm-27.169-53.6a2.202 2.202 0 0 1 .782 3.012l-2.427 4.129a2.199 2.199 0 1 1-3.793-2.229l2.426-4.13a2.201 2.201 0 0 1 3.012-.782Zm-7.28 12.389a2.2 2.2 0 0 1 .782 3.012l-4.854 8.259a2.2 2.2 0 1 1-3.793-2.229l4.853-8.26a2.201 2.201 0 0 1 3.011-.782ZM85.326 183a2.2 2.2 0 0 1 .783 3.012l-4.854 8.259a2.2 2.2 0 0 1-3.793-2.229l4.853-8.26a2.2 2.2 0 0 1 3.011-.782Zm-9.706 16.519a2.2 2.2 0 0 1 .782 3.011l-2.427 4.13a2.2 2.2 0 1 1-3.793-2.229l2.426-4.13a2.2 2.2 0 0 1 3.012-.782Zm71.095-45.427a2.202 2.202 0 0 1 .782 3.012l-2.427 4.129a2.199 2.199 0 1 1-3.794-2.229l2.427-4.13a2.202 2.202 0 0 1 3.012-.782Zm-7.281 12.389a2.201 2.201 0 0 1 .783 3.012l-4.854 8.259a2.199 2.199 0 1 1-3.793-2.229l4.853-8.26a2.2 2.2 0 0 1 3.011-.782ZM129.727 183a2.201 2.201 0 0 1 .783 3.012l-4.854 8.259a2.2 2.2 0 1 1-3.793-2.229l4.853-8.26a2.2 2.2 0 0 1 3.011-.782Zm-9.707 16.519a2.2 2.2 0 0 1 .783 3.011l-2.427 4.13a2.199 2.199 0 1 1-3.794-2.229l2.427-4.13a2.2 2.2 0 0 1 3.011-.782Zm-27.168-53.6a2.2 2.2 0 0 1 .782 3.011l-2.427 4.13a2.2 2.2 0 1 1-3.793-2.229l2.426-4.13a2.201 2.201 0 0 1 3.012-.782Zm-7.28 12.389a2.2 2.2 0 0 1 .782 3.012l-4.854 8.259a2.2 2.2 0 1 1-3.793-2.229l4.853-8.26a2.201 2.201 0 0 1 3.012-.782Zm-9.707 16.519a2.2 2.2 0 0 1 .782 3.011l-4.854 8.26A2.2 2.2 0 0 1 68 183.869l4.853-8.26a2.2 2.2 0 0 1 3.012-.782Zm-9.707 16.519a2.2 2.2 0 0 1 .782 3.011l-2.427 4.13a2.2 2.2 0 0 1-3.793-2.229l2.426-4.13a2.2 2.2 0 0 1 3.012-.782Zm51.532-37.254a2.2 2.2 0 0 1 .782 3.012l-2.426 4.129a2.2 2.2 0 1 1-3.794-2.229l2.427-4.13a2.2 2.2 0 0 1 3.011-.782Zm-7.28 12.389a2.2 2.2 0 0 1 .782 3.012l-4.853 8.259a2.2 2.2 0 1 1-3.794-2.229l4.854-8.26a2.2 2.2 0 0 1 3.011-.782ZM100.703 183a2.2 2.2 0 0 1 .782 3.012l-4.853 8.259a2.2 2.2 0 0 1-3.794-2.229l4.854-8.26a2.2 2.2 0 0 1 3.011-.782Zm-9.707 16.519a2.2 2.2 0 0 1 .782 3.011l-2.427 4.13a2.2 2.2 0 1 1-3.793-2.229l2.427-4.13a2.2 2.2 0 0 1 3.011-.782Zm-27.169-53.6a2.2 2.2 0 0 1 .782 3.011l-2.426 4.13a2.2 2.2 0 1 1-3.794-2.229l2.427-4.13a2.201 2.201 0 0 1 3.011-.782Zm-7.28 12.389a2.2 2.2 0 0 1 .782 3.012l-4.853 8.259a2.2 2.2 0 1 1-3.794-2.229l4.854-8.26a2.201 2.201 0 0 1 3.011-.782Zm-9.707 16.519a2.2 2.2 0 0 1 .782 3.011l-4.853 8.26a2.2 2.2 0 0 1-3.794-2.229l4.854-8.26a2.2 2.2 0 0 1 3.011-.782Zm-9.707 16.519a2.2 2.2 0 0 1 .782 3.011l-2.426 4.13a2.2 2.2 0 0 1-3.794-2.229l2.427-4.13a2.2 2.2 0 0 1 3.011-.782Zm90.939-29.081a2.199 2.199 0 0 1 .782 3.011l-2.427 4.13a2.2 2.2 0 1 1-3.793-2.229l2.427-4.13a2.2 2.2 0 0 1 3.011-.782Zm-7.28 12.389a2.2 2.2 0 0 1 .782 3.011l-4.854 8.26a2.2 2.2 0 1 1-3.793-2.229l4.853-8.26a2.2 2.2 0 0 1 3.012-.782Zm-9.707 16.519a2.2 2.2 0 0 1 .782 3.011l-4.853 8.26a2.2 2.2 0 0 1-3.794-2.23l4.853-8.259a2.2 2.2 0 0 1 3.012-.782Zm-9.707 16.519a2.2 2.2 0 0 1 .782 3.011l-2.427 4.13a2.2 2.2 0 0 1-3.793-2.229l2.427-4.13a2.2 2.2 0 0 1 3.011-.782Zm-27.168-53.6a2.2 2.2 0 0 1 .781 3.012l-2.426 4.129a2.2 2.2 0 1 1-3.794-2.229l2.427-4.13a2.2 2.2 0 0 1 3.011-.782Zm-7.281 12.389a2.2 2.2 0 0 1 .782 3.012l-4.853 8.259a2.2 2.2 0 1 1-3.794-2.229l4.854-8.26a2.201 2.201 0 0 1 3.011-.782ZM57.222 183a2.2 2.2 0 0 1 .782 3.012l-4.853 8.259a2.2 2.2 0 0 1-3.794-2.229l4.854-8.26a2.201 2.201 0 0 1 3.011-.782Zm-9.707 16.519a2.2 2.2 0 0 1 .782 3.011l-2.426 4.13a2.2 2.2 0 1 1-3.794-2.229l2.427-4.13a2.2 2.2 0 0 1 3.011-.782Z\" fill=\"#80F0FF\"/>\n|   <path d=\"M68.376 101.749h.087c-.001-.628.097-1.332.196-2.036 1.737-12.406 13.127-21.039 25.476-19.31a22.74 22.74 0 0 1 10.391 4.237c6.586-8.766 16.326-10.188 27.974-8.557 17.079 2.392 30.389 9.898 27.986 27.055l.876.123c17.079 2.392 28.958 18.32 26.555 35.477-2.403 17.158-18.188 29.122-35.267 26.73-3.591-.503-6.92-1.597-9.913-3.183-5.265 6.35-13.626 9.934-22.384 8.707-8.058-1.128-14.61-5.993-18.226-12.69-4.273 2.452-9.349 3.625-14.516 2.902-8.846-1.239-15.751-7.41-18.382-15.404-2.476.461-4.977.469-7.605.101-13.4-1.876-22.82-14.32-20.922-27.87 1.797-13.474 11.132-20.864 27.674-16.282Z\" fill=\"#B3D2E7\"/>");
+var isMagicLink = function isMagicLink(client) {
+  var _client$capabilities$2;
 
-/***/ }),
-/* 989 */
-/***/ (function(module, exports) {
+  return (_client$capabilities$2 = client.capabilities.can_auth_with_magic_links) !== null && _client$capabilities$2 !== void 0 ? _client$capabilities$2 : false;
+};
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"220\" viewBox=\"0 0 220 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path d=\"M38.408 204.745s112.399 1.197 121.398-1.594c0 0 21.799-1.393 28.202-2.987 11.159-4.002 33.128-12.237 31.736-13.165-1.739-1.159-7.536-38.26-22.608-53.911-12.057-12.522-42.309-22.029-55.928-25.218l-80.313 10.365c-12.942 9.588-35.905 16.564-45.783 28.186C5.257 158.015-.54 185.26.04 186.999c.58 1.739 15.88 12.304 38.368 17.746Z\" fill=\"#635F5B\"/>\n|   <path d=\"M78.406 120.9s8.823 22.082 17.3 37.899c7.8 14.552 12.55 27.31 13.362 29.789.078.243.35.363.585.261 1.629-.704 7.529-4.256 14.653-20.482 8.401-19.138 5.2-37.674 5.2-37.674l-7.001-28.507s1.234 18.202-14.201 27.707c-3.365 2.072-5.984 5.164-9.898 4.592-6.346-.929-15.7-4.189-20-13.585Z\" fill=\"#E2E2E2\"/>");
+exports.isMagicLink = isMagicLink;
 
 /***/ }),
-/* 990 */
-/***/ (function(module, exports) {
+/* 837 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"220\" viewBox=\"0 0 220 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <g clip-path=\"url(#b)\">");
+"use strict";
 
-/***/ }),
-/* 991 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <path d=\"M72.575 127.845c-.847-.535-.468-1.845.534-1.845h118.254c.19 0 .375.054.534.155l6.334 4c.847.535.468 1.845-.534 1.845H79.442a1 1 0 0 1-.534-.155l-6.333-4Zm33.544 17.755-6.545-4.909c-1.264-.948-.982-2.918.497-3.473l8.051-3.019c.347-.13.723-.161 1.087-.09l21.969 4.298c.312.061.605.196.855.393l4.598 3.63c1.489 1.176.658 3.57-1.239 3.57h-28.073c-.432 0-.853-.14-1.2-.4Z\" fill=\"#1F1F21\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+var _exportNames = {};
+exports.default = void 0;
+var _comGrandlyonEcolyoChallenge = __webpack_require__(838);
+Object.keys(_comGrandlyonEcolyoChallenge).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEcolyoChallenge[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEcolyoChallenge[key];
+    }
+  });
+});
+var _comGrandlyonEcolyoDuel = __webpack_require__(839);
+Object.keys(_comGrandlyonEcolyoDuel).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEcolyoDuel[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEcolyoDuel[key];
+    }
+  });
+});
+var _comGrandlyonEcolyoEcogesture = __webpack_require__(840);
+Object.keys(_comGrandlyonEcolyoEcogesture).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEcolyoEcogesture[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEcolyoEcogesture[key];
+    }
+  });
+});
+var _comGrandlyonEcolyoExploration = __webpack_require__(841);
+Object.keys(_comGrandlyonEcolyoExploration).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEcolyoExploration[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEcolyoExploration[key];
+    }
+  });
+});
+var _comGrandlyonEcolyoFluidsprices = __webpack_require__(842);
+Object.keys(_comGrandlyonEcolyoFluidsprices).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEcolyoFluidsprices[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEcolyoFluidsprices[key];
+    }
+  });
+});
+var _comGrandlyonEcolyoProfile = __webpack_require__(843);
+Object.keys(_comGrandlyonEcolyoProfile).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEcolyoProfile[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEcolyoProfile[key];
+    }
+  });
+});
+var _comGrandlyonEcolyoProfileecogesture = __webpack_require__(844);
+Object.keys(_comGrandlyonEcolyoProfileecogesture).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEcolyoProfileecogesture[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEcolyoProfileecogesture[key];
+    }
+  });
+});
+var _comGrandlyonEcolyoProfiletype = __webpack_require__(845);
+Object.keys(_comGrandlyonEcolyoProfiletype).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEcolyoProfiletype[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEcolyoProfiletype[key];
+    }
+  });
+});
+var _comGrandlyonEcolyoQuiz = __webpack_require__(846);
+Object.keys(_comGrandlyonEcolyoQuiz).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEcolyoQuiz[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEcolyoQuiz[key];
+    }
+  });
+});
+var _comGrandlyonEcolyoSchemas = __webpack_require__(847);
+Object.keys(_comGrandlyonEcolyoSchemas).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEcolyoSchemas[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEcolyoSchemas[key];
+    }
+  });
+});
+var _comGrandlyonEcolyoUsageevent = __webpack_require__(848);
+Object.keys(_comGrandlyonEcolyoUsageevent).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEcolyoUsageevent[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEcolyoUsageevent[key];
+    }
+  });
+});
+var _comGrandlyonEcolyoUserchallenge = __webpack_require__(849);
+Object.keys(_comGrandlyonEcolyoUserchallenge).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEcolyoUserchallenge[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEcolyoUserchallenge[key];
+    }
+  });
+});
+var _comGrandlyonEglDay = __webpack_require__(850);
+Object.keys(_comGrandlyonEglDay).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEglDay[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEglDay[key];
+    }
+  });
+});
+var _comGrandlyonEglMonth = __webpack_require__(851);
+Object.keys(_comGrandlyonEglMonth).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEglMonth[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEglMonth[key];
+    }
+  });
+});
+var _comGrandlyonEglYear = __webpack_require__(852);
+Object.keys(_comGrandlyonEglYear).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEglYear[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEglYear[key];
+    }
+  });
+});
+var _comGrandlyonEnedisDay = __webpack_require__(853);
+Object.keys(_comGrandlyonEnedisDay).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEnedisDay[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEnedisDay[key];
+    }
+  });
+});
+var _comGrandlyonEnedisMaxpower = __webpack_require__(854);
+Object.keys(_comGrandlyonEnedisMaxpower).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEnedisMaxpower[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEnedisMaxpower[key];
+    }
+  });
+});
+var _comGrandlyonEnedisMinute = __webpack_require__(855);
+Object.keys(_comGrandlyonEnedisMinute).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEnedisMinute[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEnedisMinute[key];
+    }
+  });
+});
+var _comGrandlyonEnedisMonth = __webpack_require__(856);
+Object.keys(_comGrandlyonEnedisMonth).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEnedisMonth[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEnedisMonth[key];
+    }
+  });
+});
+var _comGrandlyonEnedisMonthlyAnalysisData = __webpack_require__(857);
+Object.keys(_comGrandlyonEnedisMonthlyAnalysisData).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEnedisMonthlyAnalysisData[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEnedisMonthlyAnalysisData[key];
+    }
+  });
+});
+var _comGrandlyonEnedisYear = __webpack_require__(858);
+Object.keys(_comGrandlyonEnedisYear).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonEnedisYear[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonEnedisYear[key];
+    }
+  });
+});
+var _comGrandlyonGrdfDay = __webpack_require__(859);
+Object.keys(_comGrandlyonGrdfDay).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonGrdfDay[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonGrdfDay[key];
+    }
+  });
+});
+var _comGrandlyonGrdfMonth = __webpack_require__(860);
+Object.keys(_comGrandlyonGrdfMonth).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonGrdfMonth[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonGrdfMonth[key];
+    }
+  });
+});
+var _comGrandlyonGrdfYear = __webpack_require__(861);
+Object.keys(_comGrandlyonGrdfYear).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _comGrandlyonGrdfYear[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _comGrandlyonGrdfYear[key];
+    }
+  });
+});
+var _ioCozyAccounts = __webpack_require__(862);
+Object.keys(_ioCozyAccounts).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _ioCozyAccounts[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _ioCozyAccounts[key];
+    }
+  });
+});
+var _ioCozyJobs = __webpack_require__(863);
+Object.keys(_ioCozyJobs).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _ioCozyJobs[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _ioCozyJobs[key];
+    }
+  });
+});
+var _ioCozyKonnectors = __webpack_require__(864);
+Object.keys(_ioCozyKonnectors).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _ioCozyKonnectors[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _ioCozyKonnectors[key];
+    }
+  });
+});
+var _ioCozyTerms = __webpack_require__(865);
+Object.keys(_ioCozyTerms).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _ioCozyTerms[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _ioCozyTerms[key];
+    }
+  });
+});
+var _ioCozyTriggers = __webpack_require__(866);
+Object.keys(_ioCozyTriggers).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _ioCozyTriggers[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _ioCozyTriggers[key];
+    }
+  });
+});
+var _orgEcolyo = __webpack_require__(867);
+Object.keys(_orgEcolyo).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _orgEcolyo[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _orgEcolyo[key];
+    }
+  });
+});
+var _orgEcolyoAgentCustom = __webpack_require__(868);
+Object.keys(_orgEcolyoAgentCustom).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _orgEcolyoAgentCustom[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _orgEcolyoAgentCustom[key];
+    }
+  });
+});
+var _orgEcolyoAgentPartners = __webpack_require__(869);
+Object.keys(_orgEcolyoAgentPartners).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _orgEcolyoAgentPartners[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _orgEcolyoAgentPartners[key];
+    }
+  });
+});
+var _orgEcolyoAgent = __webpack_require__(870);
+Object.keys(_orgEcolyoAgent).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _orgEcolyoAgent[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _orgEcolyoAgent[key];
+    }
+  });
+});
+var _orgEcolyo2 = __webpack_require__(871);
+Object.keys(_orgEcolyo2).forEach(function (key) {
+  if (key === "default" || key === "__esModule") return;
+  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+  if (key in exports && exports[key] === _orgEcolyo2[key]) return;
+  Object.defineProperty(exports, key, {
+    enumerable: true,
+    get: function () {
+      return _orgEcolyo2[key];
+    }
+  });
+});
+// the documents schema, necessary for CozyClient
+const doctypes = {
+  enedisyear: {
+    doctype: _comGrandlyonEnedisYear.ENEDIS_YEAR_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  enedismonth: {
+    doctype: _comGrandlyonEnedisMonth.ENEDIS_MONTH_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  enedisday: {
+    doctype: _comGrandlyonEnedisDay.ENEDIS_DAY_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  enedisminute: {
+    doctype: _comGrandlyonEnedisMinute.ENEDIS_MINUTE_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  grdfyear: {
+    doctype: _comGrandlyonGrdfYear.GRDF_YEAR_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  grdfmonth: {
+    doctype: _comGrandlyonGrdfMonth.GRDF_MONTH_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  grdfday: {
+    doctype: _comGrandlyonGrdfDay.GRDF_DAY_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  eglyear: {
+    doctype: _comGrandlyonEglYear.EGL_YEAR_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  eglmonth: {
+    doctype: _comGrandlyonEglMonth.EGL_MONTH_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  eglday: {
+    doctype: _comGrandlyonEglDay.EGL_DAY_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  konnectors: {
+    doctype: _ioCozyKonnectors.KONNECTORS_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  accounts: {
+    doctype: _ioCozyAccounts.ACCOUNTS_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  jobs: {
+    doctype: _ioCozyJobs.JOBS_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  terms: {
+    doctype: _ioCozyTerms.TERMS_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  ecogesture: {
+    doctype: _comGrandlyonEcolyoEcogesture.ECOGESTURE_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  profile: {
+    doctype: _comGrandlyonEcolyoProfile.PROFILE_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  profiletype: {
+    doctype: _comGrandlyonEcolyoProfiletype.PROFILETYPE_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  challenge: {
+    doctype: _comGrandlyonEcolyoChallenge.CHALLENGE_DOCTYPE,
+    attributes: {},
+    relationships: {
+      quiz: {
+        doctype: _comGrandlyonEcolyoQuiz.QUIZ_DOCTYPE,
+        type: 'has-one'
+      },
+      duel: {
+        doctype: _comGrandlyonEcolyoDuel.DUEL_DOCTYPE,
+        type: 'has-one'
+      },
+      exploration: {
+        doctype: _comGrandlyonEcolyoExploration.EXPLORATION_DOCTYPE,
+        type: 'has-many'
+      }
+    }
+  },
+  userchallenge: {
+    doctype: _comGrandlyonEcolyoUserchallenge.USERCHALLENGE_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  duel: {
+    doctype: _comGrandlyonEcolyoDuel.DUEL_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  quiz: {
+    doctype: _comGrandlyonEcolyoQuiz.QUIZ_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  exploration: {
+    doctype: _comGrandlyonEcolyoExploration.EXPLORATION_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  usageevents: {
+    doctype: _comGrandlyonEcolyoUsageevent.USAGEEVENT_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  schemas: {
+    doctype: _comGrandlyonEcolyoSchemas.SCHEMAS_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  fluidsPrices: {
+    doctype: _comGrandlyonEcolyoFluidsprices.FLUIDSPRICES_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  enedismonthlyanalysisdata: {
+    doctype: _comGrandlyonEnedisMonthlyAnalysisData.ENEDIS_MONTHLY_ANALYSIS_DATA_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  enedismaxpower: {
+    doctype: _comGrandlyonEnedisMaxpower.ENEDIS_MAXPOWER_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  },
+  profileecogesture: {
+    doctype: _comGrandlyonEcolyoProfileecogesture.PROFILEECOGESTURE_DOCTYPE,
+    attributes: {},
+    relationships: {}
+  }
+};
+var _default = doctypes; // export all doctypes for the application
+exports.default = _default;
 
 /***/ }),
-/* 992 */
-/***/ (function(module, exports) {
+/* 838 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"220\" viewBox=\"0 0 220 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g filter=\"url(#filter0_f)\">\n|     <ellipse cx=\"112.23\" cy=\"190.806\" rx=\"84.8525\" ry=\"2.80752\" fill=\"#E475FF\"/>");
+"use strict";
 
-/***/ }),
-/* 993 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"220\" viewBox=\"0 0 220 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <rect x=\"43.726\" y=\"19.787\" width=\"132.628\" height=\"180.286\" rx=\"2.683\" fill=\"url(#a)\"/>\n|   <g filter=\"url(#b)\">");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.CHALLENGE_DOCTYPE = void 0;
+const CHALLENGE_DOCTYPE = 'com.grandlyon.ecolyo.challenge';
+exports.CHALLENGE_DOCTYPE = CHALLENGE_DOCTYPE;
 
 /***/ }),
-/* 994 */
-/***/ (function(module, exports) {
+/* 839 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <path d=\"M8.235 135.535c-1.714-6.509 13.75-10.952 17.321-11.969a141.186 141.186 0 0 1 67.072-10.518l1.647.144c57.144 0 97.573 10.374 102.573 17.493 5 7.119-5.945 9.448 0 13.329 4.889 3.191 24.459 4.154 23.744 16.358-.714 12.205-57.89 4.892-65.033 9.977-7.143 5.085 10.715 8.136 7.143 15.255-2.491 4.966-57.858 4.068-67.859 0-10-4.068 3.22-9.343 5-15.255 2.143-7.119-15-5.085-34.286-5.085s-58.573-2.034-63.573-7.12c-5-5.085 5-9.153 8.572-11.187 3.571-2.034-.178-3.285-2.32-11.422Z\" fill=\"url(#b)\"/>");
+"use strict";
 
-/***/ }),
-/* 995 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <path d=\"M112.965 62.516c6.665-8.903 8.521-14.813 7.344-16.563-1.631-2.142-7.332-2.119-17.375 8.447-10.044 10.566-15.79 42.251-15.257 44.179.534 1.927 2.113 2.008 2.032 3.587a21.554 21.554 0 0 1-.296 2.676l8.859.14c-.4-1.446-.982-4.294-.105-4.122.878.172 1.794-1.016 2.143-1.631-.428-.92-1.364-3.047-1.684-4.203-.4-1.446 6.009-21.381 14.339-32.51Z\" fill=\"#B21B1B\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.DUEL_DOCTYPE = void 0;
+const DUEL_DOCTYPE = 'com.grandlyon.ecolyo.duel';
+exports.DUEL_DOCTYPE = DUEL_DOCTYPE;
 
 /***/ }),
-/* 996 */
-/***/ (function(module, exports) {
+/* 840 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"50\" height=\"50\" viewBox=\"0 0 50 50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M44.6886 35.8297C45.3382 33.8129 45.689 31.662 45.689 29.4292C45.689 17.9102 36.351 8.5722 24.832 8.5722C13.313 8.5722 3.97498 17.9102 3.97498 29.4292C3.97498 31.7324 4.34829 33.9484 5.0377 36.0199C5.3995 35.9636 5.77671 35.9325 6.16811 35.9325C8.45691 35.9325 9.80063 36.5323 11.2388 37.1743C11.3466 37.2224 11.455 37.2708 11.5644 37.3192C12.5515 37.0991 13.6061 36.971 14.7205 36.971C17.8716 36.971 20.0912 37.5483 22.1128 38.3186H22.3869C23.2738 37.9642 24.1143 37.5978 24.9421 37.237C28.4441 35.7105 31.7162 34.2842 37.2896 34.2842C40.0763 34.2842 42.5676 34.9166 44.6886 35.8297Z\" fill=\"#F3AC59\"/>\n| <path d=\"M40.0933 29.4292H9.5708C9.5708 21.0007 16.4035 14.168 24.832 14.168C33.2606 14.168 40.0933 21.0007 40.0933 29.4292Z\" fill=\"#FBC689\"/>");
+"use strict";
 
-/***/ }),
-/* 997 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><ellipse cx=\"150.417\" cy=\"55.5\" rx=\"16.5\" ry=\"17.5\" fill=\"#073F94\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M160.449 47.536a10.987 10.987 0 0 0-.822-.352c-6.015-2.29-12.887 1.09-15.347 7.55-1.874 4.919-.651 10.205 2.694 13.46-5.451-2.601-7.96-9.337-5.614-15.496 2.461-6.46 9.332-9.84 15.347-7.55a10.927 10.927 0 0 1 3.742 2.388Z\" fill=\"#005DEA\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M144.651 71.003c.502.2 1.02.373 1.553.516 7.891 2.114 16.128-3.043 18.399-11.518 1.996-7.45-1.283-14.985-7.466-18.134 6.922 2.759 10.739 10.756 8.622 18.658-2.271 8.475-10.508 13.631-18.399 11.517a13.862 13.862 0 0 1-2.709-1.039Z\" fill=\"#002E73\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M147.977 68.333c.386.154.784.286 1.194.396 6.075 1.628 12.416-2.342 14.165-8.867 1.537-5.737-.989-11.54-5.751-13.963 5.331 2.123 8.271 8.281 6.641 14.366-1.749 6.525-8.091 10.495-14.165 8.867a10.678 10.678 0 0 1-2.084-.799Z\" fill=\"#002E73\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M151.244 65.484c.239.096.486.178.74.246 3.76 1.007 7.687-1.45 8.769-5.49.952-3.551-.612-7.143-3.56-8.644 3.3 1.315 5.12 5.127 4.111 8.894-1.082 4.04-5.009 6.497-8.769 5.49a6.6 6.6 0 0 1-1.291-.496Z\" fill=\"#002E73\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M152.645 62.872c.126.084.259.161.397.231 2.064 1.045 4.647.095 5.769-2.121.988-1.95.516-4.231-1.017-5.463 1.76 1.166 2.354 3.606 1.307 5.674-1.122 2.217-3.705 3.167-5.769 2.122a3.916 3.916 0 0 1-.687-.443Z\" fill=\"#002E73\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M159.139 52.95a6.538 6.538 0 0 0-.496-.212c-3.636-1.385-7.789.658-9.276 4.563-1.132 2.973-.393 6.168 1.629 8.135-3.295-1.572-4.812-5.643-3.394-9.366 1.488-3.904 5.641-5.947 9.276-4.563.868.33 1.628.827 2.261 1.443Z\" fill=\"#005DEA\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M157.525 55.39a3.837 3.837 0 0 0-.3-.128c-2.201-.838-4.714.399-5.615 2.762-.685 1.8-.237 3.734.986 4.924-1.994-.95-2.912-3.415-2.054-5.668.901-2.364 3.414-3.6 5.615-2.762.525.2.985.5 1.368.873Z\" fill=\"#005DEA\"/><path d=\"m135.917 214-73-36V33.74c0-14.597 9.332-19.963 17.008-21.346 3.741-.674 7.513.347 11.061 1.714l66.931 25.783c-16.935-.826-21.685 11.066-22.201 17.091L135.917 214Z\" fill=\"#005DEA\"/><path d=\"M152.917 38.5c-15.509-.753-20.332 16-20.332 26.474L132.77 208l-66.853-32.792V32.896c0-16.938 13.87-20.23 20.804-19.76\" stroke=\"#fff\" stroke-linecap=\"round\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 71.297 49.587)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 70.345 111.359)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 111.911 68.829)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 110.959 130.6)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 70.82 80.473)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 69.87 142.244)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 111.436 99.715)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 110.483 161.486)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 91.605 59.208)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 90.652 120.979)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 91.128 90.094)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 90.176 151.865)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 71.059 65.03)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 71.535 34.145)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 70.107 126.801)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 111.673 84.272)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 112.149 53.386)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 110.721 146.044)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 70.584 95.915)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 69.63 157.688)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 111.197 115.158)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 110.245 176.929)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 91.366 74.65)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 91.842 43.765)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 90.415 136.423)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 90.89 105.537)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 89.939 167.308)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 81.45 54.398)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 80.499 116.169)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 122.065 73.64)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 121.113 135.411)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 80.975 85.283)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 80.022 147.055)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 121.589 104.525)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 120.637 166.297)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 101.757 64.018)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 100.806 125.79)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 101.281 94.905)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 100.33 156.676)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 81.213 69.84)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 81.689 38.955)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 80.26 131.612)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 121.827 89.082)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 122.303 58.197)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 120.875 150.854)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 80.737 100.726)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 79.785 162.498)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 121.351 119.968)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 120.399 181.739)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 101.52 79.461)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 101.996 48.576)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 100.568 141.233)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 101.044 110.347)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 100.092 172.118)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 71.178 57.31)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 70.226 119.08)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 111.792 76.55)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 110.84 138.322)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 70.702 88.194)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 69.75 149.966)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 111.316 107.436)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 110.364 169.208)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 91.485 66.93)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 90.533 128.701)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 91.009 97.815)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 90.057 159.587)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 70.94 72.751)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 71.416 41.866)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 69.988 134.523)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 111.555 91.993)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 112.03 61.107)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 110.602 153.764)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 70.464 103.637)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 69.512 165.408)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 111.078 122.879)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 110.126 184.651)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 91.247 82.372)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 91.723 51.487)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 90.295 144.144)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 90.771 113.258)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 89.82 175.029)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 81.332 62.12)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 80.38 123.89)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 121.946 81.361)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 120.994 143.132)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 80.856 93.005)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 79.903 154.776)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 121.47 112.246)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 120.518 174.019)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 101.639 71.74)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 100.687 133.511)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 101.163 102.625)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 100.21 164.397)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 81.094 77.562)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 81.57 46.676)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 80.142 139.334)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 121.708 96.804)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 122.184 65.918)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 120.756 158.575)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 80.618 108.448)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 79.666 170.219)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 121.231 127.689)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 120.28 189.461)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 101.4 87.183)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 101.876 56.297)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 100.449 148.954)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 100.925 118.069)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 99.973 179.84)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 76.374 51.993)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 75.421 113.764)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 116.988 71.234)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 116.036 133.006)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 75.897 82.878)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 74.946 144.65)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 116.512 102.12)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 115.56 163.891)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 96.68 61.614)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 95.729 123.385)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 96.205 92.5)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 95.253 154.271)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 76.136 67.435)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 76.612 36.55)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 75.184 129.207)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 116.75 86.678)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 117.226 55.791)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 115.798 148.448)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 75.66 98.321)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 74.708 160.092)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 116.274 117.563)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 115.322 179.335)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 96.443 77.056)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 96.918 46.17)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 95.49 138.827)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 95.967 107.942)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 95.015 169.713)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 86.527 56.803)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 85.576 118.574)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 86.051 87.689)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 85.1 149.46)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 106.834 66.424)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 105.882 128.196)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 106.358 97.31)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 105.407 159.081)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 86.29 72.246)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 86.765 41.36)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 85.337 134.017)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 85.814 103.132)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 84.861 164.903)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 106.597 81.867)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 107.073 50.981)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 105.645 143.638)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 106.12 112.752)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 105.168 174.524)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 76.255 59.714)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 75.303 121.485)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 116.869 78.956)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 115.917 140.727)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 75.779 90.6)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 74.827 152.372)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 116.393 109.842)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 115.441 171.613)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 96.561 69.335)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 95.61 131.107)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 96.086 100.221)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 95.134 161.992)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 76.017 75.157)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 76.493 44.271)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 75.065 136.928)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 116.631 94.398)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 117.107 63.513)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 115.679 156.17)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 75.54 106.042)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 74.589 167.814)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 116.155 125.284)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 115.203 187.055)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 96.324 84.778)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 96.8 53.892)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 95.372 146.549)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 95.848 115.663)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 94.897 177.435)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 86.408 64.524)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 85.457 126.296)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 85.933 95.41)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 84.98 157.181)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 106.716 74.145)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 105.763 135.917)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 106.239 105.031)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 105.288 166.802)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 86.17 79.967)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 86.646 49.081)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 85.218 141.739)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 85.694 110.853)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 84.742 172.625)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 106.478 89.588)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 106.954 58.702)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 105.526 151.36)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 106.001 120.474)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 105.049 182.246)\" stroke=\"#478BF0\" stroke-width=\".5\" d=\"M0 0h5.618v7.722H0z\"/><path d=\"m110.771 77.98 11.174 5.294-.327 21.272c-.013.829-.63 1.213-1.379.858l-8.463-4.009c-.749-.355-1.345-1.314-1.333-2.142l.328-21.273Zm.232-12.312c.009-.57.168-.993.395-1.228.227-.236.497-.264.747-.145l8.867 4.2c.251.12.516.4.733.847.216.445.36 1.012.351 1.581l-.153 9.9-11.092-5.256.152-9.9Z\" stroke=\"#fff\"/><rect width=\".594\" height=\"4.085\" rx=\".297\" transform=\"matrix(.9037 .42815 -.0154 .99988 120.326 74.8)\" fill=\"#fff\"/><rect width=\".594\" height=\"8.171\" rx=\".297\" transform=\"matrix(.9037 .42815 -.0154 .99988 120.158 85.692)\" fill=\"#fff\"/><path d=\"m85.043 103.228 14.48-4.233 11.347 16.469-2.301-1.09-.226 14.686 7.24 7.752-1.393-.66-.208 13.495-32.075-15.196.339-21.992-2.177-1.031 5.418-2.859.078-5.094-.522-.247Z\" stroke=\"#fff\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"m108.408 124.853-.339 21.992 5.915 2.803.224-14.495\" stroke=\"#fff\"/><path d=\"m96.546 99.85-.297 19.243 12.159 5.761\" stroke=\"#fff\"/><path transform=\"matrix(-.9037 -.42815 -.0154 .99988 108.408 124.853)\" stroke=\"#fff\" d=\"M0 0h17.818v21.994H0z\"/><path transform=\"matrix(-.9037 -.42815 -.0154 .99988 92.305 117.224)\" stroke=\"#fff\" d=\"M0 0h11.273v21.994H0z\"/><mask id=\"a\" fill=\"#fff\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M109.943 140.686c-.249-.118-.455.01-.459.286l-.084 5.426a.844.844 0 0 0 .444.714l2.383 1.129c.249.118.455-.01.459-.286l.084-5.426a.845.845 0 0 0-.444-.714l-2.383-1.129Zm1.114 5.563c.389.184.712-.146.721-.738.009-.591-.299-1.22-.688-1.405-.389-.184-.711.146-.72.738-.009.591.298 1.22.687 1.405Zm-.005.357c.518.245.949-.195.961-.984.012-.788-.399-1.627-.917-1.872-.519-.246-.949.194-.961.983-.012.788.398 1.627.917 1.873Zm-.006.357c.649.307 1.186-.244 1.202-1.229.015-.986-.498-2.034-1.147-2.341-.648-.308-1.186.243-1.201 1.229-.015.985.498 2.034 1.146 2.341Zm1.251-4.442-.939-.445-.011.714.939.445.011-.714Z\"/></mask><path d=\"m109.943 140.686-.015 1 .015-1Zm-.099 6.426-.015 1 .015-1Zm2.383 1.129.015-1-.015 1Zm.099-6.426.015-1-.015 1Zm-2.426 2.807-.903-.429.903.429Zm1.458-2.546.015-1-.903-.428-.016 1 .904.428Zm.939.445.903.428.016-1-.904-.428-.015 1Zm-.95.269-.904-.428-.015.999.903.429.016-1Zm.939.445-.016.999.904.429.015-1-.903-.428Zm-1.899-1.835c-.004.276-.21.404-.459.286l.03-2c-.748-.355-1.365.029-1.378.857l1.807.857Zm-.083 5.426.083-5.426-1.807-.857-.084 5.427 1.808.856Zm-.445-.714c.25.118.449.438.445.714l-1.808-.856c-.013.828.584 1.787 1.333 2.142l.03-2Zm2.383 1.129-2.383-1.129-.03 2 2.382 1.129.031-2Zm-.46.286c.005-.276.21-.404.46-.286l-.031 2c.749.354 1.366-.03 1.379-.858l-1.808-.856Zm.084-5.427-.084 5.427 1.808.856.083-5.426-1.807-.857Zm.444.714a.845.845 0 0 1-.444-.714l1.807.857c.013-.829-.583-1.788-1.332-2.142l-.031 1.999Zm-2.382-1.128 2.382 1.128.031-1.999-2.383-1.129-.03 2Zm.946 3.397a.37.37 0 0 1-.017.116.135.135 0 0 1-.019.037l.012-.008a.139.139 0 0 1 .042-.013.312.312 0 0 1 .181.034l-.031 1.999c.555.263.983.12 1.24-.143s.392-.682.4-1.166l-1.808-.856Zm.201.023a.566.566 0 0 1-.22-.189l-.011-.019.005.014a.543.543 0 0 1 .025.171l1.808.856a3.42 3.42 0 0 0-.359-1.525c-.245-.5-.663-1.045-1.217-1.307l-.031 1.999Zm.198.166a.396.396 0 0 1 .018-.116c.004-.013.009-.022.012-.029l.006-.008-.012.008a.13.13 0 0 1-.041.013.312.312 0 0 1-.181-.034l.031-1.999c-.555-.263-.984-.12-1.24.143-.257.263-.393.682-.4 1.166l1.807.856Zm-.2-.023a.593.593 0 0 1 .22.189.134.134 0 0 1 .011.019l-.005-.014a.594.594 0 0 1-.026-.171l-1.807-.856a3.418 3.418 0 0 0 .358 1.525c.245.5.663 1.045 1.218 1.307l.031-1.999Zm.036-.055c-.003.206-.061.325-.108.373-.048.049-.035-.009.066.039l-.031 1.999c.62.294 1.108.138 1.408-.169.301-.307.464-.803.473-1.385l-1.808-.857Zm-.029-.445c-.101-.047-.112-.118-.066-.025.044.092.098.264.095.47l1.808.857a4.078 4.078 0 0 0-.424-1.811c-.286-.585-.762-1.197-1.382-1.49l-.031 1.999Zm-.041.412c.003-.206.061-.325.108-.373.048-.049.034.009-.067-.039l.031-1.999c-.619-.294-1.107-.138-1.407.169-.301.308-.464.803-.473 1.386l1.808.856Zm.028.445c.101.048.113.118.067.025a1.072 1.072 0 0 1-.095-.47l-1.808-.856a4.06 4.06 0 0 0 .424 1.81c.286.585.762 1.197 1.381 1.49l.031-1.999Zm.277-.301c-.005.305-.091.501-.181.594-.092.093-.137.047-.101.064l-.031 1.999c.684.325 1.231.157 1.575-.195.344-.352.535-.924.545-1.605l-1.807-.857Zm-.258-.913c-.036-.017.01-.019.097.158.087.177.166.451.161.755l1.807.857a4.683 4.683 0 0 0-.488-2.095c-.328-.67-.862-1.35-1.546-1.674l-.031 1.999Zm-.282.658c.005-.305.091-.501.181-.593.091-.094.137-.047.101-.065l.031-1.999c-.685-.325-1.232-.157-1.575.195-.345.352-.535.924-.545 1.605l1.807.857Zm.258.913c.036.017-.011.019-.098-.158a1.725 1.725 0 0 1-.16-.755l-1.807-.857a4.687 4.687 0 0 0 .488 2.096c.328.669.862 1.349 1.546 1.673l.031-1.999Zm.28-2.887.939.444.031-1.999-.939-.445-.031 2Zm.909.142.011-.714-1.808-.856-.011.714 1.808.856Zm.05-.983-.939-.445-.031 2 .939.444.031-1.999Zm-.908-.143-.011.714 1.807.857.011-.714-1.807-.857Z\" fill=\"#fff\" mask=\"url(#a)\"/><mask id=\"b\" fill=\"#fff\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M92.67 108.553v-.032c.006-.354.2-.552.433-.442.233.111.418.488.413.843l-.06 3.921a.92.92 0 0 1-.008.098l-4.248-2.012-.003-.002-.983-.465c-.24-.114-.439.009-.443.275a.814.814 0 0 0 .428.688l.083.039a1.2 1.2 0 0 0 .017.262l.12.71c.106.633.434 1.266.876 1.747-.193.075-.335.312-.397.631l.372.176c.074-.223.218-.306.352-.242.133.063.273.28.339.569l.371.176a2.547 2.547 0 0 0-.18-.657l.007.004 1.579.748.697.311c-.098.116-.17.286-.21.491l.371.176c.074-.223.218-.306.352-.242.134.063.273.28.34.569l.371.176a2.487 2.487 0 0 0-.209-.717l.145.064c.22.098.41.017.462-.197l.36-1.606a.993.993 0 0 0 .022-.232l.07.033c.24.114.438-.01.442-.276a.814.814 0 0 0-.428-.688l-.716-.339.004-.099.06-3.922c.01-.653-.33-1.348-.76-1.552-.43-.203-.786.161-.796.815v.014c-.33-.087-.583.095-.589.455l1.445.684c.005-.335-.206-.72-.5-.953Z\"/></mask><path d=\"m92.67 108.521-.903-.428.904.428Zm0 .032-.261.845-.654-.518.012-.756.903.429Zm.846.369-.904-.429.904.429Zm-.06 3.921.903.428-.904-.428Zm-.008.098.897.54-.106.842-.806-.382.015-1Zm-4.25-2.014-.014 1.001-.002-.001.015-1Zm-.916.537.015-1 .936.443-.049 1.02-.902-.463Zm.017.262-.886-.202.886.202Zm.12.71.885.202-.886-.202Zm.876 1.747.448-.671 1.19 1.297-1.093.425-.545-1.051Zm-.397.631-.015.999-1.082-.512.21-1.087.887.6Zm.372.176.86.699-.205.618-.67-.317.015-1Zm.69.327-.015 1-.67-.318-.184-.802.87.12Zm.372.176.892.243.175 1.27-1.082-.513.015-1Zm-.18-.657-.774.169-.848-1.948 1.639.78-.018.999Zm.007.004-.015 1-.003-.001.018-.999Zm1.579.748.007 1.01-.011-.005-.012-.005.016-1Zm.697.311-.008-1.011 1.723.769-.968 1.147-.747-.905Zm-.21.491-.016.999-1.082-.512.211-1.087.887.6Zm.371.176.86.699-.205.618-.67-.318.015-.999Zm.691.327-.015 1-.67-.318-.184-.802.87.12Zm.372.176.892.243.175 1.27-1.082-.513.015-1Zm-.209-.717-.75.22-.937-1.98 1.68.749.007 1.011Zm.145.064.007 1.01-.007-1.01Zm.462-.197.881.624-.001.008-.002.008-.878-.64Zm.36-1.606-.882-.623.882.623Zm.022-.232-.903-.393-.017-1.05.936.443-.016 1Zm.084-.931.015-.999-.015.999Zm-.716-.339-.016 1-.96-.455.074-1.034.901.489Zm-1.492-4.744.904.428-.013.828-.738-.194-.153-1.062Zm-.589.455-.015 1-.904-.428.015-1 .904.428Zm1.445.684.904.429-.016.999-.903-.428.015-1Zm.404-.557v.032l-1.808-.857v-.031l1.808.856Zm-.487.13c.243.115.387.03.435-.019a.164.164 0 0 0 .052-.111l-1.808-.856c.006-.366.108-.692.313-.902.204-.209.562-.338 1.039-.112l-.031 2Zm-.476-.586c0 .011 0 .063.047.158a.974.974 0 0 0 .429.428l.03-2c.477.226.826.689 1.02 1.088.197.399.287.817.281 1.183l-1.807-.857Zm-.06 3.922.06-3.922 1.807.857-.06 3.921-1.808-.856Zm0-.013v.013l1.807.856a1.982 1.982 0 0 1-.014.21l-1.793-1.079Zm-3.337-2.473 4.249 2.012-.031 2-4.248-2.013.03-1.999Zm-.005-.003.006.003-.031 1.999.025-2.002Zm-.028 2.001-.983-.466.03-1.999.984.465-.031 2Zm-.983-.466c.258.123.472-.01.476-.296l-1.807-.856c.012-.818.622-1.198 1.362-.847l-.031 1.999Zm.476-.296a.876.876 0 0 0-.46-.74l-.031 2c-.74-.351-1.329-1.298-1.316-2.116l1.807.856Zm-.46-.74.082.039-.03 2-.083-.039.03-2Zm-.802 1.099a2.458 2.458 0 0 1-.034-.523l1.805.926v.001l-1.77-.404Zm.12.709-.12-.709 1.772.404.12.71-1.772-.405Zm1.314 2.621c-.661-.72-1.154-1.67-1.314-2.621l1.771.405c.053.316.217.632.439.874l-.896 1.342Zm-.835-.64c.087-.45.307-.914.737-1.082l1.091 2.102c.03-.011.024-.021.003.013a.513.513 0 0 0-.058.166l-1.773-1.199Zm1.242 1.776-.371-.177.03-1.999.372.176-.03 2Zm.352-.242c.247.116.4.053.455.017.06-.039.071-.082.07-.076l-1.722-1.399c.072-.216.193-.412.376-.532.18-.118.472-.19.852-.01l-.03 2Zm-.514-.551c-.002-.008.008.045.065.14.054.088.203.294.45.411l.03-2c.38.18.666.526.839.811.177.291.29.597.354.878l-1.739-.24Zm1.225 1.296-.372-.176.031-2 .372.176-.031 2Zm.608-1.825c.156.358.252.727.3 1.068l-1.785-.486a.99.99 0 0 0-.062-.245l1.547-.337Zm-.784 1.171-.007-.004.035-1.998.008.004-.036 1.998Zm1.581.749-1.578-.748.03-2 1.58.748-.032 2Zm.72.321-.697-.311-.014-2.02.696.31.015 2.021Zm-1.104-1.119c.06-.303.172-.587.349-.797l1.495 1.811a.434.434 0 0 0-.07.185l-1.774-1.199Zm1.243 1.775-.372-.176.031-1.999.372.176-.031 1.999Zm.352-.242c.246.117.4.054.454.018.06-.039.072-.082.07-.076l-1.721-1.399c.072-.216.192-.412.376-.532.18-.118.471-.19.852-.01l-.031 1.999Zm-.515-.55c-.002-.008.008.045.066.14.053.087.202.294.449.41l.03-1.999c.38.18.666.526.84.811.177.291.29.597.354.878l-1.739-.24Zm1.225 1.296-.371-.176.03-2 .372.176-.03 2Zm.557-1.938c.188.396.3.807.35 1.181l-1.783-.486a.948.948 0 0 0-.067-.254l1.5-.441Zm-.598 1.295-.144-.064-.015-2.021.145.065.014 2.02Zm1.333-.567c-.152.616-.7.849-1.333.567l-.014-2.02c-.194-.087-.362-.015-.409.173l1.756 1.28Zm.363-1.623-.36 1.607-1.763-1.247.36-1.606 1.763 1.246Zm.045-.462a1.98 1.98 0 0 1-.045.462l-1.763-1.246v-.002l1.808.786Zm-.888-1.393.069.033-.031 2-.07-.033.032-2Zm.069.033c-.26-.123-.472.01-.477.296l1.808.857c-.013.818-.623 1.197-1.362.847l.03-2Zm-.477.296a.875.875 0 0 0 .46.74l.031-1.999c.74.35 1.33 1.297 1.317 2.116l-1.808-.857Zm.46.74-.716-.339.03-2 .717.34-.03 1.999Zm.207-1.01c0 .054-.003.107-.007.16l-1.802-.978.002-.039 1.808.857Zm.06-3.922-.06 3.922-1.807-.857.06-3.921 1.808.856Zm-1.647-2.98c.575.273 1.011.839 1.27 1.365.258.529.386 1.1.378 1.615l-1.808-.856a.658.658 0 0 0-.05-.275c-.008-.014-.001.003.028.037a.485.485 0 0 0 .151.114l.03-2Zm-1.715 1.387c.007-.515.151-.958.422-1.235.27-.277.718-.424 1.293-.152l-.03 2a.26.26 0 0 0 .151.029c.03-.005.037-.016.03-.008-.017.017-.057.084-.059.222l-1.807-.856Zm0 .014v-.014l1.807.856v.014l-1.808-.856Zm-.59.455c.014-.899.635-1.275 1.34-1.089l.306 2.124a.108.108 0 0 0 .096-.018c.034-.026.065-.079.066-.161l-1.808-.856Zm2.334 2.112-1.445-.684.03-2 1.445.685-.03 1.999Zm-.224-2.798c.633.501 1.156 1.391 1.143 2.227l-1.808-.857a.428.428 0 0 0 .142.32l.523-1.69Z\" fill=\"#fff\" mask=\"url(#b)\"/><mask id=\"c\" fill=\"#fff\"><path d=\"M99.268 116.495c.004-.276.21-.404.46-.286l6.983 3.309c.25.118.448.438.444.714l-.046 2.999-7.887-3.737.046-2.999Z\"/></mask><path d=\"M99.268 116.495c.004-.276.21-.404.46-.286l6.983 3.309c.25.118.448.438.444.714l-.046 2.999-7.887-3.737.046-2.999Z\" stroke=\"#fff\" stroke-width=\"2\" mask=\"url(#c)\"/><mask id=\"d\" fill=\"#fff\"><path d=\"M99.964 114.308c.004-.277.21-.405.46-.286l2.053.973c.25.118.449.438.445.714l-.027 1.749-2.958-1.401.027-1.749Z\"/></mask><path d=\"M99.964 114.308c.004-.277.21-.405.46-.286l2.053.973c.25.118.449.438.445.714l-.027 1.749-2.958-1.401.027-1.749Z\" stroke=\"#fff\" stroke-width=\"2\" mask=\"url(#d)\"/><mask id=\"e\" fill=\"#fff\"><path d=\"M103.251 115.864c.004-.276.21-.404.459-.286l2.383 1.129a.846.846 0 0 1 .444.714l-.027 1.749-3.286-1.557.027-1.749Z\"/></mask><path d=\"M103.251 115.864c.004-.276.21-.404.459-.286l2.383 1.129a.846.846 0 0 1 .444.714l-.027 1.749-3.286-1.557.027-1.749Z\" stroke=\"#fff\" stroke-width=\"2\" mask=\"url(#e)\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 97.335 115.423)\" stroke=\"#fff\" stroke-width=\".727\" d=\"M.323.519h.727v2.272H.323z\"/><path transform=\"matrix(.9037 .42815 -.0154 .99988 97.715 114.229)\" stroke=\"#fff\" stroke-width=\".091\" d=\"M.04.065h.091v1.409H.04z\"/><mask id=\"f\" fill=\"#fff\"><path d=\"m97.664 113.218-.344.844.985.467-.313-1.156-.328-.155Z\"/></mask><path d=\"m97.32 114.062-.844-.745-.462 1.133 1.29.612.016-1Zm.344-.844.015-1-.633-.3-.226.556.844.744Zm.641 1.311-.015 1 1.29.611-.42-1.551-.855-.06Zm-.313-1.156.855.061-.206-.761-.633-.299-.016.999Zm.172 1.433.344-.844-1.688-1.488-.344.843 1.688 1.489Zm.157-1.277-.986-.467-.03 2 .985.467.03-2Zm-1.183-.216.313 1.155 1.709.121-.313-1.155-1.71-.121Zm.87-.939-.329-.156-.03 2 .328.155.03-1.999Z\" fill=\"#fff\" mask=\"url(#f)\"/><ellipse rx=\"2.808\" ry=\"3.86\" transform=\"matrix(.9037 .42815 -.0154 .99988 87.14 128.118)\" fill=\"#fff\"/><path d=\"M86.306 126.945c-22.578-16.658-20.504-65.023 21.354-47.68m-1.152 57.986c10.025-2.069 17.696 21.461 1.442 31.631\" stroke=\"#fff\" stroke-dasharray=\"2 2\"/><path d=\"M106.449 139.339c-.017 1.114-.329 1.961-.799 2.441-.469.481-1.07.576-1.684.285-.614-.291-1.204-.95-1.652-1.865a7.113 7.113 0 0 1-.713-3.157c.017-1.114.33-1.961.799-2.441.47-.481 1.071-.576 1.685-.285.614.291 1.204.95 1.652 1.865.447.915.73 2.044.712 3.157Zm-.468 38.806c-.468.366-2.188.439-4.295-1.359-3.137-2.676-4.147-7.353-4.279-9.266.318.425 1.15 1.408 1.934 1.941-.636-1.686-1.048-5.099-.75-7.859.546 1.009 1.847 1.786 2.429 2.049-.574-1.188-1.647-4.241-1.354-6.959 1.804 3.504 3.637 3.496 4.684 5.347 1.047 1.851.407 2.726 1.065 4.939.03-1.438.769-3.276 1.134-4.015 0 0 .046 2.823.356 4.287s1.086 2.219 1.128 4.355c.034 1.71-.982 3.683-1.494 4.455.26.12 1.007.206 1.915-.408-.227 1.384-2.005 2.127-2.473 2.493Z\" stroke=\"#fff\"/><path d=\"M60.702 158.284c1.598-2.798 3.76-9.724 4.64-12.837-1.746-.242-11.935 1.942-18.787 2.252l2.522.888c-1.23.189-2.75.806-6.365 2.893l-15.066 8.698c1.62-.674.723.208 3.613 1.04-4.55 3.252-6.66 11.659-9.575 16.468l14.497-4.464 1.354 2.344c3.766-2.174 7.234-4.587 10.623-7.695 4.596-4.217 4.985-4.702 6.517-6.108l1.015 1.758c.78-.97 3.413-2.439 5.012-5.237Z\" fill=\"#B9B9B9\"/><path d=\"M60.702 158.284c1.598-2.798 3.76-9.724 4.64-12.837-1.746-.242-2.925 4.053-8.425 6.053v5c-1.23.189-1.884 3.412-5.5 5.5s-6.985.47-10.5 2.5c-1 .577-6.273 4.668-3.382 5.5-4.55 3.252-12.936 2.877-15.851 7.686l14.497-4.464 1.354 2.344c3.766-2.174 7.234-4.587 10.623-7.695 4.596-4.217 4.985-4.702 6.517-6.108l1.015 1.758c.78-.97 3.413-2.439 5.012-5.237Z\" fill=\"#8B8B8B\"/><path d=\"M82.917 136c-6.2.979-23.364 13.12-34.27 21.268-.741.554-.057 1.646.77 1.232 22.4-17.2 29.5-19.5 32-19.5-1.2-1.6.667-2.333 1.5-3Z\" fill=\"#FFF2E2\"/></svg>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.ECOGESTURE_DOCTYPE = void 0;
+const ECOGESTURE_DOCTYPE = 'com.grandlyon.ecolyo.ecogesture';
+exports.ECOGESTURE_DOCTYPE = ECOGESTURE_DOCTYPE;
 
 /***/ }),
-/* 998 */
-/***/ (function(module, exports) {
+/* 841 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#a)\">\n|     <ellipse opacity=\".4\" cx=\"91.466\" cy=\"203.813\" rx=\"79.536\" ry=\"7.187\" fill=\"#000\"/>");
+"use strict";
 
-/***/ }),
-/* 999 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"221\" height=\"220\" viewBox=\"0 0 221 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g clip-path=\"url(#clip0_4070_18371)\">\n| <g opacity=\"0.6\" filter=\"url(#filter0_f_4070_18371)\">");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.EXPLORATION_DOCTYPE = void 0;
+const EXPLORATION_DOCTYPE = 'com.grandlyon.ecolyo.exploration';
+exports.EXPLORATION_DOCTYPE = EXPLORATION_DOCTYPE;
 
 /***/ }),
-/* 1000 */
-/***/ (function(module, exports) {
+/* 842 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"220\" viewBox=\"0 0 220 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g clip-path=\"url(#clip0_15201_1173)\">\n| <g opacity=\"0.1\" filter=\"url(#filter0_f_15201_1173)\">");
+"use strict";
 
-/***/ }),
-/* 1001 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"221\" viewBox=\"0 0 220 221\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g clip-path=\"url(#clip0_15179_1604)\">\n| <path opacity=\"0.55\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M17.4847 146.047C17.0114 145.762 16.8586 145.148 17.1432 144.674L21.2919 137.777C21.5766 137.304 22.191 137.151 22.6643 137.436C23.1375 137.721 23.2904 138.335 23.0057 138.808L18.8571 145.705C18.5724 146.179 17.958 146.331 17.4847 146.047ZM29.9307 125.356C29.4575 125.071 29.3046 124.457 29.5893 123.983L37.8866 110.189C38.1713 109.716 38.7857 109.563 39.259 109.848C39.7323 110.133 39.8852 110.747 39.6005 111.22L31.3031 125.014C31.0184 125.488 30.404 125.64 29.9307 125.356ZM46.5255 97.7678C46.0522 97.4831 45.8993 96.8687 46.184 96.3954L54.4814 82.6014C54.766 82.1282 55.3805 81.9753 55.8537 82.26C56.327 82.5446 56.4799 83.1591 56.1952 83.6323L47.8978 97.4263C47.6132 97.8996 46.9987 98.0525 46.5255 97.7678ZM63.1202 70.1798C62.6469 69.8951 62.4941 69.2807 62.7787 68.8074L71.0761 55.0134C71.3608 54.5402 71.9752 54.3873 72.4485 54.672C72.9217 54.9566 73.0746 55.5711 72.7899 56.0443L64.4926 69.8383C64.2079 70.3116 63.5935 70.4645 63.1202 70.1798ZM79.7149 42.5918C79.2417 42.3071 79.0888 41.6927 79.3735 41.2194L87.6708 27.4254C87.9555 26.9522 88.5699 26.7993 89.0432 27.084C89.5165 27.3687 89.6693 27.9831 89.3847 28.4563L81.0873 42.2503C80.8026 42.7236 80.1882 42.8765 79.7149 42.5918ZM96.3096 15.0038C95.8364 14.7191 95.6835 14.1047 95.9682 13.6315L100.117 6.73445C100.402 6.2612 101.016 6.10831 101.489 6.39299C101.963 6.67766 102.115 7.2921 101.831 7.76536L97.682 14.6624C97.3973 15.1356 96.7829 15.2885 96.3096 15.0038ZM26.742 104.049C26.4659 104.528 26.6298 105.139 27.1081 105.415C27.5864 105.691 28.1979 105.528 28.4741 105.049L32.8491 97.4715C33.1252 96.9932 32.9614 96.3816 32.4831 96.1055C32.0048 95.8293 31.3932 95.9932 31.117 96.4715L26.742 104.049ZM39.867 81.3161C39.5909 81.7943 39.7548 82.4059 40.2331 82.6821C40.7114 82.9582 41.3229 82.7943 41.5991 82.3161L50.3491 67.1606C50.6252 66.6823 50.4613 66.0707 49.9831 65.7946C49.5048 65.5184 48.8932 65.6823 48.617 66.1606L39.867 81.3161ZM57.367 51.0052C57.0909 51.4835 57.2548 52.0951 57.7331 52.3712C58.2113 52.6473 58.8229 52.4835 59.0991 52.0052L67.8491 36.8497C68.1252 36.3714 67.9613 35.7598 67.4831 35.4837C67.0048 35.2076 66.3932 35.3714 66.117 35.8497L57.367 51.0052ZM74.867 20.6943C74.5909 21.1726 74.7548 21.7842 75.2331 22.0603C75.7113 22.3364 76.3229 22.1726 76.5991 21.6943L80.9741 14.1166C81.2502 13.6383 81.0863 13.0267 80.6081 12.7505C80.1298 12.4744 79.5182 12.6383 79.242 13.1166L74.867 20.6943ZM93.9106 142.811C93.627 143.284 93.7813 143.899 94.2552 144.182C94.729 144.466 95.3431 144.312 95.6268 143.838L99.1828 137.896C99.4664 137.422 99.3122 136.808 98.8383 136.525C98.3644 136.241 97.7503 136.395 97.4667 136.869L93.9106 142.811ZM104.579 124.986C104.295 125.46 104.449 126.074 104.923 126.357C105.397 126.641 106.011 126.487 106.295 126.013L113.407 114.13C113.691 113.656 113.536 113.042 113.062 112.758C112.589 112.475 111.974 112.629 111.691 113.103L104.579 124.986ZM118.803 101.22C118.519 101.693 118.673 102.308 119.147 102.591C119.621 102.875 120.235 102.721 120.519 102.247L127.631 90.3636C127.915 89.8897 127.76 89.2756 127.287 88.9919C126.813 88.7083 126.199 88.8626 125.915 89.3365L118.803 101.22ZM133.027 77.4533C132.743 77.9272 132.898 78.5413 133.371 78.8249C133.845 79.1086 134.459 78.9543 134.743 78.4804L138.299 72.5388C138.583 72.065 138.429 71.4509 137.955 71.1672C137.481 70.8836 136.867 71.0379 136.583 71.5117L133.027 77.4533ZM85.4266 184.119C85.1505 184.597 85.3143 185.208 85.7926 185.485C86.2709 185.761 86.8825 185.597 87.1587 185.119L90.7837 178.84C91.0598 178.362 90.8959 177.75 90.4176 177.474C89.9393 177.198 89.3278 177.362 89.0516 177.84L85.4266 184.119ZM96.3016 165.283C96.0255 165.761 96.1893 166.372 96.6676 166.649C97.1459 166.925 97.7575 166.761 98.0337 166.283L105.284 153.725C105.56 153.247 105.396 152.635 104.918 152.359C104.439 152.083 103.828 152.247 103.552 152.725L96.3016 165.283ZM110.802 140.168C110.525 140.646 110.689 141.258 111.168 141.534C111.646 141.81 112.258 141.646 112.534 141.168L119.784 128.61C120.06 128.132 119.896 127.521 119.418 127.244C118.939 126.968 118.328 127.132 118.052 127.61L110.802 140.168ZM125.302 115.053C125.025 115.531 125.189 116.143 125.668 116.419C126.146 116.695 126.758 116.531 127.034 116.053L134.284 103.496C134.56 103.017 134.396 102.406 133.918 102.13C133.439 101.854 132.828 102.017 132.552 102.496L125.302 115.053ZM139.802 89.9383C139.525 90.4166 139.689 91.0282 140.168 91.3043C140.646 91.5805 141.258 91.4166 141.534 90.9383L148.784 78.3809C149.06 77.9026 148.896 77.291 148.418 77.0149C147.939 76.7388 147.328 76.9026 147.052 77.3809L139.802 89.9383ZM154.302 64.8236C154.025 65.3019 154.189 65.9134 154.668 66.1896C155.146 66.4657 155.758 66.3019 156.034 65.8236L159.659 59.5449C159.935 59.0666 159.771 58.455 159.293 58.1789C158.814 57.9027 158.203 58.0666 157.927 58.5449L154.302 64.8236ZM66.3538 91.1217C65.8887 90.8238 65.7533 90.2053 66.0512 89.7403L70.6296 82.5938C70.9275 82.1287 71.546 81.9933 72.011 82.2912C72.4761 82.5891 72.6115 83.2076 72.3136 83.6726L67.7352 90.8191C67.4373 91.2842 66.8188 91.4196 66.3538 91.1217ZM80.0889 69.6823C79.6238 69.3843 79.4884 68.7658 79.7863 68.3008L84.3647 61.1543C84.6626 60.6893 85.2811 60.5538 85.7461 60.8517C86.2112 61.1497 86.3466 61.7682 86.0487 62.2332L81.4703 69.3797C81.1724 69.8447 80.5539 69.9802 80.0889 69.6823ZM131.825 127.754C131.543 128.229 131.699 128.843 132.174 129.125C132.649 129.406 133.263 129.25 133.545 128.775L138.074 121.143C138.356 120.668 138.199 120.054 137.724 119.772C137.249 119.491 136.636 119.647 136.354 120.122L131.825 127.754ZM145.413 104.858C145.131 105.333 145.287 105.946 145.762 106.228C146.237 106.51 146.851 106.353 147.133 105.878L156.191 90.6139C156.473 90.1389 156.317 89.5254 155.842 89.2436C155.367 88.9617 154.753 89.1182 154.471 89.5932L145.413 104.858ZM163.53 74.3288C163.248 74.8037 163.405 75.4173 163.88 75.6991C164.355 75.981 164.968 75.8244 165.25 75.3495L174.309 60.0851C174.591 59.6101 174.434 58.9966 173.959 58.7148C173.484 58.4329 172.871 58.5894 172.589 59.0644L163.53 74.3288ZM181.647 43.8C181.366 44.2749 181.522 44.8884 181.997 45.1703C182.472 45.4522 183.086 45.2956 183.367 44.8207L187.897 37.1885C188.179 36.7135 188.022 36.1 187.547 35.8182C187.072 35.5363 186.459 35.6928 186.177 36.1678L181.647 43.8ZM62.3893 125.785C61.9102 125.51 61.7446 124.899 62.0195 124.42L66.2406 117.062C66.5154 116.582 67.1265 116.417 67.6056 116.692C68.0846 116.967 68.2502 117.578 67.9754 118.057L63.7543 125.415C63.4795 125.894 62.8683 126.06 62.3893 125.785ZM75.0526 103.71C74.5735 103.435 74.408 102.824 74.6828 102.345L83.125 87.6284C83.3998 87.1494 84.011 86.9838 84.49 87.2586C84.9691 87.5334 85.1346 88.1445 84.8598 88.6236L76.4176 103.34C76.1428 103.819 75.5317 103.985 75.0526 103.71ZM91.937 74.2769C91.458 74.0021 91.2924 73.3909 91.5672 72.9119L100.009 58.1953C100.284 57.7163 100.895 57.5507 101.374 57.8255C101.854 58.1003 102.019 58.7114 101.744 59.1905L93.302 73.9071C93.0272 74.3861 92.4161 74.5517 91.937 74.2769ZM108.821 44.8438C108.342 44.569 108.177 43.9578 108.452 43.4788L112.673 36.1205C112.948 35.6414 113.559 35.4759 114.038 35.7507C114.517 36.0255 114.682 36.6366 114.408 37.1157L110.186 44.4739C109.912 44.953 109.301 45.1186 108.821 44.8438ZM127.323 162.106C127.041 162.581 127.198 163.195 127.673 163.476C128.148 163.758 128.761 163.601 129.043 163.126L132.517 157.268C132.799 156.793 132.642 156.179 132.167 155.898C131.692 155.616 131.079 155.773 130.797 156.248L127.323 162.106ZM137.746 144.531C137.464 145.006 137.621 145.62 138.096 145.902C138.571 146.183 139.184 146.027 139.466 145.552L146.415 133.835C146.696 133.36 146.54 132.747 146.064 132.465C145.589 132.183 144.976 132.34 144.694 132.815L137.746 144.531ZM151.643 121.098C151.361 121.573 151.518 122.187 151.993 122.469C152.468 122.75 153.081 122.594 153.363 122.119L160.312 110.402C160.594 109.927 160.437 109.314 159.962 109.032C159.487 108.75 158.873 108.907 158.592 109.382L151.643 121.098ZM165.54 97.6654C165.259 98.1404 165.415 98.7539 165.89 99.0356C166.365 99.3174 166.979 99.1607 167.26 98.6856L170.735 92.8274C171.016 92.3524 170.86 91.7389 170.385 91.4572C169.91 91.1755 169.296 91.3322 169.015 91.8072L165.54 97.6654ZM57.2772 158.629C56.7996 158.351 56.6373 157.739 56.9147 157.262L60.6956 150.753C60.973 150.275 61.585 150.113 62.0625 150.39C62.5401 150.668 62.7024 151.28 62.425 151.757L58.6442 158.266C58.3668 158.744 57.7547 158.906 57.2772 158.629ZM68.6196 139.102C68.1421 138.824 67.9798 138.212 68.2572 137.735L75.8188 124.716C76.0962 124.239 76.7083 124.076 77.1858 124.354C77.6634 124.631 77.8257 125.243 77.5483 125.721L69.9866 138.739C69.7092 139.217 69.0972 139.379 68.6196 139.102ZM83.7429 113.065C83.2654 112.788 83.1031 112.176 83.3805 111.698L90.9421 98.68C91.2195 98.2024 91.8316 98.0401 92.3091 98.3175C92.7867 98.5949 92.949 99.2069 92.6716 99.6845L85.1099 112.703C84.8325 113.18 84.2205 113.343 83.7429 113.065ZM98.8662 87.0287C98.3887 86.7514 98.2264 86.1393 98.5038 85.6618L106.065 72.6436C106.343 72.166 106.955 72.0037 107.432 72.2811C107.91 72.5585 108.072 73.1706 107.795 73.6481L100.233 86.6663C99.9558 87.1439 99.3438 87.3061 98.8662 87.0287ZM113.99 60.9924C113.512 60.715 113.35 60.103 113.627 59.6254L117.408 53.1163C117.685 52.6387 118.297 52.4765 118.775 52.7539C119.252 53.0312 119.415 53.6433 119.137 54.1208L115.356 60.6299C115.079 61.1075 114.467 61.2698 113.99 60.9924ZM123.042 195.434C122.762 195.91 122.921 196.523 123.397 196.803C123.874 197.083 124.486 196.924 124.766 196.447L128.443 190.19C128.722 189.714 128.563 189.101 128.087 188.821C127.611 188.542 126.998 188.701 126.718 189.177L123.042 195.434ZM134.071 176.662C133.792 177.139 133.951 177.751 134.427 178.031C134.903 178.311 135.516 178.152 135.796 177.676L143.149 165.161C143.429 164.685 143.27 164.072 142.793 163.792C142.317 163.512 141.704 163.672 141.425 164.148L134.071 176.662ZM148.778 151.633C148.498 152.109 148.657 152.722 149.133 153.002C149.609 153.282 150.222 153.123 150.502 152.646L157.855 140.132C158.135 139.656 157.976 139.043 157.5 138.763C157.023 138.483 156.411 138.643 156.131 139.119L148.778 151.633ZM163.484 126.604C163.204 127.08 163.363 127.693 163.84 127.973C164.316 128.253 164.929 128.094 165.208 127.617L172.561 115.103C172.841 114.627 172.682 114.014 172.206 113.734C171.73 113.454 171.117 113.613 170.837 114.09L163.484 126.604ZM178.19 101.575C177.91 102.051 178.07 102.664 178.546 102.944C179.022 103.224 179.635 103.064 179.915 102.588L187.268 90.0737C187.547 89.5976 187.388 88.9848 186.912 88.705C186.436 88.4252 185.823 88.5844 185.543 89.0606L178.19 101.575ZM192.896 76.546C192.617 77.0222 192.776 77.635 193.252 77.9148C193.728 78.1946 194.341 78.0354 194.621 77.5592L198.297 71.3019C198.577 70.8257 198.418 70.2129 197.942 69.9331C197.466 69.6534 196.853 69.8126 196.573 70.2887L192.896 76.546ZM87.8806 131.265C87.4011 130.991 87.2344 130.38 87.5083 129.9L91.9527 122.119C92.2266 121.64 92.8374 121.473 93.317 121.747C93.7965 122.021 93.9632 122.632 93.6893 123.111L89.2449 130.892C88.971 131.372 88.3602 131.539 87.8806 131.265ZM101.214 107.922C100.734 107.648 100.567 107.037 100.841 106.558L109.73 90.9958C110.004 90.5162 110.615 90.3495 111.094 90.6234C111.574 90.8974 111.741 91.5082 111.467 91.9877L102.578 107.55C102.304 108.029 101.693 108.196 101.214 107.922ZM118.991 76.7982C118.512 76.5243 118.345 75.9135 118.619 75.4339L127.508 59.8721C127.782 59.3925 128.392 59.2258 128.872 59.4997C129.352 59.7737 129.518 60.3845 129.244 60.8641L120.356 76.4259C120.082 76.9055 119.471 77.0722 118.991 76.7982ZM136.769 45.6746C136.289 45.4006 136.123 44.7898 136.396 44.3102L140.841 36.5293C141.115 36.0498 141.726 35.883 142.205 36.157C142.685 36.4309 142.851 37.0417 142.577 37.5213L138.133 45.3022C137.859 45.7818 137.248 45.9485 136.769 45.6746ZM153.893 168.213C153.613 168.689 153.772 169.302 154.249 169.582C154.725 169.862 155.338 169.702 155.617 169.226L159.265 163.015C159.545 162.539 159.386 161.926 158.91 161.647C158.434 161.367 157.821 161.526 157.541 162.002L153.893 168.213ZM164.837 149.581C164.558 150.057 164.717 150.67 165.193 150.95C165.669 151.23 166.282 151.07 166.562 150.594L173.858 138.173C174.138 137.697 173.979 137.084 173.502 136.804C173.026 136.524 172.413 136.684 172.134 137.16L164.837 149.581ZM179.43 124.739C179.15 125.215 179.31 125.828 179.786 126.107C180.262 126.387 180.875 126.228 181.155 125.751L188.451 113.33C188.731 112.854 188.571 112.241 188.095 111.961C187.619 111.682 187.006 111.841 186.727 112.317L179.43 124.739ZM194.023 99.8959C193.743 100.372 193.902 100.985 194.379 101.265C194.855 101.544 195.468 101.385 195.747 100.909L203.044 88.4875C203.324 88.0113 203.164 87.3985 202.688 87.1188C202.212 86.839 201.599 86.9983 201.319 87.4745L194.023 99.8959ZM208.616 75.0532C208.336 75.5294 208.495 76.1422 208.971 76.4219C209.448 76.7017 210.06 76.5424 210.34 76.0662L213.988 69.8555C214.268 69.3793 214.109 68.7665 213.633 68.4868C213.156 68.2071 212.544 68.3663 212.264 68.8425L208.616 75.0532Z\" fill=\"url(#paint0_radial_15179_1604)\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.FLUIDSPRICES_DOCTYPE = void 0;
+const FLUIDSPRICES_DOCTYPE = 'com.grandlyon.ecolyo.fluidsprices';
+exports.FLUIDSPRICES_DOCTYPE = FLUIDSPRICES_DOCTYPE;
 
 /***/ }),
-/* 1002 */
-/***/ (function(module, exports) {
+/* 843 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"221\" viewBox=\"0 0 220 221\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g clip-path=\"url(#clip0_15162_4927)\">\n| <g opacity=\"0.75\" filter=\"url(#filter0_f_15162_4927)\">");
+"use strict";
 
-/***/ }),
-/* 1003 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"221\" viewBox=\"0 0 220 221\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g clip-path=\"url(#clip0_15174_1062)\">\n| <path opacity=\"0.5\" d=\"M11.2079 179.653C9.5871 175.286 24.2075 172.305 27.5842 171.622L29.6434 171.008C48.4398 165.394 68.0795 163.144 87.6584 164.359L92.5544 164.663C146.582 164.663 184.806 171.622 189.533 176.399C194.26 181.175 183.912 182.737 189.533 185.341C194.155 187.482 212.657 188.128 211.982 196.316C211.307 204.503 157.249 199.597 150.496 203.009C143.743 206.42 160.626 208.467 157.249 213.243C154.894 216.575 102.547 215.972 93.0921 213.243C83.6373 210.514 96.1369 206.975 97.8195 203.009C99.8455 198.232 83.6373 199.597 65.4032 199.597C47.169 199.597 10.0254 198.232 5.298 194.821C0.570619 191.409 10.0254 188.68 13.4021 187.316C16.7788 185.951 13.2339 185.111 11.2079 179.653Z\" fill=\"url(#paint0_radial_15174_1062)\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.PROFILE_DOCTYPE = void 0;
+const PROFILE_DOCTYPE = 'com.grandlyon.ecolyo.profile';
+exports.PROFILE_DOCTYPE = PROFILE_DOCTYPE;
 
 /***/ }),
-/* 1004 */
-/***/ (function(module, exports) {
+/* 844 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"221\" viewBox=\"0 0 220 221\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M197 178.161C197 184.739 181.39 189.25 162.133 189.25C142.877 189.25 128 184.739 128 178.161C128 171.583 142.877 166.25 162.133 166.25C181.39 166.25 197 171.583 197 178.161Z\" fill=\"#1E1E1E\"/>\n| <path opacity=\"0.3\" d=\"M143.079 178.422C142.612 177.103 146.829 176.203 147.803 175.997C153.614 174.181 159.71 173.452 165.785 173.847L166.545 173.896C182.129 173.896 193.155 175.997 194.519 177.439C195.883 178.881 192.898 179.353 194.519 180.139C195.852 180.785 201.19 180.98 200.995 183.452C200.8 185.924 185.207 184.443 183.258 185.473C181.31 186.502 186.181 187.12 185.207 188.562C184.527 189.568 169.427 189.386 166.7 188.562C163.972 187.738 167.578 186.67 168.063 185.473C168.648 184.031 163.972 184.443 158.712 184.443C153.453 184.443 142.738 184.031 141.374 183.001C140.011 181.971 142.738 181.147 143.712 180.735C144.686 180.323 143.664 180.07 143.079 178.422Z\" fill=\"url(#paint0_radial_15162_4928)\"/>");
+"use strict";
 
-/***/ }),
-/* 1005 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"221\" viewBox=\"0 0 220 221\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g clip-path=\"url(#clip0_15199_973)\">\n| <g filter=\"url(#filter0_f_15199_973)\">");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.PROFILEECOGESTURE_DOCTYPE = void 0;
+const PROFILEECOGESTURE_DOCTYPE = 'com.grandlyon.ecolyo.profileecogesture';
+exports.PROFILEECOGESTURE_DOCTYPE = PROFILEECOGESTURE_DOCTYPE;
 
 /***/ }),
-/* 1006 */
-/***/ (function(module, exports) {
+/* 845 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"221\" viewBox=\"0 0 220 221\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n| <g clip-path=\"url(#clip0_15171_992)\">\n| <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M104.263 24.2585C104.607 23.656 105.256 23.25 106 23.25C106.811 23.25 107.509 23.7325 107.823 24.426C108.195 24.3116 108.59 24.25 109 24.25C111.209 24.25 113 26.0409 113 28.25C113 28.6597 112.938 29.0549 112.824 29.4271C113.518 29.7411 114 30.4392 114 31.25C114 31.9938 113.594 32.6427 112.992 32.9873C112.997 33.0742 113 33.1617 113 33.25C113 35.4591 111.209 37.25 109 37.25C107.805 37.25 106.733 36.7262 106 35.8958C105.267 36.7262 104.195 37.25 103 37.25C102.361 37.25 101.757 37.1002 101.221 36.8338C100.884 37.0948 100.46 37.25 100 37.25C98.8954 37.25 98 36.3546 98 35.25C98 34.5062 98.406 33.8573 99.0085 33.5127C99.0029 33.4258 99 33.3383 99 33.25C99 31.9974 99.5757 30.8794 100.477 30.1459C100.173 29.5817 100 28.936 100 28.25C100 26.0409 101.791 24.25 104 24.25C104.088 24.25 104.176 24.2529 104.263 24.2585Z\" fill=\"#EFEFEF\"/>");
+"use strict";
 
-/***/ }),
-/* 1007 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"221\" viewBox=\"0 0 220 221\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g clip-path=\"url(#clip0_15183_1717)\">\n| <path d=\"M153 105.25C153.526 105.25 153.952 105.158 153.952 105.044L155 88.25L151 88.25L152.048 105.044C152.048 105.158 152.474 105.25 153 105.25Z\" fill=\"#D9D9D9\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.PROFILETYPE_DOCTYPE = void 0;
+const PROFILETYPE_DOCTYPE = 'com.grandlyon.ecolyo.profiletype';
+exports.PROFILETYPE_DOCTYPE = PROFILETYPE_DOCTYPE;
 
 /***/ }),
-/* 1008 */
-/***/ (function(module, exports) {
+/* 846 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"101\" height=\"100\" viewBox=\"0 0 101 100\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M51.0752 77.0338L56.5748 80.3312L66.2919 67.8889L65.3576 66.2707L61.757 64.3941L51.0752 77.0338Z\" fill=\"#1A1A1A\"/>\n| <path d=\"M56.5752 80.3307L66.4062 67.463L69.3229 71.892L60.1453 84.0229L56.5752 80.3307Z\" fill=\"#454545\"/>");
+"use strict";
 
-/***/ }),
-/* 1009 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"120\" height=\"121\" viewBox=\"0 0 120 121\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M60 16.7964C86.065 16.7964 106.811 35.0141 106.811 56.8585C106.811 78.7029 86.065 96.9206 60 96.9206C55.3658 96.9206 50.5528 96.1278 46.1696 94.9428C45.4687 94.7682 44.7344 94.7733 44.036 94.9578C43.3377 95.1423 42.6982 95.4999 42.178 95.9971C37.3905 100.547 33.8627 102.668 29.1476 103.904C26.9773 104.473 22.7899 104.338 19.8366 104.566C20.4323 103.9 20.9898 103.546 21.5685 102.85C24.9134 98.8015 27.9646 94.5211 28.8838 89.6715C29.0104 88.9435 28.9418 88.1953 28.6849 87.5019C28.428 86.8084 27.9917 86.194 27.4199 85.7201C18.5046 78.4246 13.1895 68.1982 13.1895 56.8585C13.1895 35.0141 33.935 16.7964 60 16.7964Z\" fill=\"#3E2200\"/>\n| <path d=\"M58.6997 15.496C84.0407 15.496 104.21 33.3089 104.21 54.6679C104.21 76.0269 84.0407 93.8398 58.6997 93.8398C54.1942 93.8398 49.5149 93.0646 45.2535 91.9059C44.572 91.7351 43.8582 91.7402 43.1792 91.9205C42.5002 92.1009 41.8785 92.4506 41.3727 92.9367C36.7183 97.3858 33.2884 99.4599 28.7043 100.668C26.5943 101.225 22.5232 101.093 19.6519 101.315C20.2311 100.664 20.7731 100.318 21.3358 99.6372C24.5877 95.6788 27.5541 91.4936 28.4478 86.7517C28.5709 86.0399 28.5042 85.3083 28.2545 84.6303C28.0047 83.9522 27.5806 83.3515 27.0246 82.8881C18.3569 75.7547 13.1895 65.7556 13.1895 54.6679C13.1895 33.3089 33.3588 15.496 58.6997 15.496Z\" fill=\"#F1C017\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.QUIZ_DOCTYPE = void 0;
+const QUIZ_DOCTYPE = 'com.grandlyon.ecolyo.quiz';
+exports.QUIZ_DOCTYPE = QUIZ_DOCTYPE;
 
 /***/ }),
-/* 1010 */
-/***/ (function(module, exports) {
+/* 847 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"100\" height=\"100\" viewBox=\"0 0 100 100\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g clip-path=\"url(#clip0_15248_1397)\">\n| <path d=\"M88.717 87.6148C90.8649 85.4669 91.1918 83.0186 90.8383 81.9579L79.8781 39.885L41.3408 78.4224L83.0601 89.7361C84.1208 90.0896 86.5691 89.7626 88.717 87.6148Z\" fill=\"url(#paint0_linear_15248_1397)\"/>");
+"use strict";
 
-/***/ }),
-/* 1011 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g clip-path=\"url(#clip0_12059_7514)\">\n| <path d=\"M10.7429 1.0755C14.5566 -1.87438 18.6962 1.72741 19.6252 7.3338C20.326 7.3338 21.0105 7.52937 21.6298 7.88792C22.4773 6.91006 23.2269 5.57365 22.9336 4.07427C22.2491 0.570272 26.1768 -2.26552 29.909 2.57488C32.8589 6.38853 29.2571 10.5281 23.6344 11.4571C23.6344 12.1579 23.4551 12.8587 23.0803 13.478C24.0581 14.3092 25.3945 15.0589 26.8939 14.7655C30.3653 14.081 33.2174 17.9925 28.377 21.7409C24.5634 24.6908 20.4238 21.089 19.4948 15.4826C18.794 15.4826 18.1095 15.2708 17.5065 14.9122C16.659 15.8901 15.893 17.2428 16.1864 18.7422C16.8709 22.2299 12.9431 25.0819 9.21097 20.2415C6.2448 16.4116 9.86287 12.272 15.4856 11.3593C15.4856 10.6585 15.6974 9.97402 16.056 9.35471C15.0781 8.52353 13.7417 7.75754 12.226 8.0509C8.75463 8.7354 5.90254 4.82396 10.7429 1.0755ZM8.15162 26.0761H11.4112C12.2756 26.0761 13.1047 26.4195 13.716 27.0308C14.3273 27.6421 14.6707 28.4711 14.6707 29.3356V39.1142H11.4112V35.8547H8.15162V39.1142H4.89209V29.3356C4.89209 28.4711 5.2355 27.6421 5.84678 27.0308C6.45806 26.4195 7.28714 26.0761 8.15162 26.0761ZM8.15162 29.3356V32.5952H11.4112V29.3356H8.15162ZM21.0757 26.0761H24.4493L19.6741 39.1142H16.3004L21.0757 26.0761ZM29.3386 26.0761H34.2279V29.3356H29.3386V35.8547H34.2279V39.1142H29.3386C28.4741 39.1142 27.645 38.7708 27.0337 38.1595C26.4225 37.5482 26.079 36.7192 26.079 35.8547V29.3356C26.079 28.4711 26.4225 27.6421 27.0337 27.0308C27.645 26.4195 28.4741 26.0761 29.3386 26.0761Z\" fill=\"black\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.SCHEMAS_DOCTYPE = void 0;
+const SCHEMAS_DOCTYPE = 'com.grandlyon.ecolyo.schemas';
+exports.SCHEMAS_DOCTYPE = SCHEMAS_DOCTYPE;
 
 /***/ }),
-/* 1012 */
-/***/ (function(module, exports) {
+/* 848 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M10 2C8.89543 2 8 2.89543 8 4V35C8 35.9835 8.7099 36.8012 9.64524 36.9686C9.65764 36.9349 9.67069 36.9012 9.68439 36.8676L12.13 30.8676C12.5904 29.7383 13.6886 29 14.9081 29L25.1646 29.0001C26.3025 29.0001 27.3425 29.6438 27.8498 30.6623L30.839 36.6622C30.8597 36.7039 30.8794 36.7456 30.898 36.7876C31.5516 36.4586 32 35.7816 32 35V4C32 2.89543 31.1046 2 30 2H10ZM30.4248 36.9548C30.4141 36.9315 30.403 36.9083 30.3914 36.8852L27.4023 30.8853C26.9795 30.0365 26.1129 29.5001 25.1646 29.5001L14.9081 29.5C13.8918 29.5 12.9767 30.1152 12.5931 31.0564L10.1704 37H30C30.1458 37 30.2879 36.9844 30.4248 36.9548ZM16.5 35C17.3284 35 18 34.3284 18 33.5C18 32.6716 17.3284 32 16.5 32C15.6716 32 15 32.6716 15 33.5C15 34.3284 15.6716 35 16.5 35ZM25 33.5C25 34.3284 24.3284 35 23.5 35C22.6716 35 22 34.3284 22 33.5C22 32.6716 22.6716 32 23.5 32C24.3284 32 25 32.6716 25 33.5ZM20.8549 8.48117L20 9L19.1451 8.48117L20 7.07258L20.8549 8.48117ZM20 23C17.5838 23 15.625 21.0412 15.625 18.625C15.625 16.7598 18.232 12.0388 19.4211 9.98246C19.7724 9.37494 20 9 20 9C20 9 20.2275 9.37494 20.5789 9.98246C21.768 12.0388 24.375 16.7598 24.375 18.625C24.375 21.0412 22.4162 23 20 23ZM20 23C18.5503 23 17.375 21.8982 17.375 20.5391C17.375 19.1799 20 15.125 20 15.125C20 15.125 22.625 19.1799 22.625 20.5391C22.625 21.8982 21.4497 23 20 23ZM20.855 8.48138C20.8549 8.48126 20.8549 8.48117 20 9C19.1451 8.48117 19.1451 8.48126 19.145 8.48138L19.1448 8.48175L19.144 8.48299L19.1413 8.48741L19.1313 8.50397L19.0934 8.56693C19.0605 8.6218 19.0126 8.702 18.9518 8.80459C18.8302 9.00974 18.657 9.30465 18.4494 9.66579C18.0347 10.3873 17.4805 11.3768 16.9252 12.4452C16.3715 13.5105 15.8084 14.6697 15.3814 15.7273C14.9725 16.7397 14.625 17.8061 14.625 18.625C14.625 21.5935 17.0315 24 20 24C22.9685 24 25.375 21.5935 25.375 18.625C25.375 17.8061 25.0275 16.7397 24.6186 15.7273C24.1916 14.6697 23.6285 13.5105 23.0748 12.4452C22.5195 11.3768 21.9653 10.3873 21.5506 9.66579C21.343 9.30465 21.1698 9.00974 21.0482 8.80459C20.9874 8.702 20.9395 8.6218 20.9066 8.56693L20.8687 8.50397L20.8587 8.48741L20.856 8.48299L20.8552 8.48175L20.855 8.48138Z\" fill=\"#121212\"/>\n| </svg>");
+"use strict";
 
-/***/ }),
-/* 1013 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M5.25953 29.8167H34.5953V8.62977C34.5953 8.19752 34.4236 7.78299 34.118 7.47735C33.8123 7.17171 33.3978 7 32.9655 7H6.8893C6.45706 7 6.04252 7.17171 5.73688 7.47735C5.43124 7.78299 5.25953 8.19752 5.25953 8.62977V29.8167ZM3.62977 33.0762H36.2251C37.8548 33.0762 37.8548 31.4465 37.8548 31.4465H2C2 31.4465 2 33.0762 3.62977 33.0762Z\" stroke=\"black\" stroke-width=\"2\"/>\n| </svg>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.USAGEEVENT_DOCTYPE = void 0;
+const USAGEEVENT_DOCTYPE = 'com.grandlyon.ecolyo.usageevent';
+exports.USAGEEVENT_DOCTYPE = USAGEEVENT_DOCTYPE;
 
 /***/ }),
-/* 1014 */
-/***/ (function(module, exports) {
+/* 849 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M17 13C17 14.6569 15.6569 16 14 16C12.3431 16 11 14.6569 11 13C11 11.3431 12.3431 10 14 10C15.6569 10 17 11.3431 17 13Z\" fill=\"black\"/>\n| <path d=\"M14 30C15.6569 30 17 28.6569 17 27C17 25.3431 15.6569 24 14 24C12.3431 24 11 25.3431 11 27C11 28.6569 12.3431 30 14 30Z\" fill=\"black\"/>");
+"use strict";
 
-/***/ }),
-/* 1015 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <rect x=\"3\" y=\"8\" width=\"34\" height=\"1\" rx=\"0.5\" fill=\"#121212\"/>\n| <path d=\"M7 10V33H13C13 30 12 27.5 10 25.5C17.5 22 20 13.3333 20 10H7Z\" fill=\"#121212\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.USERCHALLENGE_DOCTYPE = void 0;
+const USERCHALLENGE_DOCTYPE = 'com.grandlyon.ecolyo.userchallenge';
+exports.USERCHALLENGE_DOCTYPE = USERCHALLENGE_DOCTYPE;
 
 /***/ }),
-/* 1016 */
-/***/ (function(module, exports) {
+/* 850 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M29.4529 3.25977H9.89576C9.03128 3.25977 8.20221 3.60318 7.59092 4.21446C6.97964 4.82574 6.63623 5.65481 6.63623 6.5193V32.5955C6.63623 33.46 6.97964 34.2891 7.59092 34.9004C8.20221 35.5117 9.03128 35.8551 9.89576 35.8551H29.4529C30.3174 35.8551 31.1465 35.5117 31.7578 34.9004C32.3691 34.2891 32.7125 33.46 32.7125 32.5955V6.5193C32.7125 5.65481 32.3691 4.82574 31.7578 4.21446C31.1465 3.60318 30.3174 3.25977 29.4529 3.25977ZM16.4148 6.5193C16.8471 6.5193 17.2616 6.691 17.5672 6.99664C17.8729 7.30228 18.0446 7.71682 18.0446 8.14906C18.0446 8.5813 17.8729 8.99584 17.5672 9.30148C17.2616 9.60712 16.8471 9.77883 16.4148 9.77883C15.9826 9.77883 15.568 9.60712 15.2624 9.30148C14.9568 8.99584 14.7851 8.5813 14.7851 8.14906C14.7851 7.71682 14.9568 7.30228 15.2624 6.99664C15.568 6.691 15.9826 6.5193 16.4148 6.5193ZM11.5255 6.5193C11.9578 6.5193 12.3723 6.691 12.6779 6.99664C12.9836 7.30228 13.1553 7.71682 13.1553 8.14906C13.1553 8.5813 12.9836 8.99584 12.6779 9.30148C12.3723 9.60712 11.9578 9.77883 11.5255 9.77883C11.0933 9.77883 10.6787 9.60712 10.3731 9.30148C10.0675 8.99584 9.89576 8.5813 9.89576 8.14906C9.89576 7.71682 10.0675 7.30228 10.3731 6.99664C10.6787 6.691 11.0933 6.5193 11.5255 6.5193ZM29.4529 32.5955H9.89576V13.0384H29.4529V32.5955ZM24.0258 24.9845C24.0584 26.1254 23.6021 27.2336 22.7872 28.0485C22.3785 28.4575 21.8933 28.782 21.3592 29.0033C20.825 29.2247 20.2525 29.3387 19.6744 29.3387C19.0962 29.3387 18.5237 29.2247 17.9895 29.0033C17.4554 28.782 16.9702 28.4575 16.5615 28.0485C15.7466 27.2336 15.2903 26.1254 15.3229 24.9845C15.437 23.8274 15.8118 22.7192 16.4148 21.725C17.0178 20.3723 17.7349 19.1174 18.5824 17.9277L19.6744 16.2979C22.5916 20.519 24.0258 23.4037 24.0258 24.9845Z\" fill=\"black\"/>\n| </svg>");
+"use strict";
 
-/***/ }),
-/* 1017 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M10.2595 4H29.8167C30.6812 4 31.5103 4.34341 32.1215 4.95469C32.7328 5.56597 33.0762 6.39505 33.0762 7.25953V33.3358C33.0762 34.2003 32.7328 35.0293 32.1215 35.6406C31.5103 36.2519 30.6812 36.5953 29.8167 36.5953H10.2595C9.39505 36.5953 8.56597 36.2519 7.95469 35.6406C7.34341 35.0293 7 34.2003 7 33.3358V7.25953C7 6.39505 7.34341 5.56597 7.95469 4.95469C8.56597 4.34341 9.39505 4 10.2595 4ZM11.8893 7.25953C11.4571 7.25953 11.0425 7.43124 10.7369 7.73688C10.4312 8.04252 10.2595 8.45706 10.2595 8.8893C10.2595 9.32154 10.4312 9.73607 10.7369 10.0417C11.0425 10.3474 11.4571 10.5191 11.8893 10.5191C12.3215 10.5191 12.7361 10.3474 13.0417 10.0417C13.3474 9.73607 13.5191 9.32154 13.5191 8.8893C13.5191 8.45706 13.3474 8.04252 13.0417 7.73688C12.7361 7.43124 12.3215 7.25953 11.8893 7.25953ZM16.7786 7.25953C16.3464 7.25953 15.9318 7.43124 15.6262 7.73688C15.3205 8.04252 15.1488 8.45706 15.1488 8.8893C15.1488 9.32154 15.3205 9.73607 15.6262 10.0417C15.9318 10.3474 16.3464 10.5191 16.7786 10.5191C17.2108 10.5191 17.6254 10.3474 17.931 10.0417C18.2366 9.73607 18.4084 9.32154 18.4084 8.8893C18.4084 8.45706 18.2366 8.04252 17.931 7.73688C17.6254 7.43124 17.2108 7.25953 16.7786 7.25953ZM20.0381 13.7786C17.4447 13.7786 14.9575 14.8088 13.1236 16.6427C11.2898 18.4765 10.2595 20.9637 10.2595 23.5572C10.2595 26.1506 11.2898 28.6379 13.1236 30.4717C14.9575 32.3055 17.4447 33.3358 20.0381 33.3358C22.6316 33.3358 25.1188 32.3055 26.9526 30.4717C28.7865 28.6379 29.8167 26.1506 29.8167 23.5572C29.8167 20.9637 28.7865 18.4765 26.9526 16.6427C25.1188 14.8088 22.6316 13.7786 20.0381 13.7786ZM13.6063 18.7135C13.6394 18.2179 14.0668 17.853 14.5636 17.853H15.5897C16.2105 17.853 16.6723 18.4133 16.6389 19.0332C16.5557 20.5803 16.9578 21.5812 17.7239 22.4C19.337 23.9692 20.132 25.9079 19.9545 28.4061C19.9194 28.8995 19.4931 29.2614 18.9984 29.2614H17.9675C17.3467 29.2614 16.8849 28.7011 16.9183 28.0812C17.0015 26.534 16.5994 25.5332 15.8333 24.7143C14.2213 23.1462 13.4394 21.2092 13.6063 18.7135ZM20.1254 18.7135C20.1585 18.2179 20.5859 17.853 21.0826 17.853H22.1087C22.7295 17.853 23.1913 18.4133 23.158 19.0332C23.0747 20.5803 23.4769 21.5812 24.2429 22.4C25.8561 23.9692 26.6511 25.9079 26.4736 28.4061C26.4385 28.8995 26.0121 29.2614 25.5174 29.2614H24.4866C23.8658 29.2614 23.404 28.7011 23.4373 28.0812C23.5206 26.534 23.1184 25.5332 22.3524 24.7143C20.7403 23.1462 19.9585 21.2092 20.1254 18.7135Z\" fill=\"black\"/>\n| </svg>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.EGL_DAY_DOCTYPE = void 0;
+const EGL_DAY_DOCTYPE = 'com.grandlyon.egl.day';
+exports.EGL_DAY_DOCTYPE = EGL_DAY_DOCTYPE;
 
 /***/ }),
-/* 1018 */
-/***/ (function(module, exports) {
+/* 851 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M20 3.00132C12.8224 3.00132 7 8.78631 7 15.9253C7 23.0604 12.8237 28.8481 20 28.8507C27.175 28.8481 33 23.0604 33 15.9253C33 8.78499 27.1723 3 20 3V3.00132ZM20 4.48313C26.351 4.48313 31.5096 9.6069 31.5096 15.9253C31.5096 22.2425 26.3536 27.3662 20 27.3689C16.9476 27.3689 14.0203 26.1633 11.8619 24.0173C9.70358 21.8714 8.49103 18.9608 8.49103 15.926C8.49103 12.8912 9.70358 9.98063 11.8619 7.83467C14.0203 5.68871 16.9476 4.48313 20 4.48313ZM16.7291 6.66436C15.1712 6.81583 13.6172 8.81134 14.5764 10.6159C15.4772 12.3071 17.3531 12.1438 17.9294 14.0734C18.4659 13.3411 19.5271 12.5139 21.3248 13.374C22.4879 9.09057 20.0331 6.35087 16.7291 6.66436ZM27.3684 13.9088C25.4475 13.8363 24.6168 15.5276 22.6495 15.0613C23.0165 15.8871 23.2218 17.2346 21.5725 18.3542C24.7215 21.4956 28.309 20.7383 29.6881 17.7365C30.3359 16.3205 29.4218 13.9825 27.3697 13.9088H27.3684ZM19.6688 14.2381C18.8872 14.3961 18.303 15.1008 18.303 15.9253C18.303 16.8684 19.0515 17.6126 20 17.6126C20.9485 17.6126 21.697 16.8684 21.697 15.9253C21.697 14.9823 20.9485 14.2381 20 14.2381C19.8808 14.2381 19.7801 14.2143 19.6688 14.2381ZM17.1014 16.0492C12.7906 17.1885 11.6566 20.6869 13.5828 23.3752C14.4916 24.641 17.0034 24.9822 18.095 23.2514C19.119 21.6339 18.0287 20.1034 19.4198 18.6413C18.5176 18.5452 17.2511 18.0275 17.1014 16.0492ZM17.3505 30.4142C17.3505 33.0498 12.0514 33.5016 12.0514 35.6828V37H27.9486V35.6828C27.9486 33.5016 22.6495 33.0498 22.6495 30.4142C22.6495 30.4142 22.1475 30.8264 20 30.8264C17.8525 30.8264 17.3505 30.4142 17.3505 30.4142Z\" fill=\"black\"/>\n| </svg>");
+"use strict";
 
-/***/ }),
-/* 1019 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M5 35H9C9 35.5523 8.55228 36 8 36H6C5.44772 36 5 35.5523 5 35Z\" fill=\"black\"/>\n| <path d=\"M31 35H35C35 35.5523 34.5523 36 34 36H32C31.4477 36 31 35.5523 31 35Z\" fill=\"black\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.EGL_MONTH_DOCTYPE = void 0;
+const EGL_MONTH_DOCTYPE = 'com.grandlyon.egl.month';
+exports.EGL_MONTH_DOCTYPE = EGL_MONTH_DOCTYPE;
 
 /***/ }),
-/* 1020 */
-/***/ (function(module, exports) {
+/* 852 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M10 16C10 15.4477 10.4477 15 11 15H14C14.5523 15 15 15.4477 15 16V18H16V16C16 15.4477 16.4477 15 17 15H20C20.5523 15 21 15.4477 21 16V18H22V16C22 15.4477 22.4477 15 23 15H26C26.5523 15 27 15.4477 27 16V18H28V16C28 15.4477 28.4477 15 29 15H32C32.5523 15 33 15.4477 33 16V18H34C34.5523 18 35 18.4477 35 19C35 19.5523 34.5523 20 34 20H33V27H34C34.5523 27 35 27.4477 35 28C35 28.5523 34.5523 29 34 29H33V31C33 31.5523 32.5523 32 32 32H29C28.4477 32 28 31.5523 28 31V29H27V31C27 31.5523 26.5523 32 26 32H23C22.4477 32 22 31.5523 22 31V29H21V31C21 31.5523 20.5523 32 20 32H17C16.4477 32 16 31.5523 16 31V29H15V31C15 31.3706 14.7984 31.6941 14.4989 31.8668C14.4996 31.8279 14.5 31.789 14.5 31.75C14.5 29.913 13.2795 28.5575 12.229 27.3906L12.1159 27.2649C11.3601 26.424 10.5995 25.5709 10 24.5358L10 20C9.44772 20 9 19.5523 9 19C9 18.4477 9.44772 18 10 18V16ZM10 26.3203C10.4497 26.9071 10.923 27.4337 11.3712 27.9323L11.372 27.9333C12.5182 29.209 13.5 30.3019 13.5 31.75C13.5 31.8336 13.498 31.9169 13.4941 32H11C10.4477 32 10 31.5523 10 31L10 29C9.44772 29 9 28.5523 9 28C9 27.4477 9.44772 27 10 27L10 26.3203ZM28 20V27H27V20H28ZM22 20V27H21V20H22ZM16 20V27H15V20H16Z\" fill=\"#121212\"/>\n| <path d=\"M15.3106 4H14.9556C14.4583 4 14.0287 4.36553 14.0072 4.8623C13.9257 6.74296 14.5375 8.21449 15.7586 9.41286C16.3158 10.0138 16.6267 10.739 16.615 11.8197C16.6083 12.4399 17.0646 13 17.6848 13H18.0445C18.5397 13 18.9683 12.6375 18.9916 12.1428C19.0805 10.2597 18.4589 8.7866 17.2368 7.58714C16.6796 6.98619 16.3686 6.26103 16.3804 5.18027C16.3871 4.56012 15.9307 4 15.3106 4Z\" fill=\"black\"/>");
+"use strict";
 
-/***/ }),
-/* 1021 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <rect x=\"6\" y=\"24\" width=\"2\" height=\"2\" rx=\"1\" fill=\"#121212\"/>\n| <rect x=\"32\" y=\"24\" width=\"2\" height=\"2\" rx=\"1\" fill=\"#121212\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.EGL_YEAR_DOCTYPE = void 0;
+const EGL_YEAR_DOCTYPE = 'com.grandlyon.egl.year';
+exports.EGL_YEAR_DOCTYPE = EGL_YEAR_DOCTYPE;
 
 /***/ }),
-/* 1022 */
-/***/ (function(module, exports) {
+/* 853 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M12.1661 16.5298C11.6463 16.8436 10.9296 16.91 10.4988 16.4822L9.65911 15.6484C9.28075 15.2727 9.25959 14.6597 9.66787 14.3168C10.4005 13.7013 11.5055 13.0381 12.8624 13.0381C14.1662 13.0381 15.1277 13.6737 15.8122 14.13C16.3175 14.4723 16.6434 14.6679 16.9368 14.6679C17.1637 14.6679 17.4045 14.5732 17.6296 14.4378C18.1511 14.1241 18.87 14.0587 19.3004 14.489L20.1285 15.3171C20.5045 15.6932 20.5245 16.3043 20.1177 16.6468C19.386 17.2628 18.2833 17.9274 16.9368 17.9274C15.6493 17.9274 14.704 17.3081 14.0195 16.8518C13.4817 16.4932 13.172 16.2976 12.8624 16.2976C12.6343 16.2976 12.3922 16.3932 12.1661 16.5298ZM12.8624 24.4465C13.172 24.4465 13.4817 24.642 14.0195 25.0006C14.704 25.4569 15.6493 26.0762 16.9368 26.0762C18.2941 26.0762 19.391 25.4125 20.1189 24.7969C20.525 24.4535 20.5045 23.842 20.1285 23.4659L19.3004 22.6378C18.87 22.2075 18.1481 22.2696 17.627 22.5839C17.4001 22.7208 17.1591 22.8167 16.9368 22.8167C16.6434 22.8167 16.3175 22.6211 15.8122 22.2789C15.1277 21.8225 14.1662 21.1869 12.8624 21.1869C11.504 21.1869 10.398 21.8517 9.66535 22.4677C9.25827 22.81 9.27831 23.4211 9.65439 23.7972L10.5078 24.6506C10.9292 25.072 11.6235 25.0166 12.129 24.7008C12.3663 24.5526 12.6221 24.4465 12.8624 24.4465ZM36.0865 9.77857V29.3358C36.0865 31.1285 34.6197 32.5953 32.827 32.5953H6.75074C4.958 32.5953 3.49121 31.1285 3.49121 29.3358V9.77857C3.49121 7.98583 4.958 6.51904 6.75074 6.51904H32.827C34.6197 6.51904 36.0865 7.98583 36.0865 9.77857ZM23.0484 9.77857H6.75074V29.3358H23.0484V9.77857ZM31.1972 26.0762C31.1972 25.1799 30.4638 24.4465 29.5675 24.4465C28.6711 24.4465 27.9377 25.1799 27.9377 26.0762C27.9377 26.9726 28.6711 27.706 29.5675 27.706C30.4638 27.706 31.1972 26.9726 31.1972 26.0762ZM31.1972 19.5572C31.1972 18.6608 30.4638 17.9274 29.5675 17.9274C28.6711 17.9274 27.9377 18.6608 27.9377 19.5572C27.9377 20.4535 28.6711 21.1869 29.5675 21.1869C30.4638 21.1869 31.1972 20.4535 31.1972 19.5572ZM31.1972 11.4083H27.9377V14.6679H31.1972V11.4083Z\" fill=\"black\"/>\n| </svg>");
+"use strict";
 
-/***/ }),
-/* 1023 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M25.7714 6.27598L25.6335 6.42525C25.0024 7.11492 24.6132 7.50794 24.292 7.76302C23.9865 7.36436 23.6835 6.96378 23.3831 6.5613C22.837 5.85463 22.3836 5.34257 21.9187 4.95145C21.3519 4.47152 20.7888 4.19565 20.1823 4.19565C19.863 4.19565 19.5531 4.27501 19.2546 4.4205C18.5233 4.77573 17.9111 5.44272 17.0911 6.58964C16.9872 6.73324 16.7283 7.10358 16.5734 7.32654L16.4543 7.4966L16.254 7.77435L16.2238 7.75168C15.8856 7.49282 15.4793 7.09791 14.8086 6.39691L14.6782 6.26087C13.6711 5.20275 13.3971 4.925 12.9758 4.58111C12.6319 4.30146 12.3352 4.12196 12.0121 4.0426C11.7173 3.96167 11.4027 3.9969 11.1331 4.14102C10.8634 4.28515 10.6594 4.52719 10.5629 4.81729C10.0481 6.24554 9.7866 7.75267 9.79007 9.27083C9.79007 16.2355 13.5993 21.0084 20.1823 21.0084C26.7653 21.0084 30.5745 16.2355 30.5745 9.27083C30.578 7.7525 30.3158 6.24527 29.7998 4.81729C29.7042 4.52714 29.5004 4.28497 29.2309 4.14107C28.9614 3.99716 28.6468 3.96258 28.3525 4.04449C28.0313 4.12574 27.7403 4.30902 27.4077 4.59244C26.9996 4.93822 26.7464 5.20653 25.7714 6.27409V6.27598Z\" fill=\"#121212\"/>\n| <path d=\"M19 19.1333C19 18.8328 19.158 18.5445 19.4393 18.3319C19.7206 18.1194 20.1022 18 20.5 18C20.8978 18 21.2794 18.1194 21.5607 18.3319C21.842 18.5445 22 18.8328 22 19.1333V33.8667C22 34.1672 21.842 34.4555 21.5607 34.6681C21.2794 34.8806 20.8978 35 20.5 35C20.1022 35 19.7206 34.8806 19.4393 34.6681C19.158 34.4555 19 34.1672 19 33.8667V19.1333Z\" fill=\"#121212\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.ENEDIS_DAY_DOCTYPE = void 0;
+const ENEDIS_DAY_DOCTYPE = 'com.grandlyon.enedis.day';
+exports.ENEDIS_DAY_DOCTYPE = ENEDIS_DAY_DOCTYPE;
 
 /***/ }),
-/* 1024 */
-/***/ (function(module, exports) {
+/* 854 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M12.2595 1H28.5572C29.4217 1 30.2507 1.34341 30.862 1.95469C31.4733 2.56597 31.8167 3.39505 31.8167 4.25953V12.4084H9V4.25953C9 3.39505 9.34341 2.56597 9.95469 1.95469C10.566 1.34341 11.395 1 12.2595 1ZM31.8167 34.1107C31.8167 34.9752 31.4733 35.8043 30.862 36.4155C30.2507 37.0268 29.4217 37.3702 28.5572 37.3702V39H25.2977V37.3702H15.5191V39H12.2595V37.3702C11.395 37.3702 10.566 37.0268 9.95469 36.4155C9.34341 35.8043 9 34.9752 9 34.1107V14.0381H31.8167V34.1107ZM13.8893 5.8893V9.14883H17.1488V5.8893H13.8893ZM13.8893 17.2977V22.1869H17.1488V17.2977H13.8893Z\" fill=\"black\"/>\n| </svg>");
+"use strict";
 
-/***/ }),
-/* 1025 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M23.6437 30.9951C23.1757 32.4827 21.9554 33.703 20.4677 34.171C17.9437 34.9734 15.5534 33.7866 14.4669 31.7974C13.8818 30.7109 14.751 29.4071 15.988 29.4071H16.0047C16.573 29.4071 17.1413 29.6745 17.4088 30.176C17.693 30.7109 18.2446 31.0786 18.8965 31.0786C19.8158 31.0786 20.568 30.3264 20.568 29.4071C20.568 28.4877 19.8158 27.7355 18.8965 27.7355H4.67155C3.7522 27.7355 3 26.9833 3 26.064C3 25.1446 3.7522 24.3924 4.67155 24.3924H18.8798C22.156 24.3924 24.7302 27.5684 23.6437 30.9951ZM31.266 10.4684C31.0146 9.42181 30.4788 8.46511 29.7177 7.70402C28.9566 6.94294 27.9999 6.40712 26.9534 6.15577C24.0114 5.48715 21.3202 7.04169 20.2337 9.46545C19.7155 10.5854 20.5179 11.8558 21.7381 11.8558C22.39 11.8558 22.9918 11.488 23.2425 10.903C23.4317 10.4425 23.7537 10.0487 24.1675 9.77185C24.5813 9.495 25.0681 9.3476 25.566 9.34844C26.9534 9.34844 28.0733 10.4684 28.0733 11.8558C28.0733 13.2432 26.9534 14.3631 25.566 14.3631H4.67155C3.7522 14.3631 3 15.1153 3 16.0347C3 16.954 3.7522 17.7062 4.67155 17.7062H25.566C29.2434 17.7062 32.1352 14.2962 31.266 10.4684ZM30.4135 19.3778H4.67155C3.7522 19.3778 3 20.13 3 21.0493C3 21.9687 3.7522 22.7209 4.67155 22.7209H30.5806C31.968 22.7209 33.088 23.8408 33.088 25.2282C33.0888 25.7261 32.9414 26.2129 32.6646 26.6267C32.3877 27.0405 31.9939 27.3625 31.5334 27.5517C30.9317 27.8024 30.5806 28.4042 30.5806 29.0561C30.5806 30.2763 31.851 31.0786 32.971 30.5772C34.1951 30.0292 35.1946 29.0784 35.8029 27.8831C36.4112 26.6878 36.5916 25.3201 36.3141 24.008C35.7457 21.2666 33.205 19.3778 30.4135 19.3778Z\" fill=\"black\"/>\n| </svg>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.ENEDIS_MAXPOWER_DOCTYPE = void 0;
+const ENEDIS_MAXPOWER_DOCTYPE = 'com.grandlyon.enedis.maxpower';
+exports.ENEDIS_MAXPOWER_DOCTYPE = ENEDIS_MAXPOWER_DOCTYPE;
 
 /***/ }),
-/* 1026 */
-/***/ (function(module, exports) {
+/* 855 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M24.6504 18.9449C25.8713 20.1694 26.5569 21.828 26.5569 23.5572C26.5569 25.2863 25.8713 26.945 24.6504 28.1694C23.4259 29.3904 21.7673 30.076 20.0381 30.076C18.309 30.076 16.6503 29.3904 15.4259 28.1694L24.6504 18.9449ZM10.2595 4H29.8167C30.6812 4 31.5103 4.34341 32.1215 4.95469C32.7328 5.56597 33.0762 6.39505 33.0762 7.25953V33.3358C33.0762 34.2003 32.7328 35.0293 32.1215 35.6406C31.5103 36.2519 30.6812 36.5953 29.8167 36.5953H10.2595C9.39505 36.5953 8.56597 36.2519 7.95469 35.6406C7.34341 35.0293 7 34.2003 7 33.3358V7.25953C7 6.39505 7.34341 5.56597 7.95469 4.95469C8.56597 4.34341 9.39505 4 10.2595 4ZM11.8893 7.25953C11.4571 7.25953 11.0425 7.43124 10.7369 7.73688C10.4312 8.04252 10.2595 8.45706 10.2595 8.8893C10.2595 9.32154 10.4312 9.73607 10.7369 10.0417C11.0425 10.3474 11.4571 10.5191 11.8893 10.5191C12.3215 10.5191 12.7361 10.3474 13.0417 10.0417C13.3474 9.73607 13.5191 9.32154 13.5191 8.8893C13.5191 8.45706 13.3474 8.04252 13.0417 7.73688C12.7361 7.43124 12.3215 7.25953 11.8893 7.25953ZM16.7786 7.25953C16.3464 7.25953 15.9318 7.43124 15.6262 7.73688C15.3205 8.04252 15.1488 8.45706 15.1488 8.8893C15.1488 9.32154 15.3205 9.73607 15.6262 10.0417C15.9318 10.3474 16.3464 10.5191 16.7786 10.5191C17.2108 10.5191 17.6254 10.3474 17.931 10.0417C18.2366 9.73607 18.4084 9.32154 18.4084 8.8893C18.4084 8.45706 18.2366 8.04252 17.931 7.73688C17.6254 7.43124 17.2108 7.25953 16.7786 7.25953ZM20.0381 13.7786C17.4447 13.7786 14.9575 14.8088 13.1236 16.6427C11.2898 18.4765 10.2595 20.9637 10.2595 23.5572C10.2595 26.1506 11.2898 28.6379 13.1236 30.4717C14.9575 32.3055 17.4447 33.3358 20.0381 33.3358C22.6316 33.3358 25.1188 32.3055 26.9526 30.4717C28.7865 28.6379 29.8167 26.1506 29.8167 23.5572C29.8167 20.9637 28.7865 18.4765 26.9526 16.6427C25.1188 14.8088 22.6316 13.7786 20.0381 13.7786Z\" fill=\"black\"/>\n| </svg>");
+"use strict";
 
-/***/ }),
-/* 1027 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"129\" height=\"141\" viewBox=\"0 0 129 141\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g filter=\"url(#filter0_d_197_40913)\">\n| <path d=\"M61.0994 119.566C62.9581 120.335 65.11 120.335 66.9687 119.566C114.606 99.8594 113.654 72.4807 111.107 32.8161C110.845 28.735 107.541 25.5346 103.481 25.0432C90.8337 23.5123 79.2366 19.4496 68.3262 13.2958C65.6652 11.7949 62.4029 11.7949 59.7419 13.2958C48.8315 19.4496 37.2343 23.5123 24.5869 25.0432C20.5271 25.5346 17.2227 28.735 16.9606 32.8161C14.4141 72.4807 13.4625 99.8594 61.0994 119.566Z\" fill=\"url(#paint0_linear_197_40913)\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.ENEDIS_MINUTE_DOCTYPE = void 0;
+const ENEDIS_MINUTE_DOCTYPE = 'com.grandlyon.enedis.minute';
+exports.ENEDIS_MINUTE_DOCTYPE = ENEDIS_MINUTE_DOCTYPE;
 
 /***/ }),
-/* 1028 */
-/***/ (function(module, exports) {
+/* 856 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"36\" height=\"37\" viewBox=\"0 0 36 37\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M5.97661 26.7152C5.13891 26.3949 5.11375 25.219 5.93697 24.8632L16.771 20.1806C16.9957 20.0835 17.2482 20.0722 17.4808 20.1488L30.0566 24.2942C30.8752 24.564 30.9918 25.6737 30.2473 26.1078L21.6606 31.1144C20.6145 31.7243 19.3484 31.8275 18.2174 31.3951L5.97661 26.7152Z\" fill=\"#B4B4B4\"/>\n| <path d=\"M19.2733 4.65094C18.95 3.78302 17.7224 3.78302 17.3991 4.65094L9.68188 25.0531C12.2099 25.6385 15.4927 26.5 18.1759 26.5C20.8886 26.5 24.214 25.625 26.7528 25.0339L19.2733 4.65094Z\" fill=\"#B4B4B4\"/>");
+"use strict";
 
-/***/ }),
-/* 1029 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"36\" height=\"37\" viewBox=\"0 0 36 37\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M5.97661 26.7152C5.13891 26.3949 5.11375 25.219 5.93697 24.8632L16.771 20.1806C16.9957 20.0835 17.2482 20.0722 17.4808 20.1488L30.0566 24.2942C30.8752 24.564 30.9918 25.6737 30.2473 26.1078L21.6606 31.1144C20.6145 31.7243 19.3484 31.8275 18.2174 31.3951L5.97661 26.7152Z\" fill=\"#F1933B\"/>\n| <path d=\"M5.54136 25.2229C5.64668 25.3588 5.7919 25.471 5.97664 25.5416L18.2174 30.2215C19.3485 30.6539 20.6145 30.5507 21.6606 29.9408L30.2473 24.9342C30.3643 24.8661 30.46 24.7812 30.535 24.6855C30.8799 25.1317 30.8065 25.8388 30.2473 26.1649L21.6606 31.1714C20.6145 31.7813 19.3485 31.8846 18.2174 31.4521L5.97664 26.7723C5.30835 26.5168 5.15719 25.7167 5.54136 25.2229Z\" fill=\"#D06400\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.ENEDIS_MONTH_DOCTYPE = void 0;
+const ENEDIS_MONTH_DOCTYPE = 'com.grandlyon.enedis.month';
+exports.ENEDIS_MONTH_DOCTYPE = ENEDIS_MONTH_DOCTYPE;
 
 /***/ }),
-/* 1030 */
-/***/ (function(module, exports) {
+/* 857 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M14.0437 11.9096L15.2927 10.8732L15.8694 10.6476C15.837 10.6916 15.8145 10.7324 15.7989 10.7669L15.7902 10.7913C15.9369 10.8764 16.1359 10.9737 16.3749 11.0745C16.8532 11.2763 17.4272 11.465 17.9323 11.5838C18.4925 11.7156 19.2387 11.8957 19.9671 12.1926C20.693 12.4885 21.4761 12.9294 22.0668 13.6295C22.2027 13.7905 22.3212 14.0163 22.3412 14.2962C22.3423 14.3126 22.3431 14.3288 22.3436 14.3449L19.5338 14.1875C19.4312 14.1378 19.3239 14.0902 19.2121 14.0446C18.6444 13.8132 18.0369 13.6631 17.4743 13.5307C16.8566 13.3854 16.1759 13.1613 15.5975 12.9173C15.3081 12.7952 15.0282 12.6614 14.787 12.5215C14.5695 12.3954 14.2943 12.2146 14.0952 11.9756C14.0771 11.9539 14.06 11.9319 14.0437 11.9096Z\" fill=\"#B4B4B4\"/>\n| <path d=\"M13.8501 15.3497L15.0991 14.3133L15.6758 14.0876C15.6434 14.1317 15.6209 14.1725 15.6053 14.207L15.5966 14.2313C15.7433 14.3164 15.9423 14.4138 16.1813 14.5146C16.6596 14.7164 17.2336 14.9051 17.7387 15.0239C18.2989 15.1557 19.0451 15.3357 19.7735 15.6326C20.4994 15.9286 21.2825 16.3694 21.8732 17.0695C22.0091 17.2305 22.1276 17.4563 22.1476 17.7363C22.1487 17.7527 22.1495 17.7689 22.15 17.7849L19.3402 17.6276C19.2376 17.5778 19.1303 17.5302 19.0185 17.4847C18.4508 17.2533 17.8432 17.1031 17.2806 16.9707C16.663 16.8254 15.9822 16.6013 15.4039 16.3573C15.1145 16.2352 14.8346 16.1014 14.5934 15.9616C14.3759 15.8354 14.1007 15.6547 13.9016 15.4156C13.8835 15.394 13.8664 15.372 13.8501 15.3497Z\" fill=\"#B4B4B4\"/>");
+"use strict";
 
-/***/ }),
-/* 1031 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M14.0437 11.9096L15.2927 10.8732L15.8694 10.6476C15.837 10.6916 15.8145 10.7324 15.7989 10.7669L15.7902 10.7913C15.9369 10.8764 16.1359 10.9737 16.3749 11.0745C16.8532 11.2763 17.4272 11.465 17.9323 11.5838C18.4925 11.7156 19.2387 11.8957 19.9671 12.1926C20.693 12.4885 21.4761 12.9294 22.0668 13.6295C22.2027 13.7905 22.3212 14.0163 22.3412 14.2962C22.3423 14.3126 22.3431 14.3288 22.3436 14.3449L19.5338 14.1875C19.4312 14.1378 19.3239 14.0902 19.2121 14.0446C18.6444 13.8132 18.0369 13.6631 17.4743 13.5307C16.8566 13.3854 16.1759 13.1613 15.5975 12.9173C15.3081 12.7952 15.0282 12.6614 14.787 12.5215C14.5695 12.3954 14.2943 12.2146 14.0952 11.9756C14.0771 11.9539 14.06 11.9319 14.0437 11.9096Z\" fill=\"#E4A400\"/>\n| <path d=\"M13.8501 15.3497L15.0991 14.3133L15.6758 14.0876C15.6434 14.1317 15.6209 14.1725 15.6053 14.207L15.5966 14.2313C15.7433 14.3164 15.9423 14.4138 16.1813 14.5146C16.6596 14.7164 17.2336 14.9051 17.7387 15.0239C18.2989 15.1557 19.0451 15.3357 19.7735 15.6326C20.4994 15.9286 21.2825 16.3694 21.8732 17.0695C22.0091 17.2305 22.1276 17.4563 22.1476 17.7363C22.1487 17.7527 22.1495 17.7689 22.15 17.7849L19.3402 17.6276C19.2376 17.5778 19.1303 17.5302 19.0185 17.4847C18.4508 17.2533 17.8432 17.1031 17.2806 16.9707C16.663 16.8254 15.9822 16.6013 15.4039 16.3573C15.1145 16.2352 14.8346 16.1014 14.5934 15.9616C14.3759 15.8354 14.1007 15.6547 13.9016 15.4156C13.8835 15.394 13.8664 15.372 13.8501 15.3497Z\" fill=\"#E4A400\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.ENEDIS_MONTHLY_ANALYSIS_DATA_DOCTYPE = void 0;
+const ENEDIS_MONTHLY_ANALYSIS_DATA_DOCTYPE = 'com.grandlyon.enedis.monthly.analysis.data';
+exports.ENEDIS_MONTHLY_ANALYSIS_DATA_DOCTYPE = ENEDIS_MONTHLY_ANALYSIS_DATA_DOCTYPE;
 
 /***/ }),
-/* 1032 */
-/***/ (function(module, exports) {
+/* 858 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"9.5\" cy=\"18.5\" r=\"2.5\" fill=\"#808080\"/>\n| <circle cx=\"18.5\" cy=\"18.5\" r=\"2.5\" fill=\"#808080\"/>");
+"use strict";
 
-/***/ }),
-/* 1033 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"9.5\" cy=\"18.5\" r=\"2.5\" fill=\"#F1CB03\"/>\n| <circle cx=\"9.93695\" cy=\"17.8125\" r=\"1\" fill=\"white\" fill-opacity=\"0.8\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.ENEDIS_YEAR_DOCTYPE = void 0;
+const ENEDIS_YEAR_DOCTYPE = 'com.grandlyon.enedis.year';
+exports.ENEDIS_YEAR_DOCTYPE = ENEDIS_YEAR_DOCTYPE;
 
 /***/ }),
-/* 1034 */
-/***/ (function(module, exports) {
+/* 859 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"27\" height=\"27\" viewBox=\"0 0 27 27\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"13.5\" cy=\"13.5\" r=\"12.5\" fill=\"url(#paint0_radial)\" stroke=\"#383941\" stroke-width=\"2\"/>\n| <path d=\"M20 10L13.5 18L7 10\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>");
+"use strict";
 
-/***/ }),
-/* 1035 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"50\" height=\"50\" viewBox=\"0 0 50 50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"25\" cy=\"25\" r=\"24.5\" fill=\"black\" stroke=\"#D24444\"/>\n| <mask id=\"mask0\" mask-type=\"alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"50\" height=\"50\">");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.GRDF_DAY_DOCTYPE = void 0;
+const GRDF_DAY_DOCTYPE = 'com.grandlyon.grdf.day';
+exports.GRDF_DAY_DOCTYPE = GRDF_DAY_DOCTYPE;
 
 /***/ }),
-/* 1036 */
-/***/ (function(module, exports) {
+/* 860 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"50\" height=\"auto\" viewBox=\"0 0 50 50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"25\" cy=\"25\" r=\"25\" fill=\"#7FD771\"/>\n| <defs>");
+"use strict";
 
-/***/ }),
-/* 1037 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"50\" height=\"auto\" viewBox=\"0 0 50 50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"25\" cy=\"25\" r=\"25\" fill=\"#A0A0A0\"/>\n| <defs>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.GRDF_MONTH_DOCTYPE = void 0;
+const GRDF_MONTH_DOCTYPE = 'com.grandlyon.grdf.month';
+exports.GRDF_MONTH_DOCTYPE = GRDF_MONTH_DOCTYPE;
 
 /***/ }),
-/* 1038 */
-/***/ (function(module, exports) {
+/* 861 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"50\" height=\"50\" viewBox=\"0 0 50 50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"25\" cy=\"25\" r=\"25\" fill=\"black\"/>\n| <mask id=\"mask0\" mask-type=\"alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"50\" height=\"50\">");
+"use strict";
 
-/***/ }),
-/* 1039 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"50\" height=\"auto\" viewBox=\"0 0 50 50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <circle cx=\"25\" cy=\"25\" r=\"25\" fill=\"#D25959\"/>\n| <defs>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.GRDF_YEAR_DOCTYPE = void 0;
+const GRDF_YEAR_DOCTYPE = 'com.grandlyon.grdf.year';
+exports.GRDF_YEAR_DOCTYPE = GRDF_YEAR_DOCTYPE;
 
 /***/ }),
-/* 1040 */
-/***/ (function(module, exports) {
+/* 862 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"83\" height=\"62\" viewBox=\"0 0 83 62\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M0.5 8.5H82.5V58C82.5 59.933 80.933 61.5 79 61.5H4C2.06701 61.5 0.5 59.933 0.5 58V8.5Z\" fill=\"white\" stroke=\"#A2B4C1\"/>\n| <path d=\"M0 4C0 1.79086 1.79086 0 4 0H79C81.2091 0 83 1.79086 83 4V8H0V4Z\" fill=\"#A2B4C1\"/>");
+"use strict";
 
-/***/ }),
-/* 1041 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"220\" height=\"220\" viewBox=\"0 0 220 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M2.52899 131.208H115.611V199.241C115.611 201.174 114.044 202.741 112.111 202.741H6.02899C4.096 202.741 2.52899 201.174 2.52899 199.241V131.208Z\" fill=\"url(#paint0_linear_115_37049)\" stroke=\"#52616C\"/>\n| <path d=\"M2.02899 123.962C2.02899 121.753 3.81985 119.962 6.02899 119.962H112.111C114.32 119.962 116.111 121.753 116.111 123.962V130.708H2.02899V123.962Z\" fill=\"#52616C\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.ACCOUNTS_DOCTYPE = void 0;
+const ACCOUNTS_DOCTYPE = 'io.cozy.accounts';
+exports.ACCOUNTS_DOCTYPE = ACCOUNTS_DOCTYPE;
 
 /***/ }),
-/* 1042 */
-/***/ (function(module, exports) {
+/* 863 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"176\" height=\"186\" viewBox=\"0 0 176 186\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g clip-path=\"url(#clip0_115_37229)\">\n| <path d=\"M56.8017 20.6657L55.3012 20.4406L54.6783 21.8278L36.6037 62.0787L36.3709 62.597L36.4445 63.1599L42.0312 105.916L21.4536 150.539L20.3376 152.959L22.9672 153.354L122.529 168.293L124.014 168.516L124.644 167.149L145.465 122L145.707 121.475L145.632 120.901L140.044 78.1339L157.886 38.4013L158.966 35.9956L156.364 35.6051L56.8017 20.6657Z\" stroke=\"#D87B39\" stroke-width=\"4\"/>");
+"use strict";
 
-/***/ }),
-/* 1043 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"176\" height=\"186\" viewBox=\"0 0 176 186\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g clip-path=\"url(#clip0_115_37284)\">\n| <path d=\"M56.8017 20.6657L55.3012 20.4406L54.6783 21.8278L36.6037 62.0787L36.3709 62.597L36.4445 63.1599L42.0312 105.916L21.4536 150.539L20.3376 152.959L22.9672 153.354L122.529 168.293L124.014 168.516L124.644 167.149L145.465 122L145.707 121.475L145.632 120.901L140.044 78.1339L157.886 38.4013L158.966 35.9956L156.364 35.6051L56.8017 20.6657Z\" stroke=\"#1B7E6D\" stroke-width=\"4\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.JOBS_DOCTYPE = void 0;
+const JOBS_DOCTYPE = 'io.cozy.jobs';
+exports.JOBS_DOCTYPE = JOBS_DOCTYPE;
 
 /***/ }),
-/* 1044 */
-/***/ (function(module, exports) {
+/* 864 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"78\" height=\"75\" viewBox=\"0 0 78 75\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n|     d=\"M66.6722 31.5706C66.6722 28.1162 65.0488 24.8626 62.2886 22.7855L43.6853 8.78557C40.8367 6.64179 36.9132 6.64179 34.0645 8.78556L15.8114 22.5219C12.9888 24.6461 11.3285 27.9734 11.3285 31.5061C11.3285 36.0711 14.0886 40.1831 18.3134 41.9122L33.9507 48.3123C37.1065 49.6039 40.6434 49.6039 43.7991 48.3123L59.842 41.7462C63.9733 40.0554 66.6722 36.0345 66.6722 31.5706Z\"");
+"use strict";
 
-/***/ }),
-/* 1045 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"200\" height=\"154\" viewBox=\"0 0 200 154\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n|   <g clip-path=\"url(#clip0_15339_1408)\">\n|     <g filter=\"url(#filter0_d_15339_1408)\">");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.KONNECTORS_DOCTYPE = void 0;
+const KONNECTORS_DOCTYPE = 'io.cozy.konnectors';
+exports.KONNECTORS_DOCTYPE = KONNECTORS_DOCTYPE;
 
 /***/ }),
-/* 1046 */
-/***/ (function(module, exports) {
+/* 865 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"176\" height=\"186\" viewBox=\"0 0 176 186\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g clip-path=\"url(#clip0_115_37337)\">\n| <path d=\"M56.8017 20.6667L55.3012 20.4416L54.6783 21.8287L36.6037 62.0796L36.3709 62.598L36.4445 63.1608L42.0312 105.917L21.4536 150.54L20.3376 152.96L22.9672 153.355L122.529 168.294L124.014 168.517L124.644 167.15L145.465 122.001L145.707 121.475L145.632 120.902L140.044 78.1349L157.886 38.4023L158.966 35.9966L156.364 35.6061L56.8017 20.6667Z\" stroke=\"#1761A4\" stroke-width=\"4\"/>");
+"use strict";
 
-/***/ }),
-/* 1047 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"122\" height=\"120\" viewBox=\"0 0 122 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M14.949 96.3467L47.2925 34.2589L81.1894 73.6924L14.949 96.3467Z\" fill=\"#F1C017\"/>\n| <path d=\"M14.949 96.3467L47.2925 34.2589L81.1894 73.6924L14.949 96.3467Z\" fill=\"url(#paint0_linear)\" fill-opacity=\"0.75\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.TERMS_DOCTYPE = void 0;
+const TERMS_DOCTYPE = 'io.cozy.terms';
+exports.TERMS_DOCTYPE = TERMS_DOCTYPE;
 
 /***/ }),
-/* 1048 */
-/***/ (function(module, exports) {
+/* 866 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"181\" height=\"180\" viewBox=\"0 0 181 180\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M155 88C155 123.899 125.899 153 90 153C54.1015 153 25 123.899 25 88C25 52.1015 54.1015 23 90 23C125.899 23 155 52.1015 155 88ZM90 143C120.376 143 145 118.376 145 88C145 57.6243 120.376 33 90 33C59.6243 33 35 57.6243 35 88C35 118.376 59.6243 143 90 143Z\" fill=\"url(#paint0_linear)\"/>\n| <g filter=\"url(#filter0_d)\">");
+"use strict";
 
-/***/ }),
-/* 1049 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"149\" height=\"25\" viewBox=\"0 0 149 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g filter=\"url(#filter0_d)\">\n| <path d=\"M25.3263 8.45108L17.532 7.35612L14.0478 0.528203C13.9526 0.341259 13.7961 0.189923 13.6027 0.0979342C13.1176 -0.133521 12.5282 0.0593584 12.2857 0.528203L8.80145 7.35612L1.00716 8.45108C0.79227 8.48076 0.595801 8.57868 0.445379 8.72705C0.263528 8.90772 0.16332 9.15079 0.166773 9.40284C0.170227 9.6549 0.27706 9.89531 0.463798 10.0713L6.10307 15.3858L4.77077 22.8903C4.73952 23.0649 4.75951 23.2444 4.82846 23.4086C4.8974 23.5727 5.01255 23.7149 5.16085 23.819C5.30914 23.9231 5.48465 23.985 5.66746 23.9976C5.85028 24.0102 6.03309 23.973 6.19517 23.8903L13.1667 20.3473L20.1383 23.8903C20.3287 23.9882 20.5497 24.0209 20.7615 23.9853C21.2957 23.8962 21.6548 23.4066 21.5627 22.8903L20.2304 15.3858L25.8697 10.0713C26.0232 9.92587 26.1245 9.73595 26.1552 9.52824C26.2381 9.00895 25.8636 8.52823 25.3263 8.45108Z\" fill=\"#121212\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.TRIGGERS_DOCTYPE = void 0;
+const TRIGGERS_DOCTYPE = 'io.cozy.triggers';
+exports.TRIGGERS_DOCTYPE = TRIGGERS_DOCTYPE;
 
 /***/ }),
-/* 1050 */
-/***/ (function(module, exports) {
+/* 867 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"31\" height=\"29\" viewBox=\"0 0 31 29\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M29.998 10.2117L20.7049 8.88865L16.5505 0.638245C16.4371 0.412354 16.2504 0.22949 16.0198 0.118337C15.4415 -0.161338 14.7388 0.0717248 14.4496 0.638245L10.2953 8.88865L1.0021 10.2117C0.745888 10.2476 0.511636 10.3659 0.332287 10.5452C0.115464 10.7635 -0.00401488 11.0572 0.000103019 11.3618C0.00422092 11.6663 0.131599 11.9568 0.354248 12.1694L7.078 18.5912L5.48948 27.6591C5.45223 27.8701 5.47606 28.087 5.55826 28.2854C5.64047 28.4837 5.77776 28.6555 5.95458 28.7813C6.13139 28.9071 6.34065 28.9819 6.55862 28.9971C6.77659 29.0123 6.99456 28.9674 7.18781 28.8675L15.5001 24.5863L23.8123 28.8675C24.0393 28.9858 24.3028 29.0252 24.5554 28.9822C25.1922 28.8746 25.6205 28.283 25.5107 27.6591L23.9221 18.5912L30.6459 12.1694C30.8289 11.9938 30.9497 11.7643 30.9863 11.5133C31.0851 10.8858 30.6386 10.305 29.998 10.2117Z\" fill=\"url(#paint0_linear)\"/>\n| <defs>");
+"use strict";
 
-/***/ }),
-/* 1051 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M16 6L8 12.5L16 19\" stroke=\"#A0A0A0\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n| </svg>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.REMOTE_ORG_ECOLYO_AGENT_REC = exports.REMOTE_ORG_ECOLYO_AGENT = void 0;
+const REMOTE_ORG_ECOLYO_AGENT = '/remote/org.ecolyo.agent';
+exports.REMOTE_ORG_ECOLYO_AGENT = REMOTE_ORG_ECOLYO_AGENT;
+const REMOTE_ORG_ECOLYO_AGENT_REC = '/remote/org.ecolyo.agent.rec';
+exports.REMOTE_ORG_ECOLYO_AGENT_REC = REMOTE_ORG_ECOLYO_AGENT_REC;
 
 /***/ }),
-/* 1052 */
-/***/ (function(module, exports) {
+/* 868 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <path d=\"M8 6L16 12.5L8 19\" stroke=\"#121212\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n| </svg>");
+"use strict";
 
-/***/ }),
-/* 1053 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg width=\"264\" height=\"237\" viewBox=\"0 0 264 237\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n| <g clip-path=\"url(#clip0)\">\n| <path d=\"M68.5 195C81.6395 195 69.7587 195 76.7517 195C85.4931 195 104.625 194.648 104.625 175.179C104.625 155.71 104.625 145.389 104.625 139.994C104.625 134.599 102.976 119 128.21 119C148.398 119 160.481 119 164 119\" stroke=\"#D87B39\" stroke-width=\"2\"/>");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.REMOTE_ORG_ECOLYO_AGENT_CUSTOM_POPUP_REC = exports.REMOTE_ORG_ECOLYO_AGENT_CUSTOM_POPUP = void 0;
+const REMOTE_ORG_ECOLYO_AGENT_CUSTOM_POPUP = '/remote/org.ecolyo.agent.custom.popup';
+exports.REMOTE_ORG_ECOLYO_AGENT_CUSTOM_POPUP = REMOTE_ORG_ECOLYO_AGENT_CUSTOM_POPUP;
+const REMOTE_ORG_ECOLYO_AGENT_CUSTOM_POPUP_REC = '/remote/org.ecolyo.agent.custom.popup.rec';
+exports.REMOTE_ORG_ECOLYO_AGENT_CUSTOM_POPUP_REC = REMOTE_ORG_ECOLYO_AGENT_CUSTOM_POPUP_REC;
 
 /***/ }),
-/* 1054 */
-/***/ (function(module, exports) {
+/* 869 */
+/***/ (function(module, exports, __webpack_require__) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg id=\"Calque_1\" data-name=\"Calque 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 252.23 275.79\"><defs><style>.cls-1{fill:#f1c016;}.cls-2{fill:#e7e6e6;}.cls-3,.cls-9{fill:#fff;}.cls-4{fill:#cdcccc;}.cls-5{fill:#1d1d1b;}.cls-6{fill:#403e56;}.cls-7{fill:#f6b6b9;}.cls-8{fill:#302f42;}.cls-9{fill-rule:evenodd;}</style></defs><path id=\"fa3b9e12-7275-481e-bee9-64fd9595a50d\" class=\"cls-1\" d=\"M79.74,256.3,78,249.5a90.65,90.65,0,0,0-9.36-3.36l-.22,3.16-.88-3.48c-3.94-1.13-6.63-1.62-6.63-1.62S64.56,258,72.16,268.52L81,270.08l-6.88,1a35,35,0,0,0,3.07,3.26c11.06,10.27,23.38,15,27.52,10.52s-1.48-16.39-12.54-26.65a46.87,46.87,0,0,0-12-7.75Z\" transform=\"translate(-23.36 -11.42)\"/><path id=\"bde08021-c30f-4979-a9d8-cb90b72b5ca2\" class=\"cls-1\" d=\"M96.12,248.92l2-6.71a87.52,87.52,0,0,0-6.27-7.71l-1.82,2.59,1-3.44c-2.79-3-4.83-4.81-4.83-4.81s-4,13.67-3,26.62l6.78,5.91-6.4-2.7a34.52,34.52,0,0,0,1,4.38c4.16,14.5,12.27,24.9,18.11,23.23s7.21-14.8,3-29.3a47,47,0,0,0-6.31-12.86Z\" transform=\"translate(-23.36 -11.42)\"/><path id=\"b3ac2088-de9b-4f7f-bc99-0ed9705c1a9d\" class=\"cls-2\" d=\"M197.42,137.51h-1.08V108.07a17,17,0,0,0-17-17H116.94a17,17,0,0,0-17,17v161.5a17,17,0,0,0,17,17H179.3a17,17,0,0,0,17-17V158.46h1.08Z\" transform=\"translate(-23.36 -11.42)\"/><path id=\"b2715b96-3117-487c-acc0-20904544b5b7\" class=\"cls-3\" d=\"M180,95.46h-8.14a6,6,0,0,1-5.6,8.33H130.52a6,6,0,0,1-5.59-8.33h-7.61a12.73,12.73,0,0,0-12.72,12.73h0V269.45a12.72,12.72,0,0,0,12.72,12.72H180a12.72,12.72,0,0,0,12.73-12.72h0V108.19A12.73,12.73,0,0,0,180,95.46Z\" transform=\"translate(-23.36 -11.42)\"/><path id=\"bbe451c3-febc-41ba-8083-4c8307a2e73e\" class=\"cls-4\" d=\"M167.36,179.75H129.94a1.34,1.34,0,0,1-1.34-1.34V141a1.34,1.34,0,0,1,1.34-1.34h37.42A1.34,1.34,0,0,1,168.7,141v37.42A1.34,1.34,0,0,1,167.36,179.75Zm.81-38.76a.8.8,0,0,0-.81-.8H129.94a.8.8,0,0,0-.8.8v37.42a.8.8,0,0,0,.8.81h37.42a.81.81,0,0,0,.81-.81\" transform=\"translate(-23.36 -11.42)\"/><rect id=\"bb28937d-932f-4fdf-befe-f406e51091fe\" class=\"cls-4\" x=\"94.97\" y=\"197.02\" width=\"57.39\" height=\"0.54\"/><circle id=\"fcef55fc-4968-45b2-93bb-1a1080c85fc7\" class=\"cls-5\" cx=\"96.78\" cy=\"191.85\" r=\"1.81\"/><rect id=\"ff33d889-4c74-4b91-85ef-b4882cc8fe76\" class=\"cls-4\" x=\"94.97\" y=\"215.14\" width=\"57.39\" height=\"0.54\"/><circle id=\"e8fa0310-b872-4adf-aedd-0c6eda09f3b8\" class=\"cls-5\" cx=\"96.78\" cy=\"209.97\" r=\"1.81\"/><path class=\"cls-1\" d=\"M174.67,247.2H156.53a1.18,1.18,0,0,1-1.18-1.18v-6.36a1.18,1.18,0,0,1,1.18-1.18h18.14a1.18,1.18,0,0,1,1.18,1.18V246A1.18,1.18,0,0,1,174.67,247.2Z\" transform=\"translate(-23.36 -11.42)\"/><circle id=\"e12ee00d-aa4a-4413-a013-11d20b7f97f7\" class=\"cls-5\" cx=\"102.69\" cy=\"191.85\" r=\"1.81\"/><circle id=\"f58f497e-6949-45c8-be5f-eee2aa0f6586\" class=\"cls-5\" cx=\"108.61\" cy=\"191.85\" r=\"1.81\"/><circle id=\"b4d4939a-c6e6-4f4d-ba6c-e8b05485017d\" class=\"cls-5\" cx=\"102.69\" cy=\"209.97\" r=\"1.81\"/><circle id=\"aff120b1-519b-4e96-ac87-836aa55663de\" class=\"cls-5\" cx=\"108.61\" cy=\"209.97\" r=\"1.81\"/><path id=\"f1094013-1297-477a-ac57-08eac07c4bd5\" class=\"cls-6\" d=\"M255.8,287.21H67.26c-.41,0-.73-.14-.73-.32s.32-.32.73-.32H255.8c.4,0,.73.14.73.32S256.2,287.21,255.8,287.21Z\" transform=\"translate(-23.36 -11.42)\"/><path class=\"cls-7\" d=\"M209.21,219.56a2.22,2.22,0,0,1,.37.21l11.78-5,.42-3.1,4.71,0-.28,7.12-15.55,4.11c0,.11-.07.21-.11.32a2.69,2.69,0,1,1-1.34-3.6Z\" transform=\"translate(-23.36 -11.42)\"/><polygon class=\"cls-7\" points=\"204.84 272.63 201.62 272.63 200.09 260.21 204.84 260.21 204.84 272.63\"/><path class=\"cls-8\" d=\"M222.68,283.13h6.21V287H218.77A3.91,3.91,0,0,1,222.68,283.13Z\" transform=\"translate(-23.36 -11.42)\"/><polygon class=\"cls-7\" points=\"217.36 271.72 214.16 272.03 211.42 259.82 216.15 259.36 217.36 271.72\"/><path class=\"cls-8\" d=\"M235.14,282.76l6.18-.61h0l.38,3.89h0l-10.07,1h0A3.91,3.91,0,0,1,235.14,282.76Z\" transform=\"translate(-23.36 -11.42)\"/><circle class=\"cls-7\" cx=\"205.74\" cy=\"180.6\" r=\"6.45\"/><path class=\"cls-8\" d=\"M224.26,281.53a1.16,1.16,0,0,1-1.16-1c-1.66-9.25-7.11-39.49-7.24-40.33,0,0,0,0,0-.06v-2.25a.36.36,0,0,1,.08-.23l.72-1a.37.37,0,0,1,.3-.16c4.1-.2,17.53-.76,18.18,0h0c.66.82.43,3.28.37,3.77v0l6,38.6a1.19,1.19,0,0,1-1,1.35l-3.77.62a1.18,1.18,0,0,1-1.32-.81c-1.17-3.73-5.08-16.26-6.43-21.11a.14.14,0,0,0-.17-.09.13.13,0,0,0-.09.13c.07,4.62.23,16.41.29,20.49V280A1.19,1.19,0,0,1,228,281.2l-3.64.33Z\" transform=\"translate(-23.36 -11.42)\"/><path id=\"ae7af94f-88d7-4204-9f07-e3651de85c05\" class=\"cls-1\" d=\"M225,201a5.39,5.39,0,0,0-2.18,3.15,29.93,29.93,0,0,0-1.29,7.14l-.4,7.24-5.06,19.22c4.38,3.71,6.91,2.86,12.81-.17s6.57,1,6.57,1l1.18-16.35,1.69-17.86a7.84,7.84,0,0,0-1.28-1.23,13,13,0,0,0-11.14-2.36Z\" transform=\"translate(-23.36 -11.42)\"/><path class=\"cls-7\" d=\"M223.36,223.44a2.35,2.35,0,0,1,.39.19l11.65-5.83.19-3.16,4.81-.33.25,7.2-15.56,5.14a2.76,2.76,0,1,1-2.06-3.31l.33.1Z\" transform=\"translate(-23.36 -11.42)\"/><path id=\"a6768b0e-63d0-4b31-8462-9b2e0b00f0fd\" class=\"cls-1\" d=\"M238.23,204.46c2.87,1,3.37,12,3.37,12-3.37-1.86-7.41,1.18-7.41,1.18s-.84-2.87-1.86-6.58a6.43,6.43,0,0,1,1.35-6.06A4.59,4.59,0,0,1,238.23,204.46Z\" transform=\"translate(-23.36 -11.42)\"/><path id=\"bfd7963f-0cf8-4885-9d3a-2c00bccda2e3\" class=\"cls-8\" d=\"M234.88,193.72c-.8-.64-1.9.53-1.9.53l-.64-5.79a22.66,22.66,0,0,1-6.59-.16c-2.57-.64-3,2.33-3,2.33a20.74,20.74,0,0,1-.08-3.61c.16-1.45,2.25-2.89,5.95-3.86s5.62,3.22,5.62,3.22C236.84,187.66,235.68,194.37,234.88,193.72Z\" transform=\"translate(-23.36 -11.42)\"/><image width=\"500\" height=\"282\" transform=\"translate(0 23.69) scale(0.15)\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAEaCAYAAAGQn5XuAAAACXBIWXMAAAsTAAALEwEAmpwYAAAE82lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE4LTEwLTA1VDE1OjUyOjEwKzAyOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOC0xMC0wNVQxNjo1MToxMiswMjowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOC0xMC0wNVQxNjo1MToxMiswMjowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MGVhNjc0ODktYWJkMS1lYjQ3LTg4ZGMtYjUzZTdkMmFlMTI5IiB4bXBNTTpEb2N1bWVudElE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\"/><image width=\"3508\" height=\"4961\" transform=\"translate(98.18) scale(0.02)\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAADbQAABNhCAYAAADinED6AAAACXBIWXMAAC4jAAAuIwF4pT92AAAgAElEQVR4nOzbMQEAIAzAMMC/500FvRIJ/Xtn5gAAAAAAAAAAAAAAAADAb09hAAAAAAAAAAAAAAAAAAqGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAAAAAEoY2AAAAAAAAAAAAAAAAABKGNgAAAAAAAAAAAAAAAAAShjYAAAAAAAAAAAAAWPbtWAAAAABgkL/1LHaVRwAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAK2Qw70AACAASURBVAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAADEvh0LAAAAAAzyt57FrvIIAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAgNi3YwEAAACAQf7Ws9hVHgEAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAYAKDyQAAIABJREFUAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAQ+3YsAAAAADDI33oWu8ojAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAGLvDo/ayNY0AJ/d2v/SRiBtBGgjkDYC2AjgRgAbAUwE5kYAE4GZCMARGEdgHIGHCGarZ76+01YBBiF96j79PFWU7Zm6VdfneFrHzfeeFwAAAAAAAAAASCHQBgAAAAAAAAAAAAAAAEAKgTYAAAAAAAAAAAAAAAAAUgi0AQAAAAAAAAAAAAAAAJBCoA0AAAAAAAAAAAAAAACAFAJtAAAAAAAAAAAAAAAAAKQQaAMAAAAAAAAAAAAAAAAghUAbAAAAAAAAAAAAAAAAACkE2gAAAAAAAAAAAAAAAABIIdAGAAAAAAAAAAAAAAAAQAqBNgAAAAAAAAAAAAAAAABSCLQBAAAAAAAAAAAAAAAAkEKgDQAAAAAAAAAAAAAAAIAUAm0AAAAAAAAAAAAAAAAApBBoAwAAAAAAAAAAAAAAACCFQBsAAAAAAAAAAAAAAAAAKQTaAAAAAAAAAAAAAAAAAEgh0AYAAAAAAAAAAAAAAABACoE2AAAAAAAAAAAAAAAAAFIItAEAAAAAAAAAAAAAAACQQqANAAAAAAAAAAAAAAAAgBQCbQAAAAAAAAAAAAAAAACkEGgDAAAAAAAAAAAAAAAAIIVAGwAAAAAAAAAAAAAAAAApBNoAAAAAAAAAAAAAAAAASCHQBgAAAAAAAAAAAAAAAEAKgTYAAAAAAAAAAAAAAAAAUgi0AQAAAAAAAAAAAAAAAJBCoA0AAAAAAAAAAAAAAACAFAJtAAAAAAAAAAAAAAAAAKQQaAMAAAAAAAAAAAAAAAAghUAbAAAAAAAAAAAAAAAAACkE2gAAAAAAAAAAAAAAAABIIdAGAAAAAAAAAAAAAAAAQAqBNgAAAAAAAAAAAAAAAABSCLQBAAAAAAAAAAAAAAAAkEKgDQAAAAAAAAAAAAAAAIAUAm0AAAAAAAAAAAAAAAAApBBoAwAAAAAAAAAAAAAAACCFQBsAAAAAAAAAAAAAAAAAKQTaAAAAAAAAAAAAAAAAAEgh0AYAAAAAAAAAAAAAAABACoE2AAAAAAAAAAAAAAAAAFIItAEAAAAAAAAAAAAAAACQQqANAAAAAAAAAAAAAAAAgBQCbQD0jRJYAAAgAElEQVQAAAAAAAAAAAAAAACkEGgDAAAAAAAAAAAAAAAAIIVAGwAAAAAAAAAAAAAAAAApBNoAAAAAAAAAAAAAAAAASCHQBgAAAAAAAAAAAAAAAEAKgTYAAAAAAAAAAAAAAAAAUgi0AQAAAAAAAAAAAAAAAJBCoA0AAAAAAAAAAAAAAACAFAJtAAAAAAAAAAAAAAAAAKQQaAMAAAAAAAAAAAAAAAAghUAbAAAAAAAAAAAAAAAAACkE2gAAAAAAAAAAAAAAAABIIdAGAAAAAAAAAAAAAAAAQAqBNgAAAAAAAAAAAAAAAABSCLQBAAAAAAAAAAAAAAAAkEKgDQAAAAAAAAAAAAAAAIAUAm0AAAAAAAAAAAAAAAAApBBoAwAAAAAAAAAAAAAAACCFQBsAAAAAAAAAAAAAAAAAKQTaAAAAAAAAAAAAAAAAAEgh0AYAAAAAAAAAAAAAAABACoE2AAAAAAAAAAAAAAAAAFIItAEAAAAAAAAAAAAAAACQQqANAAAAAAAAAAAAAAAAgBQCbQAAAAAAAAAAAAAAAACkEGgDAAAAAAAAAAAAAAAAIIVAGwAAAAAAAAAAAAAAAAApBNoAAAAAAAAAAAAAAAAASCHQBgAAAAAAAAAAAAAAAEAKgTYAAAAAAAAAAAAAAAAAUgi0AQAAAAAAAAAAAAAAAJBCoA0AAAAAAAAAAAAAAACAFAJtAAAAAAAAAAAAAAAAAKQQaAMAAAAAAAAAAAAAAAAghUAbAAAAAAAAAAAAAAAAACkE2gAAAAAAAAAAAAAAAABIIdAGAAAAAAAAAAAAAAAAQAqBNgAAAAAAAAAAAAAAAABSCLQBAAAAAAAAAAAAAAAAkEKgDQAAAAAAAAAAAAAAAIAUAm0AAAAAAAAAAAAAAAAApBBoAwAAAAAAAAAAAAAAACCFQBsAAAAAAAAAAAAAAAAAKQTaAAAAAAAAAAAAAAAAAEgh0AYAAAAAAAAAAAAAAABACoE2AAAAAAAAAAAAAAAAAFIItAEAAAAAAAAAAAAAAACQQqANAAAAAAAAAAAAAAAAgBQCbQAAAAAAAAAAAAAAAACkEGgDAAAAAAAAAAAAAAAAIIVAGwAAAAAAAAAAAAAAAAApBNoAAAAAAAAAAAAAAAAASCHQBgAAAAAAAAAAAAAAAEAKgTYAAAAAAAAAAAAAAAAAUgi0AQAAAAAAAAAAAAAAAJBCoA0AAAAAAAAAAAAAAACAFAJtAAAAAAAAAAAAAAAAAKQQaAMAAAAAAAAAAAAAAAAghUAbAAAAAAAAAAAAAAAAACkE2gAAAAAAAAAAAAAAAABIIdAGAAAAAAAAAAAAAAAAQAqBNgAAAAAAAAAAAAAAAABSCLQBAAAAAAAAAAAAAAAAkEKgDQAAAAAAAAAAAAAAAIAUAm0AAAAAAAAAAAAAAAAApBBoAwAAAAAAAAAAAAAAACCFQBsAAAAAAAAAAAAAAAAAKQTaAAAAAAAAAAAAAAAAAEgh0AYAAAAAAAAAAAAAAABACoE2AAAAAAAAAAAAAAAAAFIItAEAAAAAAAAAAAAAAACQQqANAAAAAAAAAAAAAAAAgBQCbQAAAAAAAAAAAAAAAACkEGgDAAAAAAAAAAAAAAAAIIVAGwAAAAAAAAAAAAAAAAApBNoAAAAAAAAAAAAAAAAASCHQBgAAAAAAAAAAAAAAAEAKgTYAAAAAAAAAAAAAAAAAUgi0AQAAAAAAAAAAAAAAAJBCoA0AAAAAAAAAAAAAAACAFAJtAAAAAAAAAAAAAAAAAKQQaAMAAAAAAAAAAAAAAAAghUAbAAAAAAAAAAAAAAAAACkE2gAAAAAAAAAAAAAAAABIIdAGAAAAAAAAAAAAAAAAQAqBNgAAAAAAAAAAAAAAAABSCLQBAAAAAAAAAAAAAAAAkEKgDQAA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AAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0AAAAAAAAAAAAAAACALATaAAAAAAAAAAAAAAAAAMhCoA0A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IWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAABkxztwAAIABJREFUAAAAAAAAAAAAICFoAwAAAAAAAAAAAAAAACAhaAMAAAAAAAAAAAAAAAAgIWgDAAAAAAAAAAAAAAAAICFoAwAAAAAAAAAAAICf7NuxAAAAAMAgf+tZ7CqPAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAIh9OxYAAAAAGORvPYtd5REAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAC/wiAzAAAgAElEQVQAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAsW/HAgAAAACD/K1nsas8AgAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAACD27VgAAAAAYJC/9Sx2lUcAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAD6Xk/kAACAASURBVAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAxL4dCwAAAAAM8reexa7yCAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAIDYt2MBAAAAgEH+1rPYVR4BAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAIvPElQAAGdpJREFUAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AAAAAAAAAAAAAAAAALIQ2AAAAAAAAAAAAAAAAABZCGwAAAAAAAAAAAAAAAAALoQ0AAAAAAAAAAAAAAACAhdAGAAAAAAAAAAAAAAAAwEJoAwAAAAAAAAAAAAAAAGAhtAEAAAAAAAAAAAAAAACwENoAAAAAAAAAAAAAAAAAWAhtAAAAAAAAAAAAAAAAACyENgAAAAAAAAAAAAAAAAAWQhsAAAAAAAAAAAAAAAAAC6ENAAAAAAAAAAAAAAAAgIXQBgAAAAAAAAAAAAAAAMBCaAMAAAAAAAAAAAAAAABgIbQBAAAAAAAAAAAAAAAAsBDaAAAAAAAAAAAAAAAAAFgIbQAAAAAAAAAAAAAAAAAshDYAAAAAAAAAAAAAAAAAFkIbAAAAAAAAAAAAAAAAAAuhDQAAAAAAAAAAAAAAAICF0AYAAAAAAAAAAAAAAADAQmgDAAAAAAAAAAAAAAAAYCG0AQAAAAAAAAAAAAAAALAQ2gAAAAAAAAAAAAAAAABYCG0AUPt2TAAAAMMwqP5VT8VygQ8AAAAAAAAAAAAAAICE0AYAAAAAAAAAAAAAAABAQmgDAAAAAAAAAAAAAAAAICG0AQAAAAAAAAAAAAAAAJAQ2gAAAAAAAAAAAAAAAABICG0AAAAAAAAAAAAAAAAAJIQ2AAAAAAAAAAAAAAAAABJCGwAAAAAAAAAAAAAAAAAJoQ0AAAAAAAAAAAAAAACAhNAGAAAAAAAAAAAAAAAAQEJoAwAAAAAAAAAAAAAAACAhtAEAAAAAAAAAAAAAAACQENoAAAAAAAAAAAAAAAAASAhtAAAAAAAAAAAAAAAAACSENgAAAAAAAAAAAAAAAAASQhsAAAAAAAAAAAAAAAAACaENAAAAAAAAAAAAAAAAgITQBgAAAAAAAAAAAAAAAEBCaAMAAAAAAAAAAAAAAAAgIbQBAAAAAAAAAAAAAAAAkBDaAAAAAAAAAAAAAAAAAEgIbQAAAAAAAAAAAAAAAAAkhDYAAAAAAAAAAAAAAAAAEkIbAAAAAAAAAAAAAAAAAAmhDQAAAAAAAAAAAAAAAICE0AYAAAAAAAAAAAAAAABAQmgDAAAAAAAAAAAAAAAAICG0AQAAAAAAAAAAAAAAAJAQ2gAAAAAAAAAAAAAAAABICG0AAAAAAAAAAAAAAAAAJIQ2AAAAAAAAAAAAAAAAABJCGwAAAAAAAAAAAAAAAAAJoQ0AAAAAAAAAAAAAAACAhNAGAAAAAAAAAAAAAAAAQEJoAwAAAAAAAAAAAAAAACAhtAEAAAAAAAAAAAAAAACQENoAAAAAAAAAAAAAAAAASAhtAAAAAAAAAAAAAAAAACSENgAAAAAAAAAAAAAAAAASQhsAAAAAAAAAAAAAAAAACaENAAAAAAAAAAAAAAAAgITQBgAAAAAAAAAAAAAAAEBCaAMAAAAAAAAAAAAAAAAgIbQBAAAAAAAAAAAAAAAAkBDaAAAAAAAAAAAAAAAAAEgIbQAAAAAAAAAAAAAAAAAkhDYAAAAAAAAAAAAAAAAAEkIbAAAAAAAAAAAAAAAAAAmhDQAAAAAAAAAAAAAAAICE0AYAAAAAAAAAAAAAAABAQmgDAAAAAAAAAAAAAAAAICG0AQAAAAAAAAAAAAAAAJAQ2gAAAAAAAAAAAAAAAABICG0AAAAAAAAAAAAAAAAAJIQ2AAAAAAAAAAAAAAAAABJCGwAAAAAAAAAAAAAAAAAJoQ0AAAAAAAAAAAAAAACAhNAGAAAAAAAAAAAAAAAAQEJoAwAAAAAAAAAAAAAAACAhtAEAAAAAAAAAAAAAAACQENoAAAAAAAAAAAAAAAAASAhtAAAAAAAAAAAAAAAAACSENgAAAAAAAAAAAAAAAAASQhsAAAAAAAAAAAAAAAAACaENAAAAAAAAAAAAAAAAgITQBgAAAAAAAAAAAAAAAEBCaAMAAAAAAAAAAAAAAAAgIbQBAAAAAAAAAAAAAAAAkBDaAAAAAAAAAAAAAAAAAEgIbQAAAAAAAAAAAAAAAAAkhDYAAAAAAAAAAAAAAAAAEkIbAAAAAAAAAAAAAAAAAAmhDQAAAAAAAAAAAAAAAICE0AYAAAAAAAAAAAAAAABAQmgDAAAAAAAAAAAAAAAAICG0AQAAAAAAAAAAAAAAAJAQ2gAAAAAAAAAAAAAAAABICG0AAAAAAAAAAAAAAAAAJIQ2AAAAAAAAAAAAAAAAABJCGwAAAAAAAAAAAAAAAAAJoQ0AAAAAAAAAAAAAAACAhNAGAAAAAAAAAAAAAAAAQEJoAwAAAAAAAAAAAAAAACAhtAEAAAAAAAAAAAAAAACQENoAAAAAAAAAAAAAAAAASAhtAAAAAAAAAAAAAAAAACSENgAAAAAAAAAAAAAAAAASQhsAAAAAAAAAAAAAAAAACaENAAAAAAAAAAAAAAAAgITQBgAAAAAAAAAAAAAAAEBCaAMAAAAAAAAAAAAAAAAgIbQBAAAAAAAAAAAAAAAAkBDaAAAAAAAAAAAAAAAAAEgIbQAAAAAAAAAAAAAAAAAkhDYAAAAAAAAAAAAAAAAAEkIbAAAAAAAAAAAAAAAAAAmhDQAAAAAAAAAAAAAAAICE0AYAAAAAAAAAAAAAAABAQmgDAAAAAAAAAAAAAAAAICG0AQAAAAAAAAAAAAAAAJAQ2gAAAAAAAAAAAAAAAABICG0AAAAAAAAAAAAAAAAAJIQ2AAAAAAAAAAAAAAAAABJCGwAAAAAAAAAAAAAAAAAJoQ0AAAAAAAAAAAAAAACAhNAGAAAAAAAAAAAAAAAAQEJoAwAAAAAAAAAAAAAAACAhtAEAAAAAAAAAAAAAAACQENoAAAAAAAAAAAAAAAAASAhtAAAAAAAAAAAAAAAAACSENgAAAAAAAAAAAAAAAAASQhsAAAAAAAAAAAAAAAAACaENAAAAAAAAAAAAAAAAgITQBgAAAAAAAAAAAAAAAEBCaAMAAAAAAAAAAAAAAAAgIbQBAAAAAAAAAAAAAAAAkBDaAAAAAAAAAAAAAAAAAEgIbQAAAAAAAAAAAAAAAAAkhDYAAAAAAAAAAAAAAAAAEkIbAAAAAAAAAAAAAAAAAAmhDQAAAAAAAAAAAAAAAICE0AYAAAAAAAAAAAAAAABAQmgDAAAAAAAAAAAAAAAAICG0AQAAAAAAAAAAAAAAAJAQ2gAAAAAAAAAAAAAAAABICG0AAAAAAAAAAAAAAAAAJIQ2AAAAAAAAAAAAAAAAABJCGwAAAAAAAAAAAAAAAAAJoQ0AAAAAAAAAAAAAAACAhNAGAAAAAAAAAAAAAAAAQEJoAwAAAAAAAAAAAAAAACAhtAEAAAAAAAAAAAAAAACQENoAAAAAAAAAAAAAAAAASAhtAAAAAAAAAAAAAAAAACSENgAAAAAAAAAAAAAAAAASQhsAAAAAAAAAAAAAAAAACaENAAAAAAAAAAAAAAAAgITQBgAAAAAAAAAAAAAAAEBCaAMAAAAAAAAAAAAAAAAgIbQBAAAAAAAAAAAAAAAAkBDaAAAAAAAAAAAAAAAAAEgIbQAAAAAAAAAAAAAAAAAkhDYAAAAAAAAAAAAAAAAAEkIbAAAAAAAAAAAAAAAAAAmhDQAAAAAAAAAAAAAAAICE0AYAAAAAAAAAAAAAAABAQmgDAAAAAAAAAAAAAAAAICG0AQAAAAAAAAAAAAAAAJAQ2gAAAAAAAAAAAAAAAABICG0AAAAAAAAAAAAAAAAAJIQ2AAAAAAAAAAAAAAAAABJCGwAAAAAAAAAAAAAAAAAJoQ0AAAAAAAAAAAAAAACAhNAGAAAAAAAAAAAAAAAAQEJoAwAAAAAAAAAAAAAAACAhtAEAAAAAAAAAAAAAAACQENoAAAAAAAAAAAAAAAAASAhtAAAAAAAAAAAAAAAAACSENgAAAAAAAAAAAAAAAAASQhsAAAAAAAAAAAAAAAAACaENAAAAAAAAAAAAAAAAgITQBgAAAAAAAAAAAAAAAEBCaAMAAAAAAAAAAAAAAAAgIbQBAAAAAAAAAAAAAAAAkBDaAAAAAAAAAAAAAAAAAEgIbQAAAAAAAAAAAAAAAAD823Z/Q9q2RgGW5QAAAABJRU5ErkJggg==\"/><path class=\"cls-1\" d=\"M137.74,151.12a.63.63,0,0,0-.63.63v15.91a.63.63,0,0,0,.63.62h21.83a.63.63,0,0,0,.63-.62V151.75a.63.63,0,0,0-.63-.63Z\" transform=\"translate(-23.36 -11.42)\"/><circle class=\"cls-3\" cx=\"125.3\" cy=\"146.52\" r=\"3.45\"/><path class=\"cls-3\" d=\"M154.3,166.72a3.39,3.39,0,0,1-.38,1.56H143.39a3.44,3.44,0,0,1,1.51-4.63,3.39,3.39,0,0,1,1.56-.38h4.39a3.45,3.45,0,0,1,3.45,3.45Z\" transform=\"translate(-23.36 -11.42)\"/><path class=\"cls-9\" d=\"M252.38,74.39a.47.47,0,0,1-.47.47h-8.65a.47.47,0,0,1-.46-.47h0V73.05a.47.47,0,0,1,.46-.46h8.65a.47.47,0,0,1,.47.46Z\" transform=\"translate(-23.36 -11.42)\"/><path class=\"cls-9\" d=\"M233.31,65.81h-.84a.59.59,0,0,0,0,.14.69.69,0,0,0,0,.13H233c0,.39-.09.68-.54.68a.57.57,0,0,1-.52-.63h0v-.55c0-.34.18-.67.55-.67a.52.52,0,0,1,.49.3.37.37,0,0,0,.22-.14.75.75,0,0,0-.72-.43.8.8,0,0,0-.84.76v.75a.83.83,0,0,0,.79.86h0a.75.75,0,0,0,.8-.85ZM234,66l.31-.92.32.92Zm.31-1.28a.5.5,0,0,0-.17,0L233.42,67h.29l.24-.74h.8L235,67h.29l-.77-2.26a.5.5,0,0,0-.17,0Zm2.62.13a.5.5,0,0,0,0-.12h-1.42a.34.34,0,0,0,0,.14.25.25,0,0,0,0,.12h1.1l-1.19,1.74a.57.57,0,0,0,0,.14.35.35,0,0,0,0,.14H237a.34.34,0,0,0,0-.14.27.27,0,0,0,0-.13h-1.17L237,65a.34.34,0,0,0,0-.14m2.25.94h-.45v-.82h.46a.39.39,0,0,1,.42.34v.08a.37.37,0,0,1-.34.41h-.08m.4.11a.56.56,0,0,0,.3-.57.61.61,0,0,0-.57-.62h-.87V67h.28V66h.46c.27,0,.44.1.44.39V67H240V66.4a.55.55,0,0,0-.33-.53M241,64l-.24.41h.19l.34-.41Zm-.38,2.69v-.81h.85v-.26h-.85V65h1a.57.57,0,0,0,0-.13.71.71,0,0,0,0-.14h-1.26V67h1.29a.66.66,0,0,0,0-.14.62.62,0,0,0,0-.13Zm1.93.06a.52.52,0,0,1-.54-.4.31.31,0,0,0-.26.08.74.74,0,0,0,.8.58c.44,0,.79-.2.79-.68,0-.82-1.22-.55-1.22-1.08,0-.25.22-.36.44-.36a.47.47,0,0,1,.46.27.58.58,0,0,0,.25-.09.73.73,0,0,0-.74-.43.64.64,0,0,0-.72.63c0,.76,1.23.52,1.23,1.07,0,.29-.23.41-.49.41m2.36.07a.57.57,0,0,0,0-.13h-1v-.81h.84a.28.28,0,0,0,0-.13.29.29,0,0,0,0-.13h-.84V65h1a.59.59,0,0,0,0-.13.78.78,0,0,0,0-.14h-1.26V67h1.29a.68.68,0,0,0,0-.14m.69-.86.31-.92.31.92Zm.31-1.28a.5.5,0,0,0-.17,0L245,67h.29l.24-.74h.79l.24.74h.29l-.77-2.26a.47.47,0,0,0-.17,0ZM247.77,67a.78.78,0,0,0,.83-.73V64.69h-.29V66.1c0,.37-.15.67-.54.67s-.55-.3-.55-.67V64.69h-.28v1.47a.79.79,0,0,0,.71.86h.12M221,69.44a.56.56,0,0,1-.48.61h-.45V68.32h.38a.58.58,0,0,1,.55.59v.53Zm-.54-1.39h-.69v2.27h.69a.81.81,0,0,0,.84-.76v-.68a.81.81,0,0,0-.78-.83Zm1.13,2.27h.29V68.05h-.29Zm.9-1.71a.39.39,0,0,1,.44-.36.49.49,0,0,1,.47.27.54.54,0,0,0,.24-.09.72.72,0,0,0-.73-.44.64.64,0,0,0-.72.64c0,.77,1.22.52,1.22,1.07,0,.29-.23.42-.49.42a.53.53,0,0,1-.54-.41.35.35,0,0,0-.26.08.74.74,0,0,0,.8.59c.44,0,.79-.21.79-.69,0-.82-1.22-.54-1.22-1.08m1.27-.56a.66.66,0,0,0,0,.14.57.57,0,0,0,0,.13h.52v2h.29v-2h.52a.59.59,0,0,0,0-.13.68.68,0,0,0,0-.14ZM226,69.12h-.45V68.3H226a.37.37,0,0,1,.42.33v.08a.37.37,0,0,1-.34.4.11.11,0,0,1-.08,0m.4.11a.56.56,0,0,0,.3-.55.6.6,0,0,0-.58-.62h-.86v2.27h.29v-.93H226c.28,0,.44.11.44.39v.54h.29v-.55a.52.52,0,0,0-.33-.53m.65,1.09h.28V68.05h-.28Zm1.41-.27H228v-.82h.49c.28,0,.49.11.49.4s-.2.41-.49.41ZM228,68.31h.49a.3.3,0,0,1,.34.26.14.14,0,0,1,0,.09.3.3,0,0,1-.25.34H228Zm.88.77a.49.49,0,0,0,.24-.46c0-.41-.24-.56-.64-.56h-.76v2.27h.86a.66.66,0,0,0,.3-1.25Zm1.93.37c0,.37-.14.67-.54.67s-.54-.3-.54-.67v-1.4h-.29v1.47a.84.84,0,0,0,.79.88.83.83,0,0,0,.87-.79.14.14,0,0,0,0-.09V68.05h-.28v1.4Zm.48-1.4a.66.66,0,0,0,0,.14.57.57,0,0,0,0,.13h.53v2h.29v-2h.51a.59.59,0,0,0,0-.13.68.68,0,0,0,0-.14Zm1.58,2.27h.29V68.05h-.29Zm2-.86c0,.34-.16.66-.54.66s-.55-.32-.55-.66v-.53c0-.34.16-.67.55-.67s.54.33.54.67ZM234.3,68a.79.79,0,0,0-.85.76v.75a.84.84,0,1,0,1.68,0h0v-.65a.81.81,0,0,0-.76-.86Zm2.39,1.79-1-1.75h-.31v2.27h.29V68.58l1,1.74h.3V68.05h-.28Zm1.8-1.75v2.28h.28V69.25h.85a.92.92,0,0,0,0-.27h-.85v-.66h1a.51.51,0,0,0,0-.13.68.68,0,0,0,0-.14Zm2.25,1.07h-.44V68.3h.45a.37.37,0,0,1,.42.33v.08a.37.37,0,0,1-.34.4.11.11,0,0,1-.08,0m.4.11a.56.56,0,0,0,.3-.55.6.6,0,0,0-.58-.62H240v2.27h.3v-.93h.45c.28,0,.44.11.44.39v.54h.29v-.55a.52.52,0,0,0-.33-.53m1.19.09.3-.93.31.93Zm.29-1.28-.16,0-.77,2.27H242l.24-.74H243l.25.74h.28l-.77-2.29Zm2.67,0H245V69.8l-1-1.75h-.29v2.28H244V68.58l1,1.75h.3Zm.27.82v.65a.82.82,0,0,0,.76.86h.08a.79.79,0,0,0,.72-.41.51.51,0,0,0-.23-.15.52.52,0,0,1-.49.3c-.37,0-.55-.32-.55-.67v-.52a.6.6,0,0,1,.55-.67.54.54,0,0,1,.49.31.68.68,0,0,0,.23-.14.75.75,0,0,0-.72-.42.82.82,0,0,0-.85.78.22.22,0,0,0,0,.08m2,1.18v-.8h.85a.59.59,0,0,0,0-.13c0-.05,0-.09,0-.14h-.85v-.66h1a.49.49,0,0,0,0-.12.76.76,0,0,0,0-.15h-1.25v2.28h1.28a1,1,0,0,0,0-.28Z\" transform=\"translate(-23.36 -11.42)\"/><path class=\"cls-9\" d=\"M264.37,46.29v7.94c.71-.58,1.84-.78,3.61-.9V49.75h2.82c1.49-.06,4.79-.51,4.79-3.46Zm9.3,7h-.76c-2.11,0-8.19.58-8.53,5.19v4h1.21c2.16,0,2.39-2.27,2.39-3.23V56.47h1.4c2.84,0,4.28-.83,4.28-2.48v-.75\" transform=\"translate(-23.36 -11.42)\"/><path class=\"cls-9\" d=\"M256.46,46.29H248.6V62.43c2.74-.34,3.74-1.64,3.89-3.56V49.75H256l.36,0c1.64.19,2.69.91,2.8,4.22,0,.19,0,.41,0,.57-.09,5.36-4.16,7-6.43,7.61h0s0,0,0,0v.15s0,0,0,0H253c3.29,0,9.92-.8,9.92-8v-.14c-.05-6.26-2.77-8-6.41-8\" transform=\"translate(-23.36 -11.42)\"/><path class=\"cls-9\" d=\"M239.88,49.75l1.86,0H242a1.55,1.55,0,0,1,1.66,1.47V55l.11,0a2,2,0,0,0,.45-.16h0l.06,0h0l0,0A4.05,4.05,0,0,0,246.64,51a5.84,5.84,0,0,0,0-.73,5.17,5.17,0,0,0-.11-.54A4,4,0,0,0,244.26,47a4.29,4.29,0,0,0-.59-.24,7.83,7.83,0,0,0-3.31-.44h-5.31s0,0,0,0c.11.2.23.39.35.58a5.39,5.39,0,0,0,4.13,2.83h.35m7.46,12.64s-.36-.49-.82-1.28-2.83-4.89-3.27-5.66a2.45,2.45,0,0,0-1.55-1.11h0a6.5,6.5,0,0,0-1.25-.18h-2.67a1,1,0,0,0-1,1v2.45h3.37c.38.57.78,1.13,1.11,1.63s.74,1.07.9,1.26.65,1.1,2.79,1.63a13.41,13.41,0,0,0,2.18.28h.2Z\" transform=\"translate(-23.36 -11.42)\"/><path class=\"cls-9\" d=\"M233.72,54.16h-3.21v2.72h0a3.12,3.12,0,0,0,.45,1.83c.29.37.37.42.39.42h-2.1c-.44,0-.88,0-1.31-.06a4.22,4.22,0,0,1-2.52-.92,3.5,3.5,0,0,1-.95-2.48V49.75h9.7a5.44,5.44,0,0,0-2.34-2.53,7.24,7.24,0,0,0-.73-.38,7.78,7.78,0,0,0-3.17-.55,7.36,7.36,0,0,0-3.89.93,9.69,9.69,0,0,0-2,1.43,7.81,7.81,0,0,0-.39,11l.39.39a10.22,10.22,0,0,0,5.87,2.36,9.72,9.72,0,0,0,6-2.37c.18-.17.35-.35.52-.54s.21-.26.32-.39v-4a1,1,0,0,0-1-1\" transform=\"translate(-23.36 -11.42)\"/></svg>\n| ");
+"use strict";
 
-/***/ }),
-/* 1055 */
-/***/ (function(module, exports) {
 
-throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> <svg id=\"Calque_1\" data-name=\"Calque 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 242.16 299.92\"><defs><style>.cls-1{fill:#e7e6e6;}.cls-2{fill:#fff;}.cls-3{fill:#02b2ae;}.cls-4{fill:#f6b6b9;}.cls-5{fill:#302f42;}.cls-6{fill:#f1c016;}.cls-7{fill:#cdcccc;}.cls-8{fill:#88ba46;}.cls-9{fill:#2769a7;}.cls-10{fill:#13a2dd;}.cls-11{fill:#d41126;}.cls-12{fill:#fab30b;}.cls-12,.cls-13,.cls-14,.cls-15,.cls-16,.cls-17{fill-rule:evenodd;}.cls-13{fill:#9897a3;}.cls-14{fill:#71b857;}.cls-15{fill:#05b2af;}.cls-16{fill:#019bc4;}.cls-17{fill:#0654a2;}</style></defs><path class=\"cls-1\" d=\"M128.6,244.84V194.62a4.22,4.22,0,0,1,4.21-4.21h69.85a4.21,4.21,0,0,1,4.2,4.21v50.22a4.21,4.21,0,0,1-4.2,4.21H132.81A4.22,4.22,0,0,1,128.6,244.84Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-2\" d=\"M203.4,243.66V195.81a2,2,0,0,0-2-2H134.1a2,2,0,0,0-2,2v47.85a2,2,0,0,0,2,2h67.26A2,2,0,0,0,203.4,243.66Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-1\" d=\"M139.07,218.27h0a1.53,1.53,0,0,0-1.52,1.53,1.51,1.51,0,0,0,1.52,1.51h57.32a1.52,1.52,0,1,0,0-3Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-1\" d=\"M139.07,227.63a1.52,1.52,0,1,0,0,3h57.32a1.52,1.52,0,0,0,0-3Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-3\" d=\"M164.69,237.46a1.52,1.52,0,0,0,0,3h6.08a1.52,1.52,0,0,0,0-3Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-3\" d=\"M159.58,199a.47.47,0,0,0-.47.47v11.88a.47.47,0,0,0,.47.47h16.3a.47.47,0,0,0,.47-.47V199.43a.47.47,0,0,0-.47-.47Z\" transform=\"translate(-27.95 -44.07)\"/><circle class=\"cls-2\" cx=\"139.78\" cy=\"159.99\" r=\"2.57\"/><path class=\"cls-2\" d=\"M163.52,210.6a2.57,2.57,0,0,1,2.57-2.57h3.28a2.62,2.62,0,0,1,1.17.28,2.57,2.57,0,0,1,1.12,3.47H163.8a2.55,2.55,0,0,1-.28-1.17Z\" transform=\"translate(-27.95 -44.07)\"/><circle class=\"cls-2\" cx=\"139.78\" cy=\"159.99\" r=\"2.57\"/><path class=\"cls-2\" d=\"M163.52,210.6a2.57,2.57,0,0,1,2.57-2.57h3.28a2.62,2.62,0,0,1,1.17.28,2.57,2.57,0,0,1,1.12,3.47H163.8a2.55,2.55,0,0,1-.28-1.17Z\" transform=\"translate(-27.95 -44.07)\"/><circle class=\"cls-1\" cx=\"139.78\" cy=\"133.78\" r=\"6.08\"/><circle class=\"cls-3\" cx=\"139.78\" cy=\"133.78\" r=\"3.04\"/><polygon class=\"cls-4\" points=\"197.28 296.61 194.37 296.61 192.98 285.37 197.28 285.37 197.28 296.61\"/><path class=\"cls-5\" d=\"M220.24,339.85h5.62v3.54H216.7a3.53,3.53,0,0,1,3.54-3.54Z\" transform=\"translate(-27.95 -44.07)\"/><polygon class=\"cls-4\" points=\"212.99 296.61 210.08 296.61 208.69 285.37 213 285.37 212.99 296.61\"/><path class=\"cls-5\" d=\"M236,339.85h5.62v3.54h-9.16a3.53,3.53,0,0,1,3.54-3.54Z\" transform=\"translate(-27.95 -44.07)\"/><circle class=\"cls-4\" cx=\"204.46\" cy=\"210.44\" r=\"6.26\"/><path class=\"cls-4\" d=\"M211,295.34a2.39,2.39,0,0,1,2.67-2.07,2.71,2.71,0,0,1,.41.09l3.5-4.2,3.07,1.51-5,5.85a2.4,2.4,0,0,1-4.62-1.18Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-4\" d=\"M241.12,299.58a2.38,2.38,0,0,1,1.14-3.18,1.82,1.82,0,0,1,.39-.14l.71-5.42,3.39-.38-1.1,7.64a2.4,2.4,0,0,1-4.53,1.48Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-6\" d=\"M237.64,266.33h0a3.07,3.07,0,0,1,4.32-.53,2.92,2.92,0,0,1,1,1.28l5.13,12.81a7.87,7.87,0,0,1,.49,4.13l-1.67,11.25a1,1,0,0,1-1.16.86l-.15,0-2.2-.68a1,1,0,0,1-.72-1.09h0a37,37,0,0,0-3-19.43l-2.42-5.42A3.09,3.09,0,0,1,237.64,266.33Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-5\" d=\"M233.93,260.77a6.68,6.68,0,1,0-1.25-13.21,7.67,7.67,0,0,0-4.58-1.26,4.5,4.5,0,0,0-3.79,2.59,3.21,3.21,0,0,0,1.53,4.08,5.87,5.87,0,0,0,3.06,0,4.51,4.51,0,0,1,3,.27c.89.52,1.29,1.93.5,2.59a2.74,2.74,0,0,0-.79,3A3,3,0,0,0,233.93,260.77Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-5\" d=\"M241.7,295.09l1.11,42.15a1,1,0,0,1-1,1.05h-.08l-3.66-.19a1,1,0,0,1-1-.86l-4.35-27.37a.52.52,0,0,0-.59-.43.54.54,0,0,0-.42.4l-5.89,26.35a1,1,0,0,1-1.21.78l-.12,0-3.63-.22a1,1,0,0,1-.68-1l3.17-41Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-6\" d=\"M243.48,275.07A11.48,11.48,0,0,0,233,262.46c-2.76-.2-7-.27-8.45,3.34-4.25,10.89,3.19,10.63.63,20.06s-4.83,10-1.31,10.66,19.34,4.7,18.69-1.94C242.16,290.5,242.87,281.45,243.48,275.07Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-6\" d=\"M225.3,264.7h0a3.08,3.08,0,0,1,4,1.76,3.23,3.23,0,0,1,.17,1.6l-2,12.49a12.21,12.21,0,0,1-2.62,5.81l-6.49,7.91a1,1,0,0,1-1.43.14l-.12-.11-1.54-1.71a1,1,0,0,1,0-1.3l.46-.59a34.33,34.33,0,0,0,6.89-16.87l.8-6.63A3.06,3.06,0,0,1,225.3,264.7Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-7\" d=\"M259.55,344H193.77a.25.25,0,0,1-.25-.25.26.26,0,0,1,.25-.26h65.78a.26.26,0,0,1,.25.26A.25.25,0,0,1,259.55,344Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-1\" d=\"M35,199V148.76a4.22,4.22,0,0,1,4.21-4.21h69.85a4.21,4.21,0,0,1,4.2,4.21V199a4.21,4.21,0,0,1-4.2,4.21H39.24A4.22,4.22,0,0,1,35,199Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-2\" d=\"M109.84,197.79V150a2,2,0,0,0-2-2H40.53a2,2,0,0,0-2,2v47.84a2,2,0,0,0,2,2H107.8A2,2,0,0,0,109.84,197.79Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-1\" d=\"M45.5,172.41h0a1.52,1.52,0,0,0,0,3h57.33a1.52,1.52,0,1,0,0-3Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-1\" d=\"M45.5,181.77a1.52,1.52,0,0,0,0,3h57.33a1.52,1.52,0,1,0,0-3Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-8\" d=\"M71.12,191.6a1.52,1.52,0,0,0,0,3H77.2a1.52,1.52,0,0,0,0-3Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-9\" d=\"M66,153.1a.47.47,0,0,0-.47.47v11.88a.46.46,0,0,0,.47.46h16.3a.46.46,0,0,0,.47-.46V153.57a.47.47,0,0,0-.47-.47Z\" transform=\"translate(-27.95 -44.07)\"/><circle class=\"cls-2\" cx=\"46.21\" cy=\"114.12\" r=\"2.57\"/><path class=\"cls-2\" d=\"M70,164.74a2.57,2.57,0,0,1,2.57-2.57H75.8a2.62,2.62,0,0,1,1.17.28,2.57,2.57,0,0,1,1.12,3.46H70.23a2.61,2.61,0,0,1-.28-1.16Z\" transform=\"translate(-27.95 -44.07)\"/><circle class=\"cls-2\" cx=\"46.21\" cy=\"114.12\" r=\"2.57\"/><path class=\"cls-2\" d=\"M70,164.74a2.57,2.57,0,0,1,2.57-2.57H75.8a2.62,2.62,0,0,1,1.17.28,2.57,2.57,0,0,1,1.12,3.46H70.23a2.61,2.61,0,0,1-.28-1.16Z\" transform=\"translate(-27.95 -44.07)\"/><circle class=\"cls-1\" cx=\"46.21\" cy=\"87.92\" r=\"6.08\"/><circle class=\"cls-10\" cx=\"46.21\" cy=\"87.92\" r=\"3.04\"/><path class=\"cls-1\" d=\"M35.37,300.36V250.14a4.22,4.22,0,0,1,4.21-4.21h69.85a4.21,4.21,0,0,1,4.2,4.21v50.22a4.2,4.2,0,0,1-4.2,4.2H39.58A4.21,4.21,0,0,1,35.37,300.36Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-2\" d=\"M110.18,299.17V251.32a2,2,0,0,0-2-2H40.87a2,2,0,0,0-2,2v47.85a2,2,0,0,0,2,2h67.27A2,2,0,0,0,110.18,299.17Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-1\" d=\"M45.84,273.79h0a1.52,1.52,0,0,0,0,3h57.33a1.52,1.52,0,1,0,0-3Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-1\" d=\"M45.84,283.15a1.52,1.52,0,0,0,0,3h57.33a1.52,1.52,0,1,0,0-3Z\" transform=\"translate(-27.95 -44.07)\"/><path d=\"M71.46,293a1.52,1.52,0,1,0,0,3h6.08a1.52,1.52,0,1,0,0-3Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-11\" d=\"M66.35,254.48a.47.47,0,0,0-.47.47v11.88a.47.47,0,0,0,.47.46h16.3a.47.47,0,0,0,.47-.46V255a.47.47,0,0,0-.47-.47Z\" transform=\"translate(-27.95 -44.07)\"/><circle class=\"cls-2\" cx=\"46.55\" cy=\"215.5\" r=\"2.57\"/><path class=\"cls-2\" d=\"M70.29,266.12a2.57,2.57,0,0,1,2.57-2.57h3.28a2.62,2.62,0,0,1,1.17.28,2.57,2.57,0,0,1,1.12,3.46H70.57a2.62,2.62,0,0,1-.28-1.17Z\" transform=\"translate(-27.95 -44.07)\"/><circle class=\"cls-2\" cx=\"46.55\" cy=\"215.5\" r=\"2.57\"/><path class=\"cls-2\" d=\"M70.29,266.12a2.57,2.57,0,0,1,2.57-2.57h3.28a2.62,2.62,0,0,1,1.17.28,2.57,2.57,0,0,1,1.12,3.46H70.57a2.62,2.62,0,0,1-.28-1.17Z\" transform=\"translate(-27.95 -44.07)\"/><circle class=\"cls-1\" cx=\"46.55\" cy=\"189.3\" r=\"6.08\"/><circle class=\"cls-11\" cx=\"46.55\" cy=\"189.3\" r=\"3.04\"/><image width=\"808\" height=\"303\" transform=\"translate(0 3.46) scale(0.1)\" xlink:href=\"data:image/png;base64,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\"/><path class=\"cls-12\" d=\"M242.49,77.51a.55.55,0,0,1-.55.55H231.65a.55.55,0,0,1-.55-.55h0v-1.6a.55.55,0,0,1,.55-.55h10.29a.55.55,0,0,1,.55.55Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-13\" d=\"M219.81,67.29h-1a1,1,0,0,0,0,.17.77.77,0,0,0,0,.15h.68c0,.47-.11.81-.64.81a.68.68,0,0,1-.63-.76V67c0-.41.2-.8.65-.8a.64.64,0,0,1,.59.36.41.41,0,0,0,.26-.17.9.9,0,0,0-.85-.49,1,1,0,0,0-1,1v.79a1,1,0,0,0,1,1,.89.89,0,0,0,.95-1Zm.88.18.36-1.09.37,1.09Zm.36-1.52-.19,0L220,68.66h.34l.3-.86h.94l.3.86h.34L221.26,66l-.21,0Zm3.12.16a.68.68,0,0,0,0-.14h-1.7a.41.41,0,0,0,0,.16.4.4,0,0,0,0,.15h1.3l-1.42,2.06a.45.45,0,0,0,0,.16.41.41,0,0,0,0,.16h1.81a.41.41,0,0,0,0-.16.45.45,0,0,0,0-.16h-1.4l1.4-2.07a.41.41,0,0,0,0-.16m2.68,1.13h-.54v-1h.54a.45.45,0,0,1,.5.49.45.45,0,0,1-.5.49m.48.13a.68.68,0,0,0,.35-.66.7.7,0,0,0-.74-.74h-1v2.69h.34v-1.1h.54c.33,0,.52.12.52.46v.64h.34V68a.63.63,0,0,0-.38-.63m1.61-2.23-.29.49h.23l.39-.49Zm-.46,3.21v-1h1a1.29,1.29,0,0,0,0-.32h-1v-.79h1.16a.66.66,0,0,0,0-.14.91.91,0,0,0,0-.17h-1.5v2.69h1.54a.61.61,0,0,0,0-.31Zm2.3.07a.61.61,0,0,1-.64-.47.35.35,0,0,0-.31.09.88.88,0,0,0,.95.69c.52,0,.94-.24.94-.81,0-1-1.45-.65-1.45-1.29,0-.28.26-.42.52-.42a.57.57,0,0,1,.56.31.54.54,0,0,0,.3-.1.87.87,0,0,0-.88-.51.76.76,0,0,0-.85.75c0,.91,1.44.62,1.44,1.28,0,.34-.27.48-.58.48m2.82.08a.77.77,0,0,0,0-.15h-1.2v-1h1a1.28,1.28,0,0,0,0-.32h-1v-.79h1.15a.68.68,0,0,0,0-.14.88.88,0,0,0,0-.17H232v2.69h1.54a.78.78,0,0,0,0-.16m.82-1,.37-1.09.37,1.09Zm.37-1.52a.65.65,0,0,0-.2,0l-.91,2.69H234l.3-.86h.94l.3.86h.34L235,66l-.2,0ZM237,68.73a.94.94,0,0,0,1-1V66h-.35v1.65c0,.45-.17.8-.64.8s-.65-.35-.65-.8V66H236v1.74a.94.94,0,0,0,1,1m-31.88,2.89a.65.65,0,0,1-.65.73H204V70.29h.45a.67.67,0,0,1,.65.75ZM204.49,70h-.8v2.7h.8a1,1,0,0,0,1-1V71A1,1,0,0,0,204.49,70Zm1.35,2.7h.34V70h-.34Zm1.07-2c0-.3.26-.43.52-.43a.57.57,0,0,1,.56.32.64.64,0,0,0,.3-.11.85.85,0,0,0-.87-.52.77.77,0,0,0-.86.76c0,.91,1.45.62,1.45,1.28,0,.34-.28.49-.59.49a.61.61,0,0,1-.64-.48.35.35,0,0,0-.31.09.88.88,0,0,0,.95.7c.52,0,.94-.25.94-.82,0-1-1.45-.65-1.45-1.28m1.51-.67a.88.88,0,0,0,0,.16,1,1,0,0,0,0,.16H209v2.38h.35V70.29H210a1,1,0,0,0,0-.16.88.88,0,0,0,0-.16Zm2.73,1.27h-.54v-1h.54a.45.45,0,0,1,.5.49.44.44,0,0,1-.5.48m.47.13a.67.67,0,0,0,.36-.66.71.71,0,0,0-.75-.74h-1v2.7h.35V71.55h.54c.32,0,.52.14.52.47v.65H212V72a.63.63,0,0,0-.39-.63m.77,1.3h.34V70h-.34Zm1.68-.32h-.58v-1h.58c.34,0,.57.14.57.48s-.23.49-.57.49Zm-.58-2.08h.58a.36.36,0,0,1,.41.41c0,.28-.13.4-.41.4h-.58Zm1,.92a.59.59,0,0,0,.29-.55c0-.48-.29-.67-.76-.67h-.92v2.7h1a.72.72,0,0,0,.8-.75A.71.71,0,0,0,214.54,71.19Zm2.3.44c0,.44-.17.8-.64.8s-.65-.36-.65-.8V70h-.34v1.74a1,1,0,1,0,2,0V70h-.34v1.66Zm.57-1.66a.44.44,0,0,0,0,.16.47.47,0,0,0,0,.16H218v2.38h.34V70.29H219a1,1,0,0,0,0-.16.88.88,0,0,0,0-.16Zm1.88,2.7h.34V70h-.34Zm2.34-1c0,.41-.19.79-.65.79s-.65-.38-.65-.79V71c0-.41.19-.8.65-.8s.65.39.65.8ZM221,69.91a1,1,0,0,0-1,1v.78a1,1,0,1,0,2,0v-.78A1,1,0,0,0,221,69.91Zm2.84,2.14L222.66,70h-.35v2.7h.34V70.6l1.17,2.07h.35V70h-.35ZM226,70v2.7h.34V71.39h1a.86.86,0,0,0,0-.16.92.92,0,0,0,0-.16h-1v-.78h1.15a.65.65,0,0,0,0-.32Zm2.68,1.27h-.54v-1h.54a.45.45,0,0,1,.5.49.44.44,0,0,1-.5.48m.48.13a.68.68,0,0,0,.35-.66.7.7,0,0,0-.74-.74h-1v2.7h.34V71.55h.54c.33,0,.52.14.52.47v.65h.35V72a.64.64,0,0,0-.39-.63m1.41.11.36-1.1.37,1.1ZM230.9,70l-.19,0-.92,2.7h.35l.29-.87h.94l.3.87H232L231.1,70Zm3.17,0h-.34v2.08L232.56,70h-.35v2.7h.34V70.59l1.17,2.08h.35Zm.33,1v.78a1,1,0,0,0,1,1,.93.93,0,0,0,.86-.5.65.65,0,0,0-.27-.17.65.65,0,0,1-.59.36c-.45,0-.65-.39-.65-.8V71c0-.4.2-.8.65-.8a.63.63,0,0,1,.59.36.87.87,0,0,0,.27-.17.91.91,0,0,0-.86-.5,1,1,0,0,0-1,1m2.42,1.42v-1h1a.77.77,0,0,0,0-.15,1,1,0,0,0,0-.17h-1v-.78H238a.81.81,0,0,0,0-.15,1,1,0,0,0,0-.17h-1.49v2.7H238a1,1,0,0,0,0-.16.88.88,0,0,0,0-.16Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-14\" d=\"M256.77,44.07v9.45c.84-.7,2.19-.93,4.29-1.07V48.19h3.36c1.77-.08,5.69-.61,5.69-4.12Zm11.05,8.27h-.89c-2.52.06-9.76.69-10.16,6.18v4.76h1.44c2.58-.06,2.85-2.7,2.85-3.84V56.19h1.66c3.38,0,5.1-1,5.1-3v-.89\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-15\" d=\"M247.36,44.08H238V63.28c3.26-.41,4.45-2,4.63-4.24V48.19h4.11l.43,0c2,.23,3.2,1.09,3.33,5,0,.22,0,.48,0,.68-.1,6.38-5,8.33-7.64,9h0a.06.06,0,0,0-.05.06v.17a.07.07,0,0,0,.05.07h.32c3.92,0,11.8-1,11.8-9.56v-.16c0-7.46-3.26-9.48-7.6-9.48\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-16\" d=\"M227.62,48.19l2.21,0h.32a1.85,1.85,0,0,1,2,1.75v4.5l.13,0a3.13,3.13,0,0,0,.54-.19l0,0,.08,0,0,0,0,0a4.82,4.82,0,0,0,2.7-4.5,6.54,6.54,0,0,0-.06-.89q0-.31-.12-.63a4.78,4.78,0,0,0-2.65-3.25c-.23-.11-.46-.21-.7-.3a9.75,9.75,0,0,0-3.93-.5h-6.33s0,0,0,0q.21.36.42.69a6.39,6.39,0,0,0,4.92,3.36l.42,0m8.87,15s-.43-.59-1-1.53L231.64,55a2.89,2.89,0,0,0-1.85-1.32h0a7.1,7.1,0,0,0-1.49-.21h-3.17A1.21,1.21,0,0,0,224,54.65v2.9h4c.46.69.93,1.37,1.33,2s.88,1.26,1.07,1.5.78,1.31,3.32,1.93a16.63,16.63,0,0,0,2.59.33h.24Z\" transform=\"translate(-27.95 -44.07)\"/><path class=\"cls-17\" d=\"M220.3,53.43h-3.83v3.24h0a3.79,3.79,0,0,0,.53,2.18c.35.44.45.49.47.5H215a14.41,14.41,0,0,1-1.55-.08,5.06,5.06,0,0,1-3-1.08,4.18,4.18,0,0,1-1.13-3V48.19h11.53a6.34,6.34,0,0,0-2.77-3,8.11,8.11,0,0,0-.88-.45,9.07,9.07,0,0,0-3.76-.66,8.77,8.77,0,0,0-4.64,1.11,11.12,11.12,0,0,0-2.43,1.7,9.28,9.28,0,0,0,0,13.59,12.14,12.14,0,0,0,7,2.81,11.59,11.59,0,0,0,7.15-2.81c.22-.2.42-.42.62-.64s.26-.31.38-.47V54.62a1.21,1.21,0,0,0-1.17-1.19\" transform=\"translate(-27.95 -44.07)\"/><image width=\"2246\" height=\"1043\" transform=\"translate(93.27 37.94) scale(0.03)\" xlink:href=\"data:image/png;base64,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\"/></svg>\n| ");
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.REMOTE_ORG_ECOLYO_AGENT_PARTNERS_INFO_REC = exports.REMOTE_ORG_ECOLYO_AGENT_PARTNERS_INFO = void 0;
+const REMOTE_ORG_ECOLYO_AGENT_PARTNERS_INFO = '/remote/org.ecolyo.agent.partners.info';
+exports.REMOTE_ORG_ECOLYO_AGENT_PARTNERS_INFO = REMOTE_ORG_ECOLYO_AGENT_PARTNERS_INFO;
+const REMOTE_ORG_ECOLYO_AGENT_PARTNERS_INFO_REC = '/remote/org.ecolyo.agent.partners.info.rec';
+exports.REMOTE_ORG_ECOLYO_AGENT_PARTNERS_INFO_REC = REMOTE_ORG_ECOLYO_AGENT_PARTNERS_INFO_REC;
 
 /***/ }),
-/* 1056 */
+/* 870 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -127184,90 +116654,31 @@ throw new Error("Module parse failed: Unexpected token (1:0)\nYou may need an ap
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.default = void 0;
-var _enums = __webpack_require__(230);
-var _luxon = __webpack_require__(250);
-class ConsumptionValidatorService {
-  ValidateGetGraphData(timePeriod, timeStep, fluidTypes, compareTimePeriod, isExport) {
-    if (fluidTypes.length === 0) return false;
-    if (!this.ValidateTimePeriod(timePeriod)) return false;
-    for (const fluidType of fluidTypes) {
-      if (timeStep === _enums.TimeStep.HALF_AN_HOUR && fluidType !== _enums.FluidType.ELECTRICITY) return false;
-    }
-    if (!isExport && !this.ValidateTimePeriodLength(timePeriod, timeStep)) return false;
-    if (compareTimePeriod) {
-      if (!this.ValidateTimePeriod(compareTimePeriod)) return false;
-      if (!this.ValidateTimePeriodLength(compareTimePeriod, timeStep)) return false;
-    }
-    return true;
-  }
-  ValidateTimePeriodLength(timePeriod, timeStep) {
-    const interval = _luxon.Interval.fromDateTimes(timePeriod.startDate, timePeriod.endDate);
-    if (timeStep == _enums.TimeStep.HALF_AN_HOUR && interval.length('hour') > 24) return false;
-    if (timeStep == _enums.TimeStep.WEEK && interval.length('day') > 7) return false;
-    if (timeStep == _enums.TimeStep.DAY && interval.length('day') > 36) return false;
-    if (timeStep == _enums.TimeStep.MONTH && interval.length('month') > 12) return false;
-    if (timeStep == _enums.TimeStep.YEAR && interval.length('year') > 10) return false;
-    return true;
-  }
-  ValidateTimePeriod(timePeriod) {
-    return timePeriod.endDate >= timePeriod.startDate;
-  }
-}
-exports.default = ConsumptionValidatorService;
+exports.REMOTE_ORG_ECOLYO_AGENT_PRICES_REC = exports.REMOTE_ORG_ECOLYO_AGENT_PRICES = void 0;
+const REMOTE_ORG_ECOLYO_AGENT_PRICES = '/remote/org.ecolyo.agent.prices';
+exports.REMOTE_ORG_ECOLYO_AGENT_PRICES = REMOTE_ORG_ECOLYO_AGENT_PRICES;
+const REMOTE_ORG_ECOLYO_AGENT_PRICES_REC = '/remote/org.ecolyo.agent.prices.rec';
+exports.REMOTE_ORG_ECOLYO_AGENT_PRICES_REC = REMOTE_ORG_ECOLYO_AGENT_PRICES_REC;
 
 /***/ }),
-/* 1057 */
+/* 871 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _interopRequireDefault = __webpack_require__(1);
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.default = void 0;
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
-var _enums = __webpack_require__(230);
-var _fluidConfig = _interopRequireDefault(__webpack_require__(875));
-class ConverterService {
-  constructor() {
-    (0, _defineProperty2.default)(this, "_fluidConfig", void 0);
-    this._fluidConfig = new _fluidConfig.default().getFluidConfig();
-  }
-  LoadToEuro(load, fluidType, price) {
-    let convertedLoad;
-    // If Multifluid do not apply coeff because it doesn't exist
-    if (fluidType === _enums.FluidType.MULTIFLUID) {
-      convertedLoad = load;
-    } else {
-      convertedLoad = this.computePrice(this._fluidConfig[fluidType], load, price);
-    }
-
-    // Prevent round 0 case when the actual value is not 0
-    if (convertedLoad > 0 && convertedLoad < 0.01) {
-      convertedLoad = 0.01;
-    }
-    return convertedLoad;
-  }
-
-  /**
-   * Compute calculated price
-   * If a price is provided, return the price
-   * @param {FluidConfig} fluidConfig - Fluid configuration
-   * @param {number} load - Load value
-   * @param {number} [price] - Price if exist
-   */
-  computePrice(fluidConfig, load, price) {
-    if (price) return price;
-    return load * fluidConfig.coefficient;
-  }
-}
-exports.default = ConverterService;
+exports.REMOTE_ORG_ECOLYO_DJU = void 0;
+const REMOTE_ORG_ECOLYO_DJU = '/remote/org.ecolyo.dju_v3';
+exports.REMOTE_ORG_ECOLYO_DJU = REMOTE_ORG_ECOLYO_DJU;
 
 /***/ }),
-/* 1058 */
+/* 872 */,
+/* 873 */,
+/* 874 */,
+/* 875 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -127278,310 +116689,215 @@ Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = void 0;
-var _defineProperty2 = _interopRequireDefault(__webpack_require__(275));
-var _cozyClient = __webpack_require__(276);
-var _doctypes = __webpack_require__(837);
-var _enums = __webpack_require__(230);
-var _luxon = __webpack_require__(250);
-var _logger = _interopRequireDefault(__webpack_require__(1059));
-class QueryRunner {
-  // TODO to be clean up
-  /* eslint-disable camelcase */
-
-  /* eslint-enable camelcase */
-
-  constructor(_client) {
-    (0, _defineProperty2.default)(this, "_max_limit", 1000);
-    (0, _defineProperty2.default)(this, "_default_months", [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]);
-    (0, _defineProperty2.default)(this, "_default_days", [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]);
-    (0, _defineProperty2.default)(this, "_client", void 0);
-    this._client = _client;
-  }
-  buildListQuery(timeStep, timePeriod, fluidType, limit) {
-    const doctype = this.getRelevantDoctype(fluidType, timeStep);
-    return (0, _cozyClient.Q)(doctype).where(this.getPredicate(timePeriod, timeStep)).limitBy(limit);
-  }
-  buildMaxQuery(timeStep, maxTimePeriod, fluidType, limit) {
-    const doctype = this.getRelevantDoctype(fluidType, timeStep);
-    if (timeStep === _enums.TimeStep.HALF_AN_HOUR) {
-      return (0, _cozyClient.Q)(doctype).where(this.getPredicate(maxTimePeriod, _enums.TimeStep.HALF_AN_HOUR)).indexFields(['load']).sortBy([{
-        load: 'desc'
-      }]).limitBy(1);
-    }
-    return (0, _cozyClient.Q)(doctype).where(this.getPredicate(maxTimePeriod, timeStep)).indexFields(['load']).sortBy([{
-      load: 'desc'
-    }]).limitBy(limit);
-  }
-  buildFirstDateQuery(fluidType, limit, timeStep) {
-    const doctype = this.getRelevantDoctype(fluidType, timeStep || _enums.TimeStep.DAY);
-    return (0, _cozyClient.Q)(doctype).where({
-      year: {
-        $ne: null
-      },
-      month: {
-        $ne: null
-      },
-      day: {
-        $ne: null
-      }
-    }).indexFields(['year', 'month', 'day']).sortBy([{
-      year: 'asc'
-    }, {
-      month: 'asc'
-    }, {
-      day: 'asc'
-    }]).limitBy(limit);
-  }
-  buildLastDateQuery(fluidType, limit, timeStep) {
-    const doctype = this.getRelevantDoctype(fluidType, timeStep || _enums.TimeStep.DAY);
-    return (0, _cozyClient.Q)(doctype).where({
-      year: {
-        $ne: null
-      },
-      month: {
-        $ne: null
-      },
-      day: {
-        $ne: null
-      }
-    }).indexFields(['year', 'month', 'day']).sortBy([{
-      year: 'desc'
-    }, {
-      month: 'desc'
-    }, {
-      day: 'desc'
-    }]).limitBy(limit);
-  }
-  async fetchData(query) {
-    let result = null;
-    try {
-      result = await this._client.query(query);
-    } catch (error) {
-      // log stuff
-      // throw new Error('Fetch data failed in query runner')
-      _logger.default.error('QueryRunner error: ', error);
-    }
-    return result;
-  }
-  filterDataList(data, timePeriod, timeStep) {
-    if (timeStep === _enums.TimeStep.HALF_AN_HOUR) {
-      // increase timeperiod range because the last data for a day is actually stored the next day at 00:00
-      timePeriod.startDate = timePeriod.startDate.plus({
-        minutes: 30
-      });
-      timePeriod.endDate = timePeriod.endDate.plus({
-        minutes: 30
-      });
-    }
-    const filteredResult = data.data.filter(entry => {
-      // added ternary expression to not send to withinDateBoundaries an hour different than zero when not in half-hour mode
-      const hour = timeStep === _enums.TimeStep.HALF_AN_HOUR ? entry.hour : 0;
-      const min = timeStep === _enums.TimeStep.HALF_AN_HOUR ? entry.minute : 0;
-      return this.withinDateBoundaries(_luxon.DateTime.local(entry.year, entry.month || 1, entry.day || 1, hour, min).setZone('utc', {
-        keepLocalTime: true
-      }), timePeriod);
-    });
-    return filteredResult;
-  }
-  mapDataList(data, timeStep) {
-    // set back every half hour data at -30 minutes so it is displayed as 23:30 instead of 00:00 etc..
-    const minusValue = timeStep === _enums.TimeStep.HALF_AN_HOUR ? 30 : 0;
-    const mappedResult = data.map(entry => ({
-      date: _luxon.DateTime.local(entry.year, entry.month || 1, entry.day || 1, entry.hour, entry.minute).setZone('utc', {
-        keepLocalTime: true
-      }).minus({
-        minutes: minusValue
-      }),
-      value: entry.load,
-      state: _enums.DataloadState.VALID,
-      price: entry.price,
-      valueDetail: null
-    }));
-    return mappedResult;
-  }
-  withinDateBoundaries(dateTime, timePeriod) {
-    return dateTime <= timePeriod.endDate && dateTime >= timePeriod.startDate;
-  }
-  getInBetweenMonths(timePeriod) {
-    const intervalCount = _luxon.Interval.fromDateTimes(timePeriod.startDate, timePeriod.endDate).count('month');
-    if (intervalCount >= 12) return this._default_months;
-    const monthList = [];
-    let offset = 0;
-    if (timePeriod.startDate.year !== timePeriod.endDate.year) offset = 12;
-    for (let m = timePeriod.startDate.month; m <= timePeriod.endDate.month + offset; m++) {
-      monthList.push(m > offset ? m - offset : m);
-    }
-    return monthList;
-  }
-  getInBetweenDays(timePeriod) {
-    const intervalCount = _luxon.Interval.fromDateTimes(timePeriod.startDate, timePeriod.endDate).count('day');
-    if (intervalCount >= 31) return this._default_days;
-    const dayList = [];
-    let offset = 0;
-    if (timePeriod.startDate.month !== timePeriod.endDate.month) offset = 31;
-    for (let d = timePeriod.startDate.day; d <= timePeriod.endDate.day + offset; d++) {
-      dayList.push(d > offset ? d - offset : d);
-    }
-    return dayList;
-  }
-  getPredicate(timePeriod, timeStep) {
-    let predicate = {};
-    switch (timeStep) {
-      case _enums.TimeStep.HALF_AN_HOUR:
-        predicate = {
-          year: {
-            $eq: timePeriod.startDate.year
-          },
-          month: {
-            $eq: timePeriod.startDate.month
-          },
-          day: {
-            $in: [timePeriod.startDate.day, timePeriod.startDate.day + 1]
-          }
-        };
-        break;
-      case _enums.TimeStep.WEEK:
-      case _enums.TimeStep.DAY:
-        predicate = {
-          year: {
-            $lte: timePeriod.endDate.year,
-            $gte: timePeriod.startDate.year
-          },
-          month: {
-            $in: this.getInBetweenMonths(timePeriod)
-          },
-          day: {
-            $in: this.getInBetweenDays(timePeriod)
-          }
-        };
-        break;
-      case _enums.TimeStep.MONTH:
-        predicate = {
-          year: {
-            $lte: timePeriod.endDate.year,
-            $gte: timePeriod.startDate.year
-          },
-          month: {
-            $in: this.getInBetweenMonths(timePeriod)
-          }
-        };
-        break;
-      case _enums.TimeStep.YEAR:
-        predicate = {
-          year: {
-            $lte: timePeriod.endDate.year,
-            $gte: timePeriod.startDate.year
-          }
-        };
-        break;
-    }
-    return predicate;
-  }
-  getRelevantDoctype(fluidType, timeStep) {
-    var _doctypeMappings$flui, _doctypeMappings$flui2;
-    const doctypeMappings = {
-      [_enums.FluidType.ELECTRICITY]: {
-        [_enums.TimeStep.HALF_AN_HOUR]: _doctypes.ENEDIS_MINUTE_DOCTYPE,
-        [_enums.TimeStep.WEEK]: _doctypes.ENEDIS_DAY_DOCTYPE,
-        [_enums.TimeStep.DAY]: _doctypes.ENEDIS_DAY_DOCTYPE,
-        [_enums.TimeStep.MONTH]: _doctypes.ENEDIS_MONTH_DOCTYPE,
-        [_enums.TimeStep.YEAR]: _doctypes.ENEDIS_YEAR_DOCTYPE,
-        default: _doctypes.ENEDIS_DAY_DOCTYPE
-      },
-      [_enums.FluidType.WATER]: {
-        [_enums.TimeStep.WEEK]: _doctypes.EGL_DAY_DOCTYPE,
-        [_enums.TimeStep.DAY]: _doctypes.EGL_DAY_DOCTYPE,
-        [_enums.TimeStep.MONTH]: _doctypes.EGL_MONTH_DOCTYPE,
-        [_enums.TimeStep.YEAR]: _doctypes.EGL_YEAR_DOCTYPE,
-        default: _doctypes.EGL_DAY_DOCTYPE
-      },
-      [_enums.FluidType.GAS]: {
-        [_enums.TimeStep.WEEK]: _doctypes.GRDF_DAY_DOCTYPE,
-        [_enums.TimeStep.DAY]: _doctypes.GRDF_DAY_DOCTYPE,
-        [_enums.TimeStep.MONTH]: _doctypes.GRDF_MONTH_DOCTYPE,
-        [_enums.TimeStep.YEAR]: _doctypes.GRDF_YEAR_DOCTYPE,
-        default: _doctypes.GRDF_DAY_DOCTYPE
-      }
-    };
-    return ((_doctypeMappings$flui = doctypeMappings[fluidType]) === null || _doctypeMappings$flui === void 0 ? void 0 : _doctypeMappings$flui[timeStep]) || ((_doctypeMappings$flui2 = doctypeMappings[fluidType]) === null || _doctypeMappings$flui2 === void 0 ? void 0 : _doctypeMappings$flui2.default) || 'default';
-  }
-  async fetchFluidData(timePeriod, timeStep, fluidType) {
-    const query = this.buildListQuery(timeStep, timePeriod, fluidType, this._max_limit);
-    const result = await this.fetchData(query);
-    if (result !== null && result !== void 0 && result.data) {
-      const filteredResult = this.filterDataList(result, timePeriod, timeStep);
-      const mappedResult = this.mapDataList(filteredResult, timeStep);
-      return mappedResult;
-    }
-    return null;
-  }
-  async fetchFluidRawDoctype(timePeriod, timeStep, fluidType) {
-    const query = this.buildListQuery(timeStep, timePeriod, fluidType, this._max_limit);
-    return this.fetchData(query);
-  }
-  async fetchFluidMaxData(maxTimePeriod, timeStep, fluidType, withDate) {
-    const query = this.buildMaxQuery(timeStep, maxTimePeriod, fluidType, this._max_limit);
-    const result = await this.fetchData(query);
-    if (timeStep === _enums.TimeStep.HALF_AN_HOUR) {
-      const lastDayOfPreviousMonth = {
-        startDate: maxTimePeriod.startDate.plus({
-          day: -1
-        }),
-        endDate: maxTimePeriod.startDate.plus({
-          day: -1
-        }).endOf('day')
-      };
-      const lastDayOfPreviousMonthQuery = this.buildMaxQuery(timeStep, lastDayOfPreviousMonth, fluidType, this._max_limit);
-      const lastDayOfPreviousMonthResult = await this.fetchData(lastDayOfPreviousMonthQuery);
-      return Math.max(lastDayOfPreviousMonthResult !== null && lastDayOfPreviousMonthResult !== void 0 && lastDayOfPreviousMonthResult.data[0] ? lastDayOfPreviousMonthResult.data[0].load : 0, result !== null && result !== void 0 && result.data[0] ? result.data[0].load : 0);
-    }
-    if (result !== null && result !== void 0 && result.data) {
-      var _mappedResult$;
-      const filteredResult = this.filterDataList(result, maxTimePeriod, timeStep);
-      const mappedResult = this.mapDataList(filteredResult, timeStep);
-      if (withDate) {
-        return mappedResult === null || mappedResult === void 0 ? void 0 : mappedResult[0];
-      }
-      return mappedResult === null || mappedResult === void 0 ? void 0 : (_mappedResult$ = mappedResult[0]) === null || _mappedResult$ === void 0 ? void 0 : _mappedResult$.value;
-    }
-    return null;
-  }
-  async getFirstDateData(fluidType, timeStep) {
-    var _result$data$, _result$data$2, _result$data$3;
-    const query = this.buildFirstDateQuery(fluidType, 1, timeStep);
-    const result = await this.fetchData(query);
-    if (result !== null && result !== void 0 && (_result$data$ = result.data[0]) !== null && _result$data$ !== void 0 && _result$data$.year && result !== null && result !== void 0 && (_result$data$2 = result.data[0]) !== null && _result$data$2 !== void 0 && _result$data$2.month && (result === null || result === void 0 ? void 0 : (_result$data$3 = result.data[0]) === null || _result$data$3 === void 0 ? void 0 : _result$data$3.day) >= 0) {
-      return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day || 1, result.data[0].hour || 0, result.data[0].minute || 0).setZone('utc', {
-        keepLocalTime: true
-      });
-    }
-    return null;
-  }
-  async getLastDateData(fluidType, timeStep) {
-    var _result$data$4, _result$data$5, _result$data$6;
-    const query = this.buildLastDateQuery(fluidType, 1, timeStep);
-    const result = await this.fetchData(query);
-    if (result !== null && result !== void 0 && (_result$data$4 = result.data[0]) !== null && _result$data$4 !== void 0 && _result$data$4.year && result !== null && result !== void 0 && (_result$data$5 = result.data[0]) !== null && _result$data$5 !== void 0 && _result$data$5.month && (result === null || result === void 0 ? void 0 : (_result$data$6 = result.data[0]) === null || _result$data$6 === void 0 ? void 0 : _result$data$6.day) >= 0) {
-      return _luxon.DateTime.local(result.data[0].year, result.data[0].month, result.data[0].day || 1, result.data[0].hour || 0, result.data[0].minute || 0).setZone('utc', {
-        keepLocalTime: true
-      });
-    }
-    return null;
+var _config = _interopRequireDefault(__webpack_require__(876));
+class ConfigService {
+  getFluidConfig() {
+    return _config.default.fluidConfig;
   }
-  async getEntries(fluidType, timeStep) {
-    const doctype = this.getRelevantDoctype(fluidType, timeStep);
-    try {
-      const query = (0, _cozyClient.Q)(doctype).limitBy(1);
-      const result = await this._client.query(query);
-      return result;
-    } catch (error) {
-      return null;
-    }
+
+  /**
+   * Generate a cron between min:00:00 and max:59:59
+   * @param min Minimum hour for cron
+   * @param max Maximum hour for cron
+   */
+  getCronArgs(min, max) {
+    const randomHour = Math.floor(Math.random() * (max - min + 1) + min); // NOSONAR
+    const randomMinutes = Math.floor(Math.random() * 60); // NOSONAR
+    const randomSeconds = Math.floor(Math.random() * 60); // NOSONAR
+    return `${randomSeconds} ${randomMinutes} ${randomHour} * * *`;
   }
 }
-exports.default = QueryRunner;
+exports.default = ConfigService;
+
+/***/ }),
+/* 876 */
+/***/ (function(module) {
+
+module.exports = JSON.parse("{\"fluidConfig\":[{\"fluidTypeId\":0,\"name\":\"enedis\",\"coefficient\":0.174,\"startDate\":\"2021-08-01T00:00:00.000\",\"dataDelayOffset\":3,\"konnectorConfig\":{\"name\":\"Enedis\",\"oauth\":false,\"slug\":\"enedissgegrandlyon\",\"siteLink\":\"https://mon-compte-client.enedis.fr/\",\"activation\":\"https://mon-compte-particulier.enedis.fr/donnees/\"}},{\"fluidTypeId\":1,\"name\":\"egl\",\"coefficient\":0.00319,\"startDate\":\"2021-01-01T00:00:00.000\",\"dataDelayOffset\":5,\"konnectorConfig\":{\"name\":\"Eau Publique du Grand Lyon\",\"oauth\":false,\"slug\":\"eglgrandlyon\",\"siteLink\":\"https://www.eaudugrandlyon.com/inscription.aspx#subc-now\",\"activation\":\"\"}},{\"fluidTypeId\":2,\"name\":\"grdf\",\"coefficient\":0.1121,\"startDate\":\"2021-10-01T00:00:00.000\",\"dataDelayOffset\":5,\"konnectorConfig\":{\"name\":\"GRDF\",\"oauth\":false,\"slug\":\"grdfgrandlyon\",\"siteLink\":\"https://monespace.grdf.fr/creation-particulier\",\"activation\":\"\"}}],\"termsVersion\":\"3.0.0\"}");
 
 /***/ }),
+/* 877 */,
+/* 878 */,
+/* 879 */,
+/* 880 */,
+/* 881 */,
+/* 882 */,
+/* 883 */,
+/* 884 */,
+/* 885 */,
+/* 886 */,
+/* 887 */,
+/* 888 */,
+/* 889 */,
+/* 890 */,
+/* 891 */,
+/* 892 */,
+/* 893 */,
+/* 894 */,
+/* 895 */,
+/* 896 */,
+/* 897 */,
+/* 898 */,
+/* 899 */,
+/* 900 */,
+/* 901 */,
+/* 902 */,
+/* 903 */,
+/* 904 */,
+/* 905 */,
+/* 906 */,
+/* 907 */,
+/* 908 */,
+/* 909 */,
+/* 910 */,
+/* 911 */,
+/* 912 */,
+/* 913 */,
+/* 914 */,
+/* 915 */,
+/* 916 */,
+/* 917 */,
+/* 918 */,
+/* 919 */,
+/* 920 */,
+/* 921 */,
+/* 922 */,
+/* 923 */,
+/* 924 */,
+/* 925 */,
+/* 926 */,
+/* 927 */,
+/* 928 */,
+/* 929 */,
+/* 930 */,
+/* 931 */,
+/* 932 */,
+/* 933 */,
+/* 934 */,
+/* 935 */,
+/* 936 */,
+/* 937 */,
+/* 938 */,
+/* 939 */,
+/* 940 */,
+/* 941 */,
+/* 942 */,
+/* 943 */,
+/* 944 */,
+/* 945 */,
+/* 946 */,
+/* 947 */,
+/* 948 */,
+/* 949 */,
+/* 950 */,
+/* 951 */,
+/* 952 */,
+/* 953 */,
+/* 954 */,
+/* 955 */,
+/* 956 */,
+/* 957 */,
+/* 958 */,
+/* 959 */,
+/* 960 */,
+/* 961 */,
+/* 962 */,
+/* 963 */,
+/* 964 */,
+/* 965 */,
+/* 966 */,
+/* 967 */,
+/* 968 */,
+/* 969 */,
+/* 970 */,
+/* 971 */,
+/* 972 */,
+/* 973 */,
+/* 974 */,
+/* 975 */,
+/* 976 */,
+/* 977 */,
+/* 978 */,
+/* 979 */,
+/* 980 */,
+/* 981 */,
+/* 982 */,
+/* 983 */,
+/* 984 */,
+/* 985 */,
+/* 986 */,
+/* 987 */,
+/* 988 */,
+/* 989 */,
+/* 990 */,
+/* 991 */,
+/* 992 */,
+/* 993 */,
+/* 994 */,
+/* 995 */,
+/* 996 */,
+/* 997 */,
+/* 998 */,
+/* 999 */,
+/* 1000 */,
+/* 1001 */,
+/* 1002 */,
+/* 1003 */,
+/* 1004 */,
+/* 1005 */,
+/* 1006 */,
+/* 1007 */,
+/* 1008 */,
+/* 1009 */,
+/* 1010 */,
+/* 1011 */,
+/* 1012 */,
+/* 1013 */,
+/* 1014 */,
+/* 1015 */,
+/* 1016 */,
+/* 1017 */,
+/* 1018 */,
+/* 1019 */,
+/* 1020 */,
+/* 1021 */,
+/* 1022 */,
+/* 1023 */,
+/* 1024 */,
+/* 1025 */,
+/* 1026 */,
+/* 1027 */,
+/* 1028 */,
+/* 1029 */,
+/* 1030 */,
+/* 1031 */,
+/* 1032 */,
+/* 1033 */,
+/* 1034 */,
+/* 1035 */,
+/* 1036 */,
+/* 1037 */,
+/* 1038 */,
+/* 1039 */,
+/* 1040 */,
+/* 1041 */,
+/* 1042 */,
+/* 1043 */,
+/* 1044 */,
+/* 1045 */,
+/* 1046 */,
+/* 1047 */,
+/* 1048 */,
+/* 1049 */,
+/* 1050 */,
+/* 1051 */,
+/* 1052 */,
+/* 1053 */,
+/* 1054 */,
+/* 1055 */,
+/* 1056 */,
+/* 1057 */,
+/* 1058 */,
 /* 1059 */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
@@ -128370,18 +117686,12 @@ exports.runService = runService;
 
 
 var _interopRequireDefault = __webpack_require__(1);
-var Sentry = _interopRequireWildcard(__webpack_require__(2));
 var _cozyLogger = _interopRequireDefault(__webpack_require__(211));
 var _doctypes = __webpack_require__(837);
 var _enums = __webpack_require__(230);
-var _luxon = __webpack_require__(250);
-var _consumption = _interopRequireDefault(__webpack_require__(274));
 var _environment = _interopRequireDefault(__webpack_require__(1060));
 var _fluidsPrices = _interopRequireDefault(__webpack_require__(1747));
-var _queryRunner = _interopRequireDefault(__webpack_require__(1058));
 var _service = __webpack_require__(1306);
-function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
-function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
 const logStack = _cozyLogger.default.namespace('fluidPrices');
 const getRemotePricesByFluid = async (client, fluidType) => {
   const env = new _environment.default();
@@ -128389,28 +117699,17 @@ const getRemotePricesByFluid = async (client, fluidType) => {
   const prices = await client.getStackClient().fetchJSON('GET', `${remoteUrl}?fluidtype=${fluidType}`);
   return prices;
 };
-
-/**
- * If a price has been updated, set the oldest startDate of the edited price so we can redo aggregation
- */
-function updateFirstEditedPrice(firstEditedPrice, remotePrice) {
-  return firstEditedPrice === null || firstEditedPrice >= remotePrice.startDate ? remotePrice.startDate : firstEditedPrice;
-}
-
-/**
- * Synchro the remote prices with database and returns a date where we have to relaunch aggregation if a price has been edited in backoffice
- * @returns {string | null} the oldest startDate
- */
-const synchroPricesToUpdate = async (client, fluidType) => {
-  const fps = new _fluidsPrices.default(client);
-  try {
+const updatePrices = async ({
+  client
+}) => {
+  for (const fluidType of [_enums.FluidType.ELECTRICITY, _enums.FluidType.WATER, _enums.FluidType.GAS]) {
+    logStack('info', `Updating fluid prices for ${fluidType}...`);
+    const fps = new _fluidsPrices.default(client);
     const remotePrices = await getRemotePricesByFluid(client, fluidType);
-    let firstEditedPrice = null;
     for (const remotePrice of remotePrices) {
       const existingPrice = await fps.checkIfPriceExists(remotePrice);
       if (!existingPrice) {
         logStack('debug', `Price doesn't exist in db, creating a new price`);
-        firstEditedPrice = updateFirstEditedPrice(firstEditedPrice, remotePrice);
         await fps.createPrice(remotePrice);
         continue;
       }
@@ -128420,225 +117719,18 @@ const synchroPricesToUpdate = async (client, fluidType) => {
       }
       logStack('debug', `Price exists in db but not up to date, updating it`);
       // If a price has been updated, set the oldest startDate of the edited price so we can redo aggregation
-      firstEditedPrice = updateFirstEditedPrice(firstEditedPrice, remotePrice);
+
       await fps.updatePrice(existingPrice, {
         price: remotePrice.price,
         UpdatedAt: remotePrice.UpdatedAt,
         startDate: remotePrice.startDate,
         endDate: remotePrice.endDate
       });
-    }
-    return firstEditedPrice;
-  } catch (error) {
-    logStack('error', `Error: ${error}`);
-    Sentry.captureException(error);
-    return null;
-  }
-};
-const getTimePeriod = async (timeStep, date) => {
-  switch (timeStep) {
-    case _enums.TimeStep.HALF_AN_HOUR:
-      return {
-        startDate: date,
-        endDate: date.plus({
-          day: 1
-        }).startOf('day')
-      };
-    case _enums.TimeStep.DAY:
-    case _enums.TimeStep.MONTH:
-      return {
-        startDate: date.startOf('month'),
-        endDate: date.endOf('month')
-      };
-    case _enums.TimeStep.YEAR:
-      return {
-        startDate: date.startOf('year'),
-        endDate: date.endOf('year')
-      };
-    default:
-      logStack('error', 'Unhandled time period');
-      Sentry.captureException(JSON.stringify({
-        error: 'Unhandled time period'
-      }));
-      throw Error('Unhandled time period');
-  }
-};
-const aggregatePrices = async (qr, cdm, firstDate, today, fluidType) => {
-  const timeSteps = [_enums.TimeStep.MONTH, _enums.TimeStep.YEAR];
-  logStack('debug', `Aggregation started for fluid: ${fluidType}, from ${firstDate}  `);
-  for (const timeStep of timeSteps) {
-    let aggregationDate = _luxon.DateTime.fromObject({
-      year: firstDate.year,
-      month: firstDate.month,
-      day: firstDate.day
-    });
-    try {
-      do {
-        const timePeriod = await getTimePeriod(timeStep, aggregationDate);
-        // Get doc for aggregation
-        const dayDocuments = await qr.fetchFluidRawDoctype(timePeriod, _enums.TimeStep.DAY, fluidType);
-        const docToUpdate = await qr.fetchFluidRawDoctype(timePeriod, timeStep, fluidType);
-        if (docToUpdate !== null && docToUpdate !== void 0 && docToUpdate.data && dayDocuments !== null && dayDocuments !== void 0 && dayDocuments.data) {
-          docToUpdate.data[0].price = dayDocuments.data.map(item => item.price || 0).reduce((a, b) => a + b);
-        }
-        await cdm.saveDocs(docToUpdate === null || docToUpdate === void 0 ? void 0 : docToUpdate.data);
-        // Update date according to timestep
-        if (timeStep === _enums.TimeStep.YEAR) {
-          aggregationDate = aggregationDate.plus({
-            year: 1
-          }).startOf('month');
-        } else {
-          aggregationDate = aggregationDate.plus({
-            month: 1
-          }).startOf('month');
-        }
-      } while (aggregationDate < today);
-    } catch (error) {
-      logStack('info', `Error : ${error}`);
-      Sentry.captureException(error);
-    }
-  }
-  logStack('debug', `Aggregation done`);
-};
-const getDoctypeTypeByFluid = fluidType => {
-  if (fluidType === _enums.FluidType.ELECTRICITY) {
-    return _doctypes.ENEDIS_DAY_DOCTYPE;
-  }
-  if (fluidType === _enums.FluidType.GAS) {
-    return _doctypes.GRDF_DAY_DOCTYPE;
-  }
-  if (fluidType === _enums.FluidType.WATER) {
-    return _doctypes.EGL_DAY_DOCTYPE;
-  }
-  logStack('error', 'Unknown FluidType');
-  Sentry.captureException({
-    error: 'Unknown FluidType Doctype'
-  });
-  throw new Error();
-};
-const getTimeStepsByFluid = fluidType => {
-  if (fluidType === _enums.FluidType.ELECTRICITY) {
-    return [_enums.TimeStep.DAY, _enums.TimeStep.HALF_AN_HOUR];
-  }
-  if (fluidType === _enums.FluidType.GAS || fluidType === _enums.FluidType.WATER) {
-    return [_enums.TimeStep.DAY];
-  }
-  logStack('error', 'Unknown FluidType');
-  Sentry.captureException({
-    error: 'Unknown FluidType'
-  });
-  throw new Error();
-};
-const applyPrices = async (client, fluidType) => {
-  // If no doctypes exists, do nothing
-  const fluidsPricesService = new _fluidsPrices.default(client);
-  const cdm = new _consumption.default(client);
-  const qr = new _queryRunner.default(client);
-
-  // Synchro db prices with remote prices
-  const firstEditedPriceDate = await synchroPricesToUpdate(client, fluidType);
-  const firstDataDate = await cdm.fetchAllFirstDateData([fluidType]);
-  const prices = await fluidsPricesService.getAllPrices();
-  if (prices.length === 0) {
-    logStack('info', 'No fluidesPrices data');
-    return;
-  }
-  logStack('debug', 'fluidPrices data found');
-  const firstMinuteData = await cdm.getFirstDataDateFromDoctypeWithPrice(getDoctypeTypeByFluid(fluidType));
-
-  // If there is data, update hourly data and daily data
-  if (!(firstDataDate !== null && firstDataDate !== void 0 && firstDataDate[0]) || !firstMinuteData && firstEditedPriceDate === null) {
-    logStack('info', `No data found for fluid ${fluidType}`);
-    return;
-  }
-  const today = _luxon.DateTime.now();
-  const timeSteps = getTimeStepsByFluid(fluidType);
-  let firstDate;
-  if (firstMinuteData && firstEditedPriceDate) {
-    // If there is first data without price and a price edited, set the smallest date
-    const firstMinuteDataDate = _luxon.DateTime.fromObject({
-      year: firstMinuteData.year,
-      month: firstMinuteData.month,
-      day: firstMinuteData.day
-    }).setZone('utc', {
-      keepLocalTime: true
-    });
-    const formattedFirstEditedPrice = _luxon.DateTime.fromISO(firstEditedPriceDate).setZone('utc', {
-      keepLocalTime: true
-    });
-    // we want to exclude the period with no data if the edited date is smaller than the first data date
-    firstDate = _luxon.DateTime.min(_luxon.DateTime.max(formattedFirstEditedPrice, firstDataDate[0]), firstMinuteDataDate);
-  } else if (firstMinuteData) {
-    firstDate = _luxon.DateTime.fromObject({
-      year: firstMinuteData.year,
-      month: firstMinuteData.month,
-      day: firstMinuteData.day
-    }).setZone('utc', {
-      keepLocalTime: true
-    });
-  } else if (firstEditedPriceDate) {
-    firstDate = _luxon.DateTime.max(_luxon.DateTime.fromISO(firstEditedPriceDate).setZone('utc', {
-      keepLocalTime: true
-    }), firstDataDate[0]);
-  } else {
-    firstDate = today;
-  }
-
-  // Hourly and daily prices
-  for (const timeStep of timeSteps) {
-    let date = _luxon.DateTime.local().setZone('utc', {
-      keepLocalTime: true
-    });
-    Object.assign(date, firstDate);
-    try {
-      do {
-        var _data$data;
-        const priceData = await fluidsPricesService.getPrices(fluidType, date);
-        const timePeriod = await getTimePeriod(timeStep, date);
-        const data = await qr.fetchFluidRawDoctype(timePeriod, timeStep, fluidType);
-
-        // If lastItem has a price, skip this day (in order to save perf)
-        const lastItem = data === null || data === void 0 ? void 0 : (_data$data = data.data) === null || _data$data === void 0 ? void 0 : _data$data[data.data.length - 1];
-        if (lastItem && priceData) {
-          // if a price has been updated in backoffice re-calculates all price from the firstEditedPriceDate
-          data === null || data === void 0 ? void 0 : data.data.forEach(element => {
-            element.price = element.load * priceData.price;
-          });
-          await cdm.saveDocs(data.data);
-        }
-        // Update date
-        if (timeStep === _enums.TimeStep.HALF_AN_HOUR) {
-          date = date.plus({
-            days: 1
-          });
-        } else {
-          date = date.plus({
-            month: 1
-          }).startOf('month');
-        }
-      } while (date < today);
-    } catch (error) {
-      logStack('error', `ERROR : ${error} `);
-      Sentry.captureException(error);
+      logStack('info', `Price updated`);
     }
   }
-  await aggregatePrices(qr, cdm, firstDate, today, fluidType);
 };
-const processPrices = async ({
-  client
-}) => {
-  logStack('info', `Processing electricity data...`);
-  await applyPrices(client, _enums.FluidType.ELECTRICITY);
-  logStack('info', `Electricity data done`);
-  logStack('info', `Processing gas data...`);
-  await applyPrices(client, _enums.FluidType.GAS);
-  logStack('info', `Gas data done`);
-  logStack('info', `Processing water data...`);
-  await applyPrices(client, _enums.FluidType.WATER);
-  logStack('info', `Water data done`);
-  logStack('info', `processPrices done`);
-};
-(0, _service.runService)(processPrices);
+(0, _service.runService)(updatePrices);
 
 /***/ }),
 /* 1747 */
@@ -128670,18 +117762,6 @@ class FluidPricesService {
     this._client = _client;
   }
 
-  /**
-   * Get all prices available in database
-   */
-  async getAllPrices() {
-    const query = (0, _cozyClient.Q)(_doctypes.FLUIDSPRICES_DOCTYPE).limitBy(900);
-    // TODO : handle case of 1000+ entries in doctype
-    const {
-      data: fluidsPrices
-    } = await this._client.query(query);
-    return fluidsPrices;
-  }
-
   /**
    * Get a price according to a fluidType and a data. This method return the nearest and valid price for the given date.
    */
@@ -128744,27 +117824,6 @@ class FluidPricesService {
     return fluidsPrices;
   }
 
-  /**
-   * Delete all fluidPrices entities from the db
-   * @returns {boolean} - true when deleted with success
-   * @throws {Error}
-   */
-  async deleteAllFluidsPrices() {
-    const fluidsPrices = await this.getAllPrices();
-    try {
-      for (const price of fluidsPrices) {
-        await this._client.destroy(price);
-      }
-      return true;
-    } catch (error) {
-      const errorMessage = `deleteAllFluidsPrices: ${JSON.stringify(error)}`;
-      logStack('error', errorMessage);
-      _logger.default.error(errorMessage);
-      Sentry.captureException(error);
-      return false;
-    }
-  }
-
   /**
    * Check if a fluidPrice exists in db
    * @returns {Promise<FluidPrice | null>} price or null