diff --git a/index.html b/index.html
index f5ad46ee63f96636b8bdc746826ac3c8088ae5f2..40ccdddbfb0f689810b8c6392b425e46d97e0488 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.d3aad14b26059fa1903d.js"></script><script src="app/ecolyo.554a8422165fe8f24237.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.7d2dc2a8de788a437224.js"></script><script src="app/ecolyo.554a8422165fe8f24237.js"></script></div></body></html>
\ No newline at end of file
diff --git a/public/ecolyo.3625dfad89f51a395e47.js b/public/ecolyo.fa7a0f4ba5b56c90e338.js
similarity index 99%
rename from public/ecolyo.3625dfad89f51a395e47.js
rename to public/ecolyo.fa7a0f4ba5b56c90e338.js
index e49514c2bd490b920348de873a661ec560340961..a7c7b3cf350d80939f97b586c08373bb42b740ca 100644
--- a/public/ecolyo.3625dfad89f51a395e47.js
+++ b/public/ecolyo.fa7a0f4ba5b56c90e338.js
@@ -35123,10 +35123,10 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("HZZ/"));
 
 var _slicedToArray2 = _interopRequireDefault(__webpack_require__("XkwL"));
 
-var _store = _interopRequireDefault(__webpack_require__("uh8Z"));
-
 var _dsl = __webpack_require__("v2kV");
 
+var _store = _interopRequireDefault(__webpack_require__("uh8Z"));
+
 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); }
@@ -35136,16 +35136,18 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
 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 flag = function flag() {
-  var args = [].slice.call(arguments);
-
-  if (args.length === 1) {
-    return store.get(args[0]);
+var flag = function flag(key, value) {
+  if (arguments.length === 1) {
+    return store.get(key);
   } else {
-    store.set(args[0], args[1]);
-    return args[1];
+    store.set(key, value);
+    return value;
   }
 };
 /** List all flags from the store */
@@ -35218,7 +35220,7 @@ var enable = function enable(flagsToEnable) {
  *
  * @private
  * @see  https://docs.cozy.io/en/cozy-stack/settings/#get-settingsflags
- * @param  {CozyClient} client
+ * @param  {import('cozy-client/types/CozyClient').default} client
  */
 
 
@@ -35233,7 +35235,7 @@ var initializeFromRemote = /*#__PURE__*/function () {
         switch (_context.prev = _context.next) {
           case 0:
             _context.next = 2;
-            return client.query((0, _dsl.Q)('io.cozy.settings').getById('flags'));
+            return client.query((0, _dsl.Q)('io.cozy.settings').getById('io.cozy.settings.flags'));
 
           case 2:
             _yield$client$query = _context.sent;
@@ -35338,7 +35340,7 @@ var initializeFromDOM = /*#__PURE__*/function () {
  * <div data-flags="{{ .Flags }}"></div>
  * ````
  *
- * @param  {CozyClient} client - A CozyClient
+ * @param  {import('cozy-client/types/CozyClient').default} client - A CozyClient
  * @return {Promise} Resolves when flags have been initialized
  */
 
@@ -38651,11 +38653,11 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 
-var _flag = _interopRequireDefault(__webpack_require__("7hLD"));
+var _FlagSwitcher = _interopRequireDefault(__webpack_require__("JSg/"));
 
 var _connect = _interopRequireDefault(__webpack_require__("G1be"));
 
-var _FlagSwitcher = _interopRequireDefault(__webpack_require__("JSg/"));
+var _flag = _interopRequireDefault(__webpack_require__("7hLD"));
 
 var _useFlag = _interopRequireDefault(__webpack_require__("mXbR"));
 
@@ -59043,6 +59045,8 @@ var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("g3
 
 var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("wDGE"));
 
+var _defineProperty2 = _interopRequireDefault(__webpack_require__("J58c"));
+
 var _react = _interopRequireDefault(__webpack_require__("ivGQ"));
 
 var _flag = _interopRequireDefault(__webpack_require__("7hLD"));
@@ -59051,39 +59055,50 @@ 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 { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
 
+/**
+ * The store has been enhanced at this point with the MicroEE mixin.
+ * We need to cast it to the IMicroEE interface to be able to use the methods.
+ * This is a bit hacky, the long term solution would be to properly type the store.
+ */
+var store = _flag.default.store;
 /**
  * Connects a component to the flags. The wrapped component
  * will be refreshed when a flag changes.
  */
+
 var connect = function connect(Component) {
+  var _Component$displayNam;
+
   var Wrapped = /*#__PURE__*/function (_React$Component) {
     (0, _inherits2.default)(Wrapped, _React$Component);
 
     var _super = _createSuper(Wrapped);
 
-    function Wrapped(props) {
+    function Wrapped() {
       var _this;
 
       (0, _classCallCheck2.default)(this, Wrapped);
-      _this = _super.call(this, props);
-      _this.handleChange = _this.handleChange.bind((0, _assertThisInitialized2.default)(_this));
+
+      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+        args[_key] = arguments[_key];
+      }
+
+      _this = _super.call.apply(_super, [this].concat(args));
+      (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleChange", function () {
+        _this.forceUpdate();
+      });
       return _this;
     }
 
     (0, _createClass2.default)(Wrapped, [{
       key: "componentDidMount",
       value: function componentDidMount() {
-        _flag.default.store.on('change', this.handleChange);
+        store.on('change', this.handleChange);
       }
     }, {
       key: "componentWillUnmount",
       value: function componentWillUnmount() {
-        _flag.default.store.removeListener('change', this.handleChange);
-      }
-    }, {
-      key: "handleChange",
-      value: function handleChange() {
-        this.forceUpdate();
+        store.removeListener('change', this.handleChange);
       }
     }, {
       key: "render",
@@ -59094,7 +59109,8 @@ var connect = function connect(Component) {
     return Wrapped;
   }(_react.default.Component);
 
-  Wrapped.displayName = "withFlags(".concat(Component.displayName || Component.name, ")");
+  (0, _defineProperty2.default)(Wrapped, "displayName", void 0);
+  Wrapped.displayName = "withFlags(".concat((_Component$displayNam = Component.displayName) !== null && _Component$displayNam !== void 0 ? _Component$displayNam : Component.name, ")");
   return Wrapped;
 };
 
@@ -72841,10 +72857,10 @@ var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("wDGE"));
 
 var _react = _interopRequireDefault(__webpack_require__("ivGQ"));
 
-var _flag = _interopRequireDefault(__webpack_require__("7hLD"));
-
 var _connect = _interopRequireDefault(__webpack_require__("G1be"));
 
+var _flag = _interopRequireDefault(__webpack_require__("7hLD"));
+
 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 { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
@@ -184967,11 +184983,27 @@ var FlagStore = /*#__PURE__*/function () {
     key: "get",
     value: function get(name) {
       // eslint-disable-next-line no-prototype-builtins
-      if (!this.store.hasOwnProperty(name)) {
-        this.store[name] = null;
+      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 this.store[name];
+      return null;
     }
   }, {
     key: "set",
diff --git a/public/index.html b/public/index.html
index 6ac688ae0fd7d5ff6fb35c4fce42200da96e3d3a..4b03081bcb98f1af6d299b7adf297ba635bf0636 100644
--- a/public/index.html
+++ b/public/index.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo | Désabonnement</title><link rel="icon" type="image/png" href="public/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="public/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="mask-icon" href="public/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="public/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="public/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="../public/ecolyo.3625dfad89f51a395e47.js"></script></div></body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo | Désabonnement</title><link rel="icon" type="image/png" href="public/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="public/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="mask-icon" href="public/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="public/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="public/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="../public/ecolyo.fa7a0f4ba5b56c90e338.js"></script></div></body></html>
\ No newline at end of file
diff --git a/services/aggregatorUsageEvents/ecolyo.js b/services/aggregatorUsageEvents/ecolyo.js
index a8bdc5f5b0406ae9d2a3d1f48db0d519824f1a0d..e6f164948991956d73e1f4b7744aeaba25c7c0ab 100644
--- a/services/aggregatorUsageEvents/ecolyo.js
+++ b/services/aggregatorUsageEvents/ecolyo.js
@@ -44904,7 +44904,7 @@ var _StackLink = _interopRequireDefault(__webpack_require__(504));
 
 var _flow = _interopRequireDefault(__webpack_require__(586));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _associations = __webpack_require__(509);
 
@@ -45092,7 +45092,7 @@ var _helpers = __webpack_require__(546);
 
 var _helpers2 = __webpack_require__(547);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _mobile = __webpack_require__(550);
 
@@ -45110,7 +45110,7 @@ var _ObservableQuery = _interopRequireDefault(__webpack_require__(577));
 
 var _snapshots = __webpack_require__(578);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 var _queries = __webpack_require__(521);
 
@@ -58228,9 +58228,9 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(170));
 
-var _store = _interopRequireDefault(__webpack_require__(379));
+var _dsl = __webpack_require__(379);
 
-var _dsl = __webpack_require__(381);
+var _store = _interopRequireDefault(__webpack_require__(403));
 
 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; } } }; }
 
@@ -58241,16 +58241,18 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
 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 flag = function flag() {
-  var args = [].slice.call(arguments);
-
-  if (args.length === 1) {
-    return store.get(args[0]);
+var flag = function flag(key, value) {
+  if (arguments.length === 1) {
+    return store.get(key);
   } else {
-    store.set(args[0], args[1]);
-    return args[1];
+    store.set(key, value);
+    return value;
   }
 };
 /** List all flags from the store */
@@ -58323,7 +58325,7 @@ var enable = function enable(flagsToEnable) {
  *
  * @private
  * @see  https://docs.cozy.io/en/cozy-stack/settings/#get-settingsflags
- * @param  {CozyClient} client
+ * @param  {import('cozy-client/types/CozyClient').default} client
  */
 
 
@@ -58338,7 +58340,7 @@ var initializeFromRemote = /*#__PURE__*/function () {
         switch (_context.prev = _context.next) {
           case 0:
             _context.next = 2;
-            return client.query((0, _dsl.Q)('io.cozy.settings').getById('flags'));
+            return client.query((0, _dsl.Q)('io.cozy.settings').getById('io.cozy.settings.flags'));
 
           case 2:
             _yield$client$query = _context.sent;
@@ -58443,7 +58445,7 @@ var initializeFromDOM = /*#__PURE__*/function () {
  * <div data-flags="{{ .Flags }}"></div>
  * ````
  *
- * @param  {CozyClient} client - A CozyClient
+ * @param  {import('cozy-client/types/CozyClient').default} client - A CozyClient
  * @return {Promise} Resolves when flags have been initialized
  */
 
@@ -58619,237 +58621,6 @@ exports.default = _default;
 "use strict";
 
 
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _slicedToArray2 = _interopRequireDefault(__webpack_require__(170));
-
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
-
-var _createClass2 = _interopRequireDefault(__webpack_require__(181));
-
-var _microee = _interopRequireDefault(__webpack_require__(331));
-
-var _lsAdapter = _interopRequireDefault(__webpack_require__(380));
-
-/**
- * In memory key value storage.
- *
- * 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 = {};
-
-    if (typeof localStorage !== 'undefined') {
-      this.longtermStore = _lsAdapter.default;
-    }
-
-    this.restore();
-  }
-
-  (0, _createClass2.default)(FlagStore, [{
-    key: "restore",
-    value: function restore() {
-      if (!this.longtermStore) {
-        return;
-      }
-
-      var allValues = this.longtermStore.getAll();
-
-      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];
-
-        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)) {
-        this.store[name] = null;
-      }
-
-      return this.store[name];
-    }
-  }, {
-    key: "set",
-    value: function set(name, value) {
-      if (this.longtermStore) {
-        this.longtermStore.setItem(name, value);
-      }
-
-      this.store[name] = value;
-      this.emit('change', name);
-    }
-  }, {
-    key: "remove",
-    value: function remove(name) {
-      delete this.store[name];
-
-      if (this.longtermStore) {
-        this.longtermStore.removeItem(name);
-      }
-
-      this.emit('change', name);
-    }
-  }]);
-  return FlagStore;
-}();
-
-_microee.default.mixin(FlagStore);
-
-var _default = FlagStore;
-exports.default = _default;
-
-/***/ }),
-/* 380 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.prefix = exports.getKey = exports.default = 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; } } }; }
-
-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; }
-
-// eslint-disable-next-line no-redeclare
-
-/* global localStorage */
-var prefix = 'flag__';
-exports.prefix = prefix;
-
-var getKey = function getKey(name) {
-  return prefix + name;
-};
-
-exports.getKey = getKey;
-
-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 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 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 removeItem = function removeItem(flag) {
-  return localStorage.removeItem(getKey(flag));
-};
-/**
- * Returns all stored flags as an object
- */
-
-
-var getAll = function getAll() {
-  var res = {};
-
-  var _iterator = _createForOfIteratorHelper(listFlagLocalStorage()),
-      _step;
-
-  try {
-    for (_iterator.s(); !(_step = _iterator.n()).done;) {
-      var flag = _step.value;
-      res[flag] = getItem(flag);
-    }
-  } catch (err) {
-    _iterator.e(err);
-  } finally {
-    _iterator.f();
-  }
-
-  return res;
-};
-/**
- * Clears all the flags from localstorage
- */
-
-
-var clearAll = function clearAll() {
-  var _iterator2 = _createForOfIteratorHelper(listFlagLocalStorage()),
-      _step2;
-
-  try {
-    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
-      var flag = _step2.value;
-      removeItem(flag);
-    }
-  } catch (err) {
-    _iterator2.e(err);
-  } finally {
-    _iterator2.f();
-  }
-};
-
-var _default = {
-  getAll: getAll,
-  getItem: getItem,
-  setItem: setItem,
-  clearAll: clearAll,
-  removeItem: removeItem
-};
-exports.default = _default;
-
-/***/ }),
-/* 381 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
 var _interopRequireDefault = __webpack_require__(1);
 
 Object.defineProperty(exports, "__esModule", {
@@ -58863,9 +58634,9 @@ var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__(181));
 
-var _findKey = _interopRequireDefault(__webpack_require__(382));
+var _findKey = _interopRequireDefault(__webpack_require__(380));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -59507,10 +59278,10 @@ var MutationTypes = {
 exports.MutationTypes = MutationTypes;
 
 /***/ }),
-/* 382 */
+/* 380 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseFindKey = __webpack_require__(383),
+var baseFindKey = __webpack_require__(381),
     baseForOwn = __webpack_require__(199),
     baseIteratee = __webpack_require__(222);
 
@@ -59557,7 +59328,7 @@ module.exports = findKey;
 
 
 /***/ }),
-/* 383 */
+/* 381 */
 /***/ (function(module, exports) {
 
 /**
@@ -59586,7 +59357,7 @@ module.exports = baseFindKey;
 
 
 /***/ }),
-/* 384 */
+/* 382 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -59599,7 +59370,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 
-var _minilog = _interopRequireDefault(__webpack_require__(385));
+var _minilog = _interopRequireDefault(__webpack_require__(383));
 
 var logger = (0, _minilog.default)('cozy-client');
 
@@ -59609,27 +59380,27 @@ var _default = logger;
 exports.default = _default;
 
 /***/ }),
-/* 385 */
+/* 383 */
 /***/ (function(module, exports, __webpack_require__) {
 
-module.exports = __webpack_require__(386);
+module.exports = __webpack_require__(384);
 
-var consoleLogger = __webpack_require__(389);
+var consoleLogger = __webpack_require__(387);
 
 // 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__(398).minilog;
+  consoleLogger = __webpack_require__(396).minilog;
 }
 
 // intercept the pipe method and transparently wrap the stringifier, if the
 // destination is a Node core stream
 
-module.exports.Stringifier = __webpack_require__(402);
+module.exports.Stringifier = __webpack_require__(400);
 
 var oldPipe = module.exports.pipe;
 module.exports.pipe = function(dest) {
-  if(dest instanceof __webpack_require__(403)) {
+  if(dest instanceof __webpack_require__(401)) {
     return oldPipe.call(module.exports, new (module.exports.Stringifier)).pipe(dest);
   } else {
     return oldPipe.call(module.exports, dest);
@@ -59640,18 +59411,18 @@ module.exports.defaultBackend = consoleLogger;
 module.exports.defaultFormatter = consoleLogger.formatMinilog;
 
 module.exports.backends = {
-  redis: __webpack_require__(404),
+  redis: __webpack_require__(402),
   nodeConsole: consoleLogger,
   console: consoleLogger
 };
 
 
 /***/ }),
-/* 386 */
+/* 384 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    Filter = __webpack_require__(388);
+var Transform = __webpack_require__(385),
+    Filter = __webpack_require__(386);
 
 var log = new Transform(),
     slice = Array.prototype.slice;
@@ -59700,7 +59471,7 @@ exports.enable = function() {
 
 
 /***/ }),
-/* 387 */
+/* 385 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var microee = __webpack_require__(331);
@@ -59778,11 +59549,11 @@ module.exports = Transform;
 
 
 /***/ }),
-/* 388 */
+/* 386 */
 /***/ (function(module, exports, __webpack_require__) {
 
 // default filter
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 var levelMap = { debug: 1, info: 2, warn: 3, error: 4 };
 
@@ -59840,10 +59611,10 @@ module.exports = Filter;
 
 
 /***/ }),
-/* 389 */
+/* 387 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function ConsoleBackend() { }
 
@@ -59855,12 +59626,12 @@ ConsoleBackend.prototype.write = function() {
 
 var e = new ConsoleBackend();
 
-var levelMap = __webpack_require__(390).levelMap;
+var levelMap = __webpack_require__(388).levelMap;
 
 e.filterEnv = function() {
   console.error('Minilog.backends.console.filterEnv is deprecated in Minilog v2.');
   // return the instance of Minilog
-  return __webpack_require__(386);
+  return __webpack_require__(384);
 };
 
 e.formatters = [
@@ -59868,19 +59639,19 @@ e.formatters = [
     'formatLearnboost', 'formatMinilog', 'formatWithStack', 'formatTime'
 ];
 
-e.formatClean = new (__webpack_require__(391));
-e.formatColor = new (__webpack_require__(392));
-e.formatNpm = new (__webpack_require__(393));
-e.formatLearnboost = new (__webpack_require__(394));
-e.formatMinilog = new (__webpack_require__(395));
-e.formatWithStack = new (__webpack_require__(396));
-e.formatTime = new (__webpack_require__(397));
+e.formatClean = new (__webpack_require__(389));
+e.formatColor = new (__webpack_require__(390));
+e.formatNpm = new (__webpack_require__(391));
+e.formatLearnboost = new (__webpack_require__(392));
+e.formatMinilog = new (__webpack_require__(393));
+e.formatWithStack = new (__webpack_require__(394));
+e.formatTime = new (__webpack_require__(395));
 
 module.exports = e;
 
 
 /***/ }),
-/* 390 */
+/* 388 */
 /***/ (function(module, exports) {
 
 var styles = {
@@ -59910,10 +59681,10 @@ exports.style = function(str, style) {
 
 
 /***/ }),
-/* 391 */
+/* 389 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function FormatClean() {}
 
@@ -59928,11 +59699,11 @@ module.exports = FormatClean;
 
 
 /***/ }),
-/* 392 */
+/* 390 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style;
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style;
 
 function FormatColor() {}
 
@@ -59950,10 +59721,10 @@ module.exports = FormatColor;
 
 
 /***/ }),
-/* 393 */
+/* 391 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function FormatNpm() {}
 
@@ -59978,11 +59749,11 @@ module.exports = FormatNpm;
 
 
 /***/ }),
-/* 394 */
+/* 392 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style;
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style;
 
 function FormatLearnboost() {}
 
@@ -59999,11 +59770,11 @@ module.exports = FormatLearnboost;
 
 
 /***/ }),
