@pie-lib/editable-html-tip-tap 2.2.0-beta.7 → 2.2.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/package.json +3 -3
  2. package/lib/__tests__/EditableHtml.test.js +0 -831
  3. package/lib/__tests__/EditableHtml.test.js.map +0 -1
  4. package/lib/__tests__/constants.test.js +0 -21
  5. package/lib/__tests__/constants.test.js.map +0 -1
  6. package/lib/__tests__/div-to-paragraph-conversion.test.js +0 -213
  7. package/lib/__tests__/div-to-paragraph-conversion.test.js.map +0 -1
  8. package/lib/__tests__/extensions.test.js +0 -209
  9. package/lib/__tests__/extensions.test.js.map +0 -1
  10. package/lib/__tests__/index.test.js +0 -250
  11. package/lib/__tests__/index.test.js.map +0 -1
  12. package/lib/__tests__/size-utils.test.js +0 -57
  13. package/lib/__tests__/size-utils.test.js.map +0 -1
  14. package/lib/__tests__/theme.test.js +0 -17
  15. package/lib/__tests__/theme.test.js.map +0 -1
  16. package/lib/components/__tests__/AltDialog.test.js +0 -201
  17. package/lib/components/__tests__/AltDialog.test.js.map +0 -1
  18. package/lib/components/__tests__/CharacterPicker.test.js +0 -455
  19. package/lib/components/__tests__/CharacterPicker.test.js.map +0 -1
  20. package/lib/components/__tests__/CssIcon.test.js +0 -58
  21. package/lib/components/__tests__/CssIcon.test.js.map +0 -1
  22. package/lib/components/__tests__/DragInTheBlank.test.js +0 -295
  23. package/lib/components/__tests__/DragInTheBlank.test.js.map +0 -1
  24. package/lib/components/__tests__/ExplicitConstructedResponse.test.js +0 -345
  25. package/lib/components/__tests__/ExplicitConstructedResponse.test.js.map +0 -1
  26. package/lib/components/__tests__/ImageToolbar.test.js +0 -185
  27. package/lib/components/__tests__/ImageToolbar.test.js.map +0 -1
  28. package/lib/components/__tests__/InlineDropdown.test.js +0 -839
  29. package/lib/components/__tests__/InlineDropdown.test.js.map +0 -1
  30. package/lib/components/__tests__/InsertImageHandler.test.js +0 -171
  31. package/lib/components/__tests__/InsertImageHandler.test.js.map +0 -1
  32. package/lib/components/__tests__/MediaDialog.test.js +0 -433
  33. package/lib/components/__tests__/MediaDialog.test.js.map +0 -1
  34. package/lib/components/__tests__/MediaToolbar.test.js +0 -126
  35. package/lib/components/__tests__/MediaToolbar.test.js.map +0 -1
  36. package/lib/components/__tests__/MediaWrapper.test.js +0 -96
  37. package/lib/components/__tests__/MediaWrapper.test.js.map +0 -1
  38. package/lib/components/__tests__/MenuBar.test.js +0 -502
  39. package/lib/components/__tests__/MenuBar.test.js.map +0 -1
  40. package/lib/components/__tests__/RespArea.test.js +0 -171
  41. package/lib/components/__tests__/RespArea.test.js.map +0 -1
  42. package/lib/components/__tests__/TableIcons.test.js +0 -153
  43. package/lib/components/__tests__/TableIcons.test.js.map +0 -1
  44. package/lib/components/__tests__/TextAlign.test.js +0 -209
  45. package/lib/components/__tests__/TextAlign.test.js.map +0 -1
  46. package/lib/components/__tests__/TiptapContainer.test.js +0 -196
  47. package/lib/components/__tests__/TiptapContainer.test.js.map +0 -1
  48. package/lib/components/__tests__/characterUtils.test.js +0 -178
  49. package/lib/components/__tests__/characterUtils.test.js.map +0 -1
  50. package/lib/components/__tests__/choice.test.js +0 -213
  51. package/lib/components/__tests__/choice.test.js.map +0 -1
  52. package/lib/components/__tests__/custom-popper.test.js +0 -108
  53. package/lib/components/__tests__/custom-popper.test.js.map +0 -1
  54. package/lib/components/__tests__/done-button.test.js +0 -72
  55. package/lib/components/__tests__/done-button.test.js.map +0 -1
  56. package/lib/components/__tests__/toolbar-buttons.test.js +0 -277
  57. package/lib/components/__tests__/toolbar-buttons.test.js.map +0 -1
  58. package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js +0 -90
  59. package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js.map +0 -1
  60. package/lib/components/respArea/__tests__/MathTemplated.test.js +0 -217
  61. package/lib/components/respArea/__tests__/MathTemplated.test.js.map +0 -1
  62. package/lib/extensions/__tests__/css.test.js +0 -214
  63. package/lib/extensions/__tests__/css.test.js.map +0 -1
  64. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js +0 -175
  65. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js.map +0 -1
  66. package/lib/extensions/__tests__/divNode.test.js +0 -108
  67. package/lib/extensions/__tests__/divNode.test.js.map +0 -1
  68. package/lib/extensions/__tests__/ensure-empty-root-div.test.js +0 -50
  69. package/lib/extensions/__tests__/ensure-empty-root-div.test.js.map +0 -1
  70. package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js +0 -60
  71. package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js.map +0 -1
  72. package/lib/extensions/__tests__/extended-list-item.test.js +0 -13
  73. package/lib/extensions/__tests__/extended-list-item.test.js.map +0 -1
  74. package/lib/extensions/__tests__/extended-table-cell.test.js +0 -15
  75. package/lib/extensions/__tests__/extended-table-cell.test.js.map +0 -1
  76. package/lib/extensions/__tests__/extended-table.test.js +0 -200
  77. package/lib/extensions/__tests__/extended-table.test.js.map +0 -1
  78. package/lib/extensions/__tests__/image-component.test.js +0 -432
  79. package/lib/extensions/__tests__/image-component.test.js.map +0 -1
  80. package/lib/extensions/__tests__/image.test.js +0 -313
  81. package/lib/extensions/__tests__/image.test.js.map +0 -1
  82. package/lib/extensions/__tests__/math.test.js +0 -1411
  83. package/lib/extensions/__tests__/math.test.js.map +0 -1
  84. package/lib/extensions/__tests__/media-node-view.test.js +0 -307
  85. package/lib/extensions/__tests__/media-node-view.test.js.map +0 -1
  86. package/lib/extensions/__tests__/media.test.js +0 -292
  87. package/lib/extensions/__tests__/media.test.js.map +0 -1
  88. package/lib/extensions/__tests__/responseArea.test.js +0 -736
  89. package/lib/extensions/__tests__/responseArea.test.js.map +0 -1
  90. package/lib/utils/__tests__/helper.test.js +0 -107
  91. package/lib/utils/__tests__/helper.test.js.map +0 -1
  92. package/lib/utils/__tests__/toolbar.test.js +0 -38
  93. package/lib/utils/__tests__/toolbar.test.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"math.test.js","names":["_react","_interopRequireDefault","require","_react2","_math","toolbarUtils","_interopRequireWildcard","_excluded","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof3","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","jest","mock","NodeViewWrapper","_ref","children","props","_objectWithoutProperties2","createElement","_extends2","ReactNodeViewRenderer","fn","component","mockCreatePortal","node","requireActual","createPortal","React","MathPreview","_ref2","latex","MathToolbar","_ref3","onChange","onDone","_React$useState","useState","_React$useState2","_slicedToArray2","localLatex","setLocalLatex","value","target","onClick","wrapMath","wrapper","Node","create","config","Plugin","PluginKey","key","TextSelection","doc","pos","type","NodeSelection","describe","it","expect","MathNode","name","toBe","inline","group","atom","attributes","addAttributes","toHaveProperty","toEqual","html","rules","parseHTML","Array","isArray","toHaveLength","result","renderHTML","HTMLAttributes","commands","addCommands","_typeof2","insertMath","setToolbarOpenedSpy","spyOn","mathNode","nodeSize","tr","insert","mockReturnThis","setSelection","editor","view","state","schema","nodes","math","selection","$from","dispatch","toHaveBeenCalledWith","toHaveBeenCalled","mockRestore","addNodeView","toBeDefined","plugins","addProseMirrorPlugins","appendTransaction","handleKeyDown","plugin","EnsureTextAfterMathPlugin","textNode","newState","text","descendants","cb","nodeAt","docChanged","anything","not","toBeNull","createDocWithMathAndZwsp","resolveOverrides","undefined","resolve","nodeAfter","nodeBefore","textContent","createDocWithRegularTextBeforeCursor","createView","_ref4","_ref4$state","stateOverrides","from","empty","handled","ZeroWidthSpaceHandlingPlugin","_require","_require2","createEditorElement","rect","top","left","width","height","element","document","configurable","createMockEditor","to","setMeta","coordsAtPos","options","focus","instanceId","_toolbarOpened","mockNode","attrs","defaultProps","beforeEach","clearAllMocks","mockImplementation","updateAttributes","selected","getPos","_render","render","MathNodeView","container","toBeInTheDocument","_render2","getByTestId","_render3","_asyncToGenerator2","_regenerator","mark","_callee","_render4","wrap","_context","prev","next","waitFor","stop","_render5","queryByTestId","_callee2","_render6","_context2","toolbar","querySelector","toHaveAttribute","_callee3","_render7","_context3","style","_callee4","containerEl","_render8","_context4","getBoundingClientRect","_tiptapContainerEl","_callee5","_render9","_context5","position","_callee6","_render0","_context6","zIndex","_callee7","_render1","_context7","_callee9","originalInnerHeight","originalInnerWidth","_render10","_context9","window","innerHeight","innerWidth","writable","bottom","act","_callee8","_context8","dispatchEvent","Event","Promise","requestAnimationFrame","parseInt","toBeLessThanOrEqual","toBeGreaterThanOrEqual","_callee0","addSpy","_context0","any","Function","_callee1","_context1","mockClear","lastCall","calls","_callee10","_context10","body","_callee11","_render11","_context11","input","fireEvent","change","_callee12","_render12","doneButton","_context12","click","_callee13","_render13","_context13","_callee14","_render14","_context14","_callee15","_render15","_context15","_callee16","_require3","_render16","_context16","_callee17","addEventListenerSpy","removeEventListenerSpy","nodeA","nodeB","_render17","rerender","initialCallCount","_context17","toBeGreaterThan","_callee18","_render18","_context18","dateNowSpy","timestamp","Date","afterEach","_render19","classList","some","c","test","_render20","Fragment","getAllByTestId","wrappers","mathNodeClass","el","find","startsWith","_callee19","editorA","editorB","_render21","queryAllByTestId","secondPreview","_context19","toHaveValue","_callee20","_render22","_context20","_callee22","_render23","_context22","_callee21","_context21","_callee24","_render24","_context24","_callee23","_context23","_callee25","_render25","dropdown","_context25","id","appendChild","removeChild","nodeWithEmptyLatex","_render26","_render27","toHaveStyle","display","cursor"],"sources":["../../../src/extensions/__tests__/math.test.js"],"sourcesContent":["import React from 'react';\nimport { render, waitFor, fireEvent, act } from '@testing-library/react';\nimport { EnsureTextAfterMathPlugin, MathNode, MathNodeView, ZeroWidthSpaceHandlingPlugin } from '../math';\nimport * as toolbarUtils from '../../utils/toolbar';\n\njest.mock('@tiptap/react', () => ({\n NodeViewWrapper: ({ children, ...props }) => (\n <div data-testid=\"node-view-wrapper\" {...props}>\n {children}\n </div>\n ),\n ReactNodeViewRenderer: jest.fn((component) => component),\n}));\n\nconst mockCreatePortal = jest.fn((node) => node);\njest.mock('react-dom', () => ({\n ...jest.requireActual('react-dom'),\n createPortal: (...args) => mockCreatePortal(...args),\n}));\n\njest.mock('@pie-lib/math-toolbar', () => {\n const React = require('react');\n return {\n MathPreview: ({ latex }) => <div data-testid=\"math-preview\">{latex}</div>,\n MathToolbar: ({ latex, onChange, onDone }) => {\n const [localLatex, setLocalLatex] = React.useState(latex);\n return (\n <div data-testid=\"math-toolbar\">\n <input\n data-testid=\"math-input\"\n value={localLatex}\n onChange={(e) => {\n setLocalLatex(e.target.value);\n onChange(e.target.value);\n }}\n />\n <button data-testid=\"done-button\" onClick={() => onDone(localLatex)}>\n Done\n </button>\n </div>\n );\n },\n };\n});\n\njest.mock('@pie-lib/math-rendering', () => ({\n wrapMath: (latex, wrapper) => latex,\n}));\n\njest.mock('@tiptap/core', () => ({\n Node: {\n create: jest.fn((config) => config),\n },\n}));\n\njest.mock('prosemirror-state', () => ({\n Plugin: jest.fn(function (config) {\n return config;\n }),\n PluginKey: jest.fn(function (key) {\n this.key = key;\n }),\n TextSelection: {\n create: jest.fn((doc, pos) => ({ type: 'text', pos })),\n },\n NodeSelection: {\n create: jest.fn((doc, pos) => ({ type: 'node', pos })),\n },\n}));\n\ndescribe('MathNode', () => {\n describe('configuration', () => {\n it('has correct name', () => {\n expect(MathNode.name).toBe('math');\n });\n\n it('is inline', () => {\n expect(MathNode.inline).toBe(true);\n });\n\n it('is in inline group', () => {\n expect(MathNode.group).toBe('inline');\n });\n\n it('is atomic', () => {\n expect(MathNode.atom).toBe(true);\n });\n });\n\n describe('addAttributes', () => {\n it('returns required attributes', () => {\n const attributes = MathNode.addAttributes();\n\n expect(attributes).toHaveProperty('latex');\n expect(attributes).toHaveProperty('wrapper');\n expect(attributes).toHaveProperty('html');\n\n expect(attributes.latex).toEqual({ default: '' });\n expect(attributes.wrapper).toEqual({ default: null });\n expect(attributes.html).toEqual({ default: null });\n });\n });\n\n describe('parseHTML', () => {\n it('returns parsing rules for latex', () => {\n const rules = MathNode.parseHTML();\n\n expect(Array.isArray(rules)).toBe(true);\n expect(rules).toHaveLength(2);\n expect(rules[0]).toHaveProperty('tag', 'span[data-latex]');\n });\n\n it('returns parsing rules for mathml', () => {\n const rules = MathNode.parseHTML();\n expect(rules[1]).toHaveProperty('tag', 'span[data-type=\"mathml\"]');\n });\n });\n\n describe('renderHTML', () => {\n it('renders mathml when html attribute is present', () => {\n const result = MathNode.renderHTML({\n HTMLAttributes: {\n html: '<math><mi>x</mi></math>',\n },\n });\n\n expect(result[0]).toBe('span');\n expect(result[1]).toHaveProperty('data-type', 'mathml');\n });\n\n it('renders latex when html attribute is not present', () => {\n const result = MathNode.renderHTML({\n HTMLAttributes: {\n latex: 'x^2',\n },\n });\n\n expect(result[0]).toBe('span');\n expect(result[1]).toHaveProperty('data-latex', '');\n expect(result[1]).toHaveProperty('data-raw', 'x^2');\n });\n });\n\n describe('addCommands', () => {\n it('returns insertMath command', () => {\n const commands = MathNode.addCommands();\n\n expect(commands).toHaveProperty('insertMath');\n expect(typeof commands.insertMath).toBe('function');\n });\n\n it('insertMath opens the toolbar after inserting a math node', () => {\n const setToolbarOpenedSpy = jest.spyOn(toolbarUtils, 'setToolbarOpened');\n const mathNode = { type: { name: 'math' }, nodeSize: 1 };\n const tr = {\n insert: jest.fn().mockReturnThis(),\n setSelection: jest.fn().mockReturnThis(),\n doc: {},\n };\n const editor = {\n view: {\n state: {\n schema: { nodes: { math: { create: jest.fn(() => mathNode) } } },\n selection: { $from: { pos: 1 } },\n },\n },\n };\n const dispatch = jest.fn();\n const insertMath = MathNode.addCommands().insertMath('x^2');\n\n insertMath({ tr, editor, dispatch });\n\n expect(tr.insert).toHaveBeenCalledWith(1, mathNode);\n expect(tr.setSelection).toHaveBeenCalled();\n expect(dispatch).toHaveBeenCalledWith(tr);\n expect(setToolbarOpenedSpy).toHaveBeenCalledWith(editor, true);\n\n setToolbarOpenedSpy.mockRestore();\n });\n });\n\n describe('addNodeView', () => {\n it('returns ReactNodeViewRenderer result', () => {\n const result = MathNode.addNodeView();\n\n expect(result).toBeDefined();\n });\n });\n\n describe('addProseMirrorPlugins', () => {\n it('registers ensure-text-after-math and zero-width-space plugins', () => {\n const plugins = MathNode.addProseMirrorPlugins();\n\n expect(plugins).toHaveLength(2);\n expect(plugins[0].appendTransaction).toBeDefined();\n expect(plugins[1].props.handleKeyDown).toBeDefined();\n });\n });\n});\n\ndescribe('EnsureTextAfterMathPlugin', () => {\n it('inserts a zero-width space after a math node when no text follows', () => {\n const plugin = EnsureTextAfterMathPlugin('math');\n const textNode = { type: { name: 'text' } };\n const mathNode = { type: { name: 'math' }, nodeSize: 3 };\n const tr = { insert: jest.fn() };\n\n const newState = {\n schema: { text: jest.fn((value) => ({ type: textNode.type, text: value })) },\n tr,\n doc: {\n descendants: (cb) => cb(mathNode, 5),\n nodeAt: jest.fn(() => null),\n },\n };\n\n const result = plugin.appendTransaction([{ docChanged: true }], {}, newState);\n\n expect(tr.insert).toHaveBeenCalledWith(8, expect.anything());\n expect(result).toBe(tr);\n });\n\n it('does not insert when text already follows the math node', () => {\n const plugin = EnsureTextAfterMathPlugin('math');\n const tr = { insert: jest.fn() };\n const mathNode = { type: { name: 'math' }, nodeSize: 3 };\n\n const newState = {\n schema: { text: jest.fn() },\n tr,\n doc: {\n descendants: (cb) => cb(mathNode, 5),\n nodeAt: jest.fn(() => ({ type: { name: 'text' } })),\n },\n };\n\n const result = plugin.appendTransaction([{ docChanged: true }], {}, newState);\n\n expect(tr.insert).not.toHaveBeenCalled();\n expect(result).toBeNull();\n });\n\n it('returns null when the document did not change', () => {\n const plugin = EnsureTextAfterMathPlugin('math');\n\n const result = plugin.appendTransaction([{ docChanged: false }], {}, {});\n expect(result).toBeNull();\n });\n});\n\ndescribe('ZeroWidthSpaceHandlingPlugin', () => {\n const createDocWithMathAndZwsp = (resolveOverrides = {}) => ({\n resolve: jest.fn((pos) => ({\n nodeAfter: null,\n nodeBefore: null,\n pos,\n ...resolveOverrides[pos],\n })),\n nodeAt: jest.fn((pos) => {\n if (pos === 1) {\n return { type: { name: 'text' }, textContent: '\\u200b' };\n }\n if (pos === 0) {\n return { type: { name: 'math' }, nodeSize: 1 };\n }\n return null;\n }),\n });\n\n const createDocWithRegularTextBeforeCursor = () => ({\n resolve: jest.fn((pos) => ({ nodeAfter: null, nodeBefore: null, pos })),\n nodeAt: jest.fn((pos) => {\n if (pos === 1) {\n return { type: { name: 'text' }, textContent: 'a' };\n }\n return null;\n }),\n });\n\n const createView = ({ state: stateOverrides = {} } = {}) => {\n const dispatch = jest.fn();\n const tr = {\n delete: jest.fn().mockReturnThis(),\n setSelection: jest.fn().mockReturnThis(),\n };\n\n return {\n state: {\n selection: { from: 2, empty: true },\n doc: createDocWithMathAndZwsp(),\n tr,\n ...stateOverrides,\n },\n dispatch,\n };\n };\n\n describe('Backspace', () => {\n it('deletes the inline node and zero-width space before the cursor', () => {\n const view = createView();\n const handled = ZeroWidthSpaceHandlingPlugin.props.handleKeyDown(view, { key: 'Backspace' });\n\n expect(handled).toBe(true);\n expect(view.state.tr.delete).toHaveBeenCalledWith(0, 2);\n expect(view.dispatch).toHaveBeenCalledWith(view.state.tr);\n });\n\n it('returns false when regular text precedes the cursor', () => {\n const view = createView({\n state: {\n doc: createDocWithRegularTextBeforeCursor(),\n },\n });\n\n const handled = ZeroWidthSpaceHandlingPlugin.props.handleKeyDown(view, { key: 'Backspace' });\n\n expect(handled).toBe(false);\n expect(view.state.tr.delete).not.toHaveBeenCalled();\n expect(view.dispatch).not.toHaveBeenCalled();\n });\n });\n\n describe('ArrowLeft', () => {\n it('selects the inline node before a zero-width space', () => {\n const mathNode = { nodeSize: 3 };\n const view = createView({\n state: {\n doc: createDocWithMathAndZwsp({\n 0: { nodeAfter: mathNode, nodeBefore: null, pos: 0 },\n }),\n },\n });\n const { NodeSelection } = require('prosemirror-state');\n\n const handled = ZeroWidthSpaceHandlingPlugin.props.handleKeyDown(view, { key: 'ArrowLeft' });\n\n expect(handled).toBe(true);\n expect(view.state.doc.resolve).toHaveBeenCalledWith(0);\n expect(NodeSelection.create).toHaveBeenCalledWith(view.state.doc, 0);\n expect(view.dispatch).toHaveBeenCalled();\n });\n\n it('moves the text cursor before the zero-width space when no inline node precedes it', () => {\n const view = createView();\n const { TextSelection } = require('prosemirror-state');\n\n const handled = ZeroWidthSpaceHandlingPlugin.props.handleKeyDown(view, { key: 'ArrowLeft' });\n\n expect(handled).toBe(true);\n expect(view.state.doc.resolve).toHaveBeenCalledWith(0);\n expect(TextSelection.create).toHaveBeenCalledWith(view.state.doc, 0);\n expect(view.dispatch).toHaveBeenCalled();\n });\n\n it('returns false when regular text precedes the cursor', () => {\n const view = createView({\n state: {\n doc: createDocWithRegularTextBeforeCursor(),\n },\n });\n\n const handled = ZeroWidthSpaceHandlingPlugin.props.handleKeyDown(view, { key: 'ArrowLeft' });\n\n expect(handled).toBe(false);\n expect(view.state.tr.setSelection).not.toHaveBeenCalled();\n expect(view.dispatch).not.toHaveBeenCalled();\n });\n });\n\n it('returns false for unrelated keys', () => {\n const view = createView();\n\n const handled = ZeroWidthSpaceHandlingPlugin.props.handleKeyDown(view, { key: 'Enter' });\n expect(handled).toBe(false);\n });\n});\n\ndescribe('MathNodeView', () => {\n const createEditorElement = (rect = { top: 0, left: 0, width: 600, height: 400 }) => {\n const element = document.createElement('div');\n Object.defineProperty(element, 'getBoundingClientRect', {\n value: jest.fn(() => rect),\n configurable: true,\n });\n return element;\n };\n\n const createMockEditor = () => ({\n state: {\n selection: {\n from: 0,\n to: 1,\n node: { type: { name: 'math' } },\n },\n tr: {\n setSelection: jest.fn().mockReturnThis(),\n setMeta: jest.fn().mockReturnThis(),\n },\n doc: {},\n },\n view: {\n coordsAtPos: jest.fn(() => ({ top: 100, left: 50 })),\n dispatch: jest.fn(),\n },\n options: {\n element: createEditorElement(),\n },\n commands: {\n focus: jest.fn(),\n },\n instanceId: 'editor-123',\n _toolbarOpened: false,\n });\n\n const mockNode = {\n attrs: {\n latex: 'x^2',\n },\n nodeSize: 1,\n };\n\n let defaultProps;\n\n beforeEach(() => {\n jest.clearAllMocks();\n mockCreatePortal.mockImplementation((node) => node);\n defaultProps = {\n node: mockNode,\n updateAttributes: jest.fn(),\n editor: createMockEditor(),\n selected: false,\n options: {},\n getPos: jest.fn(() => 0),\n };\n });\n\n it('renders without crashing', () => {\n const { container } = render(<MathNodeView {...defaultProps} />);\n expect(container).toBeInTheDocument();\n });\n\n it('renders NodeViewWrapper', () => {\n const { getByTestId } = render(<MathNodeView {...defaultProps} />);\n expect(getByTestId('node-view-wrapper')).toBeInTheDocument();\n });\n\n it('displays math preview', () => {\n const { getByTestId } = render(<MathNodeView {...defaultProps} />);\n expect(getByTestId('math-preview')).toBeInTheDocument();\n });\n\n it('shows toolbar when selected', async () => {\n const { getByTestId } = render(<MathNodeView {...defaultProps} selected={true} />);\n await waitFor(() => {\n expect(getByTestId('math-toolbar')).toBeInTheDocument();\n });\n });\n\n it('does not show toolbar when not selected', () => {\n const { queryByTestId } = render(<MathNodeView {...defaultProps} selected={false} />);\n expect(queryByTestId('math-toolbar')).not.toBeInTheDocument();\n });\n\n it('adds data-toolbar-for attribute with editor instanceId', async () => {\n const { container } = render(<MathNodeView {...defaultProps} selected={true} />);\n await waitFor(() => {\n const toolbar = container.querySelector('[data-toolbar-for]');\n expect(toolbar).toHaveAttribute('data-toolbar-for', 'editor-123');\n });\n });\n\n describe('toolbar positioning', () => {\n it('positions relative to portal container using coordsAtPos', async () => {\n const { container } = render(<MathNodeView {...defaultProps} selected={true} />);\n await waitFor(() => {\n const toolbar = container.querySelector('[data-toolbar-for]');\n expect(toolbar).toBeInTheDocument();\n expect(toolbar.style.top).toBe('100px');\n expect(toolbar.style.left).toBe('50px');\n });\n });\n\n it('offsets position by portal container getBoundingClientRect', async () => {\n const containerEl = document.createElement('div');\n containerEl.getBoundingClientRect = jest.fn(() => ({ top: 100, left: 50, width: 600, height: 400 }));\n\n const editor = {\n ...defaultProps.editor,\n _tiptapContainerEl: containerEl,\n };\n\n const { container } = render(<MathNodeView {...defaultProps} editor={editor} selected={true} />);\n await waitFor(() => {\n const toolbar = container.querySelector('[data-toolbar-for]');\n expect(toolbar).toBeInTheDocument();\n expect(toolbar.style.top).toBe('0px');\n expect(toolbar.style.left).toBe('0px');\n });\n });\n\n it('applies absolute positioning style to toolbar', async () => {\n const { container } = render(<MathNodeView {...defaultProps} selected={true} />);\n await waitFor(() => {\n const toolbar = container.querySelector('[data-toolbar-for]');\n expect(toolbar).toBeInTheDocument();\n expect(toolbar.style.position).toBe('absolute');\n });\n });\n\n it('renders above other editor overlays with a high z-index', async () => {\n const { container } = render(<MathNodeView {...defaultProps} selected={true} />);\n await waitFor(() => {\n const toolbar = container.querySelector('[data-toolbar-for]');\n expect(toolbar).toBeInTheDocument();\n expect(toolbar.style.zIndex).toBe('1000');\n });\n });\n\n it('updates position from coordsAtPos when selection changes', async () => {\n const editor = {\n ...defaultProps.editor,\n view: {\n ...defaultProps.editor.view,\n coordsAtPos: jest.fn(() => ({ top: 200, left: 150 })),\n dispatch: jest.fn(),\n },\n };\n\n const { container } = render(<MathNodeView {...defaultProps} editor={editor} selected={true} />);\n await waitFor(() => {\n const toolbar = container.querySelector('[data-toolbar-for]');\n expect(toolbar).toBeInTheDocument();\n expect(toolbar.style.top).toBe('200px');\n expect(toolbar.style.left).toBe('150px');\n });\n });\n\n it('clamps toolbar position to viewport margins', async () => {\n const originalInnerHeight = window.innerHeight;\n const originalInnerWidth = window.innerWidth;\n\n Object.defineProperty(window, 'innerHeight', { configurable: true, writable: true, value: 200 });\n Object.defineProperty(window, 'innerWidth', { configurable: true, writable: true, value: 300 });\n\n const editor = {\n ...defaultProps.editor,\n view: {\n ...defaultProps.editor.view,\n coordsAtPos: jest.fn(() => ({ top: 190, left: 280, bottom: 195 })),\n dispatch: jest.fn(),\n },\n };\n\n const { container } = render(<MathNodeView {...defaultProps} editor={editor} selected={true} />);\n\n let toolbar;\n await waitFor(() => {\n toolbar = container.querySelector('[data-toolbar-for]');\n expect(toolbar).toBeInTheDocument();\n });\n\n Object.defineProperty(toolbar, 'offsetHeight', { configurable: true, value: 100 });\n Object.defineProperty(toolbar, 'offsetWidth', { configurable: true, value: 150 });\n\n await act(async () => {\n window.dispatchEvent(new Event('resize'));\n await new Promise((resolve) => requestAnimationFrame(resolve));\n });\n\n await waitFor(() => {\n expect(parseInt(toolbar.style.top, 10)).toBeLessThanOrEqual(200 - 100 - 8);\n expect(parseInt(toolbar.style.left, 10)).toBeLessThanOrEqual(300 - 150 - 8);\n expect(parseInt(toolbar.style.top, 10)).toBeGreaterThanOrEqual(8);\n expect(parseInt(toolbar.style.left, 10)).toBeGreaterThanOrEqual(8);\n });\n\n Object.defineProperty(window, 'innerHeight', { configurable: true, writable: true, value: originalInnerHeight });\n Object.defineProperty(window, 'innerWidth', { configurable: true, writable: true, value: originalInnerWidth });\n });\n\n it('attaches scroll and resize listeners while toolbar is open', async () => {\n const addSpy = jest.spyOn(window, 'addEventListener');\n render(<MathNodeView {...defaultProps} selected={true} />);\n await waitFor(() => {\n expect(addSpy).toHaveBeenCalledWith('scroll', expect.any(Function), true);\n expect(addSpy).toHaveBeenCalledWith('resize', expect.any(Function));\n });\n addSpy.mockRestore();\n });\n\n it('portals toolbar into _tiptapContainerEl when available', async () => {\n const containerEl = document.createElement('div');\n containerEl.getBoundingClientRect = jest.fn(() => ({ top: 0, left: 0, width: 600, height: 400 }));\n\n const editor = {\n ...defaultProps.editor,\n _tiptapContainerEl: containerEl,\n };\n\n mockCreatePortal.mockClear();\n render(<MathNodeView {...defaultProps} editor={editor} selected={true} />);\n await waitFor(() => {\n expect(mockCreatePortal).toHaveBeenCalled();\n const lastCall = mockCreatePortal.mock.calls[mockCreatePortal.mock.calls.length - 1];\n expect(lastCall[1]).toBe(containerEl);\n });\n });\n\n it('portals toolbar into document.body when _tiptapContainerEl is not set', async () => {\n const editor = {\n ...defaultProps.editor,\n _tiptapContainerEl: undefined,\n };\n\n mockCreatePortal.mockClear();\n render(<MathNodeView {...defaultProps} editor={editor} selected={true} />);\n await waitFor(() => {\n expect(mockCreatePortal).toHaveBeenCalled();\n const lastCall = mockCreatePortal.mock.calls[mockCreatePortal.mock.calls.length - 1];\n expect(lastCall[1]).toBe(document.body);\n });\n });\n });\n\n it('calls updateAttributes when latex changes', async () => {\n const { getByTestId } = render(<MathNodeView {...defaultProps} selected={true} />);\n await waitFor(() => {\n const input = getByTestId('math-input');\n fireEvent.change(input, { target: { value: 'y^2' } });\n });\n expect(defaultProps.updateAttributes).toHaveBeenCalledWith({ latex: 'y^2' });\n });\n\n it('closes toolbar and updates attributes when done', async () => {\n const updateAttributes = jest.fn();\n const { getByTestId } = render(\n <MathNodeView {...defaultProps} updateAttributes={updateAttributes} selected={true} />,\n );\n\n await waitFor(() => {\n expect(getByTestId('done-button')).toBeInTheDocument();\n });\n\n const doneButton = getByTestId('done-button');\n fireEvent.click(doneButton);\n\n await waitFor(() => {\n expect(updateAttributes).toHaveBeenCalledWith({ latex: 'x^2' });\n });\n });\n\n it('sets editor._toolbarOpened when toolbar is shown', async () => {\n const { getByTestId } = render(<MathNodeView {...defaultProps} selected={true} />);\n await waitFor(() => {\n expect(getByTestId('math-toolbar')).toBeInTheDocument();\n expect(defaultProps.editor._toolbarOpened).toBe(true);\n });\n });\n\n it('unsets editor._toolbarOpened when toolbar is closed and node is not selected', async () => {\n const { getByTestId } = render(<MathNodeView {...defaultProps} selected={false} />);\n\n fireEvent.click(getByTestId('math-preview'));\n\n await waitFor(() => {\n expect(getByTestId('math-toolbar')).toBeInTheDocument();\n expect(defaultProps.editor._toolbarOpened).toBe(true);\n });\n\n fireEvent.click(getByTestId('done-button'));\n\n await waitFor(() => {\n expect(defaultProps.editor._toolbarOpened).toBe(false);\n });\n });\n\n it('keeps editor._toolbarOpened true while the math node remains selected', async () => {\n const { getByTestId } = render(<MathNodeView {...defaultProps} selected={true} />);\n\n await waitFor(() => {\n expect(getByTestId('done-button')).toBeInTheDocument();\n expect(defaultProps.editor._toolbarOpened).toBe(true);\n });\n\n fireEvent.click(getByTestId('done-button'));\n\n await waitFor(() => {\n expect(defaultProps.editor._toolbarOpened).toBe(true);\n });\n });\n\n it('closes toolbar on outside click and runs handleDone', async () => {\n const updateAttributes = jest.fn();\n const editor = createMockEditor();\n const { TextSelection } = require('prosemirror-state');\n const { queryByTestId } = render(\n <MathNodeView {...defaultProps} editor={editor} updateAttributes={updateAttributes} selected={true} />,\n );\n\n await waitFor(() => {\n expect(queryByTestId('math-toolbar')).toBeInTheDocument();\n });\n\n fireEvent.click(document.body);\n\n await waitFor(() => {\n expect(queryByTestId('math-toolbar')).not.toBeInTheDocument();\n expect(updateAttributes).toHaveBeenCalledWith({ latex: 'x^2' });\n expect(TextSelection.create).toHaveBeenCalledWith(editor.state.doc, 1);\n expect(editor.state.tr.setSelection).toHaveBeenCalled();\n expect(editor.view.dispatch).toHaveBeenCalledWith(editor.state.tr);\n expect(editor.commands.focus).toHaveBeenCalled();\n expect(editor._toolbarOpened).toBe(true);\n });\n });\n\n it('re-registers click listener when node changes', async () => {\n const addEventListenerSpy = jest.spyOn(document, 'addEventListener');\n const removeEventListenerSpy = jest.spyOn(document, 'removeEventListener');\n const nodeA = { attrs: { latex: 'x^2' } };\n const nodeB = { attrs: { latex: 'y^2' } };\n\n const { rerender } = render(<MathNodeView {...defaultProps} node={nodeA} selected={true} />);\n\n await waitFor(() => {\n expect(addEventListenerSpy).toHaveBeenCalledWith('click', expect.any(Function));\n });\n\n const initialCallCount = addEventListenerSpy.mock.calls.length;\n\n rerender(<MathNodeView {...defaultProps} node={nodeB} selected={true} />);\n\n await waitFor(() => {\n expect(removeEventListenerSpy).toHaveBeenCalled();\n expect(addEventListenerSpy.mock.calls.length).toBeGreaterThan(initialCallCount);\n });\n\n addEventListenerSpy.mockRestore();\n removeEventListenerSpy.mockRestore();\n });\n\n it('does not close toolbar when clicking the math node preview', async () => {\n const { getByTestId, queryByTestId } = render(<MathNodeView {...defaultProps} selected={true} />);\n\n await waitFor(() => {\n expect(queryByTestId('math-toolbar')).toBeInTheDocument();\n });\n\n fireEvent.click(getByTestId('math-preview'));\n\n await waitFor(() => {\n expect(queryByTestId('math-toolbar')).toBeInTheDocument();\n });\n });\n\n describe('unique math-node class per instance', () => {\n let dateNowSpy;\n\n beforeEach(() => {\n let timestamp = 1000;\n dateNowSpy = jest.spyOn(Date, 'now').mockImplementation(() => timestamp++);\n });\n\n afterEach(() => {\n dateNowSpy.mockRestore();\n });\n\n // The wrapper is an emotion styled() component, so className also carries\n // emotion's generated class - assert on the math-node token, not equality.\n it('assigns a timestamp-based class to NodeViewWrapper', () => {\n const { getByTestId } = render(<MathNodeView {...defaultProps} />);\n const wrapper = getByTestId('node-view-wrapper');\n\n expect(Array.from(wrapper.classList).some((c) => /^math-node-\\d+$/.test(c))).toBe(true);\n });\n\n it('assigns a different class to each MathNodeView instance', () => {\n const { getAllByTestId } = render(\n <>\n <MathNodeView {...defaultProps} />\n <MathNodeView {...defaultProps} node={{ attrs: { latex: 'y^2' } }} />\n </>,\n );\n\n const wrappers = getAllByTestId('node-view-wrapper');\n const mathNodeClass = (el) => Array.from(el.classList).find((c) => c.startsWith('math-node-'));\n\n expect(mathNodeClass(wrappers[0])).toBe('math-node-1000');\n expect(mathNodeClass(wrappers[1])).toBe('math-node-1001');\n // and they must differ\n expect(mathNodeClass(wrappers[0])).not.toBe(mathNodeClass(wrappers[1]));\n });\n\n it('closes toolbar when clicking a different math node', async () => {\n const updateAttributes = jest.fn();\n const editorA = createMockEditor();\n const editorB = createMockEditor();\n\n const { getAllByTestId, queryAllByTestId } = render(\n <>\n <MathNodeView {...defaultProps} editor={editorA} updateAttributes={updateAttributes} selected={false} />\n <MathNodeView {...defaultProps} editor={editorB} node={{ attrs: { latex: 'y^2' } }} selected={false} />\n </>,\n );\n\n fireEvent.click(getAllByTestId('math-preview')[0]);\n\n await waitFor(() => {\n expect(queryAllByTestId('math-toolbar')).toHaveLength(1);\n });\n\n const secondPreview = getAllByTestId('math-preview')[1];\n fireEvent.click(secondPreview);\n\n await waitFor(() => {\n expect(queryAllByTestId('math-toolbar')).toHaveLength(1);\n expect(updateAttributes).toHaveBeenCalledWith({ latex: 'x^2' });\n expect(editorA._toolbarOpened).toBe(false);\n expect(getAllByTestId('math-input')[0]).toHaveValue('y^2');\n });\n });\n });\n\n describe('selection-based toolbar guard', () => {\n it('opens toolbar when selected transitions to true and the editor has a NodeSelection on math', async () => {\n const { queryByTestId, rerender } = render(<MathNodeView {...defaultProps} selected={false} />);\n expect(queryByTestId('math-toolbar')).not.toBeInTheDocument();\n\n rerender(<MathNodeView {...defaultProps} selected={true} />);\n await waitFor(() => {\n expect(queryByTestId('math-toolbar')).toBeInTheDocument();\n });\n });\n\n it('does not open toolbar when selected briefly becomes true but editor selection has no node (Cmd+A / drag case)', async () => {\n const editor = {\n ...defaultProps.editor,\n state: {\n ...defaultProps.editor.state,\n selection: { from: 0, to: 100 }, // no .node — TextSelection / AllSelection shape\n },\n };\n\n const { queryByTestId, rerender } = render(<MathNodeView {...defaultProps} editor={editor} selected={false} />);\n rerender(<MathNodeView {...defaultProps} editor={editor} selected={true} />);\n\n await act(async () => {});\n expect(queryByTestId('math-toolbar')).not.toBeInTheDocument();\n });\n\n it('does not open toolbar when selected briefly becomes true but NodeSelection targets a non-math node', async () => {\n const editor = {\n ...defaultProps.editor,\n state: {\n ...defaultProps.editor.state,\n selection: { from: 0, to: 1, node: { type: { name: 'image' } } },\n },\n };\n\n const { queryByTestId, rerender } = render(<MathNodeView {...defaultProps} editor={editor} selected={false} />);\n rerender(<MathNodeView {...defaultProps} editor={editor} selected={true} />);\n\n await act(async () => {});\n expect(queryByTestId('math-toolbar')).not.toBeInTheDocument();\n });\n });\n\n it('does not close toolbar when clicking equation editor dropdown', async () => {\n const { queryByTestId } = render(<MathNodeView {...defaultProps} selected={true} />);\n\n await waitFor(() => {\n expect(queryByTestId('math-toolbar')).toBeInTheDocument();\n });\n\n // Simulate MUI Select's portal dropdown container.\n const dropdown = document.createElement('div');\n dropdown.id = 'equation-editor-select-listbox';\n document.body.appendChild(dropdown);\n\n fireEvent.click(dropdown);\n\n await waitFor(() => {\n expect(queryByTestId('math-toolbar')).toBeInTheDocument();\n });\n\n document.body.removeChild(dropdown);\n });\n\n it('renders with empty latex', () => {\n const nodeWithEmptyLatex = { attrs: { latex: '' } };\n const { getByTestId } = render(<MathNodeView {...defaultProps} node={nodeWithEmptyLatex} />);\n expect(getByTestId('math-preview')).toBeInTheDocument();\n });\n\n it('has correct styling on NodeViewWrapper', () => {\n const { getByTestId } = render(<MathNodeView {...defaultProps} />);\n const wrapper = getByTestId('node-view-wrapper');\n expect(wrapper).toHaveStyle({ display: 'inline-flex', cursor: 'pointer' });\n });\n});\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAC,uBAAA,CAAAJ,OAAA;AAAoD,IAAAK,SAAA;AAAA,SAAAD,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,wBAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,mBAAAT,CAAA,iBAAAA,CAAA,gBAAAU,QAAA,CAAAV,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,cAAAM,EAAA,IAAAd,CAAA,gBAAAc,EAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,EAAA,OAAAP,CAAA,IAAAD,CAAA,GAAAW,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAc,EAAA,OAAAP,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAM,EAAA,EAAAP,CAAA,IAAAC,CAAA,CAAAM,EAAA,IAAAd,CAAA,CAAAc,EAAA,WAAAN,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,SAAAmB,QAAApB,CAAA,EAAAG,CAAA,QAAAF,CAAA,GAAAgB,MAAA,CAAAI,IAAA,CAAArB,CAAA,OAAAiB,MAAA,CAAAK,qBAAA,QAAAhB,CAAA,GAAAW,MAAA,CAAAK,qBAAA,CAAAtB,CAAA,GAAAG,CAAA,KAAAG,CAAA,GAAAA,CAAA,CAAAiB,MAAA,WAAApB,CAAA,WAAAc,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAG,CAAA,EAAAqB,UAAA,OAAAvB,CAAA,CAAAwB,IAAA,CAAAC,KAAA,CAAAzB,CAAA,EAAAK,CAAA,YAAAL,CAAA;AAAA,SAAA0B,cAAA3B,CAAA,aAAAG,CAAA,MAAAA,CAAA,GAAAyB,SAAA,CAAAC,MAAA,EAAA1B,CAAA,UAAAF,CAAA,WAAA2B,SAAA,CAAAzB,CAAA,IAAAyB,SAAA,CAAAzB,CAAA,QAAAA,CAAA,OAAAiB,OAAA,CAAAH,MAAA,CAAAhB,CAAA,OAAA6B,OAAA,WAAA3B,CAAA,QAAA4B,gBAAA,aAAA/B,CAAA,EAAAG,CAAA,EAAAF,CAAA,CAAAE,CAAA,SAAAc,MAAA,CAAAe,yBAAA,GAAAf,MAAA,CAAAgB,gBAAA,CAAAjC,CAAA,EAAAiB,MAAA,CAAAe,yBAAA,CAAA/B,CAAA,KAAAmB,OAAA,CAAAH,MAAA,CAAAhB,CAAA,GAAA6B,OAAA,WAAA3B,CAAA,IAAAc,MAAA,CAAAC,cAAA,CAAAlB,CAAA,EAAAG,CAAA,EAAAc,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAE,CAAA,iBAAAH,CAAA;AAEpDkC,IAAI,CAACC,IAAI,CAAC,eAAe,EAAE;EAAA,OAAO;IAChCC,eAAe,EAAE,SAAjBA,eAAeA,CAAAC,IAAA;MAAA,IAAKC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;QAAKC,KAAK,OAAAC,yBAAA,aAAAH,IAAA,EAAAtC,SAAA;MAAA,oBACpCP,MAAA,YAAAiD,aAAA,YAAAC,SAAA;QAAK,eAAY;MAAmB,GAAKH,KAAK,GAC3CD,QACE,CAAC;IAAA,CACP;IACDK,qBAAqB,EAAET,IAAI,CAACU,EAAE,CAAC,UAACC,SAAS;MAAA,OAAKA,SAAS;IAAA;EACzD,CAAC;AAAA,CAAC,CAAC;AAEH,IAAMC,gBAAgB,GAAGZ,IAAI,CAACU,EAAE,CAAC,UAACG,IAAI;EAAA,OAAKA,IAAI;AAAA,EAAC;AAChDb,IAAI,CAACC,IAAI,CAAC,WAAW,EAAE;EAAA,OAAAR,aAAA,CAAAA,aAAA,KAClBO,IAAI,CAACc,aAAa,CAAC,WAAW,CAAC;IAClCC,YAAY,EAAE,SAAdA,YAAYA,CAAA;MAAA,OAAeH,gBAAgB,CAAApB,KAAA,SAAAE,SAAQ,CAAC;IAAA;EAAA;AAAA,CACpD,CAAC;AAEHM,IAAI,CAACC,IAAI,CAAC,uBAAuB,EAAE,YAAM;EACvC,IAAMe,KAAK,GAAGxD,OAAO,CAAC,OAAO,CAAC;EAC9B,OAAO;IACLyD,WAAW,EAAE,SAAbA,WAAWA,CAAAC,KAAA;MAAA,IAAKC,KAAK,GAAAD,KAAA,CAALC,KAAK;MAAA,oBAAOH,KAAA,CAAAT,aAAA;QAAK,eAAY;MAAc,GAAEY,KAAW,CAAC;IAAA;IACzEC,WAAW,EAAE,SAAbA,WAAWA,CAAAC,KAAA,EAAmC;MAAA,IAA9BF,KAAK,GAAAE,KAAA,CAALF,KAAK;QAAEG,SAAQ,GAAAD,KAAA,CAARC,QAAQ;QAAEC,MAAM,GAAAF,KAAA,CAANE,MAAM;MACrC,IAAAC,eAAA,GAAoCR,KAAK,CAACS,QAAQ,CAACN,KAAK,CAAC;QAAAO,gBAAA,OAAAC,eAAA,aAAAH,eAAA;QAAlDI,UAAU,GAAAF,gBAAA;QAAEG,aAAa,GAAAH,gBAAA;MAChC,oBACEV,KAAA,CAAAT,aAAA;QAAK,eAAY;MAAc,gBAC7BS,KAAA,CAAAT,aAAA;QACE,eAAY,YAAY;QACxBuB,KAAK,EAAEF,UAAW;QAClBN,QAAQ,EAAE,SAAVA,QAAQA,CAAGxD,CAAC,EAAK;UACf+D,aAAa,CAAC/D,CAAC,CAACiE,MAAM,CAACD,KAAK,CAAC;UAC7BR,SAAQ,CAACxD,CAAC,CAACiE,MAAM,CAACD,KAAK,CAAC;QAC1B;MAAE,CACH,CAAC,eACFd,KAAA,CAAAT,aAAA;QAAQ,eAAY,aAAa;QAACyB,OAAO,EAAE,SAATA,OAAOA,CAAA;UAAA,OAAQT,MAAM,CAACK,UAAU,CAAC;QAAA;MAAC,GAAC,MAE7D,CACL,CAAC;IAEV;EACF,CAAC;AACH,CAAC,CAAC;AAEF5B,IAAI,CAACC,IAAI,CAAC,yBAAyB,EAAE;EAAA,OAAO;IAC1CgC,QAAQ,EAAE,SAAVA,QAAQA,CAAGd,KAAK,EAAEe,OAAO;MAAA,OAAKf,KAAK;IAAA;EACrC,CAAC;AAAA,CAAC,CAAC;AAEHnB,IAAI,CAACC,IAAI,CAAC,cAAc,EAAE;EAAA,OAAO;IAC/BkC,IAAI,EAAE;MACJC,MAAM,EAAEpC,IAAI,CAACU,EAAE,CAAC,UAAC2B,MAAM;QAAA,OAAKA,MAAM;MAAA;IACpC;EACF,CAAC;AAAA,CAAC,CAAC;AAEHrC,IAAI,CAACC,IAAI,CAAC,mBAAmB,EAAE;EAAA,OAAO;IACpCqC,MAAM,EAAEtC,IAAI,CAACU,EAAE,CAAC,UAAU2B,MAAM,EAAE;MAChC,OAAOA,MAAM;IACf,CAAC,CAAC;IACFE,SAAS,EAAEvC,IAAI,CAACU,EAAE,CAAC,UAAU8B,GAAG,EAAE;MAChC,IAAI,CAACA,GAAG,GAAGA,GAAG;IAChB,CAAC,CAAC;IACFC,aAAa,EAAE;MACbL,MAAM,EAAEpC,IAAI,CAACU,EAAE,CAAC,UAACgC,GAAG,EAAEC,GAAG;QAAA,OAAM;UAAEC,IAAI,EAAE,MAAM;UAAED,GAAG,EAAHA;QAAI,CAAC;MAAA,CAAC;IACvD,CAAC;IACDE,aAAa,EAAE;MACbT,MAAM,EAAEpC,IAAI,CAACU,EAAE,CAAC,UAACgC,GAAG,EAAEC,GAAG;QAAA,OAAM;UAAEC,IAAI,EAAE,MAAM;UAAED,GAAG,EAAHA;QAAI,CAAC;MAAA,CAAC;IACvD;EACF,CAAC;AAAA,CAAC,CAAC;AAEHG,QAAQ,CAAC,UAAU,EAAE,YAAM;EACzBA,QAAQ,CAAC,eAAe,EAAE,YAAM;IAC9BC,EAAE,CAAC,kBAAkB,EAAE,YAAM;MAC3BC,MAAM,CAACC,cAAQ,CAACC,IAAI,CAAC,CAACC,IAAI,CAAC,MAAM,CAAC;IACpC,CAAC,CAAC;IAEFJ,EAAE,CAAC,WAAW,EAAE,YAAM;MACpBC,MAAM,CAACC,cAAQ,CAACG,MAAM,CAAC,CAACD,IAAI,CAAC,IAAI,CAAC;IACpC,CAAC,CAAC;IAEFJ,EAAE,CAAC,oBAAoB,EAAE,YAAM;MAC7BC,MAAM,CAACC,cAAQ,CAACI,KAAK,CAAC,CAACF,IAAI,CAAC,QAAQ,CAAC;IACvC,CAAC,CAAC;IAEFJ,EAAE,CAAC,WAAW,EAAE,YAAM;MACpBC,MAAM,CAACC,cAAQ,CAACK,IAAI,CAAC,CAACH,IAAI,CAAC,IAAI,CAAC;IAClC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFL,QAAQ,CAAC,eAAe,EAAE,YAAM;IAC9BC,EAAE,CAAC,6BAA6B,EAAE,YAAM;MACtC,IAAMQ,UAAU,GAAGN,cAAQ,CAACO,aAAa,CAAC,CAAC;MAE3CR,MAAM,CAACO,UAAU,CAAC,CAACE,cAAc,CAAC,OAAO,CAAC;MAC1CT,MAAM,CAACO,UAAU,CAAC,CAACE,cAAc,CAAC,SAAS,CAAC;MAC5CT,MAAM,CAACO,UAAU,CAAC,CAACE,cAAc,CAAC,MAAM,CAAC;MAEzCT,MAAM,CAACO,UAAU,CAACpC,KAAK,CAAC,CAACuC,OAAO,CAAC;QAAE,WAAS;MAAG,CAAC,CAAC;MACjDV,MAAM,CAACO,UAAU,CAACrB,OAAO,CAAC,CAACwB,OAAO,CAAC;QAAE,WAAS;MAAK,CAAC,CAAC;MACrDV,MAAM,CAACO,UAAU,CAACI,IAAI,CAAC,CAACD,OAAO,CAAC;QAAE,WAAS;MAAK,CAAC,CAAC;IACpD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFZ,QAAQ,CAAC,WAAW,EAAE,YAAM;IAC1BC,EAAE,CAAC,iCAAiC,EAAE,YAAM;MAC1C,IAAMa,KAAK,GAAGX,cAAQ,CAACY,SAAS,CAAC,CAAC;MAElCb,MAAM,CAACc,KAAK,CAACC,OAAO,CAACH,KAAK,CAAC,CAAC,CAACT,IAAI,CAAC,IAAI,CAAC;MACvCH,MAAM,CAACY,KAAK,CAAC,CAACI,YAAY,CAAC,CAAC,CAAC;MAC7BhB,MAAM,CAACY,KAAK,CAAC,CAAC,CAAC,CAAC,CAACH,cAAc,CAAC,KAAK,EAAE,kBAAkB,CAAC;IAC5D,CAAC,CAAC;IAEFV,EAAE,CAAC,kCAAkC,EAAE,YAAM;MAC3C,IAAMa,KAAK,GAAGX,cAAQ,CAACY,SAAS,CAAC,CAAC;MAClCb,MAAM,CAACY,KAAK,CAAC,CAAC,CAAC,CAAC,CAACH,cAAc,CAAC,KAAK,EAAE,0BAA0B,CAAC;IACpE,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFX,QAAQ,CAAC,YAAY,EAAE,YAAM;IAC3BC,EAAE,CAAC,+CAA+C,EAAE,YAAM;MACxD,IAAMkB,MAAM,GAAGhB,cAAQ,CAACiB,UAAU,CAAC;QACjCC,cAAc,EAAE;UACdR,IAAI,EAAE;QACR;MACF,CAAC,CAAC;MAEFX,MAAM,CAACiB,MAAM,CAAC,CAAC,CAAC,CAAC,CAACd,IAAI,CAAC,MAAM,CAAC;MAC9BH,MAAM,CAACiB,MAAM,CAAC,CAAC,CAAC,CAAC,CAACR,cAAc,CAAC,WAAW,EAAE,QAAQ,CAAC;IACzD,CAAC,CAAC;IAEFV,EAAE,CAAC,kDAAkD,EAAE,YAAM;MAC3D,IAAMkB,MAAM,GAAGhB,cAAQ,CAACiB,UAAU,CAAC;QACjCC,cAAc,EAAE;UACdhD,KAAK,EAAE;QACT;MACF,CAAC,CAAC;MAEF6B,MAAM,CAACiB,MAAM,CAAC,CAAC,CAAC,CAAC,CAACd,IAAI,CAAC,MAAM,CAAC;MAC9BH,MAAM,CAACiB,MAAM,CAAC,CAAC,CAAC,CAAC,CAACR,cAAc,CAAC,YAAY,EAAE,EAAE,CAAC;MAClDT,MAAM,CAACiB,MAAM,CAAC,CAAC,CAAC,CAAC,CAACR,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC;IACrD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFX,QAAQ,CAAC,aAAa,EAAE,YAAM;IAC5BC,EAAE,CAAC,4BAA4B,EAAE,YAAM;MACrC,IAAMqB,QAAQ,GAAGnB,cAAQ,CAACoB,WAAW,CAAC,CAAC;MAEvCrB,MAAM,CAACoB,QAAQ,CAAC,CAACX,cAAc,CAAC,YAAY,CAAC;MAC7CT,MAAM,KAAAsB,QAAA,aAAQF,QAAQ,CAACG,UAAU,EAAC,CAACpB,IAAI,CAAC,UAAU,CAAC;IACrD,CAAC,CAAC;IAEFJ,EAAE,CAAC,0DAA0D,EAAE,YAAM;MACnE,IAAMyB,mBAAmB,GAAGxE,IAAI,CAACyE,KAAK,CAAC9G,YAAY,EAAE,kBAAkB,CAAC;MACxE,IAAM+G,QAAQ,GAAG;QAAE9B,IAAI,EAAE;UAAEM,IAAI,EAAE;QAAO,CAAC;QAAEyB,QAAQ,EAAE;MAAE,CAAC;MACxD,IAAMC,EAAE,GAAG;QACTC,MAAM,EAAE7E,IAAI,CAACU,EAAE,CAAC,CAAC,CAACoE,cAAc,CAAC,CAAC;QAClCC,YAAY,EAAE/E,IAAI,CAACU,EAAE,CAAC,CAAC,CAACoE,cAAc,CAAC,CAAC;QACxCpC,GAAG,EAAE,CAAC;MACR,CAAC;MACD,IAAMsC,MAAM,GAAG;QACbC,IAAI,EAAE;UACJC,KAAK,EAAE;YACLC,MAAM,EAAE;cAAEC,KAAK,EAAE;gBAAEC,IAAI,EAAE;kBAAEjD,MAAM,EAAEpC,IAAI,CAACU,EAAE,CAAC;oBAAA,OAAMgE,QAAQ;kBAAA;gBAAE;cAAE;YAAE,CAAC;YAChEY,SAAS,EAAE;cAAEC,KAAK,EAAE;gBAAE5C,GAAG,EAAE;cAAE;YAAE;UACjC;QACF;MACF,CAAC;MACD,IAAM6C,QAAQ,GAAGxF,IAAI,CAACU,EAAE,CAAC,CAAC;MAC1B,IAAM6D,UAAU,GAAGtB,cAAQ,CAACoB,WAAW,CAAC,CAAC,CAACE,UAAU,CAAC,KAAK,CAAC;MAE3DA,UAAU,CAAC;QAAEK,EAAE,EAAFA,EAAE;QAAEI,MAAM,EAANA,MAAM;QAAEQ,QAAQ,EAARA;MAAS,CAAC,CAAC;MAEpCxC,MAAM,CAAC4B,EAAE,CAACC,MAAM,CAAC,CAACY,oBAAoB,CAAC,CAAC,EAAEf,QAAQ,CAAC;MACnD1B,MAAM,CAAC4B,EAAE,CAACG,YAAY,CAAC,CAACW,gBAAgB,CAAC,CAAC;MAC1C1C,MAAM,CAACwC,QAAQ,CAAC,CAACC,oBAAoB,CAACb,EAAE,CAAC;MACzC5B,MAAM,CAACwB,mBAAmB,CAAC,CAACiB,oBAAoB,CAACT,MAAM,EAAE,IAAI,CAAC;MAE9DR,mBAAmB,CAACmB,WAAW,CAAC,CAAC;IACnC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF7C,QAAQ,CAAC,aAAa,EAAE,YAAM;IAC5BC,EAAE,CAAC,sCAAsC,EAAE,YAAM;MAC/C,IAAMkB,MAAM,GAAGhB,cAAQ,CAAC2C,WAAW,CAAC,CAAC;MAErC5C,MAAM,CAACiB,MAAM,CAAC,CAAC4B,WAAW,CAAC,CAAC;IAC9B,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF/C,QAAQ,CAAC,uBAAuB,EAAE,YAAM;IACtCC,EAAE,CAAC,+DAA+D,EAAE,YAAM;MACxE,IAAM+C,OAAO,GAAG7C,cAAQ,CAAC8C,qBAAqB,CAAC,CAAC;MAEhD/C,MAAM,CAAC8C,OAAO,CAAC,CAAC9B,YAAY,CAAC,CAAC,CAAC;MAC/BhB,MAAM,CAAC8C,OAAO,CAAC,CAAC,CAAC,CAACE,iBAAiB,CAAC,CAACH,WAAW,CAAC,CAAC;MAClD7C,MAAM,CAAC8C,OAAO,CAAC,CAAC,CAAC,CAACzF,KAAK,CAAC4F,aAAa,CAAC,CAACJ,WAAW,CAAC,CAAC;IACtD,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF/C,QAAQ,CAAC,2BAA2B,EAAE,YAAM;EAC1CC,EAAE,CAAC,mEAAmE,EAAE,YAAM;IAC5E,IAAMmD,MAAM,GAAG,IAAAC,+BAAyB,EAAC,MAAM,CAAC;IAChD,IAAMC,QAAQ,GAAG;MAAExD,IAAI,EAAE;QAAEM,IAAI,EAAE;MAAO;IAAE,CAAC;IAC3C,IAAMwB,QAAQ,GAAG;MAAE9B,IAAI,EAAE;QAAEM,IAAI,EAAE;MAAO,CAAC;MAAEyB,QAAQ,EAAE;IAAE,CAAC;IACxD,IAAMC,EAAE,GAAG;MAAEC,MAAM,EAAE7E,IAAI,CAACU,EAAE,CAAC;IAAE,CAAC;IAEhC,IAAM2F,QAAQ,GAAG;MACflB,MAAM,EAAE;QAAEmB,IAAI,EAAEtG,IAAI,CAACU,EAAE,CAAC,UAACoB,KAAK;UAAA,OAAM;YAAEc,IAAI,EAAEwD,QAAQ,CAACxD,IAAI;YAAE0D,IAAI,EAAExE;UAAM,CAAC;QAAA,CAAC;MAAE,CAAC;MAC5E8C,EAAE,EAAFA,EAAE;MACFlC,GAAG,EAAE;QACH6D,WAAW,EAAE,SAAbA,WAAWA,CAAGC,EAAE;UAAA,OAAKA,EAAE,CAAC9B,QAAQ,EAAE,CAAC,CAAC;QAAA;QACpC+B,MAAM,EAAEzG,IAAI,CAACU,EAAE,CAAC;UAAA,OAAM,IAAI;QAAA;MAC5B;IACF,CAAC;IAED,IAAMuD,MAAM,GAAGiC,MAAM,CAACF,iBAAiB,CAAC,CAAC;MAAEU,UAAU,EAAE;IAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAEL,QAAQ,CAAC;IAE7ErD,MAAM,CAAC4B,EAAE,CAACC,MAAM,CAAC,CAACY,oBAAoB,CAAC,CAAC,EAAEzC,MAAM,CAAC2D,QAAQ,CAAC,CAAC,CAAC;IAC5D3D,MAAM,CAACiB,MAAM,CAAC,CAACd,IAAI,CAACyB,EAAE,CAAC;EACzB,CAAC,CAAC;EAEF7B,EAAE,CAAC,yDAAyD,EAAE,YAAM;IAClE,IAAMmD,MAAM,GAAG,IAAAC,+BAAyB,EAAC,MAAM,CAAC;IAChD,IAAMvB,EAAE,GAAG;MAAEC,MAAM,EAAE7E,IAAI,CAACU,EAAE,CAAC;IAAE,CAAC;IAChC,IAAMgE,QAAQ,GAAG;MAAE9B,IAAI,EAAE;QAAEM,IAAI,EAAE;MAAO,CAAC;MAAEyB,QAAQ,EAAE;IAAE,CAAC;IAExD,IAAM0B,QAAQ,GAAG;MACflB,MAAM,EAAE;QAAEmB,IAAI,EAAEtG,IAAI,CAACU,EAAE,CAAC;MAAE,CAAC;MAC3BkE,EAAE,EAAFA,EAAE;MACFlC,GAAG,EAAE;QACH6D,WAAW,EAAE,SAAbA,WAAWA,CAAGC,EAAE;UAAA,OAAKA,EAAE,CAAC9B,QAAQ,EAAE,CAAC,CAAC;QAAA;QACpC+B,MAAM,EAAEzG,IAAI,CAACU,EAAE,CAAC;UAAA,OAAO;YAAEkC,IAAI,EAAE;cAAEM,IAAI,EAAE;YAAO;UAAE,CAAC;QAAA,CAAC;MACpD;IACF,CAAC;IAED,IAAMe,MAAM,GAAGiC,MAAM,CAACF,iBAAiB,CAAC,CAAC;MAAEU,UAAU,EAAE;IAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAEL,QAAQ,CAAC;IAE7ErD,MAAM,CAAC4B,EAAE,CAACC,MAAM,CAAC,CAAC+B,GAAG,CAAClB,gBAAgB,CAAC,CAAC;IACxC1C,MAAM,CAACiB,MAAM,CAAC,CAAC4C,QAAQ,CAAC,CAAC;EAC3B,CAAC,CAAC;EAEF9D,EAAE,CAAC,+CAA+C,EAAE,YAAM;IACxD,IAAMmD,MAAM,GAAG,IAAAC,+BAAyB,EAAC,MAAM,CAAC;IAEhD,IAAMlC,MAAM,GAAGiC,MAAM,CAACF,iBAAiB,CAAC,CAAC;MAAEU,UAAU,EAAE;IAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxE1D,MAAM,CAACiB,MAAM,CAAC,CAAC4C,QAAQ,CAAC,CAAC;EAC3B,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF/D,QAAQ,CAAC,8BAA8B,EAAE,YAAM;EAC7C,IAAMgE,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAAA;IAAA,IAAIC,gBAAgB,GAAArH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAsH,SAAA,GAAAtH,SAAA,MAAG,CAAC,CAAC;IAAA,OAAM;MAC3DuH,OAAO,EAAEjH,IAAI,CAACU,EAAE,CAAC,UAACiC,GAAG;QAAA,OAAAlD,aAAA;UACnByH,SAAS,EAAE,IAAI;UACfC,UAAU,EAAE,IAAI;UAChBxE,GAAG,EAAHA;QAAG,GACAoE,gBAAgB,CAACpE,GAAG,CAAC;MAAA,CACxB,CAAC;MACH8D,MAAM,EAAEzG,IAAI,CAACU,EAAE,CAAC,UAACiC,GAAG,EAAK;QACvB,IAAIA,GAAG,KAAK,CAAC,EAAE;UACb,OAAO;YAAEC,IAAI,EAAE;cAAEM,IAAI,EAAE;YAAO,CAAC;YAAEkE,WAAW,EAAE;UAAS,CAAC;QAC1D;QACA,IAAIzE,GAAG,KAAK,CAAC,EAAE;UACb,OAAO;YAAEC,IAAI,EAAE;cAAEM,IAAI,EAAE;YAAO,CAAC;YAAEyB,QAAQ,EAAE;UAAE,CAAC;QAChD;QACA,OAAO,IAAI;MACb,CAAC;IACH,CAAC;EAAA,CAAC;EAEF,IAAM0C,oCAAoC,GAAG,SAAvCA,oCAAoCA,CAAA;IAAA,OAAU;MAClDJ,OAAO,EAAEjH,IAAI,CAACU,EAAE,CAAC,UAACiC,GAAG;QAAA,OAAM;UAAEuE,SAAS,EAAE,IAAI;UAAEC,UAAU,EAAE,IAAI;UAAExE,GAAG,EAAHA;QAAI,CAAC;MAAA,CAAC,CAAC;MACvE8D,MAAM,EAAEzG,IAAI,CAACU,EAAE,CAAC,UAACiC,GAAG,EAAK;QACvB,IAAIA,GAAG,KAAK,CAAC,EAAE;UACb,OAAO;YAAEC,IAAI,EAAE;cAAEM,IAAI,EAAE;YAAO,CAAC;YAAEkE,WAAW,EAAE;UAAI,CAAC;QACrD;QACA,OAAO,IAAI;MACb,CAAC;IACH,CAAC;EAAA,CAAC;EAEF,IAAME,UAAU,GAAG,SAAbA,UAAUA,CAAA,EAA4C;IAAA,IAAAC,KAAA,GAAA7H,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAsH,SAAA,GAAAtH,SAAA,MAAP,CAAC,CAAC;MAAA8H,WAAA,GAAAD,KAAA,CAAjCrC,KAAK;MAAEuC,cAAc,GAAAD,WAAA,cAAG,CAAC,CAAC,GAAAA,WAAA;IAC9C,IAAMhC,QAAQ,GAAGxF,IAAI,CAACU,EAAE,CAAC,CAAC;IAC1B,IAAMkE,EAAE,GAAG;MACT,UAAQ5E,IAAI,CAACU,EAAE,CAAC,CAAC,CAACoE,cAAc,CAAC,CAAC;MAClCC,YAAY,EAAE/E,IAAI,CAACU,EAAE,CAAC,CAAC,CAACoE,cAAc,CAAC;IACzC,CAAC;IAED,OAAO;MACLI,KAAK,EAAAzF,aAAA;QACH6F,SAAS,EAAE;UAAEoC,IAAI,EAAE,CAAC;UAAEC,KAAK,EAAE;QAAK,CAAC;QACnCjF,GAAG,EAAEoE,wBAAwB,CAAC,CAAC;QAC/BlC,EAAE,EAAFA;MAAE,GACC6C,cAAc,CAClB;MACDjC,QAAQ,EAARA;IACF,CAAC;EACH,CAAC;EAED1C,QAAQ,CAAC,WAAW,EAAE,YAAM;IAC1BC,EAAE,CAAC,gEAAgE,EAAE,YAAM;MACzE,IAAMkC,IAAI,GAAGqC,UAAU,CAAC,CAAC;MACzB,IAAMM,OAAO,GAAGC,kCAA4B,CAACxH,KAAK,CAAC4F,aAAa,CAAChB,IAAI,EAAE;QAAEzC,GAAG,EAAE;MAAY,CAAC,CAAC;MAE5FQ,MAAM,CAAC4E,OAAO,CAAC,CAACzE,IAAI,CAAC,IAAI,CAAC;MAC1BH,MAAM,CAACiC,IAAI,CAACC,KAAK,CAACN,EAAE,UAAO,CAAC,CAACa,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;MACvDzC,MAAM,CAACiC,IAAI,CAACO,QAAQ,CAAC,CAACC,oBAAoB,CAACR,IAAI,CAACC,KAAK,CAACN,EAAE,CAAC;IAC3D,CAAC,CAAC;IAEF7B,EAAE,CAAC,qDAAqD,EAAE,YAAM;MAC9D,IAAMkC,IAAI,GAAGqC,UAAU,CAAC;QACtBpC,KAAK,EAAE;UACLxC,GAAG,EAAE2E,oCAAoC,CAAC;QAC5C;MACF,CAAC,CAAC;MAEF,IAAMO,OAAO,GAAGC,kCAA4B,CAACxH,KAAK,CAAC4F,aAAa,CAAChB,IAAI,EAAE;QAAEzC,GAAG,EAAE;MAAY,CAAC,CAAC;MAE5FQ,MAAM,CAAC4E,OAAO,CAAC,CAACzE,IAAI,CAAC,KAAK,CAAC;MAC3BH,MAAM,CAACiC,IAAI,CAACC,KAAK,CAACN,EAAE,UAAO,CAAC,CAACgC,GAAG,CAAClB,gBAAgB,CAAC,CAAC;MACnD1C,MAAM,CAACiC,IAAI,CAACO,QAAQ,CAAC,CAACoB,GAAG,CAAClB,gBAAgB,CAAC,CAAC;IAC9C,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF5C,QAAQ,CAAC,WAAW,EAAE,YAAM;IAC1BC,EAAE,CAAC,mDAAmD,EAAE,YAAM;MAC5D,IAAM2B,QAAQ,GAAG;QAAEC,QAAQ,EAAE;MAAE,CAAC;MAChC,IAAMM,IAAI,GAAGqC,UAAU,CAAC;QACtBpC,KAAK,EAAE;UACLxC,GAAG,EAAEoE,wBAAwB,CAAC;YAC5B,CAAC,EAAE;cAAEI,SAAS,EAAExC,QAAQ;cAAEyC,UAAU,EAAE,IAAI;cAAExE,GAAG,EAAE;YAAE;UACrD,CAAC;QACH;MACF,CAAC,CAAC;MACF,IAAAmF,QAAA,GAA0BtK,OAAO,CAAC,mBAAmB,CAAC;QAA9CqF,aAAa,GAAAiF,QAAA,CAAbjF,aAAa;MAErB,IAAM+E,OAAO,GAAGC,kCAA4B,CAACxH,KAAK,CAAC4F,aAAa,CAAChB,IAAI,EAAE;QAAEzC,GAAG,EAAE;MAAY,CAAC,CAAC;MAE5FQ,MAAM,CAAC4E,OAAO,CAAC,CAACzE,IAAI,CAAC,IAAI,CAAC;MAC1BH,MAAM,CAACiC,IAAI,CAACC,KAAK,CAACxC,GAAG,CAACuE,OAAO,CAAC,CAACxB,oBAAoB,CAAC,CAAC,CAAC;MACtDzC,MAAM,CAACH,aAAa,CAACT,MAAM,CAAC,CAACqD,oBAAoB,CAACR,IAAI,CAACC,KAAK,CAACxC,GAAG,EAAE,CAAC,CAAC;MACpEM,MAAM,CAACiC,IAAI,CAACO,QAAQ,CAAC,CAACE,gBAAgB,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF3C,EAAE,CAAC,mFAAmF,EAAE,YAAM;MAC5F,IAAMkC,IAAI,GAAGqC,UAAU,CAAC,CAAC;MACzB,IAAAS,SAAA,GAA0BvK,OAAO,CAAC,mBAAmB,CAAC;QAA9CiF,aAAa,GAAAsF,SAAA,CAAbtF,aAAa;MAErB,IAAMmF,OAAO,GAAGC,kCAA4B,CAACxH,KAAK,CAAC4F,aAAa,CAAChB,IAAI,EAAE;QAAEzC,GAAG,EAAE;MAAY,CAAC,CAAC;MAE5FQ,MAAM,CAAC4E,OAAO,CAAC,CAACzE,IAAI,CAAC,IAAI,CAAC;MAC1BH,MAAM,CAACiC,IAAI,CAACC,KAAK,CAACxC,GAAG,CAACuE,OAAO,CAAC,CAACxB,oBAAoB,CAAC,CAAC,CAAC;MACtDzC,MAAM,CAACP,aAAa,CAACL,MAAM,CAAC,CAACqD,oBAAoB,CAACR,IAAI,CAACC,KAAK,CAACxC,GAAG,EAAE,CAAC,CAAC;MACpEM,MAAM,CAACiC,IAAI,CAACO,QAAQ,CAAC,CAACE,gBAAgB,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF3C,EAAE,CAAC,qDAAqD,EAAE,YAAM;MAC9D,IAAMkC,IAAI,GAAGqC,UAAU,CAAC;QACtBpC,KAAK,EAAE;UACLxC,GAAG,EAAE2E,oCAAoC,CAAC;QAC5C;MACF,CAAC,CAAC;MAEF,IAAMO,OAAO,GAAGC,kCAA4B,CAACxH,KAAK,CAAC4F,aAAa,CAAChB,IAAI,EAAE;QAAEzC,GAAG,EAAE;MAAY,CAAC,CAAC;MAE5FQ,MAAM,CAAC4E,OAAO,CAAC,CAACzE,IAAI,CAAC,KAAK,CAAC;MAC3BH,MAAM,CAACiC,IAAI,CAACC,KAAK,CAACN,EAAE,CAACG,YAAY,CAAC,CAAC6B,GAAG,CAAClB,gBAAgB,CAAC,CAAC;MACzD1C,MAAM,CAACiC,IAAI,CAACO,QAAQ,CAAC,CAACoB,GAAG,CAAClB,gBAAgB,CAAC,CAAC;IAC9C,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF3C,EAAE,CAAC,kCAAkC,EAAE,YAAM;IAC3C,IAAMkC,IAAI,GAAGqC,UAAU,CAAC,CAAC;IAEzB,IAAMM,OAAO,GAAGC,kCAA4B,CAACxH,KAAK,CAAC4F,aAAa,CAAChB,IAAI,EAAE;MAAEzC,GAAG,EAAE;IAAQ,CAAC,CAAC;IACxFQ,MAAM,CAAC4E,OAAO,CAAC,CAACzE,IAAI,CAAC,KAAK,CAAC;EAC7B,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFL,QAAQ,CAAC,cAAc,EAAE,YAAM;EAC7B,IAAMkF,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAA,EAA4D;IAAA,IAAxDC,IAAI,GAAAvI,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAsH,SAAA,GAAAtH,SAAA,MAAG;MAAEwI,GAAG,EAAE,CAAC;MAAEC,IAAI,EAAE,CAAC;MAAEC,KAAK,EAAE,GAAG;MAAEC,MAAM,EAAE;IAAI,CAAC;IAC9E,IAAMC,OAAO,GAAGC,QAAQ,CAAChI,aAAa,CAAC,KAAK,CAAC;IAC7CxB,MAAM,CAACC,cAAc,CAACsJ,OAAO,EAAE,uBAAuB,EAAE;MACtDxG,KAAK,EAAE9B,IAAI,CAACU,EAAE,CAAC;QAAA,OAAMuH,IAAI;MAAA,EAAC;MAC1BO,YAAY,EAAE;IAChB,CAAC,CAAC;IACF,OAAOF,OAAO;EAChB,CAAC;EAED,IAAMG,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAA;IAAA,OAAU;MAC9BvD,KAAK,EAAE;QACLI,SAAS,EAAE;UACToC,IAAI,EAAE,CAAC;UACPgB,EAAE,EAAE,CAAC;UACL7H,IAAI,EAAE;YAAE+B,IAAI,EAAE;cAAEM,IAAI,EAAE;YAAO;UAAE;QACjC,CAAC;QACD0B,EAAE,EAAE;UACFG,YAAY,EAAE/E,IAAI,CAACU,EAAE,CAAC,CAAC,CAACoE,cAAc,CAAC,CAAC;UACxC6D,OAAO,EAAE3I,IAAI,CAACU,EAAE,CAAC,CAAC,CAACoE,cAAc,CAAC;QACpC,CAAC;QACDpC,GAAG,EAAE,CAAC;MACR,CAAC;MACDuC,IAAI,EAAE;QACJ2D,WAAW,EAAE5I,IAAI,CAACU,EAAE,CAAC;UAAA,OAAO;YAAEwH,GAAG,EAAE,GAAG;YAAEC,IAAI,EAAE;UAAG,CAAC;QAAA,CAAC,CAAC;QACpD3C,QAAQ,EAAExF,IAAI,CAACU,EAAE,CAAC;MACpB,CAAC;MACDmI,OAAO,EAAE;QACPP,OAAO,EAAEN,mBAAmB,CAAC;MAC/B,CAAC;MACD5D,QAAQ,EAAE;QACR0E,KAAK,EAAE9I,IAAI,CAACU,EAAE,CAAC;MACjB,CAAC;MACDqI,UAAU,EAAE,YAAY;MACxBC,cAAc,EAAE;IAClB,CAAC;EAAA,CAAC;EAEF,IAAMC,QAAQ,GAAG;IACfC,KAAK,EAAE;MACL/H,KAAK,EAAE;IACT,CAAC;IACDwD,QAAQ,EAAE;EACZ,CAAC;EAED,IAAIwE,YAAY;EAEhBC,UAAU,CAAC,YAAM;IACfpJ,IAAI,CAACqJ,aAAa,CAAC,CAAC;IACpBzI,gBAAgB,CAAC0I,kBAAkB,CAAC,UAACzI,IAAI;MAAA,OAAKA,IAAI;IAAA,EAAC;IACnDsI,YAAY,GAAG;MACbtI,IAAI,EAAEoI,QAAQ;MACdM,gBAAgB,EAAEvJ,IAAI,CAACU,EAAE,CAAC,CAAC;MAC3BsE,MAAM,EAAEyD,gBAAgB,CAAC,CAAC;MAC1Be,QAAQ,EAAE,KAAK;MACfX,OAAO,EAAE,CAAC,CAAC;MACXY,MAAM,EAAEzJ,IAAI,CAACU,EAAE,CAAC;QAAA,OAAM,CAAC;MAAA;IACzB,CAAC;EACH,CAAC,CAAC;EAEFqC,EAAE,CAAC,0BAA0B,EAAE,YAAM;IACnC,IAAA2G,OAAA,GAAsB,IAAAC,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,EAAKT,YAAe,CAAC,CAAC;MAAxDU,SAAS,GAAAH,OAAA,CAATG,SAAS;IACjB7G,MAAM,CAAC6G,SAAS,CAAC,CAACC,iBAAiB,CAAC,CAAC;EACvC,CAAC,CAAC;EAEF/G,EAAE,CAAC,yBAAyB,EAAE,YAAM;IAClC,IAAAgH,QAAA,GAAwB,IAAAJ,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,EAAKT,YAAe,CAAC,CAAC;MAA1Da,WAAW,GAAAD,QAAA,CAAXC,WAAW;IACnBhH,MAAM,CAACgH,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;EAC9D,CAAC,CAAC;EAEF/G,EAAE,CAAC,uBAAuB,EAAE,YAAM;IAChC,IAAAkH,QAAA,GAAwB,IAAAN,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,EAAKT,YAAe,CAAC,CAAC;MAA1Da,WAAW,GAAAC,QAAA,CAAXD,WAAW;IACnBhH,MAAM,CAACgH,WAAW,CAAC,cAAc,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;EACzD,CAAC,CAAC;EAEF/G,EAAE,CAAC,6BAA6B,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAC,QAAA;IAAA,IAAAC,QAAA,EAAAN,WAAA;IAAA,OAAAG,YAAA,YAAAI,IAAA,WAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAAJ,QAAA,GACR,IAAAX,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;YAAEK,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC,EAA1EQ,WAAW,GAAAM,QAAA,CAAXN,WAAW;UAAAQ,QAAA,CAAAE,IAAA;UAAA,OACb,IAAAC,eAAO,EAAC,YAAM;YAClB3H,MAAM,CAACgH,WAAW,CAAC,cAAc,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;UACzD,CAAC,CAAC;QAAA;QAAA;UAAA,OAAAU,QAAA,CAAAI,IAAA;MAAA;IAAA,GAAAP,OAAA;EAAA,CACH,GAAC;EAEFtH,EAAE,CAAC,yCAAyC,EAAE,YAAM;IAClD,IAAA8H,QAAA,GAA0B,IAAAlB,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;QAAEK,QAAQ,EAAE;MAAM,EAAE,CAAC,CAAC;MAA7EsB,aAAa,GAAAD,QAAA,CAAbC,aAAa;IACrB9H,MAAM,CAAC8H,aAAa,CAAC,cAAc,CAAC,CAAC,CAAClE,GAAG,CAACkD,iBAAiB,CAAC,CAAC;EAC/D,CAAC,CAAC;EAEF/G,EAAE,CAAC,wDAAwD,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAW,SAAA;IAAA,IAAAC,QAAA,EAAAnB,SAAA;IAAA,OAAAM,YAAA,YAAAI,IAAA,WAAAU,SAAA;MAAA,kBAAAA,SAAA,CAAAR,IAAA,GAAAQ,SAAA,CAAAP,IAAA;QAAA;UAAAM,QAAA,GACrC,IAAArB,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;YAAEK,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC,EAAxEK,SAAS,GAAAmB,QAAA,CAATnB,SAAS;UAAAoB,SAAA,CAAAP,IAAA;UAAA,OACX,IAAAC,eAAO,EAAC,YAAM;YAClB,IAAMO,OAAO,GAAGrB,SAAS,CAACsB,aAAa,CAAC,oBAAoB,CAAC;YAC7DnI,MAAM,CAACkI,OAAO,CAAC,CAACE,eAAe,CAAC,kBAAkB,EAAE,YAAY,CAAC;UACnE,CAAC,CAAC;QAAA;QAAA;UAAA,OAAAH,SAAA,CAAAL,IAAA;MAAA;IAAA,GAAAG,QAAA;EAAA,CACH,GAAC;EAEFjI,QAAQ,CAAC,qBAAqB,EAAE,YAAM;IACpCC,EAAE,CAAC,0DAA0D,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAiB,SAAA;MAAA,IAAAC,QAAA,EAAAzB,SAAA;MAAA,OAAAM,YAAA,YAAAI,IAAA,WAAAgB,SAAA;QAAA,kBAAAA,SAAA,CAAAd,IAAA,GAAAc,SAAA,CAAAb,IAAA;UAAA;YAAAY,QAAA,GACvC,IAAA3B,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;cAAEK,QAAQ,EAAE;YAAK,EAAE,CAAC,CAAC,EAAxEK,SAAS,GAAAyB,QAAA,CAATzB,SAAS;YAAA0B,SAAA,CAAAb,IAAA;YAAA,OACX,IAAAC,eAAO,EAAC,YAAM;cAClB,IAAMO,OAAO,GAAGrB,SAAS,CAACsB,aAAa,CAAC,oBAAoB,CAAC;cAC7DnI,MAAM,CAACkI,OAAO,CAAC,CAACpB,iBAAiB,CAAC,CAAC;cACnC9G,MAAM,CAACkI,OAAO,CAACM,KAAK,CAACtD,GAAG,CAAC,CAAC/E,IAAI,CAAC,OAAO,CAAC;cACvCH,MAAM,CAACkI,OAAO,CAACM,KAAK,CAACrD,IAAI,CAAC,CAAChF,IAAI,CAAC,MAAM,CAAC;YACzC,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAoI,SAAA,CAAAX,IAAA;QAAA;MAAA,GAAAS,QAAA;IAAA,CACH,GAAC;IAEFtI,EAAE,CAAC,4DAA4D,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAqB,SAAA;MAAA,IAAAC,WAAA,EAAA1G,MAAA,EAAA2G,QAAA,EAAA9B,SAAA;MAAA,OAAAM,YAAA,YAAAI,IAAA,WAAAqB,SAAA;QAAA,kBAAAA,SAAA,CAAAnB,IAAA,GAAAmB,SAAA,CAAAlB,IAAA;UAAA;YACzDgB,WAAW,GAAGnD,QAAQ,CAAChI,aAAa,CAAC,KAAK,CAAC;YACjDmL,WAAW,CAACG,qBAAqB,GAAG7L,IAAI,CAACU,EAAE,CAAC;cAAA,OAAO;gBAAEwH,GAAG,EAAE,GAAG;gBAAEC,IAAI,EAAE,EAAE;gBAAEC,KAAK,EAAE,GAAG;gBAAEC,MAAM,EAAE;cAAI,CAAC;YAAA,CAAC,CAAC;YAE9FrD,MAAM,GAAAvF,aAAA,CAAAA,aAAA,KACP0J,YAAY,CAACnE,MAAM;cACtB8G,kBAAkB,EAAEJ;YAAW;YAAAC,QAAA,GAGX,IAAAhC,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;cAAEnE,MAAM,EAAEA,MAAO;cAACwE,QAAQ,EAAE;YAAK,EAAE,CAAC,CAAC,EAAxFK,SAAS,GAAA8B,QAAA,CAAT9B,SAAS;YAAA+B,SAAA,CAAAlB,IAAA;YAAA,OACX,IAAAC,eAAO,EAAC,YAAM;cAClB,IAAMO,OAAO,GAAGrB,SAAS,CAACsB,aAAa,CAAC,oBAAoB,CAAC;cAC7DnI,MAAM,CAACkI,OAAO,CAAC,CAACpB,iBAAiB,CAAC,CAAC;cACnC9G,MAAM,CAACkI,OAAO,CAACM,KAAK,CAACtD,GAAG,CAAC,CAAC/E,IAAI,CAAC,KAAK,CAAC;cACrCH,MAAM,CAACkI,OAAO,CAACM,KAAK,CAACrD,IAAI,CAAC,CAAChF,IAAI,CAAC,KAAK,CAAC;YACxC,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAyI,SAAA,CAAAhB,IAAA;QAAA;MAAA,GAAAa,QAAA;IAAA,CACH,GAAC;IAEF1I,EAAE,CAAC,+CAA+C,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA2B,SAAA;MAAA,IAAAC,QAAA,EAAAnC,SAAA;MAAA,OAAAM,YAAA,YAAAI,IAAA,WAAA0B,SAAA;QAAA,kBAAAA,SAAA,CAAAxB,IAAA,GAAAwB,SAAA,CAAAvB,IAAA;UAAA;YAAAsB,QAAA,GAC5B,IAAArC,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;cAAEK,QAAQ,EAAE;YAAK,EAAE,CAAC,CAAC,EAAxEK,SAAS,GAAAmC,QAAA,CAATnC,SAAS;YAAAoC,SAAA,CAAAvB,IAAA;YAAA,OACX,IAAAC,eAAO,EAAC,YAAM;cAClB,IAAMO,OAAO,GAAGrB,SAAS,CAACsB,aAAa,CAAC,oBAAoB,CAAC;cAC7DnI,MAAM,CAACkI,OAAO,CAAC,CAACpB,iBAAiB,CAAC,CAAC;cACnC9G,MAAM,CAACkI,OAAO,CAACM,KAAK,CAACU,QAAQ,CAAC,CAAC/I,IAAI,CAAC,UAAU,CAAC;YACjD,CAAC,CAAC;UAAA;UAAA;YAAA,OAAA8I,SAAA,CAAArB,IAAA;QAAA;MAAA,GAAAmB,QAAA;IAAA,CACH,GAAC;IAEFhJ,EAAE,CAAC,yDAAyD,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA+B,SAAA;MAAA,IAAAC,QAAA,EAAAvC,SAAA;MAAA,OAAAM,YAAA,YAAAI,IAAA,WAAA8B,SAAA;QAAA,kBAAAA,SAAA,CAAA5B,IAAA,GAAA4B,SAAA,CAAA3B,IAAA;UAAA;YAAA0B,QAAA,GACtC,IAAAzC,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;cAAEK,QAAQ,EAAE;YAAK,EAAE,CAAC,CAAC,EAAxEK,SAAS,GAAAuC,QAAA,CAATvC,SAAS;YAAAwC,SAAA,CAAA3B,IAAA;YAAA,OACX,IAAAC,eAAO,EAAC,YAAM;cAClB,IAAMO,OAAO,GAAGrB,SAAS,CAACsB,aAAa,CAAC,oBAAoB,CAAC;cAC7DnI,MAAM,CAACkI,OAAO,CAAC,CAACpB,iBAAiB,CAAC,CAAC;cACnC9G,MAAM,CAACkI,OAAO,CAACM,KAAK,CAACc,MAAM,CAAC,CAACnJ,IAAI,CAAC,MAAM,CAAC;YAC3C,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAkJ,SAAA,CAAAzB,IAAA;QAAA;MAAA,GAAAuB,QAAA;IAAA,CACH,GAAC;IAEFpJ,EAAE,CAAC,0DAA0D,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAmC,SAAA;MAAA,IAAAvH,MAAA,EAAAwH,QAAA,EAAA3C,SAAA;MAAA,OAAAM,YAAA,YAAAI,IAAA,WAAAkC,SAAA;QAAA,kBAAAA,SAAA,CAAAhC,IAAA,GAAAgC,SAAA,CAAA/B,IAAA;UAAA;YACvD1F,MAAM,GAAAvF,aAAA,CAAAA,aAAA,KACP0J,YAAY,CAACnE,MAAM;cACtBC,IAAI,EAAAxF,aAAA,CAAAA,aAAA,KACC0J,YAAY,CAACnE,MAAM,CAACC,IAAI;gBAC3B2D,WAAW,EAAE5I,IAAI,CAACU,EAAE,CAAC;kBAAA,OAAO;oBAAEwH,GAAG,EAAE,GAAG;oBAAEC,IAAI,EAAE;kBAAI,CAAC;gBAAA,CAAC,CAAC;gBACrD3C,QAAQ,EAAExF,IAAI,CAACU,EAAE,CAAC;cAAC;YACpB;YAAA8L,QAAA,GAGmB,IAAA7C,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;cAAEnE,MAAM,EAAEA,MAAO;cAACwE,QAAQ,EAAE;YAAK,EAAE,CAAC,CAAC,EAAxFK,SAAS,GAAA2C,QAAA,CAAT3C,SAAS;YAAA4C,SAAA,CAAA/B,IAAA;YAAA,OACX,IAAAC,eAAO,EAAC,YAAM;cAClB,IAAMO,OAAO,GAAGrB,SAAS,CAACsB,aAAa,CAAC,oBAAoB,CAAC;cAC7DnI,MAAM,CAACkI,OAAO,CAAC,CAACpB,iBAAiB,CAAC,CAAC;cACnC9G,MAAM,CAACkI,OAAO,CAACM,KAAK,CAACtD,GAAG,CAAC,CAAC/E,IAAI,CAAC,OAAO,CAAC;cACvCH,MAAM,CAACkI,OAAO,CAACM,KAAK,CAACrD,IAAI,CAAC,CAAChF,IAAI,CAAC,OAAO,CAAC;YAC1C,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAsJ,SAAA,CAAA7B,IAAA;QAAA;MAAA,GAAA2B,QAAA;IAAA,CACH,GAAC;IAEFxJ,EAAE,CAAC,6CAA6C,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAsC,SAAA;MAAA,IAAAC,mBAAA,EAAAC,kBAAA,EAAA5H,MAAA,EAAA6H,SAAA,EAAAhD,SAAA,EAAAqB,OAAA;MAAA,OAAAf,YAAA,YAAAI,IAAA,WAAAuC,SAAA;QAAA,kBAAAA,SAAA,CAAArC,IAAA,GAAAqC,SAAA,CAAApC,IAAA;UAAA;YAC1CiC,mBAAmB,GAAGI,MAAM,CAACC,WAAW;YACxCJ,kBAAkB,GAAGG,MAAM,CAACE,UAAU;YAE5ClO,MAAM,CAACC,cAAc,CAAC+N,MAAM,EAAE,aAAa,EAAE;cAAEvE,YAAY,EAAE,IAAI;cAAE0E,QAAQ,EAAE,IAAI;cAAEpL,KAAK,EAAE;YAAI,CAAC,CAAC;YAChG/C,MAAM,CAACC,cAAc,CAAC+N,MAAM,EAAE,YAAY,EAAE;cAAEvE,YAAY,EAAE,IAAI;cAAE0E,QAAQ,EAAE,IAAI;cAAEpL,KAAK,EAAE;YAAI,CAAC,CAAC;YAEzFkD,MAAM,GAAAvF,aAAA,CAAAA,aAAA,KACP0J,YAAY,CAACnE,MAAM;cACtBC,IAAI,EAAAxF,aAAA,CAAAA,aAAA,KACC0J,YAAY,CAACnE,MAAM,CAACC,IAAI;gBAC3B2D,WAAW,EAAE5I,IAAI,CAACU,EAAE,CAAC;kBAAA,OAAO;oBAAEwH,GAAG,EAAE,GAAG;oBAAEC,IAAI,EAAE,GAAG;oBAAEgF,MAAM,EAAE;kBAAI,CAAC;gBAAA,CAAC,CAAC;gBAClE3H,QAAQ,EAAExF,IAAI,CAACU,EAAE,CAAC;cAAC;YACpB;YAAAmM,SAAA,GAGmB,IAAAlD,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;cAAEnE,MAAM,EAAEA,MAAO;cAACwE,QAAQ,EAAE;YAAK,EAAE,CAAC,CAAC,EAAxFK,SAAS,GAAAgD,SAAA,CAAThD,SAAS;YAAAiD,SAAA,CAAApC,IAAA;YAAA,OAGX,IAAAC,eAAO,EAAC,YAAM;cAClBO,OAAO,GAAGrB,SAAS,CAACsB,aAAa,CAAC,oBAAoB,CAAC;cACvDnI,MAAM,CAACkI,OAAO,CAAC,CAACpB,iBAAiB,CAAC,CAAC;YACrC,CAAC,CAAC;UAAA;YAEF/K,MAAM,CAACC,cAAc,CAACkM,OAAO,EAAE,cAAc,EAAE;cAAE1C,YAAY,EAAE,IAAI;cAAE1G,KAAK,EAAE;YAAI,CAAC,CAAC;YAClF/C,MAAM,CAACC,cAAc,CAACkM,OAAO,EAAE,aAAa,EAAE;cAAE1C,YAAY,EAAE,IAAI;cAAE1G,KAAK,EAAE;YAAI,CAAC,CAAC;YAACgL,SAAA,CAAApC,IAAA;YAAA,OAE5E,IAAA0C,WAAG,mBAAAlD,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAC,SAAAiD,SAAA;cAAA,OAAAlD,YAAA,YAAAI,IAAA,WAAA+C,SAAA;gBAAA,kBAAAA,SAAA,CAAA7C,IAAA,GAAA6C,SAAA,CAAA5C,IAAA;kBAAA;oBACRqC,MAAM,CAACQ,aAAa,CAAC,IAAIC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBAACF,SAAA,CAAA5C,IAAA;oBAAA,OACpC,IAAI+C,OAAO,CAAC,UAACxG,OAAO;sBAAA,OAAKyG,qBAAqB,CAACzG,OAAO,CAAC;oBAAA,EAAC;kBAAA;kBAAA;oBAAA,OAAAqG,SAAA,CAAA1C,IAAA;gBAAA;cAAA,GAAAyC,QAAA;YAAA,CAC/D,GAAC;UAAA;YAAAP,SAAA,CAAApC,IAAA;YAAA,OAEI,IAAAC,eAAO,EAAC,YAAM;cAClB3H,MAAM,CAAC2K,QAAQ,CAACzC,OAAO,CAACM,KAAK,CAACtD,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC0F,mBAAmB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;cAC1E5K,MAAM,CAAC2K,QAAQ,CAACzC,OAAO,CAACM,KAAK,CAACrD,IAAI,EAAE,EAAE,CAAC,CAAC,CAACyF,mBAAmB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;cAC3E5K,MAAM,CAAC2K,QAAQ,CAACzC,OAAO,CAACM,KAAK,CAACtD,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC2F,sBAAsB,CAAC,CAAC,CAAC;cACjE7K,MAAM,CAAC2K,QAAQ,CAACzC,OAAO,CAACM,KAAK,CAACrD,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC0F,sBAAsB,CAAC,CAAC,CAAC;YACpE,CAAC,CAAC;UAAA;YAEF9O,MAAM,CAACC,cAAc,CAAC+N,MAAM,EAAE,aAAa,EAAE;cAAEvE,YAAY,EAAE,IAAI;cAAE0E,QAAQ,EAAE,IAAI;cAAEpL,KAAK,EAAE6K;YAAoB,CAAC,CAAC;YAChH5N,MAAM,CAACC,cAAc,CAAC+N,MAAM,EAAE,YAAY,EAAE;cAAEvE,YAAY,EAAE,IAAI;cAAE0E,QAAQ,EAAE,IAAI;cAAEpL,KAAK,EAAE8K;YAAmB,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAE,SAAA,CAAAlC,IAAA;QAAA;MAAA,GAAA8B,QAAA;IAAA,CAChH,GAAC;IAEF3J,EAAE,CAAC,4DAA4D,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA0D,SAAA;MAAA,IAAAC,MAAA;MAAA,OAAA5D,YAAA,YAAAI,IAAA,WAAAyD,SAAA;QAAA,kBAAAA,SAAA,CAAAvD,IAAA,GAAAuD,SAAA,CAAAtD,IAAA;UAAA;YACzDqD,MAAM,GAAG/N,IAAI,CAACyE,KAAK,CAACsI,MAAM,EAAE,kBAAkB,CAAC;YACrD,IAAApD,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;cAAEK,QAAQ,EAAE;YAAK,EAAE,CAAC,CAAC;YAACwE,SAAA,CAAAtD,IAAA;YAAA,OACrD,IAAAC,eAAO,EAAC,YAAM;cAClB3H,MAAM,CAAC+K,MAAM,CAAC,CAACtI,oBAAoB,CAAC,QAAQ,EAAEzC,MAAM,CAACiL,GAAG,CAACC,QAAQ,CAAC,EAAE,IAAI,CAAC;cACzElL,MAAM,CAAC+K,MAAM,CAAC,CAACtI,oBAAoB,CAAC,QAAQ,EAAEzC,MAAM,CAACiL,GAAG,CAACC,QAAQ,CAAC,CAAC;YACrE,CAAC,CAAC;UAAA;YACFH,MAAM,CAACpI,WAAW,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAqI,SAAA,CAAApD,IAAA;QAAA;MAAA,GAAAkD,QAAA;IAAA,CACtB,GAAC;IAEF/K,EAAE,CAAC,wDAAwD,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA+D,SAAA;MAAA,IAAAzC,WAAA,EAAA1G,MAAA;MAAA,OAAAmF,YAAA,YAAAI,IAAA,WAAA6D,SAAA;QAAA,kBAAAA,SAAA,CAAA3D,IAAA,GAAA2D,SAAA,CAAA1D,IAAA;UAAA;YACrDgB,WAAW,GAAGnD,QAAQ,CAAChI,aAAa,CAAC,KAAK,CAAC;YACjDmL,WAAW,CAACG,qBAAqB,GAAG7L,IAAI,CAACU,EAAE,CAAC;cAAA,OAAO;gBAAEwH,GAAG,EAAE,CAAC;gBAAEC,IAAI,EAAE,CAAC;gBAAEC,KAAK,EAAE,GAAG;gBAAEC,MAAM,EAAE;cAAI,CAAC;YAAA,CAAC,CAAC;YAE3FrD,MAAM,GAAAvF,aAAA,CAAAA,aAAA,KACP0J,YAAY,CAACnE,MAAM;cACtB8G,kBAAkB,EAAEJ;YAAW;YAGjC9K,gBAAgB,CAACyN,SAAS,CAAC,CAAC;YAC5B,IAAA1E,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;cAAEnE,MAAM,EAAEA,MAAO;cAACwE,QAAQ,EAAE;YAAK,EAAE,CAAC,CAAC;YAAC4E,SAAA,CAAA1D,IAAA;YAAA,OACrE,IAAAC,eAAO,EAAC,YAAM;cAClB3H,MAAM,CAACpC,gBAAgB,CAAC,CAAC8E,gBAAgB,CAAC,CAAC;cAC3C,IAAM4I,QAAQ,GAAG1N,gBAAgB,CAACX,IAAI,CAACsO,KAAK,CAAC3N,gBAAgB,CAACX,IAAI,CAACsO,KAAK,CAAC5O,MAAM,GAAG,CAAC,CAAC;cACpFqD,MAAM,CAACsL,QAAQ,CAAC,CAAC,CAAC,CAAC,CAACnL,IAAI,CAACuI,WAAW,CAAC;YACvC,CAAC,CAAC;UAAA;UAAA;YAAA,OAAA0C,SAAA,CAAAxD,IAAA;QAAA;MAAA,GAAAuD,QAAA;IAAA,CACH,GAAC;IAEFpL,EAAE,CAAC,uEAAuE,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAoE,UAAA;MAAA,IAAAxJ,MAAA;MAAA,OAAAmF,YAAA,YAAAI,IAAA,WAAAkE,UAAA;QAAA,kBAAAA,UAAA,CAAAhE,IAAA,GAAAgE,UAAA,CAAA/D,IAAA;UAAA;YACpE1F,MAAM,GAAAvF,aAAA,CAAAA,aAAA,KACP0J,YAAY,CAACnE,MAAM;cACtB8G,kBAAkB,EAAE9E;YAAS;YAG/BpG,gBAAgB,CAACyN,SAAS,CAAC,CAAC;YAC5B,IAAA1E,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;cAAEnE,MAAM,EAAEA,MAAO;cAACwE,QAAQ,EAAE;YAAK,EAAE,CAAC,CAAC;YAACiF,UAAA,CAAA/D,IAAA;YAAA,OACrE,IAAAC,eAAO,EAAC,YAAM;cAClB3H,MAAM,CAACpC,gBAAgB,CAAC,CAAC8E,gBAAgB,CAAC,CAAC;cAC3C,IAAM4I,QAAQ,GAAG1N,gBAAgB,CAACX,IAAI,CAACsO,KAAK,CAAC3N,gBAAgB,CAACX,IAAI,CAACsO,KAAK,CAAC5O,MAAM,GAAG,CAAC,CAAC;cACpFqD,MAAM,CAACsL,QAAQ,CAAC,CAAC,CAAC,CAAC,CAACnL,IAAI,CAACoF,QAAQ,CAACmG,IAAI,CAAC;YACzC,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAD,UAAA,CAAA7D,IAAA;QAAA;MAAA,GAAA4D,SAAA;IAAA,CACH,GAAC;EACJ,CAAC,CAAC;EAEFzL,EAAE,CAAC,2CAA2C,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAuE,UAAA;IAAA,IAAAC,SAAA,EAAA5E,WAAA;IAAA,OAAAG,YAAA,YAAAI,IAAA,WAAAsE,UAAA;MAAA,kBAAAA,UAAA,CAAApE,IAAA,GAAAoE,UAAA,CAAAnE,IAAA;QAAA;UAAAkE,SAAA,GACtB,IAAAjF,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;YAAEK,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC,EAA1EQ,WAAW,GAAA4E,SAAA,CAAX5E,WAAW;UAAA6E,UAAA,CAAAnE,IAAA;UAAA,OACb,IAAAC,eAAO,EAAC,YAAM;YAClB,IAAMmE,KAAK,GAAG9E,WAAW,CAAC,YAAY,CAAC;YACvC+E,iBAAS,CAACC,MAAM,CAACF,KAAK,EAAE;cAAE/M,MAAM,EAAE;gBAAED,KAAK,EAAE;cAAM;YAAE,CAAC,CAAC;UACvD,CAAC,CAAC;QAAA;UACFkB,MAAM,CAACmG,YAAY,CAACI,gBAAgB,CAAC,CAAC9D,oBAAoB,CAAC;YAAEtE,KAAK,EAAE;UAAM,CAAC,CAAC;QAAC;QAAA;UAAA,OAAA0N,UAAA,CAAAjE,IAAA;MAAA;IAAA,GAAA+D,SAAA;EAAA,CAC9E,GAAC;EAEF5L,EAAE,CAAC,iDAAiD,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA6E,UAAA;IAAA,IAAA1F,gBAAA,EAAA2F,SAAA,EAAAlF,WAAA,EAAAmF,UAAA;IAAA,OAAAhF,YAAA,YAAAI,IAAA,WAAA6E,UAAA;MAAA,kBAAAA,UAAA,CAAA3E,IAAA,GAAA2E,UAAA,CAAA1E,IAAA;QAAA;UAC9CnB,gBAAgB,GAAGvJ,IAAI,CAACU,EAAE,CAAC,CAAC;UAAAwO,SAAA,GACV,IAAAvF,cAAM,eAC5BrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;YAAEI,gBAAgB,EAAEA,gBAAiB;YAACC,QAAQ,EAAE;UAAK,EAAE,CACvF,CAAC,EAFOQ,WAAW,GAAAkF,SAAA,CAAXlF,WAAW;UAAAoF,UAAA,CAAA1E,IAAA;UAAA,OAIb,IAAAC,eAAO,EAAC,YAAM;YAClB3H,MAAM,CAACgH,WAAW,CAAC,aAAa,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;UACxD,CAAC,CAAC;QAAA;UAEIqF,UAAU,GAAGnF,WAAW,CAAC,aAAa,CAAC;UAC7C+E,iBAAS,CAACM,KAAK,CAACF,UAAU,CAAC;UAACC,UAAA,CAAA1E,IAAA;UAAA,OAEtB,IAAAC,eAAO,EAAC,YAAM;YAClB3H,MAAM,CAACuG,gBAAgB,CAAC,CAAC9D,oBAAoB,CAAC;cAAEtE,KAAK,EAAE;YAAM,CAAC,CAAC;UACjE,CAAC,CAAC;QAAA;QAAA;UAAA,OAAAiO,UAAA,CAAAxE,IAAA;MAAA;IAAA,GAAAqE,SAAA;EAAA,CACH,GAAC;EAEFlM,EAAE,CAAC,kDAAkD,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAkF,UAAA;IAAA,IAAAC,SAAA,EAAAvF,WAAA;IAAA,OAAAG,YAAA,YAAAI,IAAA,WAAAiF,UAAA;MAAA,kBAAAA,UAAA,CAAA/E,IAAA,GAAA+E,UAAA,CAAA9E,IAAA;QAAA;UAAA6E,SAAA,GAC7B,IAAA5F,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;YAAEK,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC,EAA1EQ,WAAW,GAAAuF,SAAA,CAAXvF,WAAW;UAAAwF,UAAA,CAAA9E,IAAA;UAAA,OACb,IAAAC,eAAO,EAAC,YAAM;YAClB3H,MAAM,CAACgH,WAAW,CAAC,cAAc,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;YACvD9G,MAAM,CAACmG,YAAY,CAACnE,MAAM,CAACgE,cAAc,CAAC,CAAC7F,IAAI,CAAC,IAAI,CAAC;UACvD,CAAC,CAAC;QAAA;QAAA;UAAA,OAAAqM,UAAA,CAAA5E,IAAA;MAAA;IAAA,GAAA0E,SAAA;EAAA,CACH,GAAC;EAEFvM,EAAE,CAAC,8EAA8E,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAqF,UAAA;IAAA,IAAAC,SAAA,EAAA1F,WAAA;IAAA,OAAAG,YAAA,YAAAI,IAAA,WAAAoF,UAAA;MAAA,kBAAAA,UAAA,CAAAlF,IAAA,GAAAkF,UAAA,CAAAjF,IAAA;QAAA;UAAAgF,SAAA,GACzD,IAAA/F,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;YAAEK,QAAQ,EAAE;UAAM,EAAE,CAAC,CAAC,EAA3EQ,WAAW,GAAA0F,SAAA,CAAX1F,WAAW;UAEnB+E,iBAAS,CAACM,KAAK,CAACrF,WAAW,CAAC,cAAc,CAAC,CAAC;UAAC2F,UAAA,CAAAjF,IAAA;UAAA,OAEvC,IAAAC,eAAO,EAAC,YAAM;YAClB3H,MAAM,CAACgH,WAAW,CAAC,cAAc,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;YACvD9G,MAAM,CAACmG,YAAY,CAACnE,MAAM,CAACgE,cAAc,CAAC,CAAC7F,IAAI,CAAC,IAAI,CAAC;UACvD,CAAC,CAAC;QAAA;UAEF4L,iBAAS,CAACM,KAAK,CAACrF,WAAW,CAAC,aAAa,CAAC,CAAC;UAAC2F,UAAA,CAAAjF,IAAA;UAAA,OAEtC,IAAAC,eAAO,EAAC,YAAM;YAClB3H,MAAM,CAACmG,YAAY,CAACnE,MAAM,CAACgE,cAAc,CAAC,CAAC7F,IAAI,CAAC,KAAK,CAAC;UACxD,CAAC,CAAC;QAAA;QAAA;UAAA,OAAAwM,UAAA,CAAA/E,IAAA;MAAA;IAAA,GAAA6E,SAAA;EAAA,CACH,GAAC;EAEF1M,EAAE,CAAC,uEAAuE,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAwF,UAAA;IAAA,IAAAC,SAAA,EAAA7F,WAAA;IAAA,OAAAG,YAAA,YAAAI,IAAA,WAAAuF,UAAA;MAAA,kBAAAA,UAAA,CAAArF,IAAA,GAAAqF,UAAA,CAAApF,IAAA;QAAA;UAAAmF,SAAA,GAClD,IAAAlG,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;YAAEK,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC,EAA1EQ,WAAW,GAAA6F,SAAA,CAAX7F,WAAW;UAAA8F,UAAA,CAAApF,IAAA;UAAA,OAEb,IAAAC,eAAO,EAAC,YAAM;YAClB3H,MAAM,CAACgH,WAAW,CAAC,aAAa,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;YACtD9G,MAAM,CAACmG,YAAY,CAACnE,MAAM,CAACgE,cAAc,CAAC,CAAC7F,IAAI,CAAC,IAAI,CAAC;UACvD,CAAC,CAAC;QAAA;UAEF4L,iBAAS,CAACM,KAAK,CAACrF,WAAW,CAAC,aAAa,CAAC,CAAC;UAAC8F,UAAA,CAAApF,IAAA;UAAA,OAEtC,IAAAC,eAAO,EAAC,YAAM;YAClB3H,MAAM,CAACmG,YAAY,CAACnE,MAAM,CAACgE,cAAc,CAAC,CAAC7F,IAAI,CAAC,IAAI,CAAC;UACvD,CAAC,CAAC;QAAA;QAAA;UAAA,OAAA2M,UAAA,CAAAlF,IAAA;MAAA;IAAA,GAAAgF,SAAA;EAAA,CACH,GAAC;EAEF7M,EAAE,CAAC,qDAAqD,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA2F,UAAA;IAAA,IAAAxG,gBAAA,EAAAvE,MAAA,EAAAgL,SAAA,EAAAvN,aAAA,EAAAwN,SAAA,EAAAnF,aAAA;IAAA,OAAAX,YAAA,YAAAI,IAAA,WAAA2F,UAAA;MAAA,kBAAAA,UAAA,CAAAzF,IAAA,GAAAyF,UAAA,CAAAxF,IAAA;QAAA;UAClDnB,gBAAgB,GAAGvJ,IAAI,CAACU,EAAE,CAAC,CAAC;UAC5BsE,MAAM,GAAGyD,gBAAgB,CAAC,CAAC;UAAAuH,SAAA,GACPxS,OAAO,CAAC,mBAAmB,CAAC,EAA9CiF,aAAa,GAAAuN,SAAA,CAAbvN,aAAa;UAAAwN,SAAA,GACK,IAAAtG,cAAM,eAC9BrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;YAAEnE,MAAM,EAAEA,MAAO;YAACuE,gBAAgB,EAAEA,gBAAiB;YAACC,QAAQ,EAAE;UAAK,EAAE,CACvG,CAAC,EAFOsB,aAAa,GAAAmF,SAAA,CAAbnF,aAAa;UAAAoF,UAAA,CAAAxF,IAAA;UAAA,OAIf,IAAAC,eAAO,EAAC,YAAM;YAClB3H,MAAM,CAAC8H,aAAa,CAAC,cAAc,CAAC,CAAC,CAAChB,iBAAiB,CAAC,CAAC;UAC3D,CAAC,CAAC;QAAA;UAEFiF,iBAAS,CAACM,KAAK,CAAC9G,QAAQ,CAACmG,IAAI,CAAC;UAACwB,UAAA,CAAAxF,IAAA;UAAA,OAEzB,IAAAC,eAAO,EAAC,YAAM;YAClB3H,MAAM,CAAC8H,aAAa,CAAC,cAAc,CAAC,CAAC,CAAClE,GAAG,CAACkD,iBAAiB,CAAC,CAAC;YAC7D9G,MAAM,CAACuG,gBAAgB,CAAC,CAAC9D,oBAAoB,CAAC;cAAEtE,KAAK,EAAE;YAAM,CAAC,CAAC;YAC/D6B,MAAM,CAACP,aAAa,CAACL,MAAM,CAAC,CAACqD,oBAAoB,CAACT,MAAM,CAACE,KAAK,CAACxC,GAAG,EAAE,CAAC,CAAC;YACtEM,MAAM,CAACgC,MAAM,CAACE,KAAK,CAACN,EAAE,CAACG,YAAY,CAAC,CAACW,gBAAgB,CAAC,CAAC;YACvD1C,MAAM,CAACgC,MAAM,CAACC,IAAI,CAACO,QAAQ,CAAC,CAACC,oBAAoB,CAACT,MAAM,CAACE,KAAK,CAACN,EAAE,CAAC;YAClE5B,MAAM,CAACgC,MAAM,CAACZ,QAAQ,CAAC0E,KAAK,CAAC,CAACpD,gBAAgB,CAAC,CAAC;YAChD1C,MAAM,CAACgC,MAAM,CAACgE,cAAc,CAAC,CAAC7F,IAAI,CAAC,IAAI,CAAC;UAC1C,CAAC,CAAC;QAAA;QAAA;UAAA,OAAA+M,UAAA,CAAAtF,IAAA;MAAA;IAAA,GAAAmF,SAAA;EAAA,CACH,GAAC;EAEFhN,EAAE,CAAC,+CAA+C,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA+F,UAAA;IAAA,IAAAC,mBAAA,EAAAC,sBAAA,EAAAC,KAAA,EAAAC,KAAA,EAAAC,SAAA,EAAAC,QAAA,EAAAC,gBAAA;IAAA,OAAAvG,YAAA,YAAAI,IAAA,WAAAoG,UAAA;MAAA,kBAAAA,UAAA,CAAAlG,IAAA,GAAAkG,UAAA,CAAAjG,IAAA;QAAA;UAC5C0F,mBAAmB,GAAGpQ,IAAI,CAACyE,KAAK,CAAC8D,QAAQ,EAAE,kBAAkB,CAAC;UAC9D8H,sBAAsB,GAAGrQ,IAAI,CAACyE,KAAK,CAAC8D,QAAQ,EAAE,qBAAqB,CAAC;UACpE+H,KAAK,GAAG;YAAEpH,KAAK,EAAE;cAAE/H,KAAK,EAAE;YAAM;UAAE,CAAC;UACnCoP,KAAK,GAAG;YAAErH,KAAK,EAAE;cAAE/H,KAAK,EAAE;YAAM;UAAE,CAAC;UAAAqP,SAAA,GAEpB,IAAA7G,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;YAAEtI,IAAI,EAAEyP,KAAM;YAAC9G,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC,EAApFiH,QAAQ,GAAAD,SAAA,CAARC,QAAQ;UAAAE,UAAA,CAAAjG,IAAA;UAAA,OAEV,IAAAC,eAAO,EAAC,YAAM;YAClB3H,MAAM,CAACoN,mBAAmB,CAAC,CAAC3K,oBAAoB,CAAC,OAAO,EAAEzC,MAAM,CAACiL,GAAG,CAACC,QAAQ,CAAC,CAAC;UACjF,CAAC,CAAC;QAAA;UAEIwC,gBAAgB,GAAGN,mBAAmB,CAACnQ,IAAI,CAACsO,KAAK,CAAC5O,MAAM;UAE9D8Q,QAAQ,cAACnT,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;YAAEtI,IAAI,EAAE0P,KAAM;YAAC/G,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC;UAACmH,UAAA,CAAAjG,IAAA;UAAA,OAEpE,IAAAC,eAAO,EAAC,YAAM;YAClB3H,MAAM,CAACqN,sBAAsB,CAAC,CAAC3K,gBAAgB,CAAC,CAAC;YACjD1C,MAAM,CAACoN,mBAAmB,CAACnQ,IAAI,CAACsO,KAAK,CAAC5O,MAAM,CAAC,CAACiR,eAAe,CAACF,gBAAgB,CAAC;UACjF,CAAC,CAAC;QAAA;UAEFN,mBAAmB,CAACzK,WAAW,CAAC,CAAC;UACjC0K,sBAAsB,CAAC1K,WAAW,CAAC,CAAC;QAAC;QAAA;UAAA,OAAAgL,UAAA,CAAA/F,IAAA;MAAA;IAAA,GAAAuF,SAAA;EAAA,CACtC,GAAC;EAEFpN,EAAE,CAAC,4DAA4D,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAyG,UAAA;IAAA,IAAAC,SAAA,EAAA9G,WAAA,EAAAc,aAAA;IAAA,OAAAX,YAAA,YAAAI,IAAA,WAAAwG,UAAA;MAAA,kBAAAA,UAAA,CAAAtG,IAAA,GAAAsG,UAAA,CAAArG,IAAA;QAAA;UAAAoG,SAAA,GACxB,IAAAnH,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;YAAEK,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC,EAAzFQ,WAAW,GAAA8G,SAAA,CAAX9G,WAAW,EAAEc,aAAa,GAAAgG,SAAA,CAAbhG,aAAa;UAAAiG,UAAA,CAAArG,IAAA;UAAA,OAE5B,IAAAC,eAAO,EAAC,YAAM;YAClB3H,MAAM,CAAC8H,aAAa,CAAC,cAAc,CAAC,CAAC,CAAChB,iBAAiB,CAAC,CAAC;UAC3D,CAAC,CAAC;QAAA;UAEFiF,iBAAS,CAACM,KAAK,CAACrF,WAAW,CAAC,cAAc,CAAC,CAAC;UAAC+G,UAAA,CAAArG,IAAA;UAAA,OAEvC,IAAAC,eAAO,EAAC,YAAM;YAClB3H,MAAM,CAAC8H,aAAa,CAAC,cAAc,CAAC,CAAC,CAAChB,iBAAiB,CAAC,CAAC;UAC3D,CAAC,CAAC;QAAA;QAAA;UAAA,OAAAiH,UAAA,CAAAnG,IAAA;MAAA;IAAA,GAAAiG,SAAA;EAAA,CACH,GAAC;EAEF/N,QAAQ,CAAC,qCAAqC,EAAE,YAAM;IACpD,IAAIkO,UAAU;IAEd5H,UAAU,CAAC,YAAM;MACf,IAAI6H,SAAS,GAAG,IAAI;MACpBD,UAAU,GAAGhR,IAAI,CAACyE,KAAK,CAACyM,IAAI,EAAE,KAAK,CAAC,CAAC5H,kBAAkB,CAAC;QAAA,OAAM2H,SAAS,EAAE;MAAA,EAAC;IAC5E,CAAC,CAAC;IAEFE,SAAS,CAAC,YAAM;MACdH,UAAU,CAACrL,WAAW,CAAC,CAAC;IAC1B,CAAC,CAAC;;IAEF;IACA;IACA5C,EAAE,CAAC,oDAAoD,EAAE,YAAM;MAC7D,IAAAqO,SAAA,GAAwB,IAAAzH,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,EAAKT,YAAe,CAAC,CAAC;QAA1Da,WAAW,GAAAoH,SAAA,CAAXpH,WAAW;MACnB,IAAM9H,OAAO,GAAG8H,WAAW,CAAC,mBAAmB,CAAC;MAEhDhH,MAAM,CAACc,KAAK,CAAC4D,IAAI,CAACxF,OAAO,CAACmP,SAAS,CAAC,CAACC,IAAI,CAAC,UAACC,CAAC;QAAA,OAAK,iBAAiB,CAACC,IAAI,CAACD,CAAC,CAAC;MAAA,EAAC,CAAC,CAACpO,IAAI,CAAC,IAAI,CAAC;IACzF,CAAC,CAAC;IAEFJ,EAAE,CAAC,yDAAyD,EAAE,YAAM;MAClE,IAAA0O,SAAA,GAA2B,IAAA9H,cAAM,eAC/BrM,MAAA,YAAAiD,aAAA,CAAAjD,MAAA,YAAAoU,QAAA,qBACEpU,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,EAAKT,YAAe,CAAC,eAClC7L,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;UAAEtI,IAAI,EAAE;YAAEqI,KAAK,EAAE;cAAE/H,KAAK,EAAE;YAAM;UAAE;QAAE,EAAE,CACpE,CACJ,CAAC;QALOwQ,cAAc,GAAAF,SAAA,CAAdE,cAAc;MAOtB,IAAMC,QAAQ,GAAGD,cAAc,CAAC,mBAAmB,CAAC;MACpD,IAAME,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,EAAE;QAAA,OAAKhO,KAAK,CAAC4D,IAAI,CAACoK,EAAE,CAACT,SAAS,CAAC,CAACU,IAAI,CAAC,UAACR,CAAC;UAAA,OAAKA,CAAC,CAACS,UAAU,CAAC,YAAY,CAAC;QAAA,EAAC;MAAA;MAE9FhP,MAAM,CAAC6O,aAAa,CAACD,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAACzO,IAAI,CAAC,gBAAgB,CAAC;MACzDH,MAAM,CAAC6O,aAAa,CAACD,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAACzO,IAAI,CAAC,gBAAgB,CAAC;MACzD;MACAH,MAAM,CAAC6O,aAAa,CAACD,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAChL,GAAG,CAACzD,IAAI,CAAC0O,aAAa,CAACD,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC;IAEF7O,EAAE,CAAC,oDAAoD,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA6H,UAAA;MAAA,IAAA1I,gBAAA,EAAA2I,OAAA,EAAAC,OAAA,EAAAC,SAAA,EAAAT,cAAA,EAAAU,gBAAA,EAAAC,aAAA;MAAA,OAAAnI,YAAA,YAAAI,IAAA,WAAAgI,UAAA;QAAA,kBAAAA,UAAA,CAAA9H,IAAA,GAAA8H,UAAA,CAAA7H,IAAA;UAAA;YACjDnB,gBAAgB,GAAGvJ,IAAI,CAACU,EAAE,CAAC,CAAC;YAC5BwR,OAAO,GAAGzJ,gBAAgB,CAAC,CAAC;YAC5B0J,OAAO,GAAG1J,gBAAgB,CAAC,CAAC;YAAA2J,SAAA,GAEW,IAAAzI,cAAM,eACjDrM,MAAA,YAAAiD,aAAA,CAAAjD,MAAA,YAAAoU,QAAA,qBACEpU,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;cAAEnE,MAAM,EAAEkN,OAAQ;cAAC3I,gBAAgB,EAAEA,gBAAiB;cAACC,QAAQ,EAAE;YAAM,EAAE,CAAC,eACxGlM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;cAAEnE,MAAM,EAAEmN,OAAQ;cAACtR,IAAI,EAAE;gBAAEqI,KAAK,EAAE;kBAAE/H,KAAK,EAAE;gBAAM;cAAE,CAAE;cAACqI,QAAQ,EAAE;YAAM,EAAE,CACtG,CACJ,CAAC,EALOmI,cAAc,GAAAS,SAAA,CAAdT,cAAc,EAAEU,gBAAgB,GAAAD,SAAA,CAAhBC,gBAAgB;YAOxCtD,iBAAS,CAACM,KAAK,CAACsC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;YAACY,UAAA,CAAA7H,IAAA;YAAA,OAE7C,IAAAC,eAAO,EAAC,YAAM;cAClB3H,MAAM,CAACqP,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAACrO,YAAY,CAAC,CAAC,CAAC;YAC1D,CAAC,CAAC;UAAA;YAEIsO,aAAa,GAAGX,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACvD5C,iBAAS,CAACM,KAAK,CAACiD,aAAa,CAAC;YAACC,UAAA,CAAA7H,IAAA;YAAA,OAEzB,IAAAC,eAAO,EAAC,YAAM;cAClB3H,MAAM,CAACqP,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAACrO,YAAY,CAAC,CAAC,CAAC;cACxDhB,MAAM,CAACuG,gBAAgB,CAAC,CAAC9D,oBAAoB,CAAC;gBAAEtE,KAAK,EAAE;cAAM,CAAC,CAAC;cAC/D6B,MAAM,CAACkP,OAAO,CAAClJ,cAAc,CAAC,CAAC7F,IAAI,CAAC,KAAK,CAAC;cAC1CH,MAAM,CAAC2O,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAACa,WAAW,CAAC,KAAK,CAAC;YAC5D,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAD,UAAA,CAAA3H,IAAA;QAAA;MAAA,GAAAqH,SAAA;IAAA,CACH,GAAC;EACJ,CAAC,CAAC;EAEFnP,QAAQ,CAAC,+BAA+B,EAAE,YAAM;IAC9CC,EAAE,CAAC,4FAA4F,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAqI,UAAA;MAAA,IAAAC,SAAA,EAAA5H,aAAA,EAAA2F,QAAA;MAAA,OAAAtG,YAAA,YAAAI,IAAA,WAAAoI,UAAA;QAAA,kBAAAA,UAAA,CAAAlI,IAAA,GAAAkI,UAAA,CAAAjI,IAAA;UAAA;YAAAgI,SAAA,GAC3D,IAAA/I,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;cAAEK,QAAQ,EAAE;YAAM,EAAE,CAAC,CAAC,EAAvFsB,aAAa,GAAA4H,SAAA,CAAb5H,aAAa,EAAE2F,QAAQ,GAAAiC,SAAA,CAARjC,QAAQ;YAC/BzN,MAAM,CAAC8H,aAAa,CAAC,cAAc,CAAC,CAAC,CAAClE,GAAG,CAACkD,iBAAiB,CAAC,CAAC;YAE7D2G,QAAQ,cAACnT,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;cAAEK,QAAQ,EAAE;YAAK,EAAE,CAAC,CAAC;YAACmJ,UAAA,CAAAjI,IAAA;YAAA,OACvD,IAAAC,eAAO,EAAC,YAAM;cAClB3H,MAAM,CAAC8H,aAAa,CAAC,cAAc,CAAC,CAAC,CAAChB,iBAAiB,CAAC,CAAC;YAC3D,CAAC,CAAC;UAAA;UAAA;YAAA,OAAA6I,UAAA,CAAA/H,IAAA;QAAA;MAAA,GAAA6H,SAAA;IAAA,CACH,GAAC;IAEF1P,EAAE,CAAC,+GAA+G,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAwI,UAAA;MAAA,IAAA5N,MAAA,EAAA6N,SAAA,EAAA/H,aAAA,EAAA2F,QAAA;MAAA,OAAAtG,YAAA,YAAAI,IAAA,WAAAuI,UAAA;QAAA,kBAAAA,UAAA,CAAArI,IAAA,GAAAqI,UAAA,CAAApI,IAAA;UAAA;YAC5G1F,MAAM,GAAAvF,aAAA,CAAAA,aAAA,KACP0J,YAAY,CAACnE,MAAM;cACtBE,KAAK,EAAAzF,aAAA,CAAAA,aAAA,KACA0J,YAAY,CAACnE,MAAM,CAACE,KAAK;gBAC5BI,SAAS,EAAE;kBAAEoC,IAAI,EAAE,CAAC;kBAAEgB,EAAE,EAAE;gBAAI,CAAC,CAAE;cAAA;YAClC;YAAAmK,SAAA,GAGiC,IAAAlJ,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;cAAEnE,MAAM,EAAEA,MAAO;cAACwE,QAAQ,EAAE;YAAM,EAAE,CAAC,CAAC,EAAvGsB,aAAa,GAAA+H,SAAA,CAAb/H,aAAa,EAAE2F,QAAQ,GAAAoC,SAAA,CAARpC,QAAQ;YAC/BA,QAAQ,cAACnT,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;cAAEnE,MAAM,EAAEA,MAAO;cAACwE,QAAQ,EAAE;YAAK,EAAE,CAAC,CAAC;YAACsJ,UAAA,CAAApI,IAAA;YAAA,OAEvE,IAAA0C,WAAG,mBAAAlD,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAC,SAAA2I,UAAA;cAAA,OAAA5I,YAAA,YAAAI,IAAA,WAAAyI,UAAA;gBAAA,kBAAAA,UAAA,CAAAvI,IAAA,GAAAuI,UAAA,CAAAtI,IAAA;kBAAA;kBAAA;oBAAA,OAAAsI,UAAA,CAAApI,IAAA;gBAAA;cAAA,GAAAmI,SAAA;YAAA,CAAc,GAAC;UAAA;YACzB/P,MAAM,CAAC8H,aAAa,CAAC,cAAc,CAAC,CAAC,CAAClE,GAAG,CAACkD,iBAAiB,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAgJ,UAAA,CAAAlI,IAAA;QAAA;MAAA,GAAAgI,SAAA;IAAA,CAC/D,GAAC;IAEF7P,EAAE,CAAC,oGAAoG,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA6I,UAAA;MAAA,IAAAjO,MAAA,EAAAkO,SAAA,EAAApI,aAAA,EAAA2F,QAAA;MAAA,OAAAtG,YAAA,YAAAI,IAAA,WAAA4I,UAAA;QAAA,kBAAAA,UAAA,CAAA1I,IAAA,GAAA0I,UAAA,CAAAzI,IAAA;UAAA;YACjG1F,MAAM,GAAAvF,aAAA,CAAAA,aAAA,KACP0J,YAAY,CAACnE,MAAM;cACtBE,KAAK,EAAAzF,aAAA,CAAAA,aAAA,KACA0J,YAAY,CAACnE,MAAM,CAACE,KAAK;gBAC5BI,SAAS,EAAE;kBAAEoC,IAAI,EAAE,CAAC;kBAAEgB,EAAE,EAAE,CAAC;kBAAE7H,IAAI,EAAE;oBAAE+B,IAAI,EAAE;sBAAEM,IAAI,EAAE;oBAAQ;kBAAE;gBAAE;cAAC;YACjE;YAAAgQ,SAAA,GAGiC,IAAAvJ,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;cAAEnE,MAAM,EAAEA,MAAO;cAACwE,QAAQ,EAAE;YAAM,EAAE,CAAC,CAAC,EAAvGsB,aAAa,GAAAoI,SAAA,CAAbpI,aAAa,EAAE2F,QAAQ,GAAAyC,SAAA,CAARzC,QAAQ;YAC/BA,QAAQ,cAACnT,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;cAAEnE,MAAM,EAAEA,MAAO;cAACwE,QAAQ,EAAE;YAAK,EAAE,CAAC,CAAC;YAAC2J,UAAA,CAAAzI,IAAA;YAAA,OAEvE,IAAA0C,WAAG,mBAAAlD,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAC,SAAAgJ,UAAA;cAAA,OAAAjJ,YAAA,YAAAI,IAAA,WAAA8I,UAAA;gBAAA,kBAAAA,UAAA,CAAA5I,IAAA,GAAA4I,UAAA,CAAA3I,IAAA;kBAAA;kBAAA;oBAAA,OAAA2I,UAAA,CAAAzI,IAAA;gBAAA;cAAA,GAAAwI,SAAA;YAAA,CAAc,GAAC;UAAA;YACzBpQ,MAAM,CAAC8H,aAAa,CAAC,cAAc,CAAC,CAAC,CAAClE,GAAG,CAACkD,iBAAiB,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAqJ,UAAA,CAAAvI,IAAA;QAAA;MAAA,GAAAqI,SAAA;IAAA,CAC/D,GAAC;EACJ,CAAC,CAAC;EAEFlQ,EAAE,CAAC,+DAA+D,mBAAAmH,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAkJ,UAAA;IAAA,IAAAC,SAAA,EAAAzI,aAAA,EAAA0I,QAAA;IAAA,OAAArJ,YAAA,YAAAI,IAAA,WAAAkJ,UAAA;MAAA,kBAAAA,UAAA,CAAAhJ,IAAA,GAAAgJ,UAAA,CAAA/I,IAAA;QAAA;UAAA6I,SAAA,GACxC,IAAA5J,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;YAAEK,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC,EAA5EsB,aAAa,GAAAyI,SAAA,CAAbzI,aAAa;UAAA2I,UAAA,CAAA/I,IAAA;UAAA,OAEf,IAAAC,eAAO,EAAC,YAAM;YAClB3H,MAAM,CAAC8H,aAAa,CAAC,cAAc,CAAC,CAAC,CAAChB,iBAAiB,CAAC,CAAC;UAC3D,CAAC,CAAC;QAAA;UAEF;UACM0J,QAAQ,GAAGjL,QAAQ,CAAChI,aAAa,CAAC,KAAK,CAAC;UAC9CiT,QAAQ,CAACE,EAAE,GAAG,gCAAgC;UAC9CnL,QAAQ,CAACmG,IAAI,CAACiF,WAAW,CAACH,QAAQ,CAAC;UAEnCzE,iBAAS,CAACM,KAAK,CAACmE,QAAQ,CAAC;UAACC,UAAA,CAAA/I,IAAA;UAAA,OAEpB,IAAAC,eAAO,EAAC,YAAM;YAClB3H,MAAM,CAAC8H,aAAa,CAAC,cAAc,CAAC,CAAC,CAAChB,iBAAiB,CAAC,CAAC;UAC3D,CAAC,CAAC;QAAA;UAEFvB,QAAQ,CAACmG,IAAI,CAACkF,WAAW,CAACJ,QAAQ,CAAC;QAAC;QAAA;UAAA,OAAAC,UAAA,CAAA7I,IAAA;MAAA;IAAA,GAAA0I,SAAA;EAAA,CACrC,GAAC;EAEFvQ,EAAE,CAAC,0BAA0B,EAAE,YAAM;IACnC,IAAM8Q,kBAAkB,GAAG;MAAE3K,KAAK,EAAE;QAAE/H,KAAK,EAAE;MAAG;IAAE,CAAC;IACnD,IAAA2S,SAAA,GAAwB,IAAAnK,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,MAAApJ,SAAA,iBAAK2I,YAAY;QAAEtI,IAAI,EAAEgT;MAAmB,EAAE,CAAC,CAAC;MAApF7J,WAAW,GAAA8J,SAAA,CAAX9J,WAAW;IACnBhH,MAAM,CAACgH,WAAW,CAAC,cAAc,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;EACzD,CAAC,CAAC;EAEF/G,EAAE,CAAC,wCAAwC,EAAE,YAAM;IACjD,IAAAgR,SAAA,GAAwB,IAAApK,cAAM,eAACrM,MAAA,YAAAiD,aAAA,CAAC7C,KAAA,CAAAkM,YAAY,EAAKT,YAAe,CAAC,CAAC;MAA1Da,WAAW,GAAA+J,SAAA,CAAX/J,WAAW;IACnB,IAAM9H,OAAO,GAAG8H,WAAW,CAAC,mBAAmB,CAAC;IAChDhH,MAAM,CAACd,OAAO,CAAC,CAAC8R,WAAW,CAAC;MAAEC,OAAO,EAAE,aAAa;MAAEC,MAAM,EAAE;IAAU,CAAC,CAAC;EAC5E,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -1,307 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
5
- var _react = _interopRequireDefault(require("react"));
6
- var _react2 = require("@testing-library/react");
7
- var _media = _interopRequireDefault(require("../media"));
8
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
9
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
10
- // Create a mockable insertDialog function
11
- var mockInsertDialog = jest.fn();
12
-
13
- // Mock react-dom BEFORE any imports that depend on it
14
- jest.mock('react-dom', function () {
15
- return _objectSpread(_objectSpread({}, jest.requireActual('react-dom')), {}, {
16
- render: jest.fn()
17
- });
18
- });
19
-
20
- // Mock the insertDialog function in the media module
21
- jest.mock('../media', function () {
22
- var actual = jest.requireActual('../media');
23
- return _objectSpread(_objectSpread({
24
- __esModule: true
25
- }, actual), {}, {
26
- "default": actual["default"],
27
- // Preserve the default export
28
- insertDialog: function insertDialog() {
29
- return mockInsertDialog.apply(void 0, arguments);
30
- }
31
- });
32
- });
33
- jest.mock('@tiptap/core', function () {
34
- return {
35
- Node: {
36
- create: jest.fn(function (config) {
37
- return config;
38
- })
39
- },
40
- mergeAttributes: jest.fn(function () {
41
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
42
- args[_key] = arguments[_key];
43
- }
44
- return Object.assign.apply(Object, [{}].concat(args));
45
- })
46
- };
47
- });
48
- jest.mock('@tiptap/react', function () {
49
- return {
50
- NodeViewWrapper: function NodeViewWrapper(_ref) {
51
- var children = _ref.children;
52
- return /*#__PURE__*/_react["default"].createElement("div", {
53
- "data-testid": "node-view-wrapper"
54
- }, children);
55
- },
56
- ReactNodeViewRenderer: jest.fn(function (component) {
57
- return component;
58
- })
59
- };
60
- });
61
- jest.mock('../../components/media/MediaDialog', function () {
62
- return {
63
- __esModule: true,
64
- "default": jest.fn(function () {
65
- return /*#__PURE__*/_react["default"].createElement("div", {
66
- "data-testid": "media-dialog"
67
- });
68
- })
69
- };
70
- });
71
- jest.mock('../../components/media/MediaToolbar', function () {
72
- return {
73
- __esModule: true,
74
- "default": jest.fn(function (_ref2) {
75
- var onEdit = _ref2.onEdit,
76
- onRemove = _ref2.onRemove;
77
- return /*#__PURE__*/_react["default"].createElement("div", {
78
- "data-testid": "media-toolbar"
79
- }, /*#__PURE__*/_react["default"].createElement("button", {
80
- onClick: onEdit,
81
- "data-testid": "edit-button"
82
- }, "Edit Settings"), /*#__PURE__*/_react["default"].createElement("button", {
83
- onClick: onRemove,
84
- "data-testid": "remove-button"
85
- }, "Remove"));
86
- })
87
- };
88
- });
89
- describe('MediaNodeView Component', function () {
90
- var mockEditor;
91
- var mockUpdateAttributes;
92
- var mockDeleteNode;
93
- beforeEach(function () {
94
- jest.clearAllMocks();
95
- mockInsertDialog.mockClear();
96
-
97
- // Clean up any existing dialogs in the DOM
98
- document.body.innerHTML = '';
99
- mockEditor = {
100
- chain: jest.fn(function () {
101
- return {
102
- focus: jest.fn(function () {
103
- return {
104
- run: jest.fn()
105
- };
106
- })
107
- };
108
- })
109
- };
110
- mockUpdateAttributes = jest.fn();
111
- mockDeleteNode = jest.fn();
112
- });
113
- afterEach(function () {
114
- // Clean up DOM after each test
115
- document.body.innerHTML = '';
116
- });
117
- describe('dialog auto-opening behavior - verifies the fix', function () {
118
- it('should NOT open dialog on mount when audio has existing src', function () {
119
- var node = {
120
- attrs: {
121
- type: 'audio',
122
- tag: 'audio',
123
- src: 'https://example.com/audio.mp3',
124
- width: null,
125
- height: null
126
- }
127
- };
128
-
129
- // This should render without opening any dialogs
130
- var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_media["default"], {
131
- editor: mockEditor,
132
- node: node,
133
- updateAttributes: mockUpdateAttributes,
134
- deleteNode: mockDeleteNode,
135
- options: {}
136
- })),
137
- container = _render.container;
138
-
139
- // Verify the component rendered successfully
140
- expect(container.querySelector('audio')).toBeTruthy();
141
- // Verify mockInsertDialog was not called (dialog didn't open)
142
- expect(mockInsertDialog).not.toHaveBeenCalled();
143
- // Verify deleteNode was not called (media was not removed)
144
- expect(mockDeleteNode).not.toHaveBeenCalled();
145
- });
146
- it('should NOT open dialog on mount when video has existing src', function () {
147
- var node = {
148
- attrs: {
149
- type: 'video',
150
- tag: 'iframe',
151
- src: 'https://www.youtube.com/embed/dQw4w9WgXcQ',
152
- width: '640',
153
- height: '480'
154
- }
155
- };
156
-
157
- // This should render without opening any dialogs
158
- var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_media["default"], {
159
- editor: mockEditor,
160
- node: node,
161
- updateAttributes: mockUpdateAttributes,
162
- deleteNode: mockDeleteNode,
163
- options: {}
164
- })),
165
- container = _render2.container;
166
-
167
- // Verify the component rendered successfully
168
- expect(container.querySelector('iframe')).toBeTruthy();
169
- // Verify mockInsertDialog was not called (dialog didn't open)
170
- expect(mockInsertDialog).not.toHaveBeenCalled();
171
- // Verify deleteNode was not called (media was not removed)
172
- expect(mockDeleteNode).not.toHaveBeenCalled();
173
- });
174
- it('should render existing media with empty string src without opening dialog', function () {
175
- var node = {
176
- attrs: {
177
- type: 'audio',
178
- tag: 'audio',
179
- src: '',
180
- // Empty string (falsy but not null)
181
- width: null,
182
- height: null
183
- }
184
- };
185
- var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_media["default"], {
186
- editor: mockEditor,
187
- node: node,
188
- updateAttributes: mockUpdateAttributes,
189
- deleteNode: mockDeleteNode,
190
- options: {}
191
- })),
192
- container = _render3.container;
193
-
194
- // Empty string is falsy, so dialog WOULD open with current implementation
195
- // This documents current behavior
196
- expect(container).toBeTruthy();
197
- });
198
- });
199
- describe('toolbar interaction', function () {
200
- it('should render edit and remove buttons', function () {
201
- var node = {
202
- attrs: {
203
- type: 'audio',
204
- tag: 'audio',
205
- src: 'https://example.com/audio.mp3'
206
- }
207
- };
208
- var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_media["default"], {
209
- editor: mockEditor,
210
- node: node,
211
- updateAttributes: mockUpdateAttributes,
212
- deleteNode: mockDeleteNode,
213
- options: {}
214
- })),
215
- getByTestId = _render4.getByTestId;
216
- expect(getByTestId('edit-button')).toBeTruthy();
217
- expect(getByTestId('remove-button')).toBeTruthy();
218
- });
219
- });
220
- describe('rendering', function () {
221
- it('should render audio element when tag is audio', function () {
222
- var node = {
223
- attrs: {
224
- type: 'audio',
225
- tag: 'audio',
226
- src: 'https://example.com/audio.mp3'
227
- }
228
- };
229
- var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_media["default"], {
230
- editor: mockEditor,
231
- node: node,
232
- updateAttributes: mockUpdateAttributes,
233
- deleteNode: mockDeleteNode,
234
- options: {}
235
- })),
236
- container = _render5.container;
237
- var audio = container.querySelector('audio');
238
- expect(audio).toBeTruthy();
239
- var source = audio.querySelector('source');
240
- expect(source.getAttribute('src')).toBe('https://example.com/audio.mp3');
241
- });
242
- it('should render iframe when tag is iframe', function () {
243
- var node = {
244
- attrs: {
245
- type: 'video',
246
- tag: 'iframe',
247
- src: 'https://www.youtube.com/embed/dQw4w9WgXcQ',
248
- width: '640',
249
- height: '480'
250
- }
251
- };
252
- var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_media["default"], {
253
- editor: mockEditor,
254
- node: node,
255
- updateAttributes: mockUpdateAttributes,
256
- deleteNode: mockDeleteNode,
257
- options: {}
258
- })),
259
- container = _render6.container;
260
- var iframe = container.querySelector('iframe');
261
- expect(iframe).toBeTruthy();
262
- expect(iframe.getAttribute('src')).toBe('https://www.youtube.com/embed/dQw4w9WgXcQ');
263
- expect(iframe.getAttribute('width')).toBe('640');
264
- expect(iframe.getAttribute('height')).toBe('480');
265
- });
266
- it('should render MediaToolbar', function () {
267
- var node = {
268
- attrs: {
269
- type: 'audio',
270
- tag: 'audio',
271
- src: 'https://example.com/audio.mp3'
272
- }
273
- };
274
- var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_media["default"], {
275
- editor: mockEditor,
276
- node: node,
277
- updateAttributes: mockUpdateAttributes,
278
- deleteNode: mockDeleteNode,
279
- options: {}
280
- })),
281
- getByTestId = _render7.getByTestId;
282
- expect(getByTestId('media-toolbar')).toBeTruthy();
283
- expect(getByTestId('edit-button')).toBeTruthy();
284
- expect(getByTestId('remove-button')).toBeTruthy();
285
- });
286
- it('should call deleteNode when remove button is clicked', function () {
287
- var node = {
288
- attrs: {
289
- type: 'audio',
290
- tag: 'audio',
291
- src: 'https://example.com/audio.mp3'
292
- }
293
- };
294
- var _render8 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_media["default"], {
295
- editor: mockEditor,
296
- node: node,
297
- updateAttributes: mockUpdateAttributes,
298
- deleteNode: mockDeleteNode,
299
- options: {}
300
- })),
301
- getByTestId = _render8.getByTestId;
302
- _react2.fireEvent.click(getByTestId('remove-button'));
303
- expect(mockDeleteNode).toHaveBeenCalled();
304
- });
305
- });
306
- });
307
- //# sourceMappingURL=media-node-view.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"media-node-view.test.js","names":["_react","_interopRequireDefault","require","_react2","_media","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","mockInsertDialog","jest","fn","mock","requireActual","render","actual","__esModule","insertDialog","Node","create","config","mergeAttributes","_len","args","Array","_key","assign","concat","NodeViewWrapper","_ref","children","createElement","ReactNodeViewRenderer","component","_ref2","onEdit","onRemove","onClick","describe","mockEditor","mockUpdateAttributes","mockDeleteNode","beforeEach","clearAllMocks","mockClear","document","body","innerHTML","chain","focus","run","afterEach","it","node","attrs","type","tag","src","width","height","_render","editor","updateAttributes","deleteNode","options","container","expect","querySelector","toBeTruthy","not","toHaveBeenCalled","_render2","_render3","_render4","getByTestId","_render5","audio","source","getAttribute","toBe","_render6","iframe","_render7","_render8","fireEvent","click"],"sources":["../../../src/extensions/__tests__/media-node-view.test.jsx"],"sourcesContent":["// Create a mockable insertDialog function\nconst mockInsertDialog = jest.fn();\n\n// Mock react-dom BEFORE any imports that depend on it\njest.mock('react-dom', () => ({\n ...jest.requireActual('react-dom'),\n render: jest.fn(),\n}));\n\n// Mock the insertDialog function in the media module\njest.mock('../media', () => {\n const actual = jest.requireActual('../media');\n return {\n __esModule: true,\n ...actual,\n default: actual.default, // Preserve the default export\n insertDialog: (...args) => mockInsertDialog(...args),\n };\n});\n\nimport React from 'react';\nimport { render, fireEvent } from '@testing-library/react';\nimport MediaNodeView from '../media';\n\njest.mock('@tiptap/core', () => ({\n Node: { create: jest.fn((config) => config) },\n mergeAttributes: jest.fn((...args) => Object.assign({}, ...args)),\n}));\n\njest.mock('@tiptap/react', () => ({\n NodeViewWrapper: ({ children }) => <div data-testid=\"node-view-wrapper\">{children}</div>,\n ReactNodeViewRenderer: jest.fn((component) => component),\n}));\n\njest.mock('../../components/media/MediaDialog', () => ({\n __esModule: true,\n default: jest.fn(() => <div data-testid=\"media-dialog\" />),\n}));\n\njest.mock('../../components/media/MediaToolbar', () => ({\n __esModule: true,\n default: jest.fn(({ onEdit, onRemove }) => (\n <div data-testid=\"media-toolbar\">\n <button onClick={onEdit} data-testid=\"edit-button\">\n Edit Settings\n </button>\n <button onClick={onRemove} data-testid=\"remove-button\">\n Remove\n </button>\n </div>\n )),\n}));\n\ndescribe('MediaNodeView Component', () => {\n let mockEditor;\n let mockUpdateAttributes;\n let mockDeleteNode;\n\n beforeEach(() => {\n jest.clearAllMocks();\n mockInsertDialog.mockClear();\n\n // Clean up any existing dialogs in the DOM\n document.body.innerHTML = '';\n\n mockEditor = {\n chain: jest.fn(() => ({\n focus: jest.fn(() => ({\n run: jest.fn(),\n })),\n })),\n };\n\n mockUpdateAttributes = jest.fn();\n mockDeleteNode = jest.fn();\n });\n\n afterEach(() => {\n // Clean up DOM after each test\n document.body.innerHTML = '';\n });\n\n describe('dialog auto-opening behavior - verifies the fix', () => {\n it('should NOT open dialog on mount when audio has existing src', () => {\n const node = {\n attrs: {\n type: 'audio',\n tag: 'audio',\n src: 'https://example.com/audio.mp3',\n width: null,\n height: null,\n },\n };\n\n // This should render without opening any dialogs\n const { container } = render(\n <MediaNodeView\n editor={mockEditor}\n node={node}\n updateAttributes={mockUpdateAttributes}\n deleteNode={mockDeleteNode}\n options={{}}\n />,\n );\n\n // Verify the component rendered successfully\n expect(container.querySelector('audio')).toBeTruthy();\n // Verify mockInsertDialog was not called (dialog didn't open)\n expect(mockInsertDialog).not.toHaveBeenCalled();\n // Verify deleteNode was not called (media was not removed)\n expect(mockDeleteNode).not.toHaveBeenCalled();\n });\n\n it('should NOT open dialog on mount when video has existing src', () => {\n const node = {\n attrs: {\n type: 'video',\n tag: 'iframe',\n src: 'https://www.youtube.com/embed/dQw4w9WgXcQ',\n width: '640',\n height: '480',\n },\n };\n\n // This should render without opening any dialogs\n const { container } = render(\n <MediaNodeView\n editor={mockEditor}\n node={node}\n updateAttributes={mockUpdateAttributes}\n deleteNode={mockDeleteNode}\n options={{}}\n />,\n );\n\n // Verify the component rendered successfully\n expect(container.querySelector('iframe')).toBeTruthy();\n // Verify mockInsertDialog was not called (dialog didn't open)\n expect(mockInsertDialog).not.toHaveBeenCalled();\n // Verify deleteNode was not called (media was not removed)\n expect(mockDeleteNode).not.toHaveBeenCalled();\n });\n\n it('should render existing media with empty string src without opening dialog', () => {\n const node = {\n attrs: {\n type: 'audio',\n tag: 'audio',\n src: '', // Empty string (falsy but not null)\n width: null,\n height: null,\n },\n };\n\n const { container } = render(\n <MediaNodeView\n editor={mockEditor}\n node={node}\n updateAttributes={mockUpdateAttributes}\n deleteNode={mockDeleteNode}\n options={{}}\n />,\n );\n\n // Empty string is falsy, so dialog WOULD open with current implementation\n // This documents current behavior\n expect(container).toBeTruthy();\n });\n });\n\n describe('toolbar interaction', () => {\n it('should render edit and remove buttons', () => {\n const node = {\n attrs: {\n type: 'audio',\n tag: 'audio',\n src: 'https://example.com/audio.mp3',\n },\n };\n\n const { getByTestId } = render(\n <MediaNodeView\n editor={mockEditor}\n node={node}\n updateAttributes={mockUpdateAttributes}\n deleteNode={mockDeleteNode}\n options={{}}\n />,\n );\n\n expect(getByTestId('edit-button')).toBeTruthy();\n expect(getByTestId('remove-button')).toBeTruthy();\n });\n });\n\n describe('rendering', () => {\n it('should render audio element when tag is audio', () => {\n const node = {\n attrs: {\n type: 'audio',\n tag: 'audio',\n src: 'https://example.com/audio.mp3',\n },\n };\n\n const { container } = render(\n <MediaNodeView\n editor={mockEditor}\n node={node}\n updateAttributes={mockUpdateAttributes}\n deleteNode={mockDeleteNode}\n options={{}}\n />,\n );\n\n const audio = container.querySelector('audio');\n expect(audio).toBeTruthy();\n const source = audio.querySelector('source');\n expect(source.getAttribute('src')).toBe('https://example.com/audio.mp3');\n });\n\n it('should render iframe when tag is iframe', () => {\n const node = {\n attrs: {\n type: 'video',\n tag: 'iframe',\n src: 'https://www.youtube.com/embed/dQw4w9WgXcQ',\n width: '640',\n height: '480',\n },\n };\n\n const { container } = render(\n <MediaNodeView\n editor={mockEditor}\n node={node}\n updateAttributes={mockUpdateAttributes}\n deleteNode={mockDeleteNode}\n options={{}}\n />,\n );\n\n const iframe = container.querySelector('iframe');\n expect(iframe).toBeTruthy();\n expect(iframe.getAttribute('src')).toBe('https://www.youtube.com/embed/dQw4w9WgXcQ');\n expect(iframe.getAttribute('width')).toBe('640');\n expect(iframe.getAttribute('height')).toBe('480');\n });\n\n it('should render MediaToolbar', () => {\n const node = {\n attrs: {\n type: 'audio',\n tag: 'audio',\n src: 'https://example.com/audio.mp3',\n },\n };\n\n const { getByTestId } = render(\n <MediaNodeView\n editor={mockEditor}\n node={node}\n updateAttributes={mockUpdateAttributes}\n deleteNode={mockDeleteNode}\n options={{}}\n />,\n );\n\n expect(getByTestId('media-toolbar')).toBeTruthy();\n expect(getByTestId('edit-button')).toBeTruthy();\n expect(getByTestId('remove-button')).toBeTruthy();\n });\n\n it('should call deleteNode when remove button is clicked', () => {\n const node = {\n attrs: {\n type: 'audio',\n tag: 'audio',\n src: 'https://example.com/audio.mp3',\n },\n };\n\n const { getByTestId } = render(\n <MediaNodeView\n editor={mockEditor}\n node={node}\n updateAttributes={mockUpdateAttributes}\n deleteNode={mockDeleteNode}\n options={{}}\n />,\n );\n\n fireEvent.click(getByTestId('remove-button'));\n\n expect(mockDeleteNode).toHaveBeenCalled();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}