diff --git a/.eslintrc.js b/.eslintrc.js index dc0daa203e..d73ec5842a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -8,13 +8,9 @@ module.exports = { extends: [ 'prettier', - 'prettier/react', - 'prettier/standard', 'plugin:@typescript-eslint/recommended', - 'prettier/@typescript-eslint', ], rules: { - 'prettier/prettier': ['error'], '@typescript-eslint/no-explicit-any': 0, '@typescript-eslint/no-inferrable-types': 0, '@typescript-eslint/no-use-before-define': 0, @@ -28,12 +24,10 @@ module.exports = { }, ], }, - plugins: ['prettier'], overrides: [ { files: ['examples/draft-0-10-0/**', 'examples/draft-0-9-1/**'], rules: { - 'prettier/prettier': 0, 'jsx-a11y/no-static-element-interactions': 0, 'no-console': 0, }, diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index e6ee6c45cd..2b5f7484b1 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -8,7 +8,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [16.x, 18.x, 20.x] steps: - uses: actions/checkout@v1 diff --git a/package.json b/package.json index b20d006700..6fcedb3dbe 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@descript/draft-js", "description": "A React framework for building text editors.", - "version": "0.11.6-descript.15", + "version": "0.11.6-descript.16", "keywords": [ "draftjs", "editor", @@ -47,24 +47,23 @@ "@babel/core": "^7.6.4", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.4.4", "@babel/plugin-proposal-optional-chaining": "^7.9.0", - "@types/jest": "^26.0.0", + "@types/jest": "^29.5.4", "@types/react": "^16.9.36", "@types/react-dom": "^16.9.8", - "@typescript-eslint/eslint-plugin": "^3.2.0", - "@typescript-eslint/parser": "^3.2.0", + "@typescript-eslint/eslint-plugin": "^6.6.0", + "@typescript-eslint/parser": "^6.6.0", "alex": "^8.0.0", - "babel-eslint": "^10.0.3", + "babel-eslint": "^10.1.0", "babel-preset-fbjs": "^3.3.0", "cross-env": "^7.0.2", "del": "^5.1.0", "es6-shim": "^0.35.5", - "eslint": "^7.0.0", - "eslint-config-fbjs": "^3.1.1", - "eslint-config-prettier": "^6.9.0", - "eslint-plugin-babel": "^5.3.0", - "eslint-plugin-jsx-a11y": "^6.2.3", - "eslint-plugin-prettier": "^3.1.2", - "eslint-plugin-react": "^7.17.0", + "eslint": "^8.49.0", + "eslint-config-fbjs": "^4.0.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-babel": "^5.3.1", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.2", "fbjs-scripts": "^1.2.0", "gulp": "^4.0.2", "gulp-babel": "^8.0.0", @@ -77,22 +76,24 @@ "gulp-rename": "^2.0.0", "gulp-typescript": "^6.0.0-alpha.1", "gulp-util": "^3.0.6", - "jest": "^26.0.1", + "jest": "^29.6.4", + "jest-environment-jsdom": "^29.6.4", "merge2": "^1.4.1", "prettier": "1.19.1", "react": "^16.8.0", "react-dom": "^16.8.0", "react-test-renderer": "^16.0.0", - "stats-webpack-plugin": "^0.6.2", + "stats-webpack-plugin": "^0.7.0", "terser-webpack-plugin": "^3.0.5", "through2": "^3.0.1", - "ts-jest": "^26.1.0", - "typescript": "^3.9.5", - "webpack-stream": "5.2.1" + "ts-jest": "^29.1.1", + "typescript": "^5.2.2", + "webpack": "^5.88.2", + "webpack-stream": "^7.0.0" }, "devEngines": { - "node": "10.x || 12.x || 13.x", - "npm": "2.x || 3.x || 5.x || 6.x" + "node": "14.x || 16.x || 18.x || 20.x", + "npm": "2.x || 3.x || 5.x || 6.x || 7.x || 8.x || 9.x" }, "jest": { "preset": "ts-jest", diff --git a/src/Draft.ts b/src/Draft.ts index 0d8895e5df..28efd01759 100644 --- a/src/Draft.ts +++ b/src/Draft.ts @@ -11,7 +11,6 @@ import Editor from './component/base/DraftEditor.react'; export {Editor}; import DraftEditorBlock from './component/contents/DraftEditorBlock.react'; import CompositeDraftDecorator from './model/decorators/CompositeDraftDecorator'; -import DraftEntity from './model/entity/DraftEntity'; import AtomicBlockUtils from './model/modifier/AtomicBlockUtils'; export {AtomicBlockUtils}; import KeyBindingUtil from './component/utils/KeyBindingUtil'; @@ -40,7 +39,6 @@ export {DraftHandleValue} from './model/constants/DraftHandleValue'; export const EditorBlock = DraftEditorBlock; export const CompositeDecorator = CompositeDraftDecorator; -export const Entity = DraftEntity; export * from './model/immutable/BlockMapBuilder'; export * from './model/immutable/EditorState'; @@ -53,4 +51,5 @@ export * from './model/immutable/DraftInlineStyle'; export * from './model/immutable/findRangesImmutable'; export * from './model/immutable/BlockNode'; export * from './model/immutable/BlockTree'; +export * from './model/immutable/EntityMap'; export * from './model/entity/DraftEntityInstance'; diff --git a/src/component/contents/__tests__/__snapshots__/DraftEditorBlock.react-test.tsx.snap b/src/component/contents/__tests__/__snapshots__/DraftEditorBlock.react-test.tsx.snap index 9ee3418a99..42b2c192d5 100644 --- a/src/component/contents/__tests__/__snapshots__/DraftEditorBlock.react-test.tsx.snap +++ b/src/component/contents/__tests__/__snapshots__/DraftEditorBlock.react-test.tsx.snap @@ -24,7 +24,7 @@ exports[`must allow update when forcing selection 1`] = `1`; exports[`must allow update when forcing selection 2`] = `2`; -exports[`must not scroll the window if unnecessary 1`] = `Array []`; +exports[`must not scroll the window if unnecessary 1`] = `[]`; exports[`must reject update if conditions are not met 1`] = `1`; @@ -65,8 +65,8 @@ exports[`must render multiple leaf nodes 9`] = `true`; exports[`must render multiple leaf nodes 10`] = `true`; exports[`must scroll the window if needed 1`] = ` -Array [ - Array [ +[ + [ 0, 26, ], diff --git a/src/component/handlers/drag/DraftEditorDragHandler.ts b/src/component/handlers/drag/DraftEditorDragHandler.ts index 43bd13d830..4f9d0f96a0 100644 --- a/src/component/handlers/drag/DraftEditorDragHandler.ts +++ b/src/component/handlers/drag/DraftEditorDragHandler.ts @@ -36,20 +36,18 @@ function getSelectionForEvent( let offset: number | null = null; const eventTargetDocument = getCorrectDocumentFromNode(event.currentTarget); - /* $FlowFixMe(>=0.68.0 site=www,mobile) This comment suppresses an error - * found when Flow v0.68 was deployed. To see the error delete this comment - * and run Flow. */ if (typeof eventTargetDocument.caretRangeFromPoint === 'function') { - /* $FlowFixMe(>=0.68.0 site=www,mobile) This comment suppresses an error - * found when Flow v0.68 was deployed. To see the error delete this comment - * and run Flow. */ const dropRange = eventTargetDocument.caretRangeFromPoint(event.x, event.y); - node = dropRange.startContainer; - offset = dropRange.startOffset; - } else if (event.rangeParent) { + if (dropRange) { + node = dropRange.startContainer; + offset = dropRange.startOffset; + } + } + if (!node && event.rangeParent) { node = event.rangeParent; offset = event.rangeOffset; - } else { + } + if (!node) { return null; } diff --git a/src/component/handlers/edit/DraftEditorEditHandler.ts b/src/component/handlers/edit/DraftEditorEditHandler.ts index cc7251f9c2..400538548e 100644 --- a/src/component/handlers/edit/DraftEditorEditHandler.ts +++ b/src/component/handlers/edit/DraftEditorEditHandler.ts @@ -30,7 +30,7 @@ const isFirefox = UserAgent.isBrowser('Firefox'); const selectionHandler: (e: DraftEditor) => void = isChromium || isFirefox ? editOnSelect - : _ => { + : () => { // }; diff --git a/src/component/handlers/edit/__tests__/__snapshots__/editOnBeforeInput-test.ts.snap b/src/component/handlers/edit/__tests__/__snapshots__/editOnBeforeInput-test.ts.snap index f7384a863b..f3ebea9199 100644 --- a/src/component/handlers/edit/__tests__/__snapshots__/editOnBeforeInput-test.ts.snap +++ b/src/component/handlers/edit/__tests__/__snapshots__/editOnBeforeInput-test.ts.snap @@ -1,47 +1,48 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`editor is updated with new text if it does not match current selection 1`] = ` -Object { +{ "blockMap": Map { - "a" => Object { - "characterList": Array [ - Object { + "a" => { + "characterList": [ + { "entity": null, "style": Set {}, }, - Object { + { "entity": null, "style": Set {}, }, - Object { + { "entity": null, "style": Set {}, }, - Object { + { "entity": null, "style": Set {}, }, - Object { + { "entity": null, "style": Set {}, }, - Object { + { "entity": null, "style": Set {}, }, - Object { + { "entity": null, "style": Set {}, }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "a", "text": "Orsenal", "type": "unstyled", }, }, - "selectionAfter": Object { + "entityMap": Map {}, + "selectionAfter": { "anchorKey": "a", "anchorOffset": 1, "focusKey": "a", @@ -49,7 +50,7 @@ Object { "hasFocus": false, "isBackward": false, }, - "selectionBefore": Object { + "selectionBefore": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "a", @@ -61,7 +62,7 @@ Object { `; exports[`editor selectionstate is updated if new text matches current selection 1`] = ` -Object { +{ "anchorKey": "a", "anchorOffset": 1, "focusKey": "a", @@ -72,7 +73,7 @@ Object { `; exports[`editor selectionstate is updated if new text matches current selection and user selected backwards 1`] = ` -Object { +{ "anchorKey": "a", "anchorOffset": 1, "focusKey": "a", diff --git a/src/component/handlers/edit/__tests__/editOnBeforeInput-test.ts b/src/component/handlers/edit/__tests__/editOnBeforeInput-test.ts index 8e847b1249..70b83e67fc 100644 --- a/src/component/handlers/edit/__tests__/editOnBeforeInput-test.ts +++ b/src/component/handlers/edit/__tests__/editOnBeforeInput-test.ts @@ -15,7 +15,6 @@ import { setEditorState, } from '../../../../model/immutable/EditorState'; import { - ContentState, createFromBlockArray, } from '../../../../model/immutable/ContentState'; import { @@ -156,7 +155,6 @@ const HASHTAG_REGEX = /#[a-z]+/g; function hashtagStrategy( contentBlock: ContentBlock, callback, - _contentState: ContentState, ) { findWithRegex(HASHTAG_REGEX, contentBlock, callback); } @@ -202,13 +200,13 @@ function testDecoratorFingerprint( const ev = getInputEvent(charToInsert); editOnBeforeInput(editor, ev); - expect(ev.preventDefault.mock.calls.length).toBe(shouldPrevent ? 1 : 0); + expect((ev.preventDefault as ReturnType).mock.calls.length).toBe(shouldPrevent ? 1 : 0); } test('decorator fingerprint logic bails out of native insertion', () => { const oldGetSelection = global.getSelection; try { - global.getSelection = () => ({}); + global.getSelection = () => ({} as Selection); // Make sure we prevent native insertion in the right cases testDecoratorFingerprint('hi #', 4, 'f', true); diff --git a/src/component/handlers/edit/editOnInput.ts b/src/component/handlers/edit/editOnInput.ts index 2fdd447b3d..d8fe746222 100644 --- a/src/component/handlers/edit/editOnInput.ts +++ b/src/component/handlers/edit/editOnInput.ts @@ -21,7 +21,7 @@ import {SelectionObject} from '../../utils/DraftDOMTypes'; import {nullthrows} from '../../../fbjs/nullthrows'; import findAncestorOffsetKey from '../../selection/findAncestorOffsetKey'; import DraftOffsetKey from '../../selection/DraftOffsetKey'; -import {getBlockForKey, getEntity} from '../../../model/immutable/ContentState'; +import {getBlockForKey} from '../../../model/immutable/ContentState'; import {notEmptyKey} from '../../utils/draftKeyUtils'; import { getEntityAt, @@ -32,6 +32,7 @@ import { getEndOffset, getStartOffset, } from '../../../model/immutable/SelectionState'; +import {getEntity} from '../../../model/immutable/EntityMap'; const isGecko = UserAgent.isEngine('Gecko'); @@ -170,7 +171,9 @@ export default function editOnInput( }; const entityKey = getEntityAt(block, start); - const entity = notEmptyKey(entityKey) ? getEntity(entityKey) : null; + const entity = notEmptyKey(entityKey) + ? getEntity(content.entityMap, entityKey) + : null; const entityType = entity != null ? entity.mutability : null; const preserveEntity = entityType === 'MUTABLE'; diff --git a/src/component/handlers/edit/editOnPaste.ts b/src/component/handlers/edit/editOnPaste.ts index bb7b8053ed..18f89a3cf5 100644 --- a/src/component/handlers/edit/editOnPaste.ts +++ b/src/component/handlers/edit/editOnPaste.ts @@ -204,17 +204,23 @@ export default function editOnPaste( function insertFragment( editorState: EditorState, fragment: BlockMap, - _?: EntityMap | null, + entityMap?: EntityMap | null, ): EditorState { - const newContent = DraftModifier.replaceWithFragment( + let newContent = DraftModifier.replaceWithFragment( editorState.currentContent, editorState.selection, fragment, ); - // TODO: merge the entity map once we stop using DraftEntity - // like this: - // const mergedEntityMap = newContent.getEntityMap().merge(entityMap); - + const mergedEntityMap = new Map(newContent.entityMap) + if (entityMap) { + entityMap.forEach((entity, key) => { + mergedEntityMap.set(key, entity) + }) + } + newContent = { + ...newContent, + entityMap: mergedEntityMap, + } return pushContent(editorState, newContent, 'insert-fragment'); } diff --git a/src/component/selection/__tests__/__snapshots__/DraftOffsetKey-test.ts.snap b/src/component/selection/__tests__/__snapshots__/DraftOffsetKey-test.ts.snap index 0f6958fac1..8225b2fde1 100644 --- a/src/component/selection/__tests__/__snapshots__/DraftOffsetKey-test.ts.snap +++ b/src/component/selection/__tests__/__snapshots__/DraftOffsetKey-test.ts.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`decodes offset key with delimiter at the beginning 1`] = ` -Object { +{ "blockKey": "-key", "decoratorKey": 0, "leafKey": 1, @@ -9,7 +9,7 @@ Object { `; exports[`decodes offset key with delimiter at the end 1`] = ` -Object { +{ "blockKey": "key-", "decoratorKey": 0, "leafKey": 1, @@ -17,7 +17,7 @@ Object { `; exports[`decodes offset key with delimiter in between 1`] = ` -Object { +{ "blockKey": "key-with-delimiter", "decoratorKey": 0, "leafKey": 1, @@ -25,7 +25,7 @@ Object { `; exports[`decodes offset key with no delimiter 1`] = ` -Object { +{ "blockKey": "key", "decoratorKey": 0, "leafKey": 1, diff --git a/src/component/selection/__tests__/__snapshots__/getDraftEditorSelection-test.ts.snap b/src/component/selection/__tests__/__snapshots__/getDraftEditorSelection-test.ts.snap index f07d26845e..1aa8b78991 100644 --- a/src/component/selection/__tests__/__snapshots__/getDraftEditorSelection-test.ts.snap +++ b/src/component/selection/__tests__/__snapshots__/getDraftEditorSelection-test.ts.snap @@ -1,9 +1,9 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`begins at text node zero, ends at end of block 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "a", @@ -15,9 +15,9 @@ Object { `; exports[`begins within text node, ends at end of block 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 5, "focusKey": "a", @@ -29,9 +29,9 @@ Object { `; exports[`contains an entire leaf 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "c", "anchorOffset": 0, "focusKey": "c", @@ -43,9 +43,9 @@ Object { `; exports[`does the crazy stuff described above 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "c", @@ -57,9 +57,9 @@ Object { `; exports[`extends from head of one node to end of another 1`] = ` -Object { +{ "needsRecovery": false, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "b", @@ -71,9 +71,9 @@ Object { `; exports[`from start of one block to end of other block 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "c", @@ -85,9 +85,9 @@ Object { `; exports[`from start of one block to start of another 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "c", @@ -99,9 +99,9 @@ Object { `; exports[`goes from end of one to end of other block 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 19, "focusKey": "c", @@ -113,9 +113,9 @@ Object { `; exports[`goes from start of one block to end of other block 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "c", @@ -127,9 +127,9 @@ Object { `; exports[`goes from start of one block to start of other 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "c", @@ -141,9 +141,9 @@ Object { `; exports[`goes from within one block to within another block 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 19, "focusKey": "c", @@ -155,9 +155,9 @@ Object { `; exports[`is a reversed selection across multiple text nodes 1`] = ` -Object { +{ "needsRecovery": false, - "selectionState": Object { + "selectionState": { "anchorKey": "c", "anchorOffset": 4, "focusKey": "a", @@ -169,9 +169,9 @@ Object { `; exports[`is a reversed text-to-leaf selection 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "c", "anchorOffset": 0, "focusKey": "a", @@ -183,9 +183,9 @@ Object { `; exports[`is a reversed text-to-leaf-child selection 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "c", "anchorOffset": 0, "focusKey": "a", @@ -197,9 +197,9 @@ Object { `; exports[`is collapsed at end at single block 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 19, "focusKey": "a", @@ -211,9 +211,9 @@ Object { `; exports[`is collapsed at end of single span 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 10, "focusKey": "a", @@ -225,9 +225,9 @@ Object { `; exports[`is collapsed at end with full selection 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "c", "anchorOffset": 12, "focusKey": "c", @@ -239,9 +239,9 @@ Object { `; exports[`is collapsed at start at single block 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "a", @@ -253,9 +253,9 @@ Object { `; exports[`is collapsed at start of single span 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "a", @@ -267,9 +267,9 @@ Object { `; exports[`is collapsed at start with full selection 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "a", @@ -281,9 +281,9 @@ Object { `; exports[`is collapsed at the end of a child 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 19, "focusKey": "a", @@ -295,9 +295,9 @@ Object { `; exports[`is collapsed at the start of the contents 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "a", @@ -309,9 +309,9 @@ Object { `; exports[`is completely selected 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "c", @@ -323,9 +323,9 @@ Object { `; exports[`is contains multiple children 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "c", @@ -337,9 +337,9 @@ Object { `; exports[`is entirely selected 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "a", @@ -351,9 +351,9 @@ Object { `; exports[`is reversed from above 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "c", "anchorOffset": 12, "focusKey": "a", @@ -365,9 +365,9 @@ Object { `; exports[`is reversed from the first case 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 19, "focusKey": "a", @@ -379,9 +379,9 @@ Object { `; exports[`is reversed on entire leaf 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "c", "anchorOffset": 7, "focusKey": "c", @@ -393,9 +393,9 @@ Object { `; exports[`is the same as above but reversed 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "c", "anchorOffset": 7, "focusKey": "a", @@ -407,9 +407,9 @@ Object { `; exports[`must find offsets for non-collapsed selection 1`] = ` -Object { +{ "needsRecovery": false, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 1, "focusKey": "a", @@ -421,9 +421,9 @@ Object { `; exports[`must find offsets for reversed selection 1`] = ` -Object { +{ "needsRecovery": false, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 6, "focusKey": "a", @@ -435,9 +435,9 @@ Object { `; exports[`must find offsets for selection on entire text node 1`] = ` -Object { +{ "needsRecovery": false, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "a", @@ -449,9 +449,9 @@ Object { `; exports[`must find offsets when collapsed at end 1`] = ` -Object { +{ "needsRecovery": false, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 10, "focusKey": "a", @@ -463,9 +463,9 @@ Object { `; exports[`must find offsets when collapsed at start 1`] = ` -Object { +{ "needsRecovery": false, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "a", @@ -477,9 +477,9 @@ Object { `; exports[`occupies a single child of the contents 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "a", @@ -491,9 +491,9 @@ Object { `; exports[`reversed leaf to leaf 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "c", "anchorOffset": 7, "focusKey": "a", @@ -505,9 +505,9 @@ Object { `; exports[`starts at head of one node and ends at head of another 1`] = ` -Object { +{ "needsRecovery": false, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "c", @@ -519,9 +519,9 @@ Object { `; exports[`starts at head of text node, ends at end of leaf child 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "c", @@ -533,9 +533,9 @@ Object { `; exports[`starts at head of text node, ends at end of leaf span 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "c", @@ -547,9 +547,9 @@ Object { `; exports[`starts at head of text node, ends at head of leaf child 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "c", @@ -561,9 +561,9 @@ Object { `; exports[`starts at head of text node, ends at head of leaf span 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 0, "focusKey": "c", @@ -575,9 +575,9 @@ Object { `; exports[`starts within one text node and ends within another block 1`] = ` -Object { +{ "needsRecovery": false, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 4, "focusKey": "c", @@ -589,9 +589,9 @@ Object { `; exports[`starts within text node, ends at end of leaf child 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 4, "focusKey": "c", @@ -603,9 +603,9 @@ Object { `; exports[`starts within text node, ends at end of leaf span 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 4, "focusKey": "c", @@ -617,9 +617,9 @@ Object { `; exports[`starts within text node, ends at start of leaf child 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 4, "focusKey": "c", @@ -631,9 +631,9 @@ Object { `; exports[`starts within text node, ends at start of leaf span 1`] = ` -Object { +{ "needsRecovery": true, - "selectionState": Object { + "selectionState": { "anchorKey": "a", "anchorOffset": 4, "focusKey": "c", diff --git a/src/component/utils/isInstanceOfNode.ts b/src/component/utils/isInstanceOfNode.ts index c932191404..9609bbee33 100644 --- a/src/component/utils/isInstanceOfNode.ts +++ b/src/component/utils/isInstanceOfNode.ts @@ -13,7 +13,7 @@ export default function isInstanceOfNode(target: EventTarget | null): boolean { return false; } if ('ownerDocument' in target) { - const node: Node = target; + const node: Node = target as Node; if (!node.ownerDocument?.defaultView) { return node instanceof Node; } diff --git a/src/model/decorators/__tests__/__snapshots__/CompositeDraftDecorator-test.ts.snap b/src/model/decorators/__tests__/__snapshots__/CompositeDraftDecorator-test.ts.snap index bb5a62b7f1..a2fa595f58 100644 --- a/src/model/decorators/__tests__/__snapshots__/CompositeDraftDecorator-test.ts.snap +++ b/src/model/decorators/__tests__/__snapshots__/CompositeDraftDecorator-test.ts.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`must behave correctly if there are no matches 1`] = ` -Array [ +[ null, null, null, @@ -40,7 +40,7 @@ Array [ `; exports[`must find decoration matches 1`] = ` -Array [ +[ null, null, "0.0", @@ -63,7 +63,7 @@ Array [ `; exports[`must find matches for multiple decorators 1`] = ` -Array [ +[ null, null, "0.0", @@ -82,7 +82,7 @@ Array [ `; exports[`must find matches regardless of text location 1`] = ` -Array [ +[ null, null, null, @@ -100,7 +100,7 @@ Array [ `; exports[`must separate adjacent ranges that have the same decorator 1`] = ` -Array [ +[ "0.0", "0.0", "0.0", @@ -114,7 +114,7 @@ Array [ `; exports[`must throw out matches if earlier match is shorter 1`] = ` -Array [ +[ "0.0", "0.0", "0.0", @@ -133,7 +133,7 @@ Array [ `; exports[`must throw out overlaps with existing decorations 1`] = ` -Array [ +[ "0.0", "0.0", "0.0", diff --git a/src/model/descript/Iterables.ts b/src/model/descript/Iterables.ts index d44cbf3f6f..498f18144f 100644 --- a/src/model/descript/Iterables.ts +++ b/src/model/descript/Iterables.ts @@ -23,6 +23,7 @@ export function last(iter: Iterable): T | undefined { export function size(iter: Iterable): number { let count = 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars for (const _ of iter) { count += 1; } diff --git a/src/model/encoding/__tests__/__snapshots__/convertFromDraftStateToRaw-test.ts.snap b/src/model/encoding/__tests__/__snapshots__/convertFromDraftStateToRaw-test.ts.snap index 91809a68ad..f1c51e3d01 100644 --- a/src/model/encoding/__tests__/__snapshots__/convertFromDraftStateToRaw-test.ts.snap +++ b/src/model/encoding/__tests__/__snapshots__/convertFromDraftStateToRaw-test.ts.snap @@ -1,29 +1,29 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`must be able to convert from draft state with ContentBlock to raw 1`] = ` -Object { - "blocks": Array [ - Object { - "data": Object {}, +{ + "blocks": [ + { + "data": {}, "depth": 0, - "entityRanges": Array [], - "inlineStyleRanges": Array [], + "entityRanges": [], + "inlineStyleRanges": [], "key": "a", "text": "Alpha", "type": "unstyled", }, - Object { - "data": Object {}, + { + "data": {}, "depth": 0, - "entityRanges": Array [ - Object { + "entityRanges": [ + { "key": 0, "length": 5, "offset": 0, }, ], - "inlineStyleRanges": Array [ - Object { + "inlineStyleRanges": [ + { "length": 5, "offset": 0, "style": "BOLD", @@ -33,39 +33,39 @@ Object { "text": "Bravo", "type": "unordered-list-item", }, - Object { - "data": Object {}, + { + "data": {}, "depth": 0, - "entityRanges": Array [], - "inlineStyleRanges": Array [], + "entityRanges": [], + "inlineStyleRanges": [], "key": "c", "text": "Test", "type": "code-block", }, - Object { - "data": Object {}, + { + "data": {}, "depth": 0, - "entityRanges": Array [], - "inlineStyleRanges": Array [], + "entityRanges": [], + "inlineStyleRanges": [], "key": "d", "text": "", "type": "code-block", }, - Object { - "data": Object {}, + { + "data": {}, "depth": 0, - "entityRanges": Array [], - "inlineStyleRanges": Array [], + "entityRanges": [], + "inlineStyleRanges": [], "key": "e", "text": "", "type": "code-block", }, - Object { - "data": Object {}, + { + "data": {}, "depth": 0, - "entityRanges": Array [], - "inlineStyleRanges": Array [ - Object { + "entityRanges": [], + "inlineStyleRanges": [ + { "length": 7, "offset": 0, "style": "ITALIC", @@ -76,9 +76,9 @@ Object { "type": "blockquote", }, ], - "entityMap": Object { - "0": Object { - "data": Object {}, + "entityMap": { + "0": { + "data": {}, "mutability": "IMMUTABLE", "type": "IMAGE", }, @@ -87,83 +87,83 @@ Object { `; exports[`must be able to convert from draft state with noncontiguous entities to raw 1`] = ` -Object { - "blocks": Array [ - Object { - "data": Object {}, +{ + "blocks": [ + { + "data": {}, "depth": 0, - "entityRanges": Array [ - Object { + "entityRanges": [ + { "key": 0, "length": 5, "offset": 0, }, - Object { + { "key": 1, "length": 5, "offset": 6, }, - Object { + { "key": 2, "length": 5, "offset": 12, }, ], - "inlineStyleRanges": Array [], + "inlineStyleRanges": [], "key": "a", "text": "link2 link2 link3", "type": "unstyled", }, - Object { - "data": Object {}, + { + "data": {}, "depth": 0, - "entityRanges": Array [ - Object { + "entityRanges": [ + { "key": 2, "length": 5, "offset": 0, }, - Object { + { "key": 0, "length": 5, "offset": 6, }, - Object { + { "key": 3, "length": 5, "offset": 12, }, ], - "inlineStyleRanges": Array [], + "inlineStyleRanges": [], "key": "b", "text": "link4 link2 link5", "type": "unstyled", }, ], - "entityMap": Object { - "0": Object { - "data": Object { + "entityMap": { + "0": { + "data": { "url": "www.3.com", }, "mutability": "IMMUTABLE", "type": "LINK", }, - "1": Object { - "data": Object { + "1": { + "data": { "url": "www.4.com", }, "mutability": "IMMUTABLE", "type": "LINK", }, - "2": Object { - "data": Object { + "2": { + "data": { "url": "www.5.com", }, "mutability": "IMMUTABLE", "type": "LINK", }, - "3": Object { - "data": Object { + "3": { + "data": { "url": "www.6.com", }, "mutability": "IMMUTABLE", diff --git a/src/model/encoding/__tests__/__snapshots__/convertFromHTMLToContentBlocks-test.ts.snap b/src/model/encoding/__tests__/__snapshots__/convertFromHTMLToContentBlocks-test.ts.snap index 7c99ca42b4..5c1d124130 100644 --- a/src/model/encoding/__tests__/__snapshots__/convertFromHTMLToContentBlocks-test.ts.snap +++ b/src/model/encoding/__tests__/__snapshots__/convertFromHTMLToContentBlocks-test.ts.snap @@ -1,123 +1,123 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Should import line breaks without creating a leading space 1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "Line 1 @@ -129,167 +129,167 @@ Array [ `; exports[`Should import recognised draft li depths when nesting disabled 1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "depth0", "type": "unordered-list-item", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 1, "key": "key1", "text": "depth1", "type": "unordered-list-item", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 2, "key": "key2", "text": "depth2", "type": "unordered-list-item", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 3, "key": "key3", "text": "depth3", "type": "unordered-list-item", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 4, "key": "key4", "text": "depth4", @@ -299,64 +299,64 @@ Array [ `; exports[`Should import two blockquotes without extra line breaks 1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "First", "type": "blockquote", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key2", "text": "Second", @@ -366,47 +366,47 @@ Array [ `; exports[`Should not create empty container blocks around ol and their list items 1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "something", @@ -416,47 +416,47 @@ Array [ `; exports[`Should not create empty container blocks around ul and their list items 1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "something", @@ -520,89 +520,89 @@ Array [ `; exports[`Should preserve entities for whitespace-only content 1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": "1", - "style": Array [], + "style": [], }, - Object { + { "entity": "1", - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": "1", - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": "1", - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": "1", - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": "1", - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": "1", - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": "1", - "style": Array [], + "style": [], }, - Object { + { "entity": "1", - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": "1", - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": "1", - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": "1", - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": "1", - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": "1", - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": " before after ", @@ -612,127 +612,127 @@ Array [ `; exports[`Should properly handle nested attribute styles 1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "boldnot boldbold again", @@ -742,177 +742,177 @@ Array [ `; exports[`Should recognize preformatted blocks 1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "following some pre some_code_stuff", @@ -922,125 +922,125 @@ Array [ `; exports[`Should recognize preformatted blocks mixed other styles 1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "CODE", ], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "example bold and code", @@ -1050,134 +1050,134 @@ Array [ `; exports[`Should recognized and override html structure when having known draft-js classname with nesting disabled 1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "depth0", "type": "unordered-list-item", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 1, "key": "key1", "text": "depth1", "type": "unordered-list-item", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 2, "key": "key2", "text": "depth2", "type": "unordered-list-item", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 3, "key": "key3", "text": "depth3", @@ -1187,330 +1187,330 @@ Array [ `; exports[`Should recognized list deep nesting 1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "depth0-0", "type": "unordered-list-item", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "depth0-1", "type": "unordered-list-item", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 1, "key": "key2", "text": "depth1-0", "type": "unordered-list-item", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 1, "key": "key3", "text": "depth1-1", "type": "ordered-list-item", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 2, "key": "key4", "text": "depth2-0", "type": "unordered-list-item", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 2, "key": "key5", "text": "depth2-1", "type": "unordered-list-item", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key6", "text": "depth0-2", "type": "unordered-list-item", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key7", "text": "depth0-3", @@ -1520,156 +1520,156 @@ Array [ `; exports[`does not convert deeply nested html blocks 1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "Some quote", "type": "ordered-list-item", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "Hello World! @@ -1680,60 +1680,60 @@ lorem ipsum", `; exports[`eliminates useless blocks 1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key2", "text": "Hello", "type": "unstyled", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key3", "text": "World", @@ -1743,35 +1743,35 @@ Array [ `; exports[`highlighted text should be recognized and considered styled characters 1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, "style": Set { "HIGHLIGHT", }, }, - Object { + { "entity": null, "style": Set { "HIGHLIGHT", }, }, - Object { + { "entity": null, "style": Set { "HIGHLIGHT", }, }, - Object { + { "entity": null, "style": Set { "HIGHLIGHT", }, }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "test", @@ -1786,170 +1786,170 @@ exports[`img with http protocol should have camera emoji content 1`] = `"\\ud83d exports[`img with https protocol should have camera emoji content 1`] = `"\\ud83d\\udcf7"`; -exports[`img with role presentation should not be rendered 1`] = `Array []`; +exports[`img with role presentation should not be rendered 1`] = `[]`; exports[`line break should be correctly parsed - multiple
in a content block 1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "Hello World! @@ -1961,159 +1961,159 @@ Array [ `; exports[`line break should be correctly parsed - single
1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [ + "style": [ "BOLD", ], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, - Object { + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "Hello World! @@ -2124,28 +2124,28 @@ Array [ `; exports[`must not merge tags when converting adjacent
1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "blockquote", - }, - Object { - "characterList": Array [ - Object { + }, + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2155,28 +2155,28 @@ Array [ `; exports[`must not merge tags when converting adjacent
2`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "blockquote", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2186,28 +2186,28 @@ Array [ `; exports[`must not merge tags when converting adjacent
1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "unstyled", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2217,28 +2217,28 @@ Array [ `; exports[`must not merge tags when converting adjacent
2`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "unstyled", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2248,28 +2248,28 @@ Array [ `; exports[`must not merge tags when converting adjacent
1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "atomic", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2279,28 +2279,28 @@ Array [ `; exports[`must not merge tags when converting adjacent
2`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "atomic", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2310,28 +2310,28 @@ Array [ `; exports[`must not merge tags when converting adjacent

1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "header-one", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2341,28 +2341,28 @@ Array [ `; exports[`must not merge tags when converting adjacent

2`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "header-one", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2372,28 +2372,28 @@ Array [ `; exports[`must not merge tags when converting adjacent

1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "header-two", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2403,28 +2403,28 @@ Array [ `; exports[`must not merge tags when converting adjacent

2`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "header-two", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2434,28 +2434,28 @@ Array [ `; exports[`must not merge tags when converting adjacent

1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "header-three", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2465,28 +2465,28 @@ Array [ `; exports[`must not merge tags when converting adjacent

2`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "header-three", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2496,28 +2496,28 @@ Array [ `; exports[`must not merge tags when converting adjacent

1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "header-four", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2527,28 +2527,28 @@ Array [ `; exports[`must not merge tags when converting adjacent

2`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "header-four", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2558,28 +2558,28 @@ Array [ `; exports[`must not merge tags when converting adjacent

1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "header-five", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2589,28 +2589,28 @@ Array [ `; exports[`must not merge tags when converting adjacent
2`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "header-five", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2620,28 +2620,28 @@ Array [ `; exports[`must not merge tags when converting adjacent
1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "header-six", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2651,28 +2651,28 @@ Array [ `; exports[`must not merge tags when converting adjacent
2`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "header-six", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2682,28 +2682,28 @@ Array [ `; exports[`must not merge tags when converting adjacent
  • 1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "unordered-list-item", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2713,28 +2713,28 @@ Array [ `; exports[`must not merge tags when converting adjacent
  • 2`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "unordered-list-item", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2744,28 +2744,28 @@ Array [ `; exports[`must not merge tags when converting adjacent

    1`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "unstyled", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2775,28 +2775,28 @@ Array [ `; exports[`must not merge tags when converting adjacent

    2`] = ` -Array [ - Object { - "characterList": Array [ - Object { +[ + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key0", "text": "a", "type": "unstyled", }, - Object { - "characterList": Array [ - Object { + { + "characterList": [ + { "entity": null, - "style": Array [], + "style": [], }, ], - "data": Object {}, + "data": {}, "depth": 0, "key": "key1", "text": "b", @@ -2806,28 +2806,28 @@ Array [ `; exports[`must not merge tags when converting adjacent

     1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "a",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key1",
         "text": "b",
    @@ -2837,28 +2837,28 @@ Array [
     `;
     
     exports[`must not merge tags when converting adjacent 
     2`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "a",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key1",
         "text": "b",
    diff --git a/src/model/encoding/__tests__/__snapshots__/encodeEntityRanges-test.ts.snap b/src/model/encoding/__tests__/__snapshots__/encodeEntityRanges-test.ts.snap
    index 76987bfea8..0c37fcd68c 100644
    --- a/src/model/encoding/__tests__/__snapshots__/encodeEntityRanges-test.ts.snap
    +++ b/src/model/encoding/__tests__/__snapshots__/encodeEntityRanges-test.ts.snap
    @@ -1,13 +1,13 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
     exports[`must handle ranges that include surrogate pairs 1`] = `
    -Array [
    -  Object {
    +[
    +  {
         "key": 0,
         "length": 5,
         "offset": 6,
       },
    -  Object {
    +  {
         "key": 1,
         "length": 2,
         "offset": 13,
    @@ -15,18 +15,18 @@ Array [
     ]
     `;
     
    -exports[`must return an empty array if no entities present 1`] = `Array []`;
    +exports[`must return an empty array if no entities present 1`] = `[]`;
     
    -exports[`must return an empty array if no entities present 2`] = `Array []`;
    +exports[`must return an empty array if no entities present 2`] = `[]`;
     
     exports[`must return ranges with an entity present more than once 1`] = `
    -Array [
    -  Object {
    +[
    +  {
         "key": 0,
         "length": 2,
         "offset": 2,
       },
    -  Object {
    +  {
         "key": 0,
         "length": 2,
         "offset": 5,
    @@ -35,13 +35,13 @@ Array [
     `;
     
     exports[`must return ranges with multiple entities present 1`] = `
    -Array [
    -  Object {
    +[
    +  {
         "key": 0,
         "length": 2,
         "offset": 2,
       },
    -  Object {
    +  {
         "key": 1,
         "length": 2,
         "offset": 5,
    @@ -50,8 +50,8 @@ Array [
     `;
     
     exports[`must return ranges with the storage-mapped key 1`] = `
    -Array [
    -  Object {
    +[
    +  {
         "key": 0,
         "length": 2,
         "offset": 2,
    diff --git a/src/model/encoding/__tests__/__snapshots__/encodeInlineStyleRanges-test.ts.snap b/src/model/encoding/__tests__/__snapshots__/encodeInlineStyleRanges-test.ts.snap
    index 02a4915224..bb53778923 100644
    --- a/src/model/encoding/__tests__/__snapshots__/encodeInlineStyleRanges-test.ts.snap
    +++ b/src/model/encoding/__tests__/__snapshots__/encodeInlineStyleRanges-test.ts.snap
    @@ -1,18 +1,18 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
     exports[`must encode custom styles 1`] = `
    -Array [
    -  Object {
    +[
    +  {
         "length": 4,
         "offset": 0,
         "style": "foo",
       },
    -  Object {
    +  {
         "length": 2,
         "offset": 2,
         "style": "bar",
       },
    -  Object {
    +  {
         "length": 2,
         "offset": 4,
         "style": "BOLD",
    @@ -21,33 +21,33 @@ Array [
     `;
     
     exports[`must encode for a complex styled document 1`] = `
    -Array [
    -  Object {
    +[
    +  {
         "length": 4,
         "offset": 0,
         "style": "BOLD",
       },
    -  Object {
    +  {
         "length": 2,
         "offset": 5,
         "style": "BOLD",
       },
    -  Object {
    +  {
         "length": 2,
         "offset": 8,
         "style": "BOLD",
       },
    -  Object {
    +  {
         "length": 3,
         "offset": 5,
         "style": "ITALIC",
       },
    -  Object {
    +  {
         "length": 1,
         "offset": 9,
         "style": "ITALIC",
       },
    -  Object {
    +  {
         "length": 3,
         "offset": 7,
         "style": "UNDERLINE",
    @@ -56,8 +56,8 @@ Array [
     `;
     
     exports[`must encode for a flat styled document 1`] = `
    -Array [
    -  Object {
    +[
    +  {
         "length": 20,
         "offset": 0,
         "style": "BOLD",
    @@ -66,13 +66,13 @@ Array [
     `;
     
     exports[`must encode for a flat styled document 2`] = `
    -Array [
    -  Object {
    +[
    +  {
         "length": 20,
         "offset": 0,
         "style": "BOLD",
       },
    -  Object {
    +  {
         "length": 20,
         "offset": 0,
         "style": "ITALIC",
    @@ -81,18 +81,18 @@ Array [
     `;
     
     exports[`must encode for a flat styled document 3`] = `
    -Array [
    -  Object {
    +[
    +  {
         "length": 20,
         "offset": 0,
         "style": "BOLD",
       },
    -  Object {
    +  {
         "length": 20,
         "offset": 0,
         "style": "ITALIC",
       },
    -  Object {
    +  {
         "length": 20,
         "offset": 0,
         "style": "UNDERLINE",
    @@ -100,22 +100,22 @@ Array [
     ]
     `;
     
    -exports[`must encode for an unstyled document 1`] = `Array []`;
    +exports[`must encode for an unstyled document 1`] = `[]`;
     
    -exports[`must encode for an unstyled document 2`] = `Array []`;
    +exports[`must encode for an unstyled document 2`] = `[]`;
     
    -exports[`must encode for an unstyled document 3`] = `Array []`;
    +exports[`must encode for an unstyled document 3`] = `[]`;
     
    -exports[`must encode for an unstyled document 4`] = `Array []`;
    +exports[`must encode for an unstyled document 4`] = `[]`;
     
     exports[`must encode for strings with surrogate pairs 1`] = `
    -Array [
    -  Object {
    +[
    +  {
         "length": 4,
         "offset": 4,
         "style": "BOLD",
       },
    -  Object {
    +  {
         "length": 8,
         "offset": 6,
         "style": "ITALIC",
    diff --git a/src/model/encoding/__tests__/convertFromDraftStateToRaw-test.ts b/src/model/encoding/__tests__/convertFromDraftStateToRaw-test.ts
    index 0670fe0d85..924321d7ef 100644
    --- a/src/model/encoding/__tests__/convertFromDraftStateToRaw-test.ts
    +++ b/src/model/encoding/__tests__/convertFromDraftStateToRaw-test.ts
    @@ -13,11 +13,12 @@ import {
       makeCharacterMetadata,
     } from '../../immutable/CharacterMetadata';
     import {makeDraftEntityInstance} from '../../entity/DraftEntityInstance';
    -import {addEntity, createFromBlockArray} from '../../immutable/ContentState';
    +import {createFromBlockArray} from '../../immutable/ContentState';
     import {makeContentBlock} from '../../immutable/ContentBlock';
     import convertFromDraftStateToRaw from '../convertFromDraftStateToRaw';
    +import {addEntity} from '../../immutable/EntityMap';
     
    -const {contentState} = getSampleStateForTesting();
    +let {contentState} = getSampleStateForTesting();
     
     const getMetadata = entityKey =>
       Array.from(repeat(5, makeCharacterMetadata({entity: entityKey})));
    @@ -31,7 +32,7 @@ const getLink = entityKey =>
       });
     // We start numbering our entities with '2' because getSampleStateForTesting
     // already created an entity with key '1'.
    -const contentStateWithNonContiguousEntities = createFromBlockArray([
    +let contentStateWithNonContiguousEntities = createFromBlockArray([
       makeContentBlock({
         key: 'a',
         type: 'unstyled',
    @@ -58,10 +59,21 @@ const contentStateWithNonContiguousEntities = createFromBlockArray([
       }),
     ]);
     
    -addEntity(getLink('3'));
    -addEntity(getLink('4'));
    -addEntity(getLink('5'));
    -addEntity(getLink('6'));
    +let entityMap = contentState.entityMap;
    +entityMap = addEntity(entityMap, '3', getLink('3'));
    +entityMap = addEntity(entityMap, '4', getLink('4'));
    +entityMap = addEntity(entityMap, '5', getLink('5'));
    +entityMap = addEntity(entityMap, '6', getLink('6'));
    +
    +contentState = {
    +  ...contentState,
    +  entityMap,
    +};
    +
    +contentStateWithNonContiguousEntities = {
    +  ...contentStateWithNonContiguousEntities,
    +  entityMap,
    +};
     
     const assertConvertFromDraftStateToRaw = content => {
       expect(convertFromDraftStateToRaw(content)).toMatchSnapshot();
    diff --git a/src/model/encoding/__tests__/convertFromHTMLToContentBlocks-test.ts b/src/model/encoding/__tests__/convertFromHTMLToContentBlocks-test.ts
    index a4bf6ff952..52434803f9 100644
    --- a/src/model/encoding/__tests__/convertFromHTMLToContentBlocks-test.ts
    +++ b/src/model/encoding/__tests__/convertFromHTMLToContentBlocks-test.ts
    @@ -14,6 +14,7 @@ import NonASCIIStringSnapshotSerializer from '../../../NonASCIIStringSnapshotSer
     import convertFromHTMLToContentBlocks from '../convertFromHTMLToContentBlocks';
     import {blockToJson} from '../../../util/blockMapToJson';
     import GKX from '../../../stubs/gkx';
    +import {first} from '../../descript/Iterables';
     
     // eslint-disable-next-line @typescript-eslint/ban-ts-comment
     // @ts-ignore
    @@ -113,9 +114,7 @@ test('img with http protocol should have camera emoji content', () => {
       const entityMap = blocks?.entityMap;
       expect(entityMap).not.toBe(null);
       if (entityMap != null) {
    -    expect(
    -      entityMap.__get(entityMap.__getLastCreatedEntityKey()).mutability,
    -    ).toBe('IMMUTABLE');
    +    expect(first(entityMap.values())?.mutability).toBe('IMMUTABLE');
       }
     });
     
    @@ -127,9 +126,7 @@ test('img with https protocol should have camera emoji content', () => {
       const entityMap = blocks?.entityMap;
       expect(entityMap).not.toBe(null);
       if (entityMap != null) {
    -    expect(
    -      entityMap.__get(entityMap.__getLastCreatedEntityKey()).mutability,
    -    ).toBe('IMMUTABLE');
    +    expect(first(entityMap.values())?.mutability).toBe('IMMUTABLE');
       }
     });
     
    diff --git a/src/model/encoding/convertFromDraftStateToRaw.ts b/src/model/encoding/convertFromDraftStateToRaw.ts
    index 2c46e5d8a3..6d0f21af81 100644
    --- a/src/model/encoding/convertFromDraftStateToRaw.ts
    +++ b/src/model/encoding/convertFromDraftStateToRaw.ts
    @@ -1,4 +1,4 @@
    -import {ContentState, getEntity} from '../immutable/ContentState';
    +import {ContentState} from '../immutable/ContentState';
     import {ContentBlock} from '../immutable/ContentBlock';
     import {DraftEntityType} from '../entity/DraftEntityType';
     import {DraftEntityMutability} from '../entity/DraftEntityMutability';
    @@ -9,6 +9,7 @@ import encodeInlineStyleRanges, {
     } from './encodeInlineStyleRanges';
     import encodeEntityRanges, {EntityRange} from './encodeEntityRanges';
     import {BlockNode} from '../immutable/BlockNode';
    +import {EntityMap, getEntity} from '../immutable/EntityMap';
     
     type RawDraftEntity = {
       type: DraftEntityType;
    @@ -103,6 +104,7 @@ const encodeRawBlocks = (
     // Flip storage map so that our storage keys map to global
     // DraftEntity keys.
     const encodeRawEntityMap = (
    +  originalEntityMap: EntityMap,
       rawState: RawDraftContentState,
     ): RawDraftContentState => {
       const {blocks, entityMap} = rawState;
    @@ -110,7 +112,7 @@ const encodeRawEntityMap = (
       const rawEntityMap = {};
     
       Object.keys(entityMap).forEach((key, index) => {
    -    rawEntityMap[index] = getEntity(DraftStringKey.unstringify(key));
    +    rawEntityMap[index] = getEntity(originalEntityMap, DraftStringKey.unstringify(key));
       });
     
       return {
    @@ -131,7 +133,7 @@ export default function convertFromDraftStateToRaw(
       rawDraftContentState = encodeRawBlocks(contentState, rawDraftContentState);
     
       // add entities
    -  rawDraftContentState = encodeRawEntityMap(rawDraftContentState);
    +  rawDraftContentState = encodeRawEntityMap(contentState.entityMap, rawDraftContentState);
     
       return rawDraftContentState;
     }
    diff --git a/src/model/encoding/convertFromHTMLToContentBlocks.ts b/src/model/encoding/convertFromHTMLToContentBlocks.ts
    index 93bd38d926..e7906a2fb4 100644
    --- a/src/model/encoding/convertFromHTMLToContentBlocks.ts
    +++ b/src/model/encoding/convertFromHTMLToContentBlocks.ts
    @@ -19,8 +19,7 @@ import {
       CharacterMetadata,
       makeCharacterMetadata,
     } from '../immutable/CharacterMetadata';
    -import {EntityMap} from '../immutable/EntityMap';
    -import DraftEntity from '../entity/DraftEntity';
    +import {createEntity, EntityMap} from '../immutable/EntityMap';
     import generateRandomKey from '../keys/generateRandomKey';
     import {flatten, map, repeat} from '../descript/Iterables';
     import {makeContentBlock} from '../immutable/ContentBlock';
    @@ -291,7 +290,7 @@ class ContentBlocksBuilder {
       contentBlocks: Array = [];
     
       // Entity map use to store links and images found in the HTML nodes
    -  entityMap: EntityMap = DraftEntity;
    +  entityMap: EntityMap = new Map();
     
       // Map HTML tags to draftjs block types and disambiguation function
       blockTypeMap: BlockTypeMap;
    @@ -316,7 +315,7 @@ class ContentBlocksBuilder {
         this.currentDepth = 0;
         this.currentEntity = null;
         this.currentText = '';
    -    this.entityMap = DraftEntity;
    +    this.entityMap = new Map();
         this.wrapper = null;
         this.contentBlocks = [];
       }
    @@ -604,12 +603,14 @@ class ContentBlocksBuilder {
           }
         });
     
    -    // TODO: T15530363 update this when we remove DraftEntity entirely
    -    this.currentEntity = this.entityMap.__create(
    +    const createResult = createEntity(
    +      this.entityMap,
           'IMAGE',
           'IMMUTABLE',
           entityConfig,
         );
    +    this.entityMap = createResult.entityMap;
    +    this.currentEntity = createResult.entityKey;
     
         // The child text node cannot just have a space or return as content (since
         // we strip those out), unless the image is for presentation only.
    @@ -651,12 +652,15 @@ class ContentBlocksBuilder {
         });
     
         entityConfig.url = new URI(anchor.href).toString();
    -    // TODO: T15530363 update this when we remove DraftEntity completely
    -    this.currentEntity = this.entityMap.__create(
    +
    +    const entityResult = createEntity(
    +      this.entityMap,
           'LINK',
           'MUTABLE',
           entityConfig || {},
         );
    +    this.entityMap = entityResult.entityMap;
    +    this.currentEntity = entityResult.entityKey;
     
         blockConfigs.push(
           ...this._toBlockConfigs(Array.from(node.childNodes), style),
    diff --git a/src/model/entity/DraftEntity.ts b/src/model/entity/DraftEntity.ts
    deleted file mode 100644
    index 3e9879f9d5..0000000000
    --- a/src/model/entity/DraftEntity.ts
    +++ /dev/null
    @@ -1,265 +0,0 @@
    -/**
    - * Copyright (c) Facebook, Inc. and its affiliates.
    - *
    - * This source code is licensed under the MIT license found in the
    - * LICENSE file in the root directory of this source tree.
    - *
    - * @format
    - * @emails oncall+draft_js
    - */
    -
    -import {
    -  DraftEntityInstance,
    -  makeDraftEntityInstance,
    -} from './DraftEntityInstance';
    -import {DraftEntityType} from './DraftEntityType';
    -import {DraftEntityMutability} from './DraftEntityMutability';
    -import uuid from '../../util/uuid';
    -import invariant from '../../fbjs/invariant';
    -
    -let instances: Map = new Map();
    -let instanceKey: string = uuid();
    -
    -/**
    - * Temporary utility for generating the warnings
    - */
    -function logWarning(oldMethodCall: string, newMethodCall: string) {
    -  console.warn(
    -    'WARNING: ' +
    -      oldMethodCall +
    -      ' will be deprecated soon!\nPlease use "' +
    -      newMethodCall +
    -      '" instead.',
    -  );
    -}
    -
    -export type DraftEntityMapObject = {
    -  getLastCreatedEntityKey: () => string;
    -  create: (
    -    type: DraftEntityType,
    -    mutability: DraftEntityMutability,
    -    data?: Record,
    -  ) => string;
    -  add: (instance: DraftEntityInstance) => string;
    -  get: (key: string) => DraftEntityInstance;
    -  mergeData: (key: string, toMerge: Record) => DraftEntityInstance;
    -  replaceData: (
    -    key: string,
    -    newData: Record,
    -  ) => DraftEntityInstance;
    -  __loadWithEntities: (entities: Map) => void;
    -  __getAll: () => Map;
    -  __getLastCreatedEntityKey: () => string;
    -  __create: (
    -    type: DraftEntityType,
    -    mutability: DraftEntityMutability,
    -    data?: Record | null,
    -  ) => string;
    -  __add: (instance: DraftEntityInstance) => string;
    -  __get: (key: string) => DraftEntityInstance;
    -  __mergeData: (
    -    key: string,
    -    toMerge: {[K in string]: any},
    -  ) => DraftEntityInstance;
    -  __replaceData: (
    -    key: string,
    -    newData: {[K in string]: any},
    -  ) => DraftEntityInstance;
    -};
    -
    -/**
    - * A "document entity" is an object containing metadata associated with a
    - * piece of text in a ContentBlock.
    - *
    - * For example, a `link` entity might include a `uri` property. When a
    - * ContentBlock is rendered in the browser, text that refers to that link
    - * entity may be rendered as an anchor, with the `uri` as the href value.
    - *
    - * In a ContentBlock, every position in the text may correspond to zero
    - * or one entities. This correspondence is tracked using a key string,
    - * generated via DraftEntity.create() and used to obtain entity metadata
    - * via DraftEntity.get().
    - */
    -const DraftEntity: DraftEntityMapObject = {
    -  /**
    -   * WARNING: This method will be deprecated soon!
    -   * Please use 'contentState.getLastCreatedEntityKey' instead.
    -   * ---
    -   * Get the random key string from whatever entity was last created.
    -   * We need this to support the new API, as part of transitioning to put Entity
    -   * storage in contentState.
    -   */
    -  getLastCreatedEntityKey: function(): string {
    -    logWarning(
    -      'DraftEntity.getLastCreatedEntityKey',
    -      'contentState.getLastCreatedEntityKey',
    -    );
    -    return DraftEntity.__getLastCreatedEntityKey();
    -  },
    -
    -  /**
    -   * WARNING: This method will be deprecated soon!
    -   * Please use 'contentState.createEntity' instead.
    -   * ---
    -   * Create a DraftEntityInstance and store it for later retrieval.
    -   *
    -   * A random key string will be generated and returned. This key may
    -   * be used to track the entity's usage in a ContentBlock, and for
    -   * retrieving data about the entity at render time.
    -   */
    -  create: function(
    -    type: DraftEntityType,
    -    mutability: DraftEntityMutability,
    -    data?: Record,
    -  ): string {
    -    logWarning('DraftEntity.create', 'contentState.createEntity');
    -    return DraftEntity.__create(type, mutability, data);
    -  },
    -
    -  /**
    -   * WARNING: This method will be deprecated soon!
    -   * Please use 'contentState.addEntity' instead.
    -   * ---
    -   * Add an existing DraftEntityInstance to the DraftEntity map. This is
    -   * useful when restoring instances from the server.
    -   */
    -  add: function(instance: DraftEntityInstance): string {
    -    logWarning('DraftEntity.add', 'contentState.addEntity');
    -    return DraftEntity.__add(instance);
    -  },
    -
    -  /**
    -   * WARNING: This method will be deprecated soon!
    -   * Please use 'contentState.getEntity' instead.
    -   * ---
    -   * Retrieve the entity corresponding to the supplied key string.
    -   */
    -  get: function(key: string): DraftEntityInstance {
    -    logWarning('DraftEntity.get', 'contentState.getEntity');
    -    return DraftEntity.__get(key);
    -  },
    -
    -  /**
    -   * Get all the entities in the content state.
    -   */
    -  __getAll(): Map {
    -    return instances;
    -  },
    -
    -  /**
    -   * Load the entity map with the given set of entities.
    -   */
    -  __loadWithEntities(entities: Map): void {
    -    instances = entities;
    -    instanceKey = uuid();
    -  },
    -
    -  /**
    -   * WARNING: This method will be deprecated soon!
    -   * Please use 'contentState.mergeEntityData' instead.
    -   * ---
    -   * Entity instances are immutable. If you need to update the data for an
    -   * instance, this method will merge your data updates and return a new
    -   * instance.
    -   */
    -  mergeData: function(
    -    key: string,
    -    toMerge: {[K in string]: any},
    -  ): DraftEntityInstance {
    -    logWarning('DraftEntity.mergeData', 'contentState.mergeEntityData');
    -    return DraftEntity.__mergeData(key, toMerge);
    -  },
    -
    -  /**
    -   * WARNING: This method will be deprecated soon!
    -   * Please use 'contentState.replaceEntityData' instead.
    -   * ---
    -   * Completely replace the data for a given instance.
    -   */
    -  replaceData: function(
    -    key: string,
    -    newData: {[K in string]: any},
    -  ): DraftEntityInstance {
    -    logWarning('DraftEntity.replaceData', 'contentState.replaceEntityData');
    -    return DraftEntity.__replaceData(key, newData);
    -  },
    -
    -  // ***********************************WARNING******************************
    -  // --- the above public API will be deprecated in the next version of Draft!
    -  // The methods below this line are private - don't call them directly.
    -
    -  /**
    -   * Get the random key string from whatever entity was last created.
    -   * We need this to support the new API, as part of transitioning to put Entity
    -   * storage in contentState.
    -   */
    -  __getLastCreatedEntityKey(): string {
    -    return instanceKey;
    -  },
    -
    -  /**
    -   * Create a DraftEntityInstance and store it for later retrieval.
    -   *
    -   * A random key string will be generated and returned. This key may
    -   * be used to track the entity's usage in a ContentBlock, and for
    -   * retrieving data about the entity at render time.
    -   */
    -  __create: function(
    -    type: DraftEntityType,
    -    mutability: DraftEntityMutability,
    -    data?: Record | null,
    -  ): string {
    -    return DraftEntity.__add(
    -      makeDraftEntityInstance({type, mutability, data: data || undefined}),
    -    );
    -  },
    -
    -  /**
    -   * Add an existing DraftEntityInstance to the DraftEntity map. This is
    -   * useful when restoring instances from the server.
    -   */
    -  __add(instance: DraftEntityInstance): string {
    -    instanceKey = uuid();
    -    instances = instances.set(instanceKey, instance);
    -    return instanceKey;
    -  },
    -
    -  /**
    -   * Retrieve the entity corresponding to the supplied key string.
    -   */
    -  __get: function(key: string): DraftEntityInstance {
    -    const instance = instances.get(key);
    -    invariant(!!instance, 'Unknown DraftEntity key: %s.', key);
    -    return instance!;
    -  },
    -
    -  /**
    -   * Entity instances are immutable. If you need to update the data for an
    -   * instance, this method will merge your data updates and return a new
    -   * instance.
    -   */
    -  __mergeData: function(
    -    key: string,
    -    toMerge: {[K in string]: any},
    -  ): DraftEntityInstance {
    -    const instance = DraftEntity.__get(key);
    -    const newData = {...instance.data, ...toMerge};
    -    const newInstance = {...instance, data: newData};
    -    instances = instances.set(key, newInstance);
    -    return newInstance;
    -  },
    -
    -  /**
    -   * Completely replace the data for a given instance.
    -   */
    -  __replaceData: function(
    -    key: string,
    -    newData: {[K in string]: any},
    -  ): DraftEntityInstance {
    -    const instance = DraftEntity.__get(key);
    -    const newInstance = {...instance, data: newData};
    -    instances = instances.set(key, newInstance);
    -    return newInstance;
    -  },
    -};
    -export default DraftEntity;
    diff --git a/src/model/entity/__tests__/DraftEntity-test.ts b/src/model/entity/__tests__/DraftEntity-test.ts
    deleted file mode 100644
    index 2857b9a27c..0000000000
    --- a/src/model/entity/__tests__/DraftEntity-test.ts
    +++ /dev/null
    @@ -1,53 +0,0 @@
    -/**
    - * Copyright (c) Facebook, Inc. and its affiliates.
    - *
    - * This source code is licensed under the MIT license found in the
    - * LICENSE file in the root directory of this source tree.
    - *
    - * @emails oncall+draft_js
    - */
    -
    -import DraftEntity from '../DraftEntity';
    -
    -beforeEach(() => {
    -  jest.resetModules();
    -});
    -
    -const createLink = () => {
    -  return DraftEntity.__create('LINK', 'MUTABLE', {uri: 'zombo.com'});
    -};
    -
    -test('must create instances', () => {
    -  const key = createLink();
    -  expect(typeof key).toMatchSnapshot();
    -});
    -
    -test('must retrieve an instance given a key', () => {
    -  const key = createLink();
    -  const retrieved = DraftEntity.__get(key);
    -  expect(retrieved.type).toMatchSnapshot();
    -  expect(retrieved.mutability).toMatchSnapshot();
    -  expect(retrieved.data).toMatchSnapshot();
    -});
    -
    -test('must throw when retrieving for an invalid key', () => {
    -  createLink();
    -  expect(() => DraftEntity.__get('asdfzxcvqweriuop')).toThrow();
    -});
    -
    -test('must merge data', () => {
    -  const key = createLink();
    -
    -  // Merge new property.
    -  const newData = {foo: 'bar'};
    -  DraftEntity.__mergeData(key, newData);
    -  const newEntity = DraftEntity.__get(key);
    -
    -  // Replace existing property.
    -  const withNewURI = {uri: 'homestarrunner.com'};
    -  DraftEntity.__mergeData(key, withNewURI);
    -  const entityWithNewURI = DraftEntity.__get(key);
    -
    -  expect(newEntity.data).toMatchSnapshot();
    -  expect(entityWithNewURI.data).toMatchSnapshot();
    -});
    diff --git a/src/model/entity/__tests__/__snapshots__/DraftEntity-test.ts.snap b/src/model/entity/__tests__/__snapshots__/DraftEntity-test.ts.snap
    deleted file mode 100644
    index ac63496287..0000000000
    --- a/src/model/entity/__tests__/__snapshots__/DraftEntity-test.ts.snap
    +++ /dev/null
    @@ -1,27 +0,0 @@
    -// Jest Snapshot v1, https://goo.gl/fbAQLP
    -
    -exports[`must create instances 1`] = `"string"`;
    -
    -exports[`must merge data 1`] = `
    -Object {
    -  "foo": "bar",
    -  "uri": "zombo.com",
    -}
    -`;
    -
    -exports[`must merge data 2`] = `
    -Object {
    -  "foo": "bar",
    -  "uri": "homestarrunner.com",
    -}
    -`;
    -
    -exports[`must retrieve an instance given a key 1`] = `"LINK"`;
    -
    -exports[`must retrieve an instance given a key 2`] = `"MUTABLE"`;
    -
    -exports[`must retrieve an instance given a key 3`] = `
    -Object {
    -  "uri": "zombo.com",
    -}
    -`;
    diff --git a/src/model/entity/__tests__/getEntityKeyForSelection-test.ts b/src/model/entity/__tests__/getEntityKeyForSelection-test.ts
    index da42a8ff94..e6b62b7d4d 100644
    --- a/src/model/entity/__tests__/getEntityKeyForSelection-test.ts
    +++ b/src/model/entity/__tests__/getEntityKeyForSelection-test.ts
    @@ -8,10 +8,10 @@
      * @format
      */
     import getSampleStateForTesting from '../../transaction/getSampleStateForTesting';
    -import DraftEntity from '../DraftEntity';
     import getEntityKeyForSelection from '../getEntityKeyForSelection';
     import {getBlockForKey} from '../../immutable/ContentState';
     import {DraftEntityMutability} from '../DraftEntityMutability';
    +import * as EntityMap from '../../immutable/EntityMap';
     
     const {contentState, selectionState} = getSampleStateForTesting();
     
    @@ -40,17 +40,19 @@ const NON_COLLAPSED_SELECTION = {
       focusOffset: 2,
     };
     
    -const origGet = DraftEntity.__get;
    +const origGet = EntityMap.getEntity;
     afterEach(() => {
    -  DraftEntity.__get = origGet;
    +  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
    +  // @ts-ignore
    +  EntityMap.getEntity = origGet;
     });
     
     const setEntityMutability = (mutability: DraftEntityMutability) => {
       // eslint-disable-next-line @typescript-eslint/ban-ts-comment
       // @ts-ignore
    -  DraftEntity.__get = () => ({
    +  EntityMap.getEntity = () => ({
         mutability,
    -  });
    +  })
     };
     
     test('must return null at start of block with collapsed selection', () => {
    diff --git a/src/model/entity/getEntityKeyForSelection.ts b/src/model/entity/getEntityKeyForSelection.ts
    index 464ea41486..59a329935e 100644
    --- a/src/model/entity/getEntityKeyForSelection.ts
    +++ b/src/model/entity/getEntityKeyForSelection.ts
    @@ -7,7 +7,7 @@
      * @emails oncall+draft_js
      */
     
    -import {EntityMap} from '../immutable/EntityMap';
    +import {EntityMap, getEntity} from '../immutable/EntityMap';
     import {ContentState} from '../immutable/ContentState';
     import {
       getStartKey,
    @@ -16,7 +16,6 @@ import {
       SelectionState,
     } from '../immutable/SelectionState';
     import {getEntityAt} from '../immutable/ContentBlock';
    -import DraftEntity from './DraftEntity';
     import {notEmptyKey} from '../../component/utils/draftKeyUtils';
     
     /**
    @@ -39,7 +38,7 @@ export default function getEntityKeyForSelection(
           if (entityKey !== getEntityAt(contentState.blockMap.get(key)!, offset)) {
             return null;
           }
    -      return filterKey(DraftEntity, entityKey);
    +      return filterKey(contentState.entityMap, entityKey);
         }
         return null;
       }
    @@ -53,7 +52,7 @@ export default function getEntityKeyForSelection(
           ? null
           : getEntityAt(startBlock, startOffset);
     
    -  return filterKey(DraftEntity, entityKey);
    +  return filterKey(contentState.entityMap, entityKey);
     }
     
     /**
    @@ -65,7 +64,7 @@ function filterKey(
       entityKey: string | null,
     ): string | null {
       if (notEmptyKey(entityKey)) {
    -    const entity = entityMap.__get(entityKey);
    +    const entity = getEntity(entityMap, entityKey);
         return entity.mutability === 'MUTABLE' ? entityKey : null;
       }
       return null;
    diff --git a/src/model/immutable/ContentState.ts b/src/model/immutable/ContentState.ts
    index 05221ff39c..590fa13ed5 100644
    --- a/src/model/immutable/ContentState.ts
    +++ b/src/model/immutable/ContentState.ts
    @@ -14,32 +14,32 @@ import {
       makeNullSelection,
     } from './SelectionState';
     import {first, join, makeMemoizedToArray, map} from '../descript/Iterables';
    -import {DraftEntityType} from '../entity/DraftEntityType';
    -import {DraftEntityMutability} from '../entity/DraftEntityMutability';
     import {createFromArray} from './BlockMapBuilder';
     import {makeContentBlock} from './ContentBlock';
    -import DraftEntity, {DraftEntityMapObject} from '../entity/DraftEntity';
    -import {DraftEntityInstance} from '../entity/DraftEntityInstance';
     import sanitizeDraftText from '../encoding/sanitizeDraftText';
     import {BlockNode} from './BlockNode';
     import memoizeOne from 'memoize-one';
     import {genKey} from '../../Draft';
    +import {EntityMap} from './EntityMap';
     
     export type ContentState = Readonly<{
       blockMap: BlockMap;
       selectionBefore: SelectionState;
       selectionAfter: SelectionState;
    +  entityMap: EntityMap;
     }>;
     
     export function makeContentState({
       blockMap,
       selectionAfter = makeEmptySelection(first(blockMap.keys())!),
       selectionBefore = makeEmptySelection(first(blockMap.keys())!),
    +  entityMap = new Map(),
     }: Partial & Pick): ContentState {
       return {
         blockMap,
         selectionBefore,
         selectionAfter,
    +    entityMap,
       };
     }
     
    @@ -70,11 +70,6 @@ function getIndexForBlockKey(blockMap: BlockMap, blockKey: string): number {
       return index;
     }
     
    -export function getLastCreatedEntityKey(): string {
    -  // TODO: update this when we fully remove DraftEntity
    -  return DraftEntity.__getLastCreatedEntityKey();
    -}
    -
     export function getBlockForKey(
       {blockMap}: ContentState,
       key: string,
    @@ -126,41 +121,6 @@ export function getPlainText(content: ContentState, separator = '\n'): string {
       );
     }
     
    -export function createEntity(
    -  type: DraftEntityType,
    -  mutability: DraftEntityMutability,
    -  data?: Record | null,
    -): string {
    -  // TODO: update this when we fully remove DraftEntity
    -  return DraftEntity.__create(type, mutability, data);
    -}
    -
    -export function mergeEntityData(
    -  key: string,
    -  toMerge: Record,
    -): void {
    -  // TODO: update this when we fully remove DraftEntity
    -  DraftEntity.__mergeData(key, toMerge);
    -}
    -
    -export function replaceEntityData(
    -  key: string,
    -  newData: Record,
    -): void {
    -  // TODO: update this when we fully remove DraftEntity
    -  DraftEntity.__replaceData(key, newData);
    -}
    -
    -export function addEntity(instance: DraftEntityInstance): void {
    -  // TODO: update this when we fully remove DraftEntity
    -  DraftEntity.__add(instance);
    -}
    -
    -export function getEntity(key: string): DraftEntityInstance {
    -  // TODO: update this when we fully remove DraftEntity
    -  return DraftEntity.__get(key);
    -}
    -
     export function createFromBlockArray(
       blocks: BlockNode[] | {contentBlocks: BlockNode[]},
     ): ContentState {
    @@ -227,7 +187,3 @@ export function getBlockAfter(
       }
       return block;
     }
    -
    -export function getEntityMap(_: ContentState): DraftEntityMapObject {
    -  return DraftEntity;
    -}
    diff --git a/src/model/immutable/EntityMap.ts b/src/model/immutable/EntityMap.ts
    index 770edca36f..a04f4d5a7e 100644
    --- a/src/model/immutable/EntityMap.ts
    +++ b/src/model/immutable/EntityMap.ts
    @@ -8,9 +8,48 @@
      * @emails oncall+draft_js
      */
     
    -import {DraftEntityMapObject} from '../entity/DraftEntity';
    +import {DraftEntityType} from '../entity/DraftEntityType';
    +import {DraftEntityMutability} from '../entity/DraftEntityMutability';
    +import uuid from '../../util/uuid';
    +import {
    +  DraftEntityInstance,
    +  makeDraftEntityInstance,
    +} from '../entity/DraftEntityInstance';
    +import invariant from '../../fbjs/invariant';
     
    -// TODO: when removing the deprecated Entity api
    -// change this to be
    -// OrderedMap;
    -export type EntityMap = DraftEntityMapObject;
    +export type EntityMap = ReadonlyMap;
    +
    +export function createEntity(
    +  entityMap: EntityMap,
    +  type: DraftEntityType,
    +  mutability: DraftEntityMutability,
    +  data?: Record,
    +): {entityKey: string; entityMap: EntityMap} {
    +  const entityKey = uuid();
    +  const newMap = new Map(entityMap);
    +  newMap.set(entityKey, makeDraftEntityInstance({type, mutability, data}));
    +  return {
    +    entityKey,
    +    entityMap: newMap,
    +  };
    +}
    +
    +export function addEntity(
    +  entityMap: EntityMap,
    +  entityKey: string,
    +  instance: DraftEntityInstance,
    +): EntityMap {
    +  const newMap = new Map(entityMap);
    +  newMap.set(entityKey, instance);
    +  return newMap;
    +}
    +
    +// eslint-disable-next-line prefer-const
    +export let getEntity = function getEntity(
    +  entityMap: EntityMap,
    +  key: string,
    +): DraftEntityInstance {
    +  const entity = entityMap.get(key);
    +  invariant(!!entity, 'Unknown DraftEntity key: %s.', key);
    +  return entity!;
    +};
    diff --git a/src/model/immutable/__tests__/BlockTree-test.ts b/src/model/immutable/__tests__/BlockTree-test.ts
    index 0056bc9642..c8a3862b52 100644
    --- a/src/model/immutable/__tests__/BlockTree-test.ts
    +++ b/src/model/immutable/__tests__/BlockTree-test.ts
    @@ -38,10 +38,10 @@ class Decorator implements DraftDecoratorType {
       getDecorations() {
         return [];
       }
    -  getComponentForKey(_: string) {
    +  getComponentForKey() {
         return () => null;
       }
    -  getPropsForKey(_: string) {
    +  getPropsForKey() {
         return null;
       }
     }
    diff --git a/src/model/immutable/__tests__/ContentState-test.ts b/src/model/immutable/__tests__/ContentState-test.ts
    index 6bcb5455cd..0cd378de3e 100644
    --- a/src/model/immutable/__tests__/ContentState-test.ts
    +++ b/src/model/immutable/__tests__/ContentState-test.ts
    @@ -8,19 +8,15 @@
      */
     
     import {
    -  createEntity,
       getBlockAfter,
       getBlockBefore,
       getBlockForKey,
    -  getEntity,
    -  getLastCreatedEntityKey,
       hasText,
       makeContentState,
    -  mergeEntityData,
    -  replaceEntityData,
     } from '../ContentState';
     import {createFromArray} from '../BlockMapBuilder';
     import {ContentBlock, makeContentBlock} from '../ContentBlock';
    +import {addEntity, createEntity, EntityMap, getEntity} from '../EntityMap';
     
     jest.mock('../SelectionState');
     
    @@ -31,8 +27,8 @@ const MULTI_BLOCK = [
     ];
     const ZERO_WIDTH_CHAR_BLOCK = [{text: unescape('%u200B%u200B'), key: 'a'}];
     
    -const createLink = () => {
    -  return createEntity('LINK', 'MUTABLE', {uri: 'zombo.com'});
    +const createLink = (entityMap: EntityMap) => {
    +  return createEntity(entityMap, 'LINK', 'MUTABLE', {uri: 'zombo.com'});
     };
     
     const getSample = (textBlocks: (Partial & {key: string})[]) => {
    @@ -80,45 +76,28 @@ test('must not include zero width chars for has text', () => {
     });
     
     test('must create entities instances', () => {
    -  createLink();
    -  expect(typeof getLastCreatedEntityKey()).toMatchSnapshot();
    -});
    -
    -test('must retrieve an entities instance given a key', () => {
    -  const retrieved = getEntity(getLastCreatedEntityKey());
    -  expect(retrieved).toMatchSnapshot();
    +  const {entityMap, entityKey} = createLink(new Map());
    +  expect(getEntity(entityMap, entityKey)).toMatchSnapshot();
     });
     
     test('must throw when retrieving entities for an invalid key', () => {
    -  createLink();
    -  expect(() => getEntity('asdfzxcvqweriuop')).toThrow();
    -});
    -
    -test('must merge entities data', () => {
    -  createLink();
    -  const key = getLastCreatedEntityKey();
    -
    -  // Merge new property.
    -  mergeEntityData(key, {foo: 'bar'});
    -  const updatedEntity = getEntity(key);
    -
    -  // Replace existing property.
    -  mergeEntityData(key, {uri: 'homestarrunner.com'});
    -  const entityWithNewURI = getEntity(key);
    -
    -  expect(updatedEntity.data).toMatchSnapshot();
    -  expect(entityWithNewURI.data).toMatchSnapshot();
    +  const {entityMap} = createLink(new Map());
    +  expect(() => getEntity(entityMap, 'asdfzxcvqweriuop')).toThrow();
     });
     
     test('must replace entities data', () => {
    -  createLink();
    -  const key = getLastCreatedEntityKey();
    -
    -  replaceEntityData(key, {
    -    uri: 'something.com',
    -    newProp: 'baz',
    +  let {entityMap, entityKey} = createLink(new Map());
    +
    +  entityMap = addEntity(entityMap, entityKey, {
    +    type: 'LINK',
    +    mutability: 'MUTABLE',
    +    data: {
    +      uri: 'something.com',
    +      newProp: 'baz',
    +    }
       });
    -  const entityWithReplacedData = getEntity(key);
    +
    +  const entityWithReplacedData = getEntity(entityMap, entityKey);
     
       expect(entityWithReplacedData.data).toMatchSnapshot();
     });
    diff --git a/src/model/immutable/__tests__/EditorState-test.ts b/src/model/immutable/__tests__/EditorState-test.ts
    index 4648909502..29126dafee 100644
    --- a/src/model/immutable/__tests__/EditorState-test.ts
    +++ b/src/model/immutable/__tests__/EditorState-test.ts
    @@ -31,10 +31,10 @@ class Decorator implements DraftDecoratorType {
       getDecorations() {
         return [];
       }
    -  getComponentForKey(_: string) {
    +  getComponentForKey() {
         return () => null;
       }
    -  getPropsForKey(_: string) {
    +  getPropsForKey() {
         return null;
       }
     }
    @@ -259,10 +259,10 @@ test('must set a new decorator', () => {
         getDecorations() {
           return [];
         }
    -    getComponentForKey(_: string) {
    +    getComponentForKey() {
           return () => null;
         }
    -    getPropsForKey(_: string) {
    +    getPropsForKey() {
           return null;
         }
       }
    diff --git a/src/model/immutable/__tests__/__snapshots__/BlockTree-test.ts.snap b/src/model/immutable/__tests__/__snapshots__/BlockTree-test.ts.snap
    index b072df38b7..de3b700f7d 100644
    --- a/src/model/immutable/__tests__/__snapshots__/BlockTree-test.ts.snap
    +++ b/src/model/immutable/__tests__/__snapshots__/BlockTree-test.ts.snap
    @@ -1,20 +1,20 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
     exports[`must generate for styled block with empty decorator 1`] = `
    -Array [
    -  Object {
    +[
    +  {
         "decoratorKey": null,
         "end": 10,
    -    "leaves": Array [
    -      Object {
    +    "leaves": [
    +      {
             "end": 4,
             "start": 0,
           },
    -      Object {
    +      {
             "end": 8,
             "start": 4,
           },
    -      Object {
    +      {
             "end": 10,
             "start": 8,
           },
    @@ -25,42 +25,42 @@ Array [
     `;
     
     exports[`must generate for styled block with multiple decorators 1`] = `
    -Array [
    -  Object {
    +[
    +  {
         "decoratorKey": "y",
         "end": 3,
    -    "leaves": Array [
    -      Object {
    +    "leaves": [
    +      {
             "end": 3,
             "start": 0,
           },
         ],
         "start": 0,
       },
    -  Object {
    +  {
         "decoratorKey": null,
         "end": 6,
    -    "leaves": Array [
    -      Object {
    +    "leaves": [
    +      {
             "end": 4,
             "start": 3,
           },
    -      Object {
    +      {
             "end": 6,
             "start": 4,
           },
         ],
         "start": 3,
       },
    -  Object {
    +  {
         "decoratorKey": "z",
         "end": 10,
    -    "leaves": Array [
    -      Object {
    +    "leaves": [
    +      {
             "end": 8,
             "start": 6,
           },
    -      Object {
    +      {
             "end": 10,
             "start": 8,
           },
    @@ -71,42 +71,42 @@ Array [
     `;
     
     exports[`must generate for styled block with single decorator 1`] = `
    -Array [
    -  Object {
    +[
    +  {
         "decoratorKey": null,
         "end": 3,
    -    "leaves": Array [
    -      Object {
    +    "leaves": [
    +      {
             "end": 3,
             "start": 0,
           },
         ],
         "start": 0,
       },
    -  Object {
    +  {
         "decoratorKey": "x",
         "end": 6,
    -    "leaves": Array [
    -      Object {
    +    "leaves": [
    +      {
             "end": 4,
             "start": 3,
           },
    -      Object {
    +      {
             "end": 6,
             "start": 4,
           },
         ],
         "start": 3,
       },
    -  Object {
    +  {
         "decoratorKey": null,
         "end": 10,
    -    "leaves": Array [
    -      Object {
    +    "leaves": [
    +      {
             "end": 8,
             "start": 6,
           },
    -      Object {
    +      {
             "end": 10,
             "start": 8,
           },
    @@ -117,12 +117,12 @@ Array [
     `;
     
     exports[`must generate for unstyled block with empty decorator 1`] = `
    -Array [
    -  Object {
    +[
    +  {
         "decoratorKey": null,
         "end": 7,
    -    "leaves": Array [
    -      Object {
    +    "leaves": [
    +      {
             "end": 7,
             "start": 0,
           },
    @@ -133,34 +133,34 @@ Array [
     `;
     
     exports[`must generate for unstyled block with multiple decorators 1`] = `
    -Array [
    -  Object {
    +[
    +  {
         "decoratorKey": "y",
         "end": 3,
    -    "leaves": Array [
    -      Object {
    +    "leaves": [
    +      {
             "end": 3,
             "start": 0,
           },
         ],
         "start": 0,
       },
    -  Object {
    +  {
         "decoratorKey": null,
         "end": 6,
    -    "leaves": Array [
    -      Object {
    +    "leaves": [
    +      {
             "end": 6,
             "start": 3,
           },
         ],
         "start": 3,
       },
    -  Object {
    +  {
         "decoratorKey": "z",
         "end": 7,
    -    "leaves": Array [
    -      Object {
    +    "leaves": [
    +      {
             "end": 7,
             "start": 6,
           },
    @@ -171,34 +171,34 @@ Array [
     `;
     
     exports[`must generate for unstyled block with single decorator 1`] = `
    -Array [
    -  Object {
    +[
    +  {
         "decoratorKey": null,
         "end": 3,
    -    "leaves": Array [
    -      Object {
    +    "leaves": [
    +      {
             "end": 3,
             "start": 0,
           },
         ],
         "start": 0,
       },
    -  Object {
    +  {
         "decoratorKey": "x",
         "end": 6,
    -    "leaves": Array [
    -      Object {
    +    "leaves": [
    +      {
             "end": 6,
             "start": 3,
           },
         ],
         "start": 3,
       },
    -  Object {
    +  {
         "decoratorKey": null,
         "end": 7,
    -    "leaves": Array [
    -      Object {
    +    "leaves": [
    +      {
             "end": 7,
             "start": 6,
           },
    diff --git a/src/model/immutable/__tests__/__snapshots__/CharacterMetadata-test.ts.snap b/src/model/immutable/__tests__/__snapshots__/CharacterMetadata-test.ts.snap
    index 9c5403f507..fad903e9bc 100644
    --- a/src/model/immutable/__tests__/__snapshots__/CharacterMetadata-test.ts.snap
    +++ b/src/model/immutable/__tests__/__snapshots__/CharacterMetadata-test.ts.snap
    @@ -11,7 +11,7 @@ exports[`must apply style 2`] = `true`;
     exports[`must apply style 3`] = `true`;
     
     exports[`must have appropriate default values 1`] = `
    -Object {
    +{
       "entity": null,
       "style": Set {},
     }
    diff --git a/src/model/immutable/__tests__/__snapshots__/ContentBlock-test.ts.snap b/src/model/immutable/__tests__/__snapshots__/ContentBlock-test.ts.snap
    index 60e0d189c2..03a70d1bec 100644
    --- a/src/model/immutable/__tests__/__snapshots__/ContentBlock-test.ts.snap
    +++ b/src/model/immutable/__tests__/__snapshots__/ContentBlock-test.ts.snap
    @@ -1,16 +1,16 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
     exports[`must correctly identify ranges of entities 1`] = `
    -Array [
    -  Array [
    +[
    +  [
         0,
         1,
       ],
    -  Array [
    +  [
         1,
         4,
       ],
    -  Array [
    +  [
         4,
         5,
       ],
    @@ -18,20 +18,20 @@ Array [
     `;
     
     exports[`must correctly identify ranges of styles 1`] = `
    -Array [
    -  Array [
    +[
    +  [
         0,
         1,
       ],
    -  Array [
    +  [
         1,
         3,
       ],
    -  Array [
    +  [
         3,
         4,
       ],
    -  Array [
    +  [
         4,
         5,
       ],
    @@ -49,24 +49,24 @@ exports[`must have appropriate default values 4`] = `5`;
     exports[`must have appropriate default values 5`] = `5`;
     
     exports[`must have appropriate default values 6`] = `
    -Array [
    -  Object {
    +[
    +  {
         "entity": null,
         "style": Set {},
       },
    -  Object {
    +  {
         "entity": null,
         "style": Set {},
       },
    -  Object {
    +  {
         "entity": null,
         "style": Set {},
       },
    -  Object {
    +  {
         "entity": null,
         "style": Set {},
       },
    -  Object {
    +  {
         "entity": null,
         "style": Set {},
       },
    diff --git a/src/model/immutable/__tests__/__snapshots__/ContentState-test.ts.snap b/src/model/immutable/__tests__/__snapshots__/ContentState-test.ts.snap
    index 32ef864ab7..8043ef79d3 100644
    --- a/src/model/immutable/__tests__/__snapshots__/ContentState-test.ts.snap
    +++ b/src/model/immutable/__tests__/__snapshots__/ContentState-test.ts.snap
    @@ -18,19 +18,13 @@ exports[`key fetching must succeed or fail properly 6`] = `"b"`;
     
     exports[`key fetching must succeed or fail properly 7`] = `undefined`;
     
    -exports[`must create entities instances 1`] = `"string"`;
    -
    -exports[`must merge entities data 1`] = `
    -Object {
    -  "foo": "bar",
    -  "uri": "zombo.com",
    -}
    -`;
    -
    -exports[`must merge entities data 2`] = `
    -Object {
    -  "foo": "bar",
    -  "uri": "homestarrunner.com",
    +exports[`must create entities instances 1`] = `
    +{
    +  "data": {
    +    "uri": "zombo.com",
    +  },
    +  "mutability": "MUTABLE",
    +  "type": "LINK",
     }
     `;
     
    @@ -41,18 +35,8 @@ exports[`must not include zero width chars for has text 2`] = `true`;
     exports[`must not include zero width chars for has text 3`] = `true`;
     
     exports[`must replace entities data 1`] = `
    -Object {
    +{
       "newProp": "baz",
       "uri": "something.com",
     }
     `;
    -
    -exports[`must retrieve an entities instance given a key 1`] = `
    -Object {
    -  "data": Object {
    -    "uri": "zombo.com",
    -  },
    -  "mutability": "MUTABLE",
    -  "type": "LINK",
    -}
    -`;
    diff --git a/src/model/immutable/__tests__/__snapshots__/EditorBidiService-test.ts.snap b/src/model/immutable/__tests__/__snapshots__/EditorBidiService-test.ts.snap
    index 9510e79ff1..eacba64a5b 100644
    --- a/src/model/immutable/__tests__/__snapshots__/EditorBidiService-test.ts.snap
    +++ b/src/model/immutable/__tests__/__snapshots__/EditorBidiService-test.ts.snap
    @@ -1,7 +1,7 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
     exports[`must create a new map 1`] = `
    -Object {
    +{
       "a": "LTR",
     }
     `;
    @@ -11,13 +11,13 @@ exports[`must return a new map if block keys change 1`] = `true`;
     exports[`must return a new map if block keys change 2`] = `true`;
     
     exports[`must return a new map if block keys change 3`] = `
    -Object {
    +{
       "a": "LTR",
     }
     `;
     
     exports[`must return a new map if block keys change 4`] = `
    -Object {
    +{
       "asdf": "LTR",
     }
     `;
    @@ -27,14 +27,14 @@ exports[`must return a new map if direction changes 1`] = `true`;
     exports[`must return a new map if direction changes 2`] = `true`;
     
     exports[`must return a new map if direction changes 3`] = `
    -Object {
    +{
       "a": "LTR",
       "c": "LTR",
     }
     `;
     
     exports[`must return a new map if direction changes 4`] = `
    -Object {
    +{
       "a": "LTR",
       "b": "RTL",
     }
    @@ -45,13 +45,13 @@ exports[`must return the same map if no changes 1`] = `true`;
     exports[`must return the same map if no changes 2`] = `true`;
     
     exports[`must return the same map if no changes 3`] = `
    -Object {
    +{
       "a": "LTR",
     }
     `;
     
     exports[`must return the same map if no changes 4`] = `
    -Object {
    +{
       "a": "LTR",
     }
     `;
    @@ -63,13 +63,13 @@ exports[`must return the same map if no directions change 2`] = `true`;
     exports[`must return the same map if no directions change 3`] = `true`;
     
     exports[`must return the same map if no directions change 4`] = `
    -Object {
    +{
       "a": "LTR",
     }
     `;
     
     exports[`must return the same map if no directions change 5`] = `
    -Object {
    +{
       "a": "LTR",
     }
     `;
    @@ -81,13 +81,13 @@ exports[`must return the same map if no text changes 2`] = `true`;
     exports[`must return the same map if no text changes 3`] = `true`;
     
     exports[`must return the same map if no text changes 4`] = `
    -Object {
    +{
       "a": "LTR",
     }
     `;
     
     exports[`must return the same map if no text changes 5`] = `
    -Object {
    +{
       "a": "LTR",
     }
     `;
    diff --git a/src/model/immutable/__tests__/__snapshots__/SelectionState-test.ts.snap b/src/model/immutable/__tests__/__snapshots__/SelectionState-test.ts.snap
    index 3031eeb9fb..61cac28ce0 100644
    --- a/src/model/immutable/__tests__/__snapshots__/SelectionState-test.ts.snap
    +++ b/src/model/immutable/__tests__/__snapshots__/SelectionState-test.ts.snap
    @@ -1,7 +1,7 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
     exports[` 1`] = `
    -Object {
    +{
       "anchorKey": "a",
       "anchorOffset": 0,
       "focusKey": "a",
    @@ -12,7 +12,7 @@ Object {
     `;
     
     exports[` 2`] = `
    -Object {
    +{
       "anchorKey": "b",
       "anchorOffset": 10,
       "focusKey": "c",
    @@ -23,7 +23,7 @@ Object {
     `;
     
     exports[` 3`] = `
    -Object {
    +{
       "anchorKey": "a",
       "anchorOffset": 10,
       "focusKey": "a",
    @@ -34,7 +34,7 @@ Object {
     `;
     
     exports[`hasEdgeWithin is true if selection range is entirely within test range 1`] = `
    -Object {
    +{
       "anchorKey": "a",
       "anchorOffset": 5,
       "focusKey": "a",
    @@ -45,7 +45,7 @@ Object {
     `;
     
     exports[`must retrieve properties correctly 1`] = `
    -Array [
    +[
       "a",
       0,
       "a",
    @@ -68,7 +68,7 @@ exports[`properly identifies start and end keys 5`] = `"a"`;
     exports[`properly identifies start and end keys 6`] = `"c"`;
     
     exports[`properly identifies start and end keys when backward 1`] = `
    -Object {
    +{
       "anchorKey": "b",
       "anchorOffset": 10,
       "focusKey": "c",
    @@ -99,7 +99,7 @@ exports[`properly identifies start and end offsets 5`] = `20`;
     exports[`properly identifies start and end offsets 6`] = `15`;
     
     exports[`properly identifies start and end offsets when backward 1`] = `
    -Object {
    +{
       "anchorKey": "b",
       "anchorOffset": 10,
       "focusKey": "c",
    diff --git a/src/model/immutable/__tests__/__snapshots__/findRangesImmutable-test.ts.snap b/src/model/immutable/__tests__/__snapshots__/findRangesImmutable-test.ts.snap
    index 8ca3c9e6eb..2bb324ae9f 100644
    --- a/src/model/immutable/__tests__/__snapshots__/findRangesImmutable-test.ts.snap
    +++ b/src/model/immutable/__tests__/__snapshots__/findRangesImmutable-test.ts.snap
    @@ -1,22 +1,22 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
    -exports[`must be a no-op for an empty list 1`] = `Array []`;
    +exports[`must be a no-op for an empty list 1`] = `[]`;
     
     exports[`must identify each range 1`] = `
    -Array [
    -  Array [
    +[
    +  [
         0,
         2,
       ],
    -  Array [
    +  [
         2,
         4,
       ],
    -  Array [
    +  [
         4,
         6,
       ],
    -  Array [
    +  [
         6,
         8,
       ],
    @@ -24,8 +24,8 @@ Array [
     `;
     
     exports[`must identify the full list as a single range 1`] = `
    -Array [
    -  Array [
    +[
    +  [
         0,
         5,
       ],
    @@ -33,28 +33,28 @@ Array [
     `;
     
     exports[`must properly use \`areEqualFn\` 1`] = `
    -Array [
    -  Array [
    +[
    +  [
         0,
         1,
       ],
    -  Array [
    +  [
         1,
         2,
       ],
    -  Array [
    +  [
         2,
         3,
       ],
    -  Array [
    +  [
         3,
         4,
       ],
    -  Array [
    +  [
         4,
         5,
       ],
     ]
     `;
     
    -exports[`must properly use \`filterFn\` 1`] = `Array []`;
    +exports[`must properly use \`filterFn\` 1`] = `[]`;
    diff --git a/src/model/modifier/DraftModifier.ts b/src/model/modifier/DraftModifier.ts
    index 5e44b578e3..3c47c1abcc 100644
    --- a/src/model/modifier/DraftModifier.ts
    +++ b/src/model/modifier/DraftModifier.ts
    @@ -30,7 +30,6 @@ import insertFragmentIntoContentState, {
     import {DraftRemovalDirection} from '../constants/DraftRemovalDirection';
     import {getEntityAt} from '../immutable/ContentBlock';
     import getCharacterRemovalRange from './getCharacterRemovalRange';
    -import DraftEntity from '../entity/DraftEntity';
     import splitBlockInContentState from '../transaction/splitBlockInContentState';
     import ContentStateInlineStyle from '../transaction/ContentStateInlineStyle';
     import applyEntityToContentState, {
    @@ -164,7 +163,7 @@ const DraftModifier = {
         if (startKey === endKey) {
           if (startEntityKey && startEntityKey === endEntityKey) {
             const adjustedRemovalRange = getCharacterRemovalRange(
    -          DraftEntity,
    +          contentState.entityMap,
               startBlock,
               endBlock,
               rangeToRemove,
    diff --git a/src/model/modifier/RichTextEditorUtil.ts b/src/model/modifier/RichTextEditorUtil.ts
    index b602db1877..6228781a15 100644
    --- a/src/model/modifier/RichTextEditorUtil.ts
    +++ b/src/model/modifier/RichTextEditorUtil.ts
    @@ -22,7 +22,6 @@ import {
       getBlockAfter,
       getBlockBefore,
       getBlockForKey,
    -  getEntityMap,
     } from '../immutable/ContentState';
     import {
       getEndKey,
    @@ -41,17 +40,18 @@ import {
       inlineStyleWith,
       inlineStyleWithout,
     } from '../immutable/DraftInlineStyle';
    +import {getEntity} from '../immutable/EntityMap';
     
     const RichTextEditorUtil: RichTextUtils = {
       currentBlockContainsLink: function(editorState: EditorState): boolean {
         const selection = editorState.selection;
         const contentState = editorState.currentContent;
    -    const entityMap = getEntityMap(contentState);
    +    const {entityMap} = contentState;
         return getBlockForKey(contentState, selection.anchorKey)
           .characterList.slice(getStartOffset(selection), getEndOffset(selection))
           .some(v => {
             const entity = v.entity;
    -        return !!entity && entityMap.__get(entity).type === 'LINK';
    +        return !!entity && getEntity(entityMap, entity).type === 'LINK';
           });
       },
     
    diff --git a/src/model/modifier/__tests__/AtomicBlockUtils-test.ts b/src/model/modifier/__tests__/AtomicBlockUtils-test.ts
    index 537f80bbe5..ccfd0779f1 100644
    --- a/src/model/modifier/__tests__/AtomicBlockUtils-test.ts
    +++ b/src/model/modifier/__tests__/AtomicBlockUtils-test.ts
    @@ -11,7 +11,6 @@ import mockUUID from '../../keys/mockUUID';
     import getSampleStateForTesting from '../../transaction/getSampleStateForTesting';
     import {first, rest, takeNth} from '../../descript/Iterables';
     import {
    -  createEntity,
       getFirstBlock,
       getLastBlock,
     } from '../../immutable/ContentState';
    @@ -24,6 +23,7 @@ import {
     } from '../../immutable/SelectionState';
     import {ContentBlock} from '../../immutable/ContentBlock';
     import {DraftInsertionType} from '../../constants/DraftInsertionType';
    +import {createEntity} from '../../immutable/EntityMap';
     
     jest.mock('../../keys/generateRandomKey');
     jest.mock('../../../util/uuid', () => mockUUID);
    @@ -31,24 +31,18 @@ jest.mock('../../../util/uuid', () => mockUUID);
     const {editorState, contentState, selectionState} = getSampleStateForTesting();
     
     const initialBlock = first(contentState.blockMap.values())!;
    -const ENTITY_KEY = createEntity('TOKEN', 'MUTABLE');
    -const CHARACTER = ' ';
     
    -const getInvariantViolation = (msg: string) => {
    +// eslint-disable-next-line @typescript-eslint/ban-ts-comment
    +// @ts-ignore
    +const getInvariantViolation = (msg: string): Error => {
       try {
         /* eslint-disable-next-line */
         invariant(false, msg);
       } catch (e) {
    -    return e;
    +    return e as Error;
       }
     };
     
    -const toggleExperimentalTreeDataSupport = (enabled: boolean) => {
    -  jest.doMock('../../../stubs/gkx', () => (name: string) => {
    -    return name === 'draft_tree_data_support' ? enabled : false;
    -  });
    -};
    -
     const assertAtomic = (state: EditorState) => {
       expect(
         Array.from(state.currentContent.blockMap.values()).map(block => {
    @@ -65,12 +59,16 @@ const assertAtomic = (state: EditorState) => {
     
     const assertInsertAtomicBlock = (
       state = editorState,
    -  entity: string = ENTITY_KEY,
    -  character = CHARACTER,
    -  experimentalTreeDataSupport = false,
     ) => {
    -  toggleExperimentalTreeDataSupport(experimentalTreeDataSupport);
    -  const newState = AtomicBlockUtils.insertAtomicBlock(state, entity, character);
    +  const {entityMap, entityKey} = createEntity(state.currentContent.entityMap, 'TOKEN', 'MUTABLE');
    +  state = {
    +    ...state,
    +    currentContent: {
    +      ...state.currentContent,
    +      entityMap: entityMap,
    +    }
    +  }
    +  const newState = AtomicBlockUtils.insertAtomicBlock(state, entityKey, ' ');
       assertAtomic(newState);
       return newState;
     };
    diff --git a/src/model/modifier/__tests__/RichTextEditorUtil-test.ts b/src/model/modifier/__tests__/RichTextEditorUtil-test.ts
    index 246a8ab067..2659a81ce1 100644
    --- a/src/model/modifier/__tests__/RichTextEditorUtil-test.ts
    +++ b/src/model/modifier/__tests__/RichTextEditorUtil-test.ts
    @@ -18,17 +18,16 @@ import {
     import AtomicBlockUtils from '../AtomicBlockUtils';
     import {
       ContentState,
    -  createEntity,
       getBlockBefore,
       getFirstBlock,
       getLastBlock,
    -  getLastCreatedEntityKey,
     } from '../../immutable/ContentState';
     import DraftModifier from '../DraftModifier';
     import {makeSelectionState} from '../../immutable/SelectionState';
     import {find, some} from '../../descript/Iterables';
     import {DraftBlockType} from '../../constants/DraftBlockType';
     import {blockToJson} from '../../../util/blockMapToJson';
    +import {createEntity} from '../../immutable/EntityMap';
     
     const {editorState, selectionState} = getSampleStateForTesting();
     const {
    @@ -39,8 +38,14 @@ const {
     } = RichTextEditorUtil;
     
     const insertAtomicBlock = (targetEditorState: EditorState) => {
    -  createEntity('TEST', 'IMMUTABLE', null);
    -  const entityKey = getLastCreatedEntityKey();
    +  const {entityMap, entityKey} = createEntity(targetEditorState.currentContent.entityMap, 'TEST', 'IMMUTABLE');
    +  targetEditorState = {
    +    ...targetEditorState,
    +    currentContent: {
    +      ...targetEditorState.currentContent,
    +      entityMap,
    +    }
    +  };
       const character = ' ';
       const movedSelection = moveSelectionToEnd(targetEditorState);
       return AtomicBlockUtils.insertAtomicBlock(
    diff --git a/src/model/modifier/__tests__/__snapshots__/AtomicBlockUtils-test.ts.snap b/src/model/modifier/__tests__/__snapshots__/AtomicBlockUtils-test.ts.snap
    index 85127c624a..5620395d59 100644
    --- a/src/model/modifier/__tests__/__snapshots__/AtomicBlockUtils-test.ts.snap
    +++ b/src/model/modifier/__tests__/__snapshots__/AtomicBlockUtils-test.ts.snap
    @@ -1,183 +1,183 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
     exports[`must insert atomic after a block with collapsed selection 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -187,175 +187,175 @@ Array [
     `;
     
     exports[`must insert atomic at end of block 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alp",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -365,175 +365,175 @@ Array [
     `;
     
     exports[`must insert atomic at start of block 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "pha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -543,183 +543,183 @@ Array [
     `;
     
     exports[`must insert atomic at start of block with collapsed seletion 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -729,116 +729,116 @@ Array [
     `;
     
     exports[`must insert atomic for cross-block selection 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Al",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "st",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -848,180 +848,180 @@ Array [
     `;
     
     exports[`must insert atomic within a block 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "A",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "pha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -1031,184 +1031,184 @@ Array [
     `;
     
     exports[`must insert atomic within a block, via split with collapsed selection 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Al",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "pha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -1218,183 +1218,183 @@ Array [
     `;
     
     exports[`must move atomic after block 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -1404,183 +1404,183 @@ Array [
     `;
     
     exports[`must move atomic after block 2`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
         "type": "blockquote",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
    @@ -1590,183 +1590,183 @@ Array [
     `;
     
     exports[`must move atomic after block with collapsed selection 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -1776,183 +1776,183 @@ Array [
     `;
     
     exports[`must move atomic after block with collapsed selection 2`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
         "type": "blockquote",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
    @@ -1962,183 +1962,183 @@ Array [
     `;
     
     exports[`must move atomic at end of block 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -2148,171 +2148,171 @@ Array [
     `;
     
     exports[`must move atomic at end of block 2`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charl",
         "type": "blockquote",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
    @@ -2322,183 +2322,183 @@ Array [
     `;
     
     exports[`must move atomic at end of block with collapsed selection 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -2508,183 +2508,183 @@ Array [
     `;
     
     exports[`must move atomic at end of block with collapsed selection 2`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
         "type": "blockquote",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
    @@ -2694,183 +2694,183 @@ Array [
     `;
     
     exports[`must move atomic at start of block 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -2880,171 +2880,171 @@ Array [
     `;
     
     exports[`must move atomic at start of block 2`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "arlie",
    @@ -3054,183 +3054,183 @@ Array [
     `;
     
     exports[`must move atomic at start of block with collapsed selection 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -3240,183 +3240,183 @@ Array [
     `;
     
     exports[`must move atomic at start of block with collapsed selection 2`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +[
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -3426,183 +3426,183 @@ Array [
     `;
     
     exports[`must move atomic before block 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -3612,183 +3612,183 @@ Array [
     `;
     
     exports[`must move atomic before block 2`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +[
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -3798,183 +3798,183 @@ Array [
     `;
     
     exports[`must move atomic before block with collapsed selection 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -3984,183 +3984,183 @@ Array [
     `;
     
     exports[`must move atomic before block with collapsed selection 2`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +[
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -4170,183 +4170,183 @@ Array [
     `;
     
     exports[`must move atomic inbetween block 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -4356,54 +4356,54 @@ Array [
     `;
     
     exports[`must move atomic inbetween block 2`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "A",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
         "data": Map {},
    @@ -4412,132 +4412,132 @@ Array [
         "text": "pha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -4547,183 +4547,183 @@ Array [
     `;
     
     exports[`must move atomic inbetween block with collapsed selection 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -4733,58 +4733,58 @@ Array [
     `;
     
     exports[`must move atomic inbetween block with collapsed selection 2`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "Al",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
         "data": Map {},
    @@ -4793,132 +4793,132 @@ Array [
         "text": "pha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -4928,183 +4928,183 @@ Array [
     `;
     
     exports[`mustn't move atomic next to itself 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -5114,183 +5114,183 @@ Array [
     `;
     
     exports[`mustn't move atomic next to itself with collapsed selection 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    -        "entity": "3",
    -        "style": Array [],
    +  {
    +    "characterList": [
    +      {
    +        "entity": "1",
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": " ",
         "type": "atomic",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "key4",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    diff --git a/src/model/modifier/__tests__/__snapshots__/RichTextEditorUtil-test.ts.snap b/src/model/modifier/__tests__/__snapshots__/RichTextEditorUtil-test.ts.snap
    index 26a8e0a23c..68487c8b57 100644
    --- a/src/model/modifier/__tests__/__snapshots__/RichTextEditorUtil-test.ts.snap
    +++ b/src/model/modifier/__tests__/__snapshots__/RichTextEditorUtil-test.ts.snap
    @@ -9,30 +9,30 @@ exports[`onBackspace removes a preceding atomic block 1`] = `true`;
     exports[`onBackspace removes a preceding atomic block 2`] = `false`;
     
     exports[`onBackspace resets the current block type at the start of the first block 1`] = `
    -Object {
    -  "characterList": Array [
    -    Object {
    +{
    +  "characterList": [
    +    {
           "entity": null,
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": null,
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": null,
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": null,
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": null,
    -      "style": Array [],
    +      "style": [],
         },
       ],
    -  "data": Object {},
    +  "data": {},
       "depth": 0,
       "key": "a",
       "text": "Alpha",
    @@ -41,9 +41,9 @@ Object {
     `;
     
     exports[`onBackspace resets the current block type if empty 1`] = `
    -Object {
    -  "characterList": Array [],
    -  "data": Object {},
    +{
    +  "characterList": [],
    +  "data": {},
       "depth": 0,
       "key": "f",
       "text": "",
    @@ -60,52 +60,52 @@ exports[`onDelete removes a following atomic block 1`] = `false`;
     exports[`onDelete removes a following atomic block 2`] = `true`;
     
     exports[`tryToRemoveBlockStyleonDelete breaks out of code block on enter two blank lines 1`] = `
    -Object {
    -  "characterList": Array [
    -    Object {
    +{
    +  "characterList": [
    +    {
           "entity": null,
    -      "style": Array [
    +      "style": [
             "ITALIC",
           ],
         },
    -    Object {
    +    {
           "entity": null,
    -      "style": Array [
    +      "style": [
             "ITALIC",
           ],
         },
    -    Object {
    +    {
           "entity": null,
    -      "style": Array [
    +      "style": [
             "ITALIC",
           ],
         },
    -    Object {
    +    {
           "entity": null,
    -      "style": Array [
    +      "style": [
             "ITALIC",
           ],
         },
    -    Object {
    +    {
           "entity": null,
    -      "style": Array [
    +      "style": [
             "ITALIC",
           ],
         },
    -    Object {
    +    {
           "entity": null,
    -      "style": Array [
    +      "style": [
             "ITALIC",
           ],
         },
    -    Object {
    +    {
           "entity": null,
    -      "style": Array [
    +      "style": [
             "ITALIC",
           ],
         },
       ],
    -  "data": Object {},
    +  "data": {},
       "depth": 0,
       "key": "f",
       "text": "Charlie",
    diff --git a/src/model/modifier/getCharacterRemovalRange.ts b/src/model/modifier/getCharacterRemovalRange.ts
    index b1d54e3b6d..c880f56197 100644
    --- a/src/model/modifier/getCharacterRemovalRange.ts
    +++ b/src/model/modifier/getCharacterRemovalRange.ts
    @@ -7,7 +7,7 @@
      * @emails oncall+draft_js
      */
     
    -import {EntityMap} from '../immutable/EntityMap';
    +import {EntityMap, getEntity} from '../immutable/EntityMap';
     import {
       getEndOffset,
       getStartOffset,
    @@ -124,7 +124,7 @@ function getEntityRemovalRange(
     ): SelectionState {
       let start = getStartOffset(selectionState);
       let end = getEndOffset(selectionState);
    -  const entity = entityMap.__get(entityKey);
    +  const entity = getEntity(entityMap, entityKey);
       const mutability = entity.mutability;
       const sideToConsider = isEntityAtStart ? start : end;
     
    diff --git a/src/model/paste/__tests__/__snapshots__/DraftPasteProcessor-test.ts.snap b/src/model/paste/__tests__/__snapshots__/DraftPasteProcessor-test.ts.snap
    index fba5756cce..cb609e3eb1 100644
    --- a/src/model/paste/__tests__/__snapshots__/DraftPasteProcessor-test.ts.snap
    +++ b/src/model/paste/__tests__/__snapshots__/DraftPasteProcessor-test.ts.snap
    @@ -1,61 +1,61 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
     exports[`Should detect when somthing is un-styled in a child 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "hellothere",
    @@ -65,61 +65,61 @@ Array [
     `;
     
     exports[`Should detect when somthing is un-styled in a child 2`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key1",
         "text": "hellothere",
    @@ -129,51 +129,51 @@ Array [
     `;
     
     exports[`Should detect when somthing is un-styled in a child 3`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key2",
         "text": "hellothere",
    @@ -183,56 +183,56 @@ Array [
     `;
     
     exports[`Strip whitespace after block dividers 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "hello",
         "type": "paragraph",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key1",
         "text": "what",
    @@ -242,51 +242,51 @@ Array [
     `;
     
     exports[`Tolerate doule BR tags separated by whitespace 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "hi
    @@ -298,47 +298,47 @@ hello",
     `;
     
     exports[`must NOT split unstyled blocks inside a styled block 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "hi
    @@ -350,48 +350,48 @@ hello",
     `;
     
     exports[`must NOT treat divs as Ps when we pave Ps 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key1",
         "text": "hi",
         "type": "paragraph",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key2",
         "text": "hello",
    @@ -401,31 +401,31 @@ Array [
     `;
     
     exports[`must collapse nested blocks to the topmost level 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "what
    @@ -436,93 +436,93 @@ Array [
     `;
     
     exports[`must create ContentBlocks when experimentalTreeDataSupport is disabled while processing text 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key1",
         "text": "Beta",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key2",
         "text": "Charlie",
    @@ -532,91 +532,91 @@ Array [
     `;
     
     exports[`must detect links in pasted content 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "1",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "1",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "1",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "1",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "This is a link, yep.",
    @@ -626,36 +626,36 @@ Array [
     `;
     
     exports[`must detect two touching blocks 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "hi",
         "type": "header-one",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key1",
         "text": "hi",
    @@ -665,48 +665,48 @@ Array [
     `;
     
     exports[`must identify block styles 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "hi",
         "type": "ordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key1",
         "text": "there",
    @@ -716,53 +716,53 @@ Array [
     `;
     
     exports[`must identify italics text 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "hello hi",
    @@ -772,73 +772,73 @@ Array [
     `;
     
     exports[`must identify overlapping inline styles 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "he      hi",
    @@ -848,91 +848,91 @@ Array [
     `;
     
     exports[`must ignore javascript: links 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "This is a link, yep.",
    @@ -942,91 +942,91 @@ Array [
     `;
     
     exports[`must ignore links that do not actually link anywhere 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "This is a link, yep.",
    @@ -1036,85 +1036,85 @@ Array [
     `;
     
     exports[`must insert a block when needed 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "hi",
         "type": "header-one",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "key1",
         "text": "",
         "type": "header-one",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key2",
         "text": "whatever",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key3",
         "text": "hi",
    @@ -1124,47 +1124,47 @@ Array [
     `;
     
     exports[`must not generate fake blocks on heavy nesting 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "Word    ,",
    @@ -1174,100 +1174,100 @@ Array [
     `;
     
     exports[`must parse based on style attribute 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "Bold Italic  .",
    @@ -1277,109 +1277,109 @@ Array [
     `;
     
     exports[`must preserve list formatting 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "what",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key1",
         "text": "what",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key2",
         "text": "whatone
    @@ -1387,26 +1387,26 @@ two
     ",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key6",
         "text": "what",
    @@ -1416,91 +1416,91 @@ two
     `;
     
     exports[`must preserve mailto: links 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "1",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "1",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "1",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "1",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "This is a link, yep.",
    @@ -1510,55 +1510,55 @@ Array [
     `;
     
     exports[`must preserve newlines in pre tags 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "hello
    @@ -1569,55 +1569,55 @@ there",
     `;
     
     exports[`must preserve newlines in whitespace in pre tags 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "hello
    @@ -1628,43 +1628,43 @@ there",
     `;
     
     exports[`must preserve spaces 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "hello hi",
    @@ -1674,43 +1674,43 @@ Array [
     `;
     
     exports[`must preserve spaces 2`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key1",
         "text": "hello hi",
    @@ -1720,43 +1720,43 @@ Array [
     `;
     
     exports[`must preserve spaces 3`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key2",
         "text": "hello hi",
    @@ -1766,87 +1766,87 @@ Array [
     `;
     
     exports[`must preserve styles inside links in a good way 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "1",
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": "1",
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": "1",
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": "1",
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": "1",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "1",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "1",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "1",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "1",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "A cool link, yep.",
    @@ -1856,43 +1856,43 @@ Array [
     `;
     
     exports[`must replace br tags with soft newlines 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "hi
    @@ -1903,55 +1903,55 @@ hello",
     `;
     
     exports[`must replace newlines in regular tags 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "hello there",
    @@ -1961,47 +1961,47 @@ Array [
     `;
     
     exports[`must split unstyled blocks on two br tags 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "hi
    @@ -2013,39 +2013,39 @@ hello",
     `;
     
     exports[`must strip xml carriages and zero width spaces 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "hihello",
    @@ -2055,48 +2055,48 @@ Array [
     `;
     
     exports[`must treat divs as Ps when we do not have semantic markup 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "hi",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key1",
         "text": "hello",
    diff --git a/src/model/transaction/__tests__/__snapshots__/ContentStateInlineStyle-test.ts.snap b/src/model/transaction/__tests__/__snapshots__/ContentStateInlineStyle-test.ts.snap
    index b9a2ea6263..9053e893ed 100644
    --- a/src/model/transaction/__tests__/__snapshots__/ContentStateInlineStyle-test.ts.snap
    +++ b/src/model/transaction/__tests__/__snapshots__/ContentStateInlineStyle-test.ts.snap
    @@ -1,172 +1,172 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
     exports[`must add and remove styles accross multiple blocks 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -176,152 +176,152 @@ Object {
     `;
     
     exports[`must add and remove styles accross multiple blocks 2`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -331,172 +331,172 @@ Object {
     `;
     
     exports[`must add styles 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -506,174 +506,174 @@ Object {
     `;
     
     exports[`must add styles 2`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -683,172 +683,172 @@ Object {
     `;
     
     exports[`must remove styles 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -858,177 +858,177 @@ Object {
     `;
     
     exports[`must remove styles 2`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -1038,172 +1038,172 @@ Object {
     `;
     
     exports[`must remove styles 3`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -1213,168 +1213,168 @@ Object {
     `;
     
     exports[`must remove styles 4`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    diff --git a/src/model/transaction/__tests__/__snapshots__/applyEntityToContentBlock-test.ts.snap b/src/model/transaction/__tests__/__snapshots__/applyEntityToContentBlock-test.ts.snap
    index a5ad4bf4ac..30fdb21070 100644
    --- a/src/model/transaction/__tests__/__snapshots__/applyEntityToContentBlock-test.ts.snap
    +++ b/src/model/transaction/__tests__/__snapshots__/applyEntityToContentBlock-test.ts.snap
    @@ -1,30 +1,30 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
     exports[`must apply at the end 1`] = `
    -Object {
    -  "characterList": Array [
    -    Object {
    +{
    +  "characterList": [
    +    {
           "entity": null,
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": null,
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": null,
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": "x",
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": "x",
    -      "style": Array [],
    +      "style": [],
         },
       ],
    -  "data": Object {},
    +  "data": {},
       "depth": 0,
       "key": "a",
       "text": "Hello",
    @@ -33,30 +33,30 @@ Object {
     `;
     
     exports[`must apply from the start 1`] = `
    -Object {
    -  "characterList": Array [
    -    Object {
    +{
    +  "characterList": [
    +    {
           "entity": "x",
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": "x",
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": null,
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": null,
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": null,
    -      "style": Array [],
    +      "style": [],
         },
       ],
    -  "data": Object {},
    +  "data": {},
       "depth": 0,
       "key": "a",
       "text": "Hello",
    @@ -65,24 +65,24 @@ Object {
     `;
     
     exports[`must apply to mutable character list 1`] = `
    -Array [
    -  Object {
    +[
    +  {
         "entity": null,
         "style": Set {},
       },
    -  Object {
    +  {
         "entity": "x",
         "style": Set {},
       },
    -  Object {
    +  {
         "entity": "x",
         "style": Set {},
       },
    -  Object {
    +  {
         "entity": "x",
         "style": Set {},
       },
    -  Object {
    +  {
         "entity": null,
         "style": Set {},
       },
    @@ -90,24 +90,24 @@ Array [
     `;
     
     exports[`must apply to mutable character list 2`] = `
    -Array [
    -  Object {
    +[
    +  {
         "entity": null,
         "style": Set {},
       },
    -  Object {
    +  {
         "entity": "x",
         "style": Set {},
       },
    -  Object {
    +  {
         "entity": "y",
         "style": Set {},
       },
    -  Object {
    +  {
         "entity": "x",
         "style": Set {},
       },
    -  Object {
    +  {
         "entity": null,
         "style": Set {},
       },
    @@ -115,30 +115,30 @@ Array [
     `;
     
     exports[`must apply to the entire text 1`] = `
    -Object {
    -  "characterList": Array [
    -    Object {
    +{
    +  "characterList": [
    +    {
           "entity": "x",
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": "x",
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": "x",
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": "x",
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": "x",
    -      "style": Array [],
    +      "style": [],
         },
       ],
    -  "data": Object {},
    +  "data": {},
       "depth": 0,
       "key": "a",
       "text": "Hello",
    @@ -147,30 +147,30 @@ Object {
     `;
     
     exports[`must apply within 1`] = `
    -Object {
    -  "characterList": Array [
    -    Object {
    +{
    +  "characterList": [
    +    {
           "entity": null,
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": "x",
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": "x",
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": "x",
    -      "style": Array [],
    +      "style": [],
         },
    -    Object {
    +    {
           "entity": null,
    -      "style": Array [],
    +      "style": [],
         },
       ],
    -  "data": Object {},
    +  "data": {},
       "depth": 0,
       "key": "a",
       "text": "Hello",
    diff --git a/src/model/transaction/__tests__/__snapshots__/applyEntityToContentState-test.ts.snap b/src/model/transaction/__tests__/__snapshots__/applyEntityToContentState-test.ts.snap
    index d39fd47143..40f1e967ae 100644
    --- a/src/model/transaction/__tests__/__snapshots__/applyEntityToContentState-test.ts.snap
    +++ b/src/model/transaction/__tests__/__snapshots__/applyEntityToContentState-test.ts.snap
    @@ -1,162 +1,162 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
     exports[`must apply entity key 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": "x",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "x",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "x",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "x",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "x",
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -166,162 +166,162 @@ Object {
     `;
     
     exports[`must apply entity key accross multiple blocks 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": "x",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "x",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "x",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "x",
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "x",
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "x",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "x",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "x",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "x",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "x",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -331,30 +331,30 @@ Object {
     `;
     
     exports[`must apply multiple entities across multiple blocks 1`] = `
    -Object {
    -  "characterList": Array [
    -    Object {
    +{
    +  "characterList": [
    +    {
           "entity": "x",
           "style": Set {},
         },
    -    Object {
    +    {
           "entity": "x",
           "style": Set {},
         },
    -    Object {
    +    {
           "entity": "x",
           "style": Set {},
         },
    -    Object {
    +    {
           "entity": "x",
           "style": Set {},
         },
    -    Object {
    +    {
           "entity": "x",
           "style": Set {},
         },
       ],
    -  "data": Object {},
    +  "data": {},
       "depth": 0,
       "key": "a",
       "text": "Alpha",
    @@ -363,40 +363,40 @@ Object {
     `;
     
     exports[`must apply multiple entities across multiple blocks 2`] = `
    -Object {
    -  "characterList": Array [
    -    Object {
    +{
    +  "characterList": [
    +    {
           "entity": "x",
           "style": Set {
             "BOLD",
           },
         },
    -    Object {
    +    {
           "entity": "x",
           "style": Set {
             "BOLD",
           },
         },
    -    Object {
    +    {
           "entity": "x",
           "style": Set {
             "BOLD",
           },
         },
    -    Object {
    +    {
           "entity": "x",
           "style": Set {
             "BOLD",
           },
         },
    -    Object {
    +    {
           "entity": "y",
           "style": Set {
             "BOLD",
           },
         },
       ],
    -  "data": Object {},
    +  "data": {},
       "depth": 0,
       "key": "b",
       "text": "Bravo",
    @@ -405,26 +405,26 @@ Object {
     `;
     
     exports[`must apply multiple entities across multiple blocks 3`] = `
    -Object {
    -  "characterList": Array [
    -    Object {
    +{
    +  "characterList": [
    +    {
           "entity": "y",
           "style": Set {},
         },
    -    Object {
    +    {
           "entity": null,
           "style": Set {},
         },
    -    Object {
    +    {
           "entity": null,
           "style": Set {},
         },
    -    Object {
    +    {
           "entity": null,
           "style": Set {},
         },
       ],
    -  "data": Object {},
    +  "data": {},
       "depth": 0,
       "key": "c",
       "text": "Test",
    @@ -433,30 +433,30 @@ Object {
     `;
     
     exports[`must apply multiple entities to different blocks 1`] = `
    -Object {
    -  "characterList": Array [
    -    Object {
    +{
    +  "characterList": [
    +    {
           "entity": null,
           "style": Set {},
         },
    -    Object {
    +    {
           "entity": "x",
           "style": Set {},
         },
    -    Object {
    +    {
           "entity": null,
           "style": Set {},
         },
    -    Object {
    +    {
           "entity": null,
           "style": Set {},
         },
    -    Object {
    +    {
           "entity": null,
           "style": Set {},
         },
       ],
    -  "data": Object {},
    +  "data": {},
       "depth": 0,
       "key": "a",
       "text": "Alpha",
    @@ -465,40 +465,40 @@ Object {
     `;
     
     exports[`must apply multiple entities to different blocks 2`] = `
    -Object {
    -  "characterList": Array [
    -    Object {
    +{
    +  "characterList": [
    +    {
           "entity": "2",
           "style": Set {
             "BOLD",
           },
         },
    -    Object {
    +    {
           "entity": "y",
           "style": Set {
             "BOLD",
           },
         },
    -    Object {
    +    {
           "entity": "y",
           "style": Set {
             "BOLD",
           },
         },
    -    Object {
    +    {
           "entity": "2",
           "style": Set {
             "BOLD",
           },
         },
    -    Object {
    +    {
           "entity": "2",
           "style": Set {
             "BOLD",
           },
         },
       ],
    -  "data": Object {},
    +  "data": {},
       "depth": 0,
       "key": "b",
       "text": "Bravo",
    @@ -507,30 +507,30 @@ Object {
     `;
     
     exports[`must apply multiple entities to same block 1`] = `
    -Object {
    -  "characterList": Array [
    -    Object {
    +{
    +  "characterList": [
    +    {
           "entity": null,
           "style": Set {},
         },
    -    Object {
    +    {
           "entity": "x",
           "style": Set {},
         },
    -    Object {
    +    {
           "entity": null,
           "style": Set {},
         },
    -    Object {
    +    {
           "entity": "y",
           "style": Set {},
         },
    -    Object {
    +    {
           "entity": null,
           "style": Set {},
         },
       ],
    -  "data": Object {},
    +  "data": {},
       "depth": 0,
       "key": "a",
       "text": "Alpha",
    @@ -539,162 +539,162 @@ Object {
     `;
     
     exports[`must apply null entity 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -704,162 +704,162 @@ Object {
     `;
     
     exports[`must apply null entity key accross multiple blocks 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    diff --git a/src/model/transaction/__tests__/__snapshots__/getContentStateFragment-test.ts.snap b/src/model/transaction/__tests__/__snapshots__/getContentStateFragment-test.ts.snap
    index f8db2d0b2d..6d4e48f7e9 100644
    --- a/src/model/transaction/__tests__/__snapshots__/getContentStateFragment-test.ts.snap
    +++ b/src/model/transaction/__tests__/__snapshots__/getContentStateFragment-test.ts.snap
    @@ -1,122 +1,122 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
     exports[`must be able to return all selected contentBlocks 1`] = `
    -Object {
    -  "key0": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "key0": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "key1": Object {
    -    "characterList": Array [
    -      Object {
    +  "key1": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key1",
         "text": "Beta",
         "type": "unstyled",
       },
    -  "key2": Object {
    -    "characterList": Array [
    -      Object {
    +  "key2": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key2",
         "text": "Charlie",
         "type": "unstyled",
       },
    -  "key3": Object {
    -    "characterList": Array [
    -      Object {
    +  "key3": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key3",
         "text": "Delta",
    @@ -126,31 +126,31 @@ Object {
     `;
     
     exports[`must be able to return first ContentBlock selected 1`] = `
    -Object {
    -  "key0": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "key0": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "Alpha",
    @@ -160,31 +160,31 @@ Object {
     `;
     
     exports[`must be able to return last ContentBlock selected 1`] = `
    -Object {
    -  "key0": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "key0": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "Delta",
    diff --git a/src/model/transaction/__tests__/__snapshots__/insertFragmentIntoContentState-test.ts.snap b/src/model/transaction/__tests__/__snapshots__/insertFragmentIntoContentState-test.ts.snap
    index 9f939d3b23..b8a1a456fc 100644
    --- a/src/model/transaction/__tests__/__snapshots__/insertFragmentIntoContentState-test.ts.snap
    +++ b/src/model/transaction/__tests__/__snapshots__/insertFragmentIntoContentState-test.ts.snap
    @@ -1,36 +1,36 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
     exports[`must apply fragment at the end 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
         "data": Map {
    @@ -41,132 +41,132 @@ Array [
         "text": "Alphaxx",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -176,36 +176,36 @@ Array [
     `;
     
     exports[`must apply fragment to the start 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
         "data": Map {
    @@ -216,132 +216,132 @@ Array [
         "text": "xxAlpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -351,36 +351,36 @@ Array [
     `;
     
     exports[`must apply fragment to within block 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
         "data": Map {
    @@ -391,132 +391,132 @@ Array [
         "text": "Alxxpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -526,16 +526,16 @@ Array [
     `;
     
     exports[`must apply multiblock fragments 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
         "data": Map {
    @@ -546,35 +546,35 @@ Array [
         "text": "xx",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
         "data": Map {
    @@ -585,132 +585,132 @@ Array [
         "text": "yyAlpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    diff --git a/src/model/transaction/__tests__/__snapshots__/insertTextIntoContentState-test.ts.snap b/src/model/transaction/__tests__/__snapshots__/insertTextIntoContentState-test.ts.snap
    index 6e35fa3ffb..1f20b2be2e 100644
    --- a/src/model/transaction/__tests__/__snapshots__/insertTextIntoContentState-test.ts.snap
    +++ b/src/model/transaction/__tests__/__snapshots__/insertTextIntoContentState-test.ts.snap
    @@ -1,174 +1,174 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
     exports[`must insert at the end 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alphaxx",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -178,174 +178,174 @@ Object {
     `;
     
     exports[`must insert at the start 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "xxAlpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -355,174 +355,174 @@ Object {
     `;
     
     exports[`must insert within block 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alxxpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -532,162 +532,162 @@ Object {
     `;
     
     exports[`must return early if no text is provided 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    diff --git a/src/model/transaction/__tests__/__snapshots__/moveBlockInContentState-test.ts.snap b/src/model/transaction/__tests__/__snapshots__/moveBlockInContentState-test.ts.snap
    index 88e1fa6761..d2b1e05220 100644
    --- a/src/model/transaction/__tests__/__snapshots__/moveBlockInContentState-test.ts.snap
    +++ b/src/model/transaction/__tests__/__snapshots__/moveBlockInContentState-test.ts.snap
    @@ -1,28 +1,28 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
     exports[`must be able to move block after other block 1`] = `
    -Array [
    -  Object {
    +[
    +  {
         "key": "B",
       },
    -  Object {
    +  {
         "key": "C",
       },
    -  Object {
    +  {
         "key": "A",
       },
     ]
     `;
     
     exports[`must be able to move block before other block 1`] = `
    -Array [
    -  Object {
    +[
    +  {
         "key": "C",
       },
    -  Object {
    +  {
         "key": "A",
       },
    -  Object {
    +  {
         "key": "B",
       },
     ]
    diff --git a/src/model/transaction/__tests__/__snapshots__/randomizeBlockMapKeys-test.ts.snap b/src/model/transaction/__tests__/__snapshots__/randomizeBlockMapKeys-test.ts.snap
    index 4cbb4fdfc8..c897b9b56e 100644
    --- a/src/model/transaction/__tests__/__snapshots__/randomizeBlockMapKeys-test.ts.snap
    +++ b/src/model/transaction/__tests__/__snapshots__/randomizeBlockMapKeys-test.ts.snap
    @@ -1,122 +1,122 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
     exports[`must be able to randomize keys for ContentBlocks BlockMap 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key0",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key1",
         "text": "Beta",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key2",
         "text": "Charlie",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "key3",
         "text": "Delta",
    diff --git a/src/model/transaction/__tests__/__snapshots__/removeEntitiesAtEdges-test.ts.snap b/src/model/transaction/__tests__/__snapshots__/removeEntitiesAtEdges-test.ts.snap
    index e4dc808a83..56fbe1c322 100644
    --- a/src/model/transaction/__tests__/__snapshots__/removeEntitiesAtEdges-test.ts.snap
    +++ b/src/model/transaction/__tests__/__snapshots__/removeEntitiesAtEdges-test.ts.snap
    @@ -1,162 +1,162 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
     exports[`must ignore an entity that is entirely within the selection 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -166,162 +166,162 @@ Object {
     `;
     
     exports[`must not affect blockMap if there are no entities 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -331,162 +331,162 @@ Object {
     `;
     
     exports[`must not remove if cursor is at end of entity 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -496,162 +496,162 @@ Object {
     `;
     
     exports[`must not remove if cursor is at start of entity 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -661,162 +661,162 @@ Object {
     `;
     
     exports[`must not remove mutable entities 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -826,162 +826,162 @@ Object {
     `;
     
     exports[`must remove entities at both ends of selection 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -991,162 +991,162 @@ Object {
     `;
     
     exports[`must remove entity at end of selection 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -1156,162 +1156,162 @@ Object {
     `;
     
     exports[`must remove entity at start of selection 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -1321,162 +1321,162 @@ Object {
     `;
     
     exports[`must remove for non-collapsed cursor on multiple entities 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -1486,162 +1486,162 @@ Object {
     `;
     
     exports[`must remove for non-collapsed cursor within a single entity 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -1651,162 +1651,162 @@ Object {
     `;
     
     exports[`must remove if cursor is within entity 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -1816,162 +1816,162 @@ Object {
     `;
     
     exports[`must remove immutable entities 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -1981,162 +1981,162 @@ Object {
     `;
     
     exports[`must remove segmented entities 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    diff --git a/src/model/transaction/__tests__/__snapshots__/removeRangeFromContentState-test.ts.snap b/src/model/transaction/__tests__/__snapshots__/removeRangeFromContentState-test.ts.snap
    index ff8a83856f..bf78d8274b 100644
    --- a/src/model/transaction/__tests__/__snapshots__/removeRangeFromContentState-test.ts.snap
    +++ b/src/model/transaction/__tests__/__snapshots__/removeRangeFromContentState-test.ts.snap
    @@ -1,94 +1,94 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
     exports[`must remove blocks entirely within the selection 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpt",
         "type": "unstyled",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -98,150 +98,150 @@ Object {
     `;
     
     exports[`must remove from the beginning of the block 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "ha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -251,123 +251,123 @@ Object {
     `;
     
     exports[`must remove from the end of A to the end of B 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -377,153 +377,153 @@ Object {
     `;
     
     exports[`must remove from the end of A to the start of B 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "AlphaBravo",
         "type": "unstyled",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -533,135 +533,135 @@ Object {
     `;
     
     exports[`must remove from the end of A to within B 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alphavo",
         "type": "unstyled",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -671,102 +671,102 @@ Object {
     `;
     
     exports[`must remove from the start of A to the end of B 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +{
    +  "a": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -776,133 +776,133 @@ Object {
     `;
     
     exports[`must remove from the start of A to the start of B 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Bravo",
         "type": "unstyled",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -912,115 +912,115 @@ Object {
     `;
     
     exports[`must remove from the start of A to within B 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "vo",
         "type": "unstyled",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -1030,115 +1030,115 @@ Object {
     `;
     
     exports[`must remove from within A to the end of B 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alp",
         "type": "unstyled",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -1148,145 +1148,145 @@ Object {
     `;
     
     exports[`must remove from within A to the start of B 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "AlpBravo",
         "type": "unstyled",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -1296,127 +1296,127 @@ Object {
     `;
     
     exports[`must remove from within A to within B 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpvo",
         "type": "unstyled",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -1426,154 +1426,154 @@ Object {
     `;
     
     exports[`must remove from within the block 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Ala",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -1583,154 +1583,154 @@ Object {
     `;
     
     exports[`must remove to the end of the block 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alp",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -1740,162 +1740,162 @@ Object {
     `;
     
     exports[`must return the input ContentState if selection is collapsed 1`] = `
    -Object {
    -  "a": Object {
    -    "characterList": Array [
    -      Object {
    +{
    +  "a": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  "b": Object {
    -    "characterList": Array [
    -      Object {
    +  "b": {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  "c": Object {
    -    "characterList": Array [
    -      Object {
    +  "c": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  "d": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "d": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  "e": Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  "e": {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  "f": Object {
    -    "characterList": Array [
    -      Object {
    +  "f": {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    diff --git a/src/model/transaction/__tests__/__snapshots__/splitBlockInContentState-test.ts.snap b/src/model/transaction/__tests__/__snapshots__/splitBlockInContentState-test.ts.snap
    index d5803f4117..684a006ff0 100644
    --- a/src/model/transaction/__tests__/__snapshots__/splitBlockInContentState-test.ts.snap
    +++ b/src/model/transaction/__tests__/__snapshots__/splitBlockInContentState-test.ts.snap
    @@ -1,36 +1,36 @@
     // Jest Snapshot v1, https://goo.gl/fbAQLP
     
     exports[`must split at the beginning of a block 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +[
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
         "data": Map {},
    @@ -39,132 +39,132 @@ Array [
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -174,170 +174,170 @@ Array [
     `;
     
     exports[`must split at the end of a block 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alpha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [],
    +  {
    +    "characterList": [],
         "data": Map {},
         "depth": 0,
         "key": "key0",
         "text": "",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    @@ -347,37 +347,37 @@ Array [
     `;
     
     exports[`must split within a block 1`] = `
    -Array [
    -  Object {
    -    "characterList": Array [
    -      Object {
    +[
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "a",
         "text": "Alp",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
         "data": Map {},
    @@ -386,132 +386,132 @@ Array [
         "text": "ha",
         "type": "unstyled",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
    -      Object {
    +      {
             "entity": "2",
    -        "style": Array [
    +        "style": [
               "BOLD",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "b",
         "text": "Bravo",
         "type": "unordered-list-item",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [],
    +        "style": [],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "c",
         "text": "Test",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "d",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [],
    -    "data": Object {},
    +  {
    +    "characterList": [],
    +    "data": {},
         "depth": 0,
         "key": "e",
         "text": "",
         "type": "code-block",
       },
    -  Object {
    -    "characterList": Array [
    -      Object {
    +  {
    +    "characterList": [
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
    -      Object {
    +      {
             "entity": null,
    -        "style": Array [
    +        "style": [
               "ITALIC",
             ],
           },
         ],
    -    "data": Object {},
    +    "data": {},
         "depth": 0,
         "key": "f",
         "text": "Charlie",
    diff --git a/src/model/transaction/__tests__/removeEntitiesAtEdges-test.ts b/src/model/transaction/__tests__/removeEntitiesAtEdges-test.ts
    index 3df98f89bb..c118485250 100644
    --- a/src/model/transaction/__tests__/removeEntitiesAtEdges-test.ts
    +++ b/src/model/transaction/__tests__/removeEntitiesAtEdges-test.ts
    @@ -9,7 +9,6 @@
      */
     import getSampleStateForTesting from '../getSampleStateForTesting';
     import {DraftEntityMutability} from '../../entity/DraftEntityMutability';
    -import DraftEntity from '../../entity/DraftEntity';
     import {DraftEntityInstance} from '../../entity/DraftEntityInstance';
     import {SelectionState} from '../../immutable/SelectionState';
     import removeEntitiesAtEdges from '../removeEntitiesAtEdges';
    @@ -17,6 +16,7 @@ import {blockMapToJsonObject} from '../../../util/blockMapToJson';
     import {getBlockForKey} from '../../immutable/ContentState';
     import applyEntityToContentBlock from '../applyEntityToContentBlock';
     import {mergeMapUpdates} from '../../immutable/BlockMap';
    +import * as EntityMap from '../../immutable/EntityMap';
     
     const {contentState, selectionState} = getSampleStateForTesting();
     
    @@ -28,18 +28,20 @@ const selectionOnEntity = {
       focusOffset: 2,
     };
     
    -const origGet = DraftEntity.__get;
    +const origGet = EntityMap.getEntity;
     afterEach(() => {
    -  DraftEntity.__get = origGet;
    +  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
    +  // @ts-ignore
    +  EntityMap.getEntity = origGet;
     });
    -const setEntityMutability = (
    -  mutability: DraftEntityMutability,
    -  _ = contentState,
    -) => {
    -  DraftEntity.__get = () =>
    -    ({
    +const setEntityMutability = (mutability: DraftEntityMutability) => {
    +  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
    +  // @ts-ignore
    +  EntityMap.getEntity = () => {
    +    return {
           mutability,
    -    } as DraftEntityInstance);
    +    } as DraftEntityInstance;
    +  };
     };
     
     const assertRemoveEntitiesAtEdges = (
    @@ -47,7 +49,7 @@ const assertRemoveEntitiesAtEdges = (
       mutability: DraftEntityMutability = 'IMMUTABLE',
       content = contentState,
     ) => {
    -  setEntityMutability(mutability, content);
    +  setEntityMutability(mutability);
       expect(
         blockMapToJsonObject(removeEntitiesAtEdges(content, selection).blockMap),
       ).toMatchSnapshot();
    diff --git a/src/model/transaction/getSampleStateForTesting.ts b/src/model/transaction/getSampleStateForTesting.ts
    index 78a86d239e..fba133a304 100644
    --- a/src/model/transaction/getSampleStateForTesting.ts
    +++ b/src/model/transaction/getSampleStateForTesting.ts
    @@ -18,10 +18,13 @@ import {makeContentBlock} from '../immutable/ContentBlock';
     import {repeat} from '../descript/Iterables';
     import {makeCharacterMetadata} from '../immutable/CharacterMetadata';
     import {createFromArray} from '../immutable/BlockMapBuilder';
    -import DraftEntity from '../entity/DraftEntity';
     import {BOLD, ITALIC} from '../immutable/SampleDraftInlineStyle';
    +import {createEntity} from '../immutable/EntityMap';
     
    -const ENTITY_KEY = '2';
    +let BASE_ENTITY_MAP = createEntity(new Map(), 'TOKEN', 'IMMUTABLE').entityMap;
    +const entityRes = createEntity(BASE_ENTITY_MAP, 'IMAGE', 'IMMUTABLE');
    +BASE_ENTITY_MAP = entityRes.entityMap;
    +const ENTITY_KEY = entityRes.entityKey;
     
     const BLOCKS = [
       makeContentBlock({
    @@ -89,10 +92,9 @@ const contentState = makeContentState({
       blockMap,
       selectionBefore: selectionState,
       selectionAfter: selectionState,
    +  entityMap: BASE_ENTITY_MAP,
     });
     
    -DraftEntity.__create('IMAGE', 'IMMUTABLE');
    -
     let editorState = createWithContent(contentState);
     editorState = forceSelection(editorState, selectionState);
     
    diff --git a/src/model/transaction/removeEntitiesAtEdges.ts b/src/model/transaction/removeEntitiesAtEdges.ts
    index dda6d20149..d0fb32c32b 100644
    --- a/src/model/transaction/removeEntitiesAtEdges.ts
    +++ b/src/model/transaction/removeEntitiesAtEdges.ts
    @@ -14,14 +14,13 @@ import {
       getStartOffset,
       SelectionState,
     } from '../immutable/SelectionState';
    -import DraftEntity from '../entity/DraftEntity';
     import {ContentBlock} from '../immutable/ContentBlock';
     import {mergeMapUpdates} from '../immutable/BlockMap';
     import {applyEntity, CharacterMetadata} from '../immutable/CharacterMetadata';
     import {findRangesImmutable} from '../immutable/findRangesImmutable';
     import invariant from '../../fbjs/invariant';
     import {DraftRange} from '../modifier/DraftRange';
    -import {EntityMap} from '../immutable/EntityMap';
    +import {EntityMap, getEntity} from '../immutable/EntityMap';
     import {BlockNode} from '../immutable/BlockNode';
     
     export default function removeEntitiesAtEdges(
    @@ -29,7 +28,7 @@ export default function removeEntitiesAtEdges(
       selectionState: SelectionState,
     ): ContentState {
       const blockMap = contentState.blockMap;
    -  const entityMap = DraftEntity;
    +  const entityMap = contentState.entityMap;
     
       const updatedBlocks: Record = {};
     
    @@ -122,7 +121,7 @@ function removeForBlock(
       const entityAfterCursor = charAfter ? charAfter.entity : undefined;
     
       if (entityAfterCursor && entityAfterCursor === entityBeforeCursor) {
    -    const entity = entityMap.__get(entityAfterCursor);
    +    const entity = getEntity(entityMap, entityAfterCursor);
         if (entity.mutability !== 'MUTABLE') {
           let {start, end} = getRemovalRange(chars, entityAfterCursor, offset);
           let current;
    diff --git a/src/model/transaction/updateEntityDataInContentState.ts b/src/model/transaction/updateEntityDataInContentState.ts
    index fb210d1edc..9e054e55e1 100644
    --- a/src/model/transaction/updateEntityDataInContentState.ts
    +++ b/src/model/transaction/updateEntityDataInContentState.ts
    @@ -9,7 +9,7 @@
      */
     
     import {ContentState} from '../immutable/ContentState';
    -import DraftEntity from '../entity/DraftEntity';
    +import {getEntity} from '../immutable/EntityMap';
     
     export default function updateEntityDataInContentState(
       contentState: ContentState,
    @@ -17,14 +17,16 @@ export default function updateEntityDataInContentState(
       data: {[K in string]: unknown},
       merge: boolean,
     ): ContentState {
    -  const instance = DraftEntity.__get(key);
    +  const instance = getEntity(contentState.entityMap, key);
       const entityData = instance.data;
       const newData = merge ? {...entityData, ...data} : data;
    -  DraftEntity.__replaceData(key, newData);
    +  const newInstance = {...instance, data: newData};
     
    -  // FIXME [mvp]: global entity map
    +  const newEntityMap = new Map(contentState.entityMap);
    +  newEntityMap.set(key, newInstance);
     
    -  // const newEntityMap =  contentState.getEntityMap().set(key, newInstance);
    -  // return contentState.set('entityMap', newEntityMap);
    -  return contentState;
    +  return {
    +    ...contentState,
    +    entityMap: newEntityMap,
    +  };
     }
    diff --git a/src/stubs/DraftJsDebugLogging.ts b/src/stubs/DraftJsDebugLogging.ts
    index d009a0fd0b..1c9a09f488 100644
    --- a/src/stubs/DraftJsDebugLogging.ts
    +++ b/src/stubs/DraftJsDebugLogging.ts
    @@ -7,7 +7,9 @@
      */
     
     const DraftJsDebugLogging = {
    +  // eslint-disable-next-line @typescript-eslint/no-unused-vars
       logBlockedSelectionEvent: (..._: any[]) => null,
    +  // eslint-disable-next-line @typescript-eslint/no-unused-vars
       logSelectionStateFailure: (..._: any[]) => null,
     };
     export default DraftJsDebugLogging;
    diff --git a/yarn.lock b/yarn.lock
    index b1c2536b36..301317df87 100644
    --- a/yarn.lock
    +++ b/yarn.lock
    @@ -2,6 +2,19 @@
     # yarn lockfile v1
     
     
    +"@aashutoshrathi/word-wrap@^1.2.3":
    +  version "1.2.6"
    +  resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf"
    +  integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==
    +
    +"@ampproject/remapping@^2.2.0":
    +  version "2.2.1"
    +  resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630"
    +  integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==
    +  dependencies:
    +    "@jridgewell/gen-mapping" "^0.3.0"
    +    "@jridgewell/trace-mapping" "^0.3.9"
    +
     "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.3":
       version "7.10.3"
       resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.3.tgz#324bcfd8d35cd3d47dae18cde63d752086435e9a"
    @@ -9,7 +22,20 @@
       dependencies:
         "@babel/highlight" "^7.10.3"
     
    -"@babel/core@^7.0.0", "@babel/core@^7.1.0", "@babel/core@^7.6.4", "@babel/core@^7.7.5":
    +"@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13":
    +  version "7.22.13"
    +  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e"
    +  integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==
    +  dependencies:
    +    "@babel/highlight" "^7.22.13"
    +    chalk "^2.4.2"
    +
    +"@babel/compat-data@^7.22.9":
    +  version "7.22.9"
    +  resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730"
    +  integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==
    +
    +"@babel/core@^7.0.0", "@babel/core@^7.6.4":
       version "7.10.3"
       resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.3.tgz#73b0e8ddeec1e3fdd7a2de587a60e17c440ec77e"
       integrity sha512-5YqWxYE3pyhIi84L84YcwjeEgS+fa7ZjK6IBVGTjDVfm64njkR2lfDhVR5OudLk8x2GK59YoSyVv+L/03k1q9w==
    @@ -31,6 +57,27 @@
         semver "^5.4.1"
         source-map "^0.5.0"
     
    +"@babel/core@^7.11.6", "@babel/core@^7.12.3":
    +  version "7.22.15"
    +  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.15.tgz#15d4fd03f478a459015a4b94cfbb3bd42c48d2f4"
    +  integrity sha512-PtZqMmgRrvj8ruoEOIwVA3yoF91O+Hgw9o7DAUTNBA6Mo2jpu31clx9a7Nz/9JznqetTR6zwfC4L3LAjKQXUwA==
    +  dependencies:
    +    "@ampproject/remapping" "^2.2.0"
    +    "@babel/code-frame" "^7.22.13"
    +    "@babel/generator" "^7.22.15"
    +    "@babel/helper-compilation-targets" "^7.22.15"
    +    "@babel/helper-module-transforms" "^7.22.15"
    +    "@babel/helpers" "^7.22.15"
    +    "@babel/parser" "^7.22.15"
    +    "@babel/template" "^7.22.15"
    +    "@babel/traverse" "^7.22.15"
    +    "@babel/types" "^7.22.15"
    +    convert-source-map "^1.7.0"
    +    debug "^4.1.0"
    +    gensync "^1.0.0-beta.2"
    +    json5 "^2.2.3"
    +    semver "^6.3.1"
    +
     "@babel/generator@^7.10.3":
       version "7.10.3"
       resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.3.tgz#32b9a0d963a71d7a54f5f6c15659c3dbc2a523a5"
    @@ -41,6 +88,16 @@
         lodash "^4.17.13"
         source-map "^0.5.0"
     
    +"@babel/generator@^7.22.15", "@babel/generator@^7.7.2":
    +  version "7.22.15"
    +  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.15.tgz#1564189c7ec94cb8f77b5e8a90c4d200d21b2339"
    +  integrity sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==
    +  dependencies:
    +    "@babel/types" "^7.22.15"
    +    "@jridgewell/gen-mapping" "^0.3.2"
    +    "@jridgewell/trace-mapping" "^0.3.17"
    +    jsesc "^2.5.1"
    +
     "@babel/helper-annotate-as-pure@^7.10.1":
       version "7.10.1"
       resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz#f6d08acc6f70bbd59b436262553fb2e259a1a268"
    @@ -65,6 +122,17 @@
         "@babel/helper-annotate-as-pure" "^7.10.1"
         "@babel/types" "^7.10.3"
     
    +"@babel/helper-compilation-targets@^7.22.15":
    +  version "7.22.15"
    +  resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52"
    +  integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==
    +  dependencies:
    +    "@babel/compat-data" "^7.22.9"
    +    "@babel/helper-validator-option" "^7.22.15"
    +    browserslist "^4.21.9"
    +    lru-cache "^5.1.1"
    +    semver "^6.3.1"
    +
     "@babel/helper-create-class-features-plugin@^7.10.1":
       version "7.10.3"
       resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.3.tgz#2783daa6866822e3d5ed119163b50f0fc3ae4b35"
    @@ -86,6 +154,11 @@
         "@babel/types" "^7.10.3"
         lodash "^4.17.13"
     
    +"@babel/helper-environment-visitor@^7.22.5":
    +  version "7.22.5"
    +  resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98"
    +  integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==
    +
     "@babel/helper-function-name@^7.10.1", "@babel/helper-function-name@^7.10.3":
       version "7.10.3"
       resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.3.tgz#79316cd75a9fa25ba9787ff54544307ed444f197"
    @@ -95,6 +168,14 @@
         "@babel/template" "^7.10.3"
         "@babel/types" "^7.10.3"
     
    +"@babel/helper-function-name@^7.22.5":
    +  version "7.22.5"
    +  resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be"
    +  integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==
    +  dependencies:
    +    "@babel/template" "^7.22.5"
    +    "@babel/types" "^7.22.5"
    +
     "@babel/helper-get-function-arity@^7.10.1", "@babel/helper-get-function-arity@^7.10.3":
       version "7.10.3"
       resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.3.tgz#3a28f7b28ccc7719eacd9223b659fdf162e4c45e"
    @@ -102,6 +183,13 @@
       dependencies:
         "@babel/types" "^7.10.3"
     
    +"@babel/helper-hoist-variables@^7.22.5":
    +  version "7.22.5"
    +  resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb"
    +  integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==
    +  dependencies:
    +    "@babel/types" "^7.22.5"
    +
     "@babel/helper-member-expression-to-functions@^7.10.1", "@babel/helper-member-expression-to-functions@^7.10.3":
       version "7.10.3"
       resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.3.tgz#bc3663ac81ac57c39148fef4c69bf48a77ba8dd6"
    @@ -116,6 +204,13 @@
       dependencies:
         "@babel/types" "^7.10.3"
     
    +"@babel/helper-module-imports@^7.22.15":
    +  version "7.22.15"
    +  resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0"
    +  integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==
    +  dependencies:
    +    "@babel/types" "^7.22.15"
    +
     "@babel/helper-module-transforms@^7.10.1":
       version "7.10.1"
       resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz#24e2f08ee6832c60b157bb0936c86bef7210c622"
    @@ -129,6 +224,17 @@
         "@babel/types" "^7.10.1"
         lodash "^4.17.13"
     
    +"@babel/helper-module-transforms@^7.22.15":
    +  version "7.22.15"
    +  resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.15.tgz#40ad2f6950f143900e9c1c72363c0b431a606082"
    +  integrity sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==
    +  dependencies:
    +    "@babel/helper-environment-visitor" "^7.22.5"
    +    "@babel/helper-module-imports" "^7.22.15"
    +    "@babel/helper-simple-access" "^7.22.5"
    +    "@babel/helper-split-export-declaration" "^7.22.6"
    +    "@babel/helper-validator-identifier" "^7.22.15"
    +
     "@babel/helper-optimise-call-expression@^7.10.1", "@babel/helper-optimise-call-expression@^7.10.3":
       version "7.10.3"
       resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.3.tgz#f53c4b6783093195b0f69330439908841660c530"
    @@ -141,6 +247,11 @@
       resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.3.tgz#aac45cccf8bc1873b99a85f34bceef3beb5d3244"
       integrity sha512-j/+j8NAWUTxOtx4LKHybpSClxHoq6I91DQ/mKgAXn5oNUPIUiGppjPIX3TDtJWPrdfP9Kfl7e4fgVMiQR9VE/g==
     
    +"@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5":
    +  version "7.22.5"
    +  resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295"
    +  integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==
    +
     "@babel/helper-replace-supers@^7.10.1":
       version "7.10.1"
       resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz#ec6859d20c5d8087f6a2dc4e014db7228975f13d"
    @@ -159,6 +270,13 @@
         "@babel/template" "^7.10.1"
         "@babel/types" "^7.10.1"
     
    +"@babel/helper-simple-access@^7.22.5":
    +  version "7.22.5"
    +  resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de"
    +  integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==
    +  dependencies:
    +    "@babel/types" "^7.22.5"
    +
     "@babel/helper-split-export-declaration@^7.10.1":
       version "7.10.1"
       resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz#c6f4be1cbc15e3a868e4c64a17d5d31d754da35f"
    @@ -166,11 +284,33 @@
       dependencies:
         "@babel/types" "^7.10.1"
     
    +"@babel/helper-split-export-declaration@^7.22.6":
    +  version "7.22.6"
    +  resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c"
    +  integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==
    +  dependencies:
    +    "@babel/types" "^7.22.5"
    +
    +"@babel/helper-string-parser@^7.22.5":
    +  version "7.22.5"
    +  resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f"
    +  integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==
    +
     "@babel/helper-validator-identifier@^7.10.3":
       version "7.10.3"
       resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.3.tgz#60d9847f98c4cea1b279e005fdb7c28be5412d15"
       integrity sha512-bU8JvtlYpJSBPuj1VUmKpFGaDZuLxASky3LhaKj3bmpSTY6VWooSM8msk+Z0CZoErFye2tlABF6yDkT3FOPAXw==
     
    +"@babel/helper-validator-identifier@^7.22.15", "@babel/helper-validator-identifier@^7.22.5":
    +  version "7.22.15"
    +  resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz#601fa28e4cc06786c18912dca138cec73b882044"
    +  integrity sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==
    +
    +"@babel/helper-validator-option@^7.22.15":
    +  version "7.22.15"
    +  resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040"
    +  integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==
    +
     "@babel/helpers@^7.10.1":
       version "7.10.1"
       resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.1.tgz#a6827b7cb975c9d9cef5fd61d919f60d8844a973"
    @@ -180,6 +320,15 @@
         "@babel/traverse" "^7.10.1"
         "@babel/types" "^7.10.1"
     
    +"@babel/helpers@^7.22.15":
    +  version "7.22.15"
    +  resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.15.tgz#f09c3df31e86e3ea0b7ff7556d85cdebd47ea6f1"
    +  integrity sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==
    +  dependencies:
    +    "@babel/template" "^7.22.15"
    +    "@babel/traverse" "^7.22.15"
    +    "@babel/types" "^7.22.15"
    +
     "@babel/highlight@^7.10.3":
       version "7.10.3"
       resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.3.tgz#c633bb34adf07c5c13156692f5922c81ec53f28d"
    @@ -189,11 +338,25 @@
         chalk "^2.0.0"
         js-tokens "^4.0.0"
     
    +"@babel/highlight@^7.22.13":
    +  version "7.22.13"
    +  resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.13.tgz#9cda839e5d3be9ca9e8c26b6dd69e7548f0cbf16"
    +  integrity sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==
    +  dependencies:
    +    "@babel/helper-validator-identifier" "^7.22.5"
    +    chalk "^2.4.2"
    +    js-tokens "^4.0.0"
    +
     "@babel/parser@^7.1.0", "@babel/parser@^7.10.3", "@babel/parser@^7.7.0":
       version "7.10.3"
       resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.3.tgz#7e71d892b0d6e7d04a1af4c3c79d72c1f10f5315"
       integrity sha512-oJtNJCMFdIMwXGmx+KxuaD7i3b8uS7TTFYW/FNG2BT8m+fmGHoiPYoH0Pe3gya07WuFmM5FCDIr1x0irkD/hyA==
     
    +"@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15":
    +  version "7.22.16"
    +  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.16.tgz#180aead7f247305cce6551bea2720934e2fa2c95"
    +  integrity sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==
    +
     "@babel/plugin-proposal-class-properties@^7.0.0":
       version "7.10.1"
       resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz#046bc7f6550bb08d9bd1d4f060f5f5a4f1087e01"
    @@ -276,6 +439,13 @@
       dependencies:
         "@babel/helper-plugin-utils" "^7.10.1"
     
    +"@babel/plugin-syntax-jsx@^7.7.2":
    +  version "7.22.5"
    +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918"
    +  integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==
    +  dependencies:
    +    "@babel/helper-plugin-utils" "^7.22.5"
    +
     "@babel/plugin-syntax-logical-assignment-operators@^7.8.3":
       version "7.10.1"
       resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.1.tgz#fffee77b4934ce77f3b427649ecdddbec1958550"
    @@ -318,6 +488,20 @@
       dependencies:
         "@babel/helper-plugin-utils" "^7.8.0"
     
    +"@babel/plugin-syntax-top-level-await@^7.8.3":
    +  version "7.14.5"
    +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
    +  integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
    +  dependencies:
    +    "@babel/helper-plugin-utils" "^7.14.5"
    +
    +"@babel/plugin-syntax-typescript@^7.7.2":
    +  version "7.22.5"
    +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272"
    +  integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==
    +  dependencies:
    +    "@babel/helper-plugin-utils" "^7.22.5"
    +
     "@babel/plugin-transform-arrow-functions@^7.0.0":
       version "7.10.1"
       resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz#cb5ee3a36f0863c06ead0b409b4cc43a889b295b"
    @@ -477,20 +661,12 @@
         "@babel/helper-annotate-as-pure" "^7.10.1"
         "@babel/helper-plugin-utils" "^7.10.3"
     
    -"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.8.3":
    -  version "7.10.3"
    -  resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.10.3.tgz#931ed6941d3954924a7aa967ee440e60c507b91a"
    -  integrity sha512-HA7RPj5xvJxQl429r5Cxr2trJwOfPjKiqhCXcdQPSqO2G0RHPZpXu4fkYmBaTKCp2c/jRaMK9GB/lN+7zvvFPw==
    -  dependencies:
    -    core-js-pure "^3.0.0"
    -    regenerator-runtime "^0.13.4"
    -
    -"@babel/runtime@^7.10.2":
    -  version "7.10.3"
    -  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.3.tgz#670d002655a7c366540c67f6fd3342cd09500364"
    -  integrity sha512-RzGO0RLSdokm9Ipe/YD+7ww8X2Ro79qiXZF3HU9ljrM+qnJmH1Vqth+hbiQZy761LnMJTMitHDuKVYTk3k4dLw==
    +"@babel/runtime@^7.20.7":
    +  version "7.22.15"
    +  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.15.tgz#38f46494ccf6cf020bd4eed7124b425e83e523b8"
    +  integrity sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==
       dependencies:
    -    regenerator-runtime "^0.13.4"
    +    regenerator-runtime "^0.14.0"
     
     "@babel/template@^7.10.1", "@babel/template@^7.10.3", "@babel/template@^7.3.3":
       version "7.10.3"
    @@ -501,7 +677,16 @@
         "@babel/parser" "^7.10.3"
         "@babel/types" "^7.10.3"
     
    -"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.1", "@babel/traverse@^7.10.3", "@babel/traverse@^7.7.0":
    +"@babel/template@^7.22.15", "@babel/template@^7.22.5":
    +  version "7.22.15"
    +  resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38"
    +  integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==
    +  dependencies:
    +    "@babel/code-frame" "^7.22.13"
    +    "@babel/parser" "^7.22.15"
    +    "@babel/types" "^7.22.15"
    +
    +"@babel/traverse@^7.10.1", "@babel/traverse@^7.10.3", "@babel/traverse@^7.7.0":
       version "7.10.3"
       resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.3.tgz#0b01731794aa7b77b214bcd96661f18281155d7e"
       integrity sha512-qO6623eBFhuPm0TmmrUFMT1FulCmsSeJuVGhiLodk2raUDFhhTECLd9E9jC4LBIWziqt4wgF6KuXE4d+Jz9yug==
    @@ -516,6 +701,22 @@
         globals "^11.1.0"
         lodash "^4.17.13"
     
    +"@babel/traverse@^7.22.15":
    +  version "7.22.15"
    +  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.15.tgz#75be4d2d6e216e880e93017f4e2389aeb77ef2d9"
    +  integrity sha512-DdHPwvJY0sEeN4xJU5uRLmZjgMMDIvMPniLuYzUVXj/GGzysPl0/fwt44JBkyUIzGJPV8QgHMcQdQ34XFuKTYQ==
    +  dependencies:
    +    "@babel/code-frame" "^7.22.13"
    +    "@babel/generator" "^7.22.15"
    +    "@babel/helper-environment-visitor" "^7.22.5"
    +    "@babel/helper-function-name" "^7.22.5"
    +    "@babel/helper-hoist-variables" "^7.22.5"
    +    "@babel/helper-split-export-declaration" "^7.22.6"
    +    "@babel/parser" "^7.22.15"
    +    "@babel/types" "^7.22.15"
    +    debug "^4.1.0"
    +    globals "^11.1.0"
    +
     "@babel/types@^7.0.0", "@babel/types@^7.10.1", "@babel/types@^7.10.3", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.7.0":
       version "7.10.3"
       resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.3.tgz#6535e3b79fea86a6b09e012ea8528f935099de8e"
    @@ -525,18 +726,70 @@
         lodash "^4.17.13"
         to-fast-properties "^2.0.0"
     
    +"@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5":
    +  version "7.22.15"
    +  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.15.tgz#266cb21d2c5fd0b3931e7a91b6dd72d2f617d282"
    +  integrity sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==
    +  dependencies:
    +    "@babel/helper-string-parser" "^7.22.5"
    +    "@babel/helper-validator-identifier" "^7.22.15"
    +    to-fast-properties "^2.0.0"
    +
     "@bcoe/v8-coverage@^0.2.3":
       version "0.2.3"
       resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
       integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
     
    -"@cnakazawa/watch@^1.0.3":
    -  version "1.0.4"
    -  resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a"
    -  integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==
    +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
    +  version "4.4.0"
    +  resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
    +  integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
       dependencies:
    -    exec-sh "^0.3.2"
    -    minimist "^1.2.0"
    +    eslint-visitor-keys "^3.3.0"
    +
    +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1":
    +  version "4.8.0"
    +  resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.0.tgz#11195513186f68d42fbf449f9a7136b2c0c92005"
    +  integrity sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==
    +
    +"@eslint/eslintrc@^2.1.2":
    +  version "2.1.2"
    +  resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396"
    +  integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==
    +  dependencies:
    +    ajv "^6.12.4"
    +    debug "^4.3.2"
    +    espree "^9.6.0"
    +    globals "^13.19.0"
    +    ignore "^5.2.0"
    +    import-fresh "^3.2.1"
    +    js-yaml "^4.1.0"
    +    minimatch "^3.1.2"
    +    strip-json-comments "^3.1.1"
    +
    +"@eslint/js@8.49.0":
    +  version "8.49.0"
    +  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.49.0.tgz#86f79756004a97fa4df866835093f1df3d03c333"
    +  integrity sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==
    +
    +"@humanwhocodes/config-array@^0.11.11":
    +  version "0.11.11"
    +  resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844"
    +  integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==
    +  dependencies:
    +    "@humanwhocodes/object-schema" "^1.2.1"
    +    debug "^4.1.1"
    +    minimatch "^3.0.5"
    +
    +"@humanwhocodes/module-importer@^1.0.1":
    +  version "1.0.1"
    +  resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
    +  integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
    +
    +"@humanwhocodes/object-schema@^1.2.1":
    +  version "1.2.1"
    +  resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
    +  integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
     
     "@istanbuljs/load-nyc-config@^1.0.0":
       version "1.1.0"
    @@ -554,181 +807,237 @@
       resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd"
       integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==
     
    -"@jest/console@^26.1.0":
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.1.0.tgz#f67c89e4f4d04dbcf7b052aed5ab9c74f915b954"
    -  integrity sha512-+0lpTHMd/8pJp+Nd4lyip+/Iyf2dZJvcCqrlkeZQoQid+JlThA4M9vxHtheyrQ99jJTMQam+es4BcvZ5W5cC3A==
    +"@jest/console@^29.6.4":
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.6.4.tgz#a7e2d84516301f986bba0dd55af9d5fe37f46527"
    +  integrity sha512-wNK6gC0Ha9QeEPSkeJedQuTQqxZYnDPuDcDhVuVatRvMkL4D0VTvFVZj+Yuh6caG2aOfzkUZ36KtCmLNtR02hw==
       dependencies:
    -    "@jest/types" "^26.1.0"
    +    "@jest/types" "^29.6.3"
    +    "@types/node" "*"
         chalk "^4.0.0"
    -    jest-message-util "^26.1.0"
    -    jest-util "^26.1.0"
    +    jest-message-util "^29.6.3"
    +    jest-util "^29.6.3"
         slash "^3.0.0"
     
    -"@jest/core@^26.1.0":
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.1.0.tgz#4580555b522de412a7998b3938c851e4f9da1c18"
    -  integrity sha512-zyizYmDJOOVke4OO/De//aiv8b07OwZzL2cfsvWF3q9YssfpcKfcnZAwDY8f+A76xXSMMYe8i/f/LPocLlByfw==
    -  dependencies:
    -    "@jest/console" "^26.1.0"
    -    "@jest/reporters" "^26.1.0"
    -    "@jest/test-result" "^26.1.0"
    -    "@jest/transform" "^26.1.0"
    -    "@jest/types" "^26.1.0"
    +"@jest/core@^29.6.4":
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.6.4.tgz#265ebee05ec1ff3567757e7a327155c8d6bdb126"
    +  integrity sha512-U/vq5ccNTSVgYH7mHnodHmCffGWHJnz/E1BEWlLuK5pM4FZmGfBn/nrJGLjUsSmyx3otCeqc1T31F4y08AMDLg==
    +  dependencies:
    +    "@jest/console" "^29.6.4"
    +    "@jest/reporters" "^29.6.4"
    +    "@jest/test-result" "^29.6.4"
    +    "@jest/transform" "^29.6.4"
    +    "@jest/types" "^29.6.3"
    +    "@types/node" "*"
         ansi-escapes "^4.2.1"
         chalk "^4.0.0"
    +    ci-info "^3.2.0"
         exit "^0.1.2"
    -    graceful-fs "^4.2.4"
    -    jest-changed-files "^26.1.0"
    -    jest-config "^26.1.0"
    -    jest-haste-map "^26.1.0"
    -    jest-message-util "^26.1.0"
    -    jest-regex-util "^26.0.0"
    -    jest-resolve "^26.1.0"
    -    jest-resolve-dependencies "^26.1.0"
    -    jest-runner "^26.1.0"
    -    jest-runtime "^26.1.0"
    -    jest-snapshot "^26.1.0"
    -    jest-util "^26.1.0"
    -    jest-validate "^26.1.0"
    -    jest-watcher "^26.1.0"
    -    micromatch "^4.0.2"
    -    p-each-series "^2.1.0"
    -    rimraf "^3.0.0"
    +    graceful-fs "^4.2.9"
    +    jest-changed-files "^29.6.3"
    +    jest-config "^29.6.4"
    +    jest-haste-map "^29.6.4"
    +    jest-message-util "^29.6.3"
    +    jest-regex-util "^29.6.3"
    +    jest-resolve "^29.6.4"
    +    jest-resolve-dependencies "^29.6.4"
    +    jest-runner "^29.6.4"
    +    jest-runtime "^29.6.4"
    +    jest-snapshot "^29.6.4"
    +    jest-util "^29.6.3"
    +    jest-validate "^29.6.3"
    +    jest-watcher "^29.6.4"
    +    micromatch "^4.0.4"
    +    pretty-format "^29.6.3"
         slash "^3.0.0"
         strip-ansi "^6.0.0"
     
    -"@jest/environment@^26.1.0":
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.1.0.tgz#378853bcdd1c2443b4555ab908cfbabb851e96da"
    -  integrity sha512-86+DNcGongbX7ai/KE/S3/NcUVZfrwvFzOOWX/W+OOTvTds7j07LtC+MgGydH5c8Ri3uIrvdmVgd1xFD5zt/xA==
    +"@jest/environment@^29.6.4":
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.6.4.tgz#78ec2c9f8c8829a37616934ff4fea0c028c79f4f"
    +  integrity sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==
       dependencies:
    -    "@jest/fake-timers" "^26.1.0"
    -    "@jest/types" "^26.1.0"
    -    jest-mock "^26.1.0"
    +    "@jest/fake-timers" "^29.6.4"
    +    "@jest/types" "^29.6.3"
    +    "@types/node" "*"
    +    jest-mock "^29.6.3"
     
    -"@jest/fake-timers@^26.1.0":
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.1.0.tgz#9a76b7a94c351cdbc0ad53e5a748789f819a65fe"
    -  integrity sha512-Y5F3kBVWxhau3TJ825iuWy++BAuQzK/xEa+wD9vDH3RytW9f2DbMVodfUQC54rZDX3POqdxCgcKdgcOL0rYUpA==
    +"@jest/expect-utils@^29.6.4":
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.6.4.tgz#17c7dfe6cec106441f218b0aff4b295f98346679"
    +  integrity sha512-FEhkJhqtvBwgSpiTrocquJCdXPsyvNKcl/n7A3u7X4pVoF4bswm11c9d4AV+kfq2Gpv/mM8x7E7DsRvH+djkrg==
       dependencies:
    -    "@jest/types" "^26.1.0"
    -    "@sinonjs/fake-timers" "^6.0.1"
    -    jest-message-util "^26.1.0"
    -    jest-mock "^26.1.0"
    -    jest-util "^26.1.0"
    +    jest-get-type "^29.6.3"
     
    -"@jest/globals@^26.1.0":
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.1.0.tgz#6cc5d7cbb79b76b120f2403d7d755693cf063ab1"
    -  integrity sha512-MKiHPNaT+ZoG85oMaYUmGHEqu98y3WO2yeIDJrs2sJqHhYOy3Z6F7F/luzFomRQ8SQ1wEkmahFAz2291Iv8EAw==
    +"@jest/expect@^29.6.4":
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.6.4.tgz#1d6ae17dc68d906776198389427ab7ce6179dba6"
    +  integrity sha512-Warhsa7d23+3X5bLbrbYvaehcgX5TLYhI03JKoedTiI8uJU4IhqYBWF7OSSgUyz4IgLpUYPkK0AehA5/fRclAA==
       dependencies:
    -    "@jest/environment" "^26.1.0"
    -    "@jest/types" "^26.1.0"
    -    expect "^26.1.0"
    +    expect "^29.6.4"
    +    jest-snapshot "^29.6.4"
     
    -"@jest/reporters@^26.1.0":
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.1.0.tgz#08952e90c90282e14ff49e927bdf1873617dae78"
    -  integrity sha512-SVAysur9FOIojJbF4wLP0TybmqwDkdnFxHSPzHMMIYyBtldCW9gG+Q5xWjpMFyErDiwlRuPyMSJSU64A67Pazg==
    +"@jest/fake-timers@^29.6.4":
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.6.4.tgz#45a27f093c43d5d989362a3e7a8c70c83188b4f6"
    +  integrity sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==
    +  dependencies:
    +    "@jest/types" "^29.6.3"
    +    "@sinonjs/fake-timers" "^10.0.2"
    +    "@types/node" "*"
    +    jest-message-util "^29.6.3"
    +    jest-mock "^29.6.3"
    +    jest-util "^29.6.3"
    +
    +"@jest/globals@^29.6.4":
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.6.4.tgz#4f04f58731b062b44ef23036b79bdb31f40c7f63"
    +  integrity sha512-wVIn5bdtjlChhXAzVXavcY/3PEjf4VqM174BM3eGL5kMxLiZD5CLnbmkEyA1Dwh9q8XjP6E8RwjBsY/iCWrWsA==
    +  dependencies:
    +    "@jest/environment" "^29.6.4"
    +    "@jest/expect" "^29.6.4"
    +    "@jest/types" "^29.6.3"
    +    jest-mock "^29.6.3"
    +
    +"@jest/reporters@^29.6.4":
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.6.4.tgz#9d6350c8a2761ece91f7946e97ab0dabc06deab7"
    +  integrity sha512-sxUjWxm7QdchdrD3NfWKrL8FBsortZeibSJv4XLjESOOjSUOkjQcb0ZHJwfhEGIvBvTluTzfG2yZWZhkrXJu8g==
       dependencies:
         "@bcoe/v8-coverage" "^0.2.3"
    -    "@jest/console" "^26.1.0"
    -    "@jest/test-result" "^26.1.0"
    -    "@jest/transform" "^26.1.0"
    -    "@jest/types" "^26.1.0"
    +    "@jest/console" "^29.6.4"
    +    "@jest/test-result" "^29.6.4"
    +    "@jest/transform" "^29.6.4"
    +    "@jest/types" "^29.6.3"
    +    "@jridgewell/trace-mapping" "^0.3.18"
    +    "@types/node" "*"
         chalk "^4.0.0"
         collect-v8-coverage "^1.0.0"
         exit "^0.1.2"
    -    glob "^7.1.2"
    -    graceful-fs "^4.2.4"
    +    glob "^7.1.3"
    +    graceful-fs "^4.2.9"
         istanbul-lib-coverage "^3.0.0"
    -    istanbul-lib-instrument "^4.0.3"
    +    istanbul-lib-instrument "^6.0.0"
         istanbul-lib-report "^3.0.0"
         istanbul-lib-source-maps "^4.0.0"
    -    istanbul-reports "^3.0.2"
    -    jest-haste-map "^26.1.0"
    -    jest-resolve "^26.1.0"
    -    jest-util "^26.1.0"
    -    jest-worker "^26.1.0"
    +    istanbul-reports "^3.1.3"
    +    jest-message-util "^29.6.3"
    +    jest-util "^29.6.3"
    +    jest-worker "^29.6.4"
         slash "^3.0.0"
    -    source-map "^0.6.0"
         string-length "^4.0.1"
    -    terminal-link "^2.0.0"
    -    v8-to-istanbul "^4.1.3"
    -  optionalDependencies:
    -    node-notifier "^7.0.0"
    +    strip-ansi "^6.0.0"
    +    v8-to-istanbul "^9.0.1"
     
    -"@jest/source-map@^26.1.0":
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.1.0.tgz#a6a020d00e7d9478f4b690167c5e8b77e63adb26"
    -  integrity sha512-XYRPYx4eEVX15cMT9mstnO7hkHP3krNtKfxUYd8L7gbtia8JvZZ6bMzSwa6IQJENbudTwKMw5R1BePRD+bkEmA==
    +"@jest/schemas@^29.6.3":
    +  version "29.6.3"
    +  resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03"
    +  integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==
    +  dependencies:
    +    "@sinclair/typebox" "^0.27.8"
    +
    +"@jest/source-map@^29.6.3":
    +  version "29.6.3"
    +  resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4"
    +  integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==
       dependencies:
    +    "@jridgewell/trace-mapping" "^0.3.18"
         callsites "^3.0.0"
    -    graceful-fs "^4.2.4"
    -    source-map "^0.6.0"
    +    graceful-fs "^4.2.9"
     
    -"@jest/test-result@^26.1.0":
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.1.0.tgz#a93fa15b21ad3c7ceb21c2b4c35be2e407d8e971"
    -  integrity sha512-Xz44mhXph93EYMA8aYDz+75mFbarTV/d/x0yMdI3tfSRs/vh4CqSxgzVmCps1fPkHDCtn0tU8IH9iCKgGeGpfw==
    +"@jest/test-result@^29.6.4":
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.6.4.tgz#adf5c79f6e1fb7405ad13d67d9e2b6ff54b54c6b"
    +  integrity sha512-uQ1C0AUEN90/dsyEirgMLlouROgSY+Wc/JanVVk0OiUKa5UFh7sJpMEM3aoUBAz2BRNvUJ8j3d294WFuRxSyOQ==
       dependencies:
    -    "@jest/console" "^26.1.0"
    -    "@jest/types" "^26.1.0"
    +    "@jest/console" "^29.6.4"
    +    "@jest/types" "^29.6.3"
         "@types/istanbul-lib-coverage" "^2.0.0"
         collect-v8-coverage "^1.0.0"
     
    -"@jest/test-sequencer@^26.1.0":
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.1.0.tgz#41a6fc8b850c3f33f48288ea9ea517c047e7f14e"
    -  integrity sha512-Z/hcK+rTq56E6sBwMoQhSRDVjqrGtj1y14e2bIgcowARaIE1SgOanwx6gvY4Q9gTKMoZQXbXvptji+q5GYxa6Q==
    +"@jest/test-sequencer@^29.6.4":
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.6.4.tgz#86aef66aaa22b181307ed06c26c82802fb836d7b"
    +  integrity sha512-E84M6LbpcRq3fT4ckfKs9ryVanwkaIB0Ws9bw3/yP4seRLg/VaCZ/LgW0MCq5wwk4/iP/qnilD41aj2fsw2RMg==
       dependencies:
    -    "@jest/test-result" "^26.1.0"
    -    graceful-fs "^4.2.4"
    -    jest-haste-map "^26.1.0"
    -    jest-runner "^26.1.0"
    -    jest-runtime "^26.1.0"
    +    "@jest/test-result" "^29.6.4"
    +    graceful-fs "^4.2.9"
    +    jest-haste-map "^29.6.4"
    +    slash "^3.0.0"
     
    -"@jest/transform@^26.1.0":
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.1.0.tgz#697f48898c2a2787c9b4cb71d09d7e617464e509"
    -  integrity sha512-ICPm6sUXmZJieq45ix28k0s+d/z2E8CHDsq+WwtWI6kW8m7I8kPqarSEcUN86entHQ570ZBRci5OWaKL0wlAWw==
    +"@jest/transform@^29.6.4":
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.6.4.tgz#a6bc799ef597c5d85b2e65a11fd96b6b239bab5a"
    +  integrity sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA==
       dependencies:
    -    "@babel/core" "^7.1.0"
    -    "@jest/types" "^26.1.0"
    -    babel-plugin-istanbul "^6.0.0"
    +    "@babel/core" "^7.11.6"
    +    "@jest/types" "^29.6.3"
    +    "@jridgewell/trace-mapping" "^0.3.18"
    +    babel-plugin-istanbul "^6.1.1"
         chalk "^4.0.0"
    -    convert-source-map "^1.4.0"
    -    fast-json-stable-stringify "^2.0.0"
    -    graceful-fs "^4.2.4"
    -    jest-haste-map "^26.1.0"
    -    jest-regex-util "^26.0.0"
    -    jest-util "^26.1.0"
    -    micromatch "^4.0.2"
    -    pirates "^4.0.1"
    +    convert-source-map "^2.0.0"
    +    fast-json-stable-stringify "^2.1.0"
    +    graceful-fs "^4.2.9"
    +    jest-haste-map "^29.6.4"
    +    jest-regex-util "^29.6.3"
    +    jest-util "^29.6.3"
    +    micromatch "^4.0.4"
    +    pirates "^4.0.4"
         slash "^3.0.0"
    -    source-map "^0.6.1"
    -    write-file-atomic "^3.0.0"
    +    write-file-atomic "^4.0.2"
     
    -"@jest/types@^25.5.0":
    -  version "25.5.0"
    -  resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d"
    -  integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==
    +"@jest/types@^29.6.3":
    +  version "29.6.3"
    +  resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59"
    +  integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==
       dependencies:
    +    "@jest/schemas" "^29.6.3"
         "@types/istanbul-lib-coverage" "^2.0.0"
    -    "@types/istanbul-reports" "^1.1.1"
    -    "@types/yargs" "^15.0.0"
    -    chalk "^3.0.0"
    +    "@types/istanbul-reports" "^3.0.0"
    +    "@types/node" "*"
    +    "@types/yargs" "^17.0.8"
    +    chalk "^4.0.0"
     
    -"@jest/types@^26.1.0":
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.1.0.tgz#f8afaaaeeb23b5cad49dd1f7779689941dcb6057"
    -  integrity sha512-GXigDDsp6ZlNMhXQDeuy/iYCDsRIHJabWtDzvnn36+aqFfG14JmFV0e/iXxY4SP9vbXSiPNOWdehU5MeqrYHBQ==
    +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
    +  version "0.3.3"
    +  resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098"
    +  integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==
       dependencies:
    -    "@types/istanbul-lib-coverage" "^2.0.0"
    -    "@types/istanbul-reports" "^1.1.1"
    -    "@types/yargs" "^15.0.0"
    -    chalk "^4.0.0"
    +    "@jridgewell/set-array" "^1.0.1"
    +    "@jridgewell/sourcemap-codec" "^1.4.10"
    +    "@jridgewell/trace-mapping" "^0.3.9"
    +
    +"@jridgewell/resolve-uri@^3.1.0":
    +  version "3.1.1"
    +  resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
    +  integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
    +
    +"@jridgewell/set-array@^1.0.1":
    +  version "1.1.2"
    +  resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
    +  integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
    +
    +"@jridgewell/source-map@^0.3.3":
    +  version "0.3.5"
    +  resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91"
    +  integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==
    +  dependencies:
    +    "@jridgewell/gen-mapping" "^0.3.0"
    +    "@jridgewell/trace-mapping" "^0.3.9"
    +
    +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
    +  version "1.4.15"
    +  resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
    +  integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
    +
    +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9":
    +  version "0.3.19"
    +  resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811"
    +  integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==
    +  dependencies:
    +    "@jridgewell/resolve-uri" "^3.1.0"
    +    "@jridgewell/sourcemap-codec" "^1.4.14"
     
     "@nodelib/fs.scandir@2.1.3":
       version "2.1.3"
    @@ -738,11 +1047,24 @@
         "@nodelib/fs.stat" "2.0.3"
         run-parallel "^1.1.9"
     
    +"@nodelib/fs.scandir@2.1.5":
    +  version "2.1.5"
    +  resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
    +  integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
    +  dependencies:
    +    "@nodelib/fs.stat" "2.0.5"
    +    run-parallel "^1.1.9"
    +
     "@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2":
       version "2.0.3"
       resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3"
       integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==
     
    +"@nodelib/fs.stat@2.0.5":
    +  version "2.0.5"
    +  resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
    +  integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
    +
     "@nodelib/fs.walk@^1.2.3":
       version "1.2.4"
       resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976"
    @@ -751,6 +1073,14 @@
         "@nodelib/fs.scandir" "2.1.3"
         fastq "^1.6.0"
     
    +"@nodelib/fs.walk@^1.2.8":
    +  version "1.2.8"
    +  resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
    +  integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
    +  dependencies:
    +    "@nodelib/fs.scandir" "2.1.5"
    +    fastq "^1.6.0"
    +
     "@npmcli/move-file@^1.0.1":
       version "1.0.1"
       resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464"
    @@ -758,24 +1088,29 @@
       dependencies:
         mkdirp "^1.0.4"
     
    +"@sinclair/typebox@^0.27.8":
    +  version "0.27.8"
    +  resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
    +  integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==
    +
     "@sindresorhus/is@^0.14.0":
       version "0.14.0"
       resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
       integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
     
    -"@sinonjs/commons@^1.7.0":
    -  version "1.8.0"
    -  resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.0.tgz#c8d68821a854c555bba172f3b06959a0039b236d"
    -  integrity sha512-wEj54PfsZ5jGSwMX68G8ZXFawcSglQSXqCftWX3ec8MDUzQdHgcKvw97awHbY0efQEL5iKUOAmmVtoYgmrSG4Q==
    +"@sinonjs/commons@^3.0.0":
    +  version "3.0.0"
    +  resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72"
    +  integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==
       dependencies:
         type-detect "4.0.8"
     
    -"@sinonjs/fake-timers@^6.0.1":
    -  version "6.0.1"
    -  resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40"
    -  integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==
    +"@sinonjs/fake-timers@^10.0.2":
    +  version "10.3.0"
    +  resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66"
    +  integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==
       dependencies:
    -    "@sinonjs/commons" "^1.7.0"
    +    "@sinonjs/commons" "^3.0.0"
     
     "@szmarczak/http-timer@^1.1.2":
       version "1.1.2"
    @@ -784,13 +1119,18 @@
       dependencies:
         defer-to-connect "^1.0.1"
     
    -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7":
    -  version "7.1.9"
    -  resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d"
    -  integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw==
    +"@tootallnate/once@2":
    +  version "2.0.0"
    +  resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
    +  integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
    +
    +"@types/babel__core@^7.1.14":
    +  version "7.20.1"
    +  resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.1.tgz#916ecea274b0c776fec721e333e55762d3a9614b"
    +  integrity sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==
       dependencies:
    -    "@babel/parser" "^7.1.0"
    -    "@babel/types" "^7.0.0"
    +    "@babel/parser" "^7.20.7"
    +    "@babel/types" "^7.20.7"
         "@types/babel__generator" "*"
         "@types/babel__template" "*"
         "@types/babel__traverse" "*"
    @@ -822,10 +1162,26 @@
       resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
       integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
     
    -"@types/eslint-visitor-keys@^1.0.0":
    -  version "1.0.0"
    -  resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d"
    -  integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==
    +"@types/eslint-scope@^3.7.3":
    +  version "3.7.4"
    +  resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16"
    +  integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==
    +  dependencies:
    +    "@types/eslint" "*"
    +    "@types/estree" "*"
    +
    +"@types/eslint@*":
    +  version "8.44.2"
    +  resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.2.tgz#0d21c505f98a89b8dd4d37fa162b09da6089199a"
    +  integrity sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==
    +  dependencies:
    +    "@types/estree" "*"
    +    "@types/json-schema" "*"
    +
    +"@types/estree@*", "@types/estree@^1.0.0":
    +  version "1.0.1"
    +  resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194"
    +  integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==
     
     "@types/glob@^7.1.1":
       version "7.1.2"
    @@ -835,10 +1191,10 @@
         "@types/minimatch" "*"
         "@types/node" "*"
     
    -"@types/graceful-fs@^4.1.2":
    -  version "4.1.3"
    -  resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f"
    -  integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ==
    +"@types/graceful-fs@^4.1.3":
    +  version "4.1.6"
    +  resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae"
    +  integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==
       dependencies:
         "@types/node" "*"
     
    @@ -854,23 +1210,36 @@
       dependencies:
         "@types/istanbul-lib-coverage" "*"
     
    -"@types/istanbul-reports@^1.1.1":
    -  version "1.1.2"
    -  resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2"
    -  integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==
    +"@types/istanbul-reports@^3.0.0":
    +  version "3.0.1"
    +  resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff"
    +  integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==
       dependencies:
    -    "@types/istanbul-lib-coverage" "*"
         "@types/istanbul-lib-report" "*"
     
    -"@types/jest@^26.0.0":
    -  version "26.0.3"
    -  resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.3.tgz#79534e0e94857171c0edc596db0ebe7cb7863251"
    -  integrity sha512-v89ga1clpVL/Y1+YI0eIu1VMW+KU7Xl8PhylVtDKVWaSUHBHYPLXMQGBdrpHewaKoTvlXkksbYqPgz8b4cmRZg==
    +"@types/jest@^29.5.4":
    +  version "29.5.4"
    +  resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.4.tgz#9d0a16edaa009a71e6a71a999acd582514dab566"
    +  integrity sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A==
       dependencies:
    -    jest-diff "^25.2.1"
    -    pretty-format "^25.2.1"
    +    expect "^29.0.0"
    +    pretty-format "^29.0.0"
    +
    +"@types/jsdom@^20.0.0":
    +  version "20.0.1"
    +  resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808"
    +  integrity sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==
    +  dependencies:
    +    "@types/node" "*"
    +    "@types/tough-cookie" "*"
    +    parse5 "^7.0.0"
    +
    +"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.8":
    +  version "7.0.12"
    +  resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb"
    +  integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==
     
    -"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.4":
    +"@types/json-schema@^7.0.4":
       version "7.0.5"
       resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd"
       integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==
    @@ -885,16 +1254,6 @@
       resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.14.tgz#24a0b5959f16ac141aeb0c5b3cd7a15b7c64cbce"
       integrity sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ==
     
    -"@types/normalize-package-data@^2.4.0":
    -  version "2.4.0"
    -  resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
    -  integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==
    -
    -"@types/prettier@^2.0.0":
    -  version "2.0.1"
    -  resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.0.1.tgz#b6e98083f13faa1e5231bfa3bdb1b0feff536b6d"
    -  integrity sha512-boy4xPNEtiw6N3abRhBi/e7hNvy3Tt8E9ZRAQrwAGzoCGZS/1wjo9KY7JHhnfnEsG5wSjDbymCozUM9a3ea7OQ==
    -
     "@types/prop-types@*":
       version "15.7.3"
       resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7"
    @@ -915,10 +1274,20 @@
         "@types/prop-types" "*"
         csstype "^2.2.0"
     
    -"@types/stack-utils@^1.0.1":
    -  version "1.0.1"
    -  resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
    -  integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==
    +"@types/semver@^7.5.0":
    +  version "7.5.1"
    +  resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.1.tgz#0480eeb7221eb9bc398ad7432c9d7e14b1a5a367"
    +  integrity sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==
    +
    +"@types/stack-utils@^2.0.0":
    +  version "2.0.1"
    +  resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c"
    +  integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==
    +
    +"@types/tough-cookie@*":
    +  version "4.0.2"
    +  resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397"
    +  integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==
     
     "@types/unist@^2.0.0", "@types/unist@^2.0.2":
       version "2.0.3"
    @@ -930,201 +1299,217 @@
       resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d"
       integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==
     
    -"@types/yargs@^15.0.0":
    -  version "15.0.5"
    -  resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79"
    -  integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==
    +"@types/yargs@^17.0.8":
    +  version "17.0.24"
    +  resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902"
    +  integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==
       dependencies:
         "@types/yargs-parser" "*"
     
    -"@typescript-eslint/eslint-plugin@^3.2.0":
    -  version "3.4.0"
    -  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.4.0.tgz#8378062e6be8a1d049259bdbcf27ce5dfbeee62b"
    -  integrity sha512-wfkpiqaEVhZIuQRmudDszc01jC/YR7gMSxa6ulhggAe/Hs0KVIuo9wzvFiDbG3JD5pRFQoqnf4m7REDsUvBnMQ==
    -  dependencies:
    -    "@typescript-eslint/experimental-utils" "3.4.0"
    -    debug "^4.1.1"
    -    functional-red-black-tree "^1.0.1"
    -    regexpp "^3.0.0"
    -    semver "^7.3.2"
    -    tsutils "^3.17.1"
    -
    -"@typescript-eslint/experimental-utils@3.4.0":
    -  version "3.4.0"
    -  resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.4.0.tgz#8a44dfc6fb7f1d071937b390fe27608ebda122b8"
    -  integrity sha512-rHPOjL43lOH1Opte4+dhC0a/+ks+8gOBwxXnyrZ/K4OTAChpSjP76fbI8Cglj7V5GouwVAGaK+xVwzqTyE/TPw==
    -  dependencies:
    -    "@types/json-schema" "^7.0.3"
    -    "@typescript-eslint/typescript-estree" "3.4.0"
    -    eslint-scope "^5.0.0"
    -    eslint-utils "^2.0.0"
    -
    -"@typescript-eslint/parser@^3.2.0":
    -  version "3.4.0"
    -  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.4.0.tgz#fe52b68c5cb3bba3f5d875bd17adb70420d49d8d"
    -  integrity sha512-ZUGI/de44L5x87uX5zM14UYcbn79HSXUR+kzcqU42gH0AgpdB/TjuJy3m4ezI7Q/jk3wTQd755mxSDLhQP79KA==
    -  dependencies:
    -    "@types/eslint-visitor-keys" "^1.0.0"
    -    "@typescript-eslint/experimental-utils" "3.4.0"
    -    "@typescript-eslint/typescript-estree" "3.4.0"
    -    eslint-visitor-keys "^1.1.0"
    -
    -"@typescript-eslint/typescript-estree@3.4.0":
    -  version "3.4.0"
    -  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.4.0.tgz#6a787eb70b48969e4cd1ea67b057083f96dfee29"
    -  integrity sha512-zKwLiybtt4uJb4mkG5q2t6+W7BuYx2IISiDNV+IY68VfoGwErDx/RfVI7SWL4gnZ2t1A1ytQQwZ+YOJbHHJ2rw==
    -  dependencies:
    -    debug "^4.1.1"
    -    eslint-visitor-keys "^1.1.0"
    -    glob "^7.1.6"
    -    is-glob "^4.0.1"
    -    lodash "^4.17.15"
    -    semver "^7.3.2"
    -    tsutils "^3.17.1"
    -
    -"@webassemblyjs/ast@1.9.0":
    -  version "1.9.0"
    -  resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
    -  integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==
    -  dependencies:
    -    "@webassemblyjs/helper-module-context" "1.9.0"
    -    "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
    -    "@webassemblyjs/wast-parser" "1.9.0"
    -
    -"@webassemblyjs/floating-point-hex-parser@1.9.0":
    -  version "1.9.0"
    -  resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4"
    -  integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==
    -
    -"@webassemblyjs/helper-api-error@1.9.0":
    -  version "1.9.0"
    -  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2"
    -  integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==
    -
    -"@webassemblyjs/helper-buffer@1.9.0":
    -  version "1.9.0"
    -  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00"
    -  integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==
    -
    -"@webassemblyjs/helper-code-frame@1.9.0":
    -  version "1.9.0"
    -  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27"
    -  integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==
    -  dependencies:
    -    "@webassemblyjs/wast-printer" "1.9.0"
    -
    -"@webassemblyjs/helper-fsm@1.9.0":
    -  version "1.9.0"
    -  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8"
    -  integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==
    -
    -"@webassemblyjs/helper-module-context@1.9.0":
    -  version "1.9.0"
    -  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07"
    -  integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==
    -  dependencies:
    -    "@webassemblyjs/ast" "1.9.0"
    -
    -"@webassemblyjs/helper-wasm-bytecode@1.9.0":
    -  version "1.9.0"
    -  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790"
    -  integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==
    -
    -"@webassemblyjs/helper-wasm-section@1.9.0":
    -  version "1.9.0"
    -  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346"
    -  integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==
    -  dependencies:
    -    "@webassemblyjs/ast" "1.9.0"
    -    "@webassemblyjs/helper-buffer" "1.9.0"
    -    "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
    -    "@webassemblyjs/wasm-gen" "1.9.0"
    -
    -"@webassemblyjs/ieee754@1.9.0":
    -  version "1.9.0"
    -  resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4"
    -  integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==
    -  dependencies:
    -    "@xtuc/ieee754" "^1.2.0"
    -
    -"@webassemblyjs/leb128@1.9.0":
    -  version "1.9.0"
    -  resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95"
    -  integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==
    -  dependencies:
    +"@typescript-eslint/eslint-plugin@^6.6.0":
    +  version "6.6.0"
    +  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.6.0.tgz#19ba09aa34fd504696445100262e5a9e1b1d7024"
    +  integrity sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==
    +  dependencies:
    +    "@eslint-community/regexpp" "^4.5.1"
    +    "@typescript-eslint/scope-manager" "6.6.0"
    +    "@typescript-eslint/type-utils" "6.6.0"
    +    "@typescript-eslint/utils" "6.6.0"
    +    "@typescript-eslint/visitor-keys" "6.6.0"
    +    debug "^4.3.4"
    +    graphemer "^1.4.0"
    +    ignore "^5.2.4"
    +    natural-compare "^1.4.0"
    +    semver "^7.5.4"
    +    ts-api-utils "^1.0.1"
    +
    +"@typescript-eslint/parser@^6.6.0":
    +  version "6.6.0"
    +  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.6.0.tgz#fe323a7b4eafb6d5ea82b96216561810394a739e"
    +  integrity sha512-setq5aJgUwtzGrhW177/i+DMLqBaJbdwGj2CPIVFFLE0NCliy5ujIdLHd2D1ysmlmsjdL2GWW+hR85neEfc12w==
    +  dependencies:
    +    "@typescript-eslint/scope-manager" "6.6.0"
    +    "@typescript-eslint/types" "6.6.0"
    +    "@typescript-eslint/typescript-estree" "6.6.0"
    +    "@typescript-eslint/visitor-keys" "6.6.0"
    +    debug "^4.3.4"
    +
    +"@typescript-eslint/scope-manager@6.6.0":
    +  version "6.6.0"
    +  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.6.0.tgz#57105d4419d6de971f7d2c30a2ff4ac40003f61a"
    +  integrity sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw==
    +  dependencies:
    +    "@typescript-eslint/types" "6.6.0"
    +    "@typescript-eslint/visitor-keys" "6.6.0"
    +
    +"@typescript-eslint/type-utils@6.6.0":
    +  version "6.6.0"
    +  resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.6.0.tgz#14f651d13b884915c4fca0d27adeb652a4499e86"
    +  integrity sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==
    +  dependencies:
    +    "@typescript-eslint/typescript-estree" "6.6.0"
    +    "@typescript-eslint/utils" "6.6.0"
    +    debug "^4.3.4"
    +    ts-api-utils "^1.0.1"
    +
    +"@typescript-eslint/types@6.6.0":
    +  version "6.6.0"
    +  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.6.0.tgz#95e7ea650a2b28bc5af5ea8907114a48f54618c2"
    +  integrity sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg==
    +
    +"@typescript-eslint/typescript-estree@6.6.0":
    +  version "6.6.0"
    +  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.6.0.tgz#373c420d2e12c28220f4a83352280a04823a91b7"
    +  integrity sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==
    +  dependencies:
    +    "@typescript-eslint/types" "6.6.0"
    +    "@typescript-eslint/visitor-keys" "6.6.0"
    +    debug "^4.3.4"
    +    globby "^11.1.0"
    +    is-glob "^4.0.3"
    +    semver "^7.5.4"
    +    ts-api-utils "^1.0.1"
    +
    +"@typescript-eslint/utils@6.6.0":
    +  version "6.6.0"
    +  resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.6.0.tgz#2d686c0f0786da6362d909e27a9de1c13ba2e7dc"
    +  integrity sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==
    +  dependencies:
    +    "@eslint-community/eslint-utils" "^4.4.0"
    +    "@types/json-schema" "^7.0.12"
    +    "@types/semver" "^7.5.0"
    +    "@typescript-eslint/scope-manager" "6.6.0"
    +    "@typescript-eslint/types" "6.6.0"
    +    "@typescript-eslint/typescript-estree" "6.6.0"
    +    semver "^7.5.4"
    +
    +"@typescript-eslint/visitor-keys@6.6.0":
    +  version "6.6.0"
    +  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.6.0.tgz#1109088b4346c8b2446f3845db526374d9a3bafc"
    +  integrity sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ==
    +  dependencies:
    +    "@typescript-eslint/types" "6.6.0"
    +    eslint-visitor-keys "^3.4.1"
    +
    +"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5":
    +  version "1.11.6"
    +  resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24"
    +  integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==
    +  dependencies:
    +    "@webassemblyjs/helper-numbers" "1.11.6"
    +    "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
    +
    +"@webassemblyjs/floating-point-hex-parser@1.11.6":
    +  version "1.11.6"
    +  resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431"
    +  integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==
    +
    +"@webassemblyjs/helper-api-error@1.11.6":
    +  version "1.11.6"
    +  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768"
    +  integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==
    +
    +"@webassemblyjs/helper-buffer@1.11.6":
    +  version "1.11.6"
    +  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093"
    +  integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==
    +
    +"@webassemblyjs/helper-numbers@1.11.6":
    +  version "1.11.6"
    +  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5"
    +  integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==
    +  dependencies:
    +    "@webassemblyjs/floating-point-hex-parser" "1.11.6"
    +    "@webassemblyjs/helper-api-error" "1.11.6"
         "@xtuc/long" "4.2.2"
     
    -"@webassemblyjs/utf8@1.9.0":
    -  version "1.9.0"
    -  resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab"
    -  integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==
    +"@webassemblyjs/helper-wasm-bytecode@1.11.6":
    +  version "1.11.6"
    +  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9"
    +  integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==
     
    -"@webassemblyjs/wasm-edit@1.9.0":
    -  version "1.9.0"
    -  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf"
    -  integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==
    -  dependencies:
    -    "@webassemblyjs/ast" "1.9.0"
    -    "@webassemblyjs/helper-buffer" "1.9.0"
    -    "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
    -    "@webassemblyjs/helper-wasm-section" "1.9.0"
    -    "@webassemblyjs/wasm-gen" "1.9.0"
    -    "@webassemblyjs/wasm-opt" "1.9.0"
    -    "@webassemblyjs/wasm-parser" "1.9.0"
    -    "@webassemblyjs/wast-printer" "1.9.0"
    -
    -"@webassemblyjs/wasm-gen@1.9.0":
    -  version "1.9.0"
    -  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c"
    -  integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==
    +"@webassemblyjs/helper-wasm-section@1.11.6":
    +  version "1.11.6"
    +  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577"
    +  integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==
       dependencies:
    -    "@webassemblyjs/ast" "1.9.0"
    -    "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
    -    "@webassemblyjs/ieee754" "1.9.0"
    -    "@webassemblyjs/leb128" "1.9.0"
    -    "@webassemblyjs/utf8" "1.9.0"
    +    "@webassemblyjs/ast" "1.11.6"
    +    "@webassemblyjs/helper-buffer" "1.11.6"
    +    "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
    +    "@webassemblyjs/wasm-gen" "1.11.6"
     
    -"@webassemblyjs/wasm-opt@1.9.0":
    -  version "1.9.0"
    -  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61"
    -  integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==
    +"@webassemblyjs/ieee754@1.11.6":
    +  version "1.11.6"
    +  resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a"
    +  integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==
       dependencies:
    -    "@webassemblyjs/ast" "1.9.0"
    -    "@webassemblyjs/helper-buffer" "1.9.0"
    -    "@webassemblyjs/wasm-gen" "1.9.0"
    -    "@webassemblyjs/wasm-parser" "1.9.0"
    +    "@xtuc/ieee754" "^1.2.0"
     
    -"@webassemblyjs/wasm-parser@1.9.0":
    -  version "1.9.0"
    -  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e"
    -  integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==
    +"@webassemblyjs/leb128@1.11.6":
    +  version "1.11.6"
    +  resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7"
    +  integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==
       dependencies:
    -    "@webassemblyjs/ast" "1.9.0"
    -    "@webassemblyjs/helper-api-error" "1.9.0"
    -    "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
    -    "@webassemblyjs/ieee754" "1.9.0"
    -    "@webassemblyjs/leb128" "1.9.0"
    -    "@webassemblyjs/utf8" "1.9.0"
    -
    -"@webassemblyjs/wast-parser@1.9.0":
    -  version "1.9.0"
    -  resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914"
    -  integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==
    -  dependencies:
    -    "@webassemblyjs/ast" "1.9.0"
    -    "@webassemblyjs/floating-point-hex-parser" "1.9.0"
    -    "@webassemblyjs/helper-api-error" "1.9.0"
    -    "@webassemblyjs/helper-code-frame" "1.9.0"
    -    "@webassemblyjs/helper-fsm" "1.9.0"
         "@xtuc/long" "4.2.2"
     
    -"@webassemblyjs/wast-printer@1.9.0":
    -  version "1.9.0"
    -  resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899"
    -  integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==
    -  dependencies:
    -    "@webassemblyjs/ast" "1.9.0"
    -    "@webassemblyjs/wast-parser" "1.9.0"
    +"@webassemblyjs/utf8@1.11.6":
    +  version "1.11.6"
    +  resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a"
    +  integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==
    +
    +"@webassemblyjs/wasm-edit@^1.11.5":
    +  version "1.11.6"
    +  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab"
    +  integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==
    +  dependencies:
    +    "@webassemblyjs/ast" "1.11.6"
    +    "@webassemblyjs/helper-buffer" "1.11.6"
    +    "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
    +    "@webassemblyjs/helper-wasm-section" "1.11.6"
    +    "@webassemblyjs/wasm-gen" "1.11.6"
    +    "@webassemblyjs/wasm-opt" "1.11.6"
    +    "@webassemblyjs/wasm-parser" "1.11.6"
    +    "@webassemblyjs/wast-printer" "1.11.6"
    +
    +"@webassemblyjs/wasm-gen@1.11.6":
    +  version "1.11.6"
    +  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268"
    +  integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==
    +  dependencies:
    +    "@webassemblyjs/ast" "1.11.6"
    +    "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
    +    "@webassemblyjs/ieee754" "1.11.6"
    +    "@webassemblyjs/leb128" "1.11.6"
    +    "@webassemblyjs/utf8" "1.11.6"
    +
    +"@webassemblyjs/wasm-opt@1.11.6":
    +  version "1.11.6"
    +  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2"
    +  integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==
    +  dependencies:
    +    "@webassemblyjs/ast" "1.11.6"
    +    "@webassemblyjs/helper-buffer" "1.11.6"
    +    "@webassemblyjs/wasm-gen" "1.11.6"
    +    "@webassemblyjs/wasm-parser" "1.11.6"
    +
    +"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5":
    +  version "1.11.6"
    +  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1"
    +  integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==
    +  dependencies:
    +    "@webassemblyjs/ast" "1.11.6"
    +    "@webassemblyjs/helper-api-error" "1.11.6"
    +    "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
    +    "@webassemblyjs/ieee754" "1.11.6"
    +    "@webassemblyjs/leb128" "1.11.6"
    +    "@webassemblyjs/utf8" "1.11.6"
    +
    +"@webassemblyjs/wast-printer@1.11.6":
    +  version "1.11.6"
    +  resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20"
    +  integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==
    +  dependencies:
    +    "@webassemblyjs/ast" "1.11.6"
         "@xtuc/long" "4.2.2"
     
     "@xtuc/ieee754@^1.2.0":
    @@ -1137,39 +1522,51 @@
       resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
       integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
     
    -abab@^2.0.3:
    -  version "2.0.3"
    -  resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a"
    -  integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==
    +abab@^2.0.6:
    +  version "2.0.6"
    +  resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
    +  integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
     
    -acorn-globals@^6.0.0:
    -  version "6.0.0"
    -  resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45"
    -  integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==
    +acorn-globals@^7.0.0:
    +  version "7.0.1"
    +  resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3"
    +  integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==
       dependencies:
    -    acorn "^7.1.1"
    -    acorn-walk "^7.1.1"
    +    acorn "^8.1.0"
    +    acorn-walk "^8.0.2"
     
    -acorn-jsx@^5.2.0:
    -  version "5.2.0"
    -  resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe"
    -  integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==
    +acorn-import-assertions@^1.9.0:
    +  version "1.9.0"
    +  resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac"
    +  integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==
     
    -acorn-walk@^7.1.1:
    -  version "7.2.0"
    -  resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
    -  integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
    +acorn-jsx@^5.3.2:
    +  version "5.3.2"
    +  resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
    +  integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
     
    -acorn@^6.4.1:
    -  version "6.4.1"
    -  resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474"
    -  integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==
    +acorn-walk@^8.0.2:
    +  version "8.2.0"
    +  resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
    +  integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
     
    -acorn@^7.1.1, acorn@^7.2.0:
    +acorn@^7.1.1:
       version "7.3.1"
       resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd"
       integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==
     
    +acorn@^8.1.0, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0:
    +  version "8.10.0"
    +  resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
    +  integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
    +
    +agent-base@6:
    +  version "6.0.2"
    +  resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
    +  integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
    +  dependencies:
    +    debug "4"
    +
     aggregate-error@^3.0.0:
       version "3.0.1"
       resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0"
    @@ -1178,17 +1575,17 @@ aggregate-error@^3.0.0:
         clean-stack "^2.0.0"
         indent-string "^4.0.0"
     
    -ajv-errors@^1.0.0:
    -  version "1.0.1"
    -  resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
    -  integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
    -
    -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1:
    +ajv-keywords@^3.4.1:
       version "3.5.0"
       resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.0.tgz#5c894537098785926d71e696114a53ce768ed773"
       integrity sha512-eyoaac3btgU8eJlvh01En8OCKzRqlLe2G5jDsCr3RiE2uLGMEEB1aaGwVVpwR8M95956tGH6R+9edC++OvzaVw==
     
    -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.5.5:
    +ajv-keywords@^3.5.2:
    +  version "3.5.2"
    +  resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
    +  integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
    +
    +ajv@^6.12.2:
       version "6.12.2"
       resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd"
       integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==
    @@ -1198,6 +1595,16 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.5.5:
         json-schema-traverse "^0.4.1"
         uri-js "^4.2.2"
     
    +ajv@^6.12.4, ajv@^6.12.5:
    +  version "6.12.6"
    +  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
    +  integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
    +  dependencies:
    +    fast-deep-equal "^3.1.1"
    +    fast-json-stable-stringify "^2.0.0"
    +    json-schema-traverse "^0.4.1"
    +    uri-js "^4.2.2"
    +
     alex@^8.0.0:
       version "8.1.1"
       resolved "https://registry.yarnpkg.com/alex/-/alex-8.1.1.tgz#361bc91f1d8e540c4441937e0f40de6303cbf064"
    @@ -1235,11 +1642,6 @@ ansi-colors@^1.0.1:
       dependencies:
         ansi-wrap "^0.1.0"
     
    -ansi-colors@^3.2.1:
    -  version "3.2.4"
    -  resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf"
    -  integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==
    -
     ansi-colors@^4.1.1:
       version "4.1.1"
       resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
    @@ -1293,12 +1695,17 @@ ansi-regex@^5.0.0:
       resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
       integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
     
    +ansi-regex@^5.0.1:
    +  version "5.0.1"
    +  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
    +  integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
    +
     ansi-styles@^2.2.1:
       version "2.2.1"
       resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
       integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
     
    -ansi-styles@^3.2.0, ansi-styles@^3.2.1:
    +ansi-styles@^3.2.1:
       version "3.2.1"
       resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
       integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
    @@ -1313,6 +1720,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
         "@types/color-name" "^1.1.1"
         color-convert "^2.0.1"
     
    +ansi-styles@^5.0.0:
    +  version "5.2.0"
    +  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
    +  integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
    +
     ansi-wrap@0.1.0, ansi-wrap@^0.1.0:
       version "0.1.0"
       resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
    @@ -1326,7 +1738,7 @@ anymatch@^2.0.0:
         micromatch "^3.1.4"
         normalize-path "^2.1.1"
     
    -anymatch@^3.0.3, anymatch@~3.1.1:
    +anymatch@^3.0.3:
       version "3.1.1"
       resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
       integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
    @@ -1341,11 +1753,6 @@ append-buffer@^1.0.2:
       dependencies:
         buffer-equal "^1.0.0"
     
    -aproba@^1.1.1:
    -  version "1.2.0"
    -  resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
    -  integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
    -
     archy@^1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40"
    @@ -1358,13 +1765,17 @@ argparse@^1.0.7:
       dependencies:
         sprintf-js "~1.0.2"
     
    -aria-query@^4.2.2:
    -  version "4.2.2"
    -  resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b"
    -  integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==
    +argparse@^2.0.1:
    +  version "2.0.1"
    +  resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
    +  integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
    +
    +aria-query@^5.1.3:
    +  version "5.3.0"
    +  resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e"
    +  integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==
       dependencies:
    -    "@babel/runtime" "^7.10.2"
    -    "@babel/runtime-corejs3" "^7.10.2"
    +    dequal "^2.0.3"
     
     arr-diff@^1.0.1:
       version "1.1.0"
    @@ -1408,6 +1819,14 @@ arr-union@^3.1.0:
       resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
       integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
     
    +array-buffer-byte-length@^1.0.0:
    +  version "1.0.0"
    +  resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead"
    +  integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==
    +  dependencies:
    +    call-bind "^1.0.2"
    +    is-array-buffer "^3.0.1"
    +
     array-differ@^1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
    @@ -1423,14 +1842,16 @@ array-find-index@^1.0.1:
       resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
       integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
     
    -array-includes@^3.1.1:
    -  version "3.1.1"
    -  resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348"
    -  integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==
    +array-includes@^3.1.6:
    +  version "3.1.7"
    +  resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda"
    +  integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==
       dependencies:
    -    define-properties "^1.1.3"
    -    es-abstract "^1.17.0"
    -    is-string "^1.0.5"
    +    call-bind "^1.0.2"
    +    define-properties "^1.2.0"
    +    es-abstract "^1.22.1"
    +    get-intrinsic "^1.2.1"
    +    is-string "^1.0.7"
     
     array-initial@^1.0.0:
       version "1.1.0"
    @@ -1493,6 +1914,50 @@ array-unique@^0.3.2:
       resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
       integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
     
    +array.prototype.flat@^1.3.1:
    +  version "1.3.2"
    +  resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18"
    +  integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==
    +  dependencies:
    +    call-bind "^1.0.2"
    +    define-properties "^1.2.0"
    +    es-abstract "^1.22.1"
    +    es-shim-unscopables "^1.0.0"
    +
    +array.prototype.flatmap@^1.3.1:
    +  version "1.3.2"
    +  resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527"
    +  integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==
    +  dependencies:
    +    call-bind "^1.0.2"
    +    define-properties "^1.2.0"
    +    es-abstract "^1.22.1"
    +    es-shim-unscopables "^1.0.0"
    +
    +array.prototype.tosorted@^1.1.1:
    +  version "1.1.2"
    +  resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd"
    +  integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==
    +  dependencies:
    +    call-bind "^1.0.2"
    +    define-properties "^1.2.0"
    +    es-abstract "^1.22.1"
    +    es-shim-unscopables "^1.0.0"
    +    get-intrinsic "^1.2.1"
    +
    +arraybuffer.prototype.slice@^1.0.1:
    +  version "1.0.2"
    +  resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12"
    +  integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==
    +  dependencies:
    +    array-buffer-byte-length "^1.0.0"
    +    call-bind "^1.0.2"
    +    define-properties "^1.2.0"
    +    es-abstract "^1.22.1"
    +    get-intrinsic "^1.2.1"
    +    is-array-buffer "^3.0.2"
    +    is-shared-array-buffer "^1.0.2"
    +
     arrify@^1.0.1:
       version "1.0.1"
       resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
    @@ -1503,35 +1968,6 @@ asap@~2.0.3:
       resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
       integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
     
    -asn1.js@^4.0.0:
    -  version "4.10.1"
    -  resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
    -  integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==
    -  dependencies:
    -    bn.js "^4.0.0"
    -    inherits "^2.0.1"
    -    minimalistic-assert "^1.0.0"
    -
    -asn1@~0.2.3:
    -  version "0.2.4"
    -  resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
    -  integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
    -  dependencies:
    -    safer-buffer "~2.1.0"
    -
    -assert-plus@1.0.0, assert-plus@^1.0.0:
    -  version "1.0.0"
    -  resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
    -  integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
    -
    -assert@^1.1.1:
    -  version "1.5.0"
    -  resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
    -  integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==
    -  dependencies:
    -    object-assign "^4.1.1"
    -    util "0.10.3"
    -
     assign-symbols@^1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
    @@ -1542,11 +1978,6 @@ ast-types-flow@^0.0.7:
       resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
       integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0=
     
    -astral-regex@^1.0.0:
    -  version "1.0.0"
    -  resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
    -  integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
    -
     async-done@^1.2.0, async-done@^1.2.2:
       version "1.3.2"
       resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2"
    @@ -1574,37 +2005,41 @@ async@^1.2.1:
       resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
       integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
     
    +asynciterator.prototype@^1.0.0:
    +  version "1.0.0"
    +  resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62"
    +  integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==
    +  dependencies:
    +    has-symbols "^1.0.3"
    +
     asynckit@^0.4.0:
       version "0.4.0"
       resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
    -  integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
    +  integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
     
     atob@^2.1.2:
       version "2.1.2"
       resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
       integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
     
    -aws-sign2@~0.7.0:
    -  version "0.7.0"
    -  resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
    -  integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
    -
    -aws4@^1.8.0:
    -  version "1.10.0"
    -  resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2"
    -  integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==
    +available-typed-arrays@^1.0.5:
    +  version "1.0.5"
    +  resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
    +  integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
     
    -axe-core@^3.5.4:
    -  version "3.5.5"
    -  resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.5.tgz#84315073b53fa3c0c51676c588d59da09a192227"
    -  integrity sha512-5P0QZ6J5xGikH780pghEdbEKijCTrruK9KxtPZCFWUpef0f6GipO+xEZ5GKCb020mmqgbiNO6TcA55CriL784Q==
    +axe-core@^4.6.2:
    +  version "4.8.1"
    +  resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.8.1.tgz#6948854183ee7e7eae336b9877c5bafa027998ea"
    +  integrity sha512-9l850jDDPnKq48nbad8SiEelCv4OrUWrKab/cPj0GScVg6cb6NbCCt/Ulk26QEq5jP9NnGr04Bit1BHyV6r5CQ==
     
    -axobject-query@^2.1.2:
    -  version "2.2.0"
    -  resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be"
    -  integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==
    +axobject-query@^3.1.1:
    +  version "3.2.1"
    +  resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a"
    +  integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==
    +  dependencies:
    +    dequal "^2.0.3"
     
    -babel-eslint@^10.0.3:
    +babel-eslint@^10.1.0:
       version "10.1.0"
       resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232"
       integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==
    @@ -1616,18 +2051,17 @@ babel-eslint@^10.0.3:
         eslint-visitor-keys "^1.0.0"
         resolve "^1.12.0"
     
    -babel-jest@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.1.0.tgz#b20751185fc7569a0f135730584044d1cb934328"
    -  integrity sha512-Nkqgtfe7j6PxLO6TnCQQlkMm8wdTdnIF8xrdpooHCuD5hXRzVEPbPneTJKknH5Dsv3L8ip9unHDAp48YQ54Dkg==
    -  dependencies:
    -    "@jest/transform" "^26.1.0"
    -    "@jest/types" "^26.1.0"
    -    "@types/babel__core" "^7.1.7"
    -    babel-plugin-istanbul "^6.0.0"
    -    babel-preset-jest "^26.1.0"
    +babel-jest@^29.6.4:
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.6.4.tgz#98dbc45d1c93319c82a8ab4a478b670655dd2585"
    +  integrity sha512-meLj23UlSLddj6PC+YTOFRgDAtjnZom8w/ACsrx0gtPtv5cJZk0A5Unk5bV4wixD7XaPCN1fQvpww8czkZURmw==
    +  dependencies:
    +    "@jest/transform" "^29.6.4"
    +    "@types/babel__core" "^7.1.14"
    +    babel-plugin-istanbul "^6.1.1"
    +    babel-preset-jest "^29.6.3"
         chalk "^4.0.0"
    -    graceful-fs "^4.2.4"
    +    graceful-fs "^4.2.9"
         slash "^3.0.0"
     
     babel-plugin-dynamic-import-node@^2.3.3:
    @@ -1637,25 +2071,25 @@ babel-plugin-dynamic-import-node@^2.3.3:
       dependencies:
         object.assign "^4.1.0"
     
    -babel-plugin-istanbul@^6.0.0:
    -  version "6.0.0"
    -  resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765"
    -  integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==
    +babel-plugin-istanbul@^6.1.1:
    +  version "6.1.1"
    +  resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73"
    +  integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==
       dependencies:
         "@babel/helper-plugin-utils" "^7.0.0"
         "@istanbuljs/load-nyc-config" "^1.0.0"
         "@istanbuljs/schema" "^0.1.2"
    -    istanbul-lib-instrument "^4.0.0"
    +    istanbul-lib-instrument "^5.0.4"
         test-exclude "^6.0.0"
     
    -babel-plugin-jest-hoist@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.1.0.tgz#c6a774da08247a28285620a64dfadbd05dd5233a"
    -  integrity sha512-qhqLVkkSlqmC83bdMhM8WW4Z9tB+JkjqAqlbbohS9sJLT5Ha2vfzuKqg5yenXrAjOPG2YC0WiXdH3a9PvB+YYw==
    +babel-plugin-jest-hoist@^29.6.3:
    +  version "29.6.3"
    +  resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626"
    +  integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==
       dependencies:
         "@babel/template" "^7.3.3"
         "@babel/types" "^7.3.3"
    -    "@types/babel__core" "^7.0.0"
    +    "@types/babel__core" "^7.1.14"
         "@types/babel__traverse" "^7.0.6"
     
     babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0:
    @@ -1663,10 +2097,10 @@ babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0:
       resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf"
       integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==
     
    -babel-preset-current-node-syntax@^0.1.2:
    -  version "0.1.3"
    -  resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.3.tgz#b4b547acddbf963cba555ba9f9cbbb70bfd044da"
    -  integrity sha512-uyexu1sVwcdFnyq9o8UQYsXwXflIh8LvrF5+cKrYam93ned1CStffB3+BEcsxGSgagoA3GEyjDqO4a/58hyPYQ==
    +babel-preset-current-node-syntax@^1.0.0:
    +  version "1.0.1"
    +  resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b"
    +  integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==
       dependencies:
         "@babel/plugin-syntax-async-generators" "^7.8.4"
         "@babel/plugin-syntax-bigint" "^7.8.3"
    @@ -1679,6 +2113,7 @@ babel-preset-current-node-syntax@^0.1.2:
         "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
         "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
         "@babel/plugin-syntax-optional-chaining" "^7.8.3"
    +    "@babel/plugin-syntax-top-level-await" "^7.8.3"
     
     babel-preset-fbjs@^3.2.0, babel-preset-fbjs@^3.3.0:
       version "3.3.0"
    @@ -1713,13 +2148,13 @@ babel-preset-fbjs@^3.2.0, babel-preset-fbjs@^3.3.0:
         "@babel/plugin-transform-template-literals" "^7.0.0"
         babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0"
     
    -babel-preset-jest@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.1.0.tgz#612f714e5b457394acfd863793c564cbcdb7d1c1"
    -  integrity sha512-na9qCqFksknlEj5iSdw1ehMVR06LCCTkZLGKeEtxDDdhg8xpUF09m29Kvh1pRbZ07h7AQ5ttLYUwpXL4tO6w7w==
    +babel-preset-jest@^29.6.3:
    +  version "29.6.3"
    +  resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c"
    +  integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==
       dependencies:
    -    babel-plugin-jest-hoist "^26.1.0"
    -    babel-preset-current-node-syntax "^0.1.2"
    +    babel-plugin-jest-hoist "^29.6.3"
    +    babel-preset-current-node-syntax "^1.0.0"
     
     bach@^1.0.0:
       version "1.2.0"
    @@ -1746,11 +2181,6 @@ balanced-match@^1.0.0:
       resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
       integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
     
    -base64-js@^1.0.2:
    -  version "1.3.1"
    -  resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
    -  integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==
    -
     base@^0.11.1:
       version "0.11.2"
       resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
    @@ -1764,33 +2194,16 @@ base@^0.11.1:
         mixin-deep "^1.2.0"
         pascalcase "^0.1.1"
     
    -bcrypt-pbkdf@^1.0.0:
    -  version "1.0.2"
    -  resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
    -  integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
    -  dependencies:
    -    tweetnacl "^0.14.3"
    -
     beeper@^1.0.0:
       version "1.1.1"
       resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809"
       integrity sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=
     
    -big.js@^5.2.2:
    -  version "5.2.2"
    -  resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
    -  integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
    -
     binary-extensions@^1.0.0:
       version "1.13.1"
       resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
       integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
     
    -binary-extensions@^2.0.0:
    -  version "2.1.0"
    -  resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9"
    -  integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==
    -
     bindings@^1.5.0:
       version "1.5.0"
       resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
    @@ -1798,21 +2211,6 @@ bindings@^1.5.0:
       dependencies:
         file-uri-to-path "1.0.0"
     
    -bluebird@^3.5.5:
    -  version "3.7.2"
    -  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
    -  integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
    -
    -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0:
    -  version "4.11.9"
    -  resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828"
    -  integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==
    -
    -bn.js@^5.1.1:
    -  version "5.1.2"
    -  resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0"
    -  integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==
    -
     boxen@^3.0.0:
       version "3.2.0"
       resolved "https://registry.yarnpkg.com/boxen/-/boxen-3.2.0.tgz#fbdff0de93636ab4450886b6ff45b92d098f45eb"
    @@ -1851,83 +2249,22 @@ braces@^2.3.1, braces@^2.3.2:
         split-string "^3.0.2"
         to-regex "^3.0.1"
     
    -braces@^3.0.1, braces@~3.0.2:
    +braces@^3.0.1, braces@^3.0.2:
       version "3.0.2"
       resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
       integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
       dependencies:
         fill-range "^7.0.1"
     
    -brorand@^1.0.1:
    -  version "1.1.0"
    -  resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
    -  integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
    -
    -browser-process-hrtime@^1.0.0:
    -  version "1.0.0"
    -  resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
    -  integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
    -
    -browserify-aes@^1.0.0, browserify-aes@^1.0.4:
    -  version "1.2.0"
    -  resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
    -  integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
    +browserslist@^4.14.5, browserslist@^4.21.9:
    +  version "4.21.10"
    +  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0"
    +  integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==
       dependencies:
    -    buffer-xor "^1.0.3"
    -    cipher-base "^1.0.0"
    -    create-hash "^1.1.0"
    -    evp_bytestokey "^1.0.3"
    -    inherits "^2.0.1"
    -    safe-buffer "^5.0.1"
    -
    -browserify-cipher@^1.0.0:
    -  version "1.0.1"
    -  resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
    -  integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
    -  dependencies:
    -    browserify-aes "^1.0.4"
    -    browserify-des "^1.0.0"
    -    evp_bytestokey "^1.0.0"
    -
    -browserify-des@^1.0.0:
    -  version "1.0.2"
    -  resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
    -  integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
    -  dependencies:
    -    cipher-base "^1.0.1"
    -    des.js "^1.0.0"
    -    inherits "^2.0.1"
    -    safe-buffer "^5.1.2"
    -
    -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1:
    -  version "4.0.1"
    -  resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
    -  integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=
    -  dependencies:
    -    bn.js "^4.1.0"
    -    randombytes "^2.0.1"
    -
    -browserify-sign@^4.0.0:
    -  version "4.2.0"
    -  resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11"
    -  integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==
    -  dependencies:
    -    bn.js "^5.1.1"
    -    browserify-rsa "^4.0.1"
    -    create-hash "^1.2.0"
    -    create-hmac "^1.1.7"
    -    elliptic "^6.5.2"
    -    inherits "^2.0.4"
    -    parse-asn1 "^5.1.5"
    -    readable-stream "^3.6.0"
    -    safe-buffer "^5.2.0"
    -
    -browserify-zlib@^0.2.0:
    -  version "0.2.0"
    -  resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
    -  integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
    -  dependencies:
    -    pako "~1.0.5"
    +    caniuse-lite "^1.0.30001517"
    +    electron-to-chromium "^1.4.477"
    +    node-releases "^2.0.13"
    +    update-browserslist-db "^1.0.11"
     
     bs-logger@0.x:
       version "0.2.6"
    @@ -1961,25 +2298,11 @@ buffer-equal@^1.0.0:
       resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe"
       integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74=
     
    -buffer-from@1.x, buffer-from@^1.0.0:
    +buffer-from@^1.0.0:
       version "1.1.1"
       resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
       integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
     
    -buffer-xor@^1.0.3:
    -  version "1.0.3"
    -  resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
    -  integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
    -
    -buffer@^4.3.0:
    -  version "4.9.2"
    -  resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
    -  integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==
    -  dependencies:
    -    base64-js "^1.0.2"
    -    ieee754 "^1.1.4"
    -    isarray "^1.0.0"
    -
     bufferstreams@^3.0.0:
       version "3.0.0"
       resolved "https://registry.yarnpkg.com/bufferstreams/-/bufferstreams-3.0.0.tgz#d2cb186cffeb527668341891e523c19539bc4a14"
    @@ -1987,32 +2310,6 @@ bufferstreams@^3.0.0:
       dependencies:
         readable-stream "^3.4.0"
     
    -builtin-status-codes@^3.0.0:
    -  version "3.0.0"
    -  resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
    -  integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
    -
    -cacache@^12.0.2:
    -  version "12.0.4"
    -  resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c"
    -  integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==
    -  dependencies:
    -    bluebird "^3.5.5"
    -    chownr "^1.1.1"
    -    figgy-pudding "^3.5.1"
    -    glob "^7.1.4"
    -    graceful-fs "^4.1.15"
    -    infer-owner "^1.0.3"
    -    lru-cache "^5.1.1"
    -    mississippi "^3.0.0"
    -    mkdirp "^0.5.1"
    -    move-concurrently "^1.0.1"
    -    promise-inflight "^1.0.1"
    -    rimraf "^2.6.3"
    -    ssri "^6.0.1"
    -    unique-filename "^1.1.1"
    -    y18n "^4.0.0"
    -
     cacache@^15.0.4:
       version "15.0.4"
       resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.4.tgz#b2c23cf4ac4f5ead004fb15a0efb0a20340741f1"
    @@ -2064,6 +2361,14 @@ cacheable-request@^6.0.0:
         normalize-url "^4.1.0"
         responselike "^1.0.2"
     
    +call-bind@^1.0.0, call-bind@^1.0.2:
    +  version "1.0.2"
    +  resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
    +  integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
    +  dependencies:
    +    function-bind "^1.1.1"
    +    get-intrinsic "^1.0.2"
    +
     callsites@^3.0.0:
       version "3.1.0"
       resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
    @@ -2093,22 +2398,15 @@ camelcase@^5.0.0, camelcase@^5.3.1:
       resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
       integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
     
    -camelcase@^6.0.0:
    -  version "6.0.0"
    -  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e"
    -  integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w==
    -
    -capture-exit@^2.0.0:
    -  version "2.0.0"
    -  resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4"
    -  integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==
    -  dependencies:
    -    rsvp "^4.8.4"
    +camelcase@^6.2.0:
    +  version "6.3.0"
    +  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
    +  integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
     
    -caseless@~0.12.0:
    -  version "0.12.0"
    -  resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
    -  integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
    +caniuse-lite@^1.0.30001517:
    +  version "1.0.30001528"
    +  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001528.tgz#479972fc705b996f1114336c0032418a215fd0aa"
    +  integrity sha512-0Db4yyjR9QMNlsxh+kKWzQtkyflkG/snYheSzkjmvdEtEXB1+jt7A2HmSEiO6XIJPIbo92lHNGNySvE5pZcs5Q==
     
     ccount@^1.0.3:
       version "1.0.5"
    @@ -2132,16 +2430,8 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.2:
       integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
       dependencies:
         ansi-styles "^3.2.1"
    -    escape-string-regexp "^1.0.5"
    -    supports-color "^5.3.0"
    -
    -chalk@^3.0.0:
    -  version "3.0.0"
    -  resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
    -  integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
    -  dependencies:
    -    ansi-styles "^4.1.0"
    -    supports-color "^7.1.0"
    +    escape-string-regexp "^1.0.5"
    +    supports-color "^5.3.0"
     
     chalk@^4.0.0:
       version "4.1.0"
    @@ -2171,7 +2461,7 @@ character-reference-invalid@^1.0.0:
       resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560"
       integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==
     
    -chokidar@^2.0.0, chokidar@^2.1.8:
    +chokidar@^2.0.0:
       version "2.1.8"
       resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
       integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
    @@ -2190,50 +2480,30 @@ chokidar@^2.0.0, chokidar@^2.1.8:
       optionalDependencies:
         fsevents "^1.2.7"
     
    -chokidar@^3.4.0:
    -  version "3.4.0"
    -  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8"
    -  integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==
    -  dependencies:
    -    anymatch "~3.1.1"
    -    braces "~3.0.2"
    -    glob-parent "~5.1.0"
    -    is-binary-path "~2.1.0"
    -    is-glob "~4.0.1"
    -    normalize-path "~3.0.0"
    -    readdirp "~3.4.0"
    -  optionalDependencies:
    -    fsevents "~2.1.2"
    -
    -chownr@^1.1.1:
    -  version "1.1.4"
    -  resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
    -  integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
    -
     chownr@^2.0.0:
       version "2.0.0"
       resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
       integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
     
     chrome-trace-event@^1.0.2:
    -  version "1.0.2"
    -  resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4"
    -  integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==
    -  dependencies:
    -    tslib "^1.9.0"
    +  version "1.0.3"
    +  resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
    +  integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
     
     ci-info@^2.0.0:
       version "2.0.0"
       resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
       integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
     
    -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
    -  version "1.0.4"
    -  resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
    -  integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
    -  dependencies:
    -    inherits "^2.0.1"
    -    safe-buffer "^5.0.1"
    +ci-info@^3.2.0:
    +  version "3.8.0"
    +  resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91"
    +  integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==
    +
    +cjs-module-lexer@^1.0.0:
    +  version "1.2.3"
    +  resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107"
    +  integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==
     
     class-utils@^0.3.5:
       version "0.3.6"
    @@ -2280,6 +2550,15 @@ cliui@^6.0.0:
         strip-ansi "^6.0.0"
         wrap-ansi "^6.2.0"
     
    +cliui@^8.0.1:
    +  version "8.0.1"
    +  resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
    +  integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
    +  dependencies:
    +    string-width "^4.2.0"
    +    strip-ansi "^6.0.1"
    +    wrap-ansi "^7.0.0"
    +
     clone-buffer@^1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58"
    @@ -2387,7 +2666,7 @@ color-support@^1.1.3:
       resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
       integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
     
    -combined-stream@^1.0.6, combined-stream@~1.0.6:
    +combined-stream@^1.0.8:
       version "1.0.8"
       resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
       integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
    @@ -2419,7 +2698,7 @@ concat-map@0.0.1:
       resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
       integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
     
    -concat-stream@^1.4.6, concat-stream@^1.5.0, concat-stream@^1.6.0:
    +concat-stream@^1.4.6, concat-stream@^1.6.0:
       version "1.6.2"
       resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
       integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
    @@ -2458,39 +2737,22 @@ configstore@^4.0.0:
         write-file-atomic "^2.0.0"
         xdg-basedir "^3.0.0"
     
    -console-browserify@^1.1.0:
    -  version "1.2.0"
    -  resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
    -  integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==
    -
    -constants-browserify@^1.0.0:
    -  version "1.0.0"
    -  resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
    -  integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
    -
     convert-source-map@^0.3.3:
       version "0.3.5"
       resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190"
       integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA=
     
    -convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
    +convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
       version "1.7.0"
       resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
       integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
       dependencies:
         safe-buffer "~5.1.1"
     
    -copy-concurrently@^1.0.0:
    -  version "1.0.5"
    -  resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
    -  integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
    -  dependencies:
    -    aproba "^1.1.1"
    -    fs-write-stream-atomic "^1.0.8"
    -    iferr "^0.1.5"
    -    mkdirp "^0.5.1"
    -    rimraf "^2.5.4"
    -    run-queue "^1.0.0"
    +convert-source-map@^2.0.0:
    +  version "2.0.0"
    +  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
    +  integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
     
     copy-descriptor@^0.1.0:
       version "0.1.1"
    @@ -2505,52 +2767,16 @@ copy-props@^2.0.1:
         each-props "^1.3.0"
         is-plain-object "^2.0.1"
     
    -core-js-pure@^3.0.0:
    -  version "3.6.5"
    -  resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813"
    -  integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==
    -
     core-js@^2.4.1:
       version "2.6.11"
       resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c"
       integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==
     
    -core-util-is@1.0.2, core-util-is@~1.0.0:
    +core-util-is@~1.0.0:
       version "1.0.2"
       resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
       integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
     
    -create-ecdh@^4.0.0:
    -  version "4.0.3"
    -  resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
    -  integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==
    -  dependencies:
    -    bn.js "^4.1.0"
    -    elliptic "^6.0.0"
    -
    -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
    -  version "1.2.0"
    -  resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
    -  integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
    -  dependencies:
    -    cipher-base "^1.0.1"
    -    inherits "^2.0.1"
    -    md5.js "^1.3.4"
    -    ripemd160 "^2.0.1"
    -    sha.js "^2.4.0"
    -
    -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
    -  version "1.1.7"
    -  resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
    -  integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
    -  dependencies:
    -    cipher-base "^1.0.3"
    -    create-hash "^1.1.0"
    -    inherits "^2.0.1"
    -    ripemd160 "^2.0.0"
    -    safe-buffer "^5.0.1"
    -    sha.js "^2.4.8"
    -
     cross-env@^7.0.2:
       version "7.0.2"
       resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.2.tgz#bd5ed31339a93a3418ac4f3ca9ca3403082ae5f9"
    @@ -2567,18 +2793,7 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0:
         shebang-command "^1.2.0"
         which "^1.2.9"
     
    -cross-spawn@^6.0.0:
    -  version "6.0.5"
    -  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
    -  integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
    -  dependencies:
    -    nice-try "^1.0.4"
    -    path-key "^2.0.1"
    -    semver "^5.5.0"
    -    shebang-command "^1.2.0"
    -    which "^1.2.9"
    -
    -cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2:
    +cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
       version "7.0.3"
       resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
       integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
    @@ -2587,23 +2802,6 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2:
         shebang-command "^2.0.0"
         which "^2.0.1"
     
    -crypto-browserify@^3.11.0:
    -  version "3.12.0"
    -  resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
    -  integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
    -  dependencies:
    -    browserify-cipher "^1.0.0"
    -    browserify-sign "^4.0.0"
    -    create-ecdh "^4.0.0"
    -    create-hash "^1.1.0"
    -    create-hmac "^1.1.0"
    -    diffie-hellman "^5.0.0"
    -    inherits "^2.0.1"
    -    pbkdf2 "^3.0.3"
    -    public-encrypt "^4.0.0"
    -    randombytes "^2.0.0"
    -    randomfill "^1.0.3"
    -
     crypto-random-string@^1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
    @@ -2619,17 +2817,17 @@ css@^2.0.0:
         source-map-resolve "^0.5.2"
         urix "^0.1.0"
     
    -cssom@^0.4.4:
    -  version "0.4.4"
    -  resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10"
    -  integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==
    +cssom@^0.5.0:
    +  version "0.5.0"
    +  resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36"
    +  integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==
     
     cssom@~0.3.6:
       version "0.3.8"
       resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
       integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
     
    -cssstyle@^2.2.0:
    +cssstyle@^2.3.0:
       version "2.3.0"
       resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852"
       integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==
    @@ -2653,11 +2851,6 @@ cuss@^1.15.0:
       resolved "https://registry.yarnpkg.com/cuss/-/cuss-1.20.0.tgz#439a47210ba93f50c2a293f92e2fcf215406c864"
       integrity sha512-ca6Z5roeWhHgXeDLn0g3SLrG68Cb9922MvHme7Q/dz4XfwuxcBLalW4RqFUyZOiczzAqKc2XVtR2Kof+sIfinQ==
     
    -cyclist@^1.0.1:
    -  version "1.0.1"
    -  resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
    -  integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=
    -
     d@1, d@^1.0.1:
       version "1.0.1"
       resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
    @@ -2666,32 +2859,32 @@ d@1, d@^1.0.1:
         es5-ext "^0.10.50"
         type "^1.0.1"
     
    -damerau-levenshtein@^1.0.6:
    -  version "1.0.6"
    -  resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791"
    -  integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==
    -
    -dashdash@^1.12.0:
    -  version "1.14.1"
    -  resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
    -  integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
    -  dependencies:
    -    assert-plus "^1.0.0"
    +damerau-levenshtein@^1.0.8:
    +  version "1.0.8"
    +  resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7"
    +  integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==
     
    -data-urls@^2.0.0:
    -  version "2.0.0"
    -  resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b"
    -  integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==
    +data-urls@^3.0.2:
    +  version "3.0.2"
    +  resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143"
    +  integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==
       dependencies:
    -    abab "^2.0.3"
    -    whatwg-mimetype "^2.3.0"
    -    whatwg-url "^8.0.0"
    +    abab "^2.0.6"
    +    whatwg-mimetype "^3.0.0"
    +    whatwg-url "^11.0.0"
     
     dateformat@^2.0.0:
       version "2.2.0"
       resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062"
       integrity sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=
     
    +debug@4, debug@^4.3.2, debug@^4.3.4:
    +  version "4.3.4"
    +  resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
    +  integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
    +  dependencies:
    +    ms "2.1.2"
    +
     debug@^2.2.0, debug@^2.3.3:
       version "2.6.9"
       resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
    @@ -2699,7 +2892,7 @@ debug@^2.2.0, debug@^2.3.3:
       dependencies:
         ms "2.0.0"
     
    -debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
    +debug@^4.0.0, debug@^4.1.0, debug@^4.1.1:
       version "4.1.1"
       resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
       integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
    @@ -2719,10 +2912,10 @@ decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.2.0:
       resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
       integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
     
    -decimal.js@^10.2.0:
    -  version "10.2.0"
    -  resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231"
    -  integrity sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw==
    +decimal.js@^10.4.2:
    +  version "10.4.3"
    +  resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23"
    +  integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==
     
     decode-uri-component@^0.2.0:
       version "0.2.0"
    @@ -2736,12 +2929,17 @@ decompress-response@^3.3.0:
       dependencies:
         mimic-response "^1.0.0"
     
    +dedent@^1.0.0:
    +  version "1.5.1"
    +  resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff"
    +  integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==
    +
     deep-extend@^0.6.0:
       version "0.6.0"
       resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
       integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
     
    -deep-is@^0.1.3, deep-is@~0.1.3:
    +deep-is@^0.1.3:
       version "0.1.3"
       resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
       integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
    @@ -2775,6 +2973,14 @@ define-properties@^1.1.2, define-properties@^1.1.3:
       dependencies:
         object-keys "^1.0.12"
     
    +define-properties@^1.1.4, define-properties@^1.2.0:
    +  version "1.2.0"
    +  resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5"
    +  integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==
    +  dependencies:
    +    has-property-descriptors "^1.0.0"
    +    object-keys "^1.1.1"
    +
     define-property@^0.2.5:
       version "0.2.5"
       resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
    @@ -2814,7 +3020,12 @@ del@^5.1.0:
     delayed-stream@~1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
    -  integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
    +  integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
    +
    +dequal@^2.0.3:
    +  version "2.0.3"
    +  resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
    +  integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
     
     derequire@^2.0.0:
       version "2.1.1"
    @@ -2827,14 +3038,6 @@ derequire@^2.0.0:
         through2 "^2.0.0"
         yargs "^15.3.1"
     
    -des.js@^1.0.0:
    -  version "1.0.1"
    -  resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843"
    -  integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==
    -  dependencies:
    -    inherits "^2.0.1"
    -    minimalistic-assert "^1.0.0"
    -
     detect-file@^1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
    @@ -2845,24 +3048,10 @@ detect-newline@^3.0.0:
       resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
       integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==
     
    -diff-sequences@^25.2.6:
    -  version "25.2.6"
    -  resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd"
    -  integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==
    -
    -diff-sequences@^26.0.0:
    -  version "26.0.0"
    -  resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.0.0.tgz#0760059a5c287637b842bd7085311db7060e88a6"
    -  integrity sha512-JC/eHYEC3aSS0vZGjuoc4vHA0yAQTzhQQldXMeMF+JlxLGJlCO38Gma82NV9gk1jGFz8mDzUMeaKXvjRRdJ2dg==
    -
    -diffie-hellman@^5.0.0:
    -  version "5.0.3"
    -  resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
    -  integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
    -  dependencies:
    -    bn.js "^4.1.0"
    -    miller-rabin "^4.0.0"
    -    randombytes "^2.0.0"
    +diff-sequences@^29.6.3:
    +  version "29.6.3"
    +  resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921"
    +  integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==
     
     dir-glob@^3.0.1:
       version "3.0.1"
    @@ -2885,17 +3074,12 @@ doctrine@^3.0.0:
       dependencies:
         esutils "^2.0.2"
     
    -domain-browser@^1.1.1:
    -  version "1.2.0"
    -  resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
    -  integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
    -
    -domexception@^2.0.1:
    -  version "2.0.1"
    -  resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304"
    -  integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==
    +domexception@^4.0.0:
    +  version "4.0.0"
    +  resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673"
    +  integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==
       dependencies:
    -    webidl-conversions "^5.0.0"
    +    webidl-conversions "^7.0.0"
     
     dot-prop@^4.1.0:
       version "4.2.0"
    @@ -2921,7 +3105,7 @@ duplexer@~0.1.1:
       resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
       integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
     
    -duplexify@^3.4.2, duplexify@^3.6.0:
    +duplexify@^3.6.0:
       version "3.7.1"
       resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
       integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
    @@ -2949,26 +3133,15 @@ each-props@^1.3.0:
         is-plain-object "^2.0.1"
         object.defaults "^1.1.0"
     
    -ecc-jsbn@~0.1.1:
    -  version "0.1.2"
    -  resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
    -  integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
    -  dependencies:
    -    jsbn "~0.1.0"
    -    safer-buffer "^2.1.0"
    +electron-to-chromium@^1.4.477:
    +  version "1.4.510"
    +  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.510.tgz#446c50d7533c1e71a84b00a3b37ab06dd601d890"
    +  integrity sha512-xPfLIPFcN/WLXBpQ/K4UgE98oUBO5Tia6BD4rkSR0wE7ep/PwBVlgvPJQrIBpmJGVAmUzwPKuDbVt9XV6+uC2g==
     
    -elliptic@^6.0.0, elliptic@^6.5.2:
    -  version "6.5.3"
    -  resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6"
    -  integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==
    -  dependencies:
    -    bn.js "^4.4.0"
    -    brorand "^1.0.1"
    -    hash.js "^1.0.0"
    -    hmac-drbg "^1.0.0"
    -    inherits "^2.0.1"
    -    minimalistic-assert "^1.0.0"
    -    minimalistic-crypto-utils "^1.0.0"
    +emittery@^0.13.1:
    +  version "0.13.1"
    +  resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad"
    +  integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==
     
     emoji-regex@^7.0.1:
       version "7.0.3"
    @@ -2980,15 +3153,10 @@ emoji-regex@^8.0.0:
       resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
       integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
     
    -emoji-regex@^9.0.0:
    -  version "9.0.0"
    -  resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.0.0.tgz#48a2309cc8a1d2e9d23bc6a67c39b63032e76ea4"
    -  integrity sha512-6p1NII1Vm62wni/VR/cUMauVQoxmLVb9csqQlvLz+hO2gk8U2UYDfXHQSUYIBKmZwAKz867IDqG7B+u0mj+M6w==
    -
    -emojis-list@^3.0.0:
    -  version "3.0.0"
    -  resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
    -  integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
    +emoji-regex@^9.2.2:
    +  version "9.2.2"
    +  resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
    +  integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
     
     encoding@^0.1.11:
       version "0.1.12"
    @@ -3004,23 +3172,20 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1:
       dependencies:
         once "^1.4.0"
     
    -enhanced-resolve@^4.1.0:
    -  version "4.2.0"
    -  resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.2.0.tgz#5d43bda4a0fd447cb0ebbe71bef8deff8805ad0d"
    -  integrity sha512-S7eiFb/erugyd1rLb6mQ3Vuq+EXHv5cpCkNqqIkYkBgN2QdFnyCZzFBleqwGEx4lgNGYij81BWnCrFNK7vxvjQ==
    +enhanced-resolve@^5.15.0:
    +  version "5.15.0"
    +  resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35"
    +  integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==
       dependencies:
    -    graceful-fs "^4.1.2"
    -    memory-fs "^0.5.0"
    -    tapable "^1.0.0"
    +    graceful-fs "^4.2.4"
    +    tapable "^2.2.0"
     
    -enquirer@^2.3.5:
    -  version "2.3.5"
    -  resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.5.tgz#3ab2b838df0a9d8ab9e7dff235b0e8712ef92381"
    -  integrity sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA==
    -  dependencies:
    -    ansi-colors "^3.2.1"
    +entities@^4.4.0:
    +  version "4.5.0"
    +  resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
    +  integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
     
    -errno@^0.1.3, errno@~0.1.7:
    +errno@^0.1.3:
       version "0.1.7"
       resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
       integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==
    @@ -3034,22 +3199,91 @@ error-ex@^1.2.0, error-ex@^1.3.1:
       dependencies:
         is-arrayish "^0.2.1"
     
    -es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5:
    -  version "1.17.6"
    -  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a"
    -  integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==
    +es-abstract@^1.22.1:
    +  version "1.22.1"
    +  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc"
    +  integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==
       dependencies:
    +    array-buffer-byte-length "^1.0.0"
    +    arraybuffer.prototype.slice "^1.0.1"
    +    available-typed-arrays "^1.0.5"
    +    call-bind "^1.0.2"
    +    es-set-tostringtag "^2.0.1"
         es-to-primitive "^1.2.1"
    -    function-bind "^1.1.1"
    +    function.prototype.name "^1.1.5"
    +    get-intrinsic "^1.2.1"
    +    get-symbol-description "^1.0.0"
    +    globalthis "^1.0.3"
    +    gopd "^1.0.1"
         has "^1.0.3"
    -    has-symbols "^1.0.1"
    -    is-callable "^1.2.0"
    -    is-regex "^1.1.0"
    -    object-inspect "^1.7.0"
    +    has-property-descriptors "^1.0.0"
    +    has-proto "^1.0.1"
    +    has-symbols "^1.0.3"
    +    internal-slot "^1.0.5"
    +    is-array-buffer "^3.0.2"
    +    is-callable "^1.2.7"
    +    is-negative-zero "^2.0.2"
    +    is-regex "^1.1.4"
    +    is-shared-array-buffer "^1.0.2"
    +    is-string "^1.0.7"
    +    is-typed-array "^1.1.10"
    +    is-weakref "^1.0.2"
    +    object-inspect "^1.12.3"
         object-keys "^1.1.1"
    -    object.assign "^4.1.0"
    -    string.prototype.trimend "^1.0.1"
    -    string.prototype.trimstart "^1.0.1"
    +    object.assign "^4.1.4"
    +    regexp.prototype.flags "^1.5.0"
    +    safe-array-concat "^1.0.0"
    +    safe-regex-test "^1.0.0"
    +    string.prototype.trim "^1.2.7"
    +    string.prototype.trimend "^1.0.6"
    +    string.prototype.trimstart "^1.0.6"
    +    typed-array-buffer "^1.0.0"
    +    typed-array-byte-length "^1.0.0"
    +    typed-array-byte-offset "^1.0.0"
    +    typed-array-length "^1.0.4"
    +    unbox-primitive "^1.0.2"
    +    which-typed-array "^1.1.10"
    +
    +es-iterator-helpers@^1.0.12:
    +  version "1.0.14"
    +  resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.14.tgz#19cd7903697d97e21198f3293b55e8985791c365"
    +  integrity sha512-JgtVnwiuoRuzLvqelrvN3Xu7H9bu2ap/kQ2CrM62iidP8SKuD99rWU3CJy++s7IVL2qb/AjXPGR/E7i9ngd/Cw==
    +  dependencies:
    +    asynciterator.prototype "^1.0.0"
    +    call-bind "^1.0.2"
    +    define-properties "^1.2.0"
    +    es-abstract "^1.22.1"
    +    es-set-tostringtag "^2.0.1"
    +    function-bind "^1.1.1"
    +    get-intrinsic "^1.2.1"
    +    globalthis "^1.0.3"
    +    has-property-descriptors "^1.0.0"
    +    has-proto "^1.0.1"
    +    has-symbols "^1.0.3"
    +    internal-slot "^1.0.5"
    +    iterator.prototype "^1.1.0"
    +    safe-array-concat "^1.0.0"
    +
    +es-module-lexer@^1.2.1:
    +  version "1.3.0"
    +  resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.0.tgz#6be9c9e0b4543a60cd166ff6f8b4e9dae0b0c16f"
    +  integrity sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==
    +
    +es-set-tostringtag@^2.0.1:
    +  version "2.0.1"
    +  resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8"
    +  integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==
    +  dependencies:
    +    get-intrinsic "^1.1.3"
    +    has "^1.0.3"
    +    has-tostringtag "^1.0.0"
    +
    +es-shim-unscopables@^1.0.0:
    +  version "1.0.0"
    +  resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241"
    +  integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==
    +  dependencies:
    +    has "^1.0.3"
     
     es-to-primitive@^1.2.1:
       version "1.2.1"
    @@ -3132,6 +3366,11 @@ es6-weak-map@^2.0.1:
         es6-iterator "^2.0.3"
         es6-symbol "^3.1.1"
     
    +escalade@^3.1.1:
    +  version "3.1.1"
    +  resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
    +  integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
    +
     escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
       version "1.0.5"
       resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
    @@ -3142,15 +3381,19 @@ escape-string-regexp@^2.0.0:
       resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
       integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
     
    -escodegen@^1.14.1:
    -  version "1.14.3"
    -  resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503"
    -  integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==
    +escape-string-regexp@^4.0.0:
    +  version "4.0.0"
    +  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
    +  integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
    +
    +escodegen@^2.0.0:
    +  version "2.1.0"
    +  resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17"
    +  integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==
       dependencies:
         esprima "^4.0.1"
    -    estraverse "^4.2.0"
    +    estraverse "^5.2.0"
         esutils "^2.0.2"
    -    optionator "^0.8.1"
       optionalDependencies:
         source-map "~0.6.1"
     
    @@ -3164,159 +3407,159 @@ escope@^3.6.0:
         esrecurse "^4.1.0"
         estraverse "^4.1.1"
     
    -eslint-config-fbjs@^3.1.1:
    -  version "3.1.1"
    -  resolved "https://registry.yarnpkg.com/eslint-config-fbjs/-/eslint-config-fbjs-3.1.1.tgz#f5b4c1df888693672116f000527a8df25d61b888"
    -  integrity sha512-Vpyqz+ZcyLyiUGUdUfiQmZnxiQ4Nj/KDRKed/Y5qSm+xHbQJ5zcZUQwLUMWHQicpDHewsdXwlpUAblvy1DtGvg==
    +eslint-config-fbjs@^4.0.0:
    +  version "4.0.0"
    +  resolved "https://registry.yarnpkg.com/eslint-config-fbjs/-/eslint-config-fbjs-4.0.0.tgz#9b2e70c57bca58ba4dfafe3a566bdb077146455f"
    +  integrity sha512-GKXvVfpgVgXdxzmYeaqiBJFL58o+T9d5J8EMXYy3AsyD3AtEdsHzwd+4bEqSI2A0RbeF27CAj9+o2v9VhWSLIg==
     
    -eslint-config-prettier@^6.9.0:
    -  version "6.11.0"
    -  resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1"
    -  integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==
    -  dependencies:
    -    get-stdin "^6.0.0"
    +eslint-config-prettier@^9.0.0:
    +  version "9.0.0"
    +  resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz#eb25485946dd0c66cd216a46232dc05451518d1f"
    +  integrity sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==
     
    -eslint-plugin-babel@^5.3.0:
    -  version "5.3.0"
    -  resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-5.3.0.tgz#2e7f251ccc249326da760c1a4c948a91c32d0023"
    -  integrity sha512-HPuNzSPE75O+SnxHIafbW5QB45r2w78fxqwK3HmjqIUoPfPzVrq6rD+CINU3yzoDSzEhUkX07VUphbF73Lth/w==
    +eslint-plugin-babel@^5.3.1:
    +  version "5.3.1"
    +  resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-5.3.1.tgz#75a2413ffbf17e7be57458301c60291f2cfbf560"
    +  integrity sha512-VsQEr6NH3dj664+EyxJwO4FCYm/00JhYb3Sk3ft8o+fpKuIfQ9TaW6uVUfvwMXHcf/lsnRIoyFPsLMyiWCSL/g==
       dependencies:
         eslint-rule-composer "^0.3.0"
     
    -eslint-plugin-jsx-a11y@^6.2.3:
    -  version "6.3.1"
    -  resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.3.1.tgz#99ef7e97f567cc6a5b8dd5ab95a94a67058a2660"
    -  integrity sha512-i1S+P+c3HOlBJzMFORRbC58tHa65Kbo8b52/TwCwSKLohwvpfT5rm2GjGWzOHTEuq4xxf2aRlHHTtmExDQOP+g==
    +eslint-plugin-jsx-a11y@^6.7.1:
    +  version "6.7.1"
    +  resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976"
    +  integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==
       dependencies:
    -    "@babel/runtime" "^7.10.2"
    -    aria-query "^4.2.2"
    -    array-includes "^3.1.1"
    +    "@babel/runtime" "^7.20.7"
    +    aria-query "^5.1.3"
    +    array-includes "^3.1.6"
    +    array.prototype.flatmap "^1.3.1"
         ast-types-flow "^0.0.7"
    -    axe-core "^3.5.4"
    -    axobject-query "^2.1.2"
    -    damerau-levenshtein "^1.0.6"
    -    emoji-regex "^9.0.0"
    +    axe-core "^4.6.2"
    +    axobject-query "^3.1.1"
    +    damerau-levenshtein "^1.0.8"
    +    emoji-regex "^9.2.2"
         has "^1.0.3"
    -    jsx-ast-utils "^2.4.1"
    -    language-tags "^1.0.5"
    -
    -eslint-plugin-prettier@^3.1.2:
    -  version "3.1.4"
    -  resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2"
    -  integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==
    -  dependencies:
    -    prettier-linter-helpers "^1.0.0"
    +    jsx-ast-utils "^3.3.3"
    +    language-tags "=1.0.5"
    +    minimatch "^3.1.2"
    +    object.entries "^1.1.6"
    +    object.fromentries "^2.0.6"
    +    semver "^6.3.0"
     
    -eslint-plugin-react@^7.17.0:
    -  version "7.20.0"
    -  resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.20.0.tgz#f98712f0a5e57dfd3e5542ef0604b8739cd47be3"
    -  integrity sha512-rqe1abd0vxMjmbPngo4NaYxTcR3Y4Hrmc/jg4T+sYz63yqlmJRknpEQfmWY+eDWPuMmix6iUIK+mv0zExjeLgA==
    +eslint-plugin-react@^7.33.2:
    +  version "7.33.2"
    +  resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608"
    +  integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==
       dependencies:
    -    array-includes "^3.1.1"
    +    array-includes "^3.1.6"
    +    array.prototype.flatmap "^1.3.1"
    +    array.prototype.tosorted "^1.1.1"
         doctrine "^2.1.0"
    -    has "^1.0.3"
    -    jsx-ast-utils "^2.2.3"
    -    object.entries "^1.1.1"
    -    object.fromentries "^2.0.2"
    -    object.values "^1.1.1"
    -    prop-types "^15.7.2"
    -    resolve "^1.15.1"
    -    string.prototype.matchall "^4.0.2"
    -    xregexp "^4.3.0"
    +    es-iterator-helpers "^1.0.12"
    +    estraverse "^5.3.0"
    +    jsx-ast-utils "^2.4.1 || ^3.0.0"
    +    minimatch "^3.1.2"
    +    object.entries "^1.1.6"
    +    object.fromentries "^2.0.6"
    +    object.hasown "^1.1.2"
    +    object.values "^1.1.6"
    +    prop-types "^15.8.1"
    +    resolve "^2.0.0-next.4"
    +    semver "^6.3.1"
    +    string.prototype.matchall "^4.0.8"
     
     eslint-rule-composer@^0.3.0:
       version "0.3.0"
       resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9"
       integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==
     
    -eslint-scope@^4.0.3:
    -  version "4.0.3"
    -  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
    -  integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
    -  dependencies:
    -    esrecurse "^4.1.0"
    -    estraverse "^4.1.1"
    -
    -eslint-scope@^5.0.0, eslint-scope@^5.1.0:
    -  version "5.1.0"
    -  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5"
    -  integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==
    +eslint-scope@5.1.1:
    +  version "5.1.1"
    +  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
    +  integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
       dependencies:
    -    esrecurse "^4.1.0"
    +    esrecurse "^4.3.0"
         estraverse "^4.1.1"
     
    -eslint-utils@^2.0.0:
    -  version "2.1.0"
    -  resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
    -  integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
    +eslint-scope@^7.2.2:
    +  version "7.2.2"
    +  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f"
    +  integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
       dependencies:
    -    eslint-visitor-keys "^1.1.0"
    +    esrecurse "^4.3.0"
    +    estraverse "^5.2.0"
     
    -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.2.0:
    +eslint-visitor-keys@^1.0.0:
       version "1.3.0"
       resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
       integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
     
    -eslint@^7.0.0:
    -  version "7.3.1"
    -  resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.3.1.tgz#76392bd7e44468d046149ba128d1566c59acbe19"
    -  integrity sha512-cQC/xj9bhWUcyi/RuMbRtC3I0eW8MH0jhRELSvpKYkWep3C6YZ2OkvcvJVUeO6gcunABmzptbXBuDoXsjHmfTA==
    -  dependencies:
    -    "@babel/code-frame" "^7.0.0"
    -    ajv "^6.10.0"
    +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
    +  version "3.4.3"
    +  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
    +  integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
    +
    +eslint@^8.49.0:
    +  version "8.49.0"
    +  resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.49.0.tgz#09d80a89bdb4edee2efcf6964623af1054bf6d42"
    +  integrity sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==
    +  dependencies:
    +    "@eslint-community/eslint-utils" "^4.2.0"
    +    "@eslint-community/regexpp" "^4.6.1"
    +    "@eslint/eslintrc" "^2.1.2"
    +    "@eslint/js" "8.49.0"
    +    "@humanwhocodes/config-array" "^0.11.11"
    +    "@humanwhocodes/module-importer" "^1.0.1"
    +    "@nodelib/fs.walk" "^1.2.8"
    +    ajv "^6.12.4"
         chalk "^4.0.0"
         cross-spawn "^7.0.2"
    -    debug "^4.0.1"
    +    debug "^4.3.2"
         doctrine "^3.0.0"
    -    enquirer "^2.3.5"
    -    eslint-scope "^5.1.0"
    -    eslint-utils "^2.0.0"
    -    eslint-visitor-keys "^1.2.0"
    -    espree "^7.1.0"
    -    esquery "^1.2.0"
    +    escape-string-regexp "^4.0.0"
    +    eslint-scope "^7.2.2"
    +    eslint-visitor-keys "^3.4.3"
    +    espree "^9.6.1"
    +    esquery "^1.4.2"
         esutils "^2.0.2"
    -    file-entry-cache "^5.0.1"
    -    functional-red-black-tree "^1.0.1"
    -    glob-parent "^5.0.0"
    -    globals "^12.1.0"
    -    ignore "^4.0.6"
    -    import-fresh "^3.0.0"
    +    fast-deep-equal "^3.1.3"
    +    file-entry-cache "^6.0.1"
    +    find-up "^5.0.0"
    +    glob-parent "^6.0.2"
    +    globals "^13.19.0"
    +    graphemer "^1.4.0"
    +    ignore "^5.2.0"
         imurmurhash "^0.1.4"
         is-glob "^4.0.0"
    -    js-yaml "^3.13.1"
    +    is-path-inside "^3.0.3"
    +    js-yaml "^4.1.0"
         json-stable-stringify-without-jsonify "^1.0.1"
         levn "^0.4.1"
    -    lodash "^4.17.14"
    -    minimatch "^3.0.4"
    +    lodash.merge "^4.6.2"
    +    minimatch "^3.1.2"
         natural-compare "^1.4.0"
    -    optionator "^0.9.1"
    -    progress "^2.0.0"
    -    regexpp "^3.1.0"
    -    semver "^7.2.1"
    -    strip-ansi "^6.0.0"
    -    strip-json-comments "^3.1.0"
    -    table "^5.2.3"
    +    optionator "^0.9.3"
    +    strip-ansi "^6.0.1"
         text-table "^0.2.0"
    -    v8-compile-cache "^2.0.3"
     
    -espree@^7.1.0:
    -  version "7.1.0"
    -  resolved "https://registry.yarnpkg.com/espree/-/espree-7.1.0.tgz#a9c7f18a752056735bf1ba14cb1b70adc3a5ce1c"
    -  integrity sha512-dcorZSyfmm4WTuTnE5Y7MEN1DyoPYy1ZR783QW1FJoenn7RailyWFsq/UL6ZAAA7uXurN9FIpYyUs3OfiIW+Qw==
    +espree@^9.6.0, espree@^9.6.1:
    +  version "9.6.1"
    +  resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
    +  integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
       dependencies:
    -    acorn "^7.2.0"
    -    acorn-jsx "^5.2.0"
    -    eslint-visitor-keys "^1.2.0"
    +    acorn "^8.9.0"
    +    acorn-jsx "^5.3.2"
    +    eslint-visitor-keys "^3.4.1"
     
     esprima@^4.0.0, esprima@^4.0.1:
       version "4.0.1"
       resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
       integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
     
    -esquery@^1.2.0:
    -  version "1.3.1"
    -  resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57"
    -  integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==
    +esquery@^1.4.2:
    +  version "1.5.0"
    +  resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b"
    +  integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
       dependencies:
         estraverse "^5.1.0"
     
    @@ -3327,7 +3570,14 @@ esrecurse@^4.1.0:
       dependencies:
         estraverse "^4.1.0"
     
    -estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
    +esrecurse@^4.3.0:
    +  version "4.3.0"
    +  resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
    +  integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
    +  dependencies:
    +    estraverse "^5.2.0"
    +
    +estraverse@^4.1.0, estraverse@^4.1.1:
       version "4.3.0"
       resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
       integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
    @@ -3337,6 +3587,11 @@ estraverse@^5.1.0:
       resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642"
       integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==
     
    +estraverse@^5.2.0, estraverse@^5.3.0:
    +  version "5.3.0"
    +  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
    +  integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
    +
     esutils@^2.0.2:
       version "2.0.3"
       resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
    @@ -3363,23 +3618,10 @@ event-stream@~3.1.5:
         stream-combiner "~0.0.4"
         through "~2.3.1"
     
    -events@^3.0.0:
    -  version "3.1.0"
    -  resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59"
    -  integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==
    -
    -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
    -  version "1.0.3"
    -  resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
    -  integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
    -  dependencies:
    -    md5.js "^1.3.4"
    -    safe-buffer "^5.1.1"
    -
    -exec-sh@^0.3.2:
    -  version "0.3.4"
    -  resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5"
    -  integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==
    +events@^3.2.0:
    +  version "3.3.0"
    +  resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
    +  integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
     
     execa@^0.7.0:
       version "0.7.0"
    @@ -3394,32 +3636,19 @@ execa@^0.7.0:
         signal-exit "^3.0.0"
         strip-eof "^1.0.0"
     
    -execa@^1.0.0:
    -  version "1.0.0"
    -  resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
    -  integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
    -  dependencies:
    -    cross-spawn "^6.0.0"
    -    get-stream "^4.0.0"
    -    is-stream "^1.1.0"
    -    npm-run-path "^2.0.0"
    -    p-finally "^1.0.0"
    -    signal-exit "^3.0.0"
    -    strip-eof "^1.0.0"
    -
    -execa@^4.0.0:
    -  version "4.0.2"
    -  resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.2.tgz#ad87fb7b2d9d564f70d2b62d511bee41d5cbb240"
    -  integrity sha512-QI2zLa6CjGWdiQsmSkZoGtDx2N+cQIGb3yNolGTdjSQzydzLgYYf8LRuagp7S7fPimjcrzUDSUFd/MgzELMi4Q==
    +execa@^5.0.0:
    +  version "5.1.1"
    +  resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
    +  integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
       dependencies:
    -    cross-spawn "^7.0.0"
    -    get-stream "^5.0.0"
    -    human-signals "^1.1.1"
    +    cross-spawn "^7.0.3"
    +    get-stream "^6.0.0"
    +    human-signals "^2.1.0"
         is-stream "^2.0.0"
         merge-stream "^2.0.0"
    -    npm-run-path "^4.0.0"
    -    onetime "^5.1.0"
    -    signal-exit "^3.0.2"
    +    npm-run-path "^4.0.1"
    +    onetime "^5.1.2"
    +    signal-exit "^3.0.3"
         strip-final-newline "^2.0.0"
     
     exit@^0.1.2:
    @@ -3447,17 +3676,16 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2:
       dependencies:
         homedir-polyfill "^1.0.1"
     
    -expect@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/expect/-/expect-26.1.0.tgz#8c62e31d0f8d5a8ebb186ee81473d15dd2fbf7c8"
    -  integrity sha512-QbH4LZXDsno9AACrN9eM0zfnby9G+OsdNgZUohjg/P0mLy1O+/bzTAJGT6VSIjVCe8yKM6SzEl/ckEOFBT7Vnw==
    +expect@^29.0.0, expect@^29.6.4:
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/expect/-/expect-29.6.4.tgz#a6e6f66d4613717859b2fe3da98a739437b6f4b8"
    +  integrity sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA==
       dependencies:
    -    "@jest/types" "^26.1.0"
    -    ansi-styles "^4.0.0"
    -    jest-get-type "^26.0.0"
    -    jest-matcher-utils "^26.1.0"
    -    jest-message-util "^26.1.0"
    -    jest-regex-util "^26.0.0"
    +    "@jest/expect-utils" "^29.6.4"
    +    jest-get-type "^29.6.3"
    +    jest-matcher-utils "^29.6.4"
    +    jest-message-util "^29.6.3"
    +    jest-util "^29.6.3"
     
     ext@^1.1.2:
       version "1.4.0"
    @@ -3488,7 +3716,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2:
         assign-symbols "^1.0.0"
         is-extendable "^1.0.1"
     
    -extend@^3.0.0, extend@~3.0.2:
    +extend@^3.0.0:
       version "3.0.2"
       resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
       integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
    @@ -3507,16 +3735,6 @@ extglob@^2.0.4:
         snapdragon "^0.8.1"
         to-regex "^3.0.1"
     
    -extsprintf@1.3.0:
    -  version "1.3.0"
    -  resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
    -  integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
    -
    -extsprintf@^1.2.0:
    -  version "1.4.0"
    -  resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
    -  integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
    -
     fancy-log@^1.1.0, fancy-log@^1.3.2, fancy-log@^1.3.3:
       version "1.3.3"
       resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7"
    @@ -3532,11 +3750,6 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
       resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
       integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
     
    -fast-diff@^1.1.2:
    -  version "1.2.0"
    -  resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
    -  integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
    -
     fast-glob@^3.0.3:
       version "3.2.4"
       resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3"
    @@ -3549,12 +3762,23 @@ fast-glob@^3.0.3:
         micromatch "^4.0.2"
         picomatch "^2.2.1"
     
    -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0:
    +fast-glob@^3.2.9:
    +  version "3.3.1"
    +  resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4"
    +  integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==
    +  dependencies:
    +    "@nodelib/fs.stat" "^2.0.2"
    +    "@nodelib/fs.walk" "^1.2.3"
    +    glob-parent "^5.1.2"
    +    merge2 "^1.3.0"
    +    micromatch "^4.0.4"
    +
    +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0:
       version "2.1.0"
       resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
       integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
     
    -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
    +fast-levenshtein@^2.0.6:
       version "2.0.6"
       resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
       integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
    @@ -3615,11 +3839,6 @@ fbjs@^1.0.0:
         setimmediate "^1.0.5"
         ua-parser-js "^0.7.18"
     
    -figgy-pudding@^3.5.1:
    -  version "3.5.2"
    -  resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
    -  integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
    -
     figures@^3.0.0:
       version "3.2.0"
       resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
    @@ -3627,12 +3846,12 @@ figures@^3.0.0:
       dependencies:
         escape-string-regexp "^1.0.5"
     
    -file-entry-cache@^5.0.1:
    -  version "5.0.1"
    -  resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
    -  integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
    +file-entry-cache@^6.0.1:
    +  version "6.0.1"
    +  resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
    +  integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
       dependencies:
    -    flat-cache "^2.0.1"
    +    flat-cache "^3.0.4"
     
     file-uri-to-path@1.0.0:
       version "1.0.0"
    @@ -3656,15 +3875,6 @@ fill-range@^7.0.1:
       dependencies:
         to-regex-range "^5.0.1"
     
    -find-cache-dir@^2.1.0:
    -  version "2.1.0"
    -  resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
    -  integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
    -  dependencies:
    -    commondir "^1.0.1"
    -    make-dir "^2.0.0"
    -    pkg-dir "^3.0.0"
    -
     find-cache-dir@^3.3.1:
       version "3.3.1"
       resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880"
    @@ -3689,13 +3899,6 @@ find-up@^2.0.0:
       dependencies:
         locate-path "^2.0.0"
     
    -find-up@^3.0.0:
    -  version "3.0.0"
    -  resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
    -  integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
    -  dependencies:
    -    locate-path "^3.0.0"
    -
     find-up@^4.0.0, find-up@^4.1.0:
       version "4.1.0"
       resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
    @@ -3704,6 +3907,14 @@ find-up@^4.0.0, find-up@^4.1.0:
         locate-path "^5.0.0"
         path-exists "^4.0.0"
     
    +find-up@^5.0.0:
    +  version "5.0.0"
    +  resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
    +  integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
    +  dependencies:
    +    locate-path "^6.0.0"
    +    path-exists "^4.0.0"
    +
     findup-sync@^2.0.0:
       version "2.0.0"
       resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc"
    @@ -3740,21 +3951,21 @@ flagged-respawn@^1.0.0:
       resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41"
       integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==
     
    -flat-cache@^2.0.1:
    -  version "2.0.1"
    -  resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
    -  integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
    +flat-cache@^3.0.4:
    +  version "3.1.0"
    +  resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.0.tgz#0e54ab4a1a60fe87e2946b6b00657f1c99e1af3f"
    +  integrity sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==
       dependencies:
    -    flatted "^2.0.0"
    -    rimraf "2.6.3"
    -    write "1.0.3"
    +    flatted "^3.2.7"
    +    keyv "^4.5.3"
    +    rimraf "^3.0.2"
     
    -flatted@^2.0.0:
    -  version "2.0.2"
    -  resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138"
    -  integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==
    +flatted@^3.2.7:
    +  version "3.2.7"
    +  resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787"
    +  integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
     
    -flush-write-stream@^1.0.0, flush-write-stream@^1.0.2:
    +flush-write-stream@^1.0.2:
       version "1.1.1"
       resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
       integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
    @@ -3767,6 +3978,13 @@ fn-name@^2.0.1:
       resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7"
       integrity sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=
     
    +for-each@^0.3.3:
    +  version "0.3.3"
    +  resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
    +  integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
    +  dependencies:
    +    is-callable "^1.1.3"
    +
     for-in@^1.0.1, for-in@^1.0.2:
       version "1.0.2"
       resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
    @@ -3779,23 +3997,18 @@ for-own@^1.0.0:
       dependencies:
         for-in "^1.0.1"
     
    -forever-agent@~0.6.1:
    -  version "0.6.1"
    -  resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
    -  integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
    -
     fork-stream@^0.0.4:
       version "0.0.4"
       resolved "https://registry.yarnpkg.com/fork-stream/-/fork-stream-0.0.4.tgz#db849fce77f6708a5f8f386ae533a0907b54ae70"
       integrity sha1-24Sfznf2cIpfjzhq5TOgkHtUrnA=
     
    -form-data@~2.3.2:
    -  version "2.3.3"
    -  resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
    -  integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
    +form-data@^4.0.0:
    +  version "4.0.0"
    +  resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
    +  integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
       dependencies:
         asynckit "^0.4.0"
    -    combined-stream "^1.0.6"
    +    combined-stream "^1.0.8"
         mime-types "^2.1.12"
     
     format@^0.2.0:
    @@ -3810,14 +4023,6 @@ fragment-cache@^0.2.1:
       dependencies:
         map-cache "^0.2.2"
     
    -from2@^2.1.0:
    -  version "2.3.0"
    -  resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
    -  integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
    -  dependencies:
    -    inherits "^2.0.1"
    -    readable-stream "^2.0.0"
    -
     from@~0:
       version "0.1.7"
       resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
    @@ -3838,16 +4043,6 @@ fs-mkdirp-stream@^1.0.0:
         graceful-fs "^4.1.11"
         through2 "^2.0.3"
     
    -fs-write-stream-atomic@^1.0.8:
    -  version "1.0.10"
    -  resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
    -  integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=
    -  dependencies:
    -    graceful-fs "^4.1.2"
    -    iferr "^0.1.5"
    -    imurmurhash "^0.1.4"
    -    readable-stream "1 || 2"
    -
     fs.realpath@^1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
    @@ -3861,32 +4056,47 @@ fsevents@^1.2.7:
         bindings "^1.5.0"
         nan "^2.12.1"
     
    -fsevents@^2.1.2, fsevents@~2.1.2:
    -  version "2.1.3"
    -  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e"
    -  integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==
    +fsevents@^2.3.2:
    +  version "2.3.3"
    +  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
    +  integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
     
     function-bind@^1.1.1:
       version "1.1.1"
       resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
       integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
     
    -functional-red-black-tree@^1.0.1:
    -  version "1.0.1"
    -  resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
    -  integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
    +function.prototype.name@^1.1.5:
    +  version "1.1.6"
    +  resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd"
    +  integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==
    +  dependencies:
    +    call-bind "^1.0.2"
    +    define-properties "^1.2.0"
    +    es-abstract "^1.22.1"
    +    functions-have-names "^1.2.3"
    +
    +functions-have-names@^1.2.3:
    +  version "1.2.3"
    +  resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
    +  integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
     
     gensync@^1.0.0-beta.1:
       version "1.0.0-beta.1"
       resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269"
       integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==
     
    +gensync@^1.0.0-beta.2:
    +  version "1.0.0-beta.2"
    +  resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
    +  integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
    +
     get-caller-file@^1.0.1:
       version "1.0.3"
       resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
       integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
     
    -get-caller-file@^2.0.1:
    +get-caller-file@^2.0.1, get-caller-file@^2.0.5:
       version "2.0.5"
       resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
       integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
    @@ -3899,47 +4109,58 @@ get-imports@^1.0.0:
         array-uniq "^1.0.1"
         import-regex "^1.1.0"
     
    +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1:
    +  version "1.2.1"
    +  resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82"
    +  integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==
    +  dependencies:
    +    function-bind "^1.1.1"
    +    has "^1.0.3"
    +    has-proto "^1.0.1"
    +    has-symbols "^1.0.3"
    +
     get-package-type@^0.1.0:
       version "0.1.0"
       resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
       integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
     
    -get-stdin@^6.0.0:
    -  version "6.0.0"
    -  resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
    -  integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
    -
     get-stream@^3.0.0:
       version "3.0.0"
       resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
       integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
     
    -get-stream@^4.0.0, get-stream@^4.1.0:
    +get-stream@^4.1.0:
       version "4.1.0"
       resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
       integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
       dependencies:
         pump "^3.0.0"
     
    -get-stream@^5.0.0, get-stream@^5.1.0:
    +get-stream@^5.1.0:
       version "5.1.0"
       resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9"
       integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==
       dependencies:
         pump "^3.0.0"
     
    +get-stream@^6.0.0:
    +  version "6.0.1"
    +  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
    +  integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
    +
    +get-symbol-description@^1.0.0:
    +  version "1.0.0"
    +  resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6"
    +  integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==
    +  dependencies:
    +    call-bind "^1.0.2"
    +    get-intrinsic "^1.1.1"
    +
     get-value@^2.0.3, get-value@^2.0.6:
       version "2.0.6"
       resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
       integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
     
    -getpass@^0.1.1:
    -  version "0.1.7"
    -  resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
    -  integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
    -  dependencies:
    -    assert-plus "^1.0.0"
    -
     git-diff-tree@^1.0.0:
       version "1.1.0"
       resolved "https://registry.yarnpkg.com/git-diff-tree/-/git-diff-tree-1.1.0.tgz#05cd0b2fa9ebf1630ba643fe89d8ccbb2635f7bb"
    @@ -3966,13 +4187,27 @@ glob-parent@^3.1.0:
         is-glob "^3.1.0"
         path-dirname "^1.0.0"
     
    -glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0:
    +glob-parent@^5.1.0:
       version "5.1.1"
       resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
       integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
       dependencies:
         is-glob "^4.0.1"
     
    +glob-parent@^5.1.2:
    +  version "5.1.2"
    +  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
    +  integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
    +  dependencies:
    +    is-glob "^4.0.1"
    +
    +glob-parent@^6.0.2:
    +  version "6.0.2"
    +  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
    +  integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
    +  dependencies:
    +    is-glob "^4.0.3"
    +
     glob-stream@^6.1.0:
       version "6.1.0"
       resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4"
    @@ -3989,6 +4224,11 @@ glob-stream@^6.1.0:
         to-absolute-glob "^2.0.0"
         unique-stream "^2.0.2"
     
    +glob-to-regexp@^0.4.1:
    +  version "0.4.1"
    +  resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
    +  integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
    +
     glob-watcher@^5.0.3:
       version "5.0.3"
       resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.3.tgz#88a8abf1c4d131eb93928994bc4a593c2e5dd626"
    @@ -4012,7 +4252,7 @@ glob@^5.0.3:
         once "^1.3.0"
         path-is-absolute "^1.0.0"
     
    -glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
    +glob@^7.0.3, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4:
       version "7.1.6"
       resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
       integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
    @@ -4056,12 +4296,19 @@ globals@^11.1.0:
       resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
       integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
     
    -globals@^12.1.0:
    -  version "12.4.0"
    -  resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8"
    -  integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==
    +globals@^13.19.0:
    +  version "13.21.0"
    +  resolved "https://registry.yarnpkg.com/globals/-/globals-13.21.0.tgz#163aae12f34ef502f5153cfbdd3600f36c63c571"
    +  integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==
       dependencies:
    -    type-fest "^0.8.1"
    +    type-fest "^0.20.2"
    +
    +globalthis@^1.0.3:
    +  version "1.0.3"
    +  resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf"
    +  integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==
    +  dependencies:
    +    define-properties "^1.1.3"
     
     globby@^10.0.1:
       version "10.0.2"
    @@ -4077,6 +4324,18 @@ globby@^10.0.1:
         merge2 "^1.2.3"
         slash "^3.0.0"
     
    +globby@^11.1.0:
    +  version "11.1.0"
    +  resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
    +  integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
    +  dependencies:
    +    array-union "^2.1.0"
    +    dir-glob "^3.0.1"
    +    fast-glob "^3.2.9"
    +    ignore "^5.2.0"
    +    merge2 "^1.4.1"
    +    slash "^3.0.0"
    +
     globby@^2.0.0:
       version "2.1.0"
       resolved "https://registry.yarnpkg.com/globby/-/globby-2.1.0.tgz#9e9192bcd33f4ab6a4f894e5e7ea8b713213c482"
    @@ -4094,6 +4353,13 @@ glogg@^1.0.0:
       dependencies:
         sparkles "^1.0.0"
     
    +gopd@^1.0.1:
    +  version "1.0.1"
    +  resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
    +  integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
    +  dependencies:
    +    get-intrinsic "^1.1.3"
    +
     got@^9.6.0:
       version "9.6.0"
       resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
    @@ -4111,15 +4377,20 @@ got@^9.6.0:
         to-readable-stream "^1.0.0"
         url-parse-lax "^3.0.0"
     
    -graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.2, graceful-fs@^4.2.4:
    +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.2:
       version "4.2.4"
       resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
       integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
     
    -growly@^1.3.0:
    -  version "1.3.0"
    -  resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
    -  integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
    +graceful-fs@^4.2.4, graceful-fs@^4.2.9:
    +  version "4.2.11"
    +  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
    +  integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
    +
    +graphemer@^1.4.0:
    +  version "1.4.0"
    +  resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
    +  integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
     
     gulp-babel@^8.0.0:
       version "8.0.0"
    @@ -4281,19 +4552,6 @@ gulplog@^1.0.0:
       dependencies:
         glogg "^1.0.0"
     
    -har-schema@^2.0.0:
    -  version "2.0.0"
    -  resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
    -  integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
    -
    -har-validator@~5.1.3:
    -  version "5.1.3"
    -  resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
    -  integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
    -  dependencies:
    -    ajv "^6.5.5"
    -    har-schema "^2.0.0"
    -
     has-ansi@^2.0.0:
       version "2.0.0"
       resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
    @@ -4301,6 +4559,11 @@ has-ansi@^2.0.0:
       dependencies:
         ansi-regex "^2.0.0"
     
    +has-bigints@^1.0.1, has-bigints@^1.0.2:
    +  version "1.0.2"
    +  resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa"
    +  integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
    +
     has-flag@^3.0.0:
       version "3.0.0"
       resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
    @@ -4318,11 +4581,35 @@ has-gulplog@^0.1.0:
       dependencies:
         sparkles "^1.0.0"
     
    +has-property-descriptors@^1.0.0:
    +  version "1.0.0"
    +  resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861"
    +  integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==
    +  dependencies:
    +    get-intrinsic "^1.1.1"
    +
    +has-proto@^1.0.1:
    +  version "1.0.1"
    +  resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0"
    +  integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==
    +
     has-symbols@^1.0.0, has-symbols@^1.0.1:
       version "1.0.1"
       resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
       integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
     
    +has-symbols@^1.0.2, has-symbols@^1.0.3:
    +  version "1.0.3"
    +  resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
    +  integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
    +
    +has-tostringtag@^1.0.0:
    +  version "1.0.0"
    +  resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
    +  integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
    +  dependencies:
    +    has-symbols "^1.0.2"
    +
     has-value@^0.3.1:
       version "0.3.1"
       resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
    @@ -4366,23 +4653,6 @@ has@^1.0.3:
       dependencies:
         function-bind "^1.1.1"
     
    -hash-base@^3.0.0:
    -  version "3.1.0"
    -  resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33"
    -  integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==
    -  dependencies:
    -    inherits "^2.0.4"
    -    readable-stream "^3.6.0"
    -    safe-buffer "^5.2.0"
    -
    -hash.js@^1.0.0, hash.js@^1.0.3:
    -  version "1.1.7"
    -  resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
    -  integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
    -  dependencies:
    -    inherits "^2.0.3"
    -    minimalistic-assert "^1.0.1"
    -
     hast-util-embedded@^1.0.0:
       version "1.0.5"
       resolved "https://registry.yarnpkg.com/hast-util-embedded/-/hast-util-embedded-1.0.5.tgz#daeb84ffad67cdaf5117cf64cc0e13de5f0889b8"
    @@ -4468,15 +4738,6 @@ hastscript@^5.0.0:
         property-information "^5.0.0"
         space-separated-tokens "^1.0.0"
     
    -hmac-drbg@^1.0.0:
    -  version "1.0.1"
    -  resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
    -  integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
    -  dependencies:
    -    hash.js "^1.0.3"
    -    minimalistic-assert "^1.0.0"
    -    minimalistic-crypto-utils "^1.0.1"
    -
     homedir-polyfill@^1.0.1:
       version "1.0.3"
       resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
    @@ -4489,12 +4750,12 @@ hosted-git-info@^2.1.4:
       resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
       integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
     
    -html-encoding-sniffer@^2.0.1:
    -  version "2.0.1"
    -  resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3"
    -  integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==
    +html-encoding-sniffer@^3.0.0:
    +  version "3.0.0"
    +  resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9"
    +  integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==
       dependencies:
    -    whatwg-encoding "^1.0.5"
    +    whatwg-encoding "^2.0.0"
     
     html-escaper@^2.0.0:
       version "2.0.2"
    @@ -4506,56 +4767,56 @@ http-cache-semantics@^4.0.0:
       resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
       integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==
     
    -http-signature@~1.2.0:
    -  version "1.2.0"
    -  resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
    -  integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
    +http-proxy-agent@^5.0.0:
    +  version "5.0.0"
    +  resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43"
    +  integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==
       dependencies:
    -    assert-plus "^1.0.0"
    -    jsprim "^1.2.2"
    -    sshpk "^1.7.0"
    +    "@tootallnate/once" "2"
    +    agent-base "6"
    +    debug "4"
     
    -https-browserify@^1.0.0:
    -  version "1.0.0"
    -  resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
    -  integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
    +https-proxy-agent@^5.0.1:
    +  version "5.0.1"
    +  resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
    +  integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
    +  dependencies:
    +    agent-base "6"
    +    debug "4"
     
    -human-signals@^1.1.1:
    -  version "1.1.1"
    -  resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
    -  integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
    +human-signals@^2.1.0:
    +  version "2.1.0"
    +  resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
    +  integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
    +
    +iconv-lite@0.6.3:
    +  version "0.6.3"
    +  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
    +  integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
    +  dependencies:
    +    safer-buffer ">= 2.1.2 < 3.0.0"
     
    -iconv-lite@0.4.24, iconv-lite@~0.4.13:
    +iconv-lite@~0.4.13:
       version "0.4.24"
       resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
       integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
       dependencies:
         safer-buffer ">= 2.1.2 < 3"
     
    -ieee754@^1.1.4:
    -  version "1.1.13"
    -  resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
    -  integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
    -
    -iferr@^0.1.5:
    -  version "0.1.5"
    -  resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
    -  integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
    -
    -ignore@^4.0.6:
    -  version "4.0.6"
    -  resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
    -  integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
    -
     ignore@^5.0.0, ignore@^5.1.1:
       version "5.1.8"
       resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
       integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
     
    -import-fresh@^3.0.0:
    -  version "3.2.1"
    -  resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66"
    -  integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==
    +ignore@^5.2.0, ignore@^5.2.4:
    +  version "5.2.4"
    +  resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
    +  integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
    +
    +import-fresh@^3.2.1:
    +  version "3.3.0"
    +  resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
    +  integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
       dependencies:
         parent-module "^1.0.0"
         resolve-from "^4.0.0"
    @@ -4593,7 +4854,7 @@ indent-string@^4.0.0:
       resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
       integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
     
    -infer-owner@^1.0.3, infer-owner@^1.0.4:
    +infer-owner@^1.0.4:
       version "1.0.4"
       resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
       integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
    @@ -4611,29 +4872,19 @@ inherits@2, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4,
       resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
       integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
     
    -inherits@2.0.1:
    -  version "2.0.1"
    -  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
    -  integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
    -
    -inherits@2.0.3:
    -  version "2.0.3"
    -  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
    -  integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
    -
     ini@^1.3.4, ini@~1.3.0:
       version "1.3.5"
       resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
       integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
     
    -internal-slot@^1.0.2:
    -  version "1.0.2"
    -  resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3"
    -  integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==
    +internal-slot@^1.0.5:
    +  version "1.0.5"
    +  resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986"
    +  integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==
       dependencies:
    -    es-abstract "^1.17.0-next.1"
    +    get-intrinsic "^1.2.0"
         has "^1.0.3"
    -    side-channel "^1.0.2"
    +    side-channel "^1.0.4"
     
     interpret@^1.4.0:
       version "1.4.0"
    @@ -4650,11 +4901,6 @@ ip-regex@^1.0.1:
       resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd"
       integrity sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=
     
    -ip-regex@^2.1.0:
    -  version "2.1.0"
    -  resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
    -  integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
    -
     is-absolute@^1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576"
    @@ -4690,11 +4936,34 @@ is-alphanumerical@^1.0.0:
         is-alphabetical "^1.0.0"
         is-decimal "^1.0.0"
     
    +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2:
    +  version "3.0.2"
    +  resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe"
    +  integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==
    +  dependencies:
    +    call-bind "^1.0.2"
    +    get-intrinsic "^1.2.0"
    +    is-typed-array "^1.1.10"
    +
     is-arrayish@^0.2.1:
       version "0.2.1"
       resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
       integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
     
    +is-async-function@^2.0.0:
    +  version "2.0.0"
    +  resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646"
    +  integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==
    +  dependencies:
    +    has-tostringtag "^1.0.0"
    +
    +is-bigint@^1.0.1:
    +  version "1.0.4"
    +  resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
    +  integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
    +  dependencies:
    +    has-bigints "^1.0.1"
    +
     is-binary-path@^1.0.0:
       version "1.0.1"
       resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
    @@ -4702,12 +4971,13 @@ is-binary-path@^1.0.0:
       dependencies:
         binary-extensions "^1.0.0"
     
    -is-binary-path@~2.1.0:
    -  version "2.1.0"
    -  resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
    -  integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
    +is-boolean-object@^1.1.0:
    +  version "1.1.2"
    +  resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
    +  integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
       dependencies:
    -    binary-extensions "^2.0.0"
    +    call-bind "^1.0.2"
    +    has-tostringtag "^1.0.0"
     
     is-buffer@^1.1.5:
       version "1.1.6"
    @@ -4719,7 +4989,12 @@ is-buffer@^2.0.0:
       resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623"
       integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==
     
    -is-callable@^1.1.4, is-callable@^1.2.0:
    +is-callable@^1.1.3, is-callable@^1.2.7:
    +  version "1.2.7"
    +  resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
    +  integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
    +
    +is-callable@^1.1.4:
       version "1.2.0"
       resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb"
       integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==
    @@ -4731,6 +5006,13 @@ is-ci@^2.0.0:
       dependencies:
         ci-info "^2.0.0"
     
    +is-core-module@^2.13.0, is-core-module@^2.9.0:
    +  version "2.13.0"
    +  resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db"
    +  integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==
    +  dependencies:
    +    has "^1.0.3"
    +
     is-data-descriptor@^0.1.4:
       version "0.1.4"
       resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
    @@ -4750,6 +5032,13 @@ is-date-object@^1.0.1:
       resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
       integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
     
    +is-date-object@^1.0.5:
    +  version "1.0.5"
    +  resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
    +  integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
    +  dependencies:
    +    has-tostringtag "^1.0.0"
    +
     is-decimal@^1.0.0:
       version "1.0.4"
       resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5"
    @@ -4773,11 +5062,6 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2:
         is-data-descriptor "^1.0.0"
         kind-of "^6.0.2"
     
    -is-docker@^2.0.0:
    -  version "2.0.0"
    -  resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b"
    -  integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==
    -
     is-empty@^1.0.0:
       version "1.2.0"
       resolved "https://registry.yarnpkg.com/is-empty/-/is-empty-1.2.0.tgz#de9bb5b278738a05a0b09a57e1fb4d4a341a9f6b"
    @@ -4800,6 +5084,13 @@ is-extglob@^2.1.0, is-extglob@^2.1.1:
       resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
       integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
     
    +is-finalizationregistry@^1.0.2:
    +  version "1.0.2"
    +  resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6"
    +  integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==
    +  dependencies:
    +    call-bind "^1.0.2"
    +
     is-fullwidth-code-point@^1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
    @@ -4822,6 +5113,13 @@ is-generator-fn@^2.0.0:
       resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
       integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
     
    +is-generator-function@^1.0.10:
    +  version "1.0.10"
    +  resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72"
    +  integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==
    +  dependencies:
    +    has-tostringtag "^1.0.0"
    +
     is-glob@^3.1.0:
       version "3.1.0"
       resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
    @@ -4829,13 +5127,20 @@ is-glob@^3.1.0:
       dependencies:
         is-extglob "^2.1.0"
     
    -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
    +is-glob@^4.0.0, is-glob@^4.0.1:
       version "4.0.1"
       resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
       integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
       dependencies:
         is-extglob "^2.1.1"
     
    +is-glob@^4.0.3:
    +  version "4.0.3"
    +  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
    +  integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
    +  dependencies:
    +    is-extglob "^2.1.1"
    +
     is-hexadecimal@^1.0.0:
       version "1.0.4"
       resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7"
    @@ -4854,16 +5159,33 @@ is-installed-globally@^0.1.0:
         global-dirs "^0.1.0"
         is-path-inside "^1.0.0"
     
    +is-map@^2.0.1:
    +  version "2.0.2"
    +  resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127"
    +  integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==
    +
     is-negated-glob@^1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2"
       integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=
     
    +is-negative-zero@^2.0.2:
    +  version "2.0.2"
    +  resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
    +  integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
    +
     is-npm@^3.0.0:
       version "3.0.0"
       resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-3.0.0.tgz#ec9147bfb629c43f494cf67936a961edec7e8053"
       integrity sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA==
     
    +is-number-object@^1.0.4:
    +  version "1.0.7"
    +  resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc"
    +  integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==
    +  dependencies:
    +    has-tostringtag "^1.0.0"
    +
     is-number@^3.0.0:
       version "3.0.0"
       resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
    @@ -4908,6 +5230,11 @@ is-path-inside@^3.0.1:
       resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017"
       integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==
     
    +is-path-inside@^3.0.3:
    +  version "3.0.3"
    +  resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
    +  integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
    +
     is-plain-obj@^1.1.0:
       version "1.1.0"
       resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
    @@ -4925,17 +5252,18 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
       dependencies:
         isobject "^3.0.1"
     
    -is-potential-custom-element-name@^1.0.0:
    -  version "1.0.0"
    -  resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397"
    -  integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c=
    +is-potential-custom-element-name@^1.0.1:
    +  version "1.0.1"
    +  resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5"
    +  integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==
     
    -is-regex@^1.1.0:
    -  version "1.1.0"
    -  resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff"
    -  integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==
    +is-regex@^1.1.4:
    +  version "1.1.4"
    +  resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
    +  integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
       dependencies:
    -    has-symbols "^1.0.1"
    +    call-bind "^1.0.2"
    +    has-tostringtag "^1.0.0"
     
     is-relative@^1.0.0:
       version "1.0.0"
    @@ -4944,6 +5272,18 @@ is-relative@^1.0.0:
       dependencies:
         is-unc-path "^1.0.0"
     
    +is-set@^2.0.1:
    +  version "2.0.2"
    +  resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec"
    +  integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==
    +
    +is-shared-array-buffer@^1.0.2:
    +  version "1.0.2"
    +  resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79"
    +  integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==
    +  dependencies:
    +    call-bind "^1.0.2"
    +
     is-stream@^1.0.1, is-stream@^1.1.0:
       version "1.1.0"
       resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
    @@ -4959,6 +5299,13 @@ is-string@^1.0.5:
       resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6"
       integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==
     
    +is-string@^1.0.7:
    +  version "1.0.7"
    +  resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
    +  integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
    +  dependencies:
    +    has-tostringtag "^1.0.0"
    +
     is-symbol@^1.0.2:
       version "1.0.3"
       resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
    @@ -4966,10 +5313,19 @@ is-symbol@^1.0.2:
       dependencies:
         has-symbols "^1.0.1"
     
    -is-typedarray@^1.0.0, is-typedarray@~1.0.0:
    -  version "1.0.0"
    -  resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
    -  integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
    +is-symbol@^1.0.3:
    +  version "1.0.4"
    +  resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
    +  integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
    +  dependencies:
    +    has-symbols "^1.0.2"
    +
    +is-typed-array@^1.1.10, is-typed-array@^1.1.9:
    +  version "1.1.12"
    +  resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a"
    +  integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==
    +  dependencies:
    +    which-typed-array "^1.1.11"
     
     is-unc-path@^1.0.0:
       version "1.0.0"
    @@ -4988,6 +5344,26 @@ is-valid-glob@^1.0.0:
       resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa"
       integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=
     
    +is-weakmap@^2.0.1:
    +  version "2.0.1"
    +  resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2"
    +  integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==
    +
    +is-weakref@^1.0.2:
    +  version "1.0.2"
    +  resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
    +  integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
    +  dependencies:
    +    call-bind "^1.0.2"
    +
    +is-weakset@^2.0.1:
    +  version "2.0.2"
    +  resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d"
    +  integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==
    +  dependencies:
    +    call-bind "^1.0.2"
    +    get-intrinsic "^1.1.1"
    +
     is-whitespace-character@^1.0.0:
       version "1.0.4"
       resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7"
    @@ -5003,18 +5379,6 @@ is-word-character@^1.0.0:
       resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230"
       integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==
     
    -is-wsl@^1.1.0:
    -  version "1.1.0"
    -  resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
    -  integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
    -
    -is-wsl@^2.1.1:
    -  version "2.2.0"
    -  resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
    -  integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
    -  dependencies:
    -    is-docker "^2.0.0"
    -
     is-yarn-global@^0.3.0:
       version "0.3.0"
       resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232"
    @@ -5025,11 +5389,16 @@ isarray@0.0.1:
       resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
       integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
     
    -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
    +isarray@1.0.0, isarray@~1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
       integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
     
    +isarray@^2.0.5:
    +  version "2.0.5"
    +  resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
    +  integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
    +
     isexe@^2.0.0:
       version "2.0.0"
       resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
    @@ -5055,26 +5424,38 @@ isomorphic-fetch@^2.1.1:
         node-fetch "^1.0.1"
         whatwg-fetch ">=0.10.0"
     
    -isstream@~0.1.2:
    -  version "0.1.2"
    -  resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
    -  integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
    -
     istanbul-lib-coverage@^3.0.0:
       version "3.0.0"
       resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec"
       integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==
     
    -istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3:
    -  version "4.0.3"
    -  resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d"
    -  integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==
    +istanbul-lib-coverage@^3.2.0:
    +  version "3.2.0"
    +  resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3"
    +  integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==
    +
    +istanbul-lib-instrument@^5.0.4:
    +  version "5.2.1"
    +  resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d"
    +  integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==
       dependencies:
    -    "@babel/core" "^7.7.5"
    +    "@babel/core" "^7.12.3"
    +    "@babel/parser" "^7.14.7"
         "@istanbuljs/schema" "^0.1.2"
    -    istanbul-lib-coverage "^3.0.0"
    +    istanbul-lib-coverage "^3.2.0"
         semver "^6.3.0"
     
    +istanbul-lib-instrument@^6.0.0:
    +  version "6.0.0"
    +  resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz#7a8af094cbfff1d5bb280f62ce043695ae8dd5b8"
    +  integrity sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==
    +  dependencies:
    +    "@babel/core" "^7.12.3"
    +    "@babel/parser" "^7.14.7"
    +    "@istanbuljs/schema" "^0.1.2"
    +    istanbul-lib-coverage "^3.2.0"
    +    semver "^7.5.4"
    +
     istanbul-lib-report@^3.0.0:
       version "3.0.0"
       resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6"
    @@ -5093,373 +5474,378 @@ istanbul-lib-source-maps@^4.0.0:
         istanbul-lib-coverage "^3.0.0"
         source-map "^0.6.1"
     
    -istanbul-reports@^3.0.2:
    -  version "3.0.2"
    -  resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b"
    -  integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==
    +istanbul-reports@^3.1.3:
    +  version "3.1.6"
    +  resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a"
    +  integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==
       dependencies:
         html-escaper "^2.0.0"
         istanbul-lib-report "^3.0.0"
     
    -jest-changed-files@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.1.0.tgz#de66b0f30453bca2aff98e9400f75905da495305"
    -  integrity sha512-HS5MIJp3B8t0NRKGMCZkcDUZo36mVRvrDETl81aqljT1S9tqiHRSpyoOvWg9ZilzZG9TDisDNaN1IXm54fLRZw==
    -  dependencies:
    -    "@jest/types" "^26.1.0"
    -    execa "^4.0.0"
    -    throat "^5.0.0"
    +iterator.prototype@^1.1.0:
    +  version "1.1.1"
    +  resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.1.tgz#ab5b790e23ec00658f5974e032a2b05188bd3a5c"
    +  integrity sha512-9E+nePc8C9cnQldmNl6bgpTY6zI4OPRZd97fhJ/iVZ1GifIUDVV5F6x1nEDqpe8KaMEZGT4xgrwKQDxXnjOIZQ==
    +  dependencies:
    +    define-properties "^1.2.0"
    +    get-intrinsic "^1.2.1"
    +    has-symbols "^1.0.3"
    +    reflect.getprototypeof "^1.0.3"
    +
    +jest-changed-files@^29.6.3:
    +  version "29.6.3"
    +  resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.6.3.tgz#97cfdc93f74fb8af2a1acb0b78f836f1fb40c449"
    +  integrity sha512-G5wDnElqLa4/c66ma5PG9eRjE342lIbF6SUnTJi26C3J28Fv2TVY2rOyKB9YGbSA5ogwevgmxc4j4aVjrEK6Yg==
    +  dependencies:
    +    execa "^5.0.0"
    +    jest-util "^29.6.3"
    +    p-limit "^3.1.0"
    +
    +jest-circus@^29.6.4:
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.6.4.tgz#f074c8d795e0cc0f2ebf0705086b1be6a9a8722f"
    +  integrity sha512-YXNrRyntVUgDfZbjXWBMPslX1mQ8MrSG0oM/Y06j9EYubODIyHWP8hMUbjbZ19M3M+zamqEur7O80HODwACoJw==
    +  dependencies:
    +    "@jest/environment" "^29.6.4"
    +    "@jest/expect" "^29.6.4"
    +    "@jest/test-result" "^29.6.4"
    +    "@jest/types" "^29.6.3"
    +    "@types/node" "*"
    +    chalk "^4.0.0"
    +    co "^4.6.0"
    +    dedent "^1.0.0"
    +    is-generator-fn "^2.0.0"
    +    jest-each "^29.6.3"
    +    jest-matcher-utils "^29.6.4"
    +    jest-message-util "^29.6.3"
    +    jest-runtime "^29.6.4"
    +    jest-snapshot "^29.6.4"
    +    jest-util "^29.6.3"
    +    p-limit "^3.1.0"
    +    pretty-format "^29.6.3"
    +    pure-rand "^6.0.0"
    +    slash "^3.0.0"
    +    stack-utils "^2.0.3"
     
    -jest-cli@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.1.0.tgz#eb9ec8a18cf3b6aa556d9deaa9e24be12b43ad87"
    -  integrity sha512-Imumvjgi3rU7stq6SJ1JUEMaV5aAgJYXIs0jPqdUnF47N/Tk83EXfmtvNKQ+SnFVI6t6mDOvfM3aA9Sg6kQPSw==
    +jest-cli@^29.6.4:
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.6.4.tgz#ad52f2dfa1b0291de7ec7f8d7c81ac435521ede0"
    +  integrity sha512-+uMCQ7oizMmh8ZwRfZzKIEszFY9ksjjEQnTEMTaL7fYiL3Kw4XhqT9bYh+A4DQKUb67hZn2KbtEnDuHvcgK4pQ==
       dependencies:
    -    "@jest/core" "^26.1.0"
    -    "@jest/test-result" "^26.1.0"
    -    "@jest/types" "^26.1.0"
    +    "@jest/core" "^29.6.4"
    +    "@jest/test-result" "^29.6.4"
    +    "@jest/types" "^29.6.3"
         chalk "^4.0.0"
         exit "^0.1.2"
    -    graceful-fs "^4.2.4"
    +    graceful-fs "^4.2.9"
         import-local "^3.0.2"
    -    is-ci "^2.0.0"
    -    jest-config "^26.1.0"
    -    jest-util "^26.1.0"
    -    jest-validate "^26.1.0"
    +    jest-config "^29.6.4"
    +    jest-util "^29.6.3"
    +    jest-validate "^29.6.3"
         prompts "^2.0.1"
    -    yargs "^15.3.1"
    +    yargs "^17.3.1"
     
    -jest-config@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.1.0.tgz#9074f7539acc185e0113ad6d22ed589c16a37a73"
    -  integrity sha512-ONTGeoMbAwGCdq4WuKkMcdMoyfs5CLzHEkzFOlVvcDXufZSaIWh/OXMLa2fwKXiOaFcqEw8qFr4VOKJQfn4CVw==
    +jest-config@^29.6.4:
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.6.4.tgz#eff958ee41d4e1ee7a6106d02b74ad9fc427d79e"
    +  integrity sha512-JWohr3i9m2cVpBumQFv2akMEnFEPVOh+9L2xIBJhJ0zOaci2ZXuKJj0tgMKQCBZAKA09H049IR4HVS/43Qb19A==
       dependencies:
    -    "@babel/core" "^7.1.0"
    -    "@jest/test-sequencer" "^26.1.0"
    -    "@jest/types" "^26.1.0"
    -    babel-jest "^26.1.0"
    +    "@babel/core" "^7.11.6"
    +    "@jest/test-sequencer" "^29.6.4"
    +    "@jest/types" "^29.6.3"
    +    babel-jest "^29.6.4"
         chalk "^4.0.0"
    +    ci-info "^3.2.0"
         deepmerge "^4.2.2"
    -    glob "^7.1.1"
    -    graceful-fs "^4.2.4"
    -    jest-environment-jsdom "^26.1.0"
    -    jest-environment-node "^26.1.0"
    -    jest-get-type "^26.0.0"
    -    jest-jasmine2 "^26.1.0"
    -    jest-regex-util "^26.0.0"
    -    jest-resolve "^26.1.0"
    -    jest-util "^26.1.0"
    -    jest-validate "^26.1.0"
    -    micromatch "^4.0.2"
    -    pretty-format "^26.1.0"
    -
    -jest-diff@^25.2.1:
    -  version "25.5.0"
    -  resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9"
    -  integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==
    -  dependencies:
    -    chalk "^3.0.0"
    -    diff-sequences "^25.2.6"
    -    jest-get-type "^25.2.6"
    -    pretty-format "^25.5.0"
    +    glob "^7.1.3"
    +    graceful-fs "^4.2.9"
    +    jest-circus "^29.6.4"
    +    jest-environment-node "^29.6.4"
    +    jest-get-type "^29.6.3"
    +    jest-regex-util "^29.6.3"
    +    jest-resolve "^29.6.4"
    +    jest-runner "^29.6.4"
    +    jest-util "^29.6.3"
    +    jest-validate "^29.6.3"
    +    micromatch "^4.0.4"
    +    parse-json "^5.2.0"
    +    pretty-format "^29.6.3"
    +    slash "^3.0.0"
    +    strip-json-comments "^3.1.1"
     
    -jest-diff@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.1.0.tgz#00a549bdc936c9691eb4dc25d1fbd78bf456abb2"
    -  integrity sha512-GZpIcom339y0OXznsEKjtkfKxNdg7bVbEofK8Q6MnevTIiR1jNhDWKhRX6X0SDXJlwn3dy59nZ1z55fLkAqPWg==
    +jest-diff@^29.6.4:
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.6.4.tgz#85aaa6c92a79ae8cd9a54ebae8d5b6d9a513314a"
    +  integrity sha512-9F48UxR9e4XOEZvoUXEHSWY4qC4zERJaOfrbBg9JpbJOO43R1vN76REt/aMGZoY6GD5g84nnJiBIVlscegefpw==
       dependencies:
         chalk "^4.0.0"
    -    diff-sequences "^26.0.0"
    -    jest-get-type "^26.0.0"
    -    pretty-format "^26.1.0"
    +    diff-sequences "^29.6.3"
    +    jest-get-type "^29.6.3"
    +    pretty-format "^29.6.3"
     
    -jest-docblock@^26.0.0:
    -  version "26.0.0"
    -  resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5"
    -  integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==
    +jest-docblock@^29.6.3:
    +  version "29.6.3"
    +  resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.6.3.tgz#293dca5188846c9f7c0c2b1bb33e5b11f21645f2"
    +  integrity sha512-2+H+GOTQBEm2+qFSQ7Ma+BvyV+waiIFxmZF5LdpBsAEjWX8QYjSCa4FrkIYtbfXUJJJnFCYrOtt6TZ+IAiTjBQ==
       dependencies:
         detect-newline "^3.0.0"
     
    -jest-each@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.1.0.tgz#e35449875009a22d74d1bda183b306db20f286f7"
    -  integrity sha512-lYiSo4Igr81q6QRsVQq9LIkJW0hZcKxkIkHzNeTMPENYYDw/W/Raq28iJ0sLlNFYz2qxxeLnc5K2gQoFYlu2bA==
    +jest-each@^29.6.3:
    +  version "29.6.3"
    +  resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.6.3.tgz#1956f14f5f0cb8ae0b2e7cabc10bb03ec817c142"
    +  integrity sha512-KoXfJ42k8cqbkfshW7sSHcdfnv5agDdHCPA87ZBdmHP+zJstTJc0ttQaJ/x7zK6noAL76hOuTIJ6ZkQRS5dcyg==
       dependencies:
    -    "@jest/types" "^26.1.0"
    +    "@jest/types" "^29.6.3"
         chalk "^4.0.0"
    -    jest-get-type "^26.0.0"
    -    jest-util "^26.1.0"
    -    pretty-format "^26.1.0"
    +    jest-get-type "^29.6.3"
    +    jest-util "^29.6.3"
    +    pretty-format "^29.6.3"
    +
    +jest-environment-jsdom@^29.6.4:
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.6.4.tgz#0daf44454041f9e1ef7fa82eb1bd43426a82eb1c"
    +  integrity sha512-K6wfgUJ16DoMs02JYFid9lOsqfpoVtyJxpRlnTxUHzvZWBnnh2VNGRB9EC1Cro96TQdq5TtSjb3qUjNaJP9IyA==
    +  dependencies:
    +    "@jest/environment" "^29.6.4"
    +    "@jest/fake-timers" "^29.6.4"
    +    "@jest/types" "^29.6.3"
    +    "@types/jsdom" "^20.0.0"
    +    "@types/node" "*"
    +    jest-mock "^29.6.3"
    +    jest-util "^29.6.3"
    +    jsdom "^20.0.0"
    +
    +jest-environment-node@^29.6.4:
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.6.4.tgz#4ce311549afd815d3cafb49e60a1e4b25f06d29f"
    +  integrity sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==
    +  dependencies:
    +    "@jest/environment" "^29.6.4"
    +    "@jest/fake-timers" "^29.6.4"
    +    "@jest/types" "^29.6.3"
    +    "@types/node" "*"
    +    jest-mock "^29.6.3"
    +    jest-util "^29.6.3"
     
    -jest-environment-jsdom@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.1.0.tgz#9dc7313ffe1b59761dad1fedb76e2503e5d37c5b"
    -  integrity sha512-dWfiJ+spunVAwzXbdVqPH1LbuJW/kDL+FyqgA5YzquisHqTi0g9hquKif9xKm7c1bKBj6wbmJuDkeMCnxZEpUw==
    -  dependencies:
    -    "@jest/environment" "^26.1.0"
    -    "@jest/fake-timers" "^26.1.0"
    -    "@jest/types" "^26.1.0"
    -    jest-mock "^26.1.0"
    -    jest-util "^26.1.0"
    -    jsdom "^16.2.2"
    +jest-get-type@^29.6.3:
    +  version "29.6.3"
    +  resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1"
    +  integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==
     
    -jest-environment-node@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.1.0.tgz#8bb387b3eefb132eab7826f9a808e4e05618960b"
    -  integrity sha512-DNm5x1aQH0iRAe9UYAkZenuzuJ69VKzDCAYISFHQ5i9e+2Tbeu2ONGY7YStubCLH8a1wdKBgqScYw85+ySxqxg==
    -  dependencies:
    -    "@jest/environment" "^26.1.0"
    -    "@jest/fake-timers" "^26.1.0"
    -    "@jest/types" "^26.1.0"
    -    jest-mock "^26.1.0"
    -    jest-util "^26.1.0"
    -
    -jest-get-type@^25.2.6:
    -  version "25.2.6"
    -  resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877"
    -  integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==
    -
    -jest-get-type@^26.0.0:
    -  version "26.0.0"
    -  resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.0.0.tgz#381e986a718998dbfafcd5ec05934be538db4039"
    -  integrity sha512-zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg==
    -
    -jest-haste-map@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.1.0.tgz#ef31209be73f09b0d9445e7d213e1b53d0d1476a"
    -  integrity sha512-WeBS54xCIz9twzkEdm6+vJBXgRBQfdbbXD0dk8lJh7gLihopABlJmIQFdWSDDtuDe4PRiObsjZSUjbJ1uhWEpA==
    +jest-haste-map@^29.6.4:
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.6.4.tgz#97143ce833829157ea7025204b08f9ace609b96a"
    +  integrity sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog==
       dependencies:
    -    "@jest/types" "^26.1.0"
    -    "@types/graceful-fs" "^4.1.2"
    +    "@jest/types" "^29.6.3"
    +    "@types/graceful-fs" "^4.1.3"
    +    "@types/node" "*"
         anymatch "^3.0.3"
         fb-watchman "^2.0.0"
    -    graceful-fs "^4.2.4"
    -    jest-serializer "^26.1.0"
    -    jest-util "^26.1.0"
    -    jest-worker "^26.1.0"
    -    micromatch "^4.0.2"
    -    sane "^4.0.3"
    -    walker "^1.0.7"
    -    which "^2.0.2"
    +    graceful-fs "^4.2.9"
    +    jest-regex-util "^29.6.3"
    +    jest-util "^29.6.3"
    +    jest-worker "^29.6.4"
    +    micromatch "^4.0.4"
    +    walker "^1.0.8"
       optionalDependencies:
    -    fsevents "^2.1.2"
    +    fsevents "^2.3.2"
     
    -jest-jasmine2@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.1.0.tgz#4dfe349b2b2d3c6b3a27c024fd4cb57ac0ed4b6f"
    -  integrity sha512-1IPtoDKOAG+MeBrKvvuxxGPJb35MTTRSDglNdWWCndCB3TIVzbLThRBkwH9P081vXLgiJHZY8Bz3yzFS803xqQ==
    -  dependencies:
    -    "@babel/traverse" "^7.1.0"
    -    "@jest/environment" "^26.1.0"
    -    "@jest/source-map" "^26.1.0"
    -    "@jest/test-result" "^26.1.0"
    -    "@jest/types" "^26.1.0"
    -    chalk "^4.0.0"
    -    co "^4.6.0"
    -    expect "^26.1.0"
    -    is-generator-fn "^2.0.0"
    -    jest-each "^26.1.0"
    -    jest-matcher-utils "^26.1.0"
    -    jest-message-util "^26.1.0"
    -    jest-runtime "^26.1.0"
    -    jest-snapshot "^26.1.0"
    -    jest-util "^26.1.0"
    -    pretty-format "^26.1.0"
    -    throat "^5.0.0"
    -
    -jest-leak-detector@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.1.0.tgz#039c3a07ebcd8adfa984b6ac015752c35792e0a6"
    -  integrity sha512-dsMnKF+4BVOZwvQDlgn3MG+Ns4JuLv8jNvXH56bgqrrboyCbI1rQg6EI5rs+8IYagVcfVP2yZFKfWNZy0rK0Hw==
    +jest-leak-detector@^29.6.3:
    +  version "29.6.3"
    +  resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.6.3.tgz#b9661bc3aec8874e59aff361fa0c6d7cd507ea01"
    +  integrity sha512-0kfbESIHXYdhAdpLsW7xdwmYhLf1BRu4AA118/OxFm0Ho1b2RcTmO4oF6aAMaxpxdxnJ3zve2rgwzNBD4Zbm7Q==
       dependencies:
    -    jest-get-type "^26.0.0"
    -    pretty-format "^26.1.0"
    +    jest-get-type "^29.6.3"
    +    pretty-format "^29.6.3"
     
    -jest-matcher-utils@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.1.0.tgz#cf75a41bd413dda784f022de5a65a2a5c73a5c92"
    -  integrity sha512-PW9JtItbYvES/xLn5mYxjMd+Rk+/kIt88EfH3N7w9KeOrHWaHrdYPnVHndGbsFGRJ2d5gKtwggCvkqbFDoouQA==
    +jest-matcher-utils@^29.6.4:
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.6.4.tgz#327db7ababea49455df3b23e5d6109fe0c709d24"
    +  integrity sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==
       dependencies:
         chalk "^4.0.0"
    -    jest-diff "^26.1.0"
    -    jest-get-type "^26.0.0"
    -    pretty-format "^26.1.0"
    -
    -jest-message-util@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.1.0.tgz#52573fbb8f5cea443c4d1747804d7a238a3e233c"
    -  integrity sha512-dY0+UlldiAJwNDJ08SF0HdF32g9PkbF2NRK/+2iMPU40O6q+iSn1lgog/u0UH8ksWoPv0+gNq8cjhYO2MFtT0g==
    -  dependencies:
    -    "@babel/code-frame" "^7.0.0"
    -    "@jest/types" "^26.1.0"
    -    "@types/stack-utils" "^1.0.1"
    +    jest-diff "^29.6.4"
    +    jest-get-type "^29.6.3"
    +    pretty-format "^29.6.3"
    +
    +jest-message-util@^29.6.3:
    +  version "29.6.3"
    +  resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.6.3.tgz#bce16050d86801b165f20cfde34dc01d3cf85fbf"
    +  integrity sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==
    +  dependencies:
    +    "@babel/code-frame" "^7.12.13"
    +    "@jest/types" "^29.6.3"
    +    "@types/stack-utils" "^2.0.0"
         chalk "^4.0.0"
    -    graceful-fs "^4.2.4"
    -    micromatch "^4.0.2"
    +    graceful-fs "^4.2.9"
    +    micromatch "^4.0.4"
    +    pretty-format "^29.6.3"
         slash "^3.0.0"
    -    stack-utils "^2.0.2"
    +    stack-utils "^2.0.3"
     
    -jest-mock@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.1.0.tgz#80d8286da1f05a345fbad1bfd6fa49a899465d3d"
    -  integrity sha512-1Rm8EIJ3ZFA8yCIie92UbxZWj9SuVmUGcyhLHyAhY6WI3NIct38nVcfOPWhJteqSn8V8e3xOMha9Ojfazfpovw==
    +jest-mock@^29.6.3:
    +  version "29.6.3"
    +  resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.6.3.tgz#433f3fd528c8ec5a76860177484940628bdf5e0a"
    +  integrity sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==
       dependencies:
    -    "@jest/types" "^26.1.0"
    +    "@jest/types" "^29.6.3"
    +    "@types/node" "*"
    +    jest-util "^29.6.3"
     
    -jest-pnp-resolver@^1.2.1:
    -  version "1.2.2"
    -  resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c"
    -  integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==
    +jest-pnp-resolver@^1.2.2:
    +  version "1.2.3"
    +  resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e"
    +  integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==
     
    -jest-regex-util@^26.0.0:
    -  version "26.0.0"
    -  resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28"
    -  integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==
    +jest-regex-util@^29.6.3:
    +  version "29.6.3"
    +  resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52"
    +  integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==
     
    -jest-resolve-dependencies@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.1.0.tgz#1ce36472f864a5dadf7dc82fa158e1c77955691b"
    -  integrity sha512-fQVEPHHQ1JjHRDxzlLU/buuQ9om+hqW6Vo928aa4b4yvq4ZHBtRSDsLdKQLuCqn5CkTVpYZ7ARh2fbA8WkRE6g==
    +jest-resolve-dependencies@^29.6.4:
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.4.tgz#20156b33c7eacbb6bb77aeba4bed0eab4a3f8734"
    +  integrity sha512-7+6eAmr1ZBF3vOAJVsfLj1QdqeXG+WYhidfLHBRZqGN24MFRIiKG20ItpLw2qRAsW/D2ZUUmCNf6irUr/v6KHA==
       dependencies:
    -    "@jest/types" "^26.1.0"
    -    jest-regex-util "^26.0.0"
    -    jest-snapshot "^26.1.0"
    +    jest-regex-util "^29.6.3"
    +    jest-snapshot "^29.6.4"
     
    -jest-resolve@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.1.0.tgz#a530eaa302b1f6fa0479079d1561dd69abc00e68"
    -  integrity sha512-KsY1JV9FeVgEmwIISbZZN83RNGJ1CC+XUCikf/ZWJBX/tO4a4NvA21YixokhdR9UnmPKKAC4LafVixJBrwlmfg==
    +jest-resolve@^29.6.4:
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.6.4.tgz#e34cb06f2178b429c38455d98d1a07572ac9faa3"
    +  integrity sha512-fPRq+0vcxsuGlG0O3gyoqGTAxasagOxEuyoxHeyxaZbc9QNek0AmJWSkhjlMG+mTsj+8knc/mWb3fXlRNVih7Q==
       dependencies:
    -    "@jest/types" "^26.1.0"
         chalk "^4.0.0"
    -    graceful-fs "^4.2.4"
    -    jest-pnp-resolver "^1.2.1"
    -    jest-util "^26.1.0"
    -    read-pkg-up "^7.0.1"
    -    resolve "^1.17.0"
    +    graceful-fs "^4.2.9"
    +    jest-haste-map "^29.6.4"
    +    jest-pnp-resolver "^1.2.2"
    +    jest-util "^29.6.3"
    +    jest-validate "^29.6.3"
    +    resolve "^1.20.0"
    +    resolve.exports "^2.0.0"
         slash "^3.0.0"
     
    -jest-runner@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.1.0.tgz#457f7fc522afe46ca6db1dccf19f87f500b3288d"
    -  integrity sha512-elvP7y0fVDREnfqit0zAxiXkDRSw6dgCkzPCf1XvIMnSDZ8yogmSKJf192dpOgnUVykmQXwYYJnCx641uLTgcw==
    +jest-runner@^29.6.4:
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.6.4.tgz#b3b8ccb85970fde0fae40c73ee11eb75adccfacf"
    +  integrity sha512-SDaLrMmtVlQYDuG0iSPYLycG8P9jLI+fRm8AF/xPKhYDB2g6xDWjXBrR5M8gEWsK6KVFlebpZ4QsrxdyIX1Jaw==
       dependencies:
    -    "@jest/console" "^26.1.0"
    -    "@jest/environment" "^26.1.0"
    -    "@jest/test-result" "^26.1.0"
    -    "@jest/types" "^26.1.0"
    +    "@jest/console" "^29.6.4"
    +    "@jest/environment" "^29.6.4"
    +    "@jest/test-result" "^29.6.4"
    +    "@jest/transform" "^29.6.4"
    +    "@jest/types" "^29.6.3"
    +    "@types/node" "*"
         chalk "^4.0.0"
    -    exit "^0.1.2"
    -    graceful-fs "^4.2.4"
    -    jest-config "^26.1.0"
    -    jest-docblock "^26.0.0"
    -    jest-haste-map "^26.1.0"
    -    jest-jasmine2 "^26.1.0"
    -    jest-leak-detector "^26.1.0"
    -    jest-message-util "^26.1.0"
    -    jest-resolve "^26.1.0"
    -    jest-runtime "^26.1.0"
    -    jest-util "^26.1.0"
    -    jest-worker "^26.1.0"
    -    source-map-support "^0.5.6"
    -    throat "^5.0.0"
    -
    -jest-runtime@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.1.0.tgz#45a37af42115f123ed5c51f126c05502da2469cb"
    -  integrity sha512-1qiYN+EZLmG1QV2wdEBRf+Ci8i3VSfIYLF02U18PiUDrMbhfpN/EAMMkJtT02jgJUoaEOpHAIXG6zS3QRMzRmA==
    -  dependencies:
    -    "@jest/console" "^26.1.0"
    -    "@jest/environment" "^26.1.0"
    -    "@jest/fake-timers" "^26.1.0"
    -    "@jest/globals" "^26.1.0"
    -    "@jest/source-map" "^26.1.0"
    -    "@jest/test-result" "^26.1.0"
    -    "@jest/transform" "^26.1.0"
    -    "@jest/types" "^26.1.0"
    -    "@types/yargs" "^15.0.0"
    +    emittery "^0.13.1"
    +    graceful-fs "^4.2.9"
    +    jest-docblock "^29.6.3"
    +    jest-environment-node "^29.6.4"
    +    jest-haste-map "^29.6.4"
    +    jest-leak-detector "^29.6.3"
    +    jest-message-util "^29.6.3"
    +    jest-resolve "^29.6.4"
    +    jest-runtime "^29.6.4"
    +    jest-util "^29.6.3"
    +    jest-watcher "^29.6.4"
    +    jest-worker "^29.6.4"
    +    p-limit "^3.1.0"
    +    source-map-support "0.5.13"
    +
    +jest-runtime@^29.6.4:
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.6.4.tgz#b0bc495c9b6b12a0a7042ac34ca9bb85f8cd0ded"
    +  integrity sha512-s/QxMBLvmwLdchKEjcLfwzP7h+jsHvNEtxGP5P+Fl1FMaJX2jMiIqe4rJw4tFprzCwuSvVUo9bn0uj4gNRXsbA==
    +  dependencies:
    +    "@jest/environment" "^29.6.4"
    +    "@jest/fake-timers" "^29.6.4"
    +    "@jest/globals" "^29.6.4"
    +    "@jest/source-map" "^29.6.3"
    +    "@jest/test-result" "^29.6.4"
    +    "@jest/transform" "^29.6.4"
    +    "@jest/types" "^29.6.3"
    +    "@types/node" "*"
         chalk "^4.0.0"
    +    cjs-module-lexer "^1.0.0"
         collect-v8-coverage "^1.0.0"
    -    exit "^0.1.2"
         glob "^7.1.3"
    -    graceful-fs "^4.2.4"
    -    jest-config "^26.1.0"
    -    jest-haste-map "^26.1.0"
    -    jest-message-util "^26.1.0"
    -    jest-mock "^26.1.0"
    -    jest-regex-util "^26.0.0"
    -    jest-resolve "^26.1.0"
    -    jest-snapshot "^26.1.0"
    -    jest-util "^26.1.0"
    -    jest-validate "^26.1.0"
    +    graceful-fs "^4.2.9"
    +    jest-haste-map "^29.6.4"
    +    jest-message-util "^29.6.3"
    +    jest-mock "^29.6.3"
    +    jest-regex-util "^29.6.3"
    +    jest-resolve "^29.6.4"
    +    jest-snapshot "^29.6.4"
    +    jest-util "^29.6.3"
         slash "^3.0.0"
         strip-bom "^4.0.0"
    -    yargs "^15.3.1"
    -
    -jest-serializer@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.1.0.tgz#72a394531fc9b08e173dc7d297440ac610d95022"
    -  integrity sha512-eqZOQG/0+MHmr25b2Z86g7+Kzd5dG9dhCiUoyUNJPgiqi38DqbDEOlHcNijyfZoj74soGBohKBZuJFS18YTJ5w==
    -  dependencies:
    -    graceful-fs "^4.2.4"
     
    -jest-snapshot@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.1.0.tgz#c36ed1e0334bd7bd2fe5ad07e93a364ead7e1349"
    -  integrity sha512-YhSbU7eMTVQO/iRbNs8j0mKRxGp4plo7sJ3GzOQ0IYjvsBiwg0T1o0zGQAYepza7lYHuPTrG5J2yDd0CE2YxSw==
    +jest-snapshot@^29.6.4:
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.6.4.tgz#9833eb6b66ff1541c7fd8ceaa42d541f407b4876"
    +  integrity sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA==
       dependencies:
    -    "@babel/types" "^7.0.0"
    -    "@jest/types" "^26.1.0"
    -    "@types/prettier" "^2.0.0"
    +    "@babel/core" "^7.11.6"
    +    "@babel/generator" "^7.7.2"
    +    "@babel/plugin-syntax-jsx" "^7.7.2"
    +    "@babel/plugin-syntax-typescript" "^7.7.2"
    +    "@babel/types" "^7.3.3"
    +    "@jest/expect-utils" "^29.6.4"
    +    "@jest/transform" "^29.6.4"
    +    "@jest/types" "^29.6.3"
    +    babel-preset-current-node-syntax "^1.0.0"
         chalk "^4.0.0"
    -    expect "^26.1.0"
    -    graceful-fs "^4.2.4"
    -    jest-diff "^26.1.0"
    -    jest-get-type "^26.0.0"
    -    jest-haste-map "^26.1.0"
    -    jest-matcher-utils "^26.1.0"
    -    jest-message-util "^26.1.0"
    -    jest-resolve "^26.1.0"
    +    expect "^29.6.4"
    +    graceful-fs "^4.2.9"
    +    jest-diff "^29.6.4"
    +    jest-get-type "^29.6.3"
    +    jest-matcher-utils "^29.6.4"
    +    jest-message-util "^29.6.3"
    +    jest-util "^29.6.3"
         natural-compare "^1.4.0"
    -    pretty-format "^26.1.0"
    -    semver "^7.3.2"
    +    pretty-format "^29.6.3"
    +    semver "^7.5.3"
     
    -jest-util@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.1.0.tgz#80e85d4ba820decacf41a691c2042d5276e5d8d8"
    -  integrity sha512-rNMOwFQevljfNGvbzNQAxdmXQ+NawW/J72dmddsK0E8vgxXCMtwQ/EH0BiWEIxh0hhMcTsxwAxINt7Lh46Uzbg==
    +jest-util@^29.0.0, jest-util@^29.6.3:
    +  version "29.6.3"
    +  resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.6.3.tgz#e15c3eac8716440d1ed076f09bc63ace1aebca63"
    +  integrity sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==
       dependencies:
    -    "@jest/types" "^26.1.0"
    +    "@jest/types" "^29.6.3"
    +    "@types/node" "*"
         chalk "^4.0.0"
    -    graceful-fs "^4.2.4"
    -    is-ci "^2.0.0"
    -    micromatch "^4.0.2"
    +    ci-info "^3.2.0"
    +    graceful-fs "^4.2.9"
    +    picomatch "^2.2.3"
     
    -jest-validate@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.1.0.tgz#942c85ad3d60f78250c488a7f85d8f11a29788e7"
    -  integrity sha512-WPApOOnXsiwhZtmkDsxnpye+XLb/tUISP+H6cHjfUIXvlG+eKwP+isnivsxlHCPaO9Q5wvbhloIBkdF3qUn+Nw==
    +jest-validate@^29.6.3:
    +  version "29.6.3"
    +  resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.6.3.tgz#a75fca774cfb1c5758c70d035d30a1f9c2784b4d"
    +  integrity sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==
       dependencies:
    -    "@jest/types" "^26.1.0"
    -    camelcase "^6.0.0"
    +    "@jest/types" "^29.6.3"
    +    camelcase "^6.2.0"
         chalk "^4.0.0"
    -    jest-get-type "^26.0.0"
    +    jest-get-type "^29.6.3"
         leven "^3.1.0"
    -    pretty-format "^26.1.0"
    +    pretty-format "^29.6.3"
     
    -jest-watcher@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.1.0.tgz#99812a0cd931f0cb3d153180426135ab83e4d8f2"
    -  integrity sha512-ffEOhJl2EvAIki613oPsSG11usqnGUzIiK7MMX6hE4422aXOcVEG3ySCTDFLn1+LZNXGPE8tuJxhp8OBJ1pgzQ==
    +jest-watcher@^29.6.4:
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.6.4.tgz#633eb515ae284aa67fd6831f1c9d1b534cf0e0ba"
    +  integrity sha512-oqUWvx6+On04ShsT00Ir9T4/FvBeEh2M9PTubgITPxDa739p4hoQweWPRGyYeaojgT0xTpZKF0Y/rSY1UgMxvQ==
       dependencies:
    -    "@jest/test-result" "^26.1.0"
    -    "@jest/types" "^26.1.0"
    +    "@jest/test-result" "^29.6.4"
    +    "@jest/types" "^29.6.3"
    +    "@types/node" "*"
         ansi-escapes "^4.2.1"
         chalk "^4.0.0"
    -    jest-util "^26.1.0"
    +    emittery "^0.13.1"
    +    jest-util "^29.6.3"
         string-length "^4.0.1"
     
    -jest-worker@^26.0.0, jest-worker@^26.1.0:
    +jest-worker@^26.0.0:
       version "26.1.0"
       resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.1.0.tgz#65d5641af74e08ccd561c240e7db61284f82f33d"
       integrity sha512-Z9P5pZ6UC+kakMbNJn+tA2RdVdNX5WH1x+5UCBZ9MxIK24pjYtFt96fK+UwBTrjLYm232g1xz0L3eTh51OW+yQ==
    @@ -5467,14 +5853,34 @@ jest-worker@^26.0.0, jest-worker@^26.1.0:
         merge-stream "^2.0.0"
         supports-color "^7.0.0"
     
    -jest@^26.0.1:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/jest/-/jest-26.1.0.tgz#2f3aa7bcffb9bfd025473f83bbbf46a3af026263"
    -  integrity sha512-LIti8jppw5BcQvmNJe4w2g1N/3V68HUfAv9zDVm7v+VAtQulGhH0LnmmiVkbNE4M4I43Bj2fXPiBGKt26k9tHw==
    +jest-worker@^27.4.5:
    +  version "27.5.1"
    +  resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0"
    +  integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==
    +  dependencies:
    +    "@types/node" "*"
    +    merge-stream "^2.0.0"
    +    supports-color "^8.0.0"
    +
    +jest-worker@^29.6.4:
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.6.4.tgz#f34279f4afc33c872b470d4af21b281ac616abd3"
    +  integrity sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==
    +  dependencies:
    +    "@types/node" "*"
    +    jest-util "^29.6.3"
    +    merge-stream "^2.0.0"
    +    supports-color "^8.0.0"
    +
    +jest@^29.6.4:
    +  version "29.6.4"
    +  resolved "https://registry.yarnpkg.com/jest/-/jest-29.6.4.tgz#7c48e67a445ba264b778253b5d78d4ebc9d0a622"
    +  integrity sha512-tEFhVQFF/bzoYV1YuGyzLPZ6vlPrdfvDmmAxudA1dLEuiztqg2Rkx20vkKY32xiDROcD2KXlgZ7Cu8RPeEHRKw==
       dependencies:
    -    "@jest/core" "^26.1.0"
    +    "@jest/core" "^29.6.4"
    +    "@jest/types" "^29.6.3"
         import-local "^3.0.2"
    -    jest-cli "^26.1.0"
    +    jest-cli "^29.6.4"
     
     "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
       version "4.0.0"
    @@ -5489,42 +5895,44 @@ js-yaml@^3.13.1, js-yaml@^3.6.1:
         argparse "^1.0.7"
         esprima "^4.0.0"
     
    -jsbn@~0.1.0:
    -  version "0.1.1"
    -  resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
    -  integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
    -
    -jsdom@^16.2.2:
    -  version "16.2.2"
    -  resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.2.2.tgz#76f2f7541646beb46a938f5dc476b88705bedf2b"
    -  integrity sha512-pDFQbcYtKBHxRaP55zGXCJWgFHkDAYbKcsXEK/3Icu9nKYZkutUXfLBwbD+09XDutkYSHcgfQLZ0qvpAAm9mvg==
    -  dependencies:
    -    abab "^2.0.3"
    -    acorn "^7.1.1"
    -    acorn-globals "^6.0.0"
    -    cssom "^0.4.4"
    -    cssstyle "^2.2.0"
    -    data-urls "^2.0.0"
    -    decimal.js "^10.2.0"
    -    domexception "^2.0.1"
    -    escodegen "^1.14.1"
    -    html-encoding-sniffer "^2.0.1"
    -    is-potential-custom-element-name "^1.0.0"
    -    nwsapi "^2.2.0"
    -    parse5 "5.1.1"
    -    request "^2.88.2"
    -    request-promise-native "^1.0.8"
    -    saxes "^5.0.0"
    +js-yaml@^4.1.0:
    +  version "4.1.0"
    +  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
    +  integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
    +  dependencies:
    +    argparse "^2.0.1"
    +
    +jsdom@^20.0.0:
    +  version "20.0.3"
    +  resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db"
    +  integrity sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==
    +  dependencies:
    +    abab "^2.0.6"
    +    acorn "^8.8.1"
    +    acorn-globals "^7.0.0"
    +    cssom "^0.5.0"
    +    cssstyle "^2.3.0"
    +    data-urls "^3.0.2"
    +    decimal.js "^10.4.2"
    +    domexception "^4.0.0"
    +    escodegen "^2.0.0"
    +    form-data "^4.0.0"
    +    html-encoding-sniffer "^3.0.0"
    +    http-proxy-agent "^5.0.0"
    +    https-proxy-agent "^5.0.1"
    +    is-potential-custom-element-name "^1.0.1"
    +    nwsapi "^2.2.2"
    +    parse5 "^7.1.1"
    +    saxes "^6.0.0"
         symbol-tree "^3.2.4"
    -    tough-cookie "^3.0.1"
    -    w3c-hr-time "^1.0.2"
    -    w3c-xmlserializer "^2.0.0"
    -    webidl-conversions "^6.0.0"
    -    whatwg-encoding "^1.0.5"
    -    whatwg-mimetype "^2.3.0"
    -    whatwg-url "^8.0.0"
    -    ws "^7.2.3"
    -    xml-name-validator "^3.0.0"
    +    tough-cookie "^4.1.2"
    +    w3c-xmlserializer "^4.0.0"
    +    webidl-conversions "^7.0.0"
    +    whatwg-encoding "^2.0.0"
    +    whatwg-mimetype "^3.0.0"
    +    whatwg-url "^11.0.0"
    +    ws "^8.11.0"
    +    xml-name-validator "^4.0.0"
     
     jsesc@^2.5.1:
       version "2.5.2"
    @@ -5536,62 +5944,52 @@ json-buffer@3.0.0:
       resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
       integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=
     
    -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
    +json-buffer@3.0.1:
    +  version "3.0.1"
    +  resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
    +  integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
    +
    +json-parse-better-errors@^1.0.1:
       version "1.0.2"
       resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
       integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
     
    +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1:
    +  version "2.3.1"
    +  resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
    +  integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
    +
     json-schema-traverse@^0.4.1:
       version "0.4.1"
       resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
       integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
     
    -json-schema@0.2.3:
    -  version "0.2.3"
    -  resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
    -  integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
    -
     json-stable-stringify-without-jsonify@^1.0.1:
       version "1.0.1"
       resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
       integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
     
    -json-stringify-safe@~5.0.1:
    -  version "5.0.1"
    -  resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
    -  integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
    -
    -json5@2.x, json5@^2.1.2:
    +json5@^2.1.2:
       version "2.1.3"
       resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43"
       integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==
       dependencies:
         minimist "^1.2.5"
     
    -json5@^1.0.1:
    -  version "1.0.1"
    -  resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
    -  integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
    -  dependencies:
    -    minimist "^1.2.0"
    -
    -jsprim@^1.2.2:
    -  version "1.4.1"
    -  resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
    -  integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
    -  dependencies:
    -    assert-plus "1.0.0"
    -    extsprintf "1.3.0"
    -    json-schema "0.2.3"
    -    verror "1.10.0"
    +json5@^2.2.3:
    +  version "2.2.3"
    +  resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
    +  integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
     
    -jsx-ast-utils@^2.2.3, jsx-ast-utils@^2.4.1:
    -  version "2.4.1"
    -  resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e"
    -  integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==
    +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3:
    +  version "3.3.5"
    +  resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a"
    +  integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==
       dependencies:
    -    array-includes "^3.1.1"
    -    object.assign "^4.1.0"
    +    array-includes "^3.1.6"
    +    array.prototype.flat "^1.3.1"
    +    object.assign "^4.1.4"
    +    object.values "^1.1.6"
     
     just-debounce@^1.0.0:
       version "1.0.0"
    @@ -5605,6 +6003,13 @@ keyv@^3.0.0:
       dependencies:
         json-buffer "3.0.0"
     
    +keyv@^4.5.3:
    +  version "4.5.3"
    +  resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25"
    +  integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==
    +  dependencies:
    +    json-buffer "3.0.1"
    +
     kind-of@^1.1.0:
       version "1.1.0"
       resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44"
    @@ -5644,10 +6049,10 @@ language-subtag-registry@~0.3.2:
       resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.20.tgz#a00a37121894f224f763268e431c55556b0c0755"
       integrity sha512-KPMwROklF4tEx283Xw0pNKtfTj1gZ4UByp4EsIFWLgBavJltF4TiYPc39k06zSTsLzxTVXXDSpbwaQXaFB4Qeg==
     
    -language-tags@^1.0.5:
    +language-tags@=1.0.5:
       version "1.0.5"
       resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a"
    -  integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=
    +  integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==
       dependencies:
         language-subtag-registry "~0.3.2"
     
    @@ -5700,14 +6105,6 @@ levn@^0.4.1:
         prelude-ls "^1.2.1"
         type-check "~0.4.0"
     
    -levn@~0.3.0:
    -  version "0.3.0"
    -  resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
    -  integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
    -  dependencies:
    -    prelude-ls "~1.1.2"
    -    type-check "~0.3.2"
    -
     liftoff@^3.1.0:
       version "3.1.0"
       resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3"
    @@ -5761,19 +6158,10 @@ load-plugin@^2.0.0:
         npm-prefix "^1.2.0"
         resolve-from "^5.0.0"
     
    -loader-runner@^2.4.0:
    -  version "2.4.0"
    -  resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
    -  integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
    -
    -loader-utils@^1.2.3:
    -  version "1.4.0"
    -  resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
    -  integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
    -  dependencies:
    -    big.js "^5.2.2"
    -    emojis-list "^3.0.0"
    -    json5 "^1.0.1"
    +loader-runner@^4.2.0:
    +  version "4.3.0"
    +  resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1"
    +  integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==
     
     locate-path@^2.0.0:
       version "2.0.0"
    @@ -5783,14 +6171,6 @@ locate-path@^2.0.0:
         p-locate "^2.0.0"
         path-exists "^3.0.0"
     
    -locate-path@^3.0.0:
    -  version "3.0.0"
    -  resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
    -  integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
    -  dependencies:
    -    p-locate "^3.0.0"
    -    path-exists "^3.0.0"
    -
     locate-path@^5.0.0:
       version "5.0.0"
       resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
    @@ -5798,6 +6178,13 @@ locate-path@^5.0.0:
       dependencies:
         p-locate "^4.1.0"
     
    +locate-path@^6.0.0:
    +  version "6.0.0"
    +  resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
    +  integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
    +  dependencies:
    +    p-locate "^5.0.0"
    +
     lodash._baseassign@^3.0.0:
       version "3.2.0"
       resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
    @@ -5928,6 +6315,11 @@ lodash.memoize@4.x:
       resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
       integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
     
    +lodash.merge@^4.6.2:
    +  version "4.6.2"
    +  resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
    +  integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
    +
     lodash.restparam@^3.0.0:
       version "3.6.1"
       resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
    @@ -5938,11 +6330,6 @@ lodash.some@^4.2.2:
       resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
       integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=
     
    -lodash.sortby@^4.7.0:
    -  version "4.7.0"
    -  resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
    -  integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
    -
     lodash.template@^3.0.0:
       version "3.6.2"
       resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f"
    @@ -5981,7 +6368,7 @@ lodash.templatesettings@^4.0.0:
       dependencies:
         lodash._reinterpolate "^3.0.0"
     
    -lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4:
    +lodash@^4.17.13, lodash@^4.17.4:
       version "4.17.15"
       resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
       integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
    @@ -6026,6 +6413,13 @@ lru-cache@^5.1.1:
       dependencies:
         yallist "^3.0.2"
     
    +lru-cache@^6.0.0:
    +  version "6.0.0"
    +  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
    +  integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
    +  dependencies:
    +    yallist "^4.0.0"
    +
     make-dir@^1.0.0:
       version "1.3.0"
       resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
    @@ -6033,14 +6427,6 @@ make-dir@^1.0.0:
       dependencies:
         pify "^3.0.0"
     
    -make-dir@^2.0.0:
    -  version "2.1.0"
    -  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
    -  integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
    -  dependencies:
    -    pify "^4.0.1"
    -    semver "^5.6.0"
    -
     make-dir@^3.0.0, make-dir@^3.0.2:
       version "3.1.0"
       resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
    @@ -6060,12 +6446,12 @@ make-iterator@^1.0.0:
       dependencies:
         kind-of "^6.0.2"
     
    -makeerror@1.0.x:
    -  version "1.0.11"
    -  resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
    -  integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=
    +makeerror@1.0.12:
    +  version "1.0.12"
    +  resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a"
    +  integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==
       dependencies:
    -    tmpl "1.0.x"
    +    tmpl "1.0.5"
     
     map-cache@^0.2.0, map-cache@^0.2.2:
       version "0.2.2"
    @@ -6114,15 +6500,6 @@ matchdep@^2.0.0:
         resolve "^1.4.0"
         stack-trace "0.0.10"
     
    -md5.js@^1.3.4:
    -  version "1.3.5"
    -  resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
    -  integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
    -  dependencies:
    -    hash-base "^3.0.0"
    -    inherits "^2.0.1"
    -    safe-buffer "^5.1.2"
    -
     mdast-comment-marker@^1.0.0:
       version "1.1.2"
       resolved "https://registry.yarnpkg.com/mdast-comment-marker/-/mdast-comment-marker-1.1.2.tgz#5ad2e42cfcc41b92a10c1421a98c288d7b447a6d"
    @@ -6143,14 +6520,6 @@ memoize-one@^5.1.1:
       resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0"
       integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA==
     
    -memory-fs@^0.4.1:
    -  version "0.4.1"
    -  resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
    -  integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
    -  dependencies:
    -    errno "^0.1.3"
    -    readable-stream "^2.0.1"
    -
     memory-fs@^0.5.0:
       version "0.5.0"
       resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c"
    @@ -6184,14 +6553,6 @@ merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1:
       resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
       integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
     
    -micromatch@4.x, micromatch@^4.0.2:
    -  version "4.0.2"
    -  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
    -  integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==
    -  dependencies:
    -    braces "^3.0.1"
    -    picomatch "^2.0.5"
    -
     micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4:
       version "3.1.10"
       resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
    @@ -6211,25 +6572,33 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4:
         snapdragon "^0.8.1"
         to-regex "^3.0.2"
     
    -miller-rabin@^4.0.0:
    -  version "4.0.1"
    -  resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
    -  integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
    +micromatch@^4.0.2:
    +  version "4.0.2"
    +  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
    +  integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==
    +  dependencies:
    +    braces "^3.0.1"
    +    picomatch "^2.0.5"
    +
    +micromatch@^4.0.4:
    +  version "4.0.5"
    +  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
    +  integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
       dependencies:
    -    bn.js "^4.0.0"
    -    brorand "^1.0.1"
    +    braces "^3.0.2"
    +    picomatch "^2.3.1"
     
    -mime-db@1.44.0:
    -  version "1.44.0"
    -  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
    -  integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==
    +mime-db@1.52.0:
    +  version "1.52.0"
    +  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
    +  integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
     
    -mime-types@^2.1.12, mime-types@~2.1.19:
    -  version "2.1.27"
    -  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
    -  integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==
    +mime-types@^2.1.12, mime-types@^2.1.27:
    +  version "2.1.35"
    +  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
    +  integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
       dependencies:
    -    mime-db "1.44.0"
    +    mime-db "1.52.0"
     
     mimic-fn@^2.1.0:
       version "2.1.0"
    @@ -6241,16 +6610,6 @@ mimic-response@^1.0.0, mimic-response@^1.0.1:
       resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
       integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
     
    -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
    -  version "1.0.1"
    -  resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
    -  integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
    -
    -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
    -  version "1.0.1"
    -  resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
    -  integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
    -
     "minimatch@2 || 3", minimatch@^3.0.3, minimatch@^3.0.4:
       version "3.0.4"
       resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
    @@ -6258,6 +6617,13 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
       dependencies:
         brace-expansion "^1.1.7"
     
    +minimatch@^3.0.5, minimatch@^3.1.2:
    +  version "3.1.2"
    +  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
    +  integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
    +  dependencies:
    +    brace-expansion "^1.1.7"
    +
     minimist-options@^3.0.1:
       version "3.0.2"
       resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954"
    @@ -6266,7 +6632,7 @@ minimist-options@^3.0.1:
         arrify "^1.0.1"
         is-plain-obj "^1.1.0"
     
    -minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5:
    +minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.5:
       version "1.2.5"
       resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
       integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
    @@ -6307,22 +6673,6 @@ minizlib@^2.1.0:
         minipass "^3.0.0"
         yallist "^4.0.0"
     
    -mississippi@^3.0.0:
    -  version "3.0.0"
    -  resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
    -  integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
    -  dependencies:
    -    concat-stream "^1.5.0"
    -    duplexify "^3.4.2"
    -    end-of-stream "^1.1.0"
    -    flush-write-stream "^1.0.0"
    -    from2 "^2.1.0"
    -    parallel-transform "^1.1.0"
    -    pump "^3.0.0"
    -    pumpify "^1.3.3"
    -    stream-each "^1.1.0"
    -    through2 "^2.0.0"
    -
     mixin-deep@^1.2.0:
       version "1.3.2"
       resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
    @@ -6331,36 +6681,17 @@ mixin-deep@^1.2.0:
         for-in "^1.0.2"
         is-extendable "^1.0.1"
     
    -mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4:
    +mkdirp@^1.0.3, mkdirp@^1.0.4:
       version "1.0.4"
       resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
       integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
     
    -mkdirp@^0.5.1, mkdirp@^0.5.3:
    -  version "0.5.5"
    -  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
    -  integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
    -  dependencies:
    -    minimist "^1.2.5"
    -
    -move-concurrently@^1.0.1:
    -  version "1.0.1"
    -  resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
    -  integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=
    -  dependencies:
    -    aproba "^1.1.1"
    -    copy-concurrently "^1.0.0"
    -    fs-write-stream-atomic "^1.0.8"
    -    mkdirp "^0.5.1"
    -    rimraf "^2.5.4"
    -    run-queue "^1.0.3"
    -
     ms@2.0.0:
       version "2.0.0"
       resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
       integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
     
    -ms@^2.1.1:
    +ms@2.1.2, ms@^2.1.1:
       version "2.1.2"
       resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
       integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
    @@ -6404,21 +6735,16 @@ natural-compare@^1.4.0:
       resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
       integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
     
    -neo-async@^2.5.0, neo-async@^2.6.1:
    -  version "2.6.1"
    -  resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
    -  integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
    +neo-async@^2.6.2:
    +  version "2.6.2"
    +  resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
    +  integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
     
     next-tick@~1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
       integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
     
    -nice-try@^1.0.4:
    -  version "1.0.5"
    -  resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
    -  integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
    -
     nlcst-is-literal@^1.1.0:
       version "1.2.1"
       resolved "https://registry.yarnpkg.com/nlcst-is-literal/-/nlcst-is-literal-1.2.1.tgz#878b68a43b5fd77b85e45b1b1737ae11a25f1be3"
    @@ -6460,53 +6786,12 @@ node-int64@^0.4.0:
       resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
       integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=
     
    -node-libs-browser@^2.2.1:
    -  version "2.2.1"
    -  resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425"
    -  integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==
    -  dependencies:
    -    assert "^1.1.1"
    -    browserify-zlib "^0.2.0"
    -    buffer "^4.3.0"
    -    console-browserify "^1.1.0"
    -    constants-browserify "^1.0.0"
    -    crypto-browserify "^3.11.0"
    -    domain-browser "^1.1.1"
    -    events "^3.0.0"
    -    https-browserify "^1.0.0"
    -    os-browserify "^0.3.0"
    -    path-browserify "0.0.1"
    -    process "^0.11.10"
    -    punycode "^1.2.4"
    -    querystring-es3 "^0.2.0"
    -    readable-stream "^2.3.3"
    -    stream-browserify "^2.0.1"
    -    stream-http "^2.7.2"
    -    string_decoder "^1.0.0"
    -    timers-browserify "^2.0.4"
    -    tty-browserify "0.0.0"
    -    url "^0.11.0"
    -    util "^0.11.0"
    -    vm-browserify "^1.0.1"
    -
    -node-modules-regexp@^1.0.0:
    -  version "1.0.0"
    -  resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
    -  integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
    -
    -node-notifier@^7.0.0:
    -  version "7.0.1"
    -  resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-7.0.1.tgz#a355e33e6bebacef9bf8562689aed0f4230ca6f9"
    -  integrity sha512-VkzhierE7DBmQEElhTGJIoiZa1oqRijOtgOlsXg32KrJRXsPy0NXFBqWGW/wTswnJlDCs5viRYaqWguqzsKcmg==
    -  dependencies:
    -    growly "^1.3.0"
    -    is-wsl "^2.1.1"
    -    semver "^7.2.1"
    -    shellwords "^0.1.1"
    -    uuid "^7.0.3"
    -    which "^2.0.2"
    +node-releases@^2.0.13:
    +  version "2.0.13"
    +  resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d"
    +  integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==
     
    -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0:
    +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
       version "2.5.0"
       resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
       integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
    @@ -6523,7 +6808,7 @@ normalize-path@^2.1.1:
       dependencies:
         remove-trailing-separator "^1.0.1"
     
    -normalize-path@^3.0.0, normalize-path@~3.0.0:
    +normalize-path@^3.0.0:
       version "3.0.0"
       resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
       integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
    @@ -6556,7 +6841,7 @@ npm-run-path@^2.0.0:
       dependencies:
         path-key "^2.0.0"
     
    -npm-run-path@^4.0.0:
    +npm-run-path@^4.0.1:
       version "4.0.1"
       resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
       integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
    @@ -6568,15 +6853,10 @@ number-is-nan@^1.0.0:
       resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
       integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
     
    -nwsapi@^2.2.0:
    -  version "2.2.0"
    -  resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
    -  integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==
    -
    -oauth-sign@~0.9.0:
    -  version "0.9.0"
    -  resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
    -  integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
    +nwsapi@^2.2.2:
    +  version "2.2.7"
    +  resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30"
    +  integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==
     
     object-assign@^3.0.0:
       version "3.0.0"
    @@ -6597,10 +6877,10 @@ object-copy@^0.1.0:
         define-property "^0.2.5"
         kind-of "^3.0.3"
     
    -object-inspect@^1.7.0:
    -  version "1.8.0"
    -  resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0"
    -  integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==
    +object-inspect@^1.12.3, object-inspect@^1.9.0:
    +  version "1.12.3"
    +  resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9"
    +  integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==
     
     object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.7, object-keys@^1.0.9, object-keys@^1.1.1:
       version "1.1.1"
    @@ -6629,6 +6909,16 @@ object.assign@^4.0.4, object.assign@^4.1.0:
         has-symbols "^1.0.0"
         object-keys "^1.0.11"
     
    +object.assign@^4.1.4:
    +  version "4.1.4"
    +  resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f"
    +  integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==
    +  dependencies:
    +    call-bind "^1.0.2"
    +    define-properties "^1.1.4"
    +    has-symbols "^1.0.3"
    +    object-keys "^1.1.1"
    +
     object.defaults@^1.0.0, object.defaults@^1.1.0:
       version "1.1.0"
       resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf"
    @@ -6639,24 +6929,31 @@ object.defaults@^1.0.0, object.defaults@^1.1.0:
         for-own "^1.0.0"
         isobject "^3.0.0"
     
    -object.entries@^1.1.1:
    -  version "1.1.2"
    -  resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add"
    -  integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==
    +object.entries@^1.1.6:
    +  version "1.1.7"
    +  resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131"
    +  integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==
       dependencies:
    -    define-properties "^1.1.3"
    -    es-abstract "^1.17.5"
    -    has "^1.0.3"
    +    call-bind "^1.0.2"
    +    define-properties "^1.2.0"
    +    es-abstract "^1.22.1"
     
    -object.fromentries@^2.0.2:
    -  version "2.0.2"
    -  resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9"
    -  integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==
    +object.fromentries@^2.0.6:
    +  version "2.0.7"
    +  resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616"
    +  integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==
       dependencies:
    -    define-properties "^1.1.3"
    -    es-abstract "^1.17.0-next.1"
    -    function-bind "^1.1.1"
    -    has "^1.0.3"
    +    call-bind "^1.0.2"
    +    define-properties "^1.2.0"
    +    es-abstract "^1.22.1"
    +
    +object.hasown@^1.1.2:
    +  version "1.1.3"
    +  resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae"
    +  integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==
    +  dependencies:
    +    define-properties "^1.2.0"
    +    es-abstract "^1.22.1"
     
     object.map@^1.0.0:
       version "1.0.1"
    @@ -6681,15 +6978,14 @@ object.reduce@^1.0.0:
         for-own "^1.0.0"
         make-iterator "^1.0.0"
     
    -object.values@^1.1.1:
    -  version "1.1.1"
    -  resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e"
    -  integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==
    +object.values@^1.1.6:
    +  version "1.1.7"
    +  resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a"
    +  integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==
       dependencies:
    -    define-properties "^1.1.3"
    -    es-abstract "^1.17.0-next.1"
    -    function-bind "^1.1.1"
    -    has "^1.0.3"
    +    call-bind "^1.0.2"
    +    define-properties "^1.2.0"
    +    es-abstract "^1.22.1"
     
     once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.3.3, once@^1.4.0:
       version "1.4.0"
    @@ -6698,36 +6994,24 @@ once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.3.3, once@^1.4.0:
       dependencies:
         wrappy "1"
     
    -onetime@^5.1.0:
    -  version "5.1.0"
    -  resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5"
    -  integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==
    +onetime@^5.1.2:
    +  version "5.1.2"
    +  resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
    +  integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
       dependencies:
         mimic-fn "^2.1.0"
     
    -optionator@^0.8.1:
    -  version "0.8.3"
    -  resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
    -  integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
    -  dependencies:
    -    deep-is "~0.1.3"
    -    fast-levenshtein "~2.0.6"
    -    levn "~0.3.0"
    -    prelude-ls "~1.1.2"
    -    type-check "~0.3.2"
    -    word-wrap "~1.2.3"
    -
    -optionator@^0.9.1:
    -  version "0.9.1"
    -  resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
    -  integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
    +optionator@^0.9.3:
    +  version "0.9.3"
    +  resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64"
    +  integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==
       dependencies:
    +    "@aashutoshrathi/word-wrap" "^1.2.3"
         deep-is "^0.1.3"
         fast-levenshtein "^2.0.6"
         levn "^0.4.1"
         prelude-ls "^1.2.1"
         type-check "^0.4.0"
    -    word-wrap "^1.2.3"
     
     ordered-read-streams@^1.0.0:
       version "1.0.1"
    @@ -6736,11 +7020,6 @@ ordered-read-streams@^1.0.0:
       dependencies:
         readable-stream "^2.0.1"
     
    -os-browserify@^0.3.0:
    -  version "0.3.0"
    -  resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
    -  integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
    -
     os-homedir@^1.0.0:
       version "1.0.2"
       resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
    @@ -6758,11 +7037,6 @@ p-cancelable@^1.0.0:
       resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
       integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==
     
    -p-each-series@^2.1.0:
    -  version "2.1.0"
    -  resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48"
    -  integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ==
    -
     p-finally@^1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
    @@ -6775,7 +7049,7 @@ p-limit@^1.1.0:
       dependencies:
         p-try "^1.0.0"
     
    -p-limit@^2.0.0, p-limit@^2.2.0:
    +p-limit@^2.2.0:
       version "2.3.0"
       resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
       integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
    @@ -6789,6 +7063,13 @@ p-limit@^3.0.1:
       dependencies:
         p-try "^2.0.0"
     
    +p-limit@^3.0.2, p-limit@^3.1.0:
    +  version "3.1.0"
    +  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
    +  integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
    +  dependencies:
    +    yocto-queue "^0.1.0"
    +
     p-locate@^2.0.0:
       version "2.0.0"
       resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
    @@ -6796,13 +7077,6 @@ p-locate@^2.0.0:
       dependencies:
         p-limit "^1.1.0"
     
    -p-locate@^3.0.0:
    -  version "3.0.0"
    -  resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
    -  integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
    -  dependencies:
    -    p-limit "^2.0.0"
    -
     p-locate@^4.1.0:
       version "4.1.0"
       resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
    @@ -6810,6 +7084,13 @@ p-locate@^4.1.0:
       dependencies:
         p-limit "^2.2.0"
     
    +p-locate@^5.0.0:
    +  version "5.0.0"
    +  resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
    +  integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
    +  dependencies:
    +    p-limit "^3.0.2"
    +
     p-map@^3.0.0:
       version "3.0.0"
       resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d"
    @@ -6844,20 +7125,6 @@ package-json@^6.3.0:
         registry-url "^5.0.0"
         semver "^6.2.0"
     
    -pako@~1.0.5:
    -  version "1.0.11"
    -  resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
    -  integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
    -
    -parallel-transform@^1.1.0:
    -  version "1.2.0"
    -  resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc"
    -  integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==
    -  dependencies:
    -    cyclist "^1.0.1"
    -    inherits "^2.0.3"
    -    readable-stream "^2.1.5"
    -
     parent-module@^1.0.0:
       version "1.0.1"
       resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
    @@ -6865,18 +7132,6 @@ parent-module@^1.0.0:
       dependencies:
         callsites "^3.0.0"
     
    -parse-asn1@^5.0.0, parse-asn1@^5.1.5:
    -  version "5.1.5"
    -  resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e"
    -  integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==
    -  dependencies:
    -    asn1.js "^4.0.0"
    -    browserify-aes "^1.0.0"
    -    create-hash "^1.1.0"
    -    evp_bytestokey "^1.0.0"
    -    pbkdf2 "^3.0.3"
    -    safe-buffer "^5.1.1"
    -
     parse-english@^4.0.0:
       version "4.1.3"
       resolved "https://registry.yarnpkg.com/parse-english/-/parse-english-4.1.3.tgz#692ec002e515b4b9b3e9e64ee1224b082667a20b"
    @@ -6930,14 +7185,14 @@ parse-json@^4.0.0:
         error-ex "^1.3.1"
         json-parse-better-errors "^1.0.1"
     
    -parse-json@^5.0.0:
    -  version "5.0.0"
    -  resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f"
    -  integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==
    +parse-json@^5.2.0:
    +  version "5.2.0"
    +  resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
    +  integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
       dependencies:
         "@babel/code-frame" "^7.0.0"
         error-ex "^1.3.1"
    -    json-parse-better-errors "^1.0.1"
    +    json-parse-even-better-errors "^2.3.0"
         lines-and-columns "^1.1.6"
     
     parse-latin@^4.0.0:
    @@ -6959,21 +7214,23 @@ parse-passwd@^1.0.0:
       resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
       integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
     
    -parse5@5.1.1, parse5@^5.0.0:
    +parse5@^5.0.0:
       version "5.1.1"
       resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178"
       integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==
     
    +parse5@^7.0.0, parse5@^7.1.1:
    +  version "7.1.2"
    +  resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32"
    +  integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==
    +  dependencies:
    +    entities "^4.4.0"
    +
     pascalcase@^0.1.1:
       version "0.1.1"
       resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
       integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
     
    -path-browserify@0.0.1:
    -  version "0.0.1"
    -  resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
    -  integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
    -
     path-dirname@^1.0.0:
       version "1.0.2"
       resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
    @@ -7006,7 +7263,7 @@ path-is-inside@^1.0.1:
       resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
       integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
     
    -path-key@^2.0.0, path-key@^2.0.1:
    +path-key@^2.0.0:
       version "2.0.1"
       resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
       integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
    @@ -7021,6 +7278,11 @@ path-parse@^1.0.6:
       resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
       integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
     
    +path-parse@^1.0.7:
    +  version "1.0.7"
    +  resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
    +  integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
    +
     path-root-regex@^0.1.0:
       version "0.1.2"
       resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d"
    @@ -7061,27 +7323,21 @@ pause-stream@0.0.11:
       dependencies:
         through "~2.3"
     
    -pbkdf2@^3.0.3:
    -  version "3.1.1"
    -  resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94"
    -  integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==
    -  dependencies:
    -    create-hash "^1.1.2"
    -    create-hmac "^1.1.4"
    -    ripemd160 "^2.0.1"
    -    safe-buffer "^5.0.1"
    -    sha.js "^2.4.8"
    -
    -performance-now@^2.1.0:
    -  version "2.1.0"
    -  resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
    -  integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
    +picocolors@^1.0.0:
    +  version "1.0.0"
    +  resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
    +  integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
     
     picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1:
       version "2.2.2"
       resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
       integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
     
    +picomatch@^2.2.3, picomatch@^2.3.1:
    +  version "2.3.1"
    +  resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
    +  integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
    +
     pify@^2.0.0:
       version "2.3.0"
       resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
    @@ -7092,11 +7348,6 @@ pify@^3.0.0:
       resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
       integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
     
    -pify@^4.0.1:
    -  version "4.0.1"
    -  resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
    -  integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
    -
     pinkie-promise@^2.0.0:
       version "2.0.1"
       resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
    @@ -7109,19 +7360,10 @@ pinkie@^2.0.0:
       resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
       integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
     
    -pirates@^4.0.1:
    -  version "4.0.1"
    -  resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87"
    -  integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==
    -  dependencies:
    -    node-modules-regexp "^1.0.0"
    -
    -pkg-dir@^3.0.0:
    -  version "3.0.0"
    -  resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
    -  integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
    -  dependencies:
    -    find-up "^3.0.0"
    +pirates@^4.0.4:
    +  version "4.0.6"
    +  resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9"
    +  integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
     
     pkg-dir@^4.1.0, pkg-dir@^4.2.0:
       version "4.2.0"
    @@ -7166,47 +7408,24 @@ prelude-ls@^1.2.1:
       resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
       integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
     
    -prelude-ls@~1.1.2:
    -  version "1.1.2"
    -  resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
    -  integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
    -
     prepend-http@^2.0.0:
       version "2.0.0"
       resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
       integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
     
    -prettier-linter-helpers@^1.0.0:
    -  version "1.0.0"
    -  resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
    -  integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
    -  dependencies:
    -    fast-diff "^1.1.2"
    -
     prettier@1.19.1:
       version "1.19.1"
       resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
       integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
     
    -pretty-format@^25.2.1, pretty-format@^25.5.0:
    -  version "25.5.0"
    -  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a"
    -  integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==
    -  dependencies:
    -    "@jest/types" "^25.5.0"
    -    ansi-regex "^5.0.0"
    -    ansi-styles "^4.0.0"
    -    react-is "^16.12.0"
    -
    -pretty-format@^26.1.0:
    -  version "26.1.0"
    -  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.1.0.tgz#272b9cd1f1a924ab5d443dc224899d7a65cb96ec"
    -  integrity sha512-GmeO1PEYdM+non4BKCj+XsPJjFOJIPnsLewqhDVoqY1xo0yNmDas7tC2XwpMrRAHR3MaE2hPo37deX5OisJ2Wg==
    +pretty-format@^29.0.0, pretty-format@^29.6.3:
    +  version "29.6.3"
    +  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.6.3.tgz#d432bb4f1ca6f9463410c3fb25a0ba88e594ace7"
    +  integrity sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==
       dependencies:
    -    "@jest/types" "^26.1.0"
    -    ansi-regex "^5.0.0"
    -    ansi-styles "^4.0.0"
    -    react-is "^16.12.0"
    +    "@jest/schemas" "^29.6.3"
    +    ansi-styles "^5.0.0"
    +    react-is "^18.0.0"
     
     pretty-hrtime@^1.0.0:
       version "1.0.3"
    @@ -7223,16 +7442,6 @@ process-nextick-args@~1.0.6:
       resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
       integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=
     
    -process@^0.11.10:
    -  version "0.11.10"
    -  resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
    -  integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
    -
    -progress@^2.0.0:
    -  version "2.0.3"
    -  resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
    -  integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
    -
     promise-inflight@^1.0.1:
       version "1.0.1"
       resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
    @@ -7253,7 +7462,7 @@ prompts@^2.0.1:
         kleur "^3.0.3"
         sisteransi "^1.0.4"
     
    -prop-types@^15.6.2, prop-types@^15.7.2:
    +prop-types@^15.6.2:
       version "15.7.2"
       resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
       integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
    @@ -7262,6 +7471,15 @@ prop-types@^15.6.2, prop-types@^15.7.2:
         object-assign "^4.1.1"
         react-is "^16.8.1"
     
    +prop-types@^15.8.1:
    +  version "15.8.1"
    +  resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
    +  integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
    +  dependencies:
    +    loose-envify "^1.4.0"
    +    object-assign "^4.1.1"
    +    react-is "^16.13.1"
    +
     property-information@^5.0.0:
       version "5.5.0"
       resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.5.0.tgz#4dc075d493061a82e2b7d096f406e076ed859943"
    @@ -7279,22 +7497,10 @@ pseudomap@^1.0.2:
       resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
       integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
     
    -psl@^1.1.28:
    -  version "1.8.0"
    -  resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
    -  integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
    -
    -public-encrypt@^4.0.0:
    -  version "4.0.3"
    -  resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
    -  integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
    -  dependencies:
    -    bn.js "^4.1.0"
    -    browserify-rsa "^4.0.0"
    -    create-hash "^1.1.0"
    -    parse-asn1 "^5.0.0"
    -    randombytes "^2.0.1"
    -    safe-buffer "^5.1.2"
    +psl@^1.1.33:
    +  version "1.9.0"
    +  resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7"
    +  integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==
     
     pump-chain@1.0.0:
       version "1.0.0"
    @@ -7329,7 +7535,7 @@ pump@^3.0.0:
         end-of-stream "^1.1.0"
         once "^1.3.1"
     
    -pumpify@^1.3.3, pumpify@^1.3.5:
    +pumpify@^1.3.5:
       version "1.5.1"
       resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
       integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
    @@ -7338,35 +7544,25 @@ pumpify@^1.3.3, pumpify@^1.3.5:
         inherits "^2.0.3"
         pump "^2.0.0"
     
    -punycode@1.3.2:
    -  version "1.3.2"
    -  resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
    -  integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
    -
    -punycode@^1.2.4:
    -  version "1.4.1"
    -  resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
    -  integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
    -
    -punycode@^2.1.0, punycode@^2.1.1:
    +punycode@^2.1.0:
       version "2.1.1"
       resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
       integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
     
    -qs@~6.5.2:
    -  version "6.5.2"
    -  resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
    -  integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
    +punycode@^2.1.1:
    +  version "2.3.0"
    +  resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f"
    +  integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
     
    -querystring-es3@^0.2.0:
    -  version "0.2.1"
    -  resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
    -  integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
    +pure-rand@^6.0.0:
    +  version "6.0.3"
    +  resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.3.tgz#3c9e6b53c09e52ac3cedffc85ab7c1c7094b38cb"
    +  integrity sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==
     
    -querystring@0.2.0:
    -  version "0.2.0"
    -  resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
    -  integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
    +querystringify@^2.1.1:
    +  version "2.2.0"
    +  resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6"
    +  integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
     
     quick-lru@^1.0.0:
       version "1.1.0"
    @@ -7378,21 +7574,13 @@ quotation@^1.0.0, quotation@^1.0.1:
       resolved "https://registry.yarnpkg.com/quotation/-/quotation-1.1.3.tgz#2a4d11f70105ad398b577883f310469367f53351"
       integrity sha512-45gUgmX/RtQOQV1kwM06boP49OYXcKCPrYwdmAvs5YqkpiobhNKKwo524JM6Ma0ko3oN9tXNcWs9+ABq3Ry7YA==
     
    -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
    +randombytes@^2.1.0:
       version "2.1.0"
       resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
       integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
       dependencies:
         safe-buffer "^5.1.0"
     
    -randomfill@^1.0.3:
    -  version "1.0.4"
    -  resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
    -  integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
    -  dependencies:
    -    randombytes "^2.0.5"
    -    safe-buffer "^5.1.0"
    -
     rc@^1.1.0, rc@^1.2.8:
       version "1.2.8"
       resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
    @@ -7413,11 +7601,16 @@ react-dom@^16.8.0:
         prop-types "^15.6.2"
         scheduler "^0.19.1"
     
    -react-is@^16.12.0, react-is@^16.8.1, react-is@^16.8.6:
    +react-is@^16.13.1, react-is@^16.8.1, react-is@^16.8.6:
       version "16.13.1"
       resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
       integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
     
    +react-is@^18.0.0:
    +  version "18.2.0"
    +  resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
    +  integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
    +
     react-test-renderer@^16.0.0:
       version "16.13.1"
       resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.13.1.tgz#de25ea358d9012606de51e012d9742e7f0deabc1"
    @@ -7453,15 +7646,6 @@ read-pkg-up@^3.0.0:
         find-up "^2.0.0"
         read-pkg "^3.0.0"
     
    -read-pkg-up@^7.0.1:
    -  version "7.0.1"
    -  resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507"
    -  integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==
    -  dependencies:
    -    find-up "^4.1.0"
    -    read-pkg "^5.2.0"
    -    type-fest "^0.8.1"
    -
     read-pkg@^1.0.0:
       version "1.1.0"
       resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
    @@ -7480,30 +7664,7 @@ read-pkg@^3.0.0:
         normalize-package-data "^2.3.2"
         path-type "^3.0.0"
     
    -read-pkg@^5.2.0:
    -  version "5.2.0"
    -  resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc"
    -  integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==
    -  dependencies:
    -    "@types/normalize-package-data" "^2.4.0"
    -    normalize-package-data "^2.5.0"
    -    parse-json "^5.0.0"
    -    type-fest "^0.6.0"
    -
    -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6:
    -  version "2.3.7"
    -  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
    -  integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
    -  dependencies:
    -    core-util-is "~1.0.0"
    -    inherits "~2.0.3"
    -    isarray "~1.0.0"
    -    process-nextick-args "~2.0.0"
    -    safe-buffer "~5.1.1"
    -    string_decoder "~1.1.1"
    -    util-deprecate "~1.0.1"
    -
    -"readable-stream@2 || 3", readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0:
    +"readable-stream@2 || 3", readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0:
       version "3.6.0"
       resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
       integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
    @@ -7522,6 +7683,19 @@ read-pkg@^5.2.0:
         isarray "0.0.1"
         string_decoder "~0.10.x"
     
    +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6:
    +  version "2.3.7"
    +  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
    +  integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
    +  dependencies:
    +    core-util-is "~1.0.0"
    +    inherits "~2.0.3"
    +    isarray "~1.0.0"
    +    process-nextick-args "~2.0.0"
    +    safe-buffer "~5.1.1"
    +    string_decoder "~1.1.1"
    +    util-deprecate "~1.0.1"
    +
     readable-stream@~1.0.17:
       version "1.0.34"
       resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
    @@ -7553,13 +7727,6 @@ readdirp@^2.2.1:
         micromatch "^3.1.10"
         readable-stream "^2.0.2"
     
    -readdirp@~3.4.0:
    -  version "3.4.0"
    -  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada"
    -  integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==
    -  dependencies:
    -    picomatch "^2.2.1"
    -
     rechoir@^0.6.2:
       version "0.6.2"
       resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
    @@ -7575,10 +7742,22 @@ redent@^2.0.0:
         indent-string "^3.0.0"
         strip-indent "^2.0.0"
     
    -regenerator-runtime@^0.13.4:
    -  version "0.13.5"
    -  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697"
    -  integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==
    +reflect.getprototypeof@^1.0.3:
    +  version "1.0.4"
    +  resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3"
    +  integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==
    +  dependencies:
    +    call-bind "^1.0.2"
    +    define-properties "^1.2.0"
    +    es-abstract "^1.22.1"
    +    get-intrinsic "^1.2.1"
    +    globalthis "^1.0.3"
    +    which-builtin-type "^1.1.3"
    +
    +regenerator-runtime@^0.14.0:
    +  version "0.14.0"
    +  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45"
    +  integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
     
     regex-not@^1.0.0, regex-not@^1.0.2:
       version "1.0.2"
    @@ -7588,18 +7767,14 @@ regex-not@^1.0.0, regex-not@^1.0.2:
         extend-shallow "^3.0.2"
         safe-regex "^1.1.0"
     
    -regexp.prototype.flags@^1.3.0:
    -  version "1.3.0"
    -  resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75"
    -  integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==
    +regexp.prototype.flags@^1.5.0:
    +  version "1.5.0"
    +  resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb"
    +  integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==
       dependencies:
    -    define-properties "^1.1.3"
    -    es-abstract "^1.17.0-next.1"
    -
    -regexpp@^3.0.0, regexpp@^3.1.0:
    -  version "3.1.0"
    -  resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
    -  integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
    +    call-bind "^1.0.2"
    +    define-properties "^1.2.0"
    +    functions-have-names "^1.2.3"
     
     registry-auth-token@^4.0.0:
       version "4.1.1"
    @@ -7732,48 +7907,6 @@ replace-homedir@^1.0.0:
         is-absolute "^1.0.0"
         remove-trailing-separator "^1.1.0"
     
    -request-promise-core@1.1.3:
    -  version "1.1.3"
    -  resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9"
    -  integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==
    -  dependencies:
    -    lodash "^4.17.15"
    -
    -request-promise-native@^1.0.8:
    -  version "1.0.8"
    -  resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36"
    -  integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==
    -  dependencies:
    -    request-promise-core "1.1.3"
    -    stealthy-require "^1.1.1"
    -    tough-cookie "^2.3.3"
    -
    -request@^2.88.2:
    -  version "2.88.2"
    -  resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
    -  integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
    -  dependencies:
    -    aws-sign2 "~0.7.0"
    -    aws4 "^1.8.0"
    -    caseless "~0.12.0"
    -    combined-stream "~1.0.6"
    -    extend "~3.0.2"
    -    forever-agent "~0.6.1"
    -    form-data "~2.3.2"
    -    har-validator "~5.1.3"
    -    http-signature "~1.2.0"
    -    is-typedarray "~1.0.0"
    -    isstream "~0.1.2"
    -    json-stringify-safe "~5.0.1"
    -    mime-types "~2.1.19"
    -    oauth-sign "~0.9.0"
    -    performance-now "^2.1.0"
    -    qs "~6.5.2"
    -    safe-buffer "^5.1.2"
    -    tough-cookie "~2.5.0"
    -    tunnel-agent "^0.6.0"
    -    uuid "^3.3.2"
    -
     require-directory@^2.1.1:
       version "2.1.1"
       resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
    @@ -7789,6 +7922,11 @@ require-main-filename@^2.0.0:
       resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
       integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
     
    +requires-port@^1.0.0:
    +  version "1.0.0"
    +  resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
    +  integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
    +
     resolve-cwd@^3.0.0:
       version "3.0.0"
       resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
    @@ -7826,13 +7964,36 @@ resolve-url@^0.2.1:
       resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
       integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
     
    -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.15.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.4.0:
    +resolve.exports@^2.0.0:
    +  version "2.0.2"
    +  resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800"
    +  integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==
    +
    +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.4.0:
       version "1.17.0"
       resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
       integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
       dependencies:
         path-parse "^1.0.6"
     
    +resolve@^1.20.0:
    +  version "1.22.4"
    +  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34"
    +  integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==
    +  dependencies:
    +    is-core-module "^2.13.0"
    +    path-parse "^1.0.7"
    +    supports-preserve-symlinks-flag "^1.0.0"
    +
    +resolve@^2.0.0-next.4:
    +  version "2.0.0-next.4"
    +  resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660"
    +  integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==
    +  dependencies:
    +    is-core-module "^2.9.0"
    +    path-parse "^1.0.7"
    +    supports-preserve-symlinks-flag "^1.0.0"
    +
     responselike@^1.0.2:
       version "1.0.2"
       resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
    @@ -7924,20 +8085,6 @@ rework@~1.0.0:
         convert-source-map "^0.3.3"
         css "^2.0.0"
     
    -rimraf@2.6.3:
    -  version "2.6.3"
    -  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
    -  integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
    -  dependencies:
    -    glob "^7.1.3"
    -
    -rimraf@^2.5.4, rimraf@^2.6.3:
    -  version "2.7.1"
    -  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
    -  integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
    -  dependencies:
    -    glob "^7.1.3"
    -
     rimraf@^3.0.0, rimraf@^3.0.2:
       version "3.0.2"
       resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
    @@ -7945,32 +8092,22 @@ rimraf@^3.0.0, rimraf@^3.0.2:
       dependencies:
         glob "^7.1.3"
     
    -ripemd160@^2.0.0, ripemd160@^2.0.1:
    -  version "2.0.2"
    -  resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
    -  integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
    -  dependencies:
    -    hash-base "^3.0.0"
    -    inherits "^2.0.1"
    -
    -rsvp@^4.8.4:
    -  version "4.8.5"
    -  resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
    -  integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
    -
     run-parallel@^1.1.9:
       version "1.1.9"
       resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679"
       integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==
     
    -run-queue@^1.0.0, run-queue@^1.0.3:
    -  version "1.0.3"
    -  resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
    -  integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=
    +safe-array-concat@^1.0.0:
    +  version "1.0.1"
    +  resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c"
    +  integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==
       dependencies:
    -    aproba "^1.1.1"
    +    call-bind "^1.0.2"
    +    get-intrinsic "^1.2.1"
    +    has-symbols "^1.0.3"
    +    isarray "^2.0.5"
     
    -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
    +safe-buffer@^5.1.0, safe-buffer@~5.2.0:
       version "5.2.1"
       resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
       integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
    @@ -7980,6 +8117,15 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1:
       resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
       integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
     
    +safe-regex-test@^1.0.0:
    +  version "1.0.0"
    +  resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295"
    +  integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==
    +  dependencies:
    +    call-bind "^1.0.2"
    +    get-intrinsic "^1.1.3"
    +    is-regex "^1.1.4"
    +
     safe-regex@^1.1.0:
       version "1.1.0"
       resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
    @@ -7987,30 +8133,15 @@ safe-regex@^1.1.0:
       dependencies:
         ret "~0.1.10"
     
    -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
    +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
       version "2.1.2"
       resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
       integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
     
    -sane@^4.0.3:
    -  version "4.1.0"
    -  resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded"
    -  integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==
    -  dependencies:
    -    "@cnakazawa/watch" "^1.0.3"
    -    anymatch "^2.0.0"
    -    capture-exit "^2.0.0"
    -    exec-sh "^0.3.2"
    -    execa "^1.0.0"
    -    fb-watchman "^2.0.0"
    -    micromatch "^3.1.4"
    -    minimist "^1.1.1"
    -    walker "~1.0.5"
    -
    -saxes@^5.0.0:
    -  version "5.0.1"
    -  resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d"
    -  integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==
    +saxes@^6.0.0:
    +  version "6.0.0"
    +  resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5"
    +  integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==
       dependencies:
         xmlchars "^2.2.0"
     
    @@ -8022,15 +8153,6 @@ scheduler@^0.19.1:
         loose-envify "^1.1.0"
         object-assign "^4.1.1"
     
    -schema-utils@^1.0.0:
    -  version "1.0.0"
    -  resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
    -  integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
    -  dependencies:
    -    ajv "^6.1.0"
    -    ajv-errors "^1.0.0"
    -    ajv-keywords "^3.1.0"
    -
     schema-utils@^2.6.6:
       version "2.7.0"
       resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7"
    @@ -8040,6 +8162,15 @@ schema-utils@^2.6.6:
         ajv "^6.12.2"
         ajv-keywords "^3.4.1"
     
    +schema-utils@^3.1.1, schema-utils@^3.2.0:
    +  version "3.3.0"
    +  resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe"
    +  integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
    +  dependencies:
    +    "@types/json-schema" "^7.0.8"
    +    ajv "^6.12.5"
    +    ajv-keywords "^3.5.2"
    +
     semver-diff@^2.0.0:
       version "2.1.0"
       resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
    @@ -8054,27 +8185,27 @@ semver-greatest-satisfied-range@^1.1.0:
       dependencies:
         sver-compat "^1.5.0"
     
    -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0:
    +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.4.1:
       version "5.7.1"
       resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
       integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
     
    -semver@7.x, semver@^7.2.1, semver@^7.3.2:
    -  version "7.3.2"
    -  resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
    -  integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
    -
     semver@^6.0.0, semver@^6.2.0, semver@^6.3.0:
       version "6.3.0"
       resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
       integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
     
    -serialize-javascript@^3.1.0:
    -  version "3.1.0"
    -  resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea"
    -  integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==
    +semver@^6.3.1:
    +  version "6.3.1"
    +  resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
    +  integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
    +
    +semver@^7.5.3, semver@^7.5.4:
    +  version "7.5.4"
    +  resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
    +  integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
       dependencies:
    -    randombytes "^2.1.0"
    +    lru-cache "^6.0.0"
     
     serialize-javascript@^4.0.0:
       version "4.0.0"
    @@ -8083,6 +8214,13 @@ serialize-javascript@^4.0.0:
       dependencies:
         randombytes "^2.1.0"
     
    +serialize-javascript@^6.0.1:
    +  version "6.0.1"
    +  resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c"
    +  integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==
    +  dependencies:
    +    randombytes "^2.1.0"
    +
     set-blocking@^2.0.0:
       version "2.0.0"
       resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
    @@ -8098,19 +8236,11 @@ set-value@^2.0.0, set-value@^2.0.1:
         is-plain-object "^2.0.3"
         split-string "^3.0.1"
     
    -setimmediate@^1.0.4, setimmediate@^1.0.5:
    +setimmediate@^1.0.5:
       version "1.0.5"
       resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
       integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
     
    -sha.js@^2.4.0, sha.js@^2.4.8:
    -  version "2.4.11"
    -  resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
    -  integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
    -  dependencies:
    -    inherits "^2.0.1"
    -    safe-buffer "^5.0.1"
    -
     shebang-command@^1.2.0:
       version "1.2.0"
       resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
    @@ -8140,24 +8270,25 @@ shellsubstitute@^1.1.0:
       resolved "https://registry.yarnpkg.com/shellsubstitute/-/shellsubstitute-1.2.0.tgz#e4f702a50c518b0f6fe98451890d705af29b6b70"
       integrity sha1-5PcCpQxRiw9v6YRRiQ1wWvKba3A=
     
    -shellwords@^0.1.1:
    -  version "0.1.1"
    -  resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
    -  integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
    -
    -side-channel@^1.0.2:
    -  version "1.0.2"
    -  resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947"
    -  integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==
    +side-channel@^1.0.4:
    +  version "1.0.4"
    +  resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
    +  integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
       dependencies:
    -    es-abstract "^1.17.0-next.1"
    -    object-inspect "^1.7.0"
    +    call-bind "^1.0.0"
    +    get-intrinsic "^1.0.2"
    +    object-inspect "^1.9.0"
     
     signal-exit@^3.0.0, signal-exit@^3.0.2:
       version "3.0.3"
       resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
       integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
     
    +signal-exit@^3.0.3, signal-exit@^3.0.7:
    +  version "3.0.7"
    +  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
    +  integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
    +
     sisteransi@^1.0.4:
       version "1.0.5"
       resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
    @@ -8168,15 +8299,6 @@ slash@^3.0.0:
       resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
       integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
     
    -slice-ansi@^2.1.0:
    -  version "2.1.0"
    -  resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
    -  integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
    -  dependencies:
    -    ansi-styles "^3.2.0"
    -    astral-regex "^1.0.0"
    -    is-fullwidth-code-point "^2.0.0"
    -
     sliced@^1.0.1:
       version "1.0.1"
       resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41"
    @@ -8228,7 +8350,15 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2:
         source-map-url "^0.4.0"
         urix "^0.1.0"
     
    -source-map-support@^0.5.6, source-map-support@~0.5.12:
    +source-map-support@0.5.13:
    +  version "0.5.13"
    +  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
    +  integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
    +  dependencies:
    +    buffer-from "^1.0.0"
    +    source-map "^0.6.0"
    +
    +source-map-support@~0.5.12:
       version "0.5.19"
       resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
       integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
    @@ -8236,6 +8366,14 @@ source-map-support@^0.5.6, source-map-support@~0.5.12:
         buffer-from "^1.0.0"
         source-map "^0.6.0"
     
    +source-map-support@~0.5.20:
    +  version "0.5.21"
    +  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
    +  integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
    +  dependencies:
    +    buffer-from "^1.0.0"
    +    source-map "^0.6.0"
    +
     source-map-url@^0.4.0:
       version "0.4.0"
       resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
    @@ -8328,28 +8466,6 @@ sprintf-js@~1.0.2:
       resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
       integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
     
    -sshpk@^1.7.0:
    -  version "1.16.1"
    -  resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
    -  integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
    -  dependencies:
    -    asn1 "~0.2.3"
    -    assert-plus "^1.0.0"
    -    bcrypt-pbkdf "^1.0.0"
    -    dashdash "^1.12.0"
    -    ecc-jsbn "~0.1.1"
    -    getpass "^0.1.1"
    -    jsbn "~0.1.0"
    -    safer-buffer "^2.0.2"
    -    tweetnacl "~0.14.0"
    -
    -ssri@^6.0.1:
    -  version "6.0.1"
    -  resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8"
    -  integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==
    -  dependencies:
    -    figgy-pudding "^3.5.1"
    -
     ssri@^8.0.0:
       version "8.0.0"
       resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808"
    @@ -8362,10 +8478,10 @@ stack-trace@0.0.10:
       resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
       integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=
     
    -stack-utils@^2.0.2:
    -  version "2.0.2"
    -  resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593"
    -  integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg==
    +stack-utils@^2.0.3:
    +  version "2.0.6"
    +  resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f"
    +  integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==
       dependencies:
         escape-string-regexp "^2.0.0"
     
    @@ -8382,26 +8498,13 @@ static-extend@^0.1.1:
         define-property "^0.2.5"
         object-copy "^0.1.0"
     
    -stats-webpack-plugin@^0.6.2:
    -  version "0.6.2"
    -  resolved "https://registry.yarnpkg.com/stats-webpack-plugin/-/stats-webpack-plugin-0.6.2.tgz#2c5949b531e07f87a88e6ea4dcfac53aa8c75a2b"
    -  integrity sha1-LFlJtTHgf4eojm6k3PrFOqjHWis=
    +stats-webpack-plugin@^0.7.0:
    +  version "0.7.0"
    +  resolved "https://registry.yarnpkg.com/stats-webpack-plugin/-/stats-webpack-plugin-0.7.0.tgz#ccffe9b745de8bbb155571e063f8263fc0e2bc06"
    +  integrity sha512-NT0YGhwuQ0EOX+uPhhUcI6/+1Sq/pMzNuSCBVT4GbFl/ac6I/JZefBcjlECNfAb1t3GOx5dEj1Z7x0cAxeeVLQ==
       dependencies:
         lodash "^4.17.4"
     
    -stealthy-require@^1.1.1:
    -  version "1.1.1"
    -  resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
    -  integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
    -
    -stream-browserify@^2.0.1:
    -  version "2.0.2"
    -  resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
    -  integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
    -  dependencies:
    -    inherits "~2.0.1"
    -    readable-stream "^2.0.2"
    -
     stream-combiner@~0.0.4:
       version "0.0.4"
       resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14"
    @@ -8409,30 +8512,11 @@ stream-combiner@~0.0.4:
       dependencies:
         duplexer "~0.1.1"
     
    -stream-each@^1.1.0:
    -  version "1.2.3"
    -  resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
    -  integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
    -  dependencies:
    -    end-of-stream "^1.1.0"
    -    stream-shift "^1.0.0"
    -
     stream-exhaust@^1.0.1:
       version "1.0.2"
       resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d"
       integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==
     
    -stream-http@^2.7.2:
    -  version "2.8.3"
    -  resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
    -  integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
    -  dependencies:
    -    builtin-status-codes "^3.0.0"
    -    inherits "^2.0.1"
    -    readable-stream "^2.3.6"
    -    to-arraybuffer "^1.0.0"
    -    xtend "^4.0.0"
    -
     stream-shift@^1.0.0:
       version "1.0.1"
       resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
    @@ -8481,35 +8565,57 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0:
         is-fullwidth-code-point "^3.0.0"
         strip-ansi "^6.0.0"
     
    -string.prototype.matchall@^4.0.2:
    -  version "4.0.2"
    -  resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e"
    -  integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==
    +string-width@^4.2.3:
    +  version "4.2.3"
    +  resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
    +  integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
       dependencies:
    -    define-properties "^1.1.3"
    -    es-abstract "^1.17.0"
    -    has-symbols "^1.0.1"
    -    internal-slot "^1.0.2"
    -    regexp.prototype.flags "^1.3.0"
    -    side-channel "^1.0.2"
    +    emoji-regex "^8.0.0"
    +    is-fullwidth-code-point "^3.0.0"
    +    strip-ansi "^6.0.1"
    +
    +string.prototype.matchall@^4.0.8:
    +  version "4.0.9"
    +  resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.9.tgz#148779de0f75d36b13b15885fec5cadde994520d"
    +  integrity sha512-6i5hL3MqG/K2G43mWXWgP+qizFW/QH/7kCNN13JrJS5q48FN5IKksLDscexKP3dnmB6cdm9jlNgAsWNLpSykmA==
    +  dependencies:
    +    call-bind "^1.0.2"
    +    define-properties "^1.2.0"
    +    es-abstract "^1.22.1"
    +    get-intrinsic "^1.2.1"
    +    has-symbols "^1.0.3"
    +    internal-slot "^1.0.5"
    +    regexp.prototype.flags "^1.5.0"
    +    side-channel "^1.0.4"
    +
    +string.prototype.trim@^1.2.7:
    +  version "1.2.8"
    +  resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd"
    +  integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==
    +  dependencies:
    +    call-bind "^1.0.2"
    +    define-properties "^1.2.0"
    +    es-abstract "^1.22.1"
     
    -string.prototype.trimend@^1.0.1:
    -  version "1.0.1"
    -  resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913"
    -  integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==
    +string.prototype.trimend@^1.0.6:
    +  version "1.0.7"
    +  resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e"
    +  integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==
       dependencies:
    -    define-properties "^1.1.3"
    -    es-abstract "^1.17.5"
    +    call-bind "^1.0.2"
    +    define-properties "^1.2.0"
    +    es-abstract "^1.22.1"
     
    -string.prototype.trimstart@^1.0.1:
    -  version "1.0.1"
    -  resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54"
    -  integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==
    +string.prototype.trimstart@^1.0.6:
    +  version "1.0.7"
    +  resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298"
    +  integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==
       dependencies:
    -    define-properties "^1.1.3"
    -    es-abstract "^1.17.5"
    +    call-bind "^1.0.2"
    +    define-properties "^1.2.0"
    +    es-abstract "^1.22.1"
     
    -string_decoder@^1.0.0, string_decoder@^1.1.1:
    +string_decoder@^1.1.1:
       version "1.3.0"
       resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
       integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
    @@ -8556,6 +8662,13 @@ strip-ansi@^6.0.0:
       dependencies:
         ansi-regex "^5.0.0"
     
    +strip-ansi@^6.0.1:
    +  version "6.0.1"
    +  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
    +  integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
    +  dependencies:
    +    ansi-regex "^5.0.1"
    +
     strip-bom@^2.0.0:
       version "2.0.0"
       resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
    @@ -8588,10 +8701,10 @@ strip-indent@^2.0.0:
       resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
       integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=
     
    -strip-json-comments@^3.1.0:
    -  version "3.1.0"
    -  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180"
    -  integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==
    +strip-json-comments@^3.1.1:
    +  version "3.1.1"
    +  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
    +  integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
     
     strip-json-comments@~2.0.1:
       version "2.0.1"
    @@ -8603,7 +8716,7 @@ supports-color@^2.0.0:
       resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
       integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
     
    -supports-color@^5.3.0, supports-color@^5.5.0:
    +supports-color@^5.3.0:
       version "5.5.0"
       resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
       integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
    @@ -8624,13 +8737,17 @@ supports-color@^7.0.0, supports-color@^7.1.0:
       dependencies:
         has-flag "^4.0.0"
     
    -supports-hyperlinks@^2.0.0:
    -  version "2.1.0"
    -  resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47"
    -  integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==
    +supports-color@^8.0.0, supports-color@^8.1.1:
    +  version "8.1.1"
    +  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
    +  integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
       dependencies:
         has-flag "^4.0.0"
    -    supports-color "^7.0.0"
    +
    +supports-preserve-symlinks-flag@^1.0.0:
    +  version "1.0.0"
    +  resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
    +  integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
     
     sver-compat@^1.5.0:
       version "1.5.0"
    @@ -8645,20 +8762,10 @@ symbol-tree@^3.2.4:
       resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
       integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
     
    -table@^5.2.3:
    -  version "5.4.6"
    -  resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e"
    -  integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==
    -  dependencies:
    -    ajv "^6.10.2"
    -    lodash "^4.17.14"
    -    slice-ansi "^2.1.0"
    -    string-width "^3.0.0"
    -
    -tapable@^1.0.0, tapable@^1.1.3:
    -  version "1.1.3"
    -  resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
    -  integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
    +tapable@^2.1.1, tapable@^2.2.0:
    +  version "2.2.1"
    +  resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
    +  integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
     
     tar@^6.0.2:
       version "6.0.2"
    @@ -8679,14 +8786,6 @@ term-size@^1.2.0:
       dependencies:
         execa "^0.7.0"
     
    -terminal-link@^2.0.0:
    -  version "2.1.1"
    -  resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994"
    -  integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==
    -  dependencies:
    -    ansi-escapes "^4.2.1"
    -    supports-hyperlinks "^2.0.0"
    -
     ternary-stream@^3.0.0:
       version "3.0.0"
       resolved "https://registry.yarnpkg.com/ternary-stream/-/ternary-stream-3.0.0.tgz#7951930ea9e823924d956f03d516151a2d516253"
    @@ -8697,21 +8796,6 @@ ternary-stream@^3.0.0:
         merge-stream "^2.0.0"
         through2 "^3.0.1"
     
    -terser-webpack-plugin@^1.4.3:
    -  version "1.4.4"
    -  resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz#2c63544347324baafa9a56baaddf1634c8abfc2f"
    -  integrity sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==
    -  dependencies:
    -    cacache "^12.0.2"
    -    find-cache-dir "^2.1.0"
    -    is-wsl "^1.1.0"
    -    schema-utils "^1.0.0"
    -    serialize-javascript "^3.1.0"
    -    source-map "^0.6.1"
    -    terser "^4.1.2"
    -    webpack-sources "^1.4.0"
    -    worker-farm "^1.7.0"
    -
     terser-webpack-plugin@^3.0.5:
       version "3.0.6"
       resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-3.0.6.tgz#db0a108bbdd3680d72c9b491fbabad09ba207b99"
    @@ -8727,7 +8811,18 @@ terser-webpack-plugin@^3.0.5:
         terser "^4.8.0"
         webpack-sources "^1.4.3"
     
    -terser@^4.1.2, terser@^4.8.0:
    +terser-webpack-plugin@^5.3.7:
    +  version "5.3.9"
    +  resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1"
    +  integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==
    +  dependencies:
    +    "@jridgewell/trace-mapping" "^0.3.17"
    +    jest-worker "^27.4.5"
    +    schema-utils "^3.1.1"
    +    serialize-javascript "^6.0.1"
    +    terser "^5.16.8"
    +
    +terser@^4.8.0:
       version "4.8.0"
       resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17"
       integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==
    @@ -8736,6 +8831,16 @@ terser@^4.1.2, terser@^4.8.0:
         source-map "~0.6.1"
         source-map-support "~0.5.12"
     
    +terser@^5.16.8:
    +  version "5.19.4"
    +  resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.4.tgz#941426fa482bf9b40a0308ab2b3cd0cf7c775ebd"
    +  integrity sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==
    +  dependencies:
    +    "@jridgewell/source-map" "^0.3.3"
    +    acorn "^8.8.2"
    +    commander "^2.20.0"
    +    source-map-support "~0.5.20"
    +
     test-exclude@^6.0.0:
       version "6.0.0"
       resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"
    @@ -8750,11 +8855,6 @@ text-table@^0.2.0:
       resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
       integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
     
    -throat@^5.0.0:
    -  version "5.0.0"
    -  resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b"
    -  integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==
    -
     through2-filter@^3.0.0:
       version "3.0.0"
       resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254"
    @@ -8820,17 +8920,10 @@ time-stamp@^1.0.0:
       resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3"
       integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=
     
    -timers-browserify@^2.0.4:
    -  version "2.0.11"
    -  resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f"
    -  integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==
    -  dependencies:
    -    setimmediate "^1.0.4"
    -
    -tmpl@1.0.x:
    -  version "1.0.4"
    -  resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
    -  integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=
    +tmpl@1.0.5:
    +  version "1.0.5"
    +  resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
    +  integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==
     
     to-absolute-glob@^2.0.0:
       version "2.0.2"
    @@ -8840,11 +8933,6 @@ to-absolute-glob@^2.0.0:
         is-absolute "^1.0.0"
         is-negated-glob "^1.0.0"
     
    -to-arraybuffer@^1.0.0:
    -  version "1.0.1"
    -  resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
    -  integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
    -
     to-fast-properties@^2.0.0:
       version "2.0.0"
       resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
    @@ -8902,27 +8990,20 @@ to-vfile@^6.0.0:
         is-buffer "^2.0.0"
         vfile "^4.0.0"
     
    -tough-cookie@^2.3.3, tough-cookie@~2.5.0:
    -  version "2.5.0"
    -  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
    -  integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
    -  dependencies:
    -    psl "^1.1.28"
    -    punycode "^2.1.1"
    -
    -tough-cookie@^3.0.1:
    -  version "3.0.1"
    -  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2"
    -  integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==
    +tough-cookie@^4.1.2:
    +  version "4.1.3"
    +  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf"
    +  integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==
       dependencies:
    -    ip-regex "^2.1.0"
    -    psl "^1.1.28"
    +    psl "^1.1.33"
         punycode "^2.1.1"
    +    universalify "^0.2.0"
    +    url-parse "^1.5.3"
     
    -tr46@^2.0.2:
    -  version "2.0.2"
    -  resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479"
    -  integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==
    +tr46@^3.0.0:
    +  version "3.0.0"
    +  resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9"
    +  integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==
       dependencies:
         punycode "^2.1.1"
     
    @@ -8946,50 +9027,24 @@ trough@^1.0.0:
       resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406"
       integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==
     
    -ts-jest@^26.1.0:
    -  version "26.1.1"
    -  resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.1.1.tgz#b98569b8a4d4025d966b3d40c81986dd1c510f8d"
    -  integrity sha512-Lk/357quLg5jJFyBQLnSbhycnB3FPe+e9i7ahxokyXxAYoB0q1pPmqxxRPYr4smJic1Rjcf7MXDBhZWgxlli0A==
    +ts-api-utils@^1.0.1:
    +  version "1.0.3"
    +  resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331"
    +  integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==
    +
    +ts-jest@^29.1.1:
    +  version "29.1.1"
    +  resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.1.tgz#f58fe62c63caf7bfcc5cc6472082f79180f0815b"
    +  integrity sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==
       dependencies:
         bs-logger "0.x"
    -    buffer-from "1.x"
         fast-json-stable-stringify "2.x"
    -    json5 "2.x"
    +    jest-util "^29.0.0"
    +    json5 "^2.2.3"
         lodash.memoize "4.x"
         make-error "1.x"
    -    micromatch "4.x"
    -    mkdirp "1.x"
    -    semver "7.x"
    -    yargs-parser "18.x"
    -
    -tslib@^1.8.1, tslib@^1.9.0:
    -  version "1.13.0"
    -  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
    -  integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==
    -
    -tsutils@^3.17.1:
    -  version "3.17.1"
    -  resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759"
    -  integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==
    -  dependencies:
    -    tslib "^1.8.1"
    -
    -tty-browserify@0.0.0:
    -  version "0.0.0"
    -  resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
    -  integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
    -
    -tunnel-agent@^0.6.0:
    -  version "0.6.0"
    -  resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
    -  integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
    -  dependencies:
    -    safe-buffer "^5.0.1"
    -
    -tweetnacl@^0.14.3, tweetnacl@~0.14.0:
    -  version "0.14.5"
    -  resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
    -  integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
    +    semver "^7.5.3"
    +    yargs-parser "^21.0.1"
     
     type-check@^0.4.0, type-check@~0.4.0:
       version "0.4.0"
    @@ -8998,13 +9053,6 @@ type-check@^0.4.0, type-check@~0.4.0:
       dependencies:
         prelude-ls "^1.2.1"
     
    -type-check@~0.3.2:
    -  version "0.3.2"
    -  resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
    -  integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
    -  dependencies:
    -    prelude-ls "~1.1.2"
    -
     type-detect@4.0.8:
       version "4.0.8"
       resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
    @@ -9015,21 +9063,16 @@ type-fest@^0.11.0:
       resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1"
       integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==
     
    +type-fest@^0.20.2:
    +  version "0.20.2"
    +  resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
    +  integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
    +
     type-fest@^0.3.0:
       version "0.3.1"
       resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1"
       integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==
     
    -type-fest@^0.6.0:
    -  version "0.6.0"
    -  resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
    -  integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==
    -
    -type-fest@^0.8.1:
    -  version "0.8.1"
    -  resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
    -  integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
    -
     type@^1.0.1:
       version "1.2.0"
       resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
    @@ -9040,28 +9083,70 @@ type@^2.0.0:
       resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3"
       integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==
     
    -typedarray-to-buffer@^3.1.5:
    -  version "3.1.5"
    -  resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
    -  integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
    +typed-array-buffer@^1.0.0:
    +  version "1.0.0"
    +  resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60"
    +  integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==
    +  dependencies:
    +    call-bind "^1.0.2"
    +    get-intrinsic "^1.2.1"
    +    is-typed-array "^1.1.10"
    +
    +typed-array-byte-length@^1.0.0:
    +  version "1.0.0"
    +  resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0"
    +  integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==
    +  dependencies:
    +    call-bind "^1.0.2"
    +    for-each "^0.3.3"
    +    has-proto "^1.0.1"
    +    is-typed-array "^1.1.10"
    +
    +typed-array-byte-offset@^1.0.0:
    +  version "1.0.0"
    +  resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b"
    +  integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==
    +  dependencies:
    +    available-typed-arrays "^1.0.5"
    +    call-bind "^1.0.2"
    +    for-each "^0.3.3"
    +    has-proto "^1.0.1"
    +    is-typed-array "^1.1.10"
    +
    +typed-array-length@^1.0.4:
    +  version "1.0.4"
    +  resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb"
    +  integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==
       dependencies:
    -    is-typedarray "^1.0.0"
    +    call-bind "^1.0.2"
    +    for-each "^0.3.3"
    +    is-typed-array "^1.1.9"
     
     typedarray@^0.0.6:
       version "0.0.6"
       resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
       integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
     
    -typescript@^3.9.5:
    -  version "3.9.5"
    -  resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.5.tgz#586f0dba300cde8be52dd1ac4f7e1009c1b13f36"
    -  integrity sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==
    +typescript@^5.2.2:
    +  version "5.2.2"
    +  resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78"
    +  integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==
     
     ua-parser-js@^0.7.18:
       version "0.7.21"
       resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777"
       integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==
     
    +unbox-primitive@^1.0.2:
    +  version "1.0.2"
    +  resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"
    +  integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==
    +  dependencies:
    +    call-bind "^1.0.2"
    +    has-bigints "^1.0.2"
    +    has-symbols "^1.0.3"
    +    which-boxed-primitive "^1.0.2"
    +
     unc-path-regex@^0.1.2:
       version "0.1.2"
       resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
    @@ -9266,6 +9351,11 @@ unist-util-visit@^2.0.0:
         unist-util-is "^4.0.0"
         unist-util-visit-parents "^3.0.0"
     
    +universalify@^0.2.0:
    +  version "0.2.0"
    +  resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0"
    +  integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==
    +
     unset-value@^1.0.0:
       version "1.0.0"
       resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
    @@ -9286,6 +9376,14 @@ upath@^1.1.1:
       resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
       integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
     
    +update-browserslist-db@^1.0.11:
    +  version "1.0.11"
    +  resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940"
    +  integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==
    +  dependencies:
    +    escalade "^3.1.1"
    +    picocolors "^1.0.0"
    +
     update-notifier@^3.0.0:
       version "3.0.1"
       resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-3.0.1.tgz#78ecb68b915e2fd1be9f767f6e298ce87b736250"
    @@ -9323,6 +9421,14 @@ url-parse-lax@^3.0.0:
       dependencies:
         prepend-http "^2.0.0"
     
    +url-parse@^1.5.3:
    +  version "1.5.10"
    +  resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1"
    +  integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==
    +  dependencies:
    +    querystringify "^2.1.1"
    +    requires-port "^1.0.0"
    +
     url-regex@^3.0.0:
       version "3.2.0"
       resolved "https://registry.yarnpkg.com/url-regex/-/url-regex-3.2.0.tgz#dbad1e0c9e29e105dd0b1f09f6862f7fdb482724"
    @@ -9330,14 +9436,6 @@ url-regex@^3.0.0:
       dependencies:
         ip-regex "^1.0.1"
     
    -url@^0.11.0:
    -  version "0.11.0"
    -  resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
    -  integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
    -  dependencies:
    -    punycode "1.3.2"
    -    querystring "0.2.0"
    -
     use@^3.1.0:
       version "3.1.1"
       resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
    @@ -9348,43 +9446,14 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1:
       resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
       integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
     
    -util@0.10.3:
    -  version "0.10.3"
    -  resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
    -  integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
    -  dependencies:
    -    inherits "2.0.1"
    -
    -util@^0.11.0:
    -  version "0.11.1"
    -  resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61"
    -  integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
    -  dependencies:
    -    inherits "2.0.3"
    -
    -uuid@^3.3.2:
    -  version "3.4.0"
    -  resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
    -  integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
    -
    -uuid@^7.0.3:
    -  version "7.0.3"
    -  resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b"
    -  integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==
    -
    -v8-compile-cache@^2.0.3:
    -  version "2.1.1"
    -  resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745"
    -  integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==
    -
    -v8-to-istanbul@^4.1.3:
    -  version "4.1.4"
    -  resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6"
    -  integrity sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ==
    +v8-to-istanbul@^9.0.1:
    +  version "9.1.0"
    +  resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265"
    +  integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==
       dependencies:
    +    "@jridgewell/trace-mapping" "^0.3.12"
         "@types/istanbul-lib-coverage" "^2.0.1"
         convert-source-map "^1.6.0"
    -    source-map "^0.7.3"
     
     v8flags@^3.2.0:
       version "3.2.0"
    @@ -9406,15 +9475,6 @@ value-or-function@^3.0.0:
       resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813"
       integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=
     
    -verror@1.10.0:
    -  version "1.10.0"
    -  resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
    -  integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
    -  dependencies:
    -    assert-plus "^1.0.0"
    -    core-util-is "1.0.2"
    -    extsprintf "^1.2.0"
    -
     vfile-find-up@^5.0.0:
       version "5.0.1"
       resolved "https://registry.yarnpkg.com/vfile-find-up/-/vfile-find-up-5.0.1.tgz#2d3d855e99013b852c604b18a0e559acf6fd385e"
    @@ -9532,66 +9592,51 @@ vinyl@^2.0.0, vinyl@^2.1.0, vinyl@^2.2.0:
         remove-trailing-separator "^1.0.1"
         replace-ext "^1.0.0"
     
    -vm-browserify@^1.0.1:
    -  version "1.1.2"
    -  resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
    -  integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
    -
    -w3c-hr-time@^1.0.2:
    -  version "1.0.2"
    -  resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd"
    -  integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==
    -  dependencies:
    -    browser-process-hrtime "^1.0.0"
    -
    -w3c-xmlserializer@^2.0.0:
    -  version "2.0.0"
    -  resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a"
    -  integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==
    +vinyl@^2.2.1:
    +  version "2.2.1"
    +  resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974"
    +  integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==
       dependencies:
    -    xml-name-validator "^3.0.0"
    +    clone "^2.1.1"
    +    clone-buffer "^1.0.0"
    +    clone-stats "^1.0.0"
    +    cloneable-readable "^1.0.0"
    +    remove-trailing-separator "^1.0.1"
    +    replace-ext "^1.0.0"
     
    -walker@^1.0.7, walker@~1.0.5:
    -  version "1.0.7"
    -  resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
    -  integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=
    +w3c-xmlserializer@^4.0.0:
    +  version "4.0.0"
    +  resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073"
    +  integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==
       dependencies:
    -    makeerror "1.0.x"
    +    xml-name-validator "^4.0.0"
     
    -watchpack-chokidar2@^2.0.0:
    -  version "2.0.0"
    -  resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0"
    -  integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==
    +walker@^1.0.8:
    +  version "1.0.8"
    +  resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f"
    +  integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==
       dependencies:
    -    chokidar "^2.1.8"
    +    makeerror "1.0.12"
     
    -watchpack@^1.6.1:
    -  version "1.7.2"
    -  resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.2.tgz#c02e4d4d49913c3e7e122c3325365af9d331e9aa"
    -  integrity sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g==
    +watchpack@^2.4.0:
    +  version "2.4.0"
    +  resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d"
    +  integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==
       dependencies:
    +    glob-to-regexp "^0.4.1"
         graceful-fs "^4.1.2"
    -    neo-async "^2.5.0"
    -  optionalDependencies:
    -    chokidar "^3.4.0"
    -    watchpack-chokidar2 "^2.0.0"
     
     web-namespaces@^1.1.2:
       version "1.1.4"
       resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec"
       integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==
     
    -webidl-conversions@^5.0.0:
    -  version "5.0.0"
    -  resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
    -  integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==
    -
    -webidl-conversions@^6.0.0:
    -  version "6.1.0"
    -  resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514"
    -  integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
    +webidl-conversions@^7.0.0:
    +  version "7.0.0"
    +  resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a"
    +  integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==
     
    -webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3:
    +webpack-sources@^1.4.3:
       version "1.4.3"
       resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
       integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
    @@ -9599,75 +9644,118 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3:
         source-list-map "^2.0.0"
         source-map "~0.6.1"
     
    -webpack-stream@5.2.1:
    -  version "5.2.1"
    -  resolved "https://registry.yarnpkg.com/webpack-stream/-/webpack-stream-5.2.1.tgz#35c992161399fe8cad9c10d4a5c258f022629b39"
    -  integrity sha512-WvyVU0K1/VB1NZ7JfsaemVdG0PXAQUqbjUNW4A58th4pULvKMQxG+y33HXTL02JvD56ko2Cub+E2NyPwrLBT/A==
    +webpack-sources@^3.2.3:
    +  version "3.2.3"
    +  resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
    +  integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
    +
    +webpack-stream@^7.0.0:
    +  version "7.0.0"
    +  resolved "https://registry.yarnpkg.com/webpack-stream/-/webpack-stream-7.0.0.tgz#e6a1edb9568198499af872678e95031752d72f00"
    +  integrity sha512-XoAQTHyCaYMo6TS7Atv1HYhtmBgKiVLONJbzLBl2V3eibXQ2IT/MCRM841RW/r3vToKD5ivrTJFWgd/ghoxoRg==
       dependencies:
         fancy-log "^1.3.3"
         lodash.clone "^4.3.2"
         lodash.some "^4.2.2"
    -    memory-fs "^0.4.1"
    +    memory-fs "^0.5.0"
         plugin-error "^1.0.1"
    -    supports-color "^5.5.0"
    +    supports-color "^8.1.1"
         through "^2.3.8"
    -    vinyl "^2.1.0"
    -    webpack "^4.26.1"
    -
    -webpack@^4.26.1:
    -  version "4.43.0"
    -  resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.43.0.tgz#c48547b11d563224c561dad1172c8aa0b8a678e6"
    -  integrity sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==
    -  dependencies:
    -    "@webassemblyjs/ast" "1.9.0"
    -    "@webassemblyjs/helper-module-context" "1.9.0"
    -    "@webassemblyjs/wasm-edit" "1.9.0"
    -    "@webassemblyjs/wasm-parser" "1.9.0"
    -    acorn "^6.4.1"
    -    ajv "^6.10.2"
    -    ajv-keywords "^3.4.1"
    +    vinyl "^2.2.1"
    +
    +webpack@^5.88.2:
    +  version "5.88.2"
    +  resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.2.tgz#f62b4b842f1c6ff580f3fcb2ed4f0b579f4c210e"
    +  integrity sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==
    +  dependencies:
    +    "@types/eslint-scope" "^3.7.3"
    +    "@types/estree" "^1.0.0"
    +    "@webassemblyjs/ast" "^1.11.5"
    +    "@webassemblyjs/wasm-edit" "^1.11.5"
    +    "@webassemblyjs/wasm-parser" "^1.11.5"
    +    acorn "^8.7.1"
    +    acorn-import-assertions "^1.9.0"
    +    browserslist "^4.14.5"
         chrome-trace-event "^1.0.2"
    -    enhanced-resolve "^4.1.0"
    -    eslint-scope "^4.0.3"
    -    json-parse-better-errors "^1.0.2"
    -    loader-runner "^2.4.0"
    -    loader-utils "^1.2.3"
    -    memory-fs "^0.4.1"
    -    micromatch "^3.1.10"
    -    mkdirp "^0.5.3"
    -    neo-async "^2.6.1"
    -    node-libs-browser "^2.2.1"
    -    schema-utils "^1.0.0"
    -    tapable "^1.1.3"
    -    terser-webpack-plugin "^1.4.3"
    -    watchpack "^1.6.1"
    -    webpack-sources "^1.4.1"
    -
    -whatwg-encoding@^1.0.5:
    -  version "1.0.5"
    -  resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
    -  integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
    +    enhanced-resolve "^5.15.0"
    +    es-module-lexer "^1.2.1"
    +    eslint-scope "5.1.1"
    +    events "^3.2.0"
    +    glob-to-regexp "^0.4.1"
    +    graceful-fs "^4.2.9"
    +    json-parse-even-better-errors "^2.3.1"
    +    loader-runner "^4.2.0"
    +    mime-types "^2.1.27"
    +    neo-async "^2.6.2"
    +    schema-utils "^3.2.0"
    +    tapable "^2.1.1"
    +    terser-webpack-plugin "^5.3.7"
    +    watchpack "^2.4.0"
    +    webpack-sources "^3.2.3"
    +
    +whatwg-encoding@^2.0.0:
    +  version "2.0.0"
    +  resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53"
    +  integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==
       dependencies:
    -    iconv-lite "0.4.24"
    +    iconv-lite "0.6.3"
     
     whatwg-fetch@>=0.10.0:
       version "3.0.0"
       resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb"
       integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==
     
    -whatwg-mimetype@^2.3.0:
    -  version "2.3.0"
    -  resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
    -  integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
    +whatwg-mimetype@^3.0.0:
    +  version "3.0.0"
    +  resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7"
    +  integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==
    +
    +whatwg-url@^11.0.0:
    +  version "11.0.0"
    +  resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018"
    +  integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==
    +  dependencies:
    +    tr46 "^3.0.0"
    +    webidl-conversions "^7.0.0"
    +
    +which-boxed-primitive@^1.0.2:
    +  version "1.0.2"
    +  resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
    +  integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
    +  dependencies:
    +    is-bigint "^1.0.1"
    +    is-boolean-object "^1.1.0"
    +    is-number-object "^1.0.4"
    +    is-string "^1.0.5"
    +    is-symbol "^1.0.3"
     
    -whatwg-url@^8.0.0:
    -  version "8.1.0"
    -  resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.1.0.tgz#c628acdcf45b82274ce7281ee31dd3c839791771"
    -  integrity sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw==
    +which-builtin-type@^1.1.3:
    +  version "1.1.3"
    +  resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b"
    +  integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==
    +  dependencies:
    +    function.prototype.name "^1.1.5"
    +    has-tostringtag "^1.0.0"
    +    is-async-function "^2.0.0"
    +    is-date-object "^1.0.5"
    +    is-finalizationregistry "^1.0.2"
    +    is-generator-function "^1.0.10"
    +    is-regex "^1.1.4"
    +    is-weakref "^1.0.2"
    +    isarray "^2.0.5"
    +    which-boxed-primitive "^1.0.2"
    +    which-collection "^1.0.1"
    +    which-typed-array "^1.1.9"
    +
    +which-collection@^1.0.1:
    +  version "1.0.1"
    +  resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906"
    +  integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==
       dependencies:
    -    lodash.sortby "^4.7.0"
    -    tr46 "^2.0.2"
    -    webidl-conversions "^5.0.0"
    +    is-map "^2.0.1"
    +    is-set "^2.0.1"
    +    is-weakmap "^2.0.1"
    +    is-weakset "^2.0.1"
     
     which-module@^1.0.0:
       version "1.0.0"
    @@ -9679,6 +9767,17 @@ which-module@^2.0.0:
       resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
       integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
     
    +which-typed-array@^1.1.10, which-typed-array@^1.1.11, which-typed-array@^1.1.9:
    +  version "1.1.11"
    +  resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a"
    +  integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==
    +  dependencies:
    +    available-typed-arrays "^1.0.5"
    +    call-bind "^1.0.2"
    +    for-each "^0.3.3"
    +    gopd "^1.0.1"
    +    has-tostringtag "^1.0.0"
    +
     which@^1.2.14, which@^1.2.9:
       version "1.3.1"
       resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
    @@ -9686,7 +9785,7 @@ which@^1.2.14, which@^1.2.9:
       dependencies:
         isexe "^2.0.0"
     
    -which@^2.0.1, which@^2.0.2:
    +which@^2.0.1:
       version "2.0.2"
       resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
       integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
    @@ -9700,18 +9799,6 @@ widest-line@^2.0.0:
       dependencies:
         string-width "^2.1.1"
     
    -word-wrap@^1.2.3, word-wrap@~1.2.3:
    -  version "1.2.3"
    -  resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
    -  integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
    -
    -worker-farm@^1.7.0:
    -  version "1.7.0"
    -  resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
    -  integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
    -  dependencies:
    -    errno "~0.1.7"
    -
     wrap-ansi@^2.0.0:
       version "2.1.0"
       resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
    @@ -9729,6 +9816,15 @@ wrap-ansi@^6.2.0:
         string-width "^4.1.0"
         strip-ansi "^6.0.0"
     
    +wrap-ansi@^7.0.0:
    +  version "7.0.0"
    +  resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
    +  integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
    +  dependencies:
    +    ansi-styles "^4.0.0"
    +    string-width "^4.1.0"
    +    strip-ansi "^6.0.0"
    +
     wrappy@1:
       version "1.0.2"
       resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
    @@ -9743,27 +9839,18 @@ write-file-atomic@^2.0.0:
         imurmurhash "^0.1.4"
         signal-exit "^3.0.2"
     
    -write-file-atomic@^3.0.0:
    -  version "3.0.3"
    -  resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
    -  integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
    +write-file-atomic@^4.0.2:
    +  version "4.0.2"
    +  resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd"
    +  integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==
       dependencies:
         imurmurhash "^0.1.4"
    -    is-typedarray "^1.0.0"
    -    signal-exit "^3.0.2"
    -    typedarray-to-buffer "^3.1.5"
    -
    -write@1.0.3:
    -  version "1.0.3"
    -  resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
    -  integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
    -  dependencies:
    -    mkdirp "^0.5.1"
    +    signal-exit "^3.0.7"
     
    -ws@^7.2.3:
    -  version "7.3.0"
    -  resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.0.tgz#4b2f7f219b3d3737bc1a2fbf145d825b94d38ffd"
    -  integrity sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w==
    +ws@^8.11.0:
    +  version "8.14.0"
    +  resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.0.tgz#6c5792c5316dc9266ba8e780433fc45e6680aecd"
    +  integrity sha512-WR0RJE9Ehsio6U4TuM+LmunEsjQ5ncHlw4sn9ihD6RoJKZrVyH9FWV3dmnwu8B2aNib1OvG2X6adUCyFpQyWcg==
     
     x-is-string@^0.1.0:
       version "0.1.0"
    @@ -9775,23 +9862,16 @@ xdg-basedir@^3.0.0:
       resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
       integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=
     
    -xml-name-validator@^3.0.0:
    -  version "3.0.0"
    -  resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
    -  integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
    +xml-name-validator@^4.0.0:
    +  version "4.0.0"
    +  resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835"
    +  integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==
     
     xmlchars@^2.2.0:
       version "2.2.0"
       resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
       integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
     
    -xregexp@^4.3.0:
    -  version "4.3.0"
    -  resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50"
    -  integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==
    -  dependencies:
    -    "@babel/runtime-corejs3" "^7.8.3"
    -
     "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1:
       version "4.0.2"
       resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
    @@ -9814,6 +9894,11 @@ y18n@^4.0.0:
       resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
       integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
     
    +y18n@^5.0.5:
    +  version "5.0.8"
    +  resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
    +  integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
    +
     yallist@^2.1.2:
       version "2.1.2"
       resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
    @@ -9829,14 +9914,6 @@ yallist@^4.0.0:
       resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
       integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
     
    -yargs-parser@18.x, yargs-parser@^18.1.1:
    -  version "18.1.3"
    -  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
    -  integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
    -  dependencies:
    -    camelcase "^5.0.0"
    -    decamelize "^1.2.0"
    -
     yargs-parser@5.0.0-security.0:
       version "5.0.0-security.0"
       resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz#4ff7271d25f90ac15643b86076a2ab499ec9ee24"
    @@ -9852,6 +9929,19 @@ yargs-parser@^10.0.0:
       dependencies:
         camelcase "^4.1.0"
     
    +yargs-parser@^18.1.1:
    +  version "18.1.3"
    +  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
    +  integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
    +  dependencies:
    +    camelcase "^5.0.0"
    +    decamelize "^1.2.0"
    +
    +yargs-parser@^21.0.1, yargs-parser@^21.1.1:
    +  version "21.1.1"
    +  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
    +  integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
    +
     yargs@^15.3.1:
       version "15.3.1"
       resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b"
    @@ -9869,6 +9959,19 @@ yargs@^15.3.1:
         y18n "^4.0.0"
         yargs-parser "^18.1.1"
     
    +yargs@^17.3.1:
    +  version "17.7.2"
    +  resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
    +  integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
    +  dependencies:
    +    cliui "^8.0.1"
    +    escalade "^3.1.1"
    +    get-caller-file "^2.0.5"
    +    require-directory "^2.1.1"
    +    string-width "^4.2.3"
    +    y18n "^5.0.5"
    +    yargs-parser "^21.1.1"
    +
     yargs@^7.1.0:
       version "7.1.1"
       resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.1.tgz#67f0ef52e228d4ee0d6311acede8850f53464df6"
    @@ -9887,3 +9990,8 @@ yargs@^7.1.0:
         which-module "^1.0.0"
         y18n "^3.2.1"
         yargs-parser "5.0.0-security.0"
    +
    +yocto-queue@^0.1.0:
    +  version "0.1.0"
    +  resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
    +  integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==