-/* 395 */
+/* 393 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style,
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style,
     util = __webpack_require__(102);
 
 function FormatMinilog() {}
@@ -60023,11 +59794,11 @@ module.exports = FormatMinilog;
 
 
 /***/ }),
-/* 396 */
+/* 394 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style;
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style;
 
 function FormatNpm() {}
 
@@ -60081,11 +59852,11 @@ module.exports = FormatNpm;
 
 
 /***/ }),
-/* 397 */
+/* 395 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style,
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style,
     util = __webpack_require__(102);
 
 function FormatTime() {}
@@ -60117,10 +59888,10 @@ module.exports = FormatTime;
 
 
 /***/ }),
-/* 398 */
+/* 396 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 var newlines = /\n+$/,
     logger = new Transform();
@@ -60148,18 +59919,18 @@ logger.write = function(name, level, args) {
 };
 
 logger.formatters = ['color', 'minilog'];
-logger.color = __webpack_require__(399);
-logger.minilog = __webpack_require__(401);
+logger.color = __webpack_require__(397);
+logger.minilog = __webpack_require__(399);
 
 module.exports = logger;
 
 
 /***/ }),
-/* 399 */
+/* 397 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    color = __webpack_require__(400);
+var Transform = __webpack_require__(385),
+    color = __webpack_require__(398);
 
 var colors = { debug: ['cyan'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },
     logger = new Transform();
@@ -60179,7 +59950,7 @@ module.exports = logger;
 
 
 /***/ }),
-/* 400 */
+/* 398 */
 /***/ (function(module, exports) {
 
 var hex = {
@@ -60205,11 +59976,11 @@ module.exports = color;
 
 
 /***/ }),
-/* 401 */
+/* 399 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    color = __webpack_require__(400),
+var Transform = __webpack_require__(385),
+    color = __webpack_require__(398),
     colors = { debug: ['gray'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },
     logger = new Transform();
 
@@ -60237,10 +60008,10 @@ module.exports = logger;
 
 
 /***/ }),
-/* 402 */
+/* 400 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function Stringify() {}
 
@@ -60275,13 +60046,13 @@ module.exports = Stringify;
 
 
 /***/ }),
-/* 403 */
+/* 401 */
 /***/ (function(module, exports) {
 
 module.exports = require("stream");
 
 /***/ }),
-/* 404 */
+/* 402 */
 /***/ (function(module, exports) {
 
 function RedisBackend(options) {
@@ -60302,6 +60073,253 @@ RedisBackend.prototype.clear = function(cb) {
 module.exports = RedisBackend;
 
 
+/***/ }),
+/* 403 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _interopRequireDefault = __webpack_require__(1);
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+
+var _slicedToArray2 = _interopRequireDefault(__webpack_require__(170));
+
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
+
+var _createClass2 = _interopRequireDefault(__webpack_require__(181));
+
+var _microee = _interopRequireDefault(__webpack_require__(331));
+
+var _lsAdapter = _interopRequireDefault(__webpack_require__(404));
+
+/**
+ * In memory key value storage.
+ *
+ * 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 = {};
+
+    if (typeof localStorage !== 'undefined') {
+      this.longtermStore = _lsAdapter.default;
+    }
+
+    this.restore();
+  }
+
+  (0, _createClass2.default)(FlagStore, [{
+    key: "restore",
+    value: function restore() {
+      if (!this.longtermStore) {
+        return;
+      }
+
+      var allValues = this.longtermStore.getAll();
+
+      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];
+
+        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;
+
+        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: "set",
+    value: function set(name, value) {
+      if (this.longtermStore) {
+        this.longtermStore.setItem(name, value);
+      }
+
+      this.store[name] = value;
+      this.emit('change', name);
+    }
+  }, {
+    key: "remove",
+    value: function remove(name) {
+      delete this.store[name];
+
+      if (this.longtermStore) {
+        this.longtermStore.removeItem(name);
+      }
+
+      this.emit('change', name);
+    }
+  }]);
+  return FlagStore;
+}();
+
+_microee.default.mixin(FlagStore);
+
+var _default = FlagStore;
+exports.default = _default;
+
+/***/ }),
+/* 404 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.prefix = exports.getKey = exports.default = 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; } } }; }
+
+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; }
+
+// eslint-disable-next-line no-redeclare
+
+/* global localStorage */
+var prefix = 'flag__';
+exports.prefix = prefix;
+
+var getKey = function getKey(name) {
+  return prefix + name;
+};
+
+exports.getKey = getKey;
+
+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 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 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 removeItem = function removeItem(flag) {
+  return localStorage.removeItem(getKey(flag));
+};
+/**
+ * Returns all stored flags as an object
+ */
+
+
+var getAll = function getAll() {
+  var res = {};
+
+  var _iterator = _createForOfIteratorHelper(listFlagLocalStorage()),
+      _step;
+
+  try {
+    for (_iterator.s(); !(_step = _iterator.n()).done;) {
+      var flag = _step.value;
+      res[flag] = getItem(flag);
+    }
+  } catch (err) {
+    _iterator.e(err);
+  } finally {
+    _iterator.f();
+  }
+
+  return res;
+};
+/**
+ * Clears all the flags from localstorage
+ */
+
+
+var clearAll = function clearAll() {
+  var _iterator2 = _createForOfIteratorHelper(listFlagLocalStorage()),
+      _step2;
+
+  try {
+    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
+      var flag = _step2.value;
+      removeItem(flag);
+    }
+  } catch (err) {
+    _iterator2.e(err);
+  } finally {
+    _iterator2.f();
+  }
+};
+
+var _default = {
+  getAll: getAll,
+  getItem: getItem,
+  setItem: setItem,
+  clearAll: clearAll,
+  removeItem: removeItem
+};
+exports.default = _default;
+
 /***/ }),
 /* 405 */
 /***/ (function(module, exports, __webpack_require__) {
@@ -64532,7 +64550,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 
-var _minilog = _interopRequireDefault(__webpack_require__(385));
+var _minilog = _interopRequireDefault(__webpack_require__(383));
 
 var logger = (0, _minilog.default)('cozy-stack-client');
 
@@ -73835,7 +73853,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(159));
 
 var _zipWith = _interopRequireDefault(__webpack_require__(505));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _CozyLink2 = _interopRequireDefault(__webpack_require__(507));
 
@@ -73843,7 +73861,7 @@ var _const = __webpack_require__(503);
 
 var _errors = __webpack_require__(508);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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); }; }
 
@@ -74474,7 +74492,7 @@ var _omit = _interopRequireDefault(__webpack_require__(407));
 
 var _uniq = _interopRequireDefault(__webpack_require__(406));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _store = __webpack_require__(511);
 
@@ -75825,11 +75843,11 @@ var _omit = _interopRequireDefault(__webpack_require__(407));
 
 var _merge = _interopRequireDefault(__webpack_require__(416));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 var _queries = __webpack_require__(521);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _mutations = __webpack_require__(537);
 
@@ -76186,9 +76204,9 @@ var _mutations = __webpack_require__(537);
 
 var _helpers = __webpack_require__(538);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -78213,7 +78231,7 @@ var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__(181));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 /**
  * Associations are used by components to access related store documents that are
@@ -78502,13 +78520,13 @@ var _get = _interopRequireDefault(__webpack_require__(283));
 
 var _merge = _interopRequireDefault(__webpack_require__(416));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _store = __webpack_require__(511);
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -78979,11 +78997,11 @@ var _get2 = _interopRequireDefault(__webpack_require__(283));
 
 var _set = _interopRequireDefault(__webpack_require__(542));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -79181,7 +79199,7 @@ var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(368));
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 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; }
 
@@ -79268,7 +79286,7 @@ var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(366
 
 var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(368));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
@@ -79441,7 +79459,7 @@ var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(368));
 
 var _HasMany2 = _interopRequireDefault(__webpack_require__(540));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 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); }; }
 
@@ -81583,7 +81601,7 @@ var _uniq = _interopRequireDefault(__webpack_require__(406));
 
 var _uniqWith = _interopRequireDefault(__webpack_require__(569));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var isIdQuery = function isIdQuery(query) {
   return query.id || query.ids;
@@ -83868,7 +83886,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.hasQueryBeenLoaded = exports.isQueryLoading = exports.cancelable = void 0;
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 /**
  * @typedef {Promise} CancelablePromise
@@ -83953,7 +83971,7 @@ var _flow2 = _interopRequireDefault(__webpack_require__(586));
 
 var _cloneDeep2 = _interopRequireDefault(__webpack_require__(334));
 
-var _findKey = _interopRequireDefault(__webpack_require__(382));
+var _findKey = _interopRequireDefault(__webpack_require__(380));
 
 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; } } }; }
 
@@ -84200,7 +84218,7 @@ var _store = __webpack_require__(511);
 
 var _cozyStackClient = __webpack_require__(332);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 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; }
 
@@ -84948,7 +84966,7 @@ __webpack_require__.r(__webpack_exports__);
 /* 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__(403);
+/* harmony import */ var stream__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(401);
 /* harmony import */ var http__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(602);
 /* harmony import */ var url__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(611);
 /* harmony import */ var whatwg_url__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(612);
@@ -88951,7 +88969,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(159));
 
 var _account = __webpack_require__(626);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -89174,7 +89192,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(159));
 
 var _merge = _interopRequireDefault(__webpack_require__(416));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _HasMany = __webpack_require__(540);
 
@@ -89398,7 +89416,7 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
 var _get = _interopRequireDefault(__webpack_require__(283));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var FallbackQuota = 1e11;
 var GB = 1000 * 1000 * 1000;
@@ -89763,13 +89781,13 @@ var _trimEnd = _interopRequireDefault(__webpack_require__(630));
 
 var _qualification = __webpack_require__(632);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _const = __webpack_require__(503);
 
 var _CozyClient = _interopRequireDefault(__webpack_require__(163));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -90887,7 +90905,7 @@ var _lodash = __webpack_require__(133);
 
 var qualificationModel = _interopRequireWildcard(__webpack_require__(633));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -91422,7 +91440,7 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
 var _helpers = __webpack_require__(547);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 /**
  *
@@ -91555,13 +91573,13 @@ var _get = _interopRequireDefault(__webpack_require__(283));
 
 var _CozyClient = _interopRequireDefault(__webpack_require__(163));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _file = __webpack_require__(629);
 
 var _const = __webpack_require__(503);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -92007,7 +92025,7 @@ var _get = _interopRequireDefault(__webpack_require__(283));
 
 var _isEmpty = _interopRequireDefault(__webpack_require__(640));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 var CONTACTS_DOCTYPE = 'io.cozy.contacts';
 exports.CONTACTS_DOCTYPE = CONTACTS_DOCTYPE;
@@ -95315,7 +95333,7 @@ var _regenerator = _interopRequireDefault(__webpack_require__(177));
 
 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var validateTimeSeriesFormat = function validateTimeSeriesFormat(timeseries) {
   if (!timeseries.startDate || !timeseries.endDate) {
@@ -96534,7 +96552,7 @@ var _regenerator = _interopRequireDefault(__webpack_require__(177));
 
 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 /**
  * Checks the value of the extension_installed attribute
@@ -100536,7 +100554,7 @@ exports.default = QueryRunner;
 
 "use strict";
 __webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(385);
+/* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(383);
 /* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_cozy_minilog__WEBPACK_IMPORTED_MODULE_0__);
 
 
@@ -109265,7 +109283,7 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony import */ var lodash_flow__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_flow__WEBPACK_IMPORTED_MODULE_2__);
 /* harmony import */ var lodash_cloneDeep__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(334);
 /* harmony import */ var lodash_cloneDeep__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_cloneDeep__WEBPACK_IMPORTED_MODULE_3__);
-/* harmony import */ var lodash_findKey__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(382);
+/* harmony import */ var lodash_findKey__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(380);
 /* harmony import */ var lodash_findKey__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_findKey__WEBPACK_IMPORTED_MODULE_4__);
 /* harmony import */ var lodash_mapValues__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(182);
 /* harmony import */ var lodash_mapValues__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_mapValues__WEBPACK_IMPORTED_MODULE_5__);
@@ -109751,7 +109769,7 @@ module.exports = isNumber;
 
 "use strict";
 __webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(385);
+/* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(383);
 /* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_cozy_minilog__WEBPACK_IMPORTED_MODULE_0__);
 
 var inBrowser = typeof window !== 'undefined';
@@ -110339,7 +110357,7 @@ const sortBy = __webpack_require__(635)
 const get = __webpack_require__(283)
 const { parallelMap } = __webpack_require__(1135)
 const CozyClient = __webpack_require__(163).default
-const Q = __webpack_require__(381).Q
+const Q = __webpack_require__(379).Q
 const log = __webpack_require__(1137).namespace('Document')
 const querystring = __webpack_require__(1151)
 
diff --git a/services/consumptionAlert/ecolyo.js b/services/consumptionAlert/ecolyo.js
index 78547ef73dac36389427270e82a02ecf3341b025..eef119d030559736f21e1fd4ddff6c1f4b9a7d83 100644
--- a/services/consumptionAlert/ecolyo.js
+++ b/services/consumptionAlert/ecolyo.js
@@ -44501,7 +44501,7 @@ var _StackLink = _interopRequireDefault(__webpack_require__(504));
 
 var _flow = _interopRequireDefault(__webpack_require__(586));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _associations = __webpack_require__(509);
 
@@ -44689,7 +44689,7 @@ var _helpers = __webpack_require__(546);
 
 var _helpers2 = __webpack_require__(547);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _mobile = __webpack_require__(550);
 
@@ -44707,7 +44707,7 @@ var _ObservableQuery = _interopRequireDefault(__webpack_require__(577));
 
 var _snapshots = __webpack_require__(578);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 var _queries = __webpack_require__(521);
 
@@ -57825,9 +57825,9 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(170));
 
-var _store = _interopRequireDefault(__webpack_require__(379));
+var _dsl = __webpack_require__(379);
 
-var _dsl = __webpack_require__(381);
+var _store = _interopRequireDefault(__webpack_require__(403));
 
 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; } } }; }
 
@@ -57838,16 +57838,18 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
 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 flag = function flag() {
-  var args = [].slice.call(arguments);
-
-  if (args.length === 1) {
-    return store.get(args[0]);
+var flag = function flag(key, value) {
+  if (arguments.length === 1) {
+    return store.get(key);
   } else {
-    store.set(args[0], args[1]);
-    return args[1];
+    store.set(key, value);
+    return value;
   }
 };
 /** List all flags from the store */
@@ -57920,7 +57922,7 @@ var enable = function enable(flagsToEnable) {
  *
  * @private
  * @see  https://docs.cozy.io/en/cozy-stack/settings/#get-settingsflags
- * @param  {CozyClient} client
+ * @param  {import('cozy-client/types/CozyClient').default} client
  */
 
 
@@ -57935,7 +57937,7 @@ var initializeFromRemote = /*#__PURE__*/function () {
         switch (_context.prev = _context.next) {
           case 0:
             _context.next = 2;
-            return client.query((0, _dsl.Q)('io.cozy.settings').getById('flags'));
+            return client.query((0, _dsl.Q)('io.cozy.settings').getById('io.cozy.settings.flags'));
 
           case 2:
             _yield$client$query = _context.sent;
@@ -58040,7 +58042,7 @@ var initializeFromDOM = /*#__PURE__*/function () {
  * <div data-flags="{{ .Flags }}"></div>
  * ````
  *
- * @param  {CozyClient} client - A CozyClient
+ * @param  {import('cozy-client/types/CozyClient').default} client - A CozyClient
  * @return {Promise} Resolves when flags have been initialized
  */
 
@@ -58216,237 +58218,6 @@ exports.default = _default;
 "use strict";
 
 
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _slicedToArray2 = _interopRequireDefault(__webpack_require__(170));
-
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
-
-var _createClass2 = _interopRequireDefault(__webpack_require__(181));
-
-var _microee = _interopRequireDefault(__webpack_require__(331));
-
-var _lsAdapter = _interopRequireDefault(__webpack_require__(380));
-
-/**
- * In memory key value storage.
- *
- * 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 = {};
-
-    if (typeof localStorage !== 'undefined') {
-      this.longtermStore = _lsAdapter.default;
-    }
-
-    this.restore();
-  }
-
-  (0, _createClass2.default)(FlagStore, [{
-    key: "restore",
-    value: function restore() {
-      if (!this.longtermStore) {
-        return;
-      }
-
-      var allValues = this.longtermStore.getAll();
-
-      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];
-
-        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)) {
-        this.store[name] = null;
-      }
-
-      return this.store[name];
-    }
-  }, {
-    key: "set",
-    value: function set(name, value) {
-      if (this.longtermStore) {
-        this.longtermStore.setItem(name, value);
-      }
-
-      this.store[name] = value;
-      this.emit('change', name);
-    }
-  }, {
-    key: "remove",
-    value: function remove(name) {
-      delete this.store[name];
-
-      if (this.longtermStore) {
-        this.longtermStore.removeItem(name);
-      }
-
-      this.emit('change', name);
-    }
-  }]);
-  return FlagStore;
-}();
-
-_microee.default.mixin(FlagStore);
-
-var _default = FlagStore;
-exports.default = _default;
-
-/***/ }),
-/* 380 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.prefix = exports.getKey = exports.default = 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; } } }; }
-
-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; }
-
-// eslint-disable-next-line no-redeclare
-
-/* global localStorage */
-var prefix = 'flag__';
-exports.prefix = prefix;
-
-var getKey = function getKey(name) {
-  return prefix + name;
-};
-
-exports.getKey = getKey;
-
-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 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 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 removeItem = function removeItem(flag) {
-  return localStorage.removeItem(getKey(flag));
-};
-/**
- * Returns all stored flags as an object
- */
-
-
-var getAll = function getAll() {
-  var res = {};
-
-  var _iterator = _createForOfIteratorHelper(listFlagLocalStorage()),
-      _step;
-
-  try {
-    for (_iterator.s(); !(_step = _iterator.n()).done;) {
-      var flag = _step.value;
-      res[flag] = getItem(flag);
-    }
-  } catch (err) {
-    _iterator.e(err);
-  } finally {
-    _iterator.f();
-  }
-
-  return res;
-};
-/**
- * Clears all the flags from localstorage
- */
-
-
-var clearAll = function clearAll() {
-  var _iterator2 = _createForOfIteratorHelper(listFlagLocalStorage()),
-      _step2;
-
-  try {
-    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
-      var flag = _step2.value;
-      removeItem(flag);
-    }
-  } catch (err) {
-    _iterator2.e(err);
-  } finally {
-    _iterator2.f();
-  }
-};
-
-var _default = {
-  getAll: getAll,
-  getItem: getItem,
-  setItem: setItem,
-  clearAll: clearAll,
-  removeItem: removeItem
-};
-exports.default = _default;
-
-/***/ }),
-/* 381 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
 var _interopRequireDefault = __webpack_require__(1);
 
 Object.defineProperty(exports, "__esModule", {
@@ -58460,9 +58231,9 @@ var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__(181));
 
-var _findKey = _interopRequireDefault(__webpack_require__(382));
+var _findKey = _interopRequireDefault(__webpack_require__(380));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -59104,10 +58875,10 @@ var MutationTypes = {
 exports.MutationTypes = MutationTypes;
 
 /***/ }),
-/* 382 */
+/* 380 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseFindKey = __webpack_require__(383),
+var baseFindKey = __webpack_require__(381),
     baseForOwn = __webpack_require__(199),
     baseIteratee = __webpack_require__(222);
 
@@ -59154,7 +58925,7 @@ module.exports = findKey;
 
 
 /***/ }),
-/* 383 */
+/* 381 */
 /***/ (function(module, exports) {
 
 /**
@@ -59183,7 +58954,7 @@ module.exports = baseFindKey;
 
 
 /***/ }),
