monaco-editor-core 0.56.0-dev-20251125 → 0.56.0-dev-20251217
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.
- package/esm/nls.keys.json +1 -1
- package/esm/nls.messages.cs.js +2 -2
- package/esm/nls.messages.de.js +2 -2
- package/esm/nls.messages.es.js +2 -2
- package/esm/nls.messages.fr.js +2 -2
- package/esm/nls.messages.it.js +2 -2
- package/esm/nls.messages.ja.js +2 -2
- package/esm/nls.messages.js +1 -1
- package/esm/nls.messages.json +1 -1
- package/esm/nls.messages.ko.js +2 -2
- package/esm/nls.messages.pl.js +2 -2
- package/esm/nls.messages.pt-br.js +2 -2
- package/esm/nls.messages.ru.js +2 -2
- package/esm/nls.messages.tr.js +2 -2
- package/esm/nls.messages.zh-cn.js +2 -2
- package/esm/nls.messages.zh-tw.js +2 -2
- package/esm/nls.metadata.json +30 -4
- package/esm/vs/base/browser/dom.js +1 -4
- package/esm/vs/base/browser/dom.js.map +1 -1
- package/esm/vs/base/browser/markdownRenderer.js +25 -11
- package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
- package/esm/vs/base/browser/ui/button/button.js +15 -8
- package/esm/vs/base/browser/ui/button/button.js.map +1 -1
- package/esm/vs/base/browser/ui/codicons/codicon/codicon-modifiers.css +3 -8
- package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/esm/vs/base/browser/ui/list/list.css +1 -0
- package/esm/vs/base/browser/ui/toolbar/toolbar.js +3 -0
- package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
- package/esm/vs/base/common/codiconsLibrary.js +11 -2
- package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
- package/esm/vs/base/common/defaultAccount.js +6 -0
- package/esm/vs/base/common/defaultAccount.js.map +1 -0
- package/esm/vs/base/common/equals.js +73 -24
- package/esm/vs/base/common/equals.js.map +1 -1
- package/esm/vs/base/common/event.js +14 -4
- package/esm/vs/base/common/event.js.map +1 -1
- package/esm/vs/base/common/iterator.js.map +1 -1
- package/esm/vs/base/common/keybindings.js +0 -8
- package/esm/vs/base/common/keybindings.js.map +1 -1
- package/esm/vs/base/common/lifecycle.js +2 -2
- package/esm/vs/base/common/lifecycle.js.map +1 -1
- package/esm/vs/base/common/marshallingIds.js.map +1 -1
- package/esm/vs/base/common/observableInternal/index.js +1 -1
- package/esm/vs/base/common/observableInternal/index.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js +1 -1
- package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js.map +1 -1
- package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js +16 -0
- package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js.map +1 -1
- package/esm/vs/base/common/observableInternal/utils/utils.js +11 -0
- package/esm/vs/base/common/observableInternal/utils/utils.js.map +1 -1
- package/esm/vs/base/common/product.js.map +1 -1
- package/esm/vs/base/common/strings.js +3 -1
- package/esm/vs/base/common/strings.js.map +1 -1
- package/esm/vs/editor/browser/controller/dragScrolling.js +2 -1
- package/esm/vs/editor/browser/controller/dragScrolling.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js +73 -2
- package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +7 -51
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/screenReaderUtils.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +7 -20
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js +14 -44
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js +19 -0
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js.map +1 -0
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js +14 -1
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js.map +1 -1
- package/esm/vs/editor/browser/controller/mouseHandler.js +5 -2
- package/esm/vs/editor/browser/controller/mouseHandler.js.map +1 -1
- package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
- package/esm/vs/editor/browser/observableCodeEditor.js +32 -15
- package/esm/vs/editor/browser/observableCodeEditor.js.map +1 -1
- package/esm/vs/editor/browser/view.js +11 -2
- package/esm/vs/editor/browser/view.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +5 -2
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +10 -0
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/style.css +48 -0
- package/esm/vs/editor/common/config/fontInfo.js +1 -1
- package/esm/vs/editor/common/config/fontInfo.js.map +1 -1
- package/esm/vs/editor/common/core/edits/edit.js +19 -0
- package/esm/vs/editor/common/core/edits/edit.js.map +1 -1
- package/esm/vs/editor/common/core/edits/stringEdit.js +13 -0
- package/esm/vs/editor/common/core/edits/stringEdit.js.map +1 -1
- package/esm/vs/editor/common/core/edits/textEdit.js +0 -3
- package/esm/vs/editor/common/core/edits/textEdit.js.map +1 -1
- package/esm/vs/editor/common/core/text/positionToOffsetImpl.js +24 -10
- package/esm/vs/editor/common/core/text/positionToOffsetImpl.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorMoveCommands.js +4 -4
- package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorWordOperations.js +6 -3
- package/esm/vs/editor/common/cursor/cursorWordOperations.js.map +1 -1
- package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js +2 -2
- package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js.map +1 -1
- package/esm/vs/editor/common/languages/nullTokenize.js +1 -1
- package/esm/vs/editor/common/languages/nullTokenize.js.map +1 -1
- package/esm/vs/editor/common/languages/supports/tokenization.js +3 -0
- package/esm/vs/editor/common/languages/supports/tokenization.js.map +1 -1
- package/esm/vs/editor/common/languages.js +2 -1
- package/esm/vs/editor/common/languages.js.map +1 -1
- package/esm/vs/editor/common/model/decorationProvider.js +21 -1
- package/esm/vs/editor/common/model/decorationProvider.js.map +1 -1
- package/esm/vs/editor/common/model/textModel.js +49 -30
- package/esm/vs/editor/common/model/textModel.js.map +1 -1
- package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js +6 -3
- package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js.map +1 -1
- package/esm/vs/editor/common/model/tokens/annotations.js +177 -0
- package/esm/vs/editor/common/model/tokens/annotations.js.map +1 -0
- package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js +131 -0
- package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js.map +1 -0
- package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js +9 -0
- package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js.map +1 -1
- package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js +9 -0
- package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js.map +1 -1
- package/esm/vs/editor/common/textModelEditSource.js +2 -0
- package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
- package/esm/vs/editor/common/textModelEvents.js.map +1 -1
- package/esm/vs/editor/common/viewLayout/lineDecorations.js.map +1 -1
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +1 -1
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js.map +1 -1
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +54 -36
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js.map +1 -1
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +14 -1
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js.map +1 -1
- package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +1 -1
- package/esm/vs/editor/contrib/hover/browser/hover.css +1 -1
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +1 -1
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +1 -0
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +33 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -12
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +7 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js +2 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js +8 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js +198 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js +40 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +128 -70
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +59 -11
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +152 -95
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js +113 -54
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +317 -75
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/telemetry.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js +20 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +59 -42
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +29 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +78 -46
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js +9 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +11 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +81 -41
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js +48 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js +18 -15
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js +3 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js +6 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js +4 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js +4 -3
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js +8 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js +9 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +203 -41
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js +189 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +85 -102
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js +75 -32
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js +121 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js +2 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +22 -20
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js +15 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/view.css +39 -6
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +10 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js.map +1 -1
- package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
- package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -32
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js.map +1 -1
- package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
- package/esm/vs/editor/contrib/links/browser/links.js +10 -10
- package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
- package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
- package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
- package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +11 -11
- package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
- package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
- package/esm/vs/editor/contrib/rename/browser/rename.js +19 -15
- package/esm/vs/editor/contrib/rename/browser/rename.js.map +1 -1
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
- package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js +3 -2
- package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js.map +1 -1
- package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetParser.js +33 -0
- package/esm/vs/editor/contrib/snippet/browser/snippetParser.js.map +1 -1
- package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js +12 -4
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js.map +1 -1
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +1 -0
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -8
- package/esm/vs/editor/contrib/suggest/browser/suggest.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js +39 -28
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js +1 -0
- package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +22 -18
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +28 -6
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
- package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
- package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
- package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +24 -24
- package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
- package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
- package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
- package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +19 -2
- package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js.map +1 -1
- package/esm/vs/editor/editor.api.d.ts +34 -3
- package/esm/vs/editor/standalone/browser/standaloneLanguages.js +2 -2
- package/esm/vs/editor/standalone/browser/standaloneLanguages.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneServices.js +11 -1
- package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
- package/esm/vs/editor/standalone/common/monarch/monarchLexer.js +1 -1
- package/esm/vs/editor/standalone/common/monarch/monarchLexer.js.map +1 -1
- package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
- package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
- package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
- package/esm/vs/platform/actionWidget/browser/actionWidget.css +11 -8
- package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
- package/esm/vs/platform/actions/browser/toolbar.js +2 -2
- package/esm/vs/platform/actions/common/actions.js +11 -5
- package/esm/vs/platform/actions/common/actions.js.map +1 -1
- package/esm/vs/platform/actions/common/menuService.js +2 -2
- package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
- package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
- package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
- package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
- package/esm/vs/platform/contextkey/common/scanner.js +5 -5
- package/esm/vs/platform/{product/common/productService.js → defaultAccount/common/defaultAccount.js} +2 -2
- package/esm/vs/platform/defaultAccount/common/defaultAccount.js.map +1 -0
- package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
- package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
- package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
- package/esm/vs/platform/instantiation/common/instantiation.js.map +1 -1
- package/esm/vs/platform/instantiation/common/instantiationService.js +1 -8
- package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
- package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
- package/esm/vs/platform/list/browser/listService.js +27 -27
- package/esm/vs/platform/log/common/log.js +1 -1
- package/esm/vs/platform/log/common/log.js.map +1 -1
- package/esm/vs/platform/markers/common/markerService.js +6 -6
- package/esm/vs/platform/markers/common/markerService.js.map +1 -1
- package/esm/vs/platform/markers/common/markers.js +6 -6
- package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +8 -8
- package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
- package/esm/vs/platform/quickinput/browser/media/quickInput.css +7 -3
- package/esm/vs/platform/quickinput/browser/quickInput.js +19 -11
- package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
- package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
- package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
- package/esm/vs/platform/theme/common/colorUtils.js +2 -2
- package/esm/vs/platform/theme/common/colors/baseColors.js +18 -17
- package/esm/vs/platform/theme/common/colors/baseColors.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
- package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
- package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
- package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
- package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
- package/esm/vs/platform/theme/common/colors/minimapColors.js +13 -13
- package/esm/vs/platform/theme/common/colors/minimapColors.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
- package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
- package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
- package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
- package/esm/vs/platform/undoRedo/common/undoRedoService.js +21 -21
- package/esm/vs/platform/undoRedo/common/undoRedoService.js.map +1 -1
- package/esm/vs/platform/window/common/window.js +1 -1
- package/esm/vs/platform/window/common/window.js.map +1 -1
- package/esm/vs/platform/workspace/common/workspace.js +1 -1
- package/monaco.d.ts +34 -3
- package/package.json +2 -2
- package/version.txt +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js +0 -16
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js.map +0 -1
- package/esm/vs/platform/product/common/productService.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/browser/widget/codeEditor/codeEditorWidget.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;;;;;;;;;;;AAEhG,OAAO,qCAAqC,CAAC;AAC7C,OAAO,KAAK,GAAG,MAAM,iCAAiC,CAAC;AAIvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,OAAO,EAA6C,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAChI,OAAO,EAAE,UAAU,EAAgC,OAAO,EAAE,MAAM,sCAAsC,CAAC;AACzG,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAA8B,MAAM,qCAAqC,CAAC;AACtG,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,wBAAwB,EAAkC,MAAM,2BAA2B,CAAC;AACrG,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAkE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrG,OAAO,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAEnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAwI,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AACnP,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAa,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAU,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAc,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAEhF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,4DAA4D,CAAC;AAG3G,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AAIxF,OAAO,EAAE,kCAAkC,EAAE,MAAM,0DAA0D,CAAC;AAC9G,OAAO,EAAE,SAAS,EAAE,MAAM,4CAA4C,CAAC;AAEvE,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4DAA4D,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AACnF,OAAO,EAAgC,kBAAkB,EAAE,MAAM,sDAAsD,CAAC;AACxH,OAAO,EAAE,qBAAqB,EAAoB,MAAM,4DAA4D,CAAC;AACrH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gEAAgE,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,0DAA0D,CAAC;AAC1G,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAChK,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC9G,OAAO,EAAE,MAAM,EAAE,MAAM,gDAAgD,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAE1F,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAErD,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,UAAU;;aAEvB,oCAA+B,GAAG,sBAAsB,CAAC,QAAQ,CAAC;QACzF,WAAW,EAAE,sBAAsB;QACnC,SAAS,EAAE,YAAY;KACvB,CAHsD,AAGrD,CAAC;IA2IH,YAAY;IAEZ,IAAW,cAAc;QACxB,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;IAC3C,CAAC;IAED,IAAW,aAAa;QACvB,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;IAC1C,CAAC;IAiBD,IAAI,iBAAiB,KAAK,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAsB3D,YACC,UAAuB,EACvB,QAA8C,EAC9C,uBAAiD,EAC1B,oBAA2C,EAC9C,iBAAqC,EACxC,cAA+B,EAC5B,iBAAqC,EAC1C,YAA2B,EACpB,mBAAyC,EACxC,oBAA2C,EACnC,4BAA4E,EACjF,uBAAiD;QAE3E,KAAK,EAAE,CAAC;QAHwC,iCAA4B,GAA5B,4BAA4B,CAA+B;QAnM5G,kBAAkB;QAED,mBAAc,GAAG,wBAAwB,EAAE,CAAC;QAC1C,mBAAc,GAA4B,IAAI,CAAC,SAAS,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAC;QAE1F,kBAAa,GAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,EAAQ,CAAC,CAAC;QACpE,iBAAY,GAAgB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAEpD,6BAAwB,GAAuC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAA4B,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAC/J,4BAAuB,GAAqC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;QAE/F,8BAAyB,GAAwC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAA6B,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAClK,6BAAwB,GAAsC,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;QAElG,2CAAsC,GAAqD,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAA0C,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACzM,0CAAqC,GAAmD,IAAI,CAAC,sCAAsC,CAAC,KAAK,CAAC;QAEzI,6BAAwB,GAAuC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAA4B,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAC/J,4BAAuB,GAAqC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;QAE/F,iCAA4B,GAA2C,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAgC,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAC3K,gCAA2B,GAAyC,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC;QAE3G,2BAAsB,GAAyC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAA8B,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACjK,0BAAqB,GAAuC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;QAE7F,qBAAgB,GAAmC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAwB,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAC/I,oBAAe,GAAiC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAE3E,4BAAuB,GAAsC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAA2B,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAC5J,2BAAsB,GAAoC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;QAE5F,8BAAyB,GAAuC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAA4B,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAChK,6BAAwB,GAAqC,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;QAE/F,uBAAkB,GAA6C,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAkC,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACvK,sBAAiB,GAA2C,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAEvF,sBAAiB,GAA6C,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAkC,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACtK,qBAAgB,GAA2C,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;QAEvF,+BAA0B,GAAyC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAA8B,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACrK,8BAAyB,GAAuC,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;QAErG,gCAA2B,GAA0C,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAA+B,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACxK,+BAA0B,GAAwC,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC;QAExG,8BAAyB,GAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAO,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACnI,6BAAwB,GAAgB,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;QAE5E,uBAAkB,GAA8B,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAmB,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACvI,sBAAiB,GAA4B,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAE1E,qBAAgB,GAAwB,IAAI,CAAC,SAAS,CAAC,IAAI,mBAAmB,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACzH,yBAAoB,GAAgB,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;QAC5E,wBAAmB,GAAgB,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;QAE3E,uBAAkB,GAAwB,IAAI,CAAC,SAAS,CAAC,IAAI,mBAAmB,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAC3H,2BAAsB,GAAgB,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;QAChF,0BAAqB,GAAgB,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC;QAE/E,gBAAW,GAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAS,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACzH,eAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAEnC,eAAU,GAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAS,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACxH,cAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAEjC,2BAAsB,GAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAO,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAChI,0BAAqB,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;QAEzD,yBAAoB,GAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAO,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC9H,wBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;QAErD,gBAAW,GAAuC,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAA4B,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC/J,eAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAEnC,eAAU,GAA6C,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAkC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC1K,cAAS,GAA2C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAEzE,iBAAY,GAA6C,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAkC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC5K,gBAAW,GAA2C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAE7E,iBAAY,GAA6C,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAkC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC5K,gBAAW,GAA2C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAE7E,iBAAY,GAAoD,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAyC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC1L,gBAAW,GAAkD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAEpF,yBAAoB,GAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAO,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC9H,wBAAmB,GAAgB,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;QAElE,sBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAA8D,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACnK,qBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;QAE/C,mBAAc,GAA6C,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAkC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC9K,kBAAa,GAA2C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAEjF,iBAAY,GAA6C,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAkC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC5K,gBAAW,GAA2C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAE7E,kBAAa,GAAoD,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAyC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC3L,iBAAY,GAAkD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAEtF,kBAAa,GAA8B,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAmB,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC/I,iBAAY,GAA4B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAEhE,aAAQ,GAA4B,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAiB,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACtI,YAAO,GAA0B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAEpD,eAAU,GAA4B,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAiB,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACxI,cAAS,GAA0B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAExD,4BAAuB,GAAmD,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAwC,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACtL,2BAAsB,GAAiD,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;QAEzG,uBAAkB,GAAuC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAA4B,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACzJ,sBAAiB,GAAqC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAEnF,0BAAqB,GAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAO,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAClH,yBAAoB,GAAgB,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;QAEpE,4BAAuB,GAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAO,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACpH,2BAAsB,GAAgB,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;QAEjF,mBAAc,GAAG,CAAC,CAAC;QAEV,uCAAkC,GAAuD,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,EAA6C,CAAC,CAAC;QAElK,mBAAc,GAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,EAAQ,CAAC,CAAC;QACrE,kBAAa,GAAgB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAEtD,iBAAY,GAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,EAAQ,CAAC,CAAC;QACnE,gBAAW,GAAgB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAElD,yBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,EAAkC,CAAC,CAAC;QACtF,wBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;QAoBnD,aAAQ,GAAG,IAAI,GAAG,EAAsC,CAAC;QAuBpE,mBAAc,GAAuB,IAAI,CAAC;QAE1C,+BAA0B,GAAgC,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAE9F,kBAAa,GAAY,KAAK,CAAC;QAiBrC,iBAAiB,CAAC,oBAAoB,EAAE,CAAC;QAEzC,MAAM,OAAO,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAEhC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;QAC9D,OAAO,OAAO,CAAC,sBAAsB,CAAC;QACtC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;QACzB,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,uBAAuB,CAAC,aAAa,CAAC;QAE5D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,cAAc,IAAI,KAAK,EAC7G,uBAAuB,CAAC,aAAa,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EACrI,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE;YACpD,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEvC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC5C,IAAI,CAAC,CAAC,UAAU,mCAAyB,EAAE,CAAC;gBAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,mCAAyB,CAAC;gBACxD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1C,CAAC;QACF,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3F,IAAI,uBAAuB,CAAC,gBAAgB,EAAE,CAAC;YAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACrF,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC/C,CAAC;QACF,CAAC;QACD,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;QAChD,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC5C,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,IAAI,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,SAAS,CAAC,IAAI,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,CAAC,CAAC;QAE9F,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,iBAAiB,CAAC,CAAC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAE9B,IAAI,aAA+C,CAAC;QACpD,IAAI,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC,aAAa,CAAC,EAAE,CAAC;YAC1D,aAAa,GAAG,uBAAuB,CAAC,aAAa,CAAC;QACvD,CAAC;aAAM,CAAC;YACP,aAAa,GAAG,wBAAwB,CAAC,sBAAsB,EAAE,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAEhF,KAAK,MAAM,MAAM,IAAI,wBAAwB,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAClE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;gBAClC,iBAAiB,CAAC,IAAI,KAAK,CAAC,4CAA4C,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBACtF,SAAS;YACV,CAAC;YACD,MAAM,cAAc,GAAG,IAAI,oBAAoB,CAC9C,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,YAAY,IAAI,SAAS,EAChC,CAAC,IAAa,EAAiB,EAAE;gBAChC,OAAO,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,EAAE;oBAC7D,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;gBACvE,CAAC,CAAC,CAAC;YACJ,CAAC,EACD,IAAI,CAAC,kBAAkB,CACvB,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,iBAAiB,GAAG,GAAG,EAAE;YAC9B,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,iCAAuB;mBAC1D,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,sCAA6B,CAAC,OAAO,CAAC;QAC1E,CAAC,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE;YAC5D,UAAU,EAAE,CAAC,CAAC,EAAE;gBACf,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;oBAC1B,OAAO;gBACR,CAAC;gBAED,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;gBACjE,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;oBACtB,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC3C,CAAC;YACF,CAAC;YACD,MAAM,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;gBACjB,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;oBAC1B,OAAO;gBACR,CAAC;gBAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAE3B,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;oBACrB,OAAO;gBACR,CAAC;gBAED,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;gBACjE,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;oBACtB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBACtE,CAAC;YACF,CAAC;YACD,WAAW,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC5B,CAAC;YACD,SAAS,EAAE,GAAG,EAAE;gBACf,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC5B,CAAC;SACD,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAEM,wBAAwB,CAAC,MAAc;QAC7C,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAES,oBAAoB,CAAC,cAAuB,EAAE,aAAqB,EAAE,OAA6C,EAAE,oBAA2C;QACxK,OAAO,IAAI,mBAAmB,CAAC,cAAc,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;IAChH,CAAC;IAEM,KAAK;QACX,OAAO,IAAI,CAAC,aAAa,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IAC9C,CAAC;IAEM,aAAa;QACnB,OAAO,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC;IAC5C,CAAC;IAEe,OAAO;QACtB,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAE/C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAE1B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAElD,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAE1B,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAEM,mBAAmB,CAAI,EAAqC;QAClE,OAAO,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IAEM,aAAa,CAAC,UAAgD;QACpE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IAEM,UAAU;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;IACpC,CAAC;IAEM,SAAS,CAAyB,EAAK;QAC7C,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;IAEM,aAAa;QACnB,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;IAC5C,CAAC;IAEM,yBAAyB;QAC/B,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACrC,CAAC;IAEM,2BAA2B,CAAC,QAAkB;QACpD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,uCAA6B,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,6CAAmC,EAAE,QAAQ,CAAC,CAAC;IAC5M,CAAC;IAEM,QAAQ,CAAC,UAA+D,IAAI;QAClF,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,EAAE,CAAC;QACX,CAAC;QAED,MAAM,WAAW,GAAY,CAAC,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAC7E,IAAI,aAAa,0CAAkC,CAAC;QACpD,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAClE,aAAa,iCAAyB,CAAC;QACxC,CAAC;aAAM,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;YAC3E,aAAa,mCAA2B,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACnE,CAAC;IAEM,QAAQ,CAAC,QAAgB;QAC/B,IAAI,CAAC;YACJ,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACtB,OAAO;YACR,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,UAAU,EAAE,CAAC;QACnB,CAAC;IACF,CAAC;IAEM,QAAQ;QACd,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IAC9B,CAAC;IAEM,QAAQ,CAAC,SAAgG,IAAI;QACnH,IAAI,CAAC;YACJ,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,MAAM,KAAK,GAAsB,MAAM,CAAC;YACxC,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAChD,iCAAiC;gBACjC,OAAO;YACR,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;gBACxD,iCAAiC;gBACjC,OAAO;YACR,CAAC;YAED,MAAM,CAAC,GAAoC;gBAC1C,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,IAAI,IAAI;gBAC/C,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI;aAC/B,CAAC;YACF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEhC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACzC,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACrB,yCAAyC;gBACzC,IAAI,YAAY,EAAE,CAAC;oBAClB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACd,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,yCAAyC;gBACzC,uDAAuD;gBACvD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;YAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;YAE5C,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC;QAC5E,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,UAAU,EAAE,CAAC;QACnB,CAAC;IACF,CAAC;IAEO,sBAAsB;QAC7B,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAClC,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;gBAC9D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAChC,IAAI,CAAC,qBAAqB,CAAC,cAAc,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC;gBAC5D,CAAC;YACF,CAAC;YACD,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;QACnC,CAAC;IACF,CAAC;IAEM,gBAAgB;QACtB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,EAAE,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;IACrD,CAAC;IAEM,sCAAsC;QAC5C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,EAAE,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,sCAAsC,EAAE,CAAC;IAC3E,CAAC;IAEM,cAAc;QACpB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,EAAE,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;IAC9D,CAAC;IAEO,MAAM,CAAC,+BAA+B,CAAC,SAAoB,EAAE,eAAuB,EAAE,WAAmB,EAAE,gBAAyB;QAC3I,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC;YACtD,UAAU,EAAE,eAAe;YAC3B,MAAM,EAAE,WAAW;SACnB,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,oBAAoB,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;QAChH,OAAO,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,gCAAgC,CAAC,YAAY,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;IACnH,CAAC;IAEM,mBAAmB,CAAC,UAAkB,EAAE,mBAA4B,KAAK;QAC/E,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,CAAC;QACX,CAAC;QACD,OAAO,kBAAgB,CAAC,6BAA6B,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACzG,CAAC;IAEM,iBAAiB,CAAC,UAAkB,EAAE,MAAc;QAC1D,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,CAAC;QACX,CAAC;QACD,OAAO,kBAAgB,CAAC,6BAA6B,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACnG,CAAC;IAEO,MAAM,CAAC,6BAA6B,CAAC,SAAoB,EAAE,eAAuB,EAAE,WAAmB,EAAE,mBAA4B,KAAK;QACjJ,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC;YACtD,UAAU,EAAE,eAAe;YAC3B,MAAM,EAAE,WAAW;SACnB,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,oBAAoB,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;QAChH,OAAO,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,8BAA8B,CAAC,YAAY,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;IACjH,CAAC;IAEM,sBAAsB,CAAC,UAAkB,EAAE,mBAA4B,KAAK;QAClF,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,CAAC;QACX,CAAC;QACD,OAAO,kBAAgB,CAAC,+BAA+B,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IACjI,CAAC;IAEM,wBAAwB,CAAC,QAAmB;QAClD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,CAAC;QACX,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAC5C,MAAM,oBAAoB,GAAG,SAAS,CAAC,oBAAoB,CAAC;QAC5D,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,oBAAoB,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC;YACtD,MAAM,YAAY,GAAG,oBAAoB,CAAC,kCAAkC,CAAC,GAAG,CAAC,CAAC;YAClF,OAAO,SAAS,CAAC,UAAU,CAAC,0BAA0B,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,CAAC,CAAC;IACV,CAAC;IAEM,cAAc,CAAC,MAAgB,EAAE,MAAgB,EAAE,WAAqB;QAC9E,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAChG,CAAC;IAEM,4BAA4B,CAAC,WAAsB;QACzD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,WAAW,CAAC,MAAM,CAAC;QAC3B,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC;QAE3D,OAAO,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACvI,CAAC;IAEM,WAAW;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAChD,CAAC;IAEM,WAAW,CAAC,QAAmB,EAAE,SAAiB,KAAK;QAC7D,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;gBAChD,wBAAwB,EAAE,QAAQ,CAAC,UAAU;gBAC7C,oBAAoB,EAAE,QAAQ,CAAC,MAAM;gBACrC,kBAAkB,EAAE,QAAQ,CAAC,UAAU;gBACvC,cAAc,EAAE,QAAQ,CAAC,MAAM;aAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,UAAiB,EAAE,YAAgC,EAAE,gBAAyB,EAAE,UAAmC;QAC3I,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,oBAAoB,CAAC,4BAA4B,CAAC,mBAAmB,CAAC,CAAC;QAEnH,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;IACrG,CAAC;IAEM,gBAAgB,CAAC,gBAAyB,EAAE,aAAuB;QACzE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;IACpF,CAAC;IAEM,UAAU,CAAC,UAAkB,EAAE,mDAAoE;QACzG,IAAI,CAAC,WAAW,CAAC,UAAU,qCAA6B,UAAU,CAAC,CAAC;IACrE,CAAC;IAEM,kBAAkB,CAAC,UAAkB,EAAE,mDAAoE;QACjH,IAAI,CAAC,WAAW,CAAC,UAAU,qCAA6B,UAAU,CAAC,CAAC;IACrE,CAAC;IAEM,mCAAmC,CAAC,UAAkB,EAAE,mDAAoE;QAClI,IAAI,CAAC,WAAW,CAAC,UAAU,sDAA8C,UAAU,CAAC,CAAC;IACtF,CAAC;IAEM,iBAAiB,CAAC,UAAkB,EAAE,mDAAoE;QAChH,IAAI,CAAC,WAAW,CAAC,UAAU,sCAA8B,UAAU,CAAC,CAAC;IACtE,CAAC;IAEO,WAAW,CAAC,UAAkB,EAAE,UAA8B,EAAE,UAAmC;QAC1G,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,gBAAgB,CACpB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EACvC,UAAU,EACV,KAAK,EACL,UAAU,CACV,CAAC;IACH,CAAC;IAEM,cAAc,CAAC,QAAmB,EAAE,mDAAoE;QAC9G,IAAI,CAAC,eAAe,CACnB,QAAQ,qCAER,IAAI,EACJ,UAAU,CACV,CAAC;IACH,CAAC;IAEM,sBAAsB,CAAC,QAAmB,EAAE,mDAAoE;QACtH,IAAI,CAAC,eAAe,CACnB,QAAQ,qCAER,IAAI,EACJ,UAAU,CACV,CAAC;IACH,CAAC;IAEM,uCAAuC,CAAC,QAAmB,EAAE,mDAAoE;QACvI,IAAI,CAAC,eAAe,CACnB,QAAQ,sDAER,IAAI,EACJ,UAAU,CACV,CAAC;IACH,CAAC;IAEM,qBAAqB,CAAC,QAAmB,EAAE,mDAAoE;QACrH,IAAI,CAAC,eAAe,CACnB,QAAQ,sCAER,IAAI,EACJ,UAAU,CACV,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,QAAmB,EAAE,YAAgC,EAAE,gBAAyB,EAAE,UAAmC;QAC5I,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,gBAAgB,CACpB,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,EACrF,YAAY,EACZ,gBAAgB,EAChB,UAAU,CACV,CAAC;IACH,CAAC;IAEM,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACjD,CAAC;IAEM,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;IAClD,CAAC;IAOM,YAAY,CAAC,SAAkB,EAAE,SAAiB,KAAK;QAC7D,MAAM,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE1C,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,OAAO,EAAE,CAAC;YACpB,6BAA6B;YAC7B,MAAM,SAAS,GAAe;gBAC7B,wBAAwB,EAAE,SAAS,CAAC,eAAe;gBACnD,oBAAoB,EAAE,SAAS,CAAC,WAAW;gBAC3C,kBAAkB,EAAE,SAAS,CAAC,aAAa;gBAC3C,cAAc,EAAE,SAAS,CAAC,SAAS;aACnC,CAAC;YACF,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;IACF,CAAC;IAEO,iBAAiB,CAAC,GAAe,EAAE,MAAc;QACxD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,wBAAwB,EAAE,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;QACpI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEM,WAAW,CAAC,eAAuB,EAAE,aAAqB,EAAE,mDAAoE;QACtI,IAAI,CAAC,YAAY,CAChB,eAAe,EACf,aAAa,qCAEb,UAAU,CACV,CAAC;IACH,CAAC;IAEM,mBAAmB,CAAC,eAAuB,EAAE,aAAqB,EAAE,mDAAoE;QAC9I,IAAI,CAAC,YAAY,CAChB,eAAe,EACf,aAAa,qCAEb,UAAU,CACV,CAAC;IACH,CAAC;IAEM,oCAAoC,CAAC,eAAuB,EAAE,aAAqB,EAAE,mDAAoE;QAC/J,IAAI,CAAC,YAAY,CAChB,eAAe,EACf,aAAa,sDAEb,UAAU,CACV,CAAC;IACH,CAAC;IAEM,kBAAkB,CAAC,eAAuB,EAAE,aAAqB,EAAE,mDAAoE;QAC7I,IAAI,CAAC,YAAY,CAChB,eAAe,EACf,aAAa,sCAEb,UAAU,CACV,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,eAAuB,EAAE,aAAqB,EAAE,YAAgC,EAAE,UAAmC;QACzI,IAAI,OAAO,eAAe,KAAK,QAAQ,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YAC9E,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,gBAAgB,CACpB,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,EAC/C,YAAY,EACZ,KAAK,EACL,UAAU,CACV,CAAC;IACH,CAAC;IAEM,WAAW,CAAC,KAAa,EAAE,mDAAoE,EAAE,yBAAkC,KAAK,EAAE,mBAA4B,IAAI;QAChL,IAAI,CAAC,YAAY,CAChB,KAAK,EACL,sBAAsB,CAAC,CAAC,mCAA2B,CAAC,kCAA0B,EAC9E,gBAAgB,EAChB,UAAU,CACV,CAAC;IACH,CAAC;IAEM,mBAAmB,CAAC,KAAa,EAAE,mDAAoE;QAC7G,IAAI,CAAC,YAAY,CAChB,KAAK,qCAEL,IAAI,EACJ,UAAU,CACV,CAAC;IACH,CAAC;IAEM,oCAAoC,CAAC,KAAa,EAAE,mDAAoE;QAC9H,IAAI,CAAC,YAAY,CAChB,KAAK,sDAEL,IAAI,EACJ,UAAU,CACV,CAAC;IACH,CAAC;IAEM,kBAAkB,CAAC,KAAa,EAAE,mDAAoE;QAC5G,IAAI,CAAC,YAAY,CAChB,KAAK,sCAEL,IAAI,EACJ,UAAU,CACV,CAAC;IACH,CAAC;IAEM,mCAAmC,CAAC,KAAa,EAAE,mDAAoE;QAC7H,IAAI,CAAC,YAAY,CAChB,KAAK,uDAEL,IAAI,EACJ,UAAU,CACV,CAAC;IACH,CAAC;IAEM,gBAAgB,CAAC,KAAa,EAAE,mDAAoE;QAC1G,IAAI,CAAC,YAAY,CAChB,KAAK,kCAEL,IAAI,EACJ,UAAU,CACV,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,KAAa,EAAE,YAAgC,EAAE,gBAAyB,EAAE,UAAmC;QACnI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,gBAAgB,CACpB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EACjB,YAAY,EACZ,gBAAgB,EAChB,UAAU,CACV,CAAC;IACH,CAAC;IAEM,aAAa,CAAC,MAA6B,EAAE,SAAiB,KAAK,EAAE,MAAM,oCAA4B;QAC7G,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtC,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACtC,CAAC;QACF,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAEM,eAAe;QACrB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;IAC/D,CAAC;IAEM,cAAc;QACpB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;IAC9D,CAAC;IACM,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;IACpE,CAAC;IAEM,gBAAgB;QACtB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;IAChE,CAAC;IAEM,eAAe;QACrB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;IAC/D,CAAC;IACM,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;IACnE,CAAC;IAEM,aAAa,CAAC,aAAqB,EAAE,sDAAuE;QAClH,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QACD,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC;YACtD,UAAU,EAAE,aAAa;SACzB,EAAE,UAAU,CAAC,CAAC;IAChB,CAAC;IACM,YAAY,CAAC,YAAoB,EAAE,sDAAuE;QAChH,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QACD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC;YACtD,SAAS,EAAE,YAAY;SACvB,EAAE,UAAU,CAAC,CAAC;IAChB,CAAC;IACM,iBAAiB,CAAC,QAAyC,EAAE,sDAAuE;QAC1I,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC9E,CAAC;IACM,yBAAyB;QAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,yBAAyB,EAAE,CAAC;IACzE,CAAC;IAEM,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACb,CAAC;QACD,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;QAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACxD,OAAO;YACN,WAAW,EAAE,WAAW;YACxB,SAAS,EAAE,SAAS;YACpB,kBAAkB,EAAE,kBAAkB;SACtC,CAAC;IACH,CAAC;IAEM,gBAAgB,CAAC,CAAuC;QAC9D,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACtD,OAAO;QACR,CAAC;QACD,MAAM,eAAe,GAAG,CAA6C,CAAC;QACtE,IAAI,eAAe,IAAI,eAAe,CAAC,WAAW,IAAI,eAAe,CAAC,SAAS,EAAE,CAAC;YACjF,MAAM,WAAW,GAAY,eAAe,CAAC,WAAW,CAAC;YACzD,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,kBAAkB,CAA8B,WAAW,CAAC,CAAC;gBACxF,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,0BAA0B;gBAC1B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAA4B,WAAW,CAAC,CAAC,CAAC;YACxF,CAAC;YAED,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,eAAe,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;YAC/E,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,kBAAkB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAC7F,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QACjD,CAAC;IACF,CAAC;IAEM,iBAAiB;QACvB,IAAI,CAAC,aAAa,EAAE,EAAE,sBAAsB,EAAE,CAAC;IAChD,CAAC;IAEM,eAAe,CAA6C,EAAU;QAC5E,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAa,CAAC;IAChD,CAAC;IAEM,UAAU;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3C,CAAC;IAEM,mBAAmB;QACzB,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAE/B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAEvD,OAAO,MAAM,CAAC;IACf,CAAC;IAEM,SAAS,CAAC,EAAU;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;IACtC,CAAC;IAEM,OAAO,CAAC,MAAiC,EAAE,SAAiB,EAAE,OAAgB;QACpF,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;QAExB,IAAI,CAAC;YACJ,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACzG,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpB,QAAQ,SAAS,EAAE,CAAC;gBACnB;oBACC,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACzB,OAAO;gBACR;oBACC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBAC7B,OAAO;gBACR,2CAA8B,CAAC,CAAC,CAAC;oBAChC,MAAM,IAAI,GAAsC,OAAO,CAAC;oBACxD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;oBACpC,OAAO;gBACR,CAAC;gBACD,yEAA6C,CAAC,CAAC,CAAC;oBAC/C,MAAM,IAAI,GAAqD,OAAO,CAAC;oBACvE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,cAAc,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC/E,OAAO;gBACR,CAAC;gBACD,iEAAyC,CAAC,CAAC,CAAC;oBAC3C,MAAM,IAAI,GAAiD,OAAO,CAAC;oBACnE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,kBAAkB,IAAI,CAAC,EAAE,IAAI,CAAC,kBAAkB,IAAI,CAAC,EAAE,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;oBACpI,OAAO;gBACR,CAAC;gBACD,6CAA+B,CAAC,CAAC,CAAC;oBACjC,MAAM,IAAI,GAAwC,OAAO,CAAC;oBAC1D,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,cAAc,IAAI,KAAK,EAAE,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;oBACzI,OAAO;gBACR,CAAC;gBACD;oBACC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAClB,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;gBACxE,OAAO;YACR,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACtB,OAAO;YACR,CAAC;YAED,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC5D,OAAO;YACR,CAAC;YAED,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,UAAU,EAAE,CAAC;QACnB,CAAC;IACF,CAAC;IAES,eAAe,CAAC,SAAiB,EAAE,OAAgB;QAC5D,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAEO,iBAAiB;QACxB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAC7C,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;IAEO,eAAe,CAAC,MAAiC;QACxD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IAEO,KAAK,CAAC,MAAiC,EAAE,IAAY;QAC5D,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO;QACR,CAAC;QACD,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAEO,gBAAgB,CAAC,MAAiC,EAAE,IAAY,EAAE,kBAA0B,EAAE,kBAA0B,EAAE,aAAqB;QACtJ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAChH,CAAC;IAEO,MAAM,CAAC,MAAiC,EAAE,IAAY,EAAE,cAAuB,EAAE,eAAgC,EAAE,IAAmB,EAAE,cAA+B;QAC9K,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAC5C,MAAM,aAAa,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC,gBAAgB,EAAE,CAAC;QAClE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC,gBAAgB,EAAE,CAAC;QAChE,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACrB,cAAc;gBACd,KAAK,EAAE,IAAI,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC;gBAC5G,UAAU,EAAE,IAAI;aAChB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAEO,IAAI,CAAC,MAAiC;QAC7C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAEO,qBAAqB,CAAC,MAAiC,EAAE,SAAiB,EAAE,OAAgB;QACnG,MAAM,OAAO,GAAG,wBAAwB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;YACxB,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtB,OAAiD,CAAC,MAAM,GAAG,MAAM,CAAC;YACpE,CAAC;YACD,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACtD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;YACvG,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IAClC,CAAC;IAEM,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,iCAAuB,EAAE,CAAC;YAC5D,6BAA6B;YAC7B,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,WAAW;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,iCAAuB,EAAE,CAAC;YAC5D,6BAA6B;YAC7B,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,IAAI,CAAC,IAAc,EAAE,MAA2B;QACtD,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAiC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC7I,CAAC;IAEM,YAAY,CAAC,MAAuD,EAAE,KAAuC,EAAE,cAAmD;QACxK,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,iCAAuB,EAAE,CAAC;YAC5D,6BAA6B;YAC7B,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,mBAAyC,CAAC;QAC9C,IAAI,CAAC,cAAc,EAAE,CAAC;YACrB,mBAAmB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;QAClC,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAC1C,mBAAmB,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC;QAC5C,CAAC;aAAM,CAAC;YACP,mBAAmB,GAAG,cAAc,CAAC;QACtC,CAAC;QAED,IAAI,SAAoC,CAAC;QACzC,IAAI,MAA2B,CAAC;QAEhC,IAAI,MAAM,YAAY,mBAAmB,EAAE,CAAC;YAC3C,MAAM,GAAG,MAAM,CAAC;YAChB,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QACpC,CAAC;aAAM,CAAC;YACP,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAClD,SAAS,GAAG,MAAM,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,cAAc,CAAC,MAAiC,EAAE,OAA8B;QACtF,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IAEM,eAAe,CAAC,MAAiC,EAAE,QAAiC;QAC1F,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAEM,2BAA2B,CAAC,WAAqC;QACvE,OAAO,IAAI,2BAA2B,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC3D,CAAC;IAEM,iBAAiB,CAAI,QAAgE;QAC3F,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,8BAA8B;YAC9B,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACpE,CAAC;IAEM,kBAAkB,CAAC,UAAkB;QAC3C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACb,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;QAC5C,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,2BAA2B,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7I,CAAC;IAEM,qBAAqB,CAAC,KAAY;QACxC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACb,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;QAC5C,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,2BAA2B,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3I,CAAC;IAEM,qBAAqB,CAAC,QAAmB;QAC/C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACI,gBAAgB,CAAC,cAAwB,EAAE,cAAuC;QACxF,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,EAAE,CAAC;QACX,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChE,OAAO,cAAc,CAAC;QACvB,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,cAAc,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACzF,CAAC;IAEM,iBAAiB,CAAC,aAAuB;QAC/C,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpD,OAAO;QACR,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,cAAc,EAAE,EAAE;YAC1D,cAAc,CAAC,gBAAgB,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACJ,CAAC;IAEM,uBAAuB,CAAC,iBAAyB;QACvD,2CAA2C;QAC3C,MAAM,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;QAC3E,IAAI,iBAAiB,EAAE,CAAC;YACvB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACrE,OAAO,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACpE,OAAO,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;QACxD,CAAC;IACF,CAAC;IAEM,aAAa;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;QAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,mCAAyB,CAAC;QACxD,OAAO,UAAU,CAAC;IACnB,CAAC;IAEM,mBAAmB,CAAC,YAAoB;QAC9C,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC/D,CAAC;IAEM,mBAAmB;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAEM,UAAU;QAChB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC7C,CAAC;IAEM,oCAAoC,CAAC,YAA0B;QACrE,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACtD,OAAO;QACR,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oCAAoC,CAAC,YAAY,CAAC,CAAC;IACzE,CAAC;IAEM,iCAAiC,CAAC,YAA8B;QACtE,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACtD,OAAO;QACR,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iCAAiC,CAAC,YAAY,CAAC,CAAC;IACtE,CAAC;IAEM,MAAM,CAAC,SAAsB,EAAE,oBAA6B,KAAK;QACvE,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,EAAE,CAAC;QACf,CAAC;IACF,CAAC;IAEM,KAAK;QACX,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACtD,OAAO;QACR,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAEM,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACtD,OAAO,KAAK,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACzC,CAAC;IAEM,cAAc;QACpB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACtD,OAAO,KAAK,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;IAC/C,CAAC;IAEM,gBAAgB,CAAC,MAAoC;QAC3D,MAAM,UAAU,GAAuB;YACtC,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE;SAC9B,CAAC;QAEF,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,gDAAgD,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC;QAElD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACnD,CAAC;IACF,CAAC;IAEM,mBAAmB,CAAC,MAAoC;QAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAClD,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;gBACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;YACtD,CAAC;QACF,CAAC;IACF,CAAC;IAEM,mBAAmB,CAAC,MAAoC;QAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;gBACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;YACtD,CAAC;QACF,CAAC;IACF,CAAC;IAEM,gBAAgB,CAAC,MAAoC;QAC3D,MAAM,UAAU,GAAuB;YACtC,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE;SAC9B,CAAC;QAEF,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC;QAClD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACnD,CAAC;IACF,CAAC;IAEM,mBAAmB,CAAC,MAAoC;QAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAClD,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;gBACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;YACtD,CAAC;QACF,CAAC;IACF,CAAC;IAEM,mBAAmB,CAAC,MAAoC;QAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;gBACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;YACtD,CAAC;QACF,CAAC;IACF,CAAC;IAEM,oBAAoB,CAAC,MAAwC;QACnE,MAAM,UAAU,GAA2B;YAC1C,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE;SAC9B,CAAC;QAEF,IAAI,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YAC7D,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC;QAEtD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACvD,CAAC;IACF,CAAC;IAEM,uBAAuB,CAAC,MAAwC;QACtE,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACtD,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;gBACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;YAC1D,CAAC;QACF,CAAC;IACF,CAAC;IAEM,uBAAuB,CAAC,MAAwC;QACtE,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAC1C,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;gBACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;YAC1D,CAAC;QACF,CAAC;IACF,CAAC;IAEM,eAAe,CAAC,QAAmE;QACzF,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACtD,OAAO;QACR,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAEM,sBAAsB,CAAC,OAAe,EAAE,OAAe;QAC7D,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAEM,0BAA0B,CAAC,WAAsB;QACvD,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;QAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,mCAAyB,CAAC;QAExD,MAAM,GAAG,GAAG,kBAAgB,CAAC,6BAA6B,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACxI,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5M,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACvD,OAAO;YACN,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,IAAI;YACV,MAAM;SACN,CAAC;IACH,CAAC;IAEM,kBAAkB,CAAC,UAAkB,EAAE,MAAc;QAC3D,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACtD,OAAO,CAAC,CAAC,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC;IAEM,MAAM,CAAC,cAAuB,KAAK;QACzC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACtD,OAAO;QACR,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE;YAC1C,IAAI,CAAC,UAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACJ,CAAC;IAEM,cAAc,CAAC,OAAyC;QAC9D,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACtD,OAAO;QACR,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAEM,aAAa,CAAC,MAAmB;QACvC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,gCAAuB,CAAC,CAAC;IAC/E,CAAC;IAEM,SAAS,CAAC,OAA2B,EAAE,aAAqB;QAClE,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3E,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/C,CAAC;IACF,CAAC;IAES,YAAY,CAAC,KAAwB;QAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,OAAO;QACR,CAAC;QAED,MAAM,iBAAiB,GAAkB,EAAE,CAAC;QAE5C,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;QAE5D,MAAM,YAAY,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAE9C,MAAM,SAAS,GAAG,IAAI,SAAS,CAC9B,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,cAAc,EACnB,KAAK,EACL,4BAA4B,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EACpE,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EACtE,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,EACzF,IAAI,CAAC,4BAA4B,EACjC,IAAI,CAAC,aAAa,EAClB,YAAY,EACZ;YACC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;gBACpB,IAAI,CAAC;oBACJ,IAAI,CAAC,YAAY,EAAE,CAAC;oBACpB,OAAO,EAAE,EAAE,CAAC;gBACb,CAAC;wBAAS,CAAC;oBACV,IAAI,CAAC,UAAU,EAAE,CAAC;gBACnB,CAAC;YACF,CAAC;SACD,CACD,CAAC;QAEF,2GAA2G;QAC3G,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEvE,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC9C,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChB;oBACC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACrC,MAAM;gBACP;oBACC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAC3C,MAAM;gBACP;oBACC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAC7C,MAAM;gBACP;oBACC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAChC,MAAM;gBACP;oBACC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;oBAClC,MAAM;gBACP;oBACC,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;oBACpC,MAAM;gBACP;oBACC,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC;oBACtC,MAAM;gBACP,0DAAkD,CAAC,CAAC,CAAC;oBACpD,IAAI,CAAC,CAAC,qBAAqB,EAAE,CAAC;wBAE7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,wCAA+B,CAAC;wBACvE,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAiB,EAAE,gOAAgO,EAAE,gBAAgB,CAAC,CAAC;wBACpS,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE;4BAC3D;gCACC,KAAK,EAAE,kBAAkB;gCACzB,GAAG,EAAE,GAAG,EAAE;oCACT,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,sCAAsC,CAAC,CAAC;gCAC7E,CAAC;6BACD;4BACD;gCACC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAa,EAAE,6BAA6B,CAAC;gCACjE,GAAG,EAAE,GAAG,EAAE;oCACT,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,gCAAgC,EAAE;wCACrE,KAAK,EAAE,yBAAyB;qCAChC,CAAC,CAAC;gCACJ,CAAC;6BACD;yBACD,CAAC,CAAC;oBACJ,CAAC;oBAED,MAAM,SAAS,GAAe,EAAE,CAAC;oBACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;wBACzD,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC9C,CAAC;oBAED,MAAM,EAAE,GAAgC;wBACvC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;wBACtB,kBAAkB,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;wBACtC,MAAM,EAAE,CAAC,CAAC,MAAM;wBAChB,MAAM,EAAE,CAAC,CAAC,MAAM;qBAChB,CAAC;oBACF,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAEzC,MAAM,EAAE,GAAiC;wBACxC,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;wBAC1B,mBAAmB,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC1C,cAAc,EAAE,CAAC,CAAC,cAAc;wBAChC,aAAa,EAAE,CAAC,CAAC,aAAa;wBAC9B,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;wBACtC,MAAM,EAAE,CAAC,CAAC,MAAM;wBAChB,MAAM,EAAE,CAAC,CAAC,MAAM;qBAChB,CAAC;oBACF,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAE1C,MAAM;gBACP,CAAC;gBACD;oBACC,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBAChD,MAAM;gBACP;oBACC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;oBACrE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC7C,MAAM;gBACP;oBACC,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC1D,MAAM;gBACP;oBACC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC5C,MAAM;gBACP;oBACC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC5C,MAAM;gBACP;oBACC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC3C,MAAM;gBACP;oBACC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC1C,MAAM;gBACP;oBACC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBACpC,MAAM;YACR,CAAC;QACF,CAAC,CAAC,CAAC,CAAC;QAEJ,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAEnD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC/D,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;IACvG,CAAC;IAES,WAAW,CAAC,SAAoB;QACzC,IAAI,eAAiC,CAAC;QACtC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,eAAe,GAAG;gBACjB,KAAK,EAAE,CAAC,IAAY,EAAE,cAAuB,EAAE,eAAgC,EAAE,IAAmB,EAAE,EAAE;oBACvG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;gBACtE,CAAC;gBACD,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE;oBACtB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBAC9B,CAAC;gBACD,eAAe,EAAE,CAAC,IAAY,EAAE,kBAA0B,EAAE,kBAA0B,EAAE,aAAqB,EAAE,EAAE;oBAChH,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAAC;gBAChG,CAAC;gBACD,gBAAgB,EAAE,GAAG,EAAE;oBACtB,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC1B,CAAC;gBACD,cAAc,EAAE,GAAG,EAAE;oBACpB,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;gBAClC,CAAC;gBACD,GAAG,EAAE,GAAG,EAAE;oBACT,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACvB,CAAC;aACD,CAAC;QACH,CAAC;aAAM,CAAC;YACP,eAAe,GAAG;gBACjB,KAAK,EAAE,CAAC,IAAY,EAAE,cAAuB,EAAE,eAAgC,EAAE,IAAmB,EAAE,EAAE;oBACvG,MAAM,OAAO,GAA+B,EAAE,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;oBAC5F,IAAI,CAAC,eAAe,CAAC,cAAc,2CAA6B,OAAO,CAAC,CAAC;gBAC1E,CAAC;gBACD,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE;oBACtB,MAAM,OAAO,GAA6B,EAAE,IAAI,EAAE,CAAC;oBACnD,IAAI,CAAC,eAAe,CAAC,cAAc,yCAA4B,OAAO,CAAC,CAAC;gBACzE,CAAC;gBACD,eAAe,EAAE,CAAC,IAAY,EAAE,kBAA0B,EAAE,kBAA0B,EAAE,aAAqB,EAAE,EAAE;oBAChH,2EAA2E;oBAC3E,IAAI,kBAAkB,IAAI,aAAa,EAAE,CAAC;wBACzC,0CAA0C;wBAC1C,MAAM,OAAO,GAAwC,EAAE,IAAI,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAC;wBACrH,IAAI,CAAC,eAAe,CAAC,cAAc,+DAAuC,OAAO,CAAC,CAAC;oBACpF,CAAC;yBAAM,CAAC;wBACP,MAAM,OAAO,GAA4C,EAAE,IAAI,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;wBACtG,IAAI,CAAC,eAAe,CAAC,cAAc,uEAA2C,OAAO,CAAC,CAAC;oBACxF,CAAC;gBACF,CAAC;gBACD,gBAAgB,EAAE,GAAG,EAAE;oBACtB,IAAI,CAAC,eAAe,CAAC,cAAc,iEAAwC,EAAE,CAAC,CAAC;gBAChF,CAAC;gBACD,cAAc,EAAE,GAAG,EAAE;oBACpB,IAAI,CAAC,eAAe,CAAC,cAAc,6DAAsC,EAAE,CAAC,CAAC;gBAC9E,CAAC;gBACD,GAAG,EAAE,GAAG,EAAE;oBACT,IAAI,CAAC,eAAe,CAAC,cAAc,uCAA2B,EAAE,CAAC,CAAC;gBACnE,CAAC;aACD,CAAC;QACH,CAAC;QAED,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QACpF,mBAAmB,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/D,mBAAmB,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3D,mBAAmB,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvE,mBAAmB,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnE,mBAAmB,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrE,mBAAmB,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnE,mBAAmB,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/D,mBAAmB,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnE,mBAAmB,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnE,mBAAmB,CAAC,mBAAmB,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnF,mBAAmB,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAErE,MAAM,IAAI,GAAG,IAAI,IAAI,CACpB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,KAAK,EAAE,EACZ,eAAe,EACf,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,EAClC,SAAS,EACT,mBAAmB,EACnB,IAAI,CAAC,uBAAuB,EAC5B,IAAI,CAAC,qBAAqB,CAC1B,CAAC;QAEF,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrB,CAAC;IAES,uBAAuB,CAAC,aAAgC;QACjE,aAAa,EAAE,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAEO,YAAY;QACnB,IAAI,CAAC,wBAAwB,EAAE,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACb,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACpC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACjD,IAAI,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/D,aAAa,CAAC,MAAM,EAAE,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3E,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,qBAAqB,CAAC,GAAW;QACxC,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC;IAEM,QAAQ;QACd,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC;IACnC,CAAC;IAEO,mBAAmB,CAAC,QAAkB;QAC7C,MAAM,cAAc,GAA4B,CAAC;gBAChD,KAAK,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC;gBAC5F,OAAO,EAAE,kBAAgB,CAAC,+BAA+B;aACzD,CAAC,CAAC;QAEH,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACpD,IAAI,CAAC,cAAc,CAAC,QAAQ,4CAAoC,CAAC;IAClE,CAAC;IAEO,mBAAmB;QAC1B,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,CAAC;IACzC,CAAC;IAEO,YAAY;QACnB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;IACF,CAAC;IAEO,UAAU;QACjB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC;IACF,CAAC;;AA10DW,gBAAgB;IAmM1B,WAAA,qBAAqB,CAAA;IACrB,WAAA,kBAAkB,CAAA;IAClB,WAAA,eAAe,CAAA;IACf,WAAA,kBAAkB,CAAA;IAClB,WAAA,aAAa,CAAA;IACb,WAAA,oBAAoB,CAAA;IACpB,WAAA,qBAAqB,CAAA;IACrB,YAAA,6BAA6B,CAAA;IAC7B,YAAA,wBAAwB,CAAA;GA3Md,gBAAgB,CA20D5B;;AAED,IAAI,SAAS,GAAG,CAAC,CAAC;AAoClB,MAAM,SAAS;IACd,YACiB,KAAiB,EACjB,SAAoB,EACpB,IAAU,EACV,WAAoB,EACpB,iBAAgC,EAChC,YAA2B;QAL3B,UAAK,GAAL,KAAK,CAAY;QACjB,cAAS,GAAT,SAAS,CAAW;QACpB,SAAI,GAAJ,IAAI,CAAM;QACV,gBAAW,GAAX,WAAW,CAAS;QACpB,sBAAiB,GAAjB,iBAAiB,CAAe;QAChC,iBAAY,GAAZ,YAAY,CAAe;IAE5C,CAAC;IAEM,OAAO;QACb,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;CACD;AAQD,MAAM,OAAO,mBAAoB,SAAQ,UAAU;IASlD,YACkB,eAA+B;QAEhD,KAAK,EAAE,CAAC;QAFS,oBAAe,GAAf,eAAe,CAAgB;QAGhD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QAClF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QACvD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;QACzD,IAAI,CAAC,MAAM,mCAA2B,CAAC;IACxC,CAAC;IAEM,QAAQ,CAAC,MAAe;QAC9B,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,gCAAwB,CAAC,gCAAwB,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC3B,OAAO;QACR,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,IAAI,CAAC,MAAM,mCAA2B,EAAE,CAAC;YAC5C,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,oCAA4B,EAAE,CAAC;YACpD,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;QACjC,CAAC;IACF,CAAC;CACD;AAED;;GAEG;AACH,MAAM,kBAAsB,SAAQ,OAAU;IAE7C,YACkB,cAAuC,EACxD,aAAiC;QAEjC,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;QAHR,mBAAc,GAAd,cAAc,CAAyB;IAIzD,CAAC;IAEQ,IAAI,CAAC,KAAQ;QACrB,IAAI,CAAC,cAAc,CAAC,wBAAwB,EAAE,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;CACD;AAED,MAAM,wBAAyB,SAAQ,UAAU;IAgBhD,YACC,MAAwB,EACxB,iBAAqC;QAErC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,iBAAiB,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAExD,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACxF,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACtE,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAClF,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,eAAe,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACpF,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC,aAAa,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAChF,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC5E,IAAI,CAAC,aAAa,GAAG,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC9E,IAAI,CAAC,sBAAsB,GAAG,iBAAiB,CAAC,eAAe,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC1F,IAAI,CAAC,sBAAsB,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAChG,IAAI,CAAC,qBAAqB,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC9F,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACpE,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEpE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;QAC3F,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAClF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,YAAqB,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAE/G,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1D,CAAC;IAEO,iBAAiB;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAE1C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,qCAA2B,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;QAC9F,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,iCAAuB,CAAC,CAAC;QAC7D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,oCAA2B,CAAC,CAAC;QAC/D,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,uCAA8B,CAAC,CAAC;IAC5E,CAAC;IAEO,oBAAoB;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAChD,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;QACpC,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC;IACF,CAAC;IAEO,gBAAgB;QACvB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACrF,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACvF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,CAAC;IAEO,gBAAgB;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;CACD;AAED,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAuBhD,YACkB,OAAyB,EACzB,kBAAsC,EACtC,wBAAkD;QAEnE,KAAK,EAAE,CAAC;QAJS,YAAO,GAAP,OAAO,CAAkB;QACzB,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,6BAAwB,GAAxB,wBAAwB,CAA0B;QAInE,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACvE,IAAI,CAAC,0BAA0B,GAAG,iBAAiB,CAAC,yBAAyB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACzG,IAAI,CAAC,uBAAuB,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACnG,IAAI,CAAC,oBAAoB,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC7F,IAAI,CAAC,sBAAsB,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACjG,IAAI,CAAC,uBAAuB,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACnG,IAAI,CAAC,0BAA0B,GAAG,iBAAiB,CAAC,yBAAyB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACzG,IAAI,CAAC,0BAA0B,GAAG,iBAAiB,CAAC,yBAAyB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACzG,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACvF,IAAI,CAAC,6BAA6B,GAAG,iBAAiB,CAAC,4BAA4B,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC/G,IAAI,CAAC,0BAA0B,GAAG,iBAAiB,CAAC,yBAAyB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACzG,IAAI,CAAC,qBAAqB,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC/F,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACzF,IAAI,CAAC,yBAAyB,GAAG,iBAAiB,CAAC,wBAAwB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACvG,IAAI,CAAC,sBAAsB,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACjG,IAAI,CAAC,8BAA8B,GAAG,iBAAiB,CAAC,6BAA6B,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACjH,IAAI,CAAC,uCAAuC,GAAG,iBAAiB,CAAC,sCAAsC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACnI,IAAI,CAAC,sCAAsC,GAAG,iBAAiB,CAAC,qCAAqC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACjI,IAAI,CAAC,+CAA+C,GAAG,iBAAiB,CAAC,8CAA8C,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACnJ,IAAI,CAAC,mBAAmB,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAE3F,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAEpC,iCAAiC;QACjC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;QAEzD,gCAAgC;QAChC,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,yBAAyB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,8BAA8B,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5F,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,mCAAmC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAEhF,MAAM,EAAE,CAAC;IACV,CAAC;IAEQ,OAAO;QACf,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAC/C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,CAAC;YACxC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;YACrC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;YAClC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;YACrC,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,CAAC;YACxC,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,CAAC;YACxC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,6BAA6B,CAAC,KAAK,EAAE,CAAC;YAC3C,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,CAAC;YACxC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;YACnC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,8BAA8B,CAAC,KAAK,EAAE,CAAC;YAC5C,IAAI,CAAC,uCAAuC,CAAC,KAAK,EAAE,CAAC;YACrD,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;YACvC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,OAAO;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;QACR,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAC/C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YACjG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9F,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YACzF,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7F,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/F,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YACrG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YACrG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YACnF,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,yBAAyB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3G,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YACrG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3F,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YACrF,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YACnG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7F,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,8BAA8B,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,wBAAwB,CAAC,mCAAmC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YACjM,IAAI,CAAC,uCAAuC,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,mCAAmC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/H,IAAI,CAAC,sCAAsC,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,8BAA8B,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,mCAAmC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC1N,IAAI,CAAC,+CAA+C,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,mCAAmC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAClJ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,kBAAkB,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACnI,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;AAGD,MAAM,2BAA2B;IAKhC,IAAW,MAAM;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;IACnC,CAAC;IAED,YACkB,OAAkC,EACnD,WAAgD;QAD/B,YAAO,GAAP,OAAO,CAA2B;QAR5C,mBAAc,GAAa,EAAE,CAAC;QAC9B,2BAAsB,GAAY,KAAK,CAAC;QAU/C,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACvB,CAAC;IACF,CAAC;IAEM,WAAW,CAAC,QAAuD,EAAE,QAAkB,EAAE,WAA6C;QAC5I,OAAO,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,EAAE;YACrD,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBACjC,OAAO;YACR,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC5B,CAAC,EAAE,WAAW,CAAC,CAAC;IACjB,CAAC;IAEM,QAAQ,CAAC,KAAa;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACb,CAAC;QACD,IAAI,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/E,CAAC;IAEM,SAAS;QACf,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACX,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,KAAK,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YACrD,IAAI,KAAK,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;QACF,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAEM,GAAG,CAAC,UAA4B;QACtC,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAEM,KAAK;QACX,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,gBAAgB;YAChB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACd,CAAC;IAEM,GAAG,CAAC,cAAgD;QAC1D,IAAI,CAAC;YACJ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC3C,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;YACtF,CAAC,CAAC,CAAC;QACJ,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAEM,MAAM,CAAC,cAAgD;QAC7D,IAAI,gBAAgB,GAAa,EAAE,CAAC;QACpC,IAAI,CAAC;YACJ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC3C,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;gBACjE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;QACJ,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACrC,CAAC;QACD,OAAO,gBAAgB,CAAC;IACzB,CAAC;CACD;AAED,MAAM,aAAa,GAAG,kBAAkB,CAAC,0HAA0H,CAAC,CAAC;AACrK,MAAM,WAAW,GAAG,kBAAkB,CAAC,uIAAuI,CAAC,CAAC;AAEhL,SAAS,kBAAkB,CAAC,KAAY;IACvC,OAAO,aAAa,GAAG,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,WAAW,CAAC;AAC3E,CAAC;AAED,MAAM,cAAc,GAAG,kBAAkB,CAAC,yEAAyE,CAAC,CAAC;AACrH,MAAM,YAAY,GAAG,kBAAkB,CAAC,qGAAqG,CAAC,CAAC;AAE/I,SAAS,mBAAmB,CAAC,KAAY;IACxC,OAAO,cAAc,GAAG,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,YAAY,CAAC;AAC7E,CAAC;AAED,0BAA0B,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;IAC/C,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IAC9D,IAAI,eAAe,EAAE,CAAC;QACrB,SAAS,CAAC,OAAO,CAAC,mBAAmB,sDAA+B,0CAA0C,kBAAkB,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC;QAC/K,SAAS,CAAC,OAAO,CAAC,qEAAqE,kBAAkB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACpI,CAAC;IACD,MAAM,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;IAClE,IAAI,iBAAiB,EAAE,CAAC;QACvB,SAAS,CAAC,OAAO,CAAC,mBAAmB,0DAAiC,0CAA0C,kBAAkB,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,CAAC;QACnL,SAAS,CAAC,OAAO,CAAC,uEAAuE,kBAAkB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACxI,CAAC;IACD,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAC5D,IAAI,cAAc,EAAE,CAAC;QACpB,SAAS,CAAC,OAAO,CAAC,mBAAmB,oDAA8B,0CAA0C,kBAAkB,CAAC,cAAc,CAAC,4BAA4B,CAAC,CAAC;QAC7K,SAAS,CAAC,OAAO,CAAC,oEAAoE,kBAAkB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAClI,CAAC;IACD,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAC5D,IAAI,cAAc,EAAE,CAAC;QACpB,SAAS,CAAC,OAAO,CAAC,mBAAmB,oDAA8B,0CAA0C,mBAAmB,CAAC,cAAc,CAAC,6BAA6B,CAAC,CAAC;QAC/K,SAAS,CAAC,OAAO,CAAC,oEAAoE,mBAAmB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACnI,CAAC;IACD,MAAM,qBAAqB,GAAG,KAAK,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;IAC3E,IAAI,qBAAqB,EAAE,CAAC;QAC3B,SAAS,CAAC,OAAO,CAAC,8BAA8B,+EAA2C,eAAe,qBAAqB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7I,SAAS,CAAC,OAAO,CAAC,2DAA2D,qBAAqB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;IACjH,CAAC;AACF,CAAC,CAAC,CAAC","file":"codeEditorWidget.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport '../../services/markerDecorations.js';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { IKeyboardEvent } from '../../../../base/browser/keyboardEvent.js';\nimport { IMouseWheelEvent } from '../../../../base/browser/mouseEvent.js';\nimport { Color } from '../../../../base/common/color.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter, EmitterOptions, Event, EventDeliveryQueue, createEventDeliveryQueue } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore, IDisposable, dispose } from '../../../../base/common/lifecycle.js';\nimport { Schemas } from '../../../../base/common/network.js';\nimport './editor.css';\nimport { applyFontInfo } from '../../config/domFontInfo.js';\nimport { EditorConfiguration, IEditorConstructionOptions } from '../../config/editorConfiguration.js';\nimport { TabFocus } from '../../config/tabFocus.js';\nimport * as editorBrowser from '../../editorBrowser.js';\nimport { EditorExtensionsRegistry, IEditorContributionDescription } from '../../editorExtensions.js';\nimport { ICodeEditorService } from '../../services/codeEditorService.js';\nimport { IContentWidgetData, IGlyphMarginWidgetData, IOverlayWidgetData, View } from '../../view.js';\nimport { DOMLineBreaksComputerFactory } from '../../view/domLineBreaksComputer.js';\nimport { ICommandDelegate } from '../../view/viewController.js';\nimport { ViewUserInputEvents } from '../../view/viewUserInputEvents.js';\nimport { CodeEditorContributions } from './codeEditorContributions.js';\nimport { IEditorConfiguration } from '../../../common/config/editorConfiguration.js';\nimport { ConfigurationChangedEvent, EditorLayoutInfo, EditorOption, FindComputedEditorOptionValueById, IComputedEditorOptions, IEditorOptions, filterFontDecorations, filterValidationDecorations } from '../../../common/config/editorOptions.js';\nimport { CursorColumns } from '../../../common/core/cursorColumns.js';\nimport { IDimension } from '../../../common/core/2d/dimension.js';\nimport { editorUnnecessaryCodeOpacity } from '../../../common/core/editorColorRegistry.js';\nimport { IPosition, Position } from '../../../common/core/position.js';\nimport { IRange, Range } from '../../../common/core/range.js';\nimport { ISelection, Selection } from '../../../common/core/selection.js';\nimport { IWordAtPosition } from '../../../common/core/wordHelper.js';\nimport { WordOperations } from '../../../common/cursor/cursorWordOperations.js';\nimport { CursorChangeReason, ICursorPositionChangedEvent, ICursorSelectionChangedEvent } from '../../../common/cursorEvents.js';\nimport { InternalEditorAction } from '../../../common/editorAction.js';\nimport * as editorCommon from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { EndOfLinePreference, IAttachedView, ICursorStateComputer, IIdentifiedSingleEditOperation, IModelDecoration, IModelDecorationsChangeAccessor, IModelDeltaDecoration, ITextModel } from '../../../common/model.js';\nimport { ClassName } from '../../../common/model/intervalTree.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { IModelContentChangedEvent, IModelDecorationsChangedEvent, IModelLanguageChangedEvent, IModelLanguageConfigurationChangedEvent, IModelOptionsChangedEvent, IModelTokensChangedEvent, ModelFontChangedEvent, ModelLineHeightChangedEvent } from '../../../common/textModelEvents.js';\nimport { VerticalRevealType } from '../../../common/viewEvents.js';\nimport { IEditorWhitespace, IViewModel } from '../../../common/viewModel.js';\nimport { MonospaceLineBreaksComputerFactory } from '../../../common/viewModel/monospaceLineBreaksComputer.js';\nimport { ViewModel } from '../../../common/viewModel/viewModelImpl.js';\nimport { OutgoingViewModelEventKind } from '../../../common/viewModelEventDispatcher.js';\nimport * as nls from '../../../../nls.js';\nimport { IAccessibilityService } from '../../../../platform/accessibility/common/accessibility.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { ContextKeyValue, IContextKey, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService, ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection.js';\nimport { INotificationService, Severity } from '../../../../platform/notification/common/notification.js';\nimport { editorErrorForeground, editorHintForeground, editorInfoForeground, editorWarningForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { IThemeService, registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { TextModelEditSource, EditSources } from '../../../common/textModelEditSource.js';\nimport { TextEdit } from '../../../common/core/edits/textEdit.js';\nimport { isObject } from '../../../../base/common/types.js';\n\nexport class CodeEditorWidget extends Disposable implements editorBrowser.ICodeEditor {\n\n\tprivate static readonly dropIntoEditorDecorationOptions = ModelDecorationOptions.register({\n\t\tdescription: 'workbench-dnd-target',\n\t\tclassName: 'dnd-target'\n\t});\n\n\t//#region Eventing\n\n\tprivate readonly _deliveryQueue = createEventDeliveryQueue();\n\tprotected readonly _contributions: CodeEditorContributions = this._register(new CodeEditorContributions());\n\n\tprivate readonly _onDidDispose: Emitter<void> = this._register(new Emitter<void>());\n\tpublic readonly onDidDispose: Event<void> = this._onDidDispose.event;\n\n\tprivate readonly _onDidChangeModelContent: Emitter<IModelContentChangedEvent> = this._register(new Emitter<IModelContentChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelContent: Event<IModelContentChangedEvent> = this._onDidChangeModelContent.event;\n\n\tprivate readonly _onDidChangeModelLanguage: Emitter<IModelLanguageChangedEvent> = this._register(new Emitter<IModelLanguageChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelLanguage: Event<IModelLanguageChangedEvent> = this._onDidChangeModelLanguage.event;\n\n\tprivate readonly _onDidChangeModelLanguageConfiguration: Emitter<IModelLanguageConfigurationChangedEvent> = this._register(new Emitter<IModelLanguageConfigurationChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelLanguageConfiguration: Event<IModelLanguageConfigurationChangedEvent> = this._onDidChangeModelLanguageConfiguration.event;\n\n\tprivate readonly _onDidChangeModelOptions: Emitter<IModelOptionsChangedEvent> = this._register(new Emitter<IModelOptionsChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelOptions: Event<IModelOptionsChangedEvent> = this._onDidChangeModelOptions.event;\n\n\tprivate readonly _onDidChangeModelDecorations: Emitter<IModelDecorationsChangedEvent> = this._register(new Emitter<IModelDecorationsChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelDecorations: Event<IModelDecorationsChangedEvent> = this._onDidChangeModelDecorations.event;\n\n\tprivate readonly _onDidChangeLineHeight: Emitter<ModelLineHeightChangedEvent> = this._register(new Emitter<ModelLineHeightChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeLineHeight: Event<ModelLineHeightChangedEvent> = this._onDidChangeLineHeight.event;\n\n\tprivate readonly _onDidChangeFont: Emitter<ModelFontChangedEvent> = this._register(new Emitter<ModelFontChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeFont: Event<ModelFontChangedEvent> = this._onDidChangeFont.event;\n\n\tprivate readonly _onDidChangeModelTokens: Emitter<IModelTokensChangedEvent> = this._register(new Emitter<IModelTokensChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelTokens: Event<IModelTokensChangedEvent> = this._onDidChangeModelTokens.event;\n\n\tprivate readonly _onDidChangeConfiguration: Emitter<ConfigurationChangedEvent> = this._register(new Emitter<ConfigurationChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeConfiguration: Event<ConfigurationChangedEvent> = this._onDidChangeConfiguration.event;\n\n\tprotected readonly _onWillChangeModel: Emitter<editorCommon.IModelChangedEvent> = this._register(new Emitter<editorCommon.IModelChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onWillChangeModel: Event<editorCommon.IModelChangedEvent> = this._onWillChangeModel.event;\n\n\tprotected readonly _onDidChangeModel: Emitter<editorCommon.IModelChangedEvent> = this._register(new Emitter<editorCommon.IModelChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModel: Event<editorCommon.IModelChangedEvent> = this._onDidChangeModel.event;\n\n\tprivate readonly _onDidChangeCursorPosition: Emitter<ICursorPositionChangedEvent> = this._register(new Emitter<ICursorPositionChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeCursorPosition: Event<ICursorPositionChangedEvent> = this._onDidChangeCursorPosition.event;\n\n\tprivate readonly _onDidChangeCursorSelection: Emitter<ICursorSelectionChangedEvent> = this._register(new Emitter<ICursorSelectionChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeCursorSelection: Event<ICursorSelectionChangedEvent> = this._onDidChangeCursorSelection.event;\n\n\tprivate readonly _onDidAttemptReadOnlyEdit: Emitter<void> = this._register(new InteractionEmitter<void>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidAttemptReadOnlyEdit: Event<void> = this._onDidAttemptReadOnlyEdit.event;\n\n\tprivate readonly _onDidLayoutChange: Emitter<EditorLayoutInfo> = this._register(new Emitter<EditorLayoutInfo>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidLayoutChange: Event<EditorLayoutInfo> = this._onDidLayoutChange.event;\n\n\tprivate readonly _editorTextFocus: BooleanEventEmitter = this._register(new BooleanEventEmitter({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidFocusEditorText: Event<void> = this._editorTextFocus.onDidChangeToTrue;\n\tpublic readonly onDidBlurEditorText: Event<void> = this._editorTextFocus.onDidChangeToFalse;\n\n\tprivate readonly _editorWidgetFocus: BooleanEventEmitter = this._register(new BooleanEventEmitter({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidFocusEditorWidget: Event<void> = this._editorWidgetFocus.onDidChangeToTrue;\n\tpublic readonly onDidBlurEditorWidget: Event<void> = this._editorWidgetFocus.onDidChangeToFalse;\n\n\tprivate readonly _onWillType: Emitter<string> = this._register(new InteractionEmitter<string>(this._contributions, this._deliveryQueue));\n\tpublic readonly onWillType = this._onWillType.event;\n\n\tprivate readonly _onDidType: Emitter<string> = this._register(new InteractionEmitter<string>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidType = this._onDidType.event;\n\n\tprivate readonly _onDidCompositionStart: Emitter<void> = this._register(new InteractionEmitter<void>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidCompositionStart = this._onDidCompositionStart.event;\n\n\tprivate readonly _onDidCompositionEnd: Emitter<void> = this._register(new InteractionEmitter<void>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidCompositionEnd = this._onDidCompositionEnd.event;\n\n\tprivate readonly _onDidPaste: Emitter<editorBrowser.IPasteEvent> = this._register(new InteractionEmitter<editorBrowser.IPasteEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidPaste = this._onDidPaste.event;\n\n\tprivate readonly _onMouseUp: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseUp: Event<editorBrowser.IEditorMouseEvent> = this._onMouseUp.event;\n\n\tprivate readonly _onMouseDown: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseDown: Event<editorBrowser.IEditorMouseEvent> = this._onMouseDown.event;\n\n\tprivate readonly _onMouseDrag: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseDrag: Event<editorBrowser.IEditorMouseEvent> = this._onMouseDrag.event;\n\n\tprivate readonly _onMouseDrop: Emitter<editorBrowser.IPartialEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IPartialEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseDrop: Event<editorBrowser.IPartialEditorMouseEvent> = this._onMouseDrop.event;\n\n\tprivate readonly _onMouseDropCanceled: Emitter<void> = this._register(new InteractionEmitter<void>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseDropCanceled: Event<void> = this._onMouseDropCanceled.event;\n\n\tprivate readonly _onDropIntoEditor = this._register(new InteractionEmitter<{ readonly position: IPosition; readonly event: DragEvent }>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDropIntoEditor = this._onDropIntoEditor.event;\n\n\tprivate readonly _onContextMenu: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onContextMenu: Event<editorBrowser.IEditorMouseEvent> = this._onContextMenu.event;\n\n\tprivate readonly _onMouseMove: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseMove: Event<editorBrowser.IEditorMouseEvent> = this._onMouseMove.event;\n\n\tprivate readonly _onMouseLeave: Emitter<editorBrowser.IPartialEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IPartialEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseLeave: Event<editorBrowser.IPartialEditorMouseEvent> = this._onMouseLeave.event;\n\n\tprivate readonly _onMouseWheel: Emitter<IMouseWheelEvent> = this._register(new InteractionEmitter<IMouseWheelEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseWheel: Event<IMouseWheelEvent> = this._onMouseWheel.event;\n\n\tprivate readonly _onKeyUp: Emitter<IKeyboardEvent> = this._register(new InteractionEmitter<IKeyboardEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onKeyUp: Event<IKeyboardEvent> = this._onKeyUp.event;\n\n\tprivate readonly _onKeyDown: Emitter<IKeyboardEvent> = this._register(new InteractionEmitter<IKeyboardEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onKeyDown: Event<IKeyboardEvent> = this._onKeyDown.event;\n\n\tprivate readonly _onDidContentSizeChange: Emitter<editorCommon.IContentSizeChangedEvent> = this._register(new Emitter<editorCommon.IContentSizeChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidContentSizeChange: Event<editorCommon.IContentSizeChangedEvent> = this._onDidContentSizeChange.event;\n\n\tprivate readonly _onDidScrollChange: Emitter<editorCommon.IScrollEvent> = this._register(new Emitter<editorCommon.IScrollEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidScrollChange: Event<editorCommon.IScrollEvent> = this._onDidScrollChange.event;\n\n\tprivate readonly _onDidChangeViewZones: Emitter<void> = this._register(new Emitter<void>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeViewZones: Event<void> = this._onDidChangeViewZones.event;\n\n\tprivate readonly _onDidChangeHiddenAreas: Emitter<void> = this._register(new Emitter<void>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeHiddenAreas: Event<void> = this._onDidChangeHiddenAreas.event;\n\n\tprivate _updateCounter = 0;\n\n\tprivate readonly _onWillTriggerEditorOperationEvent: Emitter<editorCommon.ITriggerEditorOperationEvent> = this._register(new Emitter<editorCommon.ITriggerEditorOperationEvent>());\n\n\tprivate readonly _onBeginUpdate: Emitter<void> = this._register(new Emitter<void>());\n\tpublic readonly onBeginUpdate: Event<void> = this._onBeginUpdate.event;\n\n\tprivate readonly _onEndUpdate: Emitter<void> = this._register(new Emitter<void>());\n\tpublic readonly onEndUpdate: Event<void> = this._onEndUpdate.event;\n\n\tprivate readonly _onBeforeExecuteEdit = this._register(new Emitter<{ source: string | undefined }>());\n\tpublic readonly onBeforeExecuteEdit = this._onBeforeExecuteEdit.event;\n\n\t//#endregion\n\n\tpublic get isSimpleWidget(): boolean {\n\t\treturn this._configuration.isSimpleWidget;\n\t}\n\n\tpublic get contextMenuId(): MenuId {\n\t\treturn this._configuration.contextMenuId;\n\t}\n\n\tprivate readonly _telemetryData?: object;\n\n\tprivate readonly _domElement: HTMLElement;\n\tprivate readonly _overflowWidgetsDomNode: HTMLElement | undefined;\n\tprivate readonly _id: number;\n\tprivate readonly _configuration: IEditorConfiguration;\n\tprivate _contributionsDisposable: IDisposable | undefined;\n\n\tprotected readonly _actions = new Map<string, editorCommon.IEditorAction>();\n\n\t// --- Members logically associated to a model\n\tprotected _modelData: ModelData | null;\n\n\tprotected readonly _instantiationService: IInstantiationService;\n\tprotected readonly _contextKeyService: IContextKeyService;\n\tget contextKeyService() { return this._contextKeyService; }\n\tprivate readonly _notificationService: INotificationService;\n\tprotected readonly _codeEditorService: ICodeEditorService;\n\tprivate readonly _commandService: ICommandService;\n\tprivate readonly _themeService: IThemeService;\n\n\tprivate _contentWidgets: { [key: string]: IContentWidgetData };\n\tprivate _overlayWidgets: { [key: string]: IOverlayWidgetData };\n\tprivate _glyphMarginWidgets: { [key: string]: IGlyphMarginWidgetData };\n\n\t/**\n\t * map from \"parent\" decoration type to live decoration ids.\n\t */\n\tprivate _decorationTypeKeysToIds: { [decorationTypeKey: string]: string[] };\n\tprivate _decorationTypeSubtypes: { [decorationTypeKey: string]: { [subtype: string]: boolean } };\n\n\tprivate _bannerDomNode: HTMLElement | null = null;\n\n\tprivate _dropIntoEditorDecorations: EditorDecorationsCollection = this.createDecorationsCollection();\n\n\tpublic inComposition: boolean = false;\n\n\tconstructor(\n\t\tdomElement: HTMLElement,\n\t\t_options: Readonly<IEditorConstructionOptions>,\n\t\tcodeEditorWidgetOptions: ICodeEditorWidgetOptions,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t\t@ICodeEditorService codeEditorService: ICodeEditorService,\n\t\t@ICommandService commandService: ICommandService,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@IThemeService themeService: IThemeService,\n\t\t@INotificationService notificationService: INotificationService,\n\t\t@IAccessibilityService accessibilityService: IAccessibilityService,\n\t\t@ILanguageConfigurationService private readonly languageConfigurationService: ILanguageConfigurationService,\n\t\t@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,\n\t) {\n\t\tsuper();\n\t\tcodeEditorService.willCreateCodeEditor();\n\n\t\tconst options = { ..._options };\n\n\t\tthis._domElement = domElement;\n\t\tthis._overflowWidgetsDomNode = options.overflowWidgetsDomNode;\n\t\tdelete options.overflowWidgetsDomNode;\n\t\tthis._id = (++EDITOR_ID);\n\t\tthis._decorationTypeKeysToIds = {};\n\t\tthis._decorationTypeSubtypes = {};\n\t\tthis._telemetryData = codeEditorWidgetOptions.telemetryData;\n\n\t\tthis._configuration = this._register(this._createConfiguration(codeEditorWidgetOptions.isSimpleWidget || false,\n\t\t\tcodeEditorWidgetOptions.contextMenuId ?? (codeEditorWidgetOptions.isSimpleWidget ? MenuId.SimpleEditorContext : MenuId.EditorContext),\n\t\t\toptions, accessibilityService));\n\t\tthis._register(this._configuration.onDidChange((e) => {\n\t\t\tthis._onDidChangeConfiguration.fire(e);\n\n\t\t\tconst options = this._configuration.options;\n\t\t\tif (e.hasChanged(EditorOption.layoutInfo)) {\n\t\t\t\tconst layoutInfo = options.get(EditorOption.layoutInfo);\n\t\t\t\tthis._onDidLayoutChange.fire(layoutInfo);\n\t\t\t}\n\t\t}));\n\n\t\tthis._contextKeyService = this._register(contextKeyService.createScoped(this._domElement));\n\t\tif (codeEditorWidgetOptions.contextKeyValues) {\n\t\t\tfor (const [key, value] of Object.entries(codeEditorWidgetOptions.contextKeyValues)) {\n\t\t\t\tthis._contextKeyService.createKey(key, value);\n\t\t\t}\n\t\t}\n\t\tthis._notificationService = notificationService;\n\t\tthis._codeEditorService = codeEditorService;\n\t\tthis._commandService = commandService;\n\t\tthis._themeService = themeService;\n\t\tthis._register(new EditorContextKeysManager(this, this._contextKeyService));\n\t\tthis._register(new EditorModeContext(this, this._contextKeyService, languageFeaturesService));\n\n\t\tthis._instantiationService = this._register(instantiationService.createChild(new ServiceCollection([IContextKeyService, this._contextKeyService])));\n\n\t\tthis._modelData = null;\n\n\t\tthis._contentWidgets = {};\n\t\tthis._overlayWidgets = {};\n\t\tthis._glyphMarginWidgets = {};\n\n\t\tlet contributions: IEditorContributionDescription[];\n\t\tif (Array.isArray(codeEditorWidgetOptions.contributions)) {\n\t\t\tcontributions = codeEditorWidgetOptions.contributions;\n\t\t} else {\n\t\t\tcontributions = EditorExtensionsRegistry.getEditorContributions();\n\t\t}\n\t\tthis._contributions.initialize(this, contributions, this._instantiationService);\n\n\t\tfor (const action of EditorExtensionsRegistry.getEditorActions()) {\n\t\t\tif (this._actions.has(action.id)) {\n\t\t\t\tonUnexpectedError(new Error(`Cannot have two actions with the same id ${action.id}`));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst internalAction = new InternalEditorAction(\n\t\t\t\taction.id,\n\t\t\t\taction.label,\n\t\t\t\taction.alias,\n\t\t\t\taction.metadata,\n\t\t\t\taction.precondition ?? undefined,\n\t\t\t\t(args: unknown): Promise<void> => {\n\t\t\t\t\treturn this._instantiationService.invokeFunction((accessor) => {\n\t\t\t\t\t\treturn Promise.resolve(action.runEditorCommand(accessor, this, args));\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tthis._contextKeyService\n\t\t\t);\n\t\t\tthis._actions.set(internalAction.id, internalAction);\n\t\t}\n\n\t\tconst isDropIntoEnabled = () => {\n\t\t\treturn !this._configuration.options.get(EditorOption.readOnly)\n\t\t\t\t&& this._configuration.options.get(EditorOption.dropIntoEditor).enabled;\n\t\t};\n\n\t\tthis._register(new dom.DragAndDropObserver(this._domElement, {\n\t\t\tonDragOver: e => {\n\t\t\t\tif (!isDropIntoEnabled()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst target = this.getTargetAtClientPoint(e.clientX, e.clientY);\n\t\t\t\tif (target?.position) {\n\t\t\t\t\tthis.showDropIndicatorAt(target.position);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDrop: async e => {\n\t\t\t\tif (!isDropIntoEnabled()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.removeDropIndicator();\n\n\t\t\t\tif (!e.dataTransfer) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst target = this.getTargetAtClientPoint(e.clientX, e.clientY);\n\t\t\t\tif (target?.position) {\n\t\t\t\t\tthis._onDropIntoEditor.fire({ position: target.position, event: e });\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDragLeave: () => {\n\t\t\t\tthis.removeDropIndicator();\n\t\t\t},\n\t\t\tonDragEnd: () => {\n\t\t\t\tthis.removeDropIndicator();\n\t\t\t},\n\t\t}));\n\n\t\tthis._codeEditorService.addCodeEditor(this);\n\t}\n\n\tpublic writeScreenReaderContent(reason: string): void {\n\t\tthis._modelData?.view.writeScreenReaderContent(reason);\n\t}\n\n\tprotected _createConfiguration(isSimpleWidget: boolean, contextMenuId: MenuId, options: Readonly<IEditorConstructionOptions>, accessibilityService: IAccessibilityService): EditorConfiguration {\n\t\treturn new EditorConfiguration(isSimpleWidget, contextMenuId, options, this._domElement, accessibilityService);\n\t}\n\n\tpublic getId(): string {\n\t\treturn this.getEditorType() + ':' + this._id;\n\t}\n\n\tpublic getEditorType(): string {\n\t\treturn editorCommon.EditorType.ICodeEditor;\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._codeEditorService.removeCodeEditor(this);\n\n\t\tthis._actions.clear();\n\t\tthis._contentWidgets = {};\n\t\tthis._overlayWidgets = {};\n\n\t\tthis._removeDecorationTypes();\n\t\tthis._postDetachModelCleanup(this._detachModel());\n\n\t\tthis._onDidDispose.fire();\n\n\t\tsuper.dispose();\n\t}\n\n\tpublic invokeWithinContext<T>(fn: (accessor: ServicesAccessor) => T): T {\n\t\treturn this._instantiationService.invokeFunction(fn);\n\t}\n\n\tpublic updateOptions(newOptions: Readonly<IEditorOptions> | undefined): void {\n\t\tthis._configuration.updateOptions(newOptions || {});\n\t}\n\n\tpublic getOptions(): IComputedEditorOptions {\n\t\treturn this._configuration.options;\n\t}\n\n\tpublic getOption<T extends EditorOption>(id: T): FindComputedEditorOptionValueById<T> {\n\t\treturn this._configuration.options.get(id);\n\t}\n\n\tpublic getRawOptions(): IEditorOptions {\n\t\treturn this._configuration.getRawOptions();\n\t}\n\n\tpublic getOverflowWidgetsDomNode(): HTMLElement | undefined {\n\t\treturn this._overflowWidgetsDomNode;\n\t}\n\n\tpublic getConfiguredWordAtPosition(position: Position): IWordAtPosition | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn WordOperations.getWordAtPosition(this._modelData.model, this._configuration.options.get(EditorOption.wordSeparators), this._configuration.options.get(EditorOption.wordSegmenterLocales), position);\n\t}\n\n\tpublic getValue(options: { preserveBOM: boolean; lineEnding: string } | null = null): string {\n\t\tif (!this._modelData) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst preserveBOM: boolean = (options && options.preserveBOM) ? true : false;\n\t\tlet eolPreference = EndOfLinePreference.TextDefined;\n\t\tif (options && options.lineEnding && options.lineEnding === '\\n') {\n\t\t\teolPreference = EndOfLinePreference.LF;\n\t\t} else if (options && options.lineEnding && options.lineEnding === '\\r\\n') {\n\t\t\teolPreference = EndOfLinePreference.CRLF;\n\t\t}\n\t\treturn this._modelData.model.getValue(eolPreference, preserveBOM);\n\t}\n\n\tpublic setValue(newValue: string): void {\n\t\ttry {\n\t\t\tthis._beginUpdate();\n\t\t\tif (!this._modelData) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._modelData.model.setValue(newValue);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tpublic getModel(): ITextModel | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.model;\n\t}\n\n\tpublic setModel(_model: ITextModel | editorCommon.IDiffEditorModel | editorCommon.IDiffEditorViewModel | null = null): void {\n\t\ttry {\n\t\t\tthis._beginUpdate();\n\t\t\tconst model = <ITextModel | null>_model;\n\t\t\tif (this._modelData === null && model === null) {\n\t\t\t\t// Current model is the new model\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this._modelData && this._modelData.model === model) {\n\t\t\t\t// Current model is the new model\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst e: editorCommon.IModelChangedEvent = {\n\t\t\t\toldModelUrl: this._modelData?.model.uri || null,\n\t\t\t\tnewModelUrl: model?.uri || null\n\t\t\t};\n\t\t\tthis._onWillChangeModel.fire(e);\n\n\t\t\tconst hasTextFocus = this.hasTextFocus();\n\t\t\tconst detachedModel = this._detachModel();\n\t\t\tthis._attachModel(model);\n\t\t\tif (this.hasModel()) {\n\t\t\t\t// we have a new model (with a new view)!\n\t\t\t\tif (hasTextFocus) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// we have no model (and no view) anymore\n\t\t\t\t// make sure the outside world knows we are not focused\n\t\t\t\tthis._editorTextFocus.setValue(false);\n\t\t\t\tthis._editorWidgetFocus.setValue(false);\n\t\t\t}\n\n\t\t\tthis._removeDecorationTypes();\n\t\t\tthis._onDidChangeModel.fire(e);\n\t\t\tthis._postDetachModelCleanup(detachedModel);\n\n\t\t\tthis._contributionsDisposable = this._contributions.onAfterModelAttached();\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate _removeDecorationTypes(): void {\n\t\tthis._decorationTypeKeysToIds = {};\n\t\tif (this._decorationTypeSubtypes) {\n\t\t\tfor (const decorationType in this._decorationTypeSubtypes) {\n\t\t\t\tconst subTypes = this._decorationTypeSubtypes[decorationType];\n\t\t\t\tfor (const subType in subTypes) {\n\t\t\t\t\tthis._removeDecorationType(decorationType + '-' + subType);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._decorationTypeSubtypes = {};\n\t\t}\n\t}\n\n\tpublic getVisibleRanges(): Range[] {\n\t\tif (!this._modelData) {\n\t\t\treturn [];\n\t\t}\n\t\treturn this._modelData.viewModel.getVisibleRanges();\n\t}\n\n\tpublic getVisibleRangesPlusViewportAboveBelow(): Range[] {\n\t\tif (!this._modelData) {\n\t\t\treturn [];\n\t\t}\n\t\treturn this._modelData.viewModel.getVisibleRangesPlusViewportAboveBelow();\n\t}\n\n\tpublic getWhitespaces(): IEditorWhitespace[] {\n\t\tif (!this._modelData) {\n\t\t\treturn [];\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getWhitespaces();\n\t}\n\n\tprivate static _getVerticalOffsetAfterPosition(modelData: ModelData, modelLineNumber: number, modelColumn: number, includeViewZones: boolean): number {\n\t\tconst modelPosition = modelData.model.validatePosition({\n\t\t\tlineNumber: modelLineNumber,\n\t\t\tcolumn: modelColumn\n\t\t});\n\t\tconst viewPosition = modelData.viewModel.coordinatesConverter.convertModelPositionToViewPosition(modelPosition);\n\t\treturn modelData.viewModel.viewLayout.getVerticalOffsetAfterLineNumber(viewPosition.lineNumber, includeViewZones);\n\t}\n\n\tpublic getTopForLineNumber(lineNumber: number, includeViewZones: boolean = false): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn CodeEditorWidget._getVerticalOffsetForPosition(this._modelData, lineNumber, 1, includeViewZones);\n\t}\n\n\tpublic getTopForPosition(lineNumber: number, column: number): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn CodeEditorWidget._getVerticalOffsetForPosition(this._modelData, lineNumber, column, false);\n\t}\n\n\tprivate static _getVerticalOffsetForPosition(modelData: ModelData, modelLineNumber: number, modelColumn: number, includeViewZones: boolean = false): number {\n\t\tconst modelPosition = modelData.model.validatePosition({\n\t\t\tlineNumber: modelLineNumber,\n\t\t\tcolumn: modelColumn\n\t\t});\n\t\tconst viewPosition = modelData.viewModel.coordinatesConverter.convertModelPositionToViewPosition(modelPosition);\n\t\treturn modelData.viewModel.viewLayout.getVerticalOffsetForLineNumber(viewPosition.lineNumber, includeViewZones);\n\t}\n\n\tpublic getBottomForLineNumber(lineNumber: number, includeViewZones: boolean = false): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn CodeEditorWidget._getVerticalOffsetAfterPosition(this._modelData, lineNumber, Number.MAX_SAFE_INTEGER, includeViewZones);\n\t}\n\n\tpublic getLineHeightForPosition(position: IPosition): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\tconst viewModel = this._modelData.viewModel;\n\t\tconst coordinatesConverter = viewModel.coordinatesConverter;\n\t\tconst pos = Position.lift(position);\n\t\tif (coordinatesConverter.modelPositionIsVisible(pos)) {\n\t\t\tconst viewPosition = coordinatesConverter.convertModelPositionToViewPosition(pos);\n\t\t\treturn viewModel.viewLayout.getLineHeightForLineNumber(viewPosition.lineNumber);\n\t\t}\n\t\treturn 0;\n\t}\n\n\tpublic setHiddenAreas(ranges: IRange[], source?: unknown, forceUpdate?: boolean): void {\n\t\tthis._modelData?.viewModel.setHiddenAreas(ranges.map(r => Range.lift(r)), source, forceUpdate);\n\t}\n\n\tpublic getVisibleColumnFromPosition(rawPosition: IPosition): number {\n\t\tif (!this._modelData) {\n\t\t\treturn rawPosition.column;\n\t\t}\n\n\t\tconst position = this._modelData.model.validatePosition(rawPosition);\n\t\tconst tabSize = this._modelData.model.getOptions().tabSize;\n\n\t\treturn CursorColumns.visibleColumnFromColumn(this._modelData.model.getLineContent(position.lineNumber), position.column, tabSize) + 1;\n\t}\n\n\tpublic getPosition(): Position | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel.getPosition();\n\t}\n\n\tpublic setPosition(position: IPosition, source: string = 'api'): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (!Position.isIPosition(position)) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tthis._modelData.viewModel.setSelections(source, [{\n\t\t\tselectionStartLineNumber: position.lineNumber,\n\t\t\tselectionStartColumn: position.column,\n\t\t\tpositionLineNumber: position.lineNumber,\n\t\t\tpositionColumn: position.column\n\t\t}]);\n\t}\n\n\tprivate _sendRevealRange(modelRange: Range, verticalType: VerticalRevealType, revealHorizontal: boolean, scrollType: editorCommon.ScrollType): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (!Range.isIRange(modelRange)) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tconst validatedModelRange = this._modelData.model.validateRange(modelRange);\n\t\tconst viewRange = this._modelData.viewModel.coordinatesConverter.convertModelRangeToViewRange(validatedModelRange);\n\n\t\tthis._modelData.viewModel.revealRange('api', revealHorizontal, viewRange, verticalType, scrollType);\n\t}\n\n\tpublic revealAllCursors(revealHorizontal: boolean, minimalReveal?: boolean): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.revealAllCursors('api', revealHorizontal, minimalReveal);\n\t}\n\n\tpublic revealLine(lineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLine(lineNumber, VerticalRevealType.Simple, scrollType);\n\t}\n\n\tpublic revealLineInCenter(lineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLine(lineNumber, VerticalRevealType.Center, scrollType);\n\t}\n\n\tpublic revealLineInCenterIfOutsideViewport(lineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLine(lineNumber, VerticalRevealType.CenterIfOutsideViewport, scrollType);\n\t}\n\n\tpublic revealLineNearTop(lineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLine(lineNumber, VerticalRevealType.NearTop, scrollType);\n\t}\n\n\tprivate _revealLine(lineNumber: number, revealType: VerticalRevealType, scrollType: editorCommon.ScrollType): void {\n\t\tif (typeof lineNumber !== 'number') {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tthis._sendRevealRange(\n\t\t\tnew Range(lineNumber, 1, lineNumber, 1),\n\t\t\trevealType,\n\t\t\tfalse,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealPosition(position: IPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealPosition(\n\t\t\tposition,\n\t\t\tVerticalRevealType.Simple,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealPositionInCenter(position: IPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealPosition(\n\t\t\tposition,\n\t\t\tVerticalRevealType.Center,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealPositionInCenterIfOutsideViewport(position: IPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealPosition(\n\t\t\tposition,\n\t\t\tVerticalRevealType.CenterIfOutsideViewport,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealPositionNearTop(position: IPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealPosition(\n\t\t\tposition,\n\t\t\tVerticalRevealType.NearTop,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tprivate _revealPosition(position: IPosition, verticalType: VerticalRevealType, revealHorizontal: boolean, scrollType: editorCommon.ScrollType): void {\n\t\tif (!Position.isIPosition(position)) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tthis._sendRevealRange(\n\t\t\tnew Range(position.lineNumber, position.column, position.lineNumber, position.column),\n\t\t\tverticalType,\n\t\t\trevealHorizontal,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic getSelection(): Selection | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel.getSelection();\n\t}\n\n\tpublic getSelections(): Selection[] | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel.getSelections();\n\t}\n\n\tpublic setSelection(range: IRange, source?: string): void;\n\tpublic setSelection(editorRange: Range, source?: string): void;\n\tpublic setSelection(selection: ISelection, source?: string): void;\n\tpublic setSelection(editorSelection: Selection, source?: string): void;\n\tpublic setSelection(something: unknown, source?: string): void;\n\tpublic setSelection(something: unknown, source: string = 'api'): void {\n\t\tconst isSelection = Selection.isISelection(something);\n\t\tconst isRange = Range.isIRange(something);\n\n\t\tif (!isSelection && !isRange) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tif (isSelection) {\n\t\t\tthis._setSelectionImpl(something, source);\n\t\t} else if (isRange) {\n\t\t\t// act as if it was an IRange\n\t\t\tconst selection: ISelection = {\n\t\t\t\tselectionStartLineNumber: something.startLineNumber,\n\t\t\t\tselectionStartColumn: something.startColumn,\n\t\t\t\tpositionLineNumber: something.endLineNumber,\n\t\t\t\tpositionColumn: something.endColumn\n\t\t\t};\n\t\t\tthis._setSelectionImpl(selection, source);\n\t\t}\n\t}\n\n\tprivate _setSelectionImpl(sel: ISelection, source: string): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tconst selection = new Selection(sel.selectionStartLineNumber, sel.selectionStartColumn, sel.positionLineNumber, sel.positionColumn);\n\t\tthis._modelData.viewModel.setSelections(source, [selection]);\n\t}\n\n\tpublic revealLines(startLineNumber: number, endLineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLines(\n\t\t\tstartLineNumber,\n\t\t\tendLineNumber,\n\t\t\tVerticalRevealType.Simple,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealLinesInCenter(startLineNumber: number, endLineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLines(\n\t\t\tstartLineNumber,\n\t\t\tendLineNumber,\n\t\t\tVerticalRevealType.Center,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealLinesInCenterIfOutsideViewport(startLineNumber: number, endLineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLines(\n\t\t\tstartLineNumber,\n\t\t\tendLineNumber,\n\t\t\tVerticalRevealType.CenterIfOutsideViewport,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealLinesNearTop(startLineNumber: number, endLineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLines(\n\t\t\tstartLineNumber,\n\t\t\tendLineNumber,\n\t\t\tVerticalRevealType.NearTop,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tprivate _revealLines(startLineNumber: number, endLineNumber: number, verticalType: VerticalRevealType, scrollType: editorCommon.ScrollType): void {\n\t\tif (typeof startLineNumber !== 'number' || typeof endLineNumber !== 'number') {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tthis._sendRevealRange(\n\t\t\tnew Range(startLineNumber, 1, endLineNumber, 1),\n\t\t\tverticalType,\n\t\t\tfalse,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRange(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth, revealVerticalInCenter: boolean = false, revealHorizontal: boolean = true): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\trevealVerticalInCenter ? VerticalRevealType.Center : VerticalRevealType.Simple,\n\t\t\trevealHorizontal,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeInCenter(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.Center,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeInCenterIfOutsideViewport(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.CenterIfOutsideViewport,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeNearTop(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.NearTop,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeNearTopIfOutsideViewport(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.NearTopIfOutsideViewport,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeAtTop(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.Top,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tprivate _revealRange(range: IRange, verticalType: VerticalRevealType, revealHorizontal: boolean, scrollType: editorCommon.ScrollType): void {\n\t\tif (!Range.isIRange(range)) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tthis._sendRevealRange(\n\t\t\tRange.lift(range),\n\t\t\tverticalType,\n\t\t\trevealHorizontal,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic setSelections(ranges: readonly ISelection[], source: string = 'api', reason = CursorChangeReason.NotSet): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (!ranges || ranges.length === 0) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tfor (let i = 0, len = ranges.length; i < len; i++) {\n\t\t\tif (!Selection.isISelection(ranges[i])) {\n\t\t\t\tthrow new Error('Invalid arguments');\n\t\t\t}\n\t\t}\n\t\tthis._modelData.viewModel.setSelections(source, ranges, reason);\n\t}\n\n\tpublic getContentWidth(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getContentWidth();\n\t}\n\n\tpublic getScrollWidth(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getScrollWidth();\n\t}\n\tpublic getScrollLeft(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getCurrentScrollLeft();\n\t}\n\n\tpublic getContentHeight(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getContentHeight();\n\t}\n\n\tpublic getScrollHeight(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getScrollHeight();\n\t}\n\tpublic getScrollTop(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getCurrentScrollTop();\n\t}\n\n\tpublic setScrollLeft(newScrollLeft: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Immediate): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof newScrollLeft !== 'number') {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tthis._modelData.viewModel.viewLayout.setScrollPosition({\n\t\t\tscrollLeft: newScrollLeft\n\t\t}, scrollType);\n\t}\n\tpublic setScrollTop(newScrollTop: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Immediate): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof newScrollTop !== 'number') {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tthis._modelData.viewModel.viewLayout.setScrollPosition({\n\t\t\tscrollTop: newScrollTop\n\t\t}, scrollType);\n\t}\n\tpublic setScrollPosition(position: editorCommon.INewScrollPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Immediate): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.viewLayout.setScrollPosition(position, scrollType);\n\t}\n\tpublic hasPendingScrollAnimation(): boolean {\n\t\tif (!this._modelData) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.hasPendingScrollAnimation();\n\t}\n\n\tpublic saveViewState(): editorCommon.ICodeEditorViewState | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\tconst contributionsState = this._contributions.saveViewState();\n\t\tconst cursorState = this._modelData.viewModel.saveCursorState();\n\t\tconst viewState = this._modelData.viewModel.saveState();\n\t\treturn {\n\t\t\tcursorState: cursorState,\n\t\t\tviewState: viewState,\n\t\t\tcontributionsState: contributionsState\n\t\t};\n\t}\n\n\tpublic restoreViewState(s: editorCommon.IEditorViewState | null): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tconst codeEditorState = s as editorCommon.ICodeEditorViewState | null;\n\t\tif (codeEditorState && codeEditorState.cursorState && codeEditorState.viewState) {\n\t\t\tconst cursorState = <unknown>codeEditorState.cursorState;\n\t\t\tif (Array.isArray(cursorState)) {\n\t\t\t\tif (cursorState.length > 0) {\n\t\t\t\t\tthis._modelData.viewModel.restoreCursorState(<editorCommon.ICursorState[]>cursorState);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Backwards compatibility\n\t\t\t\tthis._modelData.viewModel.restoreCursorState([<editorCommon.ICursorState>cursorState]);\n\t\t\t}\n\n\t\t\tthis._contributions.restoreViewState(codeEditorState.contributionsState || {});\n\t\t\tconst reducedState = this._modelData.viewModel.reduceRestoreState(codeEditorState.viewState);\n\t\t\tthis._modelData.view.restoreState(reducedState);\n\t\t}\n\t}\n\n\tpublic handleInitialized(): void {\n\t\tthis._getViewModel()?.visibleLinesStabilized();\n\t}\n\n\tpublic getContribution<T extends editorCommon.IEditorContribution>(id: string): T | null {\n\t\treturn this._contributions.get(id) as T | null;\n\t}\n\n\tpublic getActions(): editorCommon.IEditorAction[] {\n\t\treturn Array.from(this._actions.values());\n\t}\n\n\tpublic getSupportedActions(): editorCommon.IEditorAction[] {\n\t\tlet result = this.getActions();\n\n\t\tresult = result.filter(action => action.isSupported());\n\n\t\treturn result;\n\t}\n\n\tpublic getAction(id: string): editorCommon.IEditorAction | null {\n\t\treturn this._actions.get(id) || null;\n\t}\n\n\tpublic trigger(source: string | null | undefined, handlerId: string, payload: unknown): void {\n\t\tpayload = payload || {};\n\n\t\ttry {\n\t\t\tthis._onWillTriggerEditorOperationEvent.fire({ source: source, handlerId: handlerId, payload: payload });\n\t\t\tthis._beginUpdate();\n\n\t\t\tswitch (handlerId) {\n\t\t\t\tcase editorCommon.Handler.CompositionStart:\n\t\t\t\t\tthis._startComposition();\n\t\t\t\t\treturn;\n\t\t\t\tcase editorCommon.Handler.CompositionEnd:\n\t\t\t\t\tthis._endComposition(source);\n\t\t\t\t\treturn;\n\t\t\t\tcase editorCommon.Handler.Type: {\n\t\t\t\t\tconst args = <Partial<editorCommon.TypePayload>>payload;\n\t\t\t\t\tthis._type(source, args.text || '');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase editorCommon.Handler.ReplacePreviousChar: {\n\t\t\t\t\tconst args = <Partial<editorCommon.ReplacePreviousCharPayload>>payload;\n\t\t\t\t\tthis._compositionType(source, args.text || '', args.replaceCharCnt || 0, 0, 0);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase editorCommon.Handler.CompositionType: {\n\t\t\t\t\tconst args = <Partial<editorCommon.CompositionTypePayload>>payload;\n\t\t\t\t\tthis._compositionType(source, args.text || '', args.replacePrevCharCnt || 0, args.replaceNextCharCnt || 0, args.positionDelta || 0);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase editorCommon.Handler.Paste: {\n\t\t\t\t\tconst args = <Partial<editorBrowser.PastePayload>>payload;\n\t\t\t\t\tthis._paste(source, args.text || '', args.pasteOnNewLine || false, args.multicursorText || null, args.mode || null, args.clipboardEvent);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase editorCommon.Handler.Cut:\n\t\t\t\t\tthis._cut(source);\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst action = this.getAction(handlerId);\n\t\t\tif (action) {\n\t\t\t\tPromise.resolve(action.run(payload)).then(undefined, onUnexpectedError);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!this._modelData) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this._triggerEditorCommand(source, handlerId, payload)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._triggerCommand(handlerId, payload);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprotected _triggerCommand(handlerId: string, payload: unknown): void {\n\t\tthis._commandService.executeCommand(handlerId, payload);\n\t}\n\n\tprivate _startComposition(): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis.inComposition = true;\n\t\tthis._modelData.viewModel.startComposition();\n\t\tthis._onDidCompositionStart.fire();\n\t}\n\n\tprivate _endComposition(source: string | null | undefined): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis.inComposition = false;\n\t\tthis._modelData.viewModel.endComposition(source);\n\t\tthis._onDidCompositionEnd.fire();\n\t}\n\n\tprivate _type(source: string | null | undefined, text: string): void {\n\t\tif (!this._modelData || text.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tif (source === 'keyboard') {\n\t\t\tthis._onWillType.fire(text);\n\t\t}\n\t\tthis._modelData.viewModel.type(text, source);\n\t\tif (source === 'keyboard') {\n\t\t\tthis._onDidType.fire(text);\n\t\t}\n\t}\n\n\tprivate _compositionType(source: string | null | undefined, text: string, replacePrevCharCnt: number, replaceNextCharCnt: number, positionDelta: number): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.compositionType(text, replacePrevCharCnt, replaceNextCharCnt, positionDelta, source);\n\t}\n\n\tprivate _paste(source: string | null | undefined, text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null, clipboardEvent?: ClipboardEvent): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tconst viewModel = this._modelData.viewModel;\n\t\tconst startPosition = viewModel.getSelection().getStartPosition();\n\t\tviewModel.paste(text, pasteOnNewLine, multicursorText, source);\n\t\tconst endPosition = viewModel.getSelection().getStartPosition();\n\t\tif (source === 'keyboard') {\n\t\t\tthis._onDidPaste.fire({\n\t\t\t\tclipboardEvent,\n\t\t\t\trange: new Range(startPosition.lineNumber, startPosition.column, endPosition.lineNumber, endPosition.column),\n\t\t\t\tlanguageId: mode\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _cut(source: string | null | undefined): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.cut(source);\n\t}\n\n\tprivate _triggerEditorCommand(source: string | null | undefined, handlerId: string, payload: unknown): boolean {\n\t\tconst command = EditorExtensionsRegistry.getEditorCommand(handlerId);\n\t\tif (command) {\n\t\t\tpayload = payload || {};\n\t\t\tif (isObject(payload)) {\n\t\t\t\t(payload as { source: string | null | undefined }).source = source;\n\t\t\t}\n\t\t\tthis._instantiationService.invokeFunction((accessor) => {\n\t\t\t\tPromise.resolve(command.runEditorCommand(accessor, this, payload)).then(undefined, onUnexpectedError);\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tpublic _getViewModel(): IViewModel | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel;\n\t}\n\n\tpublic pushUndoStop(): boolean {\n\t\tif (!this._modelData) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this._configuration.options.get(EditorOption.readOnly)) {\n\t\t\t// read only editor => sorry!\n\t\t\treturn false;\n\t\t}\n\t\tthis._modelData.model.pushStackElement();\n\t\treturn true;\n\t}\n\n\tpublic popUndoStop(): boolean {\n\t\tif (!this._modelData) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this._configuration.options.get(EditorOption.readOnly)) {\n\t\t\t// read only editor => sorry!\n\t\t\treturn false;\n\t\t}\n\t\tthis._modelData.model.popStackElement();\n\t\treturn true;\n\t}\n\n\tpublic edit(edit: TextEdit, reason: TextModelEditSource): boolean {\n\t\treturn this.executeEdits(reason, edit.replacements.map<IIdentifiedSingleEditOperation>(e => ({ range: e.range, text: e.text })), undefined);\n\t}\n\n\tpublic executeEdits(source: string | null | undefined | TextModelEditSource, edits: IIdentifiedSingleEditOperation[], endCursorState?: ICursorStateComputer | Selection[]): boolean {\n\t\tif (!this._modelData) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this._configuration.options.get(EditorOption.readOnly)) {\n\t\t\t// read only editor => sorry!\n\t\t\treturn false;\n\t\t}\n\n\t\tlet cursorStateComputer: ICursorStateComputer;\n\t\tif (!endCursorState) {\n\t\t\tcursorStateComputer = () => null;\n\t\t} else if (Array.isArray(endCursorState)) {\n\t\t\tcursorStateComputer = () => endCursorState;\n\t\t} else {\n\t\t\tcursorStateComputer = endCursorState;\n\t\t}\n\n\t\tlet sourceStr: string | undefined | null;\n\t\tlet reason: TextModelEditSource;\n\n\t\tif (source instanceof TextModelEditSource) {\n\t\t\treason = source;\n\t\t\tsourceStr = source.metadata.source;\n\t\t} else {\n\t\t\treason = EditSources.unknown({ name: sourceStr });\n\t\t\tsourceStr = source;\n\t\t}\n\n\t\tthis._onBeforeExecuteEdit.fire({ source: sourceStr ?? undefined });\n\t\tthis._modelData.viewModel.executeEdits(sourceStr, edits, cursorStateComputer, reason);\n\t\treturn true;\n\t}\n\n\tpublic executeCommand(source: string | null | undefined, command: editorCommon.ICommand): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.executeCommand(command, source);\n\t}\n\n\tpublic executeCommands(source: string | null | undefined, commands: editorCommon.ICommand[]): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.executeCommands(commands, source);\n\t}\n\n\tpublic createDecorationsCollection(decorations?: IModelDeltaDecoration[]): EditorDecorationsCollection {\n\t\treturn new EditorDecorationsCollection(this, decorations);\n\t}\n\n\tpublic changeDecorations<T>(callback: (changeAccessor: IModelDecorationsChangeAccessor) => T): T | null {\n\t\tif (!this._modelData) {\n\t\t\t// callback will not be called\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.model.changeDecorations(callback, this._id);\n\t}\n\n\tpublic getLineDecorations(lineNumber: number): IModelDecoration[] | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\tconst options = this._configuration.options;\n\t\treturn this._modelData.model.getLineDecorations(lineNumber, this._id, filterValidationDecorations(options), filterFontDecorations(options));\n\t}\n\n\tpublic getDecorationsInRange(range: Range): IModelDecoration[] | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\tconst options = this._configuration.options;\n\t\treturn this._modelData.model.getDecorationsInRange(range, this._id, filterValidationDecorations(options), filterFontDecorations(options));\n\t}\n\n\tpublic getFontSizeAtPosition(position: IPosition): string | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel.getFontSizeAtPosition(position);\n\t}\n\n\t/**\n\t * @deprecated\n\t */\n\tpublic deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[]): string[] {\n\t\tif (!this._modelData) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif (oldDecorations.length === 0 && newDecorations.length === 0) {\n\t\t\treturn oldDecorations;\n\t\t}\n\n\t\treturn this._modelData.model.deltaDecorations(oldDecorations, newDecorations, this._id);\n\t}\n\n\tpublic removeDecorations(decorationIds: string[]): void {\n\t\tif (!this._modelData || decorationIds.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._modelData.model.changeDecorations((changeAccessor) => {\n\t\t\tchangeAccessor.deltaDecorations(decorationIds, []);\n\t\t});\n\t}\n\n\tpublic removeDecorationsByType(decorationTypeKey: string): void {\n\t\t// remove decorations for type and sub type\n\t\tconst oldDecorationsIds = this._decorationTypeKeysToIds[decorationTypeKey];\n\t\tif (oldDecorationsIds) {\n\t\t\tthis.changeDecorations(accessor => accessor.deltaDecorations(oldDecorationsIds, []));\n\t\t}\n\t\tif (this._decorationTypeKeysToIds.hasOwnProperty(decorationTypeKey)) {\n\t\t\tdelete this._decorationTypeKeysToIds[decorationTypeKey];\n\t\t}\n\t\tif (this._decorationTypeSubtypes.hasOwnProperty(decorationTypeKey)) {\n\t\t\tdelete this._decorationTypeSubtypes[decorationTypeKey];\n\t\t}\n\t}\n\n\tpublic getLayoutInfo(): EditorLayoutInfo {\n\t\tconst options = this._configuration.options;\n\t\tconst layoutInfo = options.get(EditorOption.layoutInfo);\n\t\treturn layoutInfo;\n\t}\n\n\tpublic createOverviewRuler(cssClassName: string): editorBrowser.IOverviewRuler | null {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.view.createOverviewRuler(cssClassName);\n\t}\n\n\tpublic getContainerDomNode(): HTMLElement {\n\t\treturn this._domElement;\n\t}\n\n\tpublic getDomNode(): HTMLElement | null {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.view.domNode.domNode;\n\t}\n\n\tpublic delegateVerticalScrollbarPointerDown(browserEvent: PointerEvent): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.delegateVerticalScrollbarPointerDown(browserEvent);\n\t}\n\n\tpublic delegateScrollFromMouseWheelEvent(browserEvent: IMouseWheelEvent) {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.delegateScrollFromMouseWheelEvent(browserEvent);\n\t}\n\n\tpublic layout(dimension?: IDimension, postponeRendering: boolean = false): void {\n\t\tthis._configuration.observeContainer(dimension);\n\t\tif (!postponeRendering) {\n\t\t\tthis.render();\n\t\t}\n\t}\n\n\tpublic focus(): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.focus();\n\t}\n\n\tpublic hasTextFocus(): boolean {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._modelData.view.isFocused();\n\t}\n\n\tpublic hasWidgetFocus(): boolean {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._modelData.view.isWidgetFocused();\n\t}\n\n\tpublic addContentWidget(widget: editorBrowser.IContentWidget): void {\n\t\tconst widgetData: IContentWidgetData = {\n\t\t\twidget: widget,\n\t\t\tposition: widget.getPosition()\n\t\t};\n\n\t\tif (this._contentWidgets.hasOwnProperty(widget.getId())) {\n\t\t\tconsole.warn('Overwriting a content widget with the same id:' + widget.getId());\n\t\t}\n\n\t\tthis._contentWidgets[widget.getId()] = widgetData;\n\n\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\tthis._modelData.view.addContentWidget(widgetData);\n\t\t}\n\t}\n\n\tpublic layoutContentWidget(widget: editorBrowser.IContentWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._contentWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._contentWidgets[widgetId];\n\t\t\twidgetData.position = widget.getPosition();\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.layoutContentWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic removeContentWidget(widget: editorBrowser.IContentWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._contentWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._contentWidgets[widgetId];\n\t\t\tdelete this._contentWidgets[widgetId];\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.removeContentWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic addOverlayWidget(widget: editorBrowser.IOverlayWidget): void {\n\t\tconst widgetData: IOverlayWidgetData = {\n\t\t\twidget: widget,\n\t\t\tposition: widget.getPosition()\n\t\t};\n\n\t\tif (this._overlayWidgets.hasOwnProperty(widget.getId())) {\n\t\t\tconsole.warn('Overwriting an overlay widget with the same id.');\n\t\t}\n\n\t\tthis._overlayWidgets[widget.getId()] = widgetData;\n\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\tthis._modelData.view.addOverlayWidget(widgetData);\n\t\t}\n\t}\n\n\tpublic layoutOverlayWidget(widget: editorBrowser.IOverlayWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._overlayWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._overlayWidgets[widgetId];\n\t\t\twidgetData.position = widget.getPosition();\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.layoutOverlayWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic removeOverlayWidget(widget: editorBrowser.IOverlayWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._overlayWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._overlayWidgets[widgetId];\n\t\t\tdelete this._overlayWidgets[widgetId];\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.removeOverlayWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic addGlyphMarginWidget(widget: editorBrowser.IGlyphMarginWidget): void {\n\t\tconst widgetData: IGlyphMarginWidgetData = {\n\t\t\twidget: widget,\n\t\t\tposition: widget.getPosition()\n\t\t};\n\n\t\tif (this._glyphMarginWidgets.hasOwnProperty(widget.getId())) {\n\t\t\tconsole.warn('Overwriting a glyph margin widget with the same id.');\n\t\t}\n\n\t\tthis._glyphMarginWidgets[widget.getId()] = widgetData;\n\n\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\tthis._modelData.view.addGlyphMarginWidget(widgetData);\n\t\t}\n\t}\n\n\tpublic layoutGlyphMarginWidget(widget: editorBrowser.IGlyphMarginWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._glyphMarginWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._glyphMarginWidgets[widgetId];\n\t\t\twidgetData.position = widget.getPosition();\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.layoutGlyphMarginWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic removeGlyphMarginWidget(widget: editorBrowser.IGlyphMarginWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._glyphMarginWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._glyphMarginWidgets[widgetId];\n\t\t\tdelete this._glyphMarginWidgets[widgetId];\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.removeGlyphMarginWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic changeViewZones(callback: (accessor: editorBrowser.IViewZoneChangeAccessor) => void): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.change(callback);\n\t}\n\n\tpublic getTargetAtClientPoint(clientX: number, clientY: number): editorBrowser.IMouseTarget | null {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.view.getTargetAtClientPoint(clientX, clientY);\n\t}\n\n\tpublic getScrolledVisiblePosition(rawPosition: IPosition): { top: number; left: number; height: number } | null {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst position = this._modelData.model.validatePosition(rawPosition);\n\t\tconst options = this._configuration.options;\n\t\tconst layoutInfo = options.get(EditorOption.layoutInfo);\n\n\t\tconst top = CodeEditorWidget._getVerticalOffsetForPosition(this._modelData, position.lineNumber, position.column) - this.getScrollTop();\n\t\tconst left = this._modelData.view.getOffsetForColumn(position.lineNumber, position.column) + layoutInfo.glyphMarginWidth + layoutInfo.lineNumbersWidth + layoutInfo.decorationsWidth - this.getScrollLeft();\n\t\tconst height = this.getLineHeightForPosition(position);\n\t\treturn {\n\t\t\ttop: top,\n\t\t\tleft: left,\n\t\t\theight\n\t\t};\n\t}\n\n\tpublic getOffsetForColumn(lineNumber: number, column: number): number {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.view.getOffsetForColumn(lineNumber, column);\n\t}\n\n\tpublic render(forceRedraw: boolean = false): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.batchEvents(() => {\n\t\t\tthis._modelData!.view.render(true, forceRedraw);\n\t\t});\n\t}\n\n\tpublic setAriaOptions(options: editorBrowser.IEditorAriaOptions): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.setAriaOptions(options);\n\t}\n\n\tpublic applyFontInfo(target: HTMLElement): void {\n\t\tapplyFontInfo(target, this._configuration.options.get(EditorOption.fontInfo));\n\t}\n\n\tpublic setBanner(domNode: HTMLElement | null, domNodeHeight: number): void {\n\t\tif (this._bannerDomNode && this._domElement.contains(this._bannerDomNode)) {\n\t\t\tthis._bannerDomNode.remove();\n\t\t}\n\n\t\tthis._bannerDomNode = domNode;\n\t\tthis._configuration.setReservedHeight(domNode ? domNodeHeight : 0);\n\n\t\tif (this._bannerDomNode) {\n\t\t\tthis._domElement.prepend(this._bannerDomNode);\n\t\t}\n\t}\n\n\tprotected _attachModel(model: ITextModel | null): void {\n\t\tif (!model) {\n\t\t\tthis._modelData = null;\n\t\t\treturn;\n\t\t}\n\n\t\tconst listenersToRemove: IDisposable[] = [];\n\n\t\tthis._domElement.setAttribute('data-mode-id', model.getLanguageId());\n\t\tthis._configuration.setIsDominatedByLongLines(model.isDominatedByLongLines());\n\t\tthis._configuration.setModelLineCount(model.getLineCount());\n\n\t\tconst attachedView = model.onBeforeAttached();\n\n\t\tconst viewModel = new ViewModel(\n\t\t\tthis._id,\n\t\t\tthis._configuration,\n\t\t\tmodel,\n\t\t\tDOMLineBreaksComputerFactory.create(dom.getWindow(this._domElement)),\n\t\t\tMonospaceLineBreaksComputerFactory.create(this._configuration.options),\n\t\t\t(callback) => dom.scheduleAtNextAnimationFrame(dom.getWindow(this._domElement), callback),\n\t\t\tthis.languageConfigurationService,\n\t\t\tthis._themeService,\n\t\t\tattachedView,\n\t\t\t{\n\t\t\t\tbatchChanges: (cb) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis._beginUpdate();\n\t\t\t\t\t\treturn cb();\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis._endUpdate();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\n\t\t// Someone might destroy the model from under the editor, so prevent any exceptions by setting a null model\n\t\tlistenersToRemove.push(model.onWillDispose(() => this.setModel(null)));\n\n\t\tlistenersToRemove.push(viewModel.onEvent((e) => {\n\t\t\tswitch (e.kind) {\n\t\t\t\tcase OutgoingViewModelEventKind.ContentSizeChanged:\n\t\t\t\t\tthis._onDidContentSizeChange.fire(e);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.FocusChanged:\n\t\t\t\t\tthis._editorTextFocus.setValue(e.hasFocus);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.WidgetFocusChanged:\n\t\t\t\t\tthis._editorWidgetFocus.setValue(e.hasFocus);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ScrollChanged:\n\t\t\t\t\tthis._onDidScrollChange.fire(e);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ViewZonesChanged:\n\t\t\t\t\tthis._onDidChangeViewZones.fire();\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.HiddenAreasChanged:\n\t\t\t\t\tthis._onDidChangeHiddenAreas.fire();\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ReadOnlyEditAttempt:\n\t\t\t\t\tthis._onDidAttemptReadOnlyEdit.fire();\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.CursorStateChanged: {\n\t\t\t\t\tif (e.reachedMaxCursorCount) {\n\n\t\t\t\t\t\tconst multiCursorLimit = this.getOption(EditorOption.multiCursorLimit);\n\t\t\t\t\t\tconst message = nls.localize('cursors.maximum', \"The number of cursors has been limited to {0}. Consider using [find and replace](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) for larger changes or increase the editor multi cursor limit setting.\", multiCursorLimit);\n\t\t\t\t\t\tthis._notificationService.prompt(Severity.Warning, message, [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: 'Find and Replace',\n\t\t\t\t\t\t\t\trun: () => {\n\t\t\t\t\t\t\t\t\tthis._commandService.executeCommand('editor.action.startFindReplaceAction');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: nls.localize('goToSetting', 'Increase Multi Cursor Limit'),\n\t\t\t\t\t\t\t\trun: () => {\n\t\t\t\t\t\t\t\t\tthis._commandService.executeCommand('workbench.action.openSettings2', {\n\t\t\t\t\t\t\t\t\t\tquery: 'editor.multiCursorLimit'\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst positions: Position[] = [];\n\t\t\t\t\tfor (let i = 0, len = e.selections.length; i < len; i++) {\n\t\t\t\t\t\tpositions[i] = e.selections[i].getPosition();\n\t\t\t\t\t}\n\n\t\t\t\t\tconst e1: ICursorPositionChangedEvent = {\n\t\t\t\t\t\tposition: positions[0],\n\t\t\t\t\t\tsecondaryPositions: positions.slice(1),\n\t\t\t\t\t\treason: e.reason,\n\t\t\t\t\t\tsource: e.source\n\t\t\t\t\t};\n\t\t\t\t\tthis._onDidChangeCursorPosition.fire(e1);\n\n\t\t\t\t\tconst e2: ICursorSelectionChangedEvent = {\n\t\t\t\t\t\tselection: e.selections[0],\n\t\t\t\t\t\tsecondarySelections: e.selections.slice(1),\n\t\t\t\t\t\tmodelVersionId: e.modelVersionId,\n\t\t\t\t\t\toldSelections: e.oldSelections,\n\t\t\t\t\t\toldModelVersionId: e.oldModelVersionId,\n\t\t\t\t\t\tsource: e.source,\n\t\t\t\t\t\treason: e.reason\n\t\t\t\t\t};\n\t\t\t\t\tthis._onDidChangeCursorSelection.fire(e2);\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase OutgoingViewModelEventKind.ModelDecorationsChanged:\n\t\t\t\t\tthis._onDidChangeModelDecorations.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelLanguageChanged:\n\t\t\t\t\tthis._domElement.setAttribute('data-mode-id', model.getLanguageId());\n\t\t\t\t\tthis._onDidChangeModelLanguage.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelLanguageConfigurationChanged:\n\t\t\t\t\tthis._onDidChangeModelLanguageConfiguration.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelContentChanged:\n\t\t\t\t\tthis._onDidChangeModelContent.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelOptionsChanged:\n\t\t\t\t\tthis._onDidChangeModelOptions.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelTokensChanged:\n\t\t\t\t\tthis._onDidChangeModelTokens.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelLineHeightChanged:\n\t\t\t\t\tthis._onDidChangeLineHeight.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelFontChangedEvent:\n\t\t\t\t\tthis._onDidChangeFont.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}));\n\n\t\tconst [view, hasRealView] = this._createView(viewModel);\n\t\tif (hasRealView) {\n\t\t\tthis._domElement.appendChild(view.domNode.domNode);\n\n\t\t\tlet keys = Object.keys(this._contentWidgets);\n\t\t\tfor (let i = 0, len = keys.length; i < len; i++) {\n\t\t\t\tconst widgetId = keys[i];\n\t\t\t\tview.addContentWidget(this._contentWidgets[widgetId]);\n\t\t\t}\n\n\t\t\tkeys = Object.keys(this._overlayWidgets);\n\t\t\tfor (let i = 0, len = keys.length; i < len; i++) {\n\t\t\t\tconst widgetId = keys[i];\n\t\t\t\tview.addOverlayWidget(this._overlayWidgets[widgetId]);\n\t\t\t}\n\n\t\t\tkeys = Object.keys(this._glyphMarginWidgets);\n\t\t\tfor (let i = 0, len = keys.length; i < len; i++) {\n\t\t\t\tconst widgetId = keys[i];\n\t\t\t\tview.addGlyphMarginWidget(this._glyphMarginWidgets[widgetId]);\n\t\t\t}\n\n\t\t\tview.render(false, true);\n\t\t\tview.domNode.domNode.setAttribute('data-uri', model.uri.toString());\n\t\t}\n\n\t\tthis._modelData = new ModelData(model, viewModel, view, hasRealView, listenersToRemove, attachedView);\n\t}\n\n\tprotected _createView(viewModel: ViewModel): [View, boolean] {\n\t\tlet commandDelegate: ICommandDelegate;\n\t\tif (this.isSimpleWidget) {\n\t\t\tcommandDelegate = {\n\t\t\t\tpaste: (text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null) => {\n\t\t\t\t\tthis._paste('keyboard', text, pasteOnNewLine, multicursorText, mode);\n\t\t\t\t},\n\t\t\t\ttype: (text: string) => {\n\t\t\t\t\tthis._type('keyboard', text);\n\t\t\t\t},\n\t\t\t\tcompositionType: (text: string, replacePrevCharCnt: number, replaceNextCharCnt: number, positionDelta: number) => {\n\t\t\t\t\tthis._compositionType('keyboard', text, replacePrevCharCnt, replaceNextCharCnt, positionDelta);\n\t\t\t\t},\n\t\t\t\tstartComposition: () => {\n\t\t\t\t\tthis._startComposition();\n\t\t\t\t},\n\t\t\t\tendComposition: () => {\n\t\t\t\t\tthis._endComposition('keyboard');\n\t\t\t\t},\n\t\t\t\tcut: () => {\n\t\t\t\t\tthis._cut('keyboard');\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\tcommandDelegate = {\n\t\t\t\tpaste: (text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null) => {\n\t\t\t\t\tconst payload: editorBrowser.PastePayload = { text, pasteOnNewLine, multicursorText, mode };\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.Paste, payload);\n\t\t\t\t},\n\t\t\t\ttype: (text: string) => {\n\t\t\t\t\tconst payload: editorCommon.TypePayload = { text };\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.Type, payload);\n\t\t\t\t},\n\t\t\t\tcompositionType: (text: string, replacePrevCharCnt: number, replaceNextCharCnt: number, positionDelta: number) => {\n\t\t\t\t\t// Try if possible to go through the existing `replacePreviousChar` command\n\t\t\t\t\tif (replaceNextCharCnt || positionDelta) {\n\t\t\t\t\t\t// must be handled through the new command\n\t\t\t\t\t\tconst payload: editorCommon.CompositionTypePayload = { text, replacePrevCharCnt, replaceNextCharCnt, positionDelta };\n\t\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.CompositionType, payload);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst payload: editorCommon.ReplacePreviousCharPayload = { text, replaceCharCnt: replacePrevCharCnt };\n\t\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.ReplacePreviousChar, payload);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tstartComposition: () => {\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.CompositionStart, {});\n\t\t\t\t},\n\t\t\t\tendComposition: () => {\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.CompositionEnd, {});\n\t\t\t\t},\n\t\t\t\tcut: () => {\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.Cut, {});\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tconst viewUserInputEvents = new ViewUserInputEvents(viewModel.coordinatesConverter);\n\t\tviewUserInputEvents.onKeyDown = (e) => this._onKeyDown.fire(e);\n\t\tviewUserInputEvents.onKeyUp = (e) => this._onKeyUp.fire(e);\n\t\tviewUserInputEvents.onContextMenu = (e) => this._onContextMenu.fire(e);\n\t\tviewUserInputEvents.onMouseMove = (e) => this._onMouseMove.fire(e);\n\t\tviewUserInputEvents.onMouseLeave = (e) => this._onMouseLeave.fire(e);\n\t\tviewUserInputEvents.onMouseDown = (e) => this._onMouseDown.fire(e);\n\t\tviewUserInputEvents.onMouseUp = (e) => this._onMouseUp.fire(e);\n\t\tviewUserInputEvents.onMouseDrag = (e) => this._onMouseDrag.fire(e);\n\t\tviewUserInputEvents.onMouseDrop = (e) => this._onMouseDrop.fire(e);\n\t\tviewUserInputEvents.onMouseDropCanceled = (e) => this._onMouseDropCanceled.fire(e);\n\t\tviewUserInputEvents.onMouseWheel = (e) => this._onMouseWheel.fire(e);\n\n\t\tconst view = new View(\n\t\t\tthis._domElement,\n\t\t\tthis.getId(),\n\t\t\tcommandDelegate,\n\t\t\tthis._configuration,\n\t\t\tthis._themeService.getColorTheme(),\n\t\t\tviewModel,\n\t\t\tviewUserInputEvents,\n\t\t\tthis._overflowWidgetsDomNode,\n\t\t\tthis._instantiationService\n\t\t);\n\n\t\treturn [view, true];\n\t}\n\n\tprotected _postDetachModelCleanup(detachedModel: ITextModel | null): void {\n\t\tdetachedModel?.removeAllDecorationsWithOwnerId(this._id);\n\t}\n\n\tprivate _detachModel(): ITextModel | null {\n\t\tthis._contributionsDisposable?.dispose();\n\t\tthis._contributionsDisposable = undefined;\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\tconst model = this._modelData.model;\n\t\tconst removeDomNode = this._modelData.hasRealView ? this._modelData.view.domNode.domNode : null;\n\n\t\tthis._modelData.dispose();\n\t\tthis._modelData = null;\n\n\t\tthis._domElement.removeAttribute('data-mode-id');\n\t\tif (removeDomNode && this._domElement.contains(removeDomNode)) {\n\t\t\tremoveDomNode.remove();\n\t\t}\n\t\tif (this._bannerDomNode && this._domElement.contains(this._bannerDomNode)) {\n\t\t\tthis._bannerDomNode.remove();\n\t\t}\n\t\treturn model;\n\t}\n\n\tprivate _removeDecorationType(key: string): void {\n\t\tthis._codeEditorService.removeDecorationType(key);\n\t}\n\n\tpublic hasModel(): this is editorBrowser.IActiveCodeEditor {\n\t\treturn (this._modelData !== null);\n\t}\n\n\tprivate showDropIndicatorAt(position: Position): void {\n\t\tconst newDecorations: IModelDeltaDecoration[] = [{\n\t\t\trange: new Range(position.lineNumber, position.column, position.lineNumber, position.column),\n\t\t\toptions: CodeEditorWidget.dropIntoEditorDecorationOptions\n\t\t}];\n\n\t\tthis._dropIntoEditorDecorations.set(newDecorations);\n\t\tthis.revealPosition(position, editorCommon.ScrollType.Immediate);\n\t}\n\n\tprivate removeDropIndicator(): void {\n\t\tthis._dropIntoEditorDecorations.clear();\n\t}\n\n\tprivate _beginUpdate(): void {\n\t\tthis._updateCounter++;\n\t\tif (this._updateCounter === 1) {\n\t\t\tthis._onBeginUpdate.fire();\n\t\t}\n\t}\n\n\tprivate _endUpdate(): void {\n\t\tthis._updateCounter--;\n\t\tif (this._updateCounter === 0) {\n\t\t\tthis._onEndUpdate.fire();\n\t\t}\n\t}\n}\n\nlet EDITOR_ID = 0;\n\nexport interface ICodeEditorWidgetOptions {\n\t/**\n\t * Is this a simple widget (not a real code editor)?\n\t * Defaults to false.\n\t */\n\tisSimpleWidget?: boolean;\n\n\t/**\n\t * Contributions to instantiate.\n\t * When provided, only the contributions included will be instantiated.\n\t * To include the defaults, those must be provided as well via [...EditorExtensionsRegistry.getEditorContributions()]\n\t * Defaults to EditorExtensionsRegistry.getEditorContributions().\n\t */\n\tcontributions?: IEditorContributionDescription[];\n\n\t/**\n\t * Telemetry data associated with this CodeEditorWidget.\n\t * Defaults to null.\n\t */\n\ttelemetryData?: object;\n\n\t/**\n\t * The ID of the context menu.\n\t * Defaults to MenuId.SimpleEditorContext or MenuId.EditorContext depending on whether the widget is simple.\n\t */\n\tcontextMenuId?: MenuId;\n\n\t/**\n\t * Define extra context keys that will be defined in the context service\n\t * for the editor.\n\t */\n\tcontextKeyValues?: Record<string, ContextKeyValue>;\n}\n\nclass ModelData {\n\tconstructor(\n\t\tpublic readonly model: ITextModel,\n\t\tpublic readonly viewModel: ViewModel,\n\t\tpublic readonly view: View,\n\t\tpublic readonly hasRealView: boolean,\n\t\tpublic readonly listenersToRemove: IDisposable[],\n\t\tpublic readonly attachedView: IAttachedView,\n\t) {\n\t}\n\n\tpublic dispose(): void {\n\t\tdispose(this.listenersToRemove);\n\t\tthis.model.onBeforeDetached(this.attachedView);\n\t\tif (this.hasRealView) {\n\t\t\tthis.view.dispose();\n\t\t}\n\t\tthis.viewModel.dispose();\n\t}\n}\n\nconst enum BooleanEventValue {\n\tNotSet,\n\tFalse,\n\tTrue\n}\n\nexport class BooleanEventEmitter extends Disposable {\n\tprivate readonly _onDidChangeToTrue: Emitter<void>;\n\tpublic readonly onDidChangeToTrue: Event<void>;\n\n\tprivate readonly _onDidChangeToFalse: Emitter<void>;\n\tpublic readonly onDidChangeToFalse: Event<void>;\n\n\tprivate _value: BooleanEventValue;\n\n\tconstructor(\n\t\tprivate readonly _emitterOptions: EmitterOptions\n\t) {\n\t\tsuper();\n\t\tthis._onDidChangeToTrue = this._register(new Emitter<void>(this._emitterOptions));\n\t\tthis.onDidChangeToTrue = this._onDidChangeToTrue.event;\n\t\tthis._onDidChangeToFalse = this._register(new Emitter<void>(this._emitterOptions));\n\t\tthis.onDidChangeToFalse = this._onDidChangeToFalse.event;\n\t\tthis._value = BooleanEventValue.NotSet;\n\t}\n\n\tpublic setValue(_value: boolean) {\n\t\tconst value = (_value ? BooleanEventValue.True : BooleanEventValue.False);\n\t\tif (this._value === value) {\n\t\t\treturn;\n\t\t}\n\t\tthis._value = value;\n\t\tif (this._value === BooleanEventValue.True) {\n\t\t\tthis._onDidChangeToTrue.fire();\n\t\t} else if (this._value === BooleanEventValue.False) {\n\t\t\tthis._onDidChangeToFalse.fire();\n\t\t}\n\t}\n}\n\n/**\n * A regular event emitter that also makes sure contributions are instantiated if necessary\n */\nclass InteractionEmitter<T> extends Emitter<T> {\n\n\tconstructor(\n\t\tprivate readonly _contributions: CodeEditorContributions,\n\t\tdeliveryQueue: EventDeliveryQueue\n\t) {\n\t\tsuper({ deliveryQueue });\n\t}\n\n\toverride fire(event: T): void {\n\t\tthis._contributions.onBeforeInteractionEvent();\n\t\tsuper.fire(event);\n\t}\n}\n\nclass EditorContextKeysManager extends Disposable {\n\n\tprivate readonly _editor: CodeEditorWidget;\n\tprivate readonly _editorSimpleInput: IContextKey<boolean>;\n\tprivate readonly _editorFocus: IContextKey<boolean>;\n\tprivate readonly _textInputFocus: IContextKey<boolean>;\n\tprivate readonly _editorTextFocus: IContextKey<boolean>;\n\tprivate readonly _tabMovesFocus: IContextKey<boolean>;\n\tprivate readonly _editorReadonly: IContextKey<boolean>;\n\tprivate readonly _inDiffEditor: IContextKey<boolean>;\n\tprivate readonly _editorColumnSelection: IContextKey<boolean>;\n\tprivate readonly _hasMultipleSelections: IContextKey<boolean>;\n\tprivate readonly _hasNonEmptySelection: IContextKey<boolean>;\n\tprivate readonly _canUndo: IContextKey<boolean>;\n\tprivate readonly _canRedo: IContextKey<boolean>;\n\n\tconstructor(\n\t\teditor: CodeEditorWidget,\n\t\tcontextKeyService: IContextKeyService\n\t) {\n\t\tsuper();\n\n\t\tthis._editor = editor;\n\n\t\tcontextKeyService.createKey('editorId', editor.getId());\n\n\t\tthis._editorSimpleInput = EditorContextKeys.editorSimpleInput.bindTo(contextKeyService);\n\t\tthis._editorFocus = EditorContextKeys.focus.bindTo(contextKeyService);\n\t\tthis._textInputFocus = EditorContextKeys.textInputFocus.bindTo(contextKeyService);\n\t\tthis._editorTextFocus = EditorContextKeys.editorTextFocus.bindTo(contextKeyService);\n\t\tthis._tabMovesFocus = EditorContextKeys.tabMovesFocus.bindTo(contextKeyService);\n\t\tthis._editorReadonly = EditorContextKeys.readOnly.bindTo(contextKeyService);\n\t\tthis._inDiffEditor = EditorContextKeys.inDiffEditor.bindTo(contextKeyService);\n\t\tthis._editorColumnSelection = EditorContextKeys.columnSelection.bindTo(contextKeyService);\n\t\tthis._hasMultipleSelections = EditorContextKeys.hasMultipleSelections.bindTo(contextKeyService);\n\t\tthis._hasNonEmptySelection = EditorContextKeys.hasNonEmptySelection.bindTo(contextKeyService);\n\t\tthis._canUndo = EditorContextKeys.canUndo.bindTo(contextKeyService);\n\t\tthis._canRedo = EditorContextKeys.canRedo.bindTo(contextKeyService);\n\n\t\tthis._register(this._editor.onDidChangeConfiguration(() => this._updateFromConfig()));\n\t\tthis._register(this._editor.onDidChangeCursorSelection(() => this._updateFromSelection()));\n\t\tthis._register(this._editor.onDidFocusEditorWidget(() => this._updateFromFocus()));\n\t\tthis._register(this._editor.onDidBlurEditorWidget(() => this._updateFromFocus()));\n\t\tthis._register(this._editor.onDidFocusEditorText(() => this._updateFromFocus()));\n\t\tthis._register(this._editor.onDidBlurEditorText(() => this._updateFromFocus()));\n\t\tthis._register(this._editor.onDidChangeModel(() => this._updateFromModel()));\n\t\tthis._register(this._editor.onDidChangeConfiguration(() => this._updateFromModel()));\n\t\tthis._register(TabFocus.onDidChangeTabFocus((tabFocusMode: boolean) => this._tabMovesFocus.set(tabFocusMode)));\n\n\t\tthis._updateFromConfig();\n\t\tthis._updateFromSelection();\n\t\tthis._updateFromFocus();\n\t\tthis._updateFromModel();\n\n\t\tthis._editorSimpleInput.set(this._editor.isSimpleWidget);\n\t}\n\n\tprivate _updateFromConfig(): void {\n\t\tconst options = this._editor.getOptions();\n\n\t\tthis._tabMovesFocus.set(options.get(EditorOption.tabFocusMode) || TabFocus.getTabFocusMode());\n\t\tthis._editorReadonly.set(options.get(EditorOption.readOnly));\n\t\tthis._inDiffEditor.set(options.get(EditorOption.inDiffEditor));\n\t\tthis._editorColumnSelection.set(options.get(EditorOption.columnSelection));\n\t}\n\n\tprivate _updateFromSelection(): void {\n\t\tconst selections = this._editor.getSelections();\n\t\tif (!selections) {\n\t\t\tthis._hasMultipleSelections.reset();\n\t\t\tthis._hasNonEmptySelection.reset();\n\t\t} else {\n\t\t\tthis._hasMultipleSelections.set(selections.length > 1);\n\t\t\tthis._hasNonEmptySelection.set(selections.some(s => !s.isEmpty()));\n\t\t}\n\t}\n\n\tprivate _updateFromFocus(): void {\n\t\tthis._editorFocus.set(this._editor.hasWidgetFocus() && !this._editor.isSimpleWidget);\n\t\tthis._editorTextFocus.set(this._editor.hasTextFocus() && !this._editor.isSimpleWidget);\n\t\tthis._textInputFocus.set(this._editor.hasTextFocus());\n\t}\n\n\tprivate _updateFromModel(): void {\n\t\tconst model = this._editor.getModel();\n\t\tthis._canUndo.set(Boolean(model && model.canUndo()));\n\t\tthis._canRedo.set(Boolean(model && model.canRedo()));\n\t}\n}\n\nexport class EditorModeContext extends Disposable {\n\n\tprivate readonly _langId: IContextKey<string>;\n\tprivate readonly _hasCompletionItemProvider: IContextKey<boolean>;\n\tprivate readonly _hasCodeActionsProvider: IContextKey<boolean>;\n\tprivate readonly _hasCodeLensProvider: IContextKey<boolean>;\n\tprivate readonly _hasDefinitionProvider: IContextKey<boolean>;\n\tprivate readonly _hasDeclarationProvider: IContextKey<boolean>;\n\tprivate readonly _hasImplementationProvider: IContextKey<boolean>;\n\tprivate readonly _hasTypeDefinitionProvider: IContextKey<boolean>;\n\tprivate readonly _hasHoverProvider: IContextKey<boolean>;\n\tprivate readonly _hasDocumentHighlightProvider: IContextKey<boolean>;\n\tprivate readonly _hasDocumentSymbolProvider: IContextKey<boolean>;\n\tprivate readonly _hasReferenceProvider: IContextKey<boolean>;\n\tprivate readonly _hasRenameProvider: IContextKey<boolean>;\n\tprivate readonly _hasDocumentFormattingProvider: IContextKey<boolean>;\n\tprivate readonly _hasDocumentSelectionFormattingProvider: IContextKey<boolean>;\n\tprivate readonly _hasMultipleDocumentFormattingProvider: IContextKey<boolean>;\n\tprivate readonly _hasMultipleDocumentSelectionFormattingProvider: IContextKey<boolean>;\n\tprivate readonly _hasSignatureHelpProvider: IContextKey<boolean>;\n\tprivate readonly _hasInlayHintsProvider: IContextKey<boolean>;\n\tprivate readonly _isInEmbeddedEditor: IContextKey<boolean>;\n\n\tconstructor(\n\t\tprivate readonly _editor: CodeEditorWidget,\n\t\tprivate readonly _contextKeyService: IContextKeyService,\n\t\tprivate readonly _languageFeaturesService: ILanguageFeaturesService,\n\t) {\n\t\tsuper();\n\n\t\tthis._langId = EditorContextKeys.languageId.bindTo(_contextKeyService);\n\t\tthis._hasCompletionItemProvider = EditorContextKeys.hasCompletionItemProvider.bindTo(_contextKeyService);\n\t\tthis._hasCodeActionsProvider = EditorContextKeys.hasCodeActionsProvider.bindTo(_contextKeyService);\n\t\tthis._hasCodeLensProvider = EditorContextKeys.hasCodeLensProvider.bindTo(_contextKeyService);\n\t\tthis._hasDefinitionProvider = EditorContextKeys.hasDefinitionProvider.bindTo(_contextKeyService);\n\t\tthis._hasDeclarationProvider = EditorContextKeys.hasDeclarationProvider.bindTo(_contextKeyService);\n\t\tthis._hasImplementationProvider = EditorContextKeys.hasImplementationProvider.bindTo(_contextKeyService);\n\t\tthis._hasTypeDefinitionProvider = EditorContextKeys.hasTypeDefinitionProvider.bindTo(_contextKeyService);\n\t\tthis._hasHoverProvider = EditorContextKeys.hasHoverProvider.bindTo(_contextKeyService);\n\t\tthis._hasDocumentHighlightProvider = EditorContextKeys.hasDocumentHighlightProvider.bindTo(_contextKeyService);\n\t\tthis._hasDocumentSymbolProvider = EditorContextKeys.hasDocumentSymbolProvider.bindTo(_contextKeyService);\n\t\tthis._hasReferenceProvider = EditorContextKeys.hasReferenceProvider.bindTo(_contextKeyService);\n\t\tthis._hasRenameProvider = EditorContextKeys.hasRenameProvider.bindTo(_contextKeyService);\n\t\tthis._hasSignatureHelpProvider = EditorContextKeys.hasSignatureHelpProvider.bindTo(_contextKeyService);\n\t\tthis._hasInlayHintsProvider = EditorContextKeys.hasInlayHintsProvider.bindTo(_contextKeyService);\n\t\tthis._hasDocumentFormattingProvider = EditorContextKeys.hasDocumentFormattingProvider.bindTo(_contextKeyService);\n\t\tthis._hasDocumentSelectionFormattingProvider = EditorContextKeys.hasDocumentSelectionFormattingProvider.bindTo(_contextKeyService);\n\t\tthis._hasMultipleDocumentFormattingProvider = EditorContextKeys.hasMultipleDocumentFormattingProvider.bindTo(_contextKeyService);\n\t\tthis._hasMultipleDocumentSelectionFormattingProvider = EditorContextKeys.hasMultipleDocumentSelectionFormattingProvider.bindTo(_contextKeyService);\n\t\tthis._isInEmbeddedEditor = EditorContextKeys.isInEmbeddedEditor.bindTo(_contextKeyService);\n\n\t\tconst update = () => this._update();\n\n\t\t// update when model/mode changes\n\t\tthis._register(_editor.onDidChangeModel(update));\n\t\tthis._register(_editor.onDidChangeModelLanguage(update));\n\n\t\t// update when registries change\n\t\tthis._register(_languageFeaturesService.completionProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.codeActionProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.codeLensProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.definitionProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.declarationProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.implementationProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.typeDefinitionProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.hoverProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.documentHighlightProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.documentSymbolProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.referenceProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.renameProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.documentFormattingEditProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.documentRangeFormattingEditProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.signatureHelpProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.inlayHintsProvider.onDidChange(update));\n\n\t\tupdate();\n\t}\n\n\toverride dispose() {\n\t\tsuper.dispose();\n\t}\n\n\treset() {\n\t\tthis._contextKeyService.bufferChangeEvents(() => {\n\t\t\tthis._langId.reset();\n\t\t\tthis._hasCompletionItemProvider.reset();\n\t\t\tthis._hasCodeActionsProvider.reset();\n\t\t\tthis._hasCodeLensProvider.reset();\n\t\t\tthis._hasDefinitionProvider.reset();\n\t\t\tthis._hasDeclarationProvider.reset();\n\t\t\tthis._hasImplementationProvider.reset();\n\t\t\tthis._hasTypeDefinitionProvider.reset();\n\t\t\tthis._hasHoverProvider.reset();\n\t\t\tthis._hasDocumentHighlightProvider.reset();\n\t\t\tthis._hasDocumentSymbolProvider.reset();\n\t\t\tthis._hasReferenceProvider.reset();\n\t\t\tthis._hasRenameProvider.reset();\n\t\t\tthis._hasDocumentFormattingProvider.reset();\n\t\t\tthis._hasDocumentSelectionFormattingProvider.reset();\n\t\t\tthis._hasSignatureHelpProvider.reset();\n\t\t\tthis._isInEmbeddedEditor.reset();\n\t\t});\n\t}\n\n\tprivate _update() {\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\tthis.reset();\n\t\t\treturn;\n\t\t}\n\t\tthis._contextKeyService.bufferChangeEvents(() => {\n\t\t\tthis._langId.set(model.getLanguageId());\n\t\t\tthis._hasCompletionItemProvider.set(this._languageFeaturesService.completionProvider.has(model));\n\t\t\tthis._hasCodeActionsProvider.set(this._languageFeaturesService.codeActionProvider.has(model));\n\t\t\tthis._hasCodeLensProvider.set(this._languageFeaturesService.codeLensProvider.has(model));\n\t\t\tthis._hasDefinitionProvider.set(this._languageFeaturesService.definitionProvider.has(model));\n\t\t\tthis._hasDeclarationProvider.set(this._languageFeaturesService.declarationProvider.has(model));\n\t\t\tthis._hasImplementationProvider.set(this._languageFeaturesService.implementationProvider.has(model));\n\t\t\tthis._hasTypeDefinitionProvider.set(this._languageFeaturesService.typeDefinitionProvider.has(model));\n\t\t\tthis._hasHoverProvider.set(this._languageFeaturesService.hoverProvider.has(model));\n\t\t\tthis._hasDocumentHighlightProvider.set(this._languageFeaturesService.documentHighlightProvider.has(model));\n\t\t\tthis._hasDocumentSymbolProvider.set(this._languageFeaturesService.documentSymbolProvider.has(model));\n\t\t\tthis._hasReferenceProvider.set(this._languageFeaturesService.referenceProvider.has(model));\n\t\t\tthis._hasRenameProvider.set(this._languageFeaturesService.renameProvider.has(model));\n\t\t\tthis._hasSignatureHelpProvider.set(this._languageFeaturesService.signatureHelpProvider.has(model));\n\t\t\tthis._hasInlayHintsProvider.set(this._languageFeaturesService.inlayHintsProvider.has(model));\n\t\t\tthis._hasDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.has(model) || this._languageFeaturesService.documentRangeFormattingEditProvider.has(model));\n\t\t\tthis._hasDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.has(model));\n\t\t\tthis._hasMultipleDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.all(model).length + this._languageFeaturesService.documentRangeFormattingEditProvider.all(model).length > 1);\n\t\t\tthis._hasMultipleDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.all(model).length > 1);\n\t\t\tthis._isInEmbeddedEditor.set(model.uri.scheme === Schemas.walkThroughSnippet || model.uri.scheme === Schemas.vscodeChatCodeBlock);\n\t\t});\n\t}\n}\n\n\nclass EditorDecorationsCollection implements editorCommon.IEditorDecorationsCollection {\n\n\tprivate _decorationIds: string[] = [];\n\tprivate _isChangingDecorations: boolean = false;\n\n\tpublic get length(): number {\n\t\treturn this._decorationIds.length;\n\t}\n\n\tconstructor(\n\t\tprivate readonly _editor: editorBrowser.ICodeEditor,\n\t\tdecorations: IModelDeltaDecoration[] | undefined\n\t) {\n\t\tif (Array.isArray(decorations) && decorations.length > 0) {\n\t\t\tthis.set(decorations);\n\t\t}\n\t}\n\n\tpublic onDidChange(listener: (e: IModelDecorationsChangedEvent) => unknown, thisArgs?: unknown, disposables?: IDisposable[] | DisposableStore): IDisposable {\n\t\treturn this._editor.onDidChangeModelDecorations((e) => {\n\t\t\tif (this._isChangingDecorations) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlistener.call(thisArgs, e);\n\t\t}, disposables);\n\t}\n\n\tpublic getRange(index: number): Range | null {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\t\tif (index >= this._decorationIds.length) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._editor.getModel().getDecorationRange(this._decorationIds[index]);\n\t}\n\n\tpublic getRanges(): Range[] {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn [];\n\t\t}\n\t\tconst model = this._editor.getModel();\n\t\tconst result: Range[] = [];\n\t\tfor (const decorationId of this._decorationIds) {\n\t\t\tconst range = model.getDecorationRange(decorationId);\n\t\t\tif (range) {\n\t\t\t\tresult.push(range);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tpublic has(decoration: IModelDecoration): boolean {\n\t\treturn this._decorationIds.includes(decoration.id);\n\t}\n\n\tpublic clear(): void {\n\t\tif (this._decorationIds.length === 0) {\n\t\t\t// nothing to do\n\t\t\treturn;\n\t\t}\n\t\tthis.set([]);\n\t}\n\n\tpublic set(newDecorations: readonly IModelDeltaDecoration[]): string[] {\n\t\ttry {\n\t\t\tthis._isChangingDecorations = true;\n\t\t\tthis._editor.changeDecorations((accessor) => {\n\t\t\t\tthis._decorationIds = accessor.deltaDecorations(this._decorationIds, newDecorations);\n\t\t\t});\n\t\t} finally {\n\t\t\tthis._isChangingDecorations = false;\n\t\t}\n\t\treturn this._decorationIds;\n\t}\n\n\tpublic append(newDecorations: readonly IModelDeltaDecoration[]): string[] {\n\t\tlet newDecorationIds: string[] = [];\n\t\ttry {\n\t\t\tthis._isChangingDecorations = true;\n\t\t\tthis._editor.changeDecorations((accessor) => {\n\t\t\t\tnewDecorationIds = accessor.deltaDecorations([], newDecorations);\n\t\t\t\tthis._decorationIds = this._decorationIds.concat(newDecorationIds);\n\t\t\t});\n\t\t} finally {\n\t\t\tthis._isChangingDecorations = false;\n\t\t}\n\t\treturn newDecorationIds;\n\t}\n}\n\nconst squigglyStart = encodeURIComponent(`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 3' enable-background='new 0 0 6 3' height='3' width='6'><g fill='`);\nconst squigglyEnd = encodeURIComponent(`'><polygon points='5.5,0 2.5,3 1.1,3 4.1,0'/><polygon points='4,0 6,2 6,0.6 5.4,0'/><polygon points='0,2 1,3 2.4,3 0,0.6'/></g></svg>`);\n\nfunction getSquigglySVGData(color: Color) {\n\treturn squigglyStart + encodeURIComponent(color.toString()) + squigglyEnd;\n}\n\nconst dotdotdotStart = encodeURIComponent(`<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"3\" width=\"12\"><g fill=\"`);\nconst dotdotdotEnd = encodeURIComponent(`\"><circle cx=\"1\" cy=\"1\" r=\"1\"/><circle cx=\"5\" cy=\"1\" r=\"1\"/><circle cx=\"9\" cy=\"1\" r=\"1\"/></g></svg>`);\n\nfunction getDotDotDotSVGData(color: Color) {\n\treturn dotdotdotStart + encodeURIComponent(color.toString()) + dotdotdotEnd;\n}\n\nregisterThemingParticipant((theme, collector) => {\n\tconst errorForeground = theme.getColor(editorErrorForeground);\n\tif (errorForeground) {\n\t\tcollector.addRule(`.monaco-editor .${ClassName.EditorErrorDecoration} { background: url(\"data:image/svg+xml,${getSquigglySVGData(errorForeground)}\") repeat-x bottom left; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-error-decoration: url(\"data:image/svg+xml,${getSquigglySVGData(errorForeground)}\"); }`);\n\t}\n\tconst warningForeground = theme.getColor(editorWarningForeground);\n\tif (warningForeground) {\n\t\tcollector.addRule(`.monaco-editor .${ClassName.EditorWarningDecoration} { background: url(\"data:image/svg+xml,${getSquigglySVGData(warningForeground)}\") repeat-x bottom left; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-warning-decoration: url(\"data:image/svg+xml,${getSquigglySVGData(warningForeground)}\"); }`);\n\t}\n\tconst infoForeground = theme.getColor(editorInfoForeground);\n\tif (infoForeground) {\n\t\tcollector.addRule(`.monaco-editor .${ClassName.EditorInfoDecoration} { background: url(\"data:image/svg+xml,${getSquigglySVGData(infoForeground)}\") repeat-x bottom left; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-info-decoration: url(\"data:image/svg+xml,${getSquigglySVGData(infoForeground)}\"); }`);\n\t}\n\tconst hintForeground = theme.getColor(editorHintForeground);\n\tif (hintForeground) {\n\t\tcollector.addRule(`.monaco-editor .${ClassName.EditorHintDecoration} { background: url(\"data:image/svg+xml,${getDotDotDotSVGData(hintForeground)}\") no-repeat bottom left; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-hint-decoration: url(\"data:image/svg+xml,${getDotDotDotSVGData(hintForeground)}\"); }`);\n\t}\n\tconst unnecessaryForeground = theme.getColor(editorUnnecessaryCodeOpacity);\n\tif (unnecessaryForeground) {\n\t\tcollector.addRule(`.monaco-editor.showUnused .${ClassName.EditorUnnecessaryInlineDecoration} { opacity: ${unnecessaryForeground.rgba.a}; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-unnecessary-decoration-opacity: ${unnecessaryForeground.rgba.a}; }`);\n\t}\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/browser/widget/codeEditor/codeEditorWidget.ts"],"names":[],"mappings":"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","file":"codeEditorWidget.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport '../../services/markerDecorations.js';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { IKeyboardEvent } from '../../../../base/browser/keyboardEvent.js';\nimport { IMouseWheelEvent } from '../../../../base/browser/mouseEvent.js';\nimport { Color } from '../../../../base/common/color.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter, EmitterOptions, Event, EventDeliveryQueue, createEventDeliveryQueue } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore, IDisposable, dispose } from '../../../../base/common/lifecycle.js';\nimport { Schemas } from '../../../../base/common/network.js';\nimport './editor.css';\nimport { applyFontInfo } from '../../config/domFontInfo.js';\nimport { EditorConfiguration, IEditorConstructionOptions } from '../../config/editorConfiguration.js';\nimport { TabFocus } from '../../config/tabFocus.js';\nimport * as editorBrowser from '../../editorBrowser.js';\nimport { EditorExtensionsRegistry, IEditorContributionDescription } from '../../editorExtensions.js';\nimport { ICodeEditorService } from '../../services/codeEditorService.js';\nimport { IContentWidgetData, IGlyphMarginWidgetData, IOverlayWidgetData, View } from '../../view.js';\nimport { DOMLineBreaksComputerFactory } from '../../view/domLineBreaksComputer.js';\nimport { ICommandDelegate } from '../../view/viewController.js';\nimport { ViewUserInputEvents } from '../../view/viewUserInputEvents.js';\nimport { CodeEditorContributions } from './codeEditorContributions.js';\nimport { IEditorConfiguration } from '../../../common/config/editorConfiguration.js';\nimport { ConfigurationChangedEvent, EditorLayoutInfo, EditorOption, FindComputedEditorOptionValueById, IComputedEditorOptions, IEditorOptions, filterFontDecorations, filterValidationDecorations } from '../../../common/config/editorOptions.js';\nimport { CursorColumns } from '../../../common/core/cursorColumns.js';\nimport { IDimension } from '../../../common/core/2d/dimension.js';\nimport { editorUnnecessaryCodeOpacity } from '../../../common/core/editorColorRegistry.js';\nimport { IPosition, Position } from '../../../common/core/position.js';\nimport { IRange, Range } from '../../../common/core/range.js';\nimport { ISelection, Selection } from '../../../common/core/selection.js';\nimport { IWordAtPosition } from '../../../common/core/wordHelper.js';\nimport { WordOperations } from '../../../common/cursor/cursorWordOperations.js';\nimport { CursorChangeReason, ICursorPositionChangedEvent, ICursorSelectionChangedEvent } from '../../../common/cursorEvents.js';\nimport { InternalEditorAction } from '../../../common/editorAction.js';\nimport * as editorCommon from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { EndOfLinePreference, IAttachedView, ICursorStateComputer, IIdentifiedSingleEditOperation, IModelDecoration, IModelDecorationsChangeAccessor, IModelDeltaDecoration, ITextModel } from '../../../common/model.js';\nimport { ClassName } from '../../../common/model/intervalTree.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { IModelContentChangedEvent, IModelDecorationsChangedEvent, IModelLanguageChangedEvent, IModelLanguageConfigurationChangedEvent, IModelOptionsChangedEvent, IModelTokensChangedEvent, ModelFontChangedEvent, ModelLineHeightChangedEvent } from '../../../common/textModelEvents.js';\nimport { VerticalRevealType } from '../../../common/viewEvents.js';\nimport { IEditorWhitespace, IViewModel } from '../../../common/viewModel.js';\nimport { MonospaceLineBreaksComputerFactory } from '../../../common/viewModel/monospaceLineBreaksComputer.js';\nimport { ViewModel } from '../../../common/viewModel/viewModelImpl.js';\nimport { OutgoingViewModelEventKind } from '../../../common/viewModelEventDispatcher.js';\nimport * as nls from '../../../../nls.js';\nimport { IAccessibilityService } from '../../../../platform/accessibility/common/accessibility.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { ContextKeyValue, IContextKey, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService, ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection.js';\nimport { INotificationService, Severity } from '../../../../platform/notification/common/notification.js';\nimport { editorErrorForeground, editorHintForeground, editorInfoForeground, editorWarningForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { IThemeService, registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { TextModelEditSource, EditSources } from '../../../common/textModelEditSource.js';\nimport { TextEdit } from '../../../common/core/edits/textEdit.js';\nimport { isObject } from '../../../../base/common/types.js';\n\nexport class CodeEditorWidget extends Disposable implements editorBrowser.ICodeEditor {\n\n\tprivate static readonly dropIntoEditorDecorationOptions = ModelDecorationOptions.register({\n\t\tdescription: 'workbench-dnd-target',\n\t\tclassName: 'dnd-target'\n\t});\n\n\t//#region Eventing\n\n\tprivate readonly _deliveryQueue = createEventDeliveryQueue();\n\tprotected readonly _contributions: CodeEditorContributions = this._register(new CodeEditorContributions());\n\n\tprivate readonly _onDidDispose: Emitter<void> = this._register(new Emitter<void>());\n\tpublic readonly onDidDispose: Event<void> = this._onDidDispose.event;\n\n\tprivate readonly _onDidChangeModelContent: Emitter<IModelContentChangedEvent> = this._register(new Emitter<IModelContentChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelContent: Event<IModelContentChangedEvent> = this._onDidChangeModelContent.event;\n\n\tprivate readonly _onDidChangeModelLanguage: Emitter<IModelLanguageChangedEvent> = this._register(new Emitter<IModelLanguageChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelLanguage: Event<IModelLanguageChangedEvent> = this._onDidChangeModelLanguage.event;\n\n\tprivate readonly _onDidChangeModelLanguageConfiguration: Emitter<IModelLanguageConfigurationChangedEvent> = this._register(new Emitter<IModelLanguageConfigurationChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelLanguageConfiguration: Event<IModelLanguageConfigurationChangedEvent> = this._onDidChangeModelLanguageConfiguration.event;\n\n\tprivate readonly _onDidChangeModelOptions: Emitter<IModelOptionsChangedEvent> = this._register(new Emitter<IModelOptionsChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelOptions: Event<IModelOptionsChangedEvent> = this._onDidChangeModelOptions.event;\n\n\tprivate readonly _onDidChangeModelDecorations: Emitter<IModelDecorationsChangedEvent> = this._register(new Emitter<IModelDecorationsChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelDecorations: Event<IModelDecorationsChangedEvent> = this._onDidChangeModelDecorations.event;\n\n\tprivate readonly _onDidChangeLineHeight: Emitter<ModelLineHeightChangedEvent> = this._register(new Emitter<ModelLineHeightChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeLineHeight: Event<ModelLineHeightChangedEvent> = this._onDidChangeLineHeight.event;\n\n\tprivate readonly _onDidChangeFont: Emitter<ModelFontChangedEvent> = this._register(new Emitter<ModelFontChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeFont: Event<ModelFontChangedEvent> = this._onDidChangeFont.event;\n\n\tprivate readonly _onDidChangeModelTokens: Emitter<IModelTokensChangedEvent> = this._register(new Emitter<IModelTokensChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelTokens: Event<IModelTokensChangedEvent> = this._onDidChangeModelTokens.event;\n\n\tprivate readonly _onDidChangeConfiguration: Emitter<ConfigurationChangedEvent> = this._register(new Emitter<ConfigurationChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeConfiguration: Event<ConfigurationChangedEvent> = this._onDidChangeConfiguration.event;\n\n\tprotected readonly _onWillChangeModel: Emitter<editorCommon.IModelChangedEvent> = this._register(new Emitter<editorCommon.IModelChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onWillChangeModel: Event<editorCommon.IModelChangedEvent> = this._onWillChangeModel.event;\n\n\tprotected readonly _onDidChangeModel: Emitter<editorCommon.IModelChangedEvent> = this._register(new Emitter<editorCommon.IModelChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModel: Event<editorCommon.IModelChangedEvent> = this._onDidChangeModel.event;\n\n\tprivate readonly _onDidChangeCursorPosition: Emitter<ICursorPositionChangedEvent> = this._register(new Emitter<ICursorPositionChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeCursorPosition: Event<ICursorPositionChangedEvent> = this._onDidChangeCursorPosition.event;\n\n\tprivate readonly _onDidChangeCursorSelection: Emitter<ICursorSelectionChangedEvent> = this._register(new Emitter<ICursorSelectionChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeCursorSelection: Event<ICursorSelectionChangedEvent> = this._onDidChangeCursorSelection.event;\n\n\tprivate readonly _onDidAttemptReadOnlyEdit: Emitter<void> = this._register(new InteractionEmitter<void>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidAttemptReadOnlyEdit: Event<void> = this._onDidAttemptReadOnlyEdit.event;\n\n\tprivate readonly _onDidLayoutChange: Emitter<EditorLayoutInfo> = this._register(new Emitter<EditorLayoutInfo>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidLayoutChange: Event<EditorLayoutInfo> = this._onDidLayoutChange.event;\n\n\tprivate readonly _editorTextFocus: BooleanEventEmitter = this._register(new BooleanEventEmitter({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidFocusEditorText: Event<void> = this._editorTextFocus.onDidChangeToTrue;\n\tpublic readonly onDidBlurEditorText: Event<void> = this._editorTextFocus.onDidChangeToFalse;\n\n\tprivate readonly _editorWidgetFocus: BooleanEventEmitter = this._register(new BooleanEventEmitter({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidFocusEditorWidget: Event<void> = this._editorWidgetFocus.onDidChangeToTrue;\n\tpublic readonly onDidBlurEditorWidget: Event<void> = this._editorWidgetFocus.onDidChangeToFalse;\n\n\tprivate readonly _onWillType: Emitter<string> = this._register(new InteractionEmitter<string>(this._contributions, this._deliveryQueue));\n\tpublic readonly onWillType = this._onWillType.event;\n\n\tprivate readonly _onDidType: Emitter<string> = this._register(new InteractionEmitter<string>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidType = this._onDidType.event;\n\n\tprivate readonly _onDidCompositionStart: Emitter<void> = this._register(new InteractionEmitter<void>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidCompositionStart = this._onDidCompositionStart.event;\n\n\tprivate readonly _onDidCompositionEnd: Emitter<void> = this._register(new InteractionEmitter<void>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidCompositionEnd = this._onDidCompositionEnd.event;\n\n\tprivate readonly _onDidPaste: Emitter<editorBrowser.IPasteEvent> = this._register(new InteractionEmitter<editorBrowser.IPasteEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidPaste = this._onDidPaste.event;\n\n\tprivate readonly _onMouseUp: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseUp: Event<editorBrowser.IEditorMouseEvent> = this._onMouseUp.event;\n\n\tprivate readonly _onMouseDown: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseDown: Event<editorBrowser.IEditorMouseEvent> = this._onMouseDown.event;\n\n\tprivate readonly _onMouseDrag: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseDrag: Event<editorBrowser.IEditorMouseEvent> = this._onMouseDrag.event;\n\n\tprivate readonly _onMouseDrop: Emitter<editorBrowser.IPartialEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IPartialEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseDrop: Event<editorBrowser.IPartialEditorMouseEvent> = this._onMouseDrop.event;\n\n\tprivate readonly _onMouseDropCanceled: Emitter<void> = this._register(new InteractionEmitter<void>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseDropCanceled: Event<void> = this._onMouseDropCanceled.event;\n\n\tprivate readonly _onDropIntoEditor = this._register(new InteractionEmitter<{ readonly position: IPosition; readonly event: DragEvent }>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDropIntoEditor = this._onDropIntoEditor.event;\n\n\tprivate readonly _onContextMenu: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onContextMenu: Event<editorBrowser.IEditorMouseEvent> = this._onContextMenu.event;\n\n\tprivate readonly _onMouseMove: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseMove: Event<editorBrowser.IEditorMouseEvent> = this._onMouseMove.event;\n\n\tprivate readonly _onMouseLeave: Emitter<editorBrowser.IPartialEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IPartialEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseLeave: Event<editorBrowser.IPartialEditorMouseEvent> = this._onMouseLeave.event;\n\n\tprivate readonly _onMouseWheel: Emitter<IMouseWheelEvent> = this._register(new InteractionEmitter<IMouseWheelEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseWheel: Event<IMouseWheelEvent> = this._onMouseWheel.event;\n\n\tprivate readonly _onKeyUp: Emitter<IKeyboardEvent> = this._register(new InteractionEmitter<IKeyboardEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onKeyUp: Event<IKeyboardEvent> = this._onKeyUp.event;\n\n\tprivate readonly _onKeyDown: Emitter<IKeyboardEvent> = this._register(new InteractionEmitter<IKeyboardEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onKeyDown: Event<IKeyboardEvent> = this._onKeyDown.event;\n\n\tprivate readonly _onDidContentSizeChange: Emitter<editorCommon.IContentSizeChangedEvent> = this._register(new Emitter<editorCommon.IContentSizeChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidContentSizeChange: Event<editorCommon.IContentSizeChangedEvent> = this._onDidContentSizeChange.event;\n\n\tprivate readonly _onDidScrollChange: Emitter<editorCommon.IScrollEvent> = this._register(new Emitter<editorCommon.IScrollEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidScrollChange: Event<editorCommon.IScrollEvent> = this._onDidScrollChange.event;\n\n\tprivate readonly _onDidChangeViewZones: Emitter<void> = this._register(new Emitter<void>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeViewZones: Event<void> = this._onDidChangeViewZones.event;\n\n\tprivate readonly _onDidChangeHiddenAreas: Emitter<void> = this._register(new Emitter<void>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeHiddenAreas: Event<void> = this._onDidChangeHiddenAreas.event;\n\n\tprivate _updateCounter = 0;\n\n\tprivate readonly _onWillTriggerEditorOperationEvent: Emitter<editorCommon.ITriggerEditorOperationEvent> = this._register(new Emitter<editorCommon.ITriggerEditorOperationEvent>());\n\n\tprivate readonly _onBeginUpdate: Emitter<void> = this._register(new Emitter<void>());\n\tpublic readonly onBeginUpdate: Event<void> = this._onBeginUpdate.event;\n\n\tprivate readonly _onEndUpdate: Emitter<void> = this._register(new Emitter<void>());\n\tpublic readonly onEndUpdate: Event<void> = this._onEndUpdate.event;\n\n\tprivate readonly _onBeforeExecuteEdit = this._register(new Emitter<{ source: string | undefined }>());\n\tpublic readonly onBeforeExecuteEdit = this._onBeforeExecuteEdit.event;\n\n\t//#endregion\n\n\tpublic get isSimpleWidget(): boolean {\n\t\treturn this._configuration.isSimpleWidget;\n\t}\n\n\tpublic get contextMenuId(): MenuId {\n\t\treturn this._configuration.contextMenuId;\n\t}\n\n\tprivate readonly _telemetryData?: object;\n\n\tprivate readonly _domElement: HTMLElement;\n\tprivate readonly _overflowWidgetsDomNode: HTMLElement | undefined;\n\tprivate readonly _id: number;\n\tprivate readonly _configuration: IEditorConfiguration;\n\tprivate _contributionsDisposable: IDisposable | undefined;\n\n\tprotected readonly _actions = new Map<string, editorCommon.IEditorAction>();\n\n\t// --- Members logically associated to a model\n\tprotected _modelData: ModelData | null;\n\n\tprotected readonly _instantiationService: IInstantiationService;\n\tprotected readonly _contextKeyService: IContextKeyService;\n\tget contextKeyService() { return this._contextKeyService; }\n\tprivate readonly _notificationService: INotificationService;\n\tprotected readonly _codeEditorService: ICodeEditorService;\n\tprivate readonly _commandService: ICommandService;\n\tprivate readonly _themeService: IThemeService;\n\n\tprivate _contentWidgets: { [key: string]: IContentWidgetData };\n\tprivate _overlayWidgets: { [key: string]: IOverlayWidgetData };\n\tprivate _glyphMarginWidgets: { [key: string]: IGlyphMarginWidgetData };\n\n\t/**\n\t * map from \"parent\" decoration type to live decoration ids.\n\t */\n\tprivate _decorationTypeKeysToIds: { [decorationTypeKey: string]: string[] };\n\tprivate _decorationTypeSubtypes: { [decorationTypeKey: string]: { [subtype: string]: boolean } };\n\n\tprivate _bannerDomNode: HTMLElement | null = null;\n\n\tprivate _dropIntoEditorDecorations: EditorDecorationsCollection = this.createDecorationsCollection();\n\n\tpublic inComposition: boolean = false;\n\n\tconstructor(\n\t\tdomElement: HTMLElement,\n\t\t_options: Readonly<IEditorConstructionOptions>,\n\t\tcodeEditorWidgetOptions: ICodeEditorWidgetOptions,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t\t@ICodeEditorService codeEditorService: ICodeEditorService,\n\t\t@ICommandService commandService: ICommandService,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@IThemeService themeService: IThemeService,\n\t\t@INotificationService notificationService: INotificationService,\n\t\t@IAccessibilityService accessibilityService: IAccessibilityService,\n\t\t@ILanguageConfigurationService private readonly languageConfigurationService: ILanguageConfigurationService,\n\t\t@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,\n\t) {\n\t\tsuper();\n\t\tcodeEditorService.willCreateCodeEditor();\n\n\t\tconst options = { ..._options };\n\n\t\tthis._domElement = domElement;\n\t\tthis._overflowWidgetsDomNode = options.overflowWidgetsDomNode;\n\t\tdelete options.overflowWidgetsDomNode;\n\t\tthis._id = (++EDITOR_ID);\n\t\tthis._decorationTypeKeysToIds = {};\n\t\tthis._decorationTypeSubtypes = {};\n\t\tthis._telemetryData = codeEditorWidgetOptions.telemetryData;\n\n\t\tthis._configuration = this._register(this._createConfiguration(codeEditorWidgetOptions.isSimpleWidget || false,\n\t\t\tcodeEditorWidgetOptions.contextMenuId ?? (codeEditorWidgetOptions.isSimpleWidget ? MenuId.SimpleEditorContext : MenuId.EditorContext),\n\t\t\toptions, accessibilityService));\n\t\tthis._register(this._configuration.onDidChange((e) => {\n\t\t\tthis._onDidChangeConfiguration.fire(e);\n\n\t\t\tconst options = this._configuration.options;\n\t\t\tif (e.hasChanged(EditorOption.layoutInfo)) {\n\t\t\t\tconst layoutInfo = options.get(EditorOption.layoutInfo);\n\t\t\t\tthis._onDidLayoutChange.fire(layoutInfo);\n\t\t\t}\n\t\t}));\n\n\t\tthis._contextKeyService = this._register(contextKeyService.createScoped(this._domElement));\n\t\tif (codeEditorWidgetOptions.contextKeyValues) {\n\t\t\tfor (const [key, value] of Object.entries(codeEditorWidgetOptions.contextKeyValues)) {\n\t\t\t\tthis._contextKeyService.createKey(key, value);\n\t\t\t}\n\t\t}\n\t\tthis._notificationService = notificationService;\n\t\tthis._codeEditorService = codeEditorService;\n\t\tthis._commandService = commandService;\n\t\tthis._themeService = themeService;\n\t\tthis._register(new EditorContextKeysManager(this, this._contextKeyService));\n\t\tthis._register(new EditorModeContext(this, this._contextKeyService, languageFeaturesService));\n\n\t\tthis._instantiationService = this._register(instantiationService.createChild(new ServiceCollection([IContextKeyService, this._contextKeyService])));\n\n\t\tthis._modelData = null;\n\n\t\tthis._contentWidgets = {};\n\t\tthis._overlayWidgets = {};\n\t\tthis._glyphMarginWidgets = {};\n\n\t\tlet contributions: IEditorContributionDescription[];\n\t\tif (Array.isArray(codeEditorWidgetOptions.contributions)) {\n\t\t\tcontributions = codeEditorWidgetOptions.contributions;\n\t\t} else {\n\t\t\tcontributions = EditorExtensionsRegistry.getEditorContributions();\n\t\t}\n\t\tthis._contributions.initialize(this, contributions, this._instantiationService);\n\n\t\tfor (const action of EditorExtensionsRegistry.getEditorActions()) {\n\t\t\tif (this._actions.has(action.id)) {\n\t\t\t\tonUnexpectedError(new Error(`Cannot have two actions with the same id ${action.id}`));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst internalAction = new InternalEditorAction(\n\t\t\t\taction.id,\n\t\t\t\taction.label,\n\t\t\t\taction.alias,\n\t\t\t\taction.metadata,\n\t\t\t\taction.precondition ?? undefined,\n\t\t\t\t(args: unknown): Promise<void> => {\n\t\t\t\t\treturn this._instantiationService.invokeFunction((accessor) => {\n\t\t\t\t\t\treturn Promise.resolve(action.runEditorCommand(accessor, this, args));\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tthis._contextKeyService\n\t\t\t);\n\t\t\tthis._actions.set(internalAction.id, internalAction);\n\t\t}\n\n\t\tconst isDropIntoEnabled = () => {\n\t\t\treturn !this._configuration.options.get(EditorOption.readOnly)\n\t\t\t\t&& this._configuration.options.get(EditorOption.dropIntoEditor).enabled;\n\t\t};\n\n\t\tthis._register(new dom.DragAndDropObserver(this._domElement, {\n\t\t\tonDragOver: e => {\n\t\t\t\tif (!isDropIntoEnabled()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst target = this.getTargetAtClientPoint(e.clientX, e.clientY);\n\t\t\t\tif (target?.position) {\n\t\t\t\t\tthis.showDropIndicatorAt(target.position);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDrop: async e => {\n\t\t\t\tif (!isDropIntoEnabled()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.removeDropIndicator();\n\n\t\t\t\tif (!e.dataTransfer) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst target = this.getTargetAtClientPoint(e.clientX, e.clientY);\n\t\t\t\tif (target?.position) {\n\t\t\t\t\tthis._onDropIntoEditor.fire({ position: target.position, event: e });\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDragLeave: () => {\n\t\t\t\tthis.removeDropIndicator();\n\t\t\t},\n\t\t\tonDragEnd: () => {\n\t\t\t\tthis.removeDropIndicator();\n\t\t\t},\n\t\t}));\n\n\t\tthis._codeEditorService.addCodeEditor(this);\n\t}\n\n\tpublic writeScreenReaderContent(reason: string): void {\n\t\tthis._modelData?.view.writeScreenReaderContent(reason);\n\t}\n\n\tprotected _createConfiguration(isSimpleWidget: boolean, contextMenuId: MenuId, options: Readonly<IEditorConstructionOptions>, accessibilityService: IAccessibilityService): EditorConfiguration {\n\t\treturn new EditorConfiguration(isSimpleWidget, contextMenuId, options, this._domElement, accessibilityService);\n\t}\n\n\tpublic getId(): string {\n\t\treturn this.getEditorType() + ':' + this._id;\n\t}\n\n\tpublic getEditorType(): string {\n\t\treturn editorCommon.EditorType.ICodeEditor;\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._codeEditorService.removeCodeEditor(this);\n\n\t\tthis._actions.clear();\n\t\tthis._contentWidgets = {};\n\t\tthis._overlayWidgets = {};\n\n\t\tthis._removeDecorationTypes();\n\t\tthis._postDetachModelCleanup(this._detachModel());\n\n\t\tthis._onDidDispose.fire();\n\n\t\tsuper.dispose();\n\t}\n\n\tpublic invokeWithinContext<T>(fn: (accessor: ServicesAccessor) => T): T {\n\t\treturn this._instantiationService.invokeFunction(fn);\n\t}\n\n\tpublic updateOptions(newOptions: Readonly<IEditorOptions> | undefined): void {\n\t\tthis._configuration.updateOptions(newOptions || {});\n\t}\n\n\tpublic getOptions(): IComputedEditorOptions {\n\t\treturn this._configuration.options;\n\t}\n\n\tpublic getOption<T extends EditorOption>(id: T): FindComputedEditorOptionValueById<T> {\n\t\treturn this._configuration.options.get(id);\n\t}\n\n\tpublic getRawOptions(): IEditorOptions {\n\t\treturn this._configuration.getRawOptions();\n\t}\n\n\tpublic getOverflowWidgetsDomNode(): HTMLElement | undefined {\n\t\treturn this._overflowWidgetsDomNode;\n\t}\n\n\tpublic getConfiguredWordAtPosition(position: Position): IWordAtPosition | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn WordOperations.getWordAtPosition(this._modelData.model, this._configuration.options.get(EditorOption.wordSeparators), this._configuration.options.get(EditorOption.wordSegmenterLocales), position);\n\t}\n\n\tpublic getValue(options: { preserveBOM: boolean; lineEnding: string } | null = null): string {\n\t\tif (!this._modelData) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst preserveBOM: boolean = (options && options.preserveBOM) ? true : false;\n\t\tlet eolPreference = EndOfLinePreference.TextDefined;\n\t\tif (options && options.lineEnding && options.lineEnding === '\\n') {\n\t\t\teolPreference = EndOfLinePreference.LF;\n\t\t} else if (options && options.lineEnding && options.lineEnding === '\\r\\n') {\n\t\t\teolPreference = EndOfLinePreference.CRLF;\n\t\t}\n\t\treturn this._modelData.model.getValue(eolPreference, preserveBOM);\n\t}\n\n\tpublic setValue(newValue: string): void {\n\t\ttry {\n\t\t\tthis._beginUpdate();\n\t\t\tif (!this._modelData) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._modelData.model.setValue(newValue);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tpublic getModel(): ITextModel | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.model;\n\t}\n\n\tpublic setModel(_model: ITextModel | editorCommon.IDiffEditorModel | editorCommon.IDiffEditorViewModel | null = null): void {\n\t\ttry {\n\t\t\tthis._beginUpdate();\n\t\t\tconst model = <ITextModel | null>_model;\n\t\t\tif (this._modelData === null && model === null) {\n\t\t\t\t// Current model is the new model\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this._modelData && this._modelData.model === model) {\n\t\t\t\t// Current model is the new model\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst e: editorCommon.IModelChangedEvent = {\n\t\t\t\toldModelUrl: this._modelData?.model.uri || null,\n\t\t\t\tnewModelUrl: model?.uri || null\n\t\t\t};\n\t\t\tthis._onWillChangeModel.fire(e);\n\n\t\t\tconst hasTextFocus = this.hasTextFocus();\n\t\t\tconst detachedModel = this._detachModel();\n\t\t\tthis._attachModel(model);\n\t\t\tif (this.hasModel()) {\n\t\t\t\t// we have a new model (with a new view)!\n\t\t\t\tif (hasTextFocus) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// we have no model (and no view) anymore\n\t\t\t\t// make sure the outside world knows we are not focused\n\t\t\t\tthis._editorTextFocus.setValue(false);\n\t\t\t\tthis._editorWidgetFocus.setValue(false);\n\t\t\t}\n\n\t\t\tthis._removeDecorationTypes();\n\t\t\tthis._onDidChangeModel.fire(e);\n\t\t\tthis._postDetachModelCleanup(detachedModel);\n\n\t\t\tthis._contributionsDisposable = this._contributions.onAfterModelAttached();\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate _removeDecorationTypes(): void {\n\t\tthis._decorationTypeKeysToIds = {};\n\t\tif (this._decorationTypeSubtypes) {\n\t\t\tfor (const decorationType in this._decorationTypeSubtypes) {\n\t\t\t\tconst subTypes = this._decorationTypeSubtypes[decorationType];\n\t\t\t\tfor (const subType in subTypes) {\n\t\t\t\t\tthis._removeDecorationType(decorationType + '-' + subType);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._decorationTypeSubtypes = {};\n\t\t}\n\t}\n\n\tpublic getVisibleRanges(): Range[] {\n\t\tif (!this._modelData) {\n\t\t\treturn [];\n\t\t}\n\t\treturn this._modelData.viewModel.getVisibleRanges();\n\t}\n\n\tpublic getVisibleRangesPlusViewportAboveBelow(): Range[] {\n\t\tif (!this._modelData) {\n\t\t\treturn [];\n\t\t}\n\t\treturn this._modelData.viewModel.getVisibleRangesPlusViewportAboveBelow();\n\t}\n\n\tpublic getWhitespaces(): IEditorWhitespace[] {\n\t\tif (!this._modelData) {\n\t\t\treturn [];\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getWhitespaces();\n\t}\n\n\tprivate static _getVerticalOffsetAfterPosition(modelData: ModelData, modelLineNumber: number, modelColumn: number, includeViewZones: boolean): number {\n\t\tconst modelPosition = modelData.model.validatePosition({\n\t\t\tlineNumber: modelLineNumber,\n\t\t\tcolumn: modelColumn\n\t\t});\n\t\tconst viewPosition = modelData.viewModel.coordinatesConverter.convertModelPositionToViewPosition(modelPosition);\n\t\treturn modelData.viewModel.viewLayout.getVerticalOffsetAfterLineNumber(viewPosition.lineNumber, includeViewZones);\n\t}\n\n\tpublic getTopForLineNumber(lineNumber: number, includeViewZones: boolean = false): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn CodeEditorWidget._getVerticalOffsetForPosition(this._modelData, lineNumber, 1, includeViewZones);\n\t}\n\n\tpublic getTopForPosition(lineNumber: number, column: number): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn CodeEditorWidget._getVerticalOffsetForPosition(this._modelData, lineNumber, column, false);\n\t}\n\n\tprivate static _getVerticalOffsetForPosition(modelData: ModelData, modelLineNumber: number, modelColumn: number, includeViewZones: boolean = false): number {\n\t\tconst modelPosition = modelData.model.validatePosition({\n\t\t\tlineNumber: modelLineNumber,\n\t\t\tcolumn: modelColumn\n\t\t});\n\t\tconst viewPosition = modelData.viewModel.coordinatesConverter.convertModelPositionToViewPosition(modelPosition);\n\t\treturn modelData.viewModel.viewLayout.getVerticalOffsetForLineNumber(viewPosition.lineNumber, includeViewZones);\n\t}\n\n\tpublic getBottomForLineNumber(lineNumber: number, includeViewZones: boolean = false): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn CodeEditorWidget._getVerticalOffsetAfterPosition(this._modelData, lineNumber, Number.MAX_SAFE_INTEGER, includeViewZones);\n\t}\n\n\tpublic getLineHeightForPosition(position: IPosition): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\tconst viewModel = this._modelData.viewModel;\n\t\tconst coordinatesConverter = viewModel.coordinatesConverter;\n\t\tconst pos = Position.lift(position);\n\t\tif (coordinatesConverter.modelPositionIsVisible(pos)) {\n\t\t\tconst viewPosition = coordinatesConverter.convertModelPositionToViewPosition(pos);\n\t\t\treturn viewModel.viewLayout.getLineHeightForLineNumber(viewPosition.lineNumber);\n\t\t}\n\t\treturn 0;\n\t}\n\n\tpublic setHiddenAreas(ranges: IRange[], source?: unknown, forceUpdate?: boolean): void {\n\t\tthis._modelData?.viewModel.setHiddenAreas(ranges.map(r => Range.lift(r)), source, forceUpdate);\n\t}\n\n\tpublic getVisibleColumnFromPosition(rawPosition: IPosition): number {\n\t\tif (!this._modelData) {\n\t\t\treturn rawPosition.column;\n\t\t}\n\n\t\tconst position = this._modelData.model.validatePosition(rawPosition);\n\t\tconst tabSize = this._modelData.model.getOptions().tabSize;\n\n\t\treturn CursorColumns.visibleColumnFromColumn(this._modelData.model.getLineContent(position.lineNumber), position.column, tabSize) + 1;\n\t}\n\n\tpublic getPosition(): Position | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel.getPosition();\n\t}\n\n\tpublic setPosition(position: IPosition, source: string = 'api'): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (!Position.isIPosition(position)) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tthis._modelData.viewModel.setSelections(source, [{\n\t\t\tselectionStartLineNumber: position.lineNumber,\n\t\t\tselectionStartColumn: position.column,\n\t\t\tpositionLineNumber: position.lineNumber,\n\t\t\tpositionColumn: position.column\n\t\t}]);\n\t}\n\n\tprivate _sendRevealRange(modelRange: Range, verticalType: VerticalRevealType, revealHorizontal: boolean, scrollType: editorCommon.ScrollType): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (!Range.isIRange(modelRange)) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tconst validatedModelRange = this._modelData.model.validateRange(modelRange);\n\t\tconst viewRange = this._modelData.viewModel.coordinatesConverter.convertModelRangeToViewRange(validatedModelRange);\n\n\t\tthis._modelData.viewModel.revealRange('api', revealHorizontal, viewRange, verticalType, scrollType);\n\t}\n\n\tpublic revealAllCursors(revealHorizontal: boolean, minimalReveal?: boolean): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.revealAllCursors('api', revealHorizontal, minimalReveal);\n\t}\n\n\tpublic revealLine(lineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLine(lineNumber, VerticalRevealType.Simple, scrollType);\n\t}\n\n\tpublic revealLineInCenter(lineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLine(lineNumber, VerticalRevealType.Center, scrollType);\n\t}\n\n\tpublic revealLineInCenterIfOutsideViewport(lineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLine(lineNumber, VerticalRevealType.CenterIfOutsideViewport, scrollType);\n\t}\n\n\tpublic revealLineNearTop(lineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLine(lineNumber, VerticalRevealType.NearTop, scrollType);\n\t}\n\n\tprivate _revealLine(lineNumber: number, revealType: VerticalRevealType, scrollType: editorCommon.ScrollType): void {\n\t\tif (typeof lineNumber !== 'number') {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tthis._sendRevealRange(\n\t\t\tnew Range(lineNumber, 1, lineNumber, 1),\n\t\t\trevealType,\n\t\t\tfalse,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealPosition(position: IPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealPosition(\n\t\t\tposition,\n\t\t\tVerticalRevealType.Simple,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealPositionInCenter(position: IPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealPosition(\n\t\t\tposition,\n\t\t\tVerticalRevealType.Center,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealPositionInCenterIfOutsideViewport(position: IPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealPosition(\n\t\t\tposition,\n\t\t\tVerticalRevealType.CenterIfOutsideViewport,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealPositionNearTop(position: IPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealPosition(\n\t\t\tposition,\n\t\t\tVerticalRevealType.NearTop,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tprivate _revealPosition(position: IPosition, verticalType: VerticalRevealType, revealHorizontal: boolean, scrollType: editorCommon.ScrollType): void {\n\t\tif (!Position.isIPosition(position)) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tthis._sendRevealRange(\n\t\t\tnew Range(position.lineNumber, position.column, position.lineNumber, position.column),\n\t\t\tverticalType,\n\t\t\trevealHorizontal,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic getSelection(): Selection | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel.getSelection();\n\t}\n\n\tpublic getSelections(): Selection[] | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel.getSelections();\n\t}\n\n\tpublic setSelection(range: IRange, source?: string): void;\n\tpublic setSelection(editorRange: Range, source?: string): void;\n\tpublic setSelection(selection: ISelection, source?: string): void;\n\tpublic setSelection(editorSelection: Selection, source?: string): void;\n\tpublic setSelection(something: unknown, source?: string): void;\n\tpublic setSelection(something: unknown, source: string = 'api'): void {\n\t\tconst isSelection = Selection.isISelection(something);\n\t\tconst isRange = Range.isIRange(something);\n\n\t\tif (!isSelection && !isRange) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tif (isSelection) {\n\t\t\tthis._setSelectionImpl(something, source);\n\t\t} else if (isRange) {\n\t\t\t// act as if it was an IRange\n\t\t\tconst selection: ISelection = {\n\t\t\t\tselectionStartLineNumber: something.startLineNumber,\n\t\t\t\tselectionStartColumn: something.startColumn,\n\t\t\t\tpositionLineNumber: something.endLineNumber,\n\t\t\t\tpositionColumn: something.endColumn\n\t\t\t};\n\t\t\tthis._setSelectionImpl(selection, source);\n\t\t}\n\t}\n\n\tprivate _setSelectionImpl(sel: ISelection, source: string): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tconst selection = new Selection(sel.selectionStartLineNumber, sel.selectionStartColumn, sel.positionLineNumber, sel.positionColumn);\n\t\tthis._modelData.viewModel.setSelections(source, [selection]);\n\t}\n\n\tpublic revealLines(startLineNumber: number, endLineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLines(\n\t\t\tstartLineNumber,\n\t\t\tendLineNumber,\n\t\t\tVerticalRevealType.Simple,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealLinesInCenter(startLineNumber: number, endLineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLines(\n\t\t\tstartLineNumber,\n\t\t\tendLineNumber,\n\t\t\tVerticalRevealType.Center,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealLinesInCenterIfOutsideViewport(startLineNumber: number, endLineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLines(\n\t\t\tstartLineNumber,\n\t\t\tendLineNumber,\n\t\t\tVerticalRevealType.CenterIfOutsideViewport,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealLinesNearTop(startLineNumber: number, endLineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLines(\n\t\t\tstartLineNumber,\n\t\t\tendLineNumber,\n\t\t\tVerticalRevealType.NearTop,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tprivate _revealLines(startLineNumber: number, endLineNumber: number, verticalType: VerticalRevealType, scrollType: editorCommon.ScrollType): void {\n\t\tif (typeof startLineNumber !== 'number' || typeof endLineNumber !== 'number') {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tthis._sendRevealRange(\n\t\t\tnew Range(startLineNumber, 1, endLineNumber, 1),\n\t\t\tverticalType,\n\t\t\tfalse,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRange(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth, revealVerticalInCenter: boolean = false, revealHorizontal: boolean = true): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\trevealVerticalInCenter ? VerticalRevealType.Center : VerticalRevealType.Simple,\n\t\t\trevealHorizontal,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeInCenter(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.Center,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeInCenterIfOutsideViewport(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.CenterIfOutsideViewport,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeNearTop(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.NearTop,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeNearTopIfOutsideViewport(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.NearTopIfOutsideViewport,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeAtTop(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.Top,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tprivate _revealRange(range: IRange, verticalType: VerticalRevealType, revealHorizontal: boolean, scrollType: editorCommon.ScrollType): void {\n\t\tif (!Range.isIRange(range)) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tthis._sendRevealRange(\n\t\t\tRange.lift(range),\n\t\t\tverticalType,\n\t\t\trevealHorizontal,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic setSelections(ranges: readonly ISelection[], source: string = 'api', reason = CursorChangeReason.NotSet): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (!ranges || ranges.length === 0) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tfor (let i = 0, len = ranges.length; i < len; i++) {\n\t\t\tif (!Selection.isISelection(ranges[i])) {\n\t\t\t\tthrow new Error('Invalid arguments');\n\t\t\t}\n\t\t}\n\t\tthis._modelData.viewModel.setSelections(source, ranges, reason);\n\t}\n\n\tpublic getContentWidth(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getContentWidth();\n\t}\n\n\tpublic getScrollWidth(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getScrollWidth();\n\t}\n\tpublic getScrollLeft(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getCurrentScrollLeft();\n\t}\n\n\tpublic getContentHeight(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getContentHeight();\n\t}\n\n\tpublic getScrollHeight(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getScrollHeight();\n\t}\n\tpublic getScrollTop(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getCurrentScrollTop();\n\t}\n\n\tpublic setScrollLeft(newScrollLeft: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Immediate): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof newScrollLeft !== 'number') {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tthis._modelData.viewModel.viewLayout.setScrollPosition({\n\t\t\tscrollLeft: newScrollLeft\n\t\t}, scrollType);\n\t}\n\tpublic setScrollTop(newScrollTop: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Immediate): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof newScrollTop !== 'number') {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tthis._modelData.viewModel.viewLayout.setScrollPosition({\n\t\t\tscrollTop: newScrollTop\n\t\t}, scrollType);\n\t}\n\tpublic setScrollPosition(position: editorCommon.INewScrollPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Immediate): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.viewLayout.setScrollPosition(position, scrollType);\n\t}\n\tpublic hasPendingScrollAnimation(): boolean {\n\t\tif (!this._modelData) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.hasPendingScrollAnimation();\n\t}\n\n\tpublic saveViewState(): editorCommon.ICodeEditorViewState | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\tconst contributionsState = this._contributions.saveViewState();\n\t\tconst cursorState = this._modelData.viewModel.saveCursorState();\n\t\tconst viewState = this._modelData.viewModel.saveState();\n\t\treturn {\n\t\t\tcursorState: cursorState,\n\t\t\tviewState: viewState,\n\t\t\tcontributionsState: contributionsState\n\t\t};\n\t}\n\n\tpublic restoreViewState(s: editorCommon.IEditorViewState | null): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tconst codeEditorState = s as editorCommon.ICodeEditorViewState | null;\n\t\tif (codeEditorState && codeEditorState.cursorState && codeEditorState.viewState) {\n\t\t\tconst cursorState = <unknown>codeEditorState.cursorState;\n\t\t\tif (Array.isArray(cursorState)) {\n\t\t\t\tif (cursorState.length > 0) {\n\t\t\t\t\tthis._modelData.viewModel.restoreCursorState(<editorCommon.ICursorState[]>cursorState);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Backwards compatibility\n\t\t\t\tthis._modelData.viewModel.restoreCursorState([<editorCommon.ICursorState>cursorState]);\n\t\t\t}\n\n\t\t\tthis._contributions.restoreViewState(codeEditorState.contributionsState || {});\n\t\t\tconst reducedState = this._modelData.viewModel.reduceRestoreState(codeEditorState.viewState);\n\t\t\tthis._modelData.view.restoreState(reducedState);\n\t\t}\n\t}\n\n\tpublic handleInitialized(): void {\n\t\tthis._getViewModel()?.visibleLinesStabilized();\n\t}\n\n\tpublic getContribution<T extends editorCommon.IEditorContribution>(id: string): T | null {\n\t\treturn this._contributions.get(id) as T | null;\n\t}\n\n\tpublic getActions(): editorCommon.IEditorAction[] {\n\t\treturn Array.from(this._actions.values());\n\t}\n\n\tpublic getSupportedActions(): editorCommon.IEditorAction[] {\n\t\tlet result = this.getActions();\n\n\t\tresult = result.filter(action => action.isSupported());\n\n\t\treturn result;\n\t}\n\n\tpublic getAction(id: string): editorCommon.IEditorAction | null {\n\t\treturn this._actions.get(id) || null;\n\t}\n\n\tpublic trigger(source: string | null | undefined, handlerId: string, payload: unknown): void {\n\t\tpayload = payload || {};\n\n\t\ttry {\n\t\t\tthis._onWillTriggerEditorOperationEvent.fire({ source: source, handlerId: handlerId, payload: payload });\n\t\t\tthis._beginUpdate();\n\n\t\t\tswitch (handlerId) {\n\t\t\t\tcase editorCommon.Handler.CompositionStart:\n\t\t\t\t\tthis._startComposition();\n\t\t\t\t\treturn;\n\t\t\t\tcase editorCommon.Handler.CompositionEnd:\n\t\t\t\t\tthis._endComposition(source);\n\t\t\t\t\treturn;\n\t\t\t\tcase editorCommon.Handler.Type: {\n\t\t\t\t\tconst args = <Partial<editorCommon.TypePayload>>payload;\n\t\t\t\t\tthis._type(source, args.text || '');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase editorCommon.Handler.ReplacePreviousChar: {\n\t\t\t\t\tconst args = <Partial<editorCommon.ReplacePreviousCharPayload>>payload;\n\t\t\t\t\tthis._compositionType(source, args.text || '', args.replaceCharCnt || 0, 0, 0);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase editorCommon.Handler.CompositionType: {\n\t\t\t\t\tconst args = <Partial<editorCommon.CompositionTypePayload>>payload;\n\t\t\t\t\tthis._compositionType(source, args.text || '', args.replacePrevCharCnt || 0, args.replaceNextCharCnt || 0, args.positionDelta || 0);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase editorCommon.Handler.Paste: {\n\t\t\t\t\tconst args = <Partial<editorBrowser.PastePayload>>payload;\n\t\t\t\t\tthis._paste(source, args.text || '', args.pasteOnNewLine || false, args.multicursorText || null, args.mode || null, args.clipboardEvent);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase editorCommon.Handler.Cut:\n\t\t\t\t\tthis._cut(source);\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst action = this.getAction(handlerId);\n\t\t\tif (action) {\n\t\t\t\tPromise.resolve(action.run(payload)).then(undefined, onUnexpectedError);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!this._modelData) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this._triggerEditorCommand(source, handlerId, payload)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._triggerCommand(handlerId, payload);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprotected _triggerCommand(handlerId: string, payload: unknown): void {\n\t\tthis._commandService.executeCommand(handlerId, payload);\n\t}\n\n\tprivate _startComposition(): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis.inComposition = true;\n\t\tthis._modelData.viewModel.startComposition();\n\t\tthis._onDidCompositionStart.fire();\n\t}\n\n\tprivate _endComposition(source: string | null | undefined): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis.inComposition = false;\n\t\tthis._modelData.viewModel.endComposition(source);\n\t\tthis._onDidCompositionEnd.fire();\n\t}\n\n\tprivate _type(source: string | null | undefined, text: string): void {\n\t\tif (!this._modelData || text.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tif (source === 'keyboard') {\n\t\t\tthis._onWillType.fire(text);\n\t\t}\n\t\tthis._modelData.viewModel.type(text, source);\n\t\tif (source === 'keyboard') {\n\t\t\tthis._onDidType.fire(text);\n\t\t}\n\t}\n\n\tprivate _compositionType(source: string | null | undefined, text: string, replacePrevCharCnt: number, replaceNextCharCnt: number, positionDelta: number): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.compositionType(text, replacePrevCharCnt, replaceNextCharCnt, positionDelta, source);\n\t}\n\n\tprivate _paste(source: string | null | undefined, text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null, clipboardEvent?: ClipboardEvent): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tconst viewModel = this._modelData.viewModel;\n\t\tconst startPosition = viewModel.getSelection().getStartPosition();\n\t\tviewModel.paste(text, pasteOnNewLine, multicursorText, source);\n\t\tconst endPosition = viewModel.getSelection().getStartPosition();\n\t\tif (source === 'keyboard') {\n\t\t\tthis._onDidPaste.fire({\n\t\t\t\tclipboardEvent,\n\t\t\t\trange: new Range(startPosition.lineNumber, startPosition.column, endPosition.lineNumber, endPosition.column),\n\t\t\t\tlanguageId: mode\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _cut(source: string | null | undefined): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.cut(source);\n\t}\n\n\tprivate _triggerEditorCommand(source: string | null | undefined, handlerId: string, payload: unknown): boolean {\n\t\tconst command = EditorExtensionsRegistry.getEditorCommand(handlerId);\n\t\tif (command) {\n\t\t\tpayload = payload || {};\n\t\t\tif (isObject(payload)) {\n\t\t\t\t(payload as { source: string | null | undefined }).source = source;\n\t\t\t}\n\t\t\tthis._instantiationService.invokeFunction((accessor) => {\n\t\t\t\tPromise.resolve(command.runEditorCommand(accessor, this, payload)).then(undefined, onUnexpectedError);\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tpublic _getViewModel(): IViewModel | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel;\n\t}\n\n\tpublic pushUndoStop(): boolean {\n\t\tif (!this._modelData) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this._configuration.options.get(EditorOption.readOnly)) {\n\t\t\t// read only editor => sorry!\n\t\t\treturn false;\n\t\t}\n\t\tthis._modelData.model.pushStackElement();\n\t\treturn true;\n\t}\n\n\tpublic popUndoStop(): boolean {\n\t\tif (!this._modelData) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this._configuration.options.get(EditorOption.readOnly)) {\n\t\t\t// read only editor => sorry!\n\t\t\treturn false;\n\t\t}\n\t\tthis._modelData.model.popStackElement();\n\t\treturn true;\n\t}\n\n\tpublic edit(edit: TextEdit, reason: TextModelEditSource): boolean {\n\t\treturn this.executeEdits(reason, edit.replacements.map<IIdentifiedSingleEditOperation>(e => ({ range: e.range, text: e.text })), undefined);\n\t}\n\n\tpublic executeEdits(source: string | null | undefined | TextModelEditSource, edits: IIdentifiedSingleEditOperation[], endCursorState?: ICursorStateComputer | Selection[]): boolean {\n\t\tif (!this._modelData) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this._configuration.options.get(EditorOption.readOnly)) {\n\t\t\t// read only editor => sorry!\n\t\t\treturn false;\n\t\t}\n\n\t\tlet cursorStateComputer: ICursorStateComputer;\n\t\tif (!endCursorState) {\n\t\t\tcursorStateComputer = () => null;\n\t\t} else if (Array.isArray(endCursorState)) {\n\t\t\tcursorStateComputer = () => endCursorState;\n\t\t} else {\n\t\t\tcursorStateComputer = endCursorState;\n\t\t}\n\n\t\tlet sourceStr: string | undefined | null;\n\t\tlet reason: TextModelEditSource;\n\n\t\tif (source instanceof TextModelEditSource) {\n\t\t\treason = source;\n\t\t\tsourceStr = source.metadata.source;\n\t\t} else {\n\t\t\treason = EditSources.unknown({ name: sourceStr });\n\t\t\tsourceStr = source;\n\t\t}\n\n\t\tthis._onBeforeExecuteEdit.fire({ source: sourceStr ?? undefined });\n\t\tthis._modelData.viewModel.executeEdits(sourceStr, edits, cursorStateComputer, reason);\n\t\treturn true;\n\t}\n\n\tpublic executeCommand(source: string | null | undefined, command: editorCommon.ICommand): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.executeCommand(command, source);\n\t}\n\n\tpublic executeCommands(source: string | null | undefined, commands: editorCommon.ICommand[]): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.executeCommands(commands, source);\n\t}\n\n\tpublic createDecorationsCollection(decorations?: IModelDeltaDecoration[]): EditorDecorationsCollection {\n\t\treturn new EditorDecorationsCollection(this, decorations);\n\t}\n\n\tpublic changeDecorations<T>(callback: (changeAccessor: IModelDecorationsChangeAccessor) => T): T | null {\n\t\tif (!this._modelData) {\n\t\t\t// callback will not be called\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.model.changeDecorations(callback, this._id);\n\t}\n\n\tpublic getLineDecorations(lineNumber: number): IModelDecoration[] | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\tconst options = this._configuration.options;\n\t\treturn this._modelData.model.getLineDecorations(lineNumber, this._id, filterValidationDecorations(options), filterFontDecorations(options));\n\t}\n\n\tpublic getDecorationsInRange(range: Range): IModelDecoration[] | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\tconst options = this._configuration.options;\n\t\treturn this._modelData.model.getDecorationsInRange(range, this._id, filterValidationDecorations(options), filterFontDecorations(options));\n\t}\n\n\tpublic getFontSizeAtPosition(position: IPosition): string | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel.getFontSizeAtPosition(position);\n\t}\n\n\t/**\n\t * @deprecated\n\t */\n\tpublic deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[]): string[] {\n\t\tif (!this._modelData) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif (oldDecorations.length === 0 && newDecorations.length === 0) {\n\t\t\treturn oldDecorations;\n\t\t}\n\n\t\treturn this._modelData.model.deltaDecorations(oldDecorations, newDecorations, this._id);\n\t}\n\n\tpublic removeDecorations(decorationIds: string[]): void {\n\t\tif (!this._modelData || decorationIds.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._modelData.model.changeDecorations((changeAccessor) => {\n\t\t\tchangeAccessor.deltaDecorations(decorationIds, []);\n\t\t});\n\t}\n\n\tpublic removeDecorationsByType(decorationTypeKey: string): void {\n\t\t// remove decorations for type and sub type\n\t\tconst oldDecorationsIds = this._decorationTypeKeysToIds[decorationTypeKey];\n\t\tif (oldDecorationsIds) {\n\t\t\tthis.changeDecorations(accessor => accessor.deltaDecorations(oldDecorationsIds, []));\n\t\t}\n\t\tif (this._decorationTypeKeysToIds.hasOwnProperty(decorationTypeKey)) {\n\t\t\tdelete this._decorationTypeKeysToIds[decorationTypeKey];\n\t\t}\n\t\tif (this._decorationTypeSubtypes.hasOwnProperty(decorationTypeKey)) {\n\t\t\tconst items = this._decorationTypeSubtypes[decorationTypeKey];\n\t\t\tfor (const subType of Object.keys(items)) {\n\t\t\t\tthis._removeDecorationType(decorationTypeKey + '-' + subType);\n\t\t\t}\n\t\t\tdelete this._decorationTypeSubtypes[decorationTypeKey];\n\n\t\t}\n\t}\n\n\tpublic getLayoutInfo(): EditorLayoutInfo {\n\t\tconst options = this._configuration.options;\n\t\tconst layoutInfo = options.get(EditorOption.layoutInfo);\n\t\treturn layoutInfo;\n\t}\n\n\tpublic createOverviewRuler(cssClassName: string): editorBrowser.IOverviewRuler | null {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.view.createOverviewRuler(cssClassName);\n\t}\n\n\tpublic getContainerDomNode(): HTMLElement {\n\t\treturn this._domElement;\n\t}\n\n\tpublic getDomNode(): HTMLElement | null {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.view.domNode.domNode;\n\t}\n\n\tpublic delegateVerticalScrollbarPointerDown(browserEvent: PointerEvent): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.delegateVerticalScrollbarPointerDown(browserEvent);\n\t}\n\n\tpublic delegateScrollFromMouseWheelEvent(browserEvent: IMouseWheelEvent) {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.delegateScrollFromMouseWheelEvent(browserEvent);\n\t}\n\n\tpublic layout(dimension?: IDimension, postponeRendering: boolean = false): void {\n\t\tthis._configuration.observeContainer(dimension);\n\t\tif (!postponeRendering) {\n\t\t\tthis.render();\n\t\t}\n\t}\n\n\tpublic focus(): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.focus();\n\t}\n\n\tpublic hasTextFocus(): boolean {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._modelData.view.isFocused();\n\t}\n\n\tpublic hasWidgetFocus(): boolean {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._modelData.view.isWidgetFocused();\n\t}\n\n\tpublic addContentWidget(widget: editorBrowser.IContentWidget): void {\n\t\tconst widgetData: IContentWidgetData = {\n\t\t\twidget: widget,\n\t\t\tposition: widget.getPosition()\n\t\t};\n\n\t\tif (this._contentWidgets.hasOwnProperty(widget.getId())) {\n\t\t\tconsole.warn('Overwriting a content widget with the same id:' + widget.getId());\n\t\t}\n\n\t\tthis._contentWidgets[widget.getId()] = widgetData;\n\n\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\tthis._modelData.view.addContentWidget(widgetData);\n\t\t}\n\t}\n\n\tpublic layoutContentWidget(widget: editorBrowser.IContentWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._contentWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._contentWidgets[widgetId];\n\t\t\twidgetData.position = widget.getPosition();\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.layoutContentWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic removeContentWidget(widget: editorBrowser.IContentWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._contentWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._contentWidgets[widgetId];\n\t\t\tdelete this._contentWidgets[widgetId];\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.removeContentWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic addOverlayWidget(widget: editorBrowser.IOverlayWidget): void {\n\t\tconst widgetData: IOverlayWidgetData = {\n\t\t\twidget: widget,\n\t\t\tposition: widget.getPosition()\n\t\t};\n\n\t\tif (this._overlayWidgets.hasOwnProperty(widget.getId())) {\n\t\t\tconsole.warn('Overwriting an overlay widget with the same id.');\n\t\t}\n\n\t\tthis._overlayWidgets[widget.getId()] = widgetData;\n\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\tthis._modelData.view.addOverlayWidget(widgetData);\n\t\t}\n\t}\n\n\tpublic layoutOverlayWidget(widget: editorBrowser.IOverlayWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._overlayWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._overlayWidgets[widgetId];\n\t\t\twidgetData.position = widget.getPosition();\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.layoutOverlayWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic removeOverlayWidget(widget: editorBrowser.IOverlayWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._overlayWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._overlayWidgets[widgetId];\n\t\t\tdelete this._overlayWidgets[widgetId];\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.removeOverlayWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic addGlyphMarginWidget(widget: editorBrowser.IGlyphMarginWidget): void {\n\t\tconst widgetData: IGlyphMarginWidgetData = {\n\t\t\twidget: widget,\n\t\t\tposition: widget.getPosition()\n\t\t};\n\n\t\tif (this._glyphMarginWidgets.hasOwnProperty(widget.getId())) {\n\t\t\tconsole.warn('Overwriting a glyph margin widget with the same id.');\n\t\t}\n\n\t\tthis._glyphMarginWidgets[widget.getId()] = widgetData;\n\n\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\tthis._modelData.view.addGlyphMarginWidget(widgetData);\n\t\t}\n\t}\n\n\tpublic layoutGlyphMarginWidget(widget: editorBrowser.IGlyphMarginWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._glyphMarginWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._glyphMarginWidgets[widgetId];\n\t\t\twidgetData.position = widget.getPosition();\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.layoutGlyphMarginWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic removeGlyphMarginWidget(widget: editorBrowser.IGlyphMarginWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._glyphMarginWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._glyphMarginWidgets[widgetId];\n\t\t\tdelete this._glyphMarginWidgets[widgetId];\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.removeGlyphMarginWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic changeViewZones(callback: (accessor: editorBrowser.IViewZoneChangeAccessor) => void): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.change(callback);\n\t}\n\n\tpublic getTargetAtClientPoint(clientX: number, clientY: number): editorBrowser.IMouseTarget | null {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.view.getTargetAtClientPoint(clientX, clientY);\n\t}\n\n\tpublic getScrolledVisiblePosition(rawPosition: IPosition): { top: number; left: number; height: number } | null {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst position = this._modelData.model.validatePosition(rawPosition);\n\t\tconst options = this._configuration.options;\n\t\tconst layoutInfo = options.get(EditorOption.layoutInfo);\n\n\t\tconst top = CodeEditorWidget._getVerticalOffsetForPosition(this._modelData, position.lineNumber, position.column) - this.getScrollTop();\n\t\tconst left = this._modelData.view.getOffsetForColumn(position.lineNumber, position.column) + layoutInfo.glyphMarginWidth + layoutInfo.lineNumbersWidth + layoutInfo.decorationsWidth - this.getScrollLeft();\n\t\tconst height = this.getLineHeightForPosition(position);\n\t\treturn {\n\t\t\ttop: top,\n\t\t\tleft: left,\n\t\t\theight\n\t\t};\n\t}\n\n\tpublic getOffsetForColumn(lineNumber: number, column: number): number {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.view.getOffsetForColumn(lineNumber, column);\n\t}\n\n\tpublic getWidthOfLine(lineNumber: number): number {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.view.getLineWidth(lineNumber);\n\t}\n\n\tpublic render(forceRedraw: boolean = false): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.batchEvents(() => {\n\t\t\tthis._modelData!.view.render(true, forceRedraw);\n\t\t});\n\t}\n\n\tpublic setAriaOptions(options: editorBrowser.IEditorAriaOptions): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.setAriaOptions(options);\n\t}\n\n\tpublic applyFontInfo(target: HTMLElement): void {\n\t\tapplyFontInfo(target, this._configuration.options.get(EditorOption.fontInfo));\n\t}\n\n\tpublic setBanner(domNode: HTMLElement | null, domNodeHeight: number): void {\n\t\tif (this._bannerDomNode && this._domElement.contains(this._bannerDomNode)) {\n\t\t\tthis._bannerDomNode.remove();\n\t\t}\n\n\t\tthis._bannerDomNode = domNode;\n\t\tthis._configuration.setReservedHeight(domNode ? domNodeHeight : 0);\n\n\t\tif (this._bannerDomNode) {\n\t\t\tthis._domElement.prepend(this._bannerDomNode);\n\t\t}\n\t}\n\n\tprotected _attachModel(model: ITextModel | null): void {\n\t\tif (!model) {\n\t\t\tthis._modelData = null;\n\t\t\treturn;\n\t\t}\n\n\t\tconst listenersToRemove: IDisposable[] = [];\n\n\t\tthis._domElement.setAttribute('data-mode-id', model.getLanguageId());\n\t\tthis._configuration.setIsDominatedByLongLines(model.isDominatedByLongLines());\n\t\tthis._configuration.setModelLineCount(model.getLineCount());\n\n\t\tconst attachedView = model.onBeforeAttached();\n\n\t\tconst viewModel = new ViewModel(\n\t\t\tthis._id,\n\t\t\tthis._configuration,\n\t\t\tmodel,\n\t\t\tDOMLineBreaksComputerFactory.create(dom.getWindow(this._domElement)),\n\t\t\tMonospaceLineBreaksComputerFactory.create(this._configuration.options),\n\t\t\t(callback) => dom.scheduleAtNextAnimationFrame(dom.getWindow(this._domElement), callback),\n\t\t\tthis.languageConfigurationService,\n\t\t\tthis._themeService,\n\t\t\tattachedView,\n\t\t\t{\n\t\t\t\tbatchChanges: (cb) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis._beginUpdate();\n\t\t\t\t\t\treturn cb();\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis._endUpdate();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\n\t\t// Someone might destroy the model from under the editor, so prevent any exceptions by setting a null model\n\t\tlistenersToRemove.push(model.onWillDispose(() => this.setModel(null)));\n\n\t\tlistenersToRemove.push(viewModel.onEvent((e) => {\n\t\t\tswitch (e.kind) {\n\t\t\t\tcase OutgoingViewModelEventKind.ContentSizeChanged:\n\t\t\t\t\tthis._onDidContentSizeChange.fire(e);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.FocusChanged:\n\t\t\t\t\tthis._editorTextFocus.setValue(e.hasFocus);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.WidgetFocusChanged:\n\t\t\t\t\tthis._editorWidgetFocus.setValue(e.hasFocus);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ScrollChanged:\n\t\t\t\t\tthis._onDidScrollChange.fire(e);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ViewZonesChanged:\n\t\t\t\t\tthis._onDidChangeViewZones.fire();\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.HiddenAreasChanged:\n\t\t\t\t\tthis._onDidChangeHiddenAreas.fire();\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ReadOnlyEditAttempt:\n\t\t\t\t\tthis._onDidAttemptReadOnlyEdit.fire();\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.CursorStateChanged: {\n\t\t\t\t\tif (e.reachedMaxCursorCount) {\n\n\t\t\t\t\t\tconst multiCursorLimit = this.getOption(EditorOption.multiCursorLimit);\n\t\t\t\t\t\tconst message = nls.localize('cursors.maximum', \"The number of cursors has been limited to {0}. Consider using [find and replace](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) for larger changes or increase the editor multi cursor limit setting.\", multiCursorLimit);\n\t\t\t\t\t\tthis._notificationService.prompt(Severity.Warning, message, [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: 'Find and Replace',\n\t\t\t\t\t\t\t\trun: () => {\n\t\t\t\t\t\t\t\t\tthis._commandService.executeCommand('editor.action.startFindReplaceAction');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: nls.localize('goToSetting', 'Increase Multi Cursor Limit'),\n\t\t\t\t\t\t\t\trun: () => {\n\t\t\t\t\t\t\t\t\tthis._commandService.executeCommand('workbench.action.openSettings2', {\n\t\t\t\t\t\t\t\t\t\tquery: 'editor.multiCursorLimit'\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst positions: Position[] = [];\n\t\t\t\t\tfor (let i = 0, len = e.selections.length; i < len; i++) {\n\t\t\t\t\t\tpositions[i] = e.selections[i].getPosition();\n\t\t\t\t\t}\n\n\t\t\t\t\tconst e1: ICursorPositionChangedEvent = {\n\t\t\t\t\t\tposition: positions[0],\n\t\t\t\t\t\tsecondaryPositions: positions.slice(1),\n\t\t\t\t\t\treason: e.reason,\n\t\t\t\t\t\tsource: e.source\n\t\t\t\t\t};\n\t\t\t\t\tthis._onDidChangeCursorPosition.fire(e1);\n\n\t\t\t\t\tconst e2: ICursorSelectionChangedEvent = {\n\t\t\t\t\t\tselection: e.selections[0],\n\t\t\t\t\t\tsecondarySelections: e.selections.slice(1),\n\t\t\t\t\t\tmodelVersionId: e.modelVersionId,\n\t\t\t\t\t\toldSelections: e.oldSelections,\n\t\t\t\t\t\toldModelVersionId: e.oldModelVersionId,\n\t\t\t\t\t\tsource: e.source,\n\t\t\t\t\t\treason: e.reason\n\t\t\t\t\t};\n\t\t\t\t\tthis._onDidChangeCursorSelection.fire(e2);\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase OutgoingViewModelEventKind.ModelDecorationsChanged:\n\t\t\t\t\tthis._onDidChangeModelDecorations.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelLanguageChanged:\n\t\t\t\t\tthis._domElement.setAttribute('data-mode-id', model.getLanguageId());\n\t\t\t\t\tthis._onDidChangeModelLanguage.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelLanguageConfigurationChanged:\n\t\t\t\t\tthis._onDidChangeModelLanguageConfiguration.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelContentChanged:\n\t\t\t\t\tthis._onDidChangeModelContent.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelOptionsChanged:\n\t\t\t\t\tthis._onDidChangeModelOptions.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelTokensChanged:\n\t\t\t\t\tthis._onDidChangeModelTokens.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelLineHeightChanged:\n\t\t\t\t\tthis._onDidChangeLineHeight.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelFontChangedEvent:\n\t\t\t\t\tthis._onDidChangeFont.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}));\n\n\t\tconst [view, hasRealView] = this._createView(viewModel);\n\t\tif (hasRealView) {\n\t\t\tthis._domElement.appendChild(view.domNode.domNode);\n\n\t\t\tlet keys = Object.keys(this._contentWidgets);\n\t\t\tfor (let i = 0, len = keys.length; i < len; i++) {\n\t\t\t\tconst widgetId = keys[i];\n\t\t\t\tview.addContentWidget(this._contentWidgets[widgetId]);\n\t\t\t}\n\n\t\t\tkeys = Object.keys(this._overlayWidgets);\n\t\t\tfor (let i = 0, len = keys.length; i < len; i++) {\n\t\t\t\tconst widgetId = keys[i];\n\t\t\t\tview.addOverlayWidget(this._overlayWidgets[widgetId]);\n\t\t\t}\n\n\t\t\tkeys = Object.keys(this._glyphMarginWidgets);\n\t\t\tfor (let i = 0, len = keys.length; i < len; i++) {\n\t\t\t\tconst widgetId = keys[i];\n\t\t\t\tview.addGlyphMarginWidget(this._glyphMarginWidgets[widgetId]);\n\t\t\t}\n\n\t\t\tview.render(false, true);\n\t\t\tview.domNode.domNode.setAttribute('data-uri', model.uri.toString());\n\t\t}\n\n\t\tthis._modelData = new ModelData(model, viewModel, view, hasRealView, listenersToRemove, attachedView);\n\t}\n\n\tprotected _createView(viewModel: ViewModel): [View, boolean] {\n\t\tlet commandDelegate: ICommandDelegate;\n\t\tif (this.isSimpleWidget) {\n\t\t\tcommandDelegate = {\n\t\t\t\tpaste: (text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null) => {\n\t\t\t\t\tthis._paste('keyboard', text, pasteOnNewLine, multicursorText, mode);\n\t\t\t\t},\n\t\t\t\ttype: (text: string) => {\n\t\t\t\t\tthis._type('keyboard', text);\n\t\t\t\t},\n\t\t\t\tcompositionType: (text: string, replacePrevCharCnt: number, replaceNextCharCnt: number, positionDelta: number) => {\n\t\t\t\t\tthis._compositionType('keyboard', text, replacePrevCharCnt, replaceNextCharCnt, positionDelta);\n\t\t\t\t},\n\t\t\t\tstartComposition: () => {\n\t\t\t\t\tthis._startComposition();\n\t\t\t\t},\n\t\t\t\tendComposition: () => {\n\t\t\t\t\tthis._endComposition('keyboard');\n\t\t\t\t},\n\t\t\t\tcut: () => {\n\t\t\t\t\tthis._cut('keyboard');\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\tcommandDelegate = {\n\t\t\t\tpaste: (text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null) => {\n\t\t\t\t\tconst payload: editorBrowser.PastePayload = { text, pasteOnNewLine, multicursorText, mode };\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.Paste, payload);\n\t\t\t\t},\n\t\t\t\ttype: (text: string) => {\n\t\t\t\t\tconst payload: editorCommon.TypePayload = { text };\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.Type, payload);\n\t\t\t\t},\n\t\t\t\tcompositionType: (text: string, replacePrevCharCnt: number, replaceNextCharCnt: number, positionDelta: number) => {\n\t\t\t\t\t// Try if possible to go through the existing `replacePreviousChar` command\n\t\t\t\t\tif (replaceNextCharCnt || positionDelta) {\n\t\t\t\t\t\t// must be handled through the new command\n\t\t\t\t\t\tconst payload: editorCommon.CompositionTypePayload = { text, replacePrevCharCnt, replaceNextCharCnt, positionDelta };\n\t\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.CompositionType, payload);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst payload: editorCommon.ReplacePreviousCharPayload = { text, replaceCharCnt: replacePrevCharCnt };\n\t\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.ReplacePreviousChar, payload);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tstartComposition: () => {\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.CompositionStart, {});\n\t\t\t\t},\n\t\t\t\tendComposition: () => {\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.CompositionEnd, {});\n\t\t\t\t},\n\t\t\t\tcut: () => {\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.Cut, {});\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tconst viewUserInputEvents = new ViewUserInputEvents(viewModel.coordinatesConverter);\n\t\tviewUserInputEvents.onKeyDown = (e) => this._onKeyDown.fire(e);\n\t\tviewUserInputEvents.onKeyUp = (e) => this._onKeyUp.fire(e);\n\t\tviewUserInputEvents.onContextMenu = (e) => this._onContextMenu.fire(e);\n\t\tviewUserInputEvents.onMouseMove = (e) => this._onMouseMove.fire(e);\n\t\tviewUserInputEvents.onMouseLeave = (e) => this._onMouseLeave.fire(e);\n\t\tviewUserInputEvents.onMouseDown = (e) => this._onMouseDown.fire(e);\n\t\tviewUserInputEvents.onMouseUp = (e) => this._onMouseUp.fire(e);\n\t\tviewUserInputEvents.onMouseDrag = (e) => this._onMouseDrag.fire(e);\n\t\tviewUserInputEvents.onMouseDrop = (e) => this._onMouseDrop.fire(e);\n\t\tviewUserInputEvents.onMouseDropCanceled = (e) => this._onMouseDropCanceled.fire(e);\n\t\tviewUserInputEvents.onMouseWheel = (e) => this._onMouseWheel.fire(e);\n\n\t\tconst view = new View(\n\t\t\tthis._domElement,\n\t\t\tthis.getId(),\n\t\t\tcommandDelegate,\n\t\t\tthis._configuration,\n\t\t\tthis._themeService.getColorTheme(),\n\t\t\tviewModel,\n\t\t\tviewUserInputEvents,\n\t\t\tthis._overflowWidgetsDomNode,\n\t\t\tthis._instantiationService\n\t\t);\n\n\t\treturn [view, true];\n\t}\n\n\tprotected _postDetachModelCleanup(detachedModel: ITextModel | null): void {\n\t\tdetachedModel?.removeAllDecorationsWithOwnerId(this._id);\n\t}\n\n\tprivate _detachModel(): ITextModel | null {\n\t\tthis._contributionsDisposable?.dispose();\n\t\tthis._contributionsDisposable = undefined;\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\tconst model = this._modelData.model;\n\t\tconst removeDomNode = this._modelData.hasRealView ? this._modelData.view.domNode.domNode : null;\n\n\t\tthis._modelData.dispose();\n\t\tthis._modelData = null;\n\n\t\tthis._domElement.removeAttribute('data-mode-id');\n\t\tif (removeDomNode && this._domElement.contains(removeDomNode)) {\n\t\t\tremoveDomNode.remove();\n\t\t}\n\t\tif (this._bannerDomNode && this._domElement.contains(this._bannerDomNode)) {\n\t\t\tthis._bannerDomNode.remove();\n\t\t}\n\t\treturn model;\n\t}\n\n\tprivate _removeDecorationType(key: string): void {\n\t\tthis._codeEditorService.removeDecorationType(key);\n\t}\n\n\tpublic hasModel(): this is editorBrowser.IActiveCodeEditor {\n\t\treturn (this._modelData !== null);\n\t}\n\n\tprivate showDropIndicatorAt(position: Position): void {\n\t\tconst newDecorations: IModelDeltaDecoration[] = [{\n\t\t\trange: new Range(position.lineNumber, position.column, position.lineNumber, position.column),\n\t\t\toptions: CodeEditorWidget.dropIntoEditorDecorationOptions\n\t\t}];\n\n\t\tthis._dropIntoEditorDecorations.set(newDecorations);\n\t\tthis.revealPosition(position, editorCommon.ScrollType.Immediate);\n\t}\n\n\tprivate removeDropIndicator(): void {\n\t\tthis._dropIntoEditorDecorations.clear();\n\t}\n\n\tprivate _beginUpdate(): void {\n\t\tthis._updateCounter++;\n\t\tif (this._updateCounter === 1) {\n\t\t\tthis._onBeginUpdate.fire();\n\t\t}\n\t}\n\n\tprivate _endUpdate(): void {\n\t\tthis._updateCounter--;\n\t\tif (this._updateCounter === 0) {\n\t\t\tthis._onEndUpdate.fire();\n\t\t}\n\t}\n}\n\nlet EDITOR_ID = 0;\n\nexport interface ICodeEditorWidgetOptions {\n\t/**\n\t * Is this a simple widget (not a real code editor)?\n\t * Defaults to false.\n\t */\n\tisSimpleWidget?: boolean;\n\n\t/**\n\t * Contributions to instantiate.\n\t * When provided, only the contributions included will be instantiated.\n\t * To include the defaults, those must be provided as well via [...EditorExtensionsRegistry.getEditorContributions()]\n\t * Defaults to EditorExtensionsRegistry.getEditorContributions().\n\t */\n\tcontributions?: IEditorContributionDescription[];\n\n\t/**\n\t * Telemetry data associated with this CodeEditorWidget.\n\t * Defaults to null.\n\t */\n\ttelemetryData?: object;\n\n\t/**\n\t * The ID of the context menu.\n\t * Defaults to MenuId.SimpleEditorContext or MenuId.EditorContext depending on whether the widget is simple.\n\t */\n\tcontextMenuId?: MenuId;\n\n\t/**\n\t * Define extra context keys that will be defined in the context service\n\t * for the editor.\n\t */\n\tcontextKeyValues?: Record<string, ContextKeyValue>;\n}\n\nclass ModelData {\n\tconstructor(\n\t\tpublic readonly model: ITextModel,\n\t\tpublic readonly viewModel: ViewModel,\n\t\tpublic readonly view: View,\n\t\tpublic readonly hasRealView: boolean,\n\t\tpublic readonly listenersToRemove: IDisposable[],\n\t\tpublic readonly attachedView: IAttachedView,\n\t) {\n\t}\n\n\tpublic dispose(): void {\n\t\tdispose(this.listenersToRemove);\n\t\tthis.model.onBeforeDetached(this.attachedView);\n\t\tif (this.hasRealView) {\n\t\t\tthis.view.dispose();\n\t\t}\n\t\tthis.viewModel.dispose();\n\t}\n}\n\nconst enum BooleanEventValue {\n\tNotSet,\n\tFalse,\n\tTrue\n}\n\nexport class BooleanEventEmitter extends Disposable {\n\tprivate readonly _onDidChangeToTrue: Emitter<void>;\n\tpublic readonly onDidChangeToTrue: Event<void>;\n\n\tprivate readonly _onDidChangeToFalse: Emitter<void>;\n\tpublic readonly onDidChangeToFalse: Event<void>;\n\n\tprivate _value: BooleanEventValue;\n\n\tconstructor(\n\t\tprivate readonly _emitterOptions: EmitterOptions\n\t) {\n\t\tsuper();\n\t\tthis._onDidChangeToTrue = this._register(new Emitter<void>(this._emitterOptions));\n\t\tthis.onDidChangeToTrue = this._onDidChangeToTrue.event;\n\t\tthis._onDidChangeToFalse = this._register(new Emitter<void>(this._emitterOptions));\n\t\tthis.onDidChangeToFalse = this._onDidChangeToFalse.event;\n\t\tthis._value = BooleanEventValue.NotSet;\n\t}\n\n\tpublic setValue(_value: boolean) {\n\t\tconst value = (_value ? BooleanEventValue.True : BooleanEventValue.False);\n\t\tif (this._value === value) {\n\t\t\treturn;\n\t\t}\n\t\tthis._value = value;\n\t\tif (this._value === BooleanEventValue.True) {\n\t\t\tthis._onDidChangeToTrue.fire();\n\t\t} else if (this._value === BooleanEventValue.False) {\n\t\t\tthis._onDidChangeToFalse.fire();\n\t\t}\n\t}\n}\n\n/**\n * A regular event emitter that also makes sure contributions are instantiated if necessary\n */\nclass InteractionEmitter<T> extends Emitter<T> {\n\n\tconstructor(\n\t\tprivate readonly _contributions: CodeEditorContributions,\n\t\tdeliveryQueue: EventDeliveryQueue\n\t) {\n\t\tsuper({ deliveryQueue });\n\t}\n\n\toverride fire(event: T): void {\n\t\tthis._contributions.onBeforeInteractionEvent();\n\t\tsuper.fire(event);\n\t}\n}\n\nclass EditorContextKeysManager extends Disposable {\n\n\tprivate readonly _editor: CodeEditorWidget;\n\tprivate readonly _editorSimpleInput: IContextKey<boolean>;\n\tprivate readonly _editorFocus: IContextKey<boolean>;\n\tprivate readonly _textInputFocus: IContextKey<boolean>;\n\tprivate readonly _editorTextFocus: IContextKey<boolean>;\n\tprivate readonly _tabMovesFocus: IContextKey<boolean>;\n\tprivate readonly _editorReadonly: IContextKey<boolean>;\n\tprivate readonly _inDiffEditor: IContextKey<boolean>;\n\tprivate readonly _editorColumnSelection: IContextKey<boolean>;\n\tprivate readonly _hasMultipleSelections: IContextKey<boolean>;\n\tprivate readonly _hasNonEmptySelection: IContextKey<boolean>;\n\tprivate readonly _canUndo: IContextKey<boolean>;\n\tprivate readonly _canRedo: IContextKey<boolean>;\n\n\tconstructor(\n\t\teditor: CodeEditorWidget,\n\t\tcontextKeyService: IContextKeyService\n\t) {\n\t\tsuper();\n\n\t\tthis._editor = editor;\n\n\t\tcontextKeyService.createKey('editorId', editor.getId());\n\n\t\tthis._editorSimpleInput = EditorContextKeys.editorSimpleInput.bindTo(contextKeyService);\n\t\tthis._editorFocus = EditorContextKeys.focus.bindTo(contextKeyService);\n\t\tthis._textInputFocus = EditorContextKeys.textInputFocus.bindTo(contextKeyService);\n\t\tthis._editorTextFocus = EditorContextKeys.editorTextFocus.bindTo(contextKeyService);\n\t\tthis._tabMovesFocus = EditorContextKeys.tabMovesFocus.bindTo(contextKeyService);\n\t\tthis._editorReadonly = EditorContextKeys.readOnly.bindTo(contextKeyService);\n\t\tthis._inDiffEditor = EditorContextKeys.inDiffEditor.bindTo(contextKeyService);\n\t\tthis._editorColumnSelection = EditorContextKeys.columnSelection.bindTo(contextKeyService);\n\t\tthis._hasMultipleSelections = EditorContextKeys.hasMultipleSelections.bindTo(contextKeyService);\n\t\tthis._hasNonEmptySelection = EditorContextKeys.hasNonEmptySelection.bindTo(contextKeyService);\n\t\tthis._canUndo = EditorContextKeys.canUndo.bindTo(contextKeyService);\n\t\tthis._canRedo = EditorContextKeys.canRedo.bindTo(contextKeyService);\n\n\t\tthis._register(this._editor.onDidChangeConfiguration(() => this._updateFromConfig()));\n\t\tthis._register(this._editor.onDidChangeCursorSelection(() => this._updateFromSelection()));\n\t\tthis._register(this._editor.onDidFocusEditorWidget(() => this._updateFromFocus()));\n\t\tthis._register(this._editor.onDidBlurEditorWidget(() => this._updateFromFocus()));\n\t\tthis._register(this._editor.onDidFocusEditorText(() => this._updateFromFocus()));\n\t\tthis._register(this._editor.onDidBlurEditorText(() => this._updateFromFocus()));\n\t\tthis._register(this._editor.onDidChangeModel(() => this._updateFromModel()));\n\t\tthis._register(this._editor.onDidChangeConfiguration(() => this._updateFromModel()));\n\t\tthis._register(TabFocus.onDidChangeTabFocus((tabFocusMode: boolean) => this._tabMovesFocus.set(tabFocusMode)));\n\n\t\tthis._updateFromConfig();\n\t\tthis._updateFromSelection();\n\t\tthis._updateFromFocus();\n\t\tthis._updateFromModel();\n\n\t\tthis._editorSimpleInput.set(this._editor.isSimpleWidget);\n\t}\n\n\tprivate _updateFromConfig(): void {\n\t\tconst options = this._editor.getOptions();\n\n\t\tthis._tabMovesFocus.set(options.get(EditorOption.tabFocusMode) || TabFocus.getTabFocusMode());\n\t\tthis._editorReadonly.set(options.get(EditorOption.readOnly));\n\t\tthis._inDiffEditor.set(options.get(EditorOption.inDiffEditor));\n\t\tthis._editorColumnSelection.set(options.get(EditorOption.columnSelection));\n\t}\n\n\tprivate _updateFromSelection(): void {\n\t\tconst selections = this._editor.getSelections();\n\t\tif (!selections) {\n\t\t\tthis._hasMultipleSelections.reset();\n\t\t\tthis._hasNonEmptySelection.reset();\n\t\t} else {\n\t\t\tthis._hasMultipleSelections.set(selections.length > 1);\n\t\t\tthis._hasNonEmptySelection.set(selections.some(s => !s.isEmpty()));\n\t\t}\n\t}\n\n\tprivate _updateFromFocus(): void {\n\t\tthis._editorFocus.set(this._editor.hasWidgetFocus() && !this._editor.isSimpleWidget);\n\t\tthis._editorTextFocus.set(this._editor.hasTextFocus() && !this._editor.isSimpleWidget);\n\t\tthis._textInputFocus.set(this._editor.hasTextFocus());\n\t}\n\n\tprivate _updateFromModel(): void {\n\t\tconst model = this._editor.getModel();\n\t\tthis._canUndo.set(Boolean(model && model.canUndo()));\n\t\tthis._canRedo.set(Boolean(model && model.canRedo()));\n\t}\n}\n\nexport class EditorModeContext extends Disposable {\n\n\tprivate readonly _langId: IContextKey<string>;\n\tprivate readonly _hasCompletionItemProvider: IContextKey<boolean>;\n\tprivate readonly _hasCodeActionsProvider: IContextKey<boolean>;\n\tprivate readonly _hasCodeLensProvider: IContextKey<boolean>;\n\tprivate readonly _hasDefinitionProvider: IContextKey<boolean>;\n\tprivate readonly _hasDeclarationProvider: IContextKey<boolean>;\n\tprivate readonly _hasImplementationProvider: IContextKey<boolean>;\n\tprivate readonly _hasTypeDefinitionProvider: IContextKey<boolean>;\n\tprivate readonly _hasHoverProvider: IContextKey<boolean>;\n\tprivate readonly _hasDocumentHighlightProvider: IContextKey<boolean>;\n\tprivate readonly _hasDocumentSymbolProvider: IContextKey<boolean>;\n\tprivate readonly _hasReferenceProvider: IContextKey<boolean>;\n\tprivate readonly _hasRenameProvider: IContextKey<boolean>;\n\tprivate readonly _hasDocumentFormattingProvider: IContextKey<boolean>;\n\tprivate readonly _hasDocumentSelectionFormattingProvider: IContextKey<boolean>;\n\tprivate readonly _hasMultipleDocumentFormattingProvider: IContextKey<boolean>;\n\tprivate readonly _hasMultipleDocumentSelectionFormattingProvider: IContextKey<boolean>;\n\tprivate readonly _hasSignatureHelpProvider: IContextKey<boolean>;\n\tprivate readonly _hasInlayHintsProvider: IContextKey<boolean>;\n\tprivate readonly _isInEmbeddedEditor: IContextKey<boolean>;\n\n\tconstructor(\n\t\tprivate readonly _editor: CodeEditorWidget,\n\t\tprivate readonly _contextKeyService: IContextKeyService,\n\t\tprivate readonly _languageFeaturesService: ILanguageFeaturesService,\n\t) {\n\t\tsuper();\n\n\t\tthis._langId = EditorContextKeys.languageId.bindTo(_contextKeyService);\n\t\tthis._hasCompletionItemProvider = EditorContextKeys.hasCompletionItemProvider.bindTo(_contextKeyService);\n\t\tthis._hasCodeActionsProvider = EditorContextKeys.hasCodeActionsProvider.bindTo(_contextKeyService);\n\t\tthis._hasCodeLensProvider = EditorContextKeys.hasCodeLensProvider.bindTo(_contextKeyService);\n\t\tthis._hasDefinitionProvider = EditorContextKeys.hasDefinitionProvider.bindTo(_contextKeyService);\n\t\tthis._hasDeclarationProvider = EditorContextKeys.hasDeclarationProvider.bindTo(_contextKeyService);\n\t\tthis._hasImplementationProvider = EditorContextKeys.hasImplementationProvider.bindTo(_contextKeyService);\n\t\tthis._hasTypeDefinitionProvider = EditorContextKeys.hasTypeDefinitionProvider.bindTo(_contextKeyService);\n\t\tthis._hasHoverProvider = EditorContextKeys.hasHoverProvider.bindTo(_contextKeyService);\n\t\tthis._hasDocumentHighlightProvider = EditorContextKeys.hasDocumentHighlightProvider.bindTo(_contextKeyService);\n\t\tthis._hasDocumentSymbolProvider = EditorContextKeys.hasDocumentSymbolProvider.bindTo(_contextKeyService);\n\t\tthis._hasReferenceProvider = EditorContextKeys.hasReferenceProvider.bindTo(_contextKeyService);\n\t\tthis._hasRenameProvider = EditorContextKeys.hasRenameProvider.bindTo(_contextKeyService);\n\t\tthis._hasSignatureHelpProvider = EditorContextKeys.hasSignatureHelpProvider.bindTo(_contextKeyService);\n\t\tthis._hasInlayHintsProvider = EditorContextKeys.hasInlayHintsProvider.bindTo(_contextKeyService);\n\t\tthis._hasDocumentFormattingProvider = EditorContextKeys.hasDocumentFormattingProvider.bindTo(_contextKeyService);\n\t\tthis._hasDocumentSelectionFormattingProvider = EditorContextKeys.hasDocumentSelectionFormattingProvider.bindTo(_contextKeyService);\n\t\tthis._hasMultipleDocumentFormattingProvider = EditorContextKeys.hasMultipleDocumentFormattingProvider.bindTo(_contextKeyService);\n\t\tthis._hasMultipleDocumentSelectionFormattingProvider = EditorContextKeys.hasMultipleDocumentSelectionFormattingProvider.bindTo(_contextKeyService);\n\t\tthis._isInEmbeddedEditor = EditorContextKeys.isInEmbeddedEditor.bindTo(_contextKeyService);\n\n\t\tconst update = () => this._update();\n\n\t\t// update when model/mode changes\n\t\tthis._register(_editor.onDidChangeModel(update));\n\t\tthis._register(_editor.onDidChangeModelLanguage(update));\n\n\t\t// update when registries change\n\t\tthis._register(_languageFeaturesService.completionProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.codeActionProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.codeLensProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.definitionProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.declarationProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.implementationProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.typeDefinitionProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.hoverProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.documentHighlightProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.documentSymbolProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.referenceProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.renameProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.documentFormattingEditProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.documentRangeFormattingEditProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.signatureHelpProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.inlayHintsProvider.onDidChange(update));\n\n\t\tupdate();\n\t}\n\n\toverride dispose() {\n\t\tsuper.dispose();\n\t}\n\n\treset() {\n\t\tthis._contextKeyService.bufferChangeEvents(() => {\n\t\t\tthis._langId.reset();\n\t\t\tthis._hasCompletionItemProvider.reset();\n\t\t\tthis._hasCodeActionsProvider.reset();\n\t\t\tthis._hasCodeLensProvider.reset();\n\t\t\tthis._hasDefinitionProvider.reset();\n\t\t\tthis._hasDeclarationProvider.reset();\n\t\t\tthis._hasImplementationProvider.reset();\n\t\t\tthis._hasTypeDefinitionProvider.reset();\n\t\t\tthis._hasHoverProvider.reset();\n\t\t\tthis._hasDocumentHighlightProvider.reset();\n\t\t\tthis._hasDocumentSymbolProvider.reset();\n\t\t\tthis._hasReferenceProvider.reset();\n\t\t\tthis._hasRenameProvider.reset();\n\t\t\tthis._hasDocumentFormattingProvider.reset();\n\t\t\tthis._hasDocumentSelectionFormattingProvider.reset();\n\t\t\tthis._hasSignatureHelpProvider.reset();\n\t\t\tthis._isInEmbeddedEditor.reset();\n\t\t});\n\t}\n\n\tprivate _update() {\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\tthis.reset();\n\t\t\treturn;\n\t\t}\n\t\tthis._contextKeyService.bufferChangeEvents(() => {\n\t\t\tthis._langId.set(model.getLanguageId());\n\t\t\tthis._hasCompletionItemProvider.set(this._languageFeaturesService.completionProvider.has(model));\n\t\t\tthis._hasCodeActionsProvider.set(this._languageFeaturesService.codeActionProvider.has(model));\n\t\t\tthis._hasCodeLensProvider.set(this._languageFeaturesService.codeLensProvider.has(model));\n\t\t\tthis._hasDefinitionProvider.set(this._languageFeaturesService.definitionProvider.has(model));\n\t\t\tthis._hasDeclarationProvider.set(this._languageFeaturesService.declarationProvider.has(model));\n\t\t\tthis._hasImplementationProvider.set(this._languageFeaturesService.implementationProvider.has(model));\n\t\t\tthis._hasTypeDefinitionProvider.set(this._languageFeaturesService.typeDefinitionProvider.has(model));\n\t\t\tthis._hasHoverProvider.set(this._languageFeaturesService.hoverProvider.has(model));\n\t\t\tthis._hasDocumentHighlightProvider.set(this._languageFeaturesService.documentHighlightProvider.has(model));\n\t\t\tthis._hasDocumentSymbolProvider.set(this._languageFeaturesService.documentSymbolProvider.has(model));\n\t\t\tthis._hasReferenceProvider.set(this._languageFeaturesService.referenceProvider.has(model));\n\t\t\tthis._hasRenameProvider.set(this._languageFeaturesService.renameProvider.has(model));\n\t\t\tthis._hasSignatureHelpProvider.set(this._languageFeaturesService.signatureHelpProvider.has(model));\n\t\t\tthis._hasInlayHintsProvider.set(this._languageFeaturesService.inlayHintsProvider.has(model));\n\t\t\tthis._hasDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.has(model) || this._languageFeaturesService.documentRangeFormattingEditProvider.has(model));\n\t\t\tthis._hasDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.has(model));\n\t\t\tthis._hasMultipleDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.all(model).length + this._languageFeaturesService.documentRangeFormattingEditProvider.all(model).length > 1);\n\t\t\tthis._hasMultipleDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.all(model).length > 1);\n\t\t\tthis._isInEmbeddedEditor.set(model.uri.scheme === Schemas.walkThroughSnippet || model.uri.scheme === Schemas.vscodeChatCodeBlock);\n\t\t});\n\t}\n}\n\n\nclass EditorDecorationsCollection implements editorCommon.IEditorDecorationsCollection {\n\n\tprivate _decorationIds: string[] = [];\n\tprivate _isChangingDecorations: boolean = false;\n\n\tpublic get length(): number {\n\t\treturn this._decorationIds.length;\n\t}\n\n\tconstructor(\n\t\tprivate readonly _editor: editorBrowser.ICodeEditor,\n\t\tdecorations: IModelDeltaDecoration[] | undefined\n\t) {\n\t\tif (Array.isArray(decorations) && decorations.length > 0) {\n\t\t\tthis.set(decorations);\n\t\t}\n\t}\n\n\tpublic onDidChange(listener: (e: IModelDecorationsChangedEvent) => unknown, thisArgs?: unknown, disposables?: IDisposable[] | DisposableStore): IDisposable {\n\t\treturn this._editor.onDidChangeModelDecorations((e) => {\n\t\t\tif (this._isChangingDecorations) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlistener.call(thisArgs, e);\n\t\t}, disposables);\n\t}\n\n\tpublic getRange(index: number): Range | null {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\t\tif (index >= this._decorationIds.length) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._editor.getModel().getDecorationRange(this._decorationIds[index]);\n\t}\n\n\tpublic getRanges(): Range[] {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn [];\n\t\t}\n\t\tconst model = this._editor.getModel();\n\t\tconst result: Range[] = [];\n\t\tfor (const decorationId of this._decorationIds) {\n\t\t\tconst range = model.getDecorationRange(decorationId);\n\t\t\tif (range) {\n\t\t\t\tresult.push(range);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tpublic has(decoration: IModelDecoration): boolean {\n\t\treturn this._decorationIds.includes(decoration.id);\n\t}\n\n\tpublic clear(): void {\n\t\tif (this._decorationIds.length === 0) {\n\t\t\t// nothing to do\n\t\t\treturn;\n\t\t}\n\t\tthis.set([]);\n\t}\n\n\tpublic set(newDecorations: readonly IModelDeltaDecoration[]): string[] {\n\t\ttry {\n\t\t\tthis._isChangingDecorations = true;\n\t\t\tthis._editor.changeDecorations((accessor) => {\n\t\t\t\tthis._decorationIds = accessor.deltaDecorations(this._decorationIds, newDecorations);\n\t\t\t});\n\t\t} finally {\n\t\t\tthis._isChangingDecorations = false;\n\t\t}\n\t\treturn this._decorationIds;\n\t}\n\n\tpublic append(newDecorations: readonly IModelDeltaDecoration[]): string[] {\n\t\tlet newDecorationIds: string[] = [];\n\t\ttry {\n\t\t\tthis._isChangingDecorations = true;\n\t\t\tthis._editor.changeDecorations((accessor) => {\n\t\t\t\tnewDecorationIds = accessor.deltaDecorations([], newDecorations);\n\t\t\t\tthis._decorationIds = this._decorationIds.concat(newDecorationIds);\n\t\t\t});\n\t\t} finally {\n\t\t\tthis._isChangingDecorations = false;\n\t\t}\n\t\treturn newDecorationIds;\n\t}\n}\n\nconst squigglyStart = encodeURIComponent(`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 3' enable-background='new 0 0 6 3' height='3' width='6'><g fill='`);\nconst squigglyEnd = encodeURIComponent(`'><polygon points='5.5,0 2.5,3 1.1,3 4.1,0'/><polygon points='4,0 6,2 6,0.6 5.4,0'/><polygon points='0,2 1,3 2.4,3 0,0.6'/></g></svg>`);\n\nfunction getSquigglySVGData(color: Color) {\n\treturn squigglyStart + encodeURIComponent(color.toString()) + squigglyEnd;\n}\n\nconst dotdotdotStart = encodeURIComponent(`<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"3\" width=\"12\"><g fill=\"`);\nconst dotdotdotEnd = encodeURIComponent(`\"><circle cx=\"1\" cy=\"1\" r=\"1\"/><circle cx=\"5\" cy=\"1\" r=\"1\"/><circle cx=\"9\" cy=\"1\" r=\"1\"/></g></svg>`);\n\nfunction getDotDotDotSVGData(color: Color) {\n\treturn dotdotdotStart + encodeURIComponent(color.toString()) + dotdotdotEnd;\n}\n\nregisterThemingParticipant((theme, collector) => {\n\tconst errorForeground = theme.getColor(editorErrorForeground);\n\tif (errorForeground) {\n\t\tcollector.addRule(`.monaco-editor .${ClassName.EditorErrorDecoration} { background: url(\"data:image/svg+xml,${getSquigglySVGData(errorForeground)}\") repeat-x bottom left; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-error-decoration: url(\"data:image/svg+xml,${getSquigglySVGData(errorForeground)}\"); }`);\n\t}\n\tconst warningForeground = theme.getColor(editorWarningForeground);\n\tif (warningForeground) {\n\t\tcollector.addRule(`.monaco-editor .${ClassName.EditorWarningDecoration} { background: url(\"data:image/svg+xml,${getSquigglySVGData(warningForeground)}\") repeat-x bottom left; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-warning-decoration: url(\"data:image/svg+xml,${getSquigglySVGData(warningForeground)}\"); }`);\n\t}\n\tconst infoForeground = theme.getColor(editorInfoForeground);\n\tif (infoForeground) {\n\t\tcollector.addRule(`.monaco-editor .${ClassName.EditorInfoDecoration} { background: url(\"data:image/svg+xml,${getSquigglySVGData(infoForeground)}\") repeat-x bottom left; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-info-decoration: url(\"data:image/svg+xml,${getSquigglySVGData(infoForeground)}\"); }`);\n\t}\n\tconst hintForeground = theme.getColor(editorHintForeground);\n\tif (hintForeground) {\n\t\tcollector.addRule(`.monaco-editor .${ClassName.EditorHintDecoration} { background: url(\"data:image/svg+xml,${getDotDotDotSVGData(hintForeground)}\") no-repeat bottom left; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-hint-decoration: url(\"data:image/svg+xml,${getDotDotDotSVGData(hintForeground)}\"); }`);\n\t}\n\tconst unnecessaryForeground = theme.getColor(editorUnnecessaryCodeOpacity);\n\tif (unnecessaryForeground) {\n\t\tcollector.addRule(`.monaco-editor.showUnused .${ClassName.EditorUnnecessaryInlineDecoration} { opacity: ${unnecessaryForeground.rgba.a}; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-unnecessary-decoration-opacity: ${unnecessaryForeground.rgba.a}; }`);\n\t}\n});\n"]}
|