-/* 384 */
+/* 382 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -59196,7 +58967,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 
-var _minilog = _interopRequireDefault(__webpack_require__(385));
+var _minilog = _interopRequireDefault(__webpack_require__(383));
 
 var logger = (0, _minilog.default)('cozy-client');
 
@@ -59206,27 +58977,27 @@ var _default = logger;
 exports.default = _default;
 
 /***/ }),
-/* 385 */
+/* 383 */
 /***/ (function(module, exports, __webpack_require__) {
 
-module.exports = __webpack_require__(386);
+module.exports = __webpack_require__(384);
 
-var consoleLogger = __webpack_require__(389);
+var consoleLogger = __webpack_require__(387);
 
 // 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__(398).minilog;
+  consoleLogger = __webpack_require__(396).minilog;
 }
 
 // intercept the pipe method and transparently wrap the stringifier, if the
 // destination is a Node core stream
 
-module.exports.Stringifier = __webpack_require__(402);
+module.exports.Stringifier = __webpack_require__(400);
 
 var oldPipe = module.exports.pipe;
 module.exports.pipe = function(dest) {
-  if(dest instanceof __webpack_require__(403)) {
+  if(dest instanceof __webpack_require__(401)) {
     return oldPipe.call(module.exports, new (module.exports.Stringifier)).pipe(dest);
   } else {
     return oldPipe.call(module.exports, dest);
@@ -59237,18 +59008,18 @@ module.exports.defaultBackend = consoleLogger;
 module.exports.defaultFormatter = consoleLogger.formatMinilog;
 
 module.exports.backends = {
-  redis: __webpack_require__(404),
+  redis: __webpack_require__(402),
   nodeConsole: consoleLogger,
   console: consoleLogger
 };
 
 
 /***/ }),
-/* 386 */
+/* 384 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    Filter = __webpack_require__(388);
+var Transform = __webpack_require__(385),
+    Filter = __webpack_require__(386);
 
 var log = new Transform(),
     slice = Array.prototype.slice;
@@ -59297,7 +59068,7 @@ exports.enable = function() {
 
 
 /***/ }),
-/* 387 */
+/* 385 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var microee = __webpack_require__(331);
@@ -59375,11 +59146,11 @@ module.exports = Transform;
 
 
 /***/ }),
-/* 388 */
+/* 386 */
 /***/ (function(module, exports, __webpack_require__) {
 
 // default filter
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 var levelMap = { debug: 1, info: 2, warn: 3, error: 4 };
 
@@ -59437,10 +59208,10 @@ module.exports = Filter;
 
 
 /***/ }),
-/* 389 */
+/* 387 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function ConsoleBackend() { }
 
@@ -59452,12 +59223,12 @@ ConsoleBackend.prototype.write = function() {
 
 var e = new ConsoleBackend();
 
-var levelMap = __webpack_require__(390).levelMap;
+var levelMap = __webpack_require__(388).levelMap;
 
 e.filterEnv = function() {
   console.error('Minilog.backends.console.filterEnv is deprecated in Minilog v2.');
   // return the instance of Minilog
-  return __webpack_require__(386);
+  return __webpack_require__(384);
 };
 
 e.formatters = [
@@ -59465,19 +59236,19 @@ e.formatters = [
     'formatLearnboost', 'formatMinilog', 'formatWithStack', 'formatTime'
 ];
 
-e.formatClean = new (__webpack_require__(391));
-e.formatColor = new (__webpack_require__(392));
-e.formatNpm = new (__webpack_require__(393));
-e.formatLearnboost = new (__webpack_require__(394));
-e.formatMinilog = new (__webpack_require__(395));
-e.formatWithStack = new (__webpack_require__(396));
-e.formatTime = new (__webpack_require__(397));
+e.formatClean = new (__webpack_require__(389));
+e.formatColor = new (__webpack_require__(390));
+e.formatNpm = new (__webpack_require__(391));
+e.formatLearnboost = new (__webpack_require__(392));
+e.formatMinilog = new (__webpack_require__(393));
+e.formatWithStack = new (__webpack_require__(394));
+e.formatTime = new (__webpack_require__(395));
 
 module.exports = e;
 
 
 /***/ }),
-/* 390 */
+/* 388 */
 /***/ (function(module, exports) {
 
 var styles = {
@@ -59507,10 +59278,10 @@ exports.style = function(str, style) {
 
 
 /***/ }),
-/* 391 */
+/* 389 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function FormatClean() {}
 
@@ -59525,11 +59296,11 @@ module.exports = FormatClean;
 
 
 /***/ }),
-/* 392 */
+/* 390 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style;
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style;
 
 function FormatColor() {}
 
@@ -59547,10 +59318,10 @@ module.exports = FormatColor;
 
 
 /***/ }),
-/* 393 */
+/* 391 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function FormatNpm() {}
 
@@ -59575,11 +59346,11 @@ module.exports = FormatNpm;
 
 
 /***/ }),
-/* 394 */
+/* 392 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style;
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style;
 
 function FormatLearnboost() {}
 
@@ -59596,11 +59367,11 @@ module.exports = FormatLearnboost;
 
 
 /***/ }),
-/* 395 */
+/* 393 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style,
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style,
     util = __webpack_require__(102);
 
 function FormatMinilog() {}
@@ -59620,11 +59391,11 @@ module.exports = FormatMinilog;
 
 
 /***/ }),
-/* 396 */
+/* 394 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style;
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style;
 
 function FormatNpm() {}
 
@@ -59678,11 +59449,11 @@ module.exports = FormatNpm;
 
 
 /***/ }),
-/* 397 */
+/* 395 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style,
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style,
     util = __webpack_require__(102);
 
 function FormatTime() {}
@@ -59714,10 +59485,10 @@ module.exports = FormatTime;
 
 
 /***/ }),
-/* 398 */
+/* 396 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 var newlines = /\n+$/,
     logger = new Transform();
@@ -59745,18 +59516,18 @@ logger.write = function(name, level, args) {
 };
 
 logger.formatters = ['color', 'minilog'];
-logger.color = __webpack_require__(399);
-logger.minilog = __webpack_require__(401);
+logger.color = __webpack_require__(397);
+logger.minilog = __webpack_require__(399);
 
 module.exports = logger;
 
 
 /***/ }),
-/* 399 */
+/* 397 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    color = __webpack_require__(400);
+var Transform = __webpack_require__(385),
+    color = __webpack_require__(398);
 
 var colors = { debug: ['cyan'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },
     logger = new Transform();
@@ -59776,7 +59547,7 @@ module.exports = logger;
 
 
 /***/ }),
-/* 400 */
+/* 398 */
 /***/ (function(module, exports) {
 
 var hex = {
@@ -59802,11 +59573,11 @@ module.exports = color;
 
 
 /***/ }),
-/* 401 */
+/* 399 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    color = __webpack_require__(400),
+var Transform = __webpack_require__(385),
+    color = __webpack_require__(398),
     colors = { debug: ['gray'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },
     logger = new Transform();
 
@@ -59834,10 +59605,10 @@ module.exports = logger;
 
 
 /***/ }),
-/* 402 */
+/* 400 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function Stringify() {}
 
@@ -59872,13 +59643,13 @@ module.exports = Stringify;
 
 
 /***/ }),
-/* 403 */
+/* 401 */
 /***/ (function(module, exports) {
 
 module.exports = require("stream");
 
 /***/ }),
-/* 404 */
+/* 402 */
 /***/ (function(module, exports) {
 
 function RedisBackend(options) {
@@ -59899,6 +59670,253 @@ RedisBackend.prototype.clear = function(cb) {
 module.exports = RedisBackend;
 
 
+/***/ }),
+/* 403 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _interopRequireDefault = __webpack_require__(1);
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+
+var _slicedToArray2 = _interopRequireDefault(__webpack_require__(170));
+
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
+
+var _createClass2 = _interopRequireDefault(__webpack_require__(181));
+
+var _microee = _interopRequireDefault(__webpack_require__(331));
+
+var _lsAdapter = _interopRequireDefault(__webpack_require__(404));
+
+/**
+ * In memory key value storage.
+ *
+ * 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 = {};
+
+    if (typeof localStorage !== 'undefined') {
+      this.longtermStore = _lsAdapter.default;
+    }
+
+    this.restore();
+  }
+
+  (0, _createClass2.default)(FlagStore, [{
+    key: "restore",
+    value: function restore() {
+      if (!this.longtermStore) {
+        return;
+      }
+
+      var allValues = this.longtermStore.getAll();
+
+      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];
+
+        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;
+
+        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: "set",
+    value: function set(name, value) {
+      if (this.longtermStore) {
+        this.longtermStore.setItem(name, value);
+      }
+
+      this.store[name] = value;
+      this.emit('change', name);
+    }
+  }, {
+    key: "remove",
+    value: function remove(name) {
+      delete this.store[name];
+
+      if (this.longtermStore) {
+        this.longtermStore.removeItem(name);
+      }
+
+      this.emit('change', name);
+    }
+  }]);
+  return FlagStore;
+}();
+
+_microee.default.mixin(FlagStore);
+
+var _default = FlagStore;
+exports.default = _default;
+
+/***/ }),
+/* 404 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.prefix = exports.getKey = exports.default = 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; } } }; }
+
+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; }
+
+// eslint-disable-next-line no-redeclare
+
+/* global localStorage */
+var prefix = 'flag__';
+exports.prefix = prefix;
+
+var getKey = function getKey(name) {
+  return prefix + name;
+};
+
+exports.getKey = getKey;
+
+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 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 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 removeItem = function removeItem(flag) {
+  return localStorage.removeItem(getKey(flag));
+};
+/**
+ * Returns all stored flags as an object
+ */
+
+
+var getAll = function getAll() {
+  var res = {};
+
+  var _iterator = _createForOfIteratorHelper(listFlagLocalStorage()),
+      _step;
+
+  try {
+    for (_iterator.s(); !(_step = _iterator.n()).done;) {
+      var flag = _step.value;
+      res[flag] = getItem(flag);
+    }
+  } catch (err) {
+    _iterator.e(err);
+  } finally {
+    _iterator.f();
+  }
+
+  return res;
+};
+/**
+ * Clears all the flags from localstorage
+ */
+
+
+var clearAll = function clearAll() {
+  var _iterator2 = _createForOfIteratorHelper(listFlagLocalStorage()),
+      _step2;
+
+  try {
+    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
+      var flag = _step2.value;
+      removeItem(flag);
+    }
+  } catch (err) {
+    _iterator2.e(err);
+  } finally {
+    _iterator2.f();
+  }
+};
+
+var _default = {
+  getAll: getAll,
+  getItem: getItem,
+  setItem: setItem,
+  clearAll: clearAll,
+  removeItem: removeItem
+};
+exports.default = _default;
+
 /***/ }),
 /* 405 */
 /***/ (function(module, exports, __webpack_require__) {
@@ -64129,7 +64147,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 
-var _minilog = _interopRequireDefault(__webpack_require__(385));
+var _minilog = _interopRequireDefault(__webpack_require__(383));
 
 var logger = (0, _minilog.default)('cozy-stack-client');
 
@@ -73432,7 +73450,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(159));
 
 var _zipWith = _interopRequireDefault(__webpack_require__(505));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _CozyLink2 = _interopRequireDefault(__webpack_require__(507));
 
@@ -73440,7 +73458,7 @@ var _const = __webpack_require__(503);
 
 var _errors = __webpack_require__(508);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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); }; }
 
@@ -74071,7 +74089,7 @@ var _omit = _interopRequireDefault(__webpack_require__(407));
 
 var _uniq = _interopRequireDefault(__webpack_require__(406));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _store = __webpack_require__(511);
 
@@ -75422,11 +75440,11 @@ var _omit = _interopRequireDefault(__webpack_require__(407));
 
 var _merge = _interopRequireDefault(__webpack_require__(416));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 var _queries = __webpack_require__(521);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _mutations = __webpack_require__(537);
 
@@ -75783,9 +75801,9 @@ var _mutations = __webpack_require__(537);
 
 var _helpers = __webpack_require__(538);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -77810,7 +77828,7 @@ var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__(181));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 /**
  * Associations are used by components to access related store documents that are
@@ -78099,13 +78117,13 @@ var _get = _interopRequireDefault(__webpack_require__(283));
 
 var _merge = _interopRequireDefault(__webpack_require__(416));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _store = __webpack_require__(511);
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -78576,11 +78594,11 @@ var _get2 = _interopRequireDefault(__webpack_require__(283));
 
 var _set = _interopRequireDefault(__webpack_require__(542));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -78778,7 +78796,7 @@ var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(368));
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 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; }
 
@@ -78865,7 +78883,7 @@ var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(366
 
 var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(368));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
@@ -79038,7 +79056,7 @@ var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(368));
 
 var _HasMany2 = _interopRequireDefault(__webpack_require__(540));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 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); }; }
 
@@ -81180,7 +81198,7 @@ var _uniq = _interopRequireDefault(__webpack_require__(406));
 
 var _uniqWith = _interopRequireDefault(__webpack_require__(569));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var isIdQuery = function isIdQuery(query) {
   return query.id || query.ids;
@@ -83465,7 +83483,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.hasQueryBeenLoaded = exports.isQueryLoading = exports.cancelable = void 0;
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 /**
  * @typedef {Promise} CancelablePromise
@@ -83550,7 +83568,7 @@ var _flow2 = _interopRequireDefault(__webpack_require__(586));
 
 var _cloneDeep2 = _interopRequireDefault(__webpack_require__(334));
 
-var _findKey = _interopRequireDefault(__webpack_require__(382));
+var _findKey = _interopRequireDefault(__webpack_require__(380));
 
 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; } } }; }
 
@@ -83797,7 +83815,7 @@ var _store = __webpack_require__(511);
 
 var _cozyStackClient = __webpack_require__(332);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 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; }
 
@@ -84545,7 +84563,7 @@ __webpack_require__.r(__webpack_exports__);
 /* 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__(403);
+/* harmony import */ var stream__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(401);
 /* harmony import */ var http__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(602);
 /* harmony import */ var url__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(611);
 /* harmony import */ var whatwg_url__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(612);
@@ -88548,7 +88566,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(159));
 
 var _account = __webpack_require__(626);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -88771,7 +88789,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(159));
 
 var _merge = _interopRequireDefault(__webpack_require__(416));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _HasMany = __webpack_require__(540);
 
@@ -88995,7 +89013,7 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
 var _get = _interopRequireDefault(__webpack_require__(283));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var FallbackQuota = 1e11;
 var GB = 1000 * 1000 * 1000;
@@ -89360,13 +89378,13 @@ var _trimEnd = _interopRequireDefault(__webpack_require__(630));
 
 var _qualification = __webpack_require__(632);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _const = __webpack_require__(503);
 
 var _CozyClient = _interopRequireDefault(__webpack_require__(163));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -90484,7 +90502,7 @@ var _lodash = __webpack_require__(133);
 
 var qualificationModel = _interopRequireWildcard(__webpack_require__(633));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -91019,7 +91037,7 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
 var _helpers = __webpack_require__(547);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 /**
  *
@@ -91152,13 +91170,13 @@ var _get = _interopRequireDefault(__webpack_require__(283));
 
 var _CozyClient = _interopRequireDefault(__webpack_require__(163));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _file = __webpack_require__(629);
 
 var _const = __webpack_require__(503);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -91604,7 +91622,7 @@ var _get = _interopRequireDefault(__webpack_require__(283));
 
 var _isEmpty = _interopRequireDefault(__webpack_require__(640));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 var CONTACTS_DOCTYPE = 'io.cozy.contacts';
 exports.CONTACTS_DOCTYPE = CONTACTS_DOCTYPE;
@@ -94912,7 +94930,7 @@ var _regenerator = _interopRequireDefault(__webpack_require__(177));
 
 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var validateTimeSeriesFormat = function validateTimeSeriesFormat(timeseries) {
   if (!timeseries.startDate || !timeseries.endDate) {
@@ -96131,7 +96149,7 @@ var _regenerator = _interopRequireDefault(__webpack_require__(177));
 
 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 /**
  * Checks the value of the extension_installed attribute
@@ -100133,7 +100151,7 @@ exports.default = QueryRunner;
 
 "use strict";
 __webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(385);
+/* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(383);
 /* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_cozy_minilog__WEBPACK_IMPORTED_MODULE_0__);
 
 
@@ -109085,7 +109103,7 @@ var __extends = (this && this.__extends) || (function () {
 })();
 Object.defineProperty(exports, "__esModule", { value: true });
 var Parser_1 = __webpack_require__(1226);
-var stream_1 = __webpack_require__(403);
+var stream_1 = __webpack_require__(401);
 var string_decoder_1 = __webpack_require__(1254);
 // Following the example in https://nodejs.org/api/stream.html#stream_decoding_buffers_in_a_writable_stream
 function isBuffer(_chunk, encoding) {
diff --git a/services/enedisHalfHourMonthlyAnalysis/ecolyo.js b/services/enedisHalfHourMonthlyAnalysis/ecolyo.js
index c3a1c57ba3e56c64eda08192b62aefa4409c9931..873e4a440126a851df3409801f518c4b49be1332 100644
--- a/services/enedisHalfHourMonthlyAnalysis/ecolyo.js
+++ b/services/enedisHalfHourMonthlyAnalysis/ecolyo.js
@@ -44501,7 +44501,7 @@ var _StackLink = _interopRequireDefault(__webpack_require__(504));
 
 var _flow = _interopRequireDefault(__webpack_require__(586));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _associations = __webpack_require__(509);
 
@@ -44689,7 +44689,7 @@ var _helpers = __webpack_require__(546);
 
 var _helpers2 = __webpack_require__(547);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _mobile = __webpack_require__(550);
 
@@ -44707,7 +44707,7 @@ var _ObservableQuery = _interopRequireDefault(__webpack_require__(577));
 
 var _snapshots = __webpack_require__(578);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 var _queries = __webpack_require__(521);
 
@@ -57825,9 +57825,9 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(170));
 
-var _store = _interopRequireDefault(__webpack_require__(379));
+var _dsl = __webpack_require__(379);
 
-var _dsl = __webpack_require__(381);
+var _store = _interopRequireDefault(__webpack_require__(403));
 
 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; } } }; }
 
@@ -57838,16 +57838,18 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
 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 flag = function flag() {
-  var args = [].slice.call(arguments);
-
-  if (args.length === 1) {
-    return store.get(args[0]);
+var flag = function flag(key, value) {
+  if (arguments.length === 1) {
+    return store.get(key);
   } else {
-    store.set(args[0], args[1]);
-    return args[1];
+    store.set(key, value);
+    return value;
   }
 };
 /** List all flags from the store */
@@ -57920,7 +57922,7 @@ var enable = function enable(flagsToEnable) {
  *
  * @private
  * @see  https://docs.cozy.io/en/cozy-stack/settings/#get-settingsflags
- * @param  {CozyClient} client
+ * @param  {import('cozy-client/types/CozyClient').default} client
  */
 
 
@@ -57935,7 +57937,7 @@ var initializeFromRemote = /*#__PURE__*/function () {
         switch (_context.prev = _context.next) {
           case 0:
             _context.next = 2;
-            return client.query((0, _dsl.Q)('io.cozy.settings').getById('flags'));
+            return client.query((0, _dsl.Q)('io.cozy.settings').getById('io.cozy.settings.flags'));
 
           case 2:
             _yield$client$query = _context.sent;
@@ -58040,7 +58042,7 @@ var initializeFromDOM = /*#__PURE__*/function () {
  * <div data-flags="{{ .Flags }}"></div>
  * ````
  *
- * @param  {CozyClient} client - A CozyClient
+ * @param  {import('cozy-client/types/CozyClient').default} client - A CozyClient
  * @return {Promise} Resolves when flags have been initialized
  */
 
@@ -58216,237 +58218,6 @@ exports.default = _default;
 "use strict";
 
 
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _slicedToArray2 = _interopRequireDefault(__webpack_require__(170));
-
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
-
-var _createClass2 = _interopRequireDefault(__webpack_require__(181));
-
-var _microee = _interopRequireDefault(__webpack_require__(331));
-
-var _lsAdapter = _interopRequireDefault(__webpack_require__(380));
-
-/**
- * In memory key value storage.
- *
- * 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 = {};
-
-    if (typeof localStorage !== 'undefined') {
-      this.longtermStore = _lsAdapter.default;
-    }
-
-    this.restore();
-  }
-
-  (0, _createClass2.default)(FlagStore, [{
-    key: "restore",
-    value: function restore() {
-      if (!this.longtermStore) {
-        return;
-      }
-
-      var allValues = this.longtermStore.getAll();
-
-      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];
-
-        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)) {
-        this.store[name] = null;
-      }
-
-      return this.store[name];
-    }
-  }, {
-    key: "set",
-    value: function set(name, value) {
-      if (this.longtermStore) {
-        this.longtermStore.setItem(name, value);
-      }
-
-      this.store[name] = value;
-      this.emit('change', name);
-    }
-  }, {
-    key: "remove",
-    value: function remove(name) {
-      delete this.store[name];
-
-      if (this.longtermStore) {
-        this.longtermStore.removeItem(name);
-      }
-
-      this.emit('change', name);
-    }
-  }]);
-  return FlagStore;
-}();
-
-_microee.default.mixin(FlagStore);
-
-var _default = FlagStore;
-exports.default = _default;
-
-/***/ }),
-/* 380 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.prefix = exports.getKey = exports.default = 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; } } }; }
-
-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; }
-
-// eslint-disable-next-line no-redeclare
-
-/* global localStorage */
-var prefix = 'flag__';
-exports.prefix = prefix;
-
-var getKey = function getKey(name) {
-  return prefix + name;
-};
-
-exports.getKey = getKey;
-
-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 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 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 removeItem = function removeItem(flag) {
-  return localStorage.removeItem(getKey(flag));
-};
-/**
- * Returns all stored flags as an object
- */
-
-
-var getAll = function getAll() {
-  var res = {};
-
-  var _iterator = _createForOfIteratorHelper(listFlagLocalStorage()),
-      _step;
-
-  try {
-    for (_iterator.s(); !(_step = _iterator.n()).done;) {
-      var flag = _step.value;
-      res[flag] = getItem(flag);
-    }
-  } catch (err) {
-    _iterator.e(err);
-  } finally {
-    _iterator.f();
-  }
-
-  return res;
-};
-/**
- * Clears all the flags from localstorage
- */
-
-
-var clearAll = function clearAll() {
-  var _iterator2 = _createForOfIteratorHelper(listFlagLocalStorage()),
-      _step2;
-
-  try {
-    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
-      var flag = _step2.value;
-      removeItem(flag);
-    }
-  } catch (err) {
-    _iterator2.e(err);
-  } finally {
-    _iterator2.f();
-  }
-};
-
-var _default = {
-  getAll: getAll,
-  getItem: getItem,
-  setItem: setItem,
-  clearAll: clearAll,
-  removeItem: removeItem
-};
-exports.default = _default;
-
-/***/ }),
-/* 381 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
 var _interopRequireDefault = __webpack_require__(1);
 
 Object.defineProperty(exports, "__esModule", {
@@ -58460,9 +58231,9 @@ var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__(181));
 
-var _findKey = _interopRequireDefault(__webpack_require__(382));
+var _findKey = _interopRequireDefault(__webpack_require__(380));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -59104,10 +58875,10 @@ var MutationTypes = {
 exports.MutationTypes = MutationTypes;
 
 /***/ }),
-/* 382 */
+/* 380 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseFindKey = __webpack_require__(383),
+var baseFindKey = __webpack_require__(381),
     baseForOwn = __webpack_require__(199),
     baseIteratee = __webpack_require__(222);
 
@@ -59154,7 +58925,7 @@ module.exports = findKey;
 
 
 /***/ }),
-/* 383 */
+/* 381 */
 /***/ (function(module, exports) {
 
 /**
@@ -59183,7 +58954,7 @@ module.exports = baseFindKey;
 
 
 /***/ }),
-/* 384 */
+/* 382 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -59196,7 +58967,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 
-var _minilog = _interopRequireDefault(__webpack_require__(385));
+var _minilog = _interopRequireDefault(__webpack_require__(383));
 
 var logger = (0, _minilog.default)('cozy-client');
 
@@ -59206,27 +58977,27 @@ var _default = logger;
 exports.default = _default;
 
 /***/ }),
-/* 385 */
+/* 383 */
 /***/ (function(module, exports, __webpack_require__) {
 
-module.exports = __webpack_require__(386);
+module.exports = __webpack_require__(384);
 
-var consoleLogger = __webpack_require__(389);
+var consoleLogger = __webpack_require__(387);
 
 // 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__(398).minilog;
+  consoleLogger = __webpack_require__(396).minilog;
 }
 
 // intercept the pipe method and transparently wrap the stringifier, if the
 // destination is a Node core stream
 
-module.exports.Stringifier = __webpack_require__(402);
+module.exports.Stringifier = __webpack_require__(400);
 
 var oldPipe = module.exports.pipe;
 module.exports.pipe = function(dest) {
-  if(dest instanceof __webpack_require__(403)) {
+  if(dest instanceof __webpack_require__(401)) {
     return oldPipe.call(module.exports, new (module.exports.Stringifier)).pipe(dest);
   } else {
     return oldPipe.call(module.exports, dest);
@@ -59237,18 +59008,18 @@ module.exports.defaultBackend = consoleLogger;
 module.exports.defaultFormatter = consoleLogger.formatMinilog;
 
 module.exports.backends = {
-  redis: __webpack_require__(404),
+  redis: __webpack_require__(402),
   nodeConsole: consoleLogger,
   console: consoleLogger
 };
 
 
 /***/ }),
-/* 386 */
+/* 384 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    Filter = __webpack_require__(388);
+var Transform = __webpack_require__(385),
+    Filter = __webpack_require__(386);
 
 var log = new Transform(),
     slice = Array.prototype.slice;
@@ -59297,7 +59068,7 @@ exports.enable = function() {
 
 
 /***/ }),
-/* 387 */
+/* 385 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var microee = __webpack_require__(331);
@@ -59375,11 +59146,11 @@ module.exports = Transform;
 
 
 /***/ }),
-/* 388 */
+/* 386 */
 /***/ (function(module, exports, __webpack_require__) {
 
 // default filter
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 var levelMap = { debug: 1, info: 2, warn: 3, error: 4 };
 
@@ -59437,10 +59208,10 @@ module.exports = Filter;
 
 
 /***/ }),
-/* 389 */
+/* 387 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function ConsoleBackend() { }
 
@@ -59452,12 +59223,12 @@ ConsoleBackend.prototype.write = function() {
 
 var e = new ConsoleBackend();
 
-var levelMap = __webpack_require__(390).levelMap;
+var levelMap = __webpack_require__(388).levelMap;
 
 e.filterEnv = function() {
   console.error('Minilog.backends.console.filterEnv is deprecated in Minilog v2.');
   // return the instance of Minilog
-  return __webpack_require__(386);
+  return __webpack_require__(384);
 };
 
 e.formatters = [
@@ -59465,19 +59236,19 @@ e.formatters = [
     'formatLearnboost', 'formatMinilog', 'formatWithStack', 'formatTime'
 ];
 
-e.formatClean = new (__webpack_require__(391));
-e.formatColor = new (__webpack_require__(392));
-e.formatNpm = new (__webpack_require__(393));
-e.formatLearnboost = new (__webpack_require__(394));
-e.formatMinilog = new (__webpack_require__(395));
-e.formatWithStack = new (__webpack_require__(396));
-e.formatTime = new (__webpack_require__(397));
+e.formatClean = new (__webpack_require__(389));
+e.formatColor = new (__webpack_require__(390));
+e.formatNpm = new (__webpack_require__(391));
+e.formatLearnboost = new (__webpack_require__(392));
+e.formatMinilog = new (__webpack_require__(393));
+e.formatWithStack = new (__webpack_require__(394));
+e.formatTime = new (__webpack_require__(395));
 
 module.exports = e;
 
 
 /***/ }),
-/* 390 */
+/* 388 */
 /***/ (function(module, exports) {
 
 var styles = {
@@ -59507,10 +59278,10 @@ exports.style = function(str, style) {
 
 
 /***/ }),
-/* 391 */
+/* 389 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function FormatClean() {}
 
@@ -59525,11 +59296,11 @@ module.exports = FormatClean;
 
 
 /***/ }),
-/* 392 */
+/* 390 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style;
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style;
 
 function FormatColor() {}
 
@@ -59547,10 +59318,10 @@ module.exports = FormatColor;
 
 
 /***/ }),
-/* 393 */
+/* 391 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function FormatNpm() {}
 
@@ -59575,11 +59346,11 @@ module.exports = FormatNpm;
 
 
 /***/ }),
-/* 394 */
+/* 392 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style;
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style;
 
 function FormatLearnboost() {}
 
@@ -59596,11 +59367,11 @@ module.exports = FormatLearnboost;
 
 
 /***/ }),
-/* 395 */
+/* 393 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style,
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style,
     util = __webpack_require__(102);
 
 function FormatMinilog() {}
@@ -59620,11 +59391,11 @@ module.exports = FormatMinilog;
 
 
 /***/ }),
-/* 396 */
+/* 394 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style;
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style;
 
 function FormatNpm() {}
 
@@ -59678,11 +59449,11 @@ module.exports = FormatNpm;
 
 
 /***/ }),
-/* 397 */
+/* 395 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style,
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style,
     util = __webpack_require__(102);
 
 function FormatTime() {}
@@ -59714,10 +59485,10 @@ module.exports = FormatTime;
 
 
 /***/ }),
-/* 398 */
+/* 396 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 var newlines = /\n+$/,
     logger = new Transform();
@@ -59745,18 +59516,18 @@ logger.write = function(name, level, args) {
 };
 
 logger.formatters = ['color', 'minilog'];
-logger.color = __webpack_require__(399);
-logger.minilog = __webpack_require__(401);
+logger.color = __webpack_require__(397);
+logger.minilog = __webpack_require__(399);
 
 module.exports = logger;
 
 
 /***/ }),
-/* 399 */
+/* 397 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    color = __webpack_require__(400);
+var Transform = __webpack_require__(385),
+    color = __webpack_require__(398);
 
 var colors = { debug: ['cyan'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },
     logger = new Transform();
@@ -59776,7 +59547,7 @@ module.exports = logger;
 
 
 /***/ }),
-/* 400 */
+/* 398 */
 /***/ (function(module, exports) {
 
 var hex = {
@@ -59802,11 +59573,11 @@ module.exports = color;
 
 
 /***/ }),
-/* 401 */
+/* 399 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    color = __webpack_require__(400),
+var Transform = __webpack_require__(385),
+    color = __webpack_require__(398),
     colors = { debug: ['gray'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },
     logger = new Transform();
 
@@ -59834,10 +59605,10 @@ module.exports = logger;
 
 
 /***/ }),
-/* 402 */
+/* 400 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function Stringify() {}
 
@@ -59872,13 +59643,13 @@ module.exports = Stringify;
 
 
 /***/ }),
-/* 403 */
+/* 401 */
 /***/ (function(module, exports) {
 
 module.exports = require("stream");
 
 /***/ }),
-/* 404 */
+/* 402 */
 /***/ (function(module, exports) {
 
 function RedisBackend(options) {
@@ -59899,6 +59670,253 @@ RedisBackend.prototype.clear = function(cb) {
 module.exports = RedisBackend;
 
 
+/***/ }),
+/* 403 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _interopRequireDefault = __webpack_require__(1);
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+
+var _slicedToArray2 = _interopRequireDefault(__webpack_require__(170));
+
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
+
+var _createClass2 = _interopRequireDefault(__webpack_require__(181));
+
+var _microee = _interopRequireDefault(__webpack_require__(331));
+
+var _lsAdapter = _interopRequireDefault(__webpack_require__(404));
+
+/**
+ * In memory key value storage.
+ *
+ * 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 = {};
+
+    if (typeof localStorage !== 'undefined') {
+      this.longtermStore = _lsAdapter.default;
+    }
+
+    this.restore();
+  }
+
+  (0, _createClass2.default)(FlagStore, [{
+    key: "restore",
+    value: function restore() {
+      if (!this.longtermStore) {
+        return;
+      }
+
+      var allValues = this.longtermStore.getAll();
+
+      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];
+
+        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;
+
+        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: "set",
+    value: function set(name, value) {
+      if (this.longtermStore) {
+        this.longtermStore.setItem(name, value);
+      }
+
+      this.store[name] = value;
+      this.emit('change', name);
+    }
+  }, {
+    key: "remove",
+    value: function remove(name) {
+      delete this.store[name];
+
+      if (this.longtermStore) {
+        this.longtermStore.removeItem(name);
+      }
+
+      this.emit('change', name);
+    }
+  }]);
+  return FlagStore;
+}();
+
+_microee.default.mixin(FlagStore);
+
+var _default = FlagStore;
+exports.default = _default;
+
+/***/ }),
+/* 404 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.prefix = exports.getKey = exports.default = 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; } } }; }
+
+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; }
+
+// eslint-disable-next-line no-redeclare
+
+/* global localStorage */
+var prefix = 'flag__';
+exports.prefix = prefix;
+
+var getKey = function getKey(name) {
+  return prefix + name;
+};
+
+exports.getKey = getKey;
+
+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 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 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 removeItem = function removeItem(flag) {
+  return localStorage.removeItem(getKey(flag));
+};
+/**
+ * Returns all stored flags as an object
+ */
+
+
+var getAll = function getAll() {
+  var res = {};
+
+  var _iterator = _createForOfIteratorHelper(listFlagLocalStorage()),
+      _step;
+
+  try {
+    for (_iterator.s(); !(_step = _iterator.n()).done;) {
+      var flag = _step.value;
+      res[flag] = getItem(flag);
+    }
+  } catch (err) {
+    _iterator.e(err);
+  } finally {
+    _iterator.f();
+  }
+
+  return res;
+};
+/**
+ * Clears all the flags from localstorage
+ */
+
+
+var clearAll = function clearAll() {
+  var _iterator2 = _createForOfIteratorHelper(listFlagLocalStorage()),
+      _step2;
+
+  try {
+    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
+      var flag = _step2.value;
+      removeItem(flag);
+    }
+  } catch (err) {
+    _iterator2.e(err);
+  } finally {
+    _iterator2.f();
+  }
+};
+
+var _default = {
+  getAll: getAll,
+  getItem: getItem,
+  setItem: setItem,
+  clearAll: clearAll,
+  removeItem: removeItem
+};
+exports.default = _default;
+
 /***/ }),
 /* 405 */
 /***/ (function(module, exports, __webpack_require__) {
@@ -64129,7 +64147,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 
-var _minilog = _interopRequireDefault(__webpack_require__(385));
+var _minilog = _interopRequireDefault(__webpack_require__(383));
 
 var logger = (0, _minilog.default)('cozy-stack-client');
 
@@ -73432,7 +73450,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(159));
 
 var _zipWith = _interopRequireDefault(__webpack_require__(505));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _CozyLink2 = _interopRequireDefault(__webpack_require__(507));
 
@@ -73440,7 +73458,7 @@ var _const = __webpack_require__(503);
 
 var _errors = __webpack_require__(508);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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); }; }
 
@@ -74071,7 +74089,7 @@ var _omit = _interopRequireDefault(__webpack_require__(407));
 
 var _uniq = _interopRequireDefault(__webpack_require__(406));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _store = __webpack_require__(511);
 
@@ -75422,11 +75440,11 @@ var _omit = _interopRequireDefault(__webpack_require__(407));
 
 var _merge = _interopRequireDefault(__webpack_require__(416));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 var _queries = __webpack_require__(521);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _mutations = __webpack_require__(537);
 
@@ -75783,9 +75801,9 @@ var _mutations = __webpack_require__(537);
 
 var _helpers = __webpack_require__(538);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -77810,7 +77828,7 @@ var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__(181));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 /**
  * Associations are used by components to access related store documents that are
@@ -78099,13 +78117,13 @@ var _get = _interopRequireDefault(__webpack_require__(283));
 
 var _merge = _interopRequireDefault(__webpack_require__(416));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _store = __webpack_require__(511);
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -78576,11 +78594,11 @@ var _get2 = _interopRequireDefault(__webpack_require__(283));
 
 var _set = _interopRequireDefault(__webpack_require__(542));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -78778,7 +78796,7 @@ var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(368));
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 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; }
 
@@ -78865,7 +78883,7 @@ var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(366
 
 var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(368));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
@@ -79038,7 +79056,7 @@ var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(368));
 
 var _HasMany2 = _interopRequireDefault(__webpack_require__(540));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 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); }; }
 
@@ -81180,7 +81198,7 @@ var _uniq = _interopRequireDefault(__webpack_require__(406));
 
 var _uniqWith = _interopRequireDefault(__webpack_require__(569));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var isIdQuery = function isIdQuery(query) {
   return query.id || query.ids;
@@ -83465,7 +83483,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.hasQueryBeenLoaded = exports.isQueryLoading = exports.cancelable = void 0;
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 /**
  * @typedef {Promise} CancelablePromise
@@ -83550,7 +83568,7 @@ var _flow2 = _interopRequireDefault(__webpack_require__(586));
 
 var _cloneDeep2 = _interopRequireDefault(__webpack_require__(334));
 
-var _findKey = _interopRequireDefault(__webpack_require__(382));
+var _findKey = _interopRequireDefault(__webpack_require__(380));
 
 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; } } }; }
 
@@ -83797,7 +83815,7 @@ var _store = __webpack_require__(511);
 
 var _cozyStackClient = __webpack_require__(332);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 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; }
 
@@ -84545,7 +84563,7 @@ __webpack_require__.r(__webpack_exports__);
 /* 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__(403);
+/* harmony import */ var stream__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(401);
 /* harmony import */ var http__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(602);
 /* harmony import */ var url__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(611);
 /* harmony import */ var whatwg_url__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(612);
@@ -88548,7 +88566,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(159));
 
 var _account = __webpack_require__(626);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -88771,7 +88789,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(159));
 
 var _merge = _interopRequireDefault(__webpack_require__(416));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _HasMany = __webpack_require__(540);
 
@@ -88995,7 +89013,7 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
 var _get = _interopRequireDefault(__webpack_require__(283));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var FallbackQuota = 1e11;
 var GB = 1000 * 1000 * 1000;
@@ -89360,13 +89378,13 @@ var _trimEnd = _interopRequireDefault(__webpack_require__(630));
 
 var _qualification = __webpack_require__(632);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _const = __webpack_require__(503);
 
 var _CozyClient = _interopRequireDefault(__webpack_require__(163));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -90484,7 +90502,7 @@ var _lodash = __webpack_require__(133);
 
 var qualificationModel = _interopRequireWildcard(__webpack_require__(633));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -91019,7 +91037,7 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
 var _helpers = __webpack_require__(547);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 /**
  *
@@ -91152,13 +91170,13 @@ var _get = _interopRequireDefault(__webpack_require__(283));
 
 var _CozyClient = _interopRequireDefault(__webpack_require__(163));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _file = __webpack_require__(629);
 
 var _const = __webpack_require__(503);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -91604,7 +91622,7 @@ var _get = _interopRequireDefault(__webpack_require__(283));
 
 var _isEmpty = _interopRequireDefault(__webpack_require__(640));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 var CONTACTS_DOCTYPE = 'io.cozy.contacts';
 exports.CONTACTS_DOCTYPE = CONTACTS_DOCTYPE;
@@ -94912,7 +94930,7 @@ var _regenerator = _interopRequireDefault(__webpack_require__(177));
 
 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var validateTimeSeriesFormat = function validateTimeSeriesFormat(timeseries) {
   if (!timeseries.startDate || !timeseries.endDate) {
@@ -96131,7 +96149,7 @@ var _regenerator = _interopRequireDefault(__webpack_require__(177));
 
 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 /**
  * Checks the value of the extension_installed attribute
@@ -100133,7 +100151,7 @@ exports.default = QueryRunner;
 
 "use strict";
 __webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(385);
+/* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(383);
 /* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_cozy_minilog__WEBPACK_IMPORTED_MODULE_0__);
 
 
@@ -108694,7 +108712,7 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony import */ var lodash_flow__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_flow__WEBPACK_IMPORTED_MODULE_2__);
 /* harmony import */ var lodash_cloneDeep__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(334);
 /* harmony import */ var lodash_cloneDeep__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_cloneDeep__WEBPACK_IMPORTED_MODULE_3__);
-/* harmony import */ var lodash_findKey__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(382);
+/* harmony import */ var lodash_findKey__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(380);
 /* harmony import */ var lodash_findKey__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_findKey__WEBPACK_IMPORTED_MODULE_4__);
 /* harmony import */ var lodash_mapValues__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(182);
 /* harmony import */ var lodash_mapValues__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_mapValues__WEBPACK_IMPORTED_MODULE_5__);
@@ -109180,7 +109198,7 @@ module.exports = isNumber;
 
 "use strict";
 __webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(385);
+/* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(383);
 /* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_cozy_minilog__WEBPACK_IMPORTED_MODULE_0__);
 
 var inBrowser = typeof window !== 'undefined';
@@ -109768,7 +109786,7 @@ const sortBy = __webpack_require__(635)
 const get = __webpack_require__(283)
 const { parallelMap } = __webpack_require__(1135)
 const CozyClient = __webpack_require__(163).default
-const Q = __webpack_require__(381).Q
+const Q = __webpack_require__(379).Q
 const log = __webpack_require__(1137).namespace('Document')
 const querystring = __webpack_require__(1151)
 
diff --git a/services/fluidsPrices/ecolyo.js b/services/fluidsPrices/ecolyo.js
index 2771ad5d44afa68843235707e8b6eaaaecd8adf8..5b573e09ad1e33b0dca87c759344342ca8605dca 100644
--- a/services/fluidsPrices/ecolyo.js
+++ b/services/fluidsPrices/ecolyo.js
@@ -44501,7 +44501,7 @@ var _StackLink = _interopRequireDefault(__webpack_require__(504));
 
 var _flow = _interopRequireDefault(__webpack_require__(586));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _associations = __webpack_require__(509);
 
@@ -44689,7 +44689,7 @@ var _helpers = __webpack_require__(546);
 
 var _helpers2 = __webpack_require__(547);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _mobile = __webpack_require__(550);
 
@@ -44707,7 +44707,7 @@ var _ObservableQuery = _interopRequireDefault(__webpack_require__(577));
 
 var _snapshots = __webpack_require__(578);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 var _queries = __webpack_require__(521);
 
@@ -57825,9 +57825,9 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(170));
 
-var _store = _interopRequireDefault(__webpack_require__(379));
+var _dsl = __webpack_require__(379);
 
-var _dsl = __webpack_require__(381);
+var _store = _interopRequireDefault(__webpack_require__(403));
 
 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; } } }; }
 
@@ -57838,16 +57838,18 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
 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 flag = function flag() {
-  var args = [].slice.call(arguments);
-
-  if (args.length === 1) {
-    return store.get(args[0]);
+var flag = function flag(key, value) {
+  if (arguments.length === 1) {
+    return store.get(key);
   } else {
-    store.set(args[0], args[1]);
-    return args[1];
+    store.set(key, value);
+    return value;
   }
 };
 /** List all flags from the store */
@@ -57920,7 +57922,7 @@ var enable = function enable(flagsToEnable) {
  *
  * @private
  * @see  https://docs.cozy.io/en/cozy-stack/settings/#get-settingsflags
- * @param  {CozyClient} client
+ * @param  {import('cozy-client/types/CozyClient').default} client
  */
 
 
@@ -57935,7 +57937,7 @@ var initializeFromRemote = /*#__PURE__*/function () {
         switch (_context.prev = _context.next) {
           case 0:
             _context.next = 2;
-            return client.query((0, _dsl.Q)('io.cozy.settings').getById('flags'));
+            return client.query((0, _dsl.Q)('io.cozy.settings').getById('io.cozy.settings.flags'));
 
           case 2:
             _yield$client$query = _context.sent;
@@ -58040,7 +58042,7 @@ var initializeFromDOM = /*#__PURE__*/function () {
  * <div data-flags="{{ .Flags }}"></div>
  * ````
  *
- * @param  {CozyClient} client - A CozyClient
+ * @param  {import('cozy-client/types/CozyClient').default} client - A CozyClient
  * @return {Promise} Resolves when flags have been initialized
  */
 
@@ -58216,237 +58218,6 @@ exports.default = _default;
 "use strict";
 
 
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _slicedToArray2 = _interopRequireDefault(__webpack_require__(170));
-
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
-
-var _createClass2 = _interopRequireDefault(__webpack_require__(181));
-
-var _microee = _interopRequireDefault(__webpack_require__(331));
-
-var _lsAdapter = _interopRequireDefault(__webpack_require__(380));
-
-/**
- * In memory key value storage.
- *
- * 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 = {};
-
-    if (typeof localStorage !== 'undefined') {
-      this.longtermStore = _lsAdapter.default;
-    }
-
-    this.restore();
-  }
-
-  (0, _createClass2.default)(FlagStore, [{
-    key: "restore",
-    value: function restore() {
-      if (!this.longtermStore) {
-        return;
-      }
-
-      var allValues = this.longtermStore.getAll();
-
-      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];
-
-        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)) {
-        this.store[name] = null;
-      }
-
-      return this.store[name];
-    }
-  }, {
-    key: "set",
-    value: function set(name, value) {
-      if (this.longtermStore) {
-        this.longtermStore.setItem(name, value);
-      }
-
-      this.store[name] = value;
-      this.emit('change', name);
-    }
-  }, {
-    key: "remove",
-    value: function remove(name) {
-      delete this.store[name];
-
-      if (this.longtermStore) {
-        this.longtermStore.removeItem(name);
-      }
-
-      this.emit('change', name);
-    }
-  }]);
-  return FlagStore;
-}();
-
-_microee.default.mixin(FlagStore);
-
-var _default = FlagStore;
-exports.default = _default;
-
-/***/ }),
-/* 380 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.prefix = exports.getKey = exports.default = 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; } } }; }
-
-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; }
-
-// eslint-disable-next-line no-redeclare
-
-/* global localStorage */
-var prefix = 'flag__';
-exports.prefix = prefix;
-
-var getKey = function getKey(name) {
-  return prefix + name;
-};
-
-exports.getKey = getKey;
-
-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 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 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 removeItem = function removeItem(flag) {
-  return localStorage.removeItem(getKey(flag));
-};
-/**
- * Returns all stored flags as an object
- */
-
-
-var getAll = function getAll() {
-  var res = {};
-
-  var _iterator = _createForOfIteratorHelper(listFlagLocalStorage()),
-      _step;
-
-  try {
-    for (_iterator.s(); !(_step = _iterator.n()).done;) {
-      var flag = _step.value;
-      res[flag] = getItem(flag);
-    }
-  } catch (err) {
-    _iterator.e(err);
-  } finally {
-    _iterator.f();
-  }
-
-  return res;
-};
-/**
- * Clears all the flags from localstorage
- */
-
-
-var clearAll = function clearAll() {
-  var _iterator2 = _createForOfIteratorHelper(listFlagLocalStorage()),
-      _step2;
-
-  try {
-    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
-      var flag = _step2.value;
-      removeItem(flag);
-    }
-  } catch (err) {
-    _iterator2.e(err);
-  } finally {
-    _iterator2.f();
-  }
-};
-
-var _default = {
-  getAll: getAll,
-  getItem: getItem,
-  setItem: setItem,
-  clearAll: clearAll,
-  removeItem: removeItem
-};
-exports.default = _default;
-
-/***/ }),
-/* 381 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
 var _interopRequireDefault = __webpack_require__(1);
 
 Object.defineProperty(exports, "__esModule", {
@@ -58460,9 +58231,9 @@ var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__(181));
 
-var _findKey = _interopRequireDefault(__webpack_require__(382));
+var _findKey = _interopRequireDefault(__webpack_require__(380));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -59104,10 +58875,10 @@ var MutationTypes = {
 exports.MutationTypes = MutationTypes;
 
 /***/ }),
-/* 382 */
+/* 380 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseFindKey = __webpack_require__(383),
+var baseFindKey = __webpack_require__(381),
     baseForOwn = __webpack_require__(199),
     baseIteratee = __webpack_require__(222);
 
@@ -59154,7 +58925,7 @@ module.exports = findKey;
 
 
 /***/ }),
-/* 383 */
+/* 381 */
 /***/ (function(module, exports) {
 
 /**
@@ -59183,7 +58954,7 @@ module.exports = baseFindKey;
 
 
 /***/ }),
-/* 384 */
+/* 382 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -59196,7 +58967,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 
-var _minilog = _interopRequireDefault(__webpack_require__(385));
+var _minilog = _interopRequireDefault(__webpack_require__(383));
 
 var logger = (0, _minilog.default)('cozy-client');
 
@@ -59206,27 +58977,27 @@ var _default = logger;
 exports.default = _default;
 
 /***/ }),
-/* 385 */
+/* 383 */
 /***/ (function(module, exports, __webpack_require__) {
 
-module.exports = __webpack_require__(386);
+module.exports = __webpack_require__(384);
 
-var consoleLogger = __webpack_require__(389);
+var consoleLogger = __webpack_require__(387);
 
 // 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__(398).minilog;
+  consoleLogger = __webpack_require__(396).minilog;
 }
 
 // intercept the pipe method and transparently wrap the stringifier, if the
 // destination is a Node core stream
 
-module.exports.Stringifier = __webpack_require__(402);
+module.exports.Stringifier = __webpack_require__(400);
 
 var oldPipe = module.exports.pipe;
 module.exports.pipe = function(dest) {
-  if(dest instanceof __webpack_require__(403)) {
+  if(dest instanceof __webpack_require__(401)) {
     return oldPipe.call(module.exports, new (module.exports.Stringifier)).pipe(dest);
   } else {
     return oldPipe.call(module.exports, dest);
@@ -59237,18 +59008,18 @@ module.exports.defaultBackend = consoleLogger;
 module.exports.defaultFormatter = consoleLogger.formatMinilog;
 
 module.exports.backends = {
-  redis: __webpack_require__(404),
+  redis: __webpack_require__(402),
   nodeConsole: consoleLogger,
   console: consoleLogger
 };
 
 
 /***/ }),
-/* 386 */
+/* 384 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    Filter = __webpack_require__(388);
+var Transform = __webpack_require__(385),
+    Filter = __webpack_require__(386);
 
 var log = new Transform(),
     slice = Array.prototype.slice;
@@ -59297,7 +59068,7 @@ exports.enable = function() {
 
 
 /***/ }),
-/* 387 */
+/* 385 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var microee = __webpack_require__(331);
@@ -59375,11 +59146,11 @@ module.exports = Transform;
 
 
 /***/ }),
-/* 388 */
+/* 386 */
 /***/ (function(module, exports, __webpack_require__) {
 
 // default filter
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 var levelMap = { debug: 1, info: 2, warn: 3, error: 4 };
 
@@ -59437,10 +59208,10 @@ module.exports = Filter;
 
 
 /***/ }),
-/* 389 */
+/* 387 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function ConsoleBackend() { }
 
@@ -59452,12 +59223,12 @@ ConsoleBackend.prototype.write = function() {
 
 var e = new ConsoleBackend();
 
-var levelMap = __webpack_require__(390).levelMap;
+var levelMap = __webpack_require__(388).levelMap;
 
 e.filterEnv = function() {
   console.error('Minilog.backends.console.filterEnv is deprecated in Minilog v2.');
   // return the instance of Minilog
-  return __webpack_require__(386);
+  return __webpack_require__(384);
 };
 
 e.formatters = [
@@ -59465,19 +59236,19 @@ e.formatters = [
     'formatLearnboost', 'formatMinilog', 'formatWithStack', 'formatTime'
 ];
 
-e.formatClean = new (__webpack_require__(391));
-e.formatColor = new (__webpack_require__(392));
-e.formatNpm = new (__webpack_require__(393));
-e.formatLearnboost = new (__webpack_require__(394));
-e.formatMinilog = new (__webpack_require__(395));
-e.formatWithStack = new (__webpack_require__(396));
-e.formatTime = new (__webpack_require__(397));
+e.formatClean = new (__webpack_require__(389));
+e.formatColor = new (__webpack_require__(390));
+e.formatNpm = new (__webpack_require__(391));
+e.formatLearnboost = new (__webpack_require__(392));
+e.formatMinilog = new (__webpack_require__(393));
+e.formatWithStack = new (__webpack_require__(394));
+e.formatTime = new (__webpack_require__(395));
 
 module.exports = e;
 
 
 /***/ }),
-/* 390 */
+/* 388 */
 /***/ (function(module, exports) {
 
 var styles = {
@@ -59507,10 +59278,10 @@ exports.style = function(str, style) {
 
 
 /***/ }),
-/* 391 */
+/* 389 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function FormatClean() {}
 
@@ -59525,11 +59296,11 @@ module.exports = FormatClean;
 
 
 /***/ }),
-/* 392 */
+/* 390 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style;
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style;
 
 function FormatColor() {}
 
@@ -59547,10 +59318,10 @@ module.exports = FormatColor;
 
 
 /***/ }),
-/* 393 */
+/* 391 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function FormatNpm() {}
 
@@ -59575,11 +59346,11 @@ module.exports = FormatNpm;
 
 
 /***/ }),
-/* 394 */
+/* 392 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style;
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style;
 
 function FormatLearnboost() {}
 
@@ -59596,11 +59367,11 @@ module.exports = FormatLearnboost;
 
 
 /***/ }),
-/* 395 */
+/* 393 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style,
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style,
     util = __webpack_require__(102);
 
 function FormatMinilog() {}
@@ -59620,11 +59391,11 @@ module.exports = FormatMinilog;
 
 
 /***/ }),
-/* 396 */
+/* 394 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style;
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style;
 
 function FormatNpm() {}
 
@@ -59678,11 +59449,11 @@ module.exports = FormatNpm;
 
 
 /***/ }),
-/* 397 */
+/* 395 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style,
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style,
     util = __webpack_require__(102);
 
 function FormatTime() {}
@@ -59714,10 +59485,10 @@ module.exports = FormatTime;
 
 
 /***/ }),
-/* 398 */
+/* 396 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 var newlines = /\n+$/,
     logger = new Transform();
@@ -59745,18 +59516,18 @@ logger.write = function(name, level, args) {
 };
 
 logger.formatters = ['color', 'minilog'];
-logger.color = __webpack_require__(399);
-logger.minilog = __webpack_require__(401);
+logger.color = __webpack_require__(397);
+logger.minilog = __webpack_require__(399);
 
 module.exports = logger;
 
 
 /***/ }),
-/* 399 */
+/* 397 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    color = __webpack_require__(400);
+var Transform = __webpack_require__(385),
+    color = __webpack_require__(398);
 
 var colors = { debug: ['cyan'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },
     logger = new Transform();
@@ -59776,7 +59547,7 @@ module.exports = logger;
 
 
 /***/ }),
-/* 400 */
+/* 398 */
 /***/ (function(module, exports) {
 
 var hex = {
@@ -59802,11 +59573,11 @@ module.exports = color;
 
 
 /***/ }),
-/* 401 */
+/* 399 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    color = __webpack_require__(400),
+var Transform = __webpack_require__(385),
+    color = __webpack_require__(398),
     colors = { debug: ['gray'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },
     logger = new Transform();
 
@@ -59834,10 +59605,10 @@ module.exports = logger;
 
 
 /***/ }),
-/* 402 */
+/* 400 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function Stringify() {}
 
@@ -59872,13 +59643,13 @@ module.exports = Stringify;
 
 
 /***/ }),
-/* 403 */
+/* 401 */
 /***/ (function(module, exports) {
 
 module.exports = require("stream");
 
 /***/ }),
-/* 404 */
+/* 402 */
 /***/ (function(module, exports) {
 
 function RedisBackend(options) {
@@ -59899,6 +59670,253 @@ RedisBackend.prototype.clear = function(cb) {
 module.exports = RedisBackend;
 
 
+/***/ }),
+/* 403 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _interopRequireDefault = __webpack_require__(1);
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+
+var _slicedToArray2 = _interopRequireDefault(__webpack_require__(170));
+
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
+
+var _createClass2 = _interopRequireDefault(__webpack_require__(181));
+
+var _microee = _interopRequireDefault(__webpack_require__(331));
+
+var _lsAdapter = _interopRequireDefault(__webpack_require__(404));
+
+/**
+ * In memory key value storage.
+ *
+ * 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 = {};
+
+    if (typeof localStorage !== 'undefined') {
+      this.longtermStore = _lsAdapter.default;
+    }
+
+    this.restore();
+  }
+
+  (0, _createClass2.default)(FlagStore, [{
+    key: "restore",
+    value: function restore() {
+      if (!this.longtermStore) {
+        return;
+      }
+
+      var allValues = this.longtermStore.getAll();
+
+      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];
+
+        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;
+
+        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: "set",
+    value: function set(name, value) {
+      if (this.longtermStore) {
+        this.longtermStore.setItem(name, value);
+      }
+
+      this.store[name] = value;
+      this.emit('change', name);
+    }
+  }, {
+    key: "remove",
+    value: function remove(name) {
+      delete this.store[name];
+
+      if (this.longtermStore) {
+        this.longtermStore.removeItem(name);
+      }
+
+      this.emit('change', name);
+    }
+  }]);
+  return FlagStore;
+}();
+
+_microee.default.mixin(FlagStore);
+
+var _default = FlagStore;
+exports.default = _default;
+
+/***/ }),
+/* 404 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.prefix = exports.getKey = exports.default = 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; } } }; }
+
+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; }
+
+// eslint-disable-next-line no-redeclare
+
+/* global localStorage */
+var prefix = 'flag__';
+exports.prefix = prefix;
+
+var getKey = function getKey(name) {
+  return prefix + name;
+};
+
+exports.getKey = getKey;
+
+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 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 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 removeItem = function removeItem(flag) {
+  return localStorage.removeItem(getKey(flag));
+};
+/**
+ * Returns all stored flags as an object
+ */
+
+
+var getAll = function getAll() {
+  var res = {};
+
+  var _iterator = _createForOfIteratorHelper(listFlagLocalStorage()),
+      _step;
+
+  try {
+    for (_iterator.s(); !(_step = _iterator.n()).done;) {
+      var flag = _step.value;
+      res[flag] = getItem(flag);
+    }
+  } catch (err) {
+    _iterator.e(err);
+  } finally {
+    _iterator.f();
+  }
+
+  return res;
+};
+/**
+ * Clears all the flags from localstorage
+ */
+
+
+var clearAll = function clearAll() {
+  var _iterator2 = _createForOfIteratorHelper(listFlagLocalStorage()),
+      _step2;
+
+  try {
+    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
+      var flag = _step2.value;
+      removeItem(flag);
+    }
+  } catch (err) {
+    _iterator2.e(err);
+  } finally {
+    _iterator2.f();
+  }
+};
+
+var _default = {
+  getAll: getAll,
+  getItem: getItem,
+  setItem: setItem,
+  clearAll: clearAll,
+  removeItem: removeItem
+};
+exports.default = _default;
+
 /***/ }),
 /* 405 */
 /***/ (function(module, exports, __webpack_require__) {
@@ -64129,7 +64147,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 
-var _minilog = _interopRequireDefault(__webpack_require__(385));
+var _minilog = _interopRequireDefault(__webpack_require__(383));
 
 var logger = (0, _minilog.default)('cozy-stack-client');
 
@@ -73432,7 +73450,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(159));
 
 var _zipWith = _interopRequireDefault(__webpack_require__(505));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _CozyLink2 = _interopRequireDefault(__webpack_require__(507));
 
@@ -73440,7 +73458,7 @@ var _const = __webpack_require__(503);
 
 var _errors = __webpack_require__(508);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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); }; }
 
@@ -74071,7 +74089,7 @@ var _omit = _interopRequireDefault(__webpack_require__(407));
 
 var _uniq = _interopRequireDefault(__webpack_require__(406));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _store = __webpack_require__(511);
 
@@ -75422,11 +75440,11 @@ var _omit = _interopRequireDefault(__webpack_require__(407));
 
 var _merge = _interopRequireDefault(__webpack_require__(416));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 var _queries = __webpack_require__(521);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _mutations = __webpack_require__(537);
 
@@ -75783,9 +75801,9 @@ var _mutations = __webpack_require__(537);
 
 var _helpers = __webpack_require__(538);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -77810,7 +77828,7 @@ var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__(181));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 /**
  * Associations are used by components to access related store documents that are
@@ -78099,13 +78117,13 @@ var _get = _interopRequireDefault(__webpack_require__(283));
 
 var _merge = _interopRequireDefault(__webpack_require__(416));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _store = __webpack_require__(511);
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -78576,11 +78594,11 @@ var _get2 = _interopRequireDefault(__webpack_require__(283));
 
 var _set = _interopRequireDefault(__webpack_require__(542));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -78778,7 +78796,7 @@ var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(368));
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 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; }
 
@@ -78865,7 +78883,7 @@ var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(366
 
 var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(368));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
@@ -79038,7 +79056,7 @@ var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(368));
 
 var _HasMany2 = _interopRequireDefault(__webpack_require__(540));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 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); }; }
 
@@ -81180,7 +81198,7 @@ var _uniq = _interopRequireDefault(__webpack_require__(406));
 
 var _uniqWith = _interopRequireDefault(__webpack_require__(569));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var isIdQuery = function isIdQuery(query) {
   return query.id || query.ids;
@@ -83465,7 +83483,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.hasQueryBeenLoaded = exports.isQueryLoading = exports.cancelable = void 0;
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 /**
  * @typedef {Promise} CancelablePromise
@@ -83550,7 +83568,7 @@ var _flow2 = _interopRequireDefault(__webpack_require__(586));
 
 var _cloneDeep2 = _interopRequireDefault(__webpack_require__(334));
 
-var _findKey = _interopRequireDefault(__webpack_require__(382));
+var _findKey = _interopRequireDefault(__webpack_require__(380));
 
 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; } } }; }
 
@@ -83797,7 +83815,7 @@ var _store = __webpack_require__(511);
 
 var _cozyStackClient = __webpack_require__(332);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 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; }
 
@@ -84545,7 +84563,7 @@ __webpack_require__.r(__webpack_exports__);
 /* 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__(403);
+/* harmony import */ var stream__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(401);
 /* harmony import */ var http__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(602);
 /* harmony import */ var url__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(611);
 /* harmony import */ var whatwg_url__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(612);
@@ -88548,7 +88566,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(159));
 
 var _account = __webpack_require__(626);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -88771,7 +88789,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(159));
 
 var _merge = _interopRequireDefault(__webpack_require__(416));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _HasMany = __webpack_require__(540);
 
@@ -88995,7 +89013,7 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
 var _get = _interopRequireDefault(__webpack_require__(283));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var FallbackQuota = 1e11;
 var GB = 1000 * 1000 * 1000;
@@ -89360,13 +89378,13 @@ var _trimEnd = _interopRequireDefault(__webpack_require__(630));
 
 var _qualification = __webpack_require__(632);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _const = __webpack_require__(503);
 
 var _CozyClient = _interopRequireDefault(__webpack_require__(163));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -90484,7 +90502,7 @@ var _lodash = __webpack_require__(133);
 
 var qualificationModel = _interopRequireWildcard(__webpack_require__(633));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -91019,7 +91037,7 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
 var _helpers = __webpack_require__(547);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 /**
  *
@@ -91152,13 +91170,13 @@ var _get = _interopRequireDefault(__webpack_require__(283));
 
 var _CozyClient = _interopRequireDefault(__webpack_require__(163));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _file = __webpack_require__(629);
 
 var _const = __webpack_require__(503);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -91604,7 +91622,7 @@ var _get = _interopRequireDefault(__webpack_require__(283));
 
 var _isEmpty = _interopRequireDefault(__webpack_require__(640));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 var CONTACTS_DOCTYPE = 'io.cozy.contacts';
 exports.CONTACTS_DOCTYPE = CONTACTS_DOCTYPE;
@@ -94912,7 +94930,7 @@ var _regenerator = _interopRequireDefault(__webpack_require__(177));
 
 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var validateTimeSeriesFormat = function validateTimeSeriesFormat(timeseries) {
   if (!timeseries.startDate || !timeseries.endDate) {
@@ -96131,7 +96149,7 @@ var _regenerator = _interopRequireDefault(__webpack_require__(177));
 
 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 /**
  * Checks the value of the extension_installed attribute
@@ -100133,7 +100151,7 @@ exports.default = QueryRunner;
 
 "use strict";
 __webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(385);
+/* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(383);
 /* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_cozy_minilog__WEBPACK_IMPORTED_MODULE_0__);
 
 
diff --git a/services/monthlyReportNotification/ecolyo.js b/services/monthlyReportNotification/ecolyo.js
index 107434b07d8020c02202865e12060da080b60a52..fc638531ddf1ab9d8f9aa9b927e761148ec7e72b 100644
--- a/services/monthlyReportNotification/ecolyo.js
+++ b/services/monthlyReportNotification/ecolyo.js
@@ -44501,7 +44501,7 @@ var _StackLink = _interopRequireDefault(__webpack_require__(504));
 
 var _flow = _interopRequireDefault(__webpack_require__(586));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _associations = __webpack_require__(509);
 
@@ -44689,7 +44689,7 @@ var _helpers = __webpack_require__(546);
 
 var _helpers2 = __webpack_require__(547);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _mobile = __webpack_require__(550);
 
@@ -44707,7 +44707,7 @@ var _ObservableQuery = _interopRequireDefault(__webpack_require__(577));
 
 var _snapshots = __webpack_require__(578);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 var _queries = __webpack_require__(521);
 
@@ -57825,9 +57825,9 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(170));
 
-var _store = _interopRequireDefault(__webpack_require__(379));
+var _dsl = __webpack_require__(379);
 
-var _dsl = __webpack_require__(381);
+var _store = _interopRequireDefault(__webpack_require__(403));
 
 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; } } }; }
 
@@ -57838,16 +57838,18 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
 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 flag = function flag() {
-  var args = [].slice.call(arguments);
-
-  if (args.length === 1) {
-    return store.get(args[0]);
+var flag = function flag(key, value) {
+  if (arguments.length === 1) {
+    return store.get(key);
   } else {
-    store.set(args[0], args[1]);
-    return args[1];
+    store.set(key, value);
+    return value;
   }
 };
 /** List all flags from the store */
@@ -57920,7 +57922,7 @@ var enable = function enable(flagsToEnable) {
  *
  * @private
  * @see  https://docs.cozy.io/en/cozy-stack/settings/#get-settingsflags
- * @param  {CozyClient} client
+ * @param  {import('cozy-client/types/CozyClient').default} client
  */
 
 
@@ -57935,7 +57937,7 @@ var initializeFromRemote = /*#__PURE__*/function () {
         switch (_context.prev = _context.next) {
           case 0:
             _context.next = 2;
-            return client.query((0, _dsl.Q)('io.cozy.settings').getById('flags'));
+            return client.query((0, _dsl.Q)('io.cozy.settings').getById('io.cozy.settings.flags'));
 
           case 2:
             _yield$client$query = _context.sent;
@@ -58040,7 +58042,7 @@ var initializeFromDOM = /*#__PURE__*/function () {
  * <div data-flags="{{ .Flags }}"></div>
  * ````
  *
- * @param  {CozyClient} client - A CozyClient
+ * @param  {import('cozy-client/types/CozyClient').default} client - A CozyClient
  * @return {Promise} Resolves when flags have been initialized
  */
 
@@ -58216,237 +58218,6 @@ exports.default = _default;
 "use strict";
 
 
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _slicedToArray2 = _interopRequireDefault(__webpack_require__(170));
-
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
-
-var _createClass2 = _interopRequireDefault(__webpack_require__(181));
-
-var _microee = _interopRequireDefault(__webpack_require__(331));
-
-var _lsAdapter = _interopRequireDefault(__webpack_require__(380));
-
-/**
- * In memory key value storage.
- *
- * 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 = {};
-
-    if (typeof localStorage !== 'undefined') {
-      this.longtermStore = _lsAdapter.default;
-    }
-
-    this.restore();
-  }
-
-  (0, _createClass2.default)(FlagStore, [{
-    key: "restore",
-    value: function restore() {
-      if (!this.longtermStore) {
-        return;
-      }
-
-      var allValues = this.longtermStore.getAll();
-
-      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];
-
-        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)) {
-        this.store[name] = null;
-      }
-
-      return this.store[name];
-    }
-  }, {
-    key: "set",
-    value: function set(name, value) {
-      if (this.longtermStore) {
-        this.longtermStore.setItem(name, value);
-      }
-
-      this.store[name] = value;
-      this.emit('change', name);
-    }
-  }, {
-    key: "remove",
-    value: function remove(name) {
-      delete this.store[name];
-
-      if (this.longtermStore) {
-        this.longtermStore.removeItem(name);
-      }
-
-      this.emit('change', name);
-    }
-  }]);
-  return FlagStore;
-}();
-
-_microee.default.mixin(FlagStore);
-
-var _default = FlagStore;
-exports.default = _default;
-
-/***/ }),
-/* 380 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.prefix = exports.getKey = exports.default = 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; } } }; }
-
-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; }
-
-// eslint-disable-next-line no-redeclare
-
-/* global localStorage */
-var prefix = 'flag__';
-exports.prefix = prefix;
-
-var getKey = function getKey(name) {
-  return prefix + name;
-};
-
-exports.getKey = getKey;
-
-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 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 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 removeItem = function removeItem(flag) {
-  return localStorage.removeItem(getKey(flag));
-};
-/**
- * Returns all stored flags as an object
- */
-
-
-var getAll = function getAll() {
-  var res = {};
-
-  var _iterator = _createForOfIteratorHelper(listFlagLocalStorage()),
-      _step;
-
-  try {
-    for (_iterator.s(); !(_step = _iterator.n()).done;) {
-      var flag = _step.value;
-      res[flag] = getItem(flag);
-    }
-  } catch (err) {
-    _iterator.e(err);
-  } finally {
-    _iterator.f();
-  }
-
-  return res;
-};
-/**
- * Clears all the flags from localstorage
- */
-
-
-var clearAll = function clearAll() {
-  var _iterator2 = _createForOfIteratorHelper(listFlagLocalStorage()),
-      _step2;
-
-  try {
-    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
-      var flag = _step2.value;
-      removeItem(flag);
-    }
-  } catch (err) {
-    _iterator2.e(err);
-  } finally {
-    _iterator2.f();
-  }
-};
-
-var _default = {
-  getAll: getAll,
-  getItem: getItem,
-  setItem: setItem,
-  clearAll: clearAll,
-  removeItem: removeItem
-};
-exports.default = _default;
-
-/***/ }),
-/* 381 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
 var _interopRequireDefault = __webpack_require__(1);
 
 Object.defineProperty(exports, "__esModule", {
@@ -58460,9 +58231,9 @@ var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__(181));
 
-var _findKey = _interopRequireDefault(__webpack_require__(382));
+var _findKey = _interopRequireDefault(__webpack_require__(380));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -59104,10 +58875,10 @@ var MutationTypes = {
 exports.MutationTypes = MutationTypes;
 
 /***/ }),
-/* 382 */
+/* 380 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseFindKey = __webpack_require__(383),
+var baseFindKey = __webpack_require__(381),
     baseForOwn = __webpack_require__(199),
     baseIteratee = __webpack_require__(222);
 
@@ -59154,7 +58925,7 @@ module.exports = findKey;
 
 
 /***/ }),
-/* 383 */
+/* 381 */
 /***/ (function(module, exports) {
 
 /**
@@ -59183,7 +58954,7 @@ module.exports = baseFindKey;
 
 
 /***/ }),
-/* 384 */
+/* 382 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -59196,7 +58967,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 
-var _minilog = _interopRequireDefault(__webpack_require__(385));
+var _minilog = _interopRequireDefault(__webpack_require__(383));
 
 var logger = (0, _minilog.default)('cozy-client');
 
@@ -59206,27 +58977,27 @@ var _default = logger;
 exports.default = _default;
 
 /***/ }),
-/* 385 */
+/* 383 */
 /***/ (function(module, exports, __webpack_require__) {
 
-module.exports = __webpack_require__(386);
+module.exports = __webpack_require__(384);
 
-var consoleLogger = __webpack_require__(389);
+var consoleLogger = __webpack_require__(387);
 
 // 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__(398).minilog;
+  consoleLogger = __webpack_require__(396).minilog;
 }
 
 // intercept the pipe method and transparently wrap the stringifier, if the
 // destination is a Node core stream
 
-module.exports.Stringifier = __webpack_require__(402);
+module.exports.Stringifier = __webpack_require__(400);
 
 var oldPipe = module.exports.pipe;
 module.exports.pipe = function(dest) {
-  if(dest instanceof __webpack_require__(403)) {
+  if(dest instanceof __webpack_require__(401)) {
     return oldPipe.call(module.exports, new (module.exports.Stringifier)).pipe(dest);
   } else {
     return oldPipe.call(module.exports, dest);
@@ -59237,18 +59008,18 @@ module.exports.defaultBackend = consoleLogger;
 module.exports.defaultFormatter = consoleLogger.formatMinilog;
 
 module.exports.backends = {
-  redis: __webpack_require__(404),
+  redis: __webpack_require__(402),
   nodeConsole: consoleLogger,
   console: consoleLogger
 };
 
 
 /***/ }),
-/* 386 */
+/* 384 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    Filter = __webpack_require__(388);
+var Transform = __webpack_require__(385),
+    Filter = __webpack_require__(386);
 
 var log = new Transform(),
     slice = Array.prototype.slice;
@@ -59297,7 +59068,7 @@ exports.enable = function() {
 
 
 /***/ }),
-/* 387 */
+/* 385 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var microee = __webpack_require__(331);
@@ -59375,11 +59146,11 @@ module.exports = Transform;
 
 
 /***/ }),
-/* 388 */
+/* 386 */
 /***/ (function(module, exports, __webpack_require__) {
 
 // default filter
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 var levelMap = { debug: 1, info: 2, warn: 3, error: 4 };
 
@@ -59437,10 +59208,10 @@ module.exports = Filter;
 
 
 /***/ }),
-/* 389 */
+/* 387 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function ConsoleBackend() { }
 
@@ -59452,12 +59223,12 @@ ConsoleBackend.prototype.write = function() {
 
 var e = new ConsoleBackend();
 
-var levelMap = __webpack_require__(390).levelMap;
+var levelMap = __webpack_require__(388).levelMap;
 
 e.filterEnv = function() {
   console.error('Minilog.backends.console.filterEnv is deprecated in Minilog v2.');
   // return the instance of Minilog
-  return __webpack_require__(386);
+  return __webpack_require__(384);
 };
 
 e.formatters = [
@@ -59465,19 +59236,19 @@ e.formatters = [
     'formatLearnboost', 'formatMinilog', 'formatWithStack', 'formatTime'
 ];
 
-e.formatClean = new (__webpack_require__(391));
-e.formatColor = new (__webpack_require__(392));
-e.formatNpm = new (__webpack_require__(393));
-e.formatLearnboost = new (__webpack_require__(394));
-e.formatMinilog = new (__webpack_require__(395));
-e.formatWithStack = new (__webpack_require__(396));
-e.formatTime = new (__webpack_require__(397));
+e.formatClean = new (__webpack_require__(389));
+e.formatColor = new (__webpack_require__(390));
+e.formatNpm = new (__webpack_require__(391));
+e.formatLearnboost = new (__webpack_require__(392));
+e.formatMinilog = new (__webpack_require__(393));
+e.formatWithStack = new (__webpack_require__(394));
+e.formatTime = new (__webpack_require__(395));
 
 module.exports = e;
 
 
 /***/ }),
-/* 390 */
+/* 388 */
 /***/ (function(module, exports) {
 
 var styles = {
@@ -59507,10 +59278,10 @@ exports.style = function(str, style) {
 
 
 /***/ }),
-/* 391 */
+/* 389 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function FormatClean() {}
 
@@ -59525,11 +59296,11 @@ module.exports = FormatClean;
 
 
 /***/ }),
-/* 392 */
+/* 390 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style;
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style;
 
 function FormatColor() {}
 
@@ -59547,10 +59318,10 @@ module.exports = FormatColor;
 
 
 /***/ }),
-/* 393 */
+/* 391 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function FormatNpm() {}
 
@@ -59575,11 +59346,11 @@ module.exports = FormatNpm;
 
 
 /***/ }),
-/* 394 */
+/* 392 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style;
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style;
 
 function FormatLearnboost() {}
 
@@ -59596,11 +59367,11 @@ module.exports = FormatLearnboost;
 
 
 /***/ }),
-/* 395 */
+/* 393 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style,
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style,
     util = __webpack_require__(102);
 
 function FormatMinilog() {}
@@ -59620,11 +59391,11 @@ module.exports = FormatMinilog;
 
 
 /***/ }),
-/* 396 */
+/* 394 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style;
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style;
 
 function FormatNpm() {}
 
@@ -59678,11 +59449,11 @@ module.exports = FormatNpm;
 
 
 /***/ }),
-/* 397 */
+/* 395 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style,
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style,
     util = __webpack_require__(102);
 
 function FormatTime() {}
@@ -59714,10 +59485,10 @@ module.exports = FormatTime;
 
 
 /***/ }),
-/* 398 */
+/* 396 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 var newlines = /\n+$/,
     logger = new Transform();
@@ -59745,18 +59516,18 @@ logger.write = function(name, level, args) {
 };
 
 logger.formatters = ['color', 'minilog'];
-logger.color = __webpack_require__(399);
-logger.minilog = __webpack_require__(401);
+logger.color = __webpack_require__(397);
+logger.minilog = __webpack_require__(399);
 
 module.exports = logger;
 
 
 /***/ }),
-/* 399 */
+/* 397 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    color = __webpack_require__(400);
+var Transform = __webpack_require__(385),
+    color = __webpack_require__(398);
 
 var colors = { debug: ['cyan'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },
     logger = new Transform();
@@ -59776,7 +59547,7 @@ module.exports = logger;
 
 
 /***/ }),
-/* 400 */
+/* 398 */
 /***/ (function(module, exports) {
 
 var hex = {
@@ -59802,11 +59573,11 @@ module.exports = color;
 
 
 /***/ }),
-/* 401 */
+/* 399 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    color = __webpack_require__(400),
+var Transform = __webpack_require__(385),
+    color = __webpack_require__(398),
     colors = { debug: ['gray'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },
     logger = new Transform();
 
@@ -59834,10 +59605,10 @@ module.exports = logger;
 
 
 /***/ }),
-/* 402 */
+/* 400 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function Stringify() {}
 
@@ -59872,13 +59643,13 @@ module.exports = Stringify;
 
 
 /***/ }),
-/* 403 */
+/* 401 */
 /***/ (function(module, exports) {
 
 module.exports = require("stream");
 
 /***/ }),
-/* 404 */
+/* 402 */
 /***/ (function(module, exports) {
 
 function RedisBackend(options) {
@@ -59899,6 +59670,253 @@ RedisBackend.prototype.clear = function(cb) {
 module.exports = RedisBackend;
 
 
+/***/ }),
+/* 403 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _interopRequireDefault = __webpack_require__(1);
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+
+var _slicedToArray2 = _interopRequireDefault(__webpack_require__(170));
+
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
+
+var _createClass2 = _interopRequireDefault(__webpack_require__(181));
+
+var _microee = _interopRequireDefault(__webpack_require__(331));
+
+var _lsAdapter = _interopRequireDefault(__webpack_require__(404));
+
+/**
+ * In memory key value storage.
+ *
+ * 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 = {};
+
+    if (typeof localStorage !== 'undefined') {
+      this.longtermStore = _lsAdapter.default;
+    }
+
+    this.restore();
+  }
+
+  (0, _createClass2.default)(FlagStore, [{
+    key: "restore",
+    value: function restore() {
+      if (!this.longtermStore) {
+        return;
+      }
+
+      var allValues = this.longtermStore.getAll();
+
+      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];
+
+        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;
+
+        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: "set",
+    value: function set(name, value) {
+      if (this.longtermStore) {
+        this.longtermStore.setItem(name, value);
+      }
+
+      this.store[name] = value;
+      this.emit('change', name);
+    }
+  }, {
+    key: "remove",
+    value: function remove(name) {
+      delete this.store[name];
+
+      if (this.longtermStore) {
+        this.longtermStore.removeItem(name);
+      }
+
+      this.emit('change', name);
+    }
+  }]);
+  return FlagStore;
+}();
+
+_microee.default.mixin(FlagStore);
+
+var _default = FlagStore;
+exports.default = _default;
+
+/***/ }),
+/* 404 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.prefix = exports.getKey = exports.default = 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; } } }; }
+
+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; }
+
+// eslint-disable-next-line no-redeclare
+
+/* global localStorage */
+var prefix = 'flag__';
+exports.prefix = prefix;
+
+var getKey = function getKey(name) {
+  return prefix + name;
+};
+
+exports.getKey = getKey;
+
+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 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 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 removeItem = function removeItem(flag) {
+  return localStorage.removeItem(getKey(flag));
+};
+/**
+ * Returns all stored flags as an object
+ */
+
+
+var getAll = function getAll() {
+  var res = {};
+
+  var _iterator = _createForOfIteratorHelper(listFlagLocalStorage()),
+      _step;
+
+  try {
+    for (_iterator.s(); !(_step = _iterator.n()).done;) {
+      var flag = _step.value;
+      res[flag] = getItem(flag);
+    }
+  } catch (err) {
+    _iterator.e(err);
+  } finally {
+    _iterator.f();
+  }
+
+  return res;
+};
+/**
+ * Clears all the flags from localstorage
+ */
+
+
+var clearAll = function clearAll() {
+  var _iterator2 = _createForOfIteratorHelper(listFlagLocalStorage()),
+      _step2;
+
+  try {
+    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
+      var flag = _step2.value;
+      removeItem(flag);
+    }
+  } catch (err) {
+    _iterator2.e(err);
+  } finally {
+    _iterator2.f();
+  }
+};
+
+var _default = {
+  getAll: getAll,
+  getItem: getItem,
+  setItem: setItem,
+  clearAll: clearAll,
+  removeItem: removeItem
+};
+exports.default = _default;
+
 /***/ }),
 /* 405 */
 /***/ (function(module, exports, __webpack_require__) {
@@ -64129,7 +64147,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 
-var _minilog = _interopRequireDefault(__webpack_require__(385));
+var _minilog = _interopRequireDefault(__webpack_require__(383));
 
 var logger = (0, _minilog.default)('cozy-stack-client');
 
@@ -73432,7 +73450,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(159));
 
 var _zipWith = _interopRequireDefault(__webpack_require__(505));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _CozyLink2 = _interopRequireDefault(__webpack_require__(507));
 
@@ -73440,7 +73458,7 @@ var _const = __webpack_require__(503);
 
 var _errors = __webpack_require__(508);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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); }; }
 
@@ -74071,7 +74089,7 @@ var _omit = _interopRequireDefault(__webpack_require__(407));
 
 var _uniq = _interopRequireDefault(__webpack_require__(406));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _store = __webpack_require__(511);
 
@@ -75422,11 +75440,11 @@ var _omit = _interopRequireDefault(__webpack_require__(407));
 
 var _merge = _interopRequireDefault(__webpack_require__(416));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 var _queries = __webpack_require__(521);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _mutations = __webpack_require__(537);
 
@@ -75783,9 +75801,9 @@ var _mutations = __webpack_require__(537);
 
 var _helpers = __webpack_require__(538);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -77810,7 +77828,7 @@ var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__(181));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 /**
  * Associations are used by components to access related store documents that are
@@ -78099,13 +78117,13 @@ var _get = _interopRequireDefault(__webpack_require__(283));
 
 var _merge = _interopRequireDefault(__webpack_require__(416));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _store = __webpack_require__(511);
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -78576,11 +78594,11 @@ var _get2 = _interopRequireDefault(__webpack_require__(283));
 
 var _set = _interopRequireDefault(__webpack_require__(542));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -78778,7 +78796,7 @@ var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(368));
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 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; }
 
@@ -78865,7 +78883,7 @@ var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(366
 
 var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(368));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
@@ -79038,7 +79056,7 @@ var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(368));
 
 var _HasMany2 = _interopRequireDefault(__webpack_require__(540));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 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); }; }
 
@@ -81180,7 +81198,7 @@ var _uniq = _interopRequireDefault(__webpack_require__(406));
 
 var _uniqWith = _interopRequireDefault(__webpack_require__(569));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var isIdQuery = function isIdQuery(query) {
   return query.id || query.ids;
@@ -83465,7 +83483,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.hasQueryBeenLoaded = exports.isQueryLoading = exports.cancelable = void 0;
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 /**
  * @typedef {Promise} CancelablePromise
@@ -83550,7 +83568,7 @@ var _flow2 = _interopRequireDefault(__webpack_require__(586));
 
 var _cloneDeep2 = _interopRequireDefault(__webpack_require__(334));
 
-var _findKey = _interopRequireDefault(__webpack_require__(382));
+var _findKey = _interopRequireDefault(__webpack_require__(380));
 
 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; } } }; }
 
@@ -83797,7 +83815,7 @@ var _store = __webpack_require__(511);
 
 var _cozyStackClient = __webpack_require__(332);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 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; }
 
@@ -84545,7 +84563,7 @@ __webpack_require__.r(__webpack_exports__);
 /* 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__(403);
+/* harmony import */ var stream__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(401);
 /* harmony import */ var http__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(602);
 /* harmony import */ var url__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(611);
 /* harmony import */ var whatwg_url__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(612);
@@ -88548,7 +88566,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(159));
 
 var _account = __webpack_require__(626);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -88771,7 +88789,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(159));
 
 var _merge = _interopRequireDefault(__webpack_require__(416));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _HasMany = __webpack_require__(540);
 
@@ -88995,7 +89013,7 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
 var _get = _interopRequireDefault(__webpack_require__(283));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var FallbackQuota = 1e11;
 var GB = 1000 * 1000 * 1000;
@@ -89360,13 +89378,13 @@ var _trimEnd = _interopRequireDefault(__webpack_require__(630));
 
 var _qualification = __webpack_require__(632);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _const = __webpack_require__(503);
 
 var _CozyClient = _interopRequireDefault(__webpack_require__(163));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -90484,7 +90502,7 @@ var _lodash = __webpack_require__(133);
 
 var qualificationModel = _interopRequireWildcard(__webpack_require__(633));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -91019,7 +91037,7 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
 var _helpers = __webpack_require__(547);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 /**
  *
@@ -91152,13 +91170,13 @@ var _get = _interopRequireDefault(__webpack_require__(283));
 
 var _CozyClient = _interopRequireDefault(__webpack_require__(163));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _file = __webpack_require__(629);
 
 var _const = __webpack_require__(503);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -91604,7 +91622,7 @@ var _get = _interopRequireDefault(__webpack_require__(283));
 
 var _isEmpty = _interopRequireDefault(__webpack_require__(640));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 var CONTACTS_DOCTYPE = 'io.cozy.contacts';
 exports.CONTACTS_DOCTYPE = CONTACTS_DOCTYPE;
@@ -94912,7 +94930,7 @@ var _regenerator = _interopRequireDefault(__webpack_require__(177));
 
 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var validateTimeSeriesFormat = function validateTimeSeriesFormat(timeseries) {
   if (!timeseries.startDate || !timeseries.endDate) {
@@ -96131,7 +96149,7 @@ var _regenerator = _interopRequireDefault(__webpack_require__(177));
 
 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 /**
  * Checks the value of the extension_installed attribute
@@ -100133,7 +100151,7 @@ exports.default = QueryRunner;
 
 "use strict";
 __webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(385);
+/* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(383);
 /* harmony import */ var _cozy_minilog__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_cozy_minilog__WEBPACK_IMPORTED_MODULE_0__);
 
 
@@ -108997,7 +109015,7 @@ var __extends = (this && this.__extends) || (function () {
 })();
 Object.defineProperty(exports, "__esModule", { value: true });
 var Parser_1 = __webpack_require__(1226);
-var stream_1 = __webpack_require__(403);
+var stream_1 = __webpack_require__(401);
 var string_decoder_1 = __webpack_require__(1254);
 // Following the example in https://nodejs.org/api/stream.html#stream_decoding_buffers_in_a_writable_stream
 function isBuffer(_chunk, encoding) {
diff --git a/services/service/ecolyo.js b/services/service/ecolyo.js
index c3ce0ec984267f7986c3dfef4b86b4f6a284d32f..538b45f4d59aab285124a90ff693f0c648e3a56e 100644
--- a/services/service/ecolyo.js
+++ b/services/service/ecolyo.js
@@ -19940,7 +19940,7 @@ var _StackLink = _interopRequireDefault(__webpack_require__(504));
 
 var _flow = _interopRequireDefault(__webpack_require__(586));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _associations = __webpack_require__(509);
 
@@ -20128,7 +20128,7 @@ var _helpers = __webpack_require__(546);
 
 var _helpers2 = __webpack_require__(547);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _mobile = __webpack_require__(550);
 
@@ -20146,7 +20146,7 @@ var _ObservableQuery = _interopRequireDefault(__webpack_require__(577));
 
 var _snapshots = __webpack_require__(578);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 var _queries = __webpack_require__(521);
 
@@ -33264,9 +33264,9 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(170));
 
-var _store = _interopRequireDefault(__webpack_require__(379));
+var _dsl = __webpack_require__(379);
 
-var _dsl = __webpack_require__(381);
+var _store = _interopRequireDefault(__webpack_require__(403));
 
 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; } } }; }
 
@@ -33277,16 +33277,18 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
 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 flag = function flag() {
-  var args = [].slice.call(arguments);
-
-  if (args.length === 1) {
-    return store.get(args[0]);
+var flag = function flag(key, value) {
+  if (arguments.length === 1) {
+    return store.get(key);
   } else {
-    store.set(args[0], args[1]);
-    return args[1];
+    store.set(key, value);
+    return value;
   }
 };
 /** List all flags from the store */
@@ -33359,7 +33361,7 @@ var enable = function enable(flagsToEnable) {
  *
  * @private
  * @see  https://docs.cozy.io/en/cozy-stack/settings/#get-settingsflags
- * @param  {CozyClient} client
+ * @param  {import('cozy-client/types/CozyClient').default} client
  */
 
 
@@ -33374,7 +33376,7 @@ var initializeFromRemote = /*#__PURE__*/function () {
         switch (_context.prev = _context.next) {
           case 0:
             _context.next = 2;
-            return client.query((0, _dsl.Q)('io.cozy.settings').getById('flags'));
+            return client.query((0, _dsl.Q)('io.cozy.settings').getById('io.cozy.settings.flags'));
 
           case 2:
             _yield$client$query = _context.sent;
@@ -33479,7 +33481,7 @@ var initializeFromDOM = /*#__PURE__*/function () {
  * <div data-flags="{{ .Flags }}"></div>
  * ````
  *
- * @param  {CozyClient} client - A CozyClient
+ * @param  {import('cozy-client/types/CozyClient').default} client - A CozyClient
  * @return {Promise} Resolves when flags have been initialized
  */
 
@@ -33655,237 +33657,6 @@ exports.default = _default;
 "use strict";
 
 
-var _interopRequireDefault = __webpack_require__(1);
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _slicedToArray2 = _interopRequireDefault(__webpack_require__(170));
-
-var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
-
-var _createClass2 = _interopRequireDefault(__webpack_require__(181));
-
-var _microee = _interopRequireDefault(__webpack_require__(331));
-
-var _lsAdapter = _interopRequireDefault(__webpack_require__(380));
-
-/**
- * In memory key value storage.
- *
- * 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 = {};
-
-    if (typeof localStorage !== 'undefined') {
-      this.longtermStore = _lsAdapter.default;
-    }
-
-    this.restore();
-  }
-
-  (0, _createClass2.default)(FlagStore, [{
-    key: "restore",
-    value: function restore() {
-      if (!this.longtermStore) {
-        return;
-      }
-
-      var allValues = this.longtermStore.getAll();
-
-      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];
-
-        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)) {
-        this.store[name] = null;
-      }
-
-      return this.store[name];
-    }
-  }, {
-    key: "set",
-    value: function set(name, value) {
-      if (this.longtermStore) {
-        this.longtermStore.setItem(name, value);
-      }
-
-      this.store[name] = value;
-      this.emit('change', name);
-    }
-  }, {
-    key: "remove",
-    value: function remove(name) {
-      delete this.store[name];
-
-      if (this.longtermStore) {
-        this.longtermStore.removeItem(name);
-      }
-
-      this.emit('change', name);
-    }
-  }]);
-  return FlagStore;
-}();
-
-_microee.default.mixin(FlagStore);
-
-var _default = FlagStore;
-exports.default = _default;
-
-/***/ }),
-/* 380 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.prefix = exports.getKey = exports.default = 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; } } }; }
-
-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; }
-
-// eslint-disable-next-line no-redeclare
-
-/* global localStorage */
-var prefix = 'flag__';
-exports.prefix = prefix;
-
-var getKey = function getKey(name) {
-  return prefix + name;
-};
-
-exports.getKey = getKey;
-
-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 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 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 removeItem = function removeItem(flag) {
-  return localStorage.removeItem(getKey(flag));
-};
-/**
- * Returns all stored flags as an object
- */
-
-
-var getAll = function getAll() {
-  var res = {};
-
-  var _iterator = _createForOfIteratorHelper(listFlagLocalStorage()),
-      _step;
-
-  try {
-    for (_iterator.s(); !(_step = _iterator.n()).done;) {
-      var flag = _step.value;
-      res[flag] = getItem(flag);
-    }
-  } catch (err) {
-    _iterator.e(err);
-  } finally {
-    _iterator.f();
-  }
-
-  return res;
-};
-/**
- * Clears all the flags from localstorage
- */
-
-
-var clearAll = function clearAll() {
-  var _iterator2 = _createForOfIteratorHelper(listFlagLocalStorage()),
-      _step2;
-
-  try {
-    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
-      var flag = _step2.value;
-      removeItem(flag);
-    }
-  } catch (err) {
-    _iterator2.e(err);
-  } finally {
-    _iterator2.f();
-  }
-};
-
-var _default = {
-  getAll: getAll,
-  getItem: getItem,
-  setItem: setItem,
-  clearAll: clearAll,
-  removeItem: removeItem
-};
-exports.default = _default;
-
-/***/ }),
-/* 381 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
 var _interopRequireDefault = __webpack_require__(1);
 
 Object.defineProperty(exports, "__esModule", {
@@ -33899,9 +33670,9 @@ var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__(181));
 
-var _findKey = _interopRequireDefault(__webpack_require__(382));
+var _findKey = _interopRequireDefault(__webpack_require__(380));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -34543,10 +34314,10 @@ var MutationTypes = {
 exports.MutationTypes = MutationTypes;
 
 /***/ }),
-/* 382 */
+/* 380 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseFindKey = __webpack_require__(383),
+var baseFindKey = __webpack_require__(381),
     baseForOwn = __webpack_require__(199),
     baseIteratee = __webpack_require__(222);
 
@@ -34593,7 +34364,7 @@ module.exports = findKey;
 
 
 /***/ }),
-/* 383 */
+/* 381 */
 /***/ (function(module, exports) {
 
 /**
@@ -34622,7 +34393,7 @@ module.exports = baseFindKey;
 
 
 /***/ }),
-/* 384 */
+/* 382 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -34635,7 +34406,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 
-var _minilog = _interopRequireDefault(__webpack_require__(385));
+var _minilog = _interopRequireDefault(__webpack_require__(383));
 
 var logger = (0, _minilog.default)('cozy-client');
 
@@ -34645,27 +34416,27 @@ var _default = logger;
 exports.default = _default;
 
 /***/ }),
-/* 385 */
+/* 383 */
 /***/ (function(module, exports, __webpack_require__) {
 
-module.exports = __webpack_require__(386);
+module.exports = __webpack_require__(384);
 
-var consoleLogger = __webpack_require__(389);
+var consoleLogger = __webpack_require__(387);
 
 // 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__(398).minilog;
+  consoleLogger = __webpack_require__(396).minilog;
 }
 
 // intercept the pipe method and transparently wrap the stringifier, if the
 // destination is a Node core stream
 
-module.exports.Stringifier = __webpack_require__(402);
+module.exports.Stringifier = __webpack_require__(400);
 
 var oldPipe = module.exports.pipe;
 module.exports.pipe = function(dest) {
-  if(dest instanceof __webpack_require__(403)) {
+  if(dest instanceof __webpack_require__(401)) {
     return oldPipe.call(module.exports, new (module.exports.Stringifier)).pipe(dest);
   } else {
     return oldPipe.call(module.exports, dest);
@@ -34676,18 +34447,18 @@ module.exports.defaultBackend = consoleLogger;
 module.exports.defaultFormatter = consoleLogger.formatMinilog;
 
 module.exports.backends = {
-  redis: __webpack_require__(404),
+  redis: __webpack_require__(402),
   nodeConsole: consoleLogger,
   console: consoleLogger
 };
 
 
 /***/ }),
-/* 386 */
+/* 384 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    Filter = __webpack_require__(388);
+var Transform = __webpack_require__(385),
+    Filter = __webpack_require__(386);
 
 var log = new Transform(),
     slice = Array.prototype.slice;
@@ -34736,7 +34507,7 @@ exports.enable = function() {
 
 
 /***/ }),
-/* 387 */
+/* 385 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var microee = __webpack_require__(331);
@@ -34814,11 +34585,11 @@ module.exports = Transform;
 
 
 /***/ }),
-/* 388 */
+/* 386 */
 /***/ (function(module, exports, __webpack_require__) {
 
 // default filter
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 var levelMap = { debug: 1, info: 2, warn: 3, error: 4 };
 
@@ -34876,10 +34647,10 @@ module.exports = Filter;
 
 
 /***/ }),
-/* 389 */
+/* 387 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function ConsoleBackend() { }
 
@@ -34891,12 +34662,12 @@ ConsoleBackend.prototype.write = function() {
 
 var e = new ConsoleBackend();
 
-var levelMap = __webpack_require__(390).levelMap;
+var levelMap = __webpack_require__(388).levelMap;
 
 e.filterEnv = function() {
   console.error('Minilog.backends.console.filterEnv is deprecated in Minilog v2.');
   // return the instance of Minilog
-  return __webpack_require__(386);
+  return __webpack_require__(384);
 };
 
 e.formatters = [
@@ -34904,19 +34675,19 @@ e.formatters = [
     'formatLearnboost', 'formatMinilog', 'formatWithStack', 'formatTime'
 ];
 
-e.formatClean = new (__webpack_require__(391));
-e.formatColor = new (__webpack_require__(392));
-e.formatNpm = new (__webpack_require__(393));
-e.formatLearnboost = new (__webpack_require__(394));
-e.formatMinilog = new (__webpack_require__(395));
-e.formatWithStack = new (__webpack_require__(396));
-e.formatTime = new (__webpack_require__(397));
+e.formatClean = new (__webpack_require__(389));
+e.formatColor = new (__webpack_require__(390));
+e.formatNpm = new (__webpack_require__(391));
+e.formatLearnboost = new (__webpack_require__(392));
+e.formatMinilog = new (__webpack_require__(393));
+e.formatWithStack = new (__webpack_require__(394));
+e.formatTime = new (__webpack_require__(395));
 
 module.exports = e;
 
 
 /***/ }),
-/* 390 */
+/* 388 */
 /***/ (function(module, exports) {
 
 var styles = {
@@ -34946,10 +34717,10 @@ exports.style = function(str, style) {
 
 
 /***/ }),
-/* 391 */
+/* 389 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function FormatClean() {}
 
@@ -34964,11 +34735,11 @@ module.exports = FormatClean;
 
 
 /***/ }),
-/* 392 */
+/* 390 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style;
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style;
 
 function FormatColor() {}
 
@@ -34986,10 +34757,10 @@ module.exports = FormatColor;
 
 
 /***/ }),
-/* 393 */
+/* 391 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function FormatNpm() {}
 
@@ -35014,11 +34785,11 @@ module.exports = FormatNpm;
 
 
 /***/ }),
-/* 394 */
+/* 392 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style;
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style;
 
 function FormatLearnboost() {}
 
@@ -35035,11 +34806,11 @@ module.exports = FormatLearnboost;
 
 
 /***/ }),
-/* 395 */
+/* 393 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style,
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style,
     util = __webpack_require__(102);
 
 function FormatMinilog() {}
@@ -35059,11 +34830,11 @@ module.exports = FormatMinilog;
 
 
 /***/ }),
-/* 396 */
+/* 394 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style;
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style;
 
 function FormatNpm() {}
 
@@ -35117,11 +34888,11 @@ module.exports = FormatNpm;
 
 
 /***/ }),
-/* 397 */
+/* 395 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    style = __webpack_require__(390).style,
+var Transform = __webpack_require__(385),
+    style = __webpack_require__(388).style,
     util = __webpack_require__(102);
 
 function FormatTime() {}
@@ -35153,10 +34924,10 @@ module.exports = FormatTime;
 
 
 /***/ }),
-/* 398 */
+/* 396 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 var newlines = /\n+$/,
     logger = new Transform();
@@ -35184,18 +34955,18 @@ logger.write = function(name, level, args) {
 };
 
 logger.formatters = ['color', 'minilog'];
-logger.color = __webpack_require__(399);
-logger.minilog = __webpack_require__(401);
+logger.color = __webpack_require__(397);
+logger.minilog = __webpack_require__(399);
 
 module.exports = logger;
 
 
 /***/ }),
-/* 399 */
+/* 397 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    color = __webpack_require__(400);
+var Transform = __webpack_require__(385),
+    color = __webpack_require__(398);
 
 var colors = { debug: ['cyan'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },
     logger = new Transform();
@@ -35215,7 +34986,7 @@ module.exports = logger;
 
 
 /***/ }),
-/* 400 */
+/* 398 */
 /***/ (function(module, exports) {
 
 var hex = {
@@ -35241,11 +35012,11 @@ module.exports = color;
 
 
 /***/ }),
-/* 401 */
+/* 399 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387),
-    color = __webpack_require__(400),
+var Transform = __webpack_require__(385),
+    color = __webpack_require__(398),
     colors = { debug: ['gray'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },
     logger = new Transform();
 
@@ -35273,10 +35044,10 @@ module.exports = logger;
 
 
 /***/ }),
-/* 402 */
+/* 400 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Transform = __webpack_require__(387);
+var Transform = __webpack_require__(385);
 
 function Stringify() {}
 
@@ -35311,13 +35082,13 @@ module.exports = Stringify;
 
 
 /***/ }),
-/* 403 */
+/* 401 */
 /***/ (function(module, exports) {
 
 module.exports = require("stream");
 
 /***/ }),
-/* 404 */
+/* 402 */
 /***/ (function(module, exports) {
 
 function RedisBackend(options) {
@@ -35338,6 +35109,253 @@ RedisBackend.prototype.clear = function(cb) {
 module.exports = RedisBackend;
 
 
+/***/ }),
+/* 403 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _interopRequireDefault = __webpack_require__(1);
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+
+var _slicedToArray2 = _interopRequireDefault(__webpack_require__(170));
+
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
+
+var _createClass2 = _interopRequireDefault(__webpack_require__(181));
+
+var _microee = _interopRequireDefault(__webpack_require__(331));
+
+var _lsAdapter = _interopRequireDefault(__webpack_require__(404));
+
+/**
+ * In memory key value storage.
+ *
+ * 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 = {};
+
+    if (typeof localStorage !== 'undefined') {
+      this.longtermStore = _lsAdapter.default;
+    }
+
+    this.restore();
+  }
+
+  (0, _createClass2.default)(FlagStore, [{
+    key: "restore",
+    value: function restore() {
+      if (!this.longtermStore) {
+        return;
+      }
+
+      var allValues = this.longtermStore.getAll();
+
+      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];
+
+        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;
+
+        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: "set",
+    value: function set(name, value) {
+      if (this.longtermStore) {
+        this.longtermStore.setItem(name, value);
+      }
+
+      this.store[name] = value;
+      this.emit('change', name);
+    }
+  }, {
+    key: "remove",
+    value: function remove(name) {
+      delete this.store[name];
+
+      if (this.longtermStore) {
+        this.longtermStore.removeItem(name);
+      }
+
+      this.emit('change', name);
+    }
+  }]);
+  return FlagStore;
+}();
+
+_microee.default.mixin(FlagStore);
+
+var _default = FlagStore;
+exports.default = _default;
+
+/***/ }),
+/* 404 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.prefix = exports.getKey = exports.default = 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; } } }; }
+
+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; }
+
+// eslint-disable-next-line no-redeclare
+
+/* global localStorage */
+var prefix = 'flag__';
+exports.prefix = prefix;
+
+var getKey = function getKey(name) {
+  return prefix + name;
+};
+
+exports.getKey = getKey;
+
+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 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 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 removeItem = function removeItem(flag) {
+  return localStorage.removeItem(getKey(flag));
+};
+/**
+ * Returns all stored flags as an object
+ */
+
+
+var getAll = function getAll() {
+  var res = {};
+
+  var _iterator = _createForOfIteratorHelper(listFlagLocalStorage()),
+      _step;
+
+  try {
+    for (_iterator.s(); !(_step = _iterator.n()).done;) {
+      var flag = _step.value;
+      res[flag] = getItem(flag);
+    }
+  } catch (err) {
+    _iterator.e(err);
+  } finally {
+    _iterator.f();
+  }
+
+  return res;
+};
+/**
+ * Clears all the flags from localstorage
+ */
+
+
+var clearAll = function clearAll() {
+  var _iterator2 = _createForOfIteratorHelper(listFlagLocalStorage()),
+      _step2;
+
+  try {
+    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
+      var flag = _step2.value;
+      removeItem(flag);
+    }
+  } catch (err) {
+    _iterator2.e(err);
+  } finally {
+    _iterator2.f();
+  }
+};
+
+var _default = {
+  getAll: getAll,
+  getItem: getItem,
+  setItem: setItem,
+  clearAll: clearAll,
+  removeItem: removeItem
+};
+exports.default = _default;
+
 /***/ }),
 /* 405 */
 /***/ (function(module, exports, __webpack_require__) {
@@ -39568,7 +39586,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 
-var _minilog = _interopRequireDefault(__webpack_require__(385));
+var _minilog = _interopRequireDefault(__webpack_require__(383));
 
 var logger = (0, _minilog.default)('cozy-stack-client');
 
@@ -48871,7 +48889,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(159));
 
 var _zipWith = _interopRequireDefault(__webpack_require__(505));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _CozyLink2 = _interopRequireDefault(__webpack_require__(507));
 
@@ -48879,7 +48897,7 @@ var _const = __webpack_require__(503);
 
 var _errors = __webpack_require__(508);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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); }; }
 
@@ -49510,7 +49528,7 @@ var _omit = _interopRequireDefault(__webpack_require__(407));
 
 var _uniq = _interopRequireDefault(__webpack_require__(406));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _store = __webpack_require__(511);
 
@@ -50861,11 +50879,11 @@ var _omit = _interopRequireDefault(__webpack_require__(407));
 
 var _merge = _interopRequireDefault(__webpack_require__(416));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 var _queries = __webpack_require__(521);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _mutations = __webpack_require__(537);
 
@@ -51222,9 +51240,9 @@ var _mutations = __webpack_require__(537);
 
 var _helpers = __webpack_require__(538);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -53249,7 +53267,7 @@ var _classCallCheck2 = _interopRequireDefault(__webpack_require__(180));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__(181));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 /**
  * Associations are used by components to access related store documents that are
@@ -53538,13 +53556,13 @@ var _get = _interopRequireDefault(__webpack_require__(283));
 
 var _merge = _interopRequireDefault(__webpack_require__(416));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _store = __webpack_require__(511);
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -54015,11 +54033,11 @@ var _get2 = _interopRequireDefault(__webpack_require__(283));
 
 var _set = _interopRequireDefault(__webpack_require__(542));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -54217,7 +54235,7 @@ var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(368));
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 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; }
 
@@ -54304,7 +54322,7 @@ var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(366
 
 var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(368));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _Association2 = _interopRequireDefault(__webpack_require__(539));
 
@@ -54477,7 +54495,7 @@ var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(368));
 
 var _HasMany2 = _interopRequireDefault(__webpack_require__(540));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 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); }; }
 
@@ -56619,7 +56637,7 @@ var _uniq = _interopRequireDefault(__webpack_require__(406));
 
 var _uniqWith = _interopRequireDefault(__webpack_require__(569));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var isIdQuery = function isIdQuery(query) {
   return query.id || query.ids;
@@ -58904,7 +58922,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.hasQueryBeenLoaded = exports.isQueryLoading = exports.cancelable = void 0;
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 /**
  * @typedef {Promise} CancelablePromise
@@ -58989,7 +59007,7 @@ var _flow2 = _interopRequireDefault(__webpack_require__(586));
 
 var _cloneDeep2 = _interopRequireDefault(__webpack_require__(334));
 
-var _findKey = _interopRequireDefault(__webpack_require__(382));
+var _findKey = _interopRequireDefault(__webpack_require__(380));
 
 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; } } }; }
 
@@ -59236,7 +59254,7 @@ var _store = __webpack_require__(511);
 
 var _cozyStackClient = __webpack_require__(332);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 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; }
 
@@ -59984,7 +60002,7 @@ __webpack_require__.r(__webpack_exports__);
 /* 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__(403);
+/* harmony import */ var stream__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(401);
 /* harmony import */ var http__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(602);
 /* harmony import */ var url__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(611);
 /* harmony import */ var whatwg_url__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(612);
@@ -63987,7 +64005,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(159));
 
 var _account = __webpack_require__(626);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -64210,7 +64228,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(159));
 
 var _merge = _interopRequireDefault(__webpack_require__(416));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _HasMany = __webpack_require__(540);
 
@@ -64434,7 +64452,7 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
 var _get = _interopRequireDefault(__webpack_require__(283));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var FallbackQuota = 1e11;
 var GB = 1000 * 1000 * 1000;
@@ -64799,13 +64817,13 @@ var _trimEnd = _interopRequireDefault(__webpack_require__(630));
 
 var _qualification = __webpack_require__(632);
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _const = __webpack_require__(503);
 
 var _CozyClient = _interopRequireDefault(__webpack_require__(163));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -65923,7 +65941,7 @@ var _lodash = __webpack_require__(133);
 
 var qualificationModel = _interopRequireWildcard(__webpack_require__(633));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -66458,7 +66476,7 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
 var _helpers = __webpack_require__(547);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 /**
  *
@@ -66591,13 +66609,13 @@ var _get = _interopRequireDefault(__webpack_require__(283));
 
 var _CozyClient = _interopRequireDefault(__webpack_require__(163));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var _file = __webpack_require__(629);
 
 var _const = __webpack_require__(503);
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 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; }
 
@@ -67043,7 +67061,7 @@ var _get = _interopRequireDefault(__webpack_require__(283));
 
 var _isEmpty = _interopRequireDefault(__webpack_require__(640));
 
-var _logger = _interopRequireDefault(__webpack_require__(384));
+var _logger = _interopRequireDefault(__webpack_require__(382));
 
 var CONTACTS_DOCTYPE = 'io.cozy.contacts';
 exports.CONTACTS_DOCTYPE = CONTACTS_DOCTYPE;
@@ -70351,7 +70369,7 @@ var _regenerator = _interopRequireDefault(__webpack_require__(177));
 
 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 var validateTimeSeriesFormat = function validateTimeSeriesFormat(timeseries) {
   if (!timeseries.startDate || !timeseries.endDate) {
@@ -71570,7 +71588,7 @@ var _regenerator = _interopRequireDefault(__webpack_require__(177));
 
 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(179));
 
-var _dsl = __webpack_require__(381);
+var _dsl = __webpack_require__(379);
 
 /**
  * Checks the value of the extension_installed attribute
diff --git a/vendors/ecolyo.d3aad14b26059fa1903d.js b/vendors/ecolyo.7d2dc2a8de788a437224.js
similarity index 99%
rename from vendors/ecolyo.d3aad14b26059fa1903d.js
rename to vendors/ecolyo.7d2dc2a8de788a437224.js
index c77dd3885428347d52e4a10d700ec6d3bb903c18..1383031bc719a67919ec4c28b1cb97e4958a7e72 100644
--- a/vendors/ecolyo.d3aad14b26059fa1903d.js
+++ b/vendors/ecolyo.7d2dc2a8de788a437224.js
@@ -67737,10 +67737,10 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("HZZ/"));
 
 var _slicedToArray2 = _interopRequireDefault(__webpack_require__("XkwL"));
 
-var _store = _interopRequireDefault(__webpack_require__("uh8Z"));
-
 var _dsl = __webpack_require__("v2kV");
 
+var _store = _interopRequireDefault(__webpack_require__("uh8Z"));
+
 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); }
@@ -67750,16 +67750,18 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
 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 flag = function flag() {
-  var args = [].slice.call(arguments);
-
-  if (args.length === 1) {
-    return store.get(args[0]);
+var flag = function flag(key, value) {
+  if (arguments.length === 1) {
+    return store.get(key);
   } else {
-    store.set(args[0], args[1]);
-    return args[1];
+    store.set(key, value);
+    return value;
   }
 };
 /** List all flags from the store */
@@ -67832,7 +67834,7 @@ var enable = function enable(flagsToEnable) {
  *
  * @private
  * @see  https://docs.cozy.io/en/cozy-stack/settings/#get-settingsflags
- * @param  {CozyClient} client
+ * @param  {import('cozy-client/types/CozyClient').default} client
  */
 
 
@@ -67847,7 +67849,7 @@ var initializeFromRemote = /*#__PURE__*/function () {
         switch (_context.prev = _context.next) {
           case 0:
             _context.next = 2;
-            return client.query((0, _dsl.Q)('io.cozy.settings').getById('flags'));
+            return client.query((0, _dsl.Q)('io.cozy.settings').getById('io.cozy.settings.flags'));
 
           case 2:
             _yield$client$query = _context.sent;
@@ -67952,7 +67954,7 @@ var initializeFromDOM = /*#__PURE__*/function () {
  * <div data-flags="{{ .Flags }}"></div>
  * ````
  *
- * @param  {CozyClient} client - A CozyClient
+ * @param  {import('cozy-client/types/CozyClient').default} client - A CozyClient
  * @return {Promise} Resolves when flags have been initialized
  */
 
@@ -73742,11 +73744,11 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 
-var _flag = _interopRequireDefault(__webpack_require__("7hLD"));
+var _FlagSwitcher = _interopRequireDefault(__webpack_require__("JSg/"));
 
 var _connect = _interopRequireDefault(__webpack_require__("G1be"));
 
-var _FlagSwitcher = _interopRequireDefault(__webpack_require__("JSg/"));
+var _flag = _interopRequireDefault(__webpack_require__("7hLD"));
 
 var _useFlag = _interopRequireDefault(__webpack_require__("mXbR"));
 
@@ -124933,6 +124935,8 @@ var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("g3
 
 var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("wDGE"));
 
+var _defineProperty2 = _interopRequireDefault(__webpack_require__("J58c"));
+
 var _react = _interopRequireDefault(__webpack_require__("ivGQ"));
 
 var _flag = _interopRequireDefault(__webpack_require__("7hLD"));
@@ -124941,39 +124945,50 @@ 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 { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
 
+/**
+ * The store has been enhanced at this point with the MicroEE mixin.
+ * We need to cast it to the IMicroEE interface to be able to use the methods.
+ * This is a bit hacky, the long term solution would be to properly type the store.
+ */
+var store = _flag.default.store;
 /**
  * Connects a component to the flags. The wrapped component
  * will be refreshed when a flag changes.
  */
+
 var connect = function connect(Component) {
+  var _Component$displayNam;
+
   var Wrapped = /*#__PURE__*/function (_React$Component) {
     (0, _inherits2.default)(Wrapped, _React$Component);
 
     var _super = _createSuper(Wrapped);
 
-    function Wrapped(props) {
+    function Wrapped() {
       var _this;
 
       (0, _classCallCheck2.default)(this, Wrapped);
-      _this = _super.call(this, props);
-      _this.handleChange = _this.handleChange.bind((0, _assertThisInitialized2.default)(_this));
+
+      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+        args[_key] = arguments[_key];
+      }
+
+      _this = _super.call.apply(_super, [this].concat(args));
+      (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleChange", function () {
+        _this.forceUpdate();
+      });
       return _this;
     }
 
     (0, _createClass2.default)(Wrapped, [{
       key: "componentDidMount",
       value: function componentDidMount() {
-        _flag.default.store.on('change', this.handleChange);
+        store.on('change', this.handleChange);
       }
     }, {
       key: "componentWillUnmount",
       value: function componentWillUnmount() {
-        _flag.default.store.removeListener('change', this.handleChange);
-      }
-    }, {
-      key: "handleChange",
-      value: function handleChange() {
-        this.forceUpdate();
+        store.removeListener('change', this.handleChange);
       }
     }, {
       key: "render",
@@ -124984,7 +124999,8 @@ var connect = function connect(Component) {
     return Wrapped;
   }(_react.default.Component);
 
-  Wrapped.displayName = "withFlags(".concat(Component.displayName || Component.name, ")");
+  (0, _defineProperty2.default)(Wrapped, "displayName", void 0);
+  Wrapped.displayName = "withFlags(".concat((_Component$displayNam = Component.displayName) !== null && _Component$displayNam !== void 0 ? _Component$displayNam : Component.name, ")");
   return Wrapped;
 };
 
@@ -148079,10 +148095,10 @@ var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("wDGE"));
 
 var _react = _interopRequireDefault(__webpack_require__("ivGQ"));
 
-var _flag = _interopRequireDefault(__webpack_require__("7hLD"));
-
 var _connect = _interopRequireDefault(__webpack_require__("G1be"));
 
+var _flag = _interopRequireDefault(__webpack_require__("7hLD"));
+
 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 { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
@@ -418555,11 +418571,27 @@ var FlagStore = /*#__PURE__*/function () {
     key: "get",
     value: function get(name) {
       // eslint-disable-next-line no-prototype-builtins
-      if (!this.store.hasOwnProperty(name)) {
-        this.store[name] = null;
+      if (this.store.hasOwnProperty(name)) {
+        return this.store[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: "set",