owncast/static/web/_next/static/chunks/4ad82c5e-07e2b5e369c24812.js
2023-12-19 04:16:27 +00:00

1 line
No EOL
178 KiB
JavaScript
Vendored
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5762],{47421:function(t,e,i){let o;i.d(e,{$1:function(){return runScopeHandlers},$f:function(){return tE},AE:function(){return highlightSpecialChars},Eu:function(){return lineNumbers},HQ:function(){return highlightActiveLineGutter},Nm:function(){return $},OO:function(){return logException},S2:function(){return crosshairCursor},SJ:function(){return GutterMarker},Sd:function(){return getPanel},Uw:function(){return drawSelection},W$:function(){return placeholder},ZO:function(){return highlightActiveLine},Zs:function(){return rectangularSelection},bF:function(){return hoverTooltip},gB:function(){return getTooltip},hJ:function(){return t4},l9:function(){return WidgetType},lg:function(){return ViewPlugin},mH:function(){return eo},p:function(){return Decoration},qr:function(){return dropCursor},tk:function(){return EditorView},v5:function(){return gutter}});var s,n,r,l=i(78120),a=i(28699),h=i(81754);function getSelection(t){return(11==t.nodeType?t.getSelection?t:t.ownerDocument:t).getSelection()}function contains(t,e){return!!e&&(t==e||t.contains(1!=e.nodeType?e.parentNode:e))}function deepActiveElement(t){let e=t.activeElement;for(;e&&e.shadowRoot;)e=e.shadowRoot.activeElement;return e}function hasSelection(t,e){if(!e.anchorNode)return!1;try{return contains(t,e.anchorNode)}catch(t){return!1}}function clientRectsFor(t){return 3==t.nodeType?textRange(t,0,t.nodeValue.length).getClientRects():1==t.nodeType?t.getClientRects():[]}function isEquivalentPosition(t,e,i,o){return!!i&&(scanFor(t,e,i,o,-1)||scanFor(t,e,i,o,1))}function domIndex(t){for(var e=0;;e++)if(!(t=t.previousSibling))return e}function scanFor(t,e,i,o,s){for(;;){if(t==i&&e==o)return!0;if(e==(s<0?0:maxOffset(t))){if("DIV"==t.nodeName)return!1;let i=t.parentNode;if(!i||1!=i.nodeType)return!1;e=domIndex(t)+(s<0?0:1),t=i}else{if(1!=t.nodeType||1==(t=t.childNodes[e+(s<0?-1:0)]).nodeType&&"false"==t.contentEditable)return!1;e=s<0?maxOffset(t):0}}}function maxOffset(t){return 3==t.nodeType?t.nodeValue.length:t.childNodes.length}function flattenRect(t,e){let i=e?t.left:t.right;return{left:i,right:i,top:t.top,bottom:t.bottom}}function windowRect(t){return{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight}}function getScale(t,e){let i=e.width/t.offsetWidth,o=e.height/t.offsetHeight;return(i>.995&&i<1.005||!isFinite(i)||1>Math.abs(e.width-t.offsetWidth))&&(i=1),(o>.995&&o<1.005||!isFinite(o)||1>Math.abs(e.height-t.offsetHeight))&&(o=1),{scaleX:i,scaleY:o}}function scrollRectIntoView(t,e,i,o,s,n,r,l){let a=t.ownerDocument,h=a.defaultView||window;for(let c=t,d=!1;c&&!d;)if(1==c.nodeType){let t,u=c==a.body,f=1,p=1;if(u)t=windowRect(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(c).position)&&(d=!0),c.scrollHeight<=c.clientHeight&&c.scrollWidth<=c.clientWidth){c=c.assignedSlot||c.parentNode;continue}let e=c.getBoundingClientRect();({scaleX:f,scaleY:p}=getScale(c,e)),t={left:e.left,right:e.left+c.clientWidth*f,top:e.top,bottom:e.top+c.clientHeight*p}}let g=0,m=0;if("nearest"==s)e.top<t.top?(m=-(t.top-e.top+r),i>0&&e.bottom>t.bottom+m&&(m=e.bottom-t.bottom+m+r)):e.bottom>t.bottom&&(m=e.bottom-t.bottom+r,i<0&&e.top-m<t.top&&(m=-(t.top+m-e.top+r)));else{let o=e.bottom-e.top,n=t.bottom-t.top;m=("center"==s&&o<=n?e.top+o/2-n/2:"start"==s||"center"==s&&i<0?e.top-r:e.bottom-n+r)-t.top}if("nearest"==o?e.left<t.left?(g=-(t.left-e.left+n),i>0&&e.right>t.right+g&&(g=e.right-t.right+g+n)):e.right>t.right&&(g=e.right-t.right+n,i<0&&e.left<t.left+g&&(g=-(t.left+g-e.left+n))):g=("center"==o?e.left+(e.right-e.left)/2-(t.right-t.left)/2:"start"==o==l?e.left-n:e.right-(t.right-t.left)+n)-t.left,g||m){if(u)h.scrollBy(g,m);else{let t=0,i=0;if(m){let t=c.scrollTop;c.scrollTop+=m/p,i=(c.scrollTop-t)*p}if(g){let e=c.scrollLeft;c.scrollLeft+=g/f,t=(c.scrollLeft-e)*f}e={left:e.left-t,top:e.top-i,right:e.right-t,bottom:e.bottom-i},t&&1>Math.abs(t-g)&&(o="nearest"),i&&1>Math.abs(i-m)&&(s="nearest")}}if(u)break;c=c.assignedSlot||c.parentNode}else if(11==c.nodeType)c=c.host;else break}function scrollableParent(t){let e=t.ownerDocument;for(let i=t.parentNode;i&&i!=e.body;)if(1==i.nodeType){if(i.scrollHeight>i.clientHeight||i.scrollWidth>i.clientWidth)return i;i=i.assignedSlot||i.parentNode}else if(11==i.nodeType)i=i.host;else break;return null}let DOMSelectionState=class DOMSelectionState{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?maxOffset(e):0),i,Math.min(t.focusOffset,i?maxOffset(i):0))}set(t,e,i,o){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=o}};let c=null;function focusPreventScroll(t){if(t.setActive)return t.setActive();if(c)return t.focus(c);let e=[];for(let i=t;i&&(e.push(i,i.scrollTop,i.scrollLeft),i!=i.ownerDocument);i=i.parentNode);if(t.focus(null==c?{get preventScroll(){return c={preventScroll:!0},!0}}:void 0),!c){c=!1;for(let t=0;t<e.length;){let i=e[t++],o=e[t++],s=e[t++];i.scrollTop!=o&&(i.scrollTop=o),i.scrollLeft!=s&&(i.scrollLeft=s)}}}function textRange(t,e,i=e){let s=o||(o=document.createRange());return s.setEnd(t,i),s.setStart(t,e),s}function dispatchKey(t,e,i){let o={key:e,code:e,keyCode:i,which:i,cancelable:!0},s=new KeyboardEvent("keydown",o);s.synthetic=!0,t.dispatchEvent(s);let n=new KeyboardEvent("keyup",o);return n.synthetic=!0,t.dispatchEvent(n),s.defaultPrevented||n.defaultPrevented}function getRoot(t){for(;t;){if(t&&(9==t.nodeType||11==t.nodeType&&t.host))return t;t=t.assignedSlot||t.parentNode}return null}function clearAttributes(t){for(;t.attributes.length;)t.removeAttributeNode(t.attributes[0])}function atElementStart(t,e){let i=e.focusNode,o=e.focusOffset;if(!i||e.anchorNode!=i||e.anchorOffset!=o)return!1;for(o=Math.min(o,maxOffset(i));;)if(o){if(1!=i.nodeType)return!1;let t=i.childNodes[o-1];"false"==t.contentEditable?o--:o=maxOffset(i=t)}else{if(i==t)return!0;o=domIndex(i),i=i.parentNode}}function isScrolledToBottom(t){return t.scrollTop>Math.max(1,t.scrollHeight-t.clientHeight-4)}let DOMPos=class DOMPos{constructor(t,e,i=!0){this.node=t,this.offset=e,this.precise=i}static before(t,e){return new DOMPos(t.parentNode,domIndex(t),e)}static after(t,e){return new DOMPos(t.parentNode,domIndex(t)+1,e)}};let d=[];let ContentView=class ContentView{constructor(){this.parent=null,this.dom=null,this.flags=2}get overrideDOMText(){return null}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t){let e=this.posAtStart;for(let i of this.children){if(i==t)return e;e+=i.length+i.breakAfter}throw RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}sync(t,e){if(2&this.flags){let i=this.dom,o=null,s;for(let n of this.children){if(7&n.flags){if(!n.dom&&(s=o?o.nextSibling:i.firstChild)){let t=ContentView.get(s);(!t||!t.parent&&t.canReuseDOM(n))&&n.reuseDOM(s)}n.sync(t,e),n.flags&=-8}if(s=o?o.nextSibling:i.firstChild,e&&!e.written&&e.node==i&&s!=n.dom&&(e.written=!0),n.dom.parentNode==i)for(;s&&s!=n.dom;)s=rm$1(s);else i.insertBefore(n.dom,s);o=n.dom}for((s=o?o.nextSibling:i.firstChild)&&e&&e.node==i&&(e.written=!0);s;)s=rm$1(s)}else if(1&this.flags)for(let i of this.children)7&i.flags&&(i.sync(t,e),i.flags&=-8)}reuseDOM(t){}localPosFromDOM(t,e){let i;if(t==this.dom)i=this.dom.childNodes[e];else{let o=0==maxOffset(t)?0:0==e?-1:1;for(;;){let e=t.parentNode;if(e==this.dom)break;0==o&&e.firstChild!=e.lastChild&&(o=t==e.firstChild?-1:1),t=e}i=o<0?t:t.nextSibling}if(i==this.dom.firstChild)return 0;for(;i&&!ContentView.get(i);)i=i.nextSibling;if(!i)return this.length;for(let t=0,e=0;;t++){let o=this.children[t];if(o.dom==i)return e;e+=o.length+o.breakAfter}}domBoundsAround(t,e,i=0){let o=-1,s=-1,n=-1,r=-1;for(let l=0,a=i,h=i;l<this.children.length;l++){let i=this.children[l],c=a+i.length;if(a<t&&c>e)return i.domBoundsAround(t,e,a);if(c>=t&&-1==o&&(o=l,s=a),a>e&&i.dom.parentNode==this.dom){n=l,r=h;break}h=c,a=c+i.breakAfter}return{from:s,to:r<0?i+this.length:r,startDOM:(o?this.children[o-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:n<this.children.length&&n>=0?this.children[n].dom:null}}markDirty(t=!1){this.flags|=2,this.markParentsDirty(t)}markParentsDirty(t){for(let e=this.parent;e;e=e.parent){if(t&&(e.flags|=2),1&e.flags)return;e.flags|=1,t=!1}}setParent(t){this.parent!=t&&(this.parent=t,7&this.flags&&this.markParentsDirty(!0))}setDOM(t){this.dom!=t&&(this.dom&&(this.dom.cmView=null),this.dom=t,t.cmView=this)}get rootView(){for(let t=this;;){let e=t.parent;if(!e)return t;t=e}}replaceChildren(t,e,i=d){this.markDirty();for(let o=t;o<e;o++){let t=this.children[o];t.parent==this&&0>i.indexOf(t)&&t.destroy()}this.children.splice(t,e-t,...i);for(let t=0;t<i.length;t++)i[t].setParent(this)}ignoreMutation(t){return!1}ignoreEvent(t){return!1}childCursor(t=this.length){return new ChildCursor(this.children,t,this.children.length)}childPos(t,e=1){return this.childCursor().findPos(t,e)}toString(){let t=this.constructor.name.replace("View","");return t+(this.children.length?"("+this.children.join()+")":this.length?"["+("Text"==t?this.text:this.length)+"]":"")+(this.breakAfter?"#":"")}static get(t){return t.cmView}get isEditable(){return!0}get isWidget(){return!1}get isHidden(){return!1}merge(t,e,i,o,s,n){return!1}become(t){return!1}canReuseDOM(t){return t.constructor==this.constructor&&!((this.flags|t.flags)&8)}getSide(){return 0}destroy(){for(let t of this.children)t.parent==this&&t.destroy();this.parent=null}};function rm$1(t){let e=t.nextSibling;return t.parentNode.removeChild(t),e}ContentView.prototype.breakAfter=0;let ChildCursor=class ChildCursor{constructor(t,e,i){this.children=t,this.pos=e,this.i=i,this.off=0}findPos(t,e=1){for(;;){if(t>this.pos||t==this.pos&&(e>0||0==this.i||this.children[this.i-1].breakAfter))return this.off=t-this.pos,this;let i=this.children[--this.i];this.pos-=i.length+i.breakAfter}}};function replaceRange(t,e,i,o,s,n,r,l,a){let{children:h}=t,c=h.length?h[e]:null,d=n.length?n[n.length-1]:null,u=d?d.breakAfter:r;if(!(e==o&&c&&!r&&!u&&n.length<2&&c.merge(i,s,n.length?d:null,0==i,l,a))){if(o<h.length){let t=h[o];t&&(s<t.length||t.breakAfter&&(null==d?void 0:d.breakAfter))?(e==o&&(t=t.split(s),s=0),!u&&d&&t.merge(0,s,d,!0,0,a)?n[n.length-1]=t:((s||t.children.length&&!t.children[0].length)&&t.merge(0,s,null,!1,0,a),n.push(t))):(null==t?void 0:t.breakAfter)&&(d?d.breakAfter=1:r=1),o++}for(c&&(c.breakAfter=r,i>0&&(!r&&n.length&&c.merge(i,c.length,n[0],!1,l,0)?c.breakAfter=n.shift().breakAfter:(i<c.length||c.children.length&&0==c.children[c.children.length-1].length)&&c.merge(i,c.length,null,!1,l,0),e++));e<o&&n.length;)if(h[o-1].become(n[n.length-1]))o--,n.pop(),a=n.length?0:l;else if(h[e].become(n[0]))e++,n.shift(),l=n.length?0:a;else break;!n.length&&e&&o<h.length&&!h[e-1].breakAfter&&h[o].merge(0,0,h[e-1],!1,l,a)&&e--,(e<o||n.length)&&t.replaceChildren(e,o,n)}}function mergeChildrenInto(t,e,i,o,s,n){let r=t.childCursor(),{i:l,off:a}=r.findPos(i,1),{i:h,off:c}=r.findPos(e,-1),d=e-i;for(let t of o)d+=t.length;t.length+=d,replaceRange(t,h,c,l,a,o,0,s,n)}let u="undefined"!=typeof navigator?navigator:{userAgent:"",vendor:"",platform:""},f="undefined"!=typeof document?document:{documentElement:{style:{}}},p=/Edge\/(\d+)/.exec(u.userAgent),g=/MSIE \d/.test(u.userAgent),m=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(u.userAgent),w=!!(g||m||p),v=!w&&/gecko\/(\d+)/i.test(u.userAgent),b=!w&&/Chrome\/(\d+)/.exec(u.userAgent),y="webkitFontSmoothing"in f.documentElement.style,S=!w&&/Apple Computer/.test(u.vendor),M=S&&(/Mobile\/\w+/.test(u.userAgent)||u.maxTouchPoints>2);var x={mac:M||/Mac/.test(u.platform),windows:/Win/.test(u.platform),linux:/Linux|X11/.test(u.platform),ie:w,ie_version:g?f.documentMode||6:m?+m[1]:p?+p[1]:0,gecko:v,gecko_version:v?+(/Firefox\/(\d+)/.exec(u.userAgent)||[0,0])[1]:0,chrome:!!b,chrome_version:b?+b[1]:0,ios:M,android:/Android\b/.test(u.userAgent),webkit:y,safari:S,webkit_version:y?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0,tabSize:null!=f.documentElement.style.tabSize?"tab-size":"-moz-tab-size"};let TextView=class TextView extends ContentView{constructor(t){super(),this.text=t}get length(){return this.text.length}createDOM(t){this.setDOM(t||document.createTextNode(this.text))}sync(t,e){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(e&&e.node==this.dom&&(e.written=!0),this.dom.nodeValue=this.text)}reuseDOM(t){3==t.nodeType&&this.createDOM(t)}merge(t,e,i){return!(8&this.flags)&&(!i||i instanceof TextView&&!(this.length-(e-t)+i.length>256)&&!(8&i.flags))&&(this.text=this.text.slice(0,t)+(i?i.text:"")+this.text.slice(e),this.markDirty(),!0)}split(t){let e=new TextView(this.text.slice(t));return this.text=this.text.slice(0,t),this.markDirty(),e.flags|=8&this.flags,e}localPosFromDOM(t,e){return t==this.dom?e:e?this.text.length:0}domAtPos(t){return new DOMPos(this.dom,t)}domBoundsAround(t,e,i){return{from:i,to:i+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(t,e){return textCoords(this.dom,t,e)}};let MarkView=class MarkView extends ContentView{constructor(t,e=[],i=0){for(let o of(super(),this.mark=t,this.children=e,this.length=i,e))o.setParent(this)}setAttrs(t){if(clearAttributes(t),this.mark.class&&(t.className=this.mark.class),this.mark.attrs)for(let e in this.mark.attrs)t.setAttribute(e,this.mark.attrs[e]);return t}canReuseDOM(t){return super.canReuseDOM(t)&&!((this.flags|t.flags)&8)}reuseDOM(t){t.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(t),this.flags|=6)}sync(t,e){this.dom?4&this.flags&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(t,e)}merge(t,e,i,o,s,n){return(!i||!!(i instanceof MarkView&&i.mark.eq(this.mark))&&(!t||!(s<=0))&&(!(e<this.length)||!(n<=0)))&&(mergeChildrenInto(this,t,e,i?i.children.slice():[],s-1,n-1),this.markDirty(),!0)}split(t){let e=[],i=0,o=-1,s=0;for(let n of this.children){let r=i+n.length;r>t&&e.push(i<t?n.split(t-i):n),o<0&&i>=t&&(o=s),i=r,s++}let n=this.length-t;return this.length=t,o>-1&&(this.children.length=o,this.markDirty()),new MarkView(this.mark,e,n)}domAtPos(t){return inlineDOMAtPos(this,t)}coordsAt(t,e){return coordsInChildren(this,t,e)}};function textCoords(t,e,i){let o=t.nodeValue.length;e>o&&(e=o);let s=e,n=e,r=0;0==e&&i<0||e==o&&i>=0?!(x.chrome||x.gecko)&&(e?(s--,r=1):n<o&&(n++,r=-1)):i<0?s--:n<o&&n++;let l=textRange(t,s,n).getClientRects();if(!l.length)return null;let a=l[(r?r<0:i>=0)?0:l.length-1];return x.safari&&!r&&0==a.width&&(a=Array.prototype.find.call(l,t=>t.width)||a),r?flattenRect(a,r<0):a||null}let WidgetView=class WidgetView extends ContentView{static create(t,e,i){return new WidgetView(t,e,i)}constructor(t,e,i){super(),this.widget=t,this.length=e,this.side=i,this.prevWidget=null}split(t){let e=WidgetView.create(this.widget,this.length-t,this.side);return this.length-=t,e}sync(t){this.dom&&this.widget.updateDOM(this.dom,t)||(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(t)),this.dom.contentEditable="false")}getSide(){return this.side}merge(t,e,i,o,s,n){return(!i||i instanceof WidgetView&&!!this.widget.compare(i.widget)&&(!(t>0)||!(s<=0))&&(!(e<this.length)||!(n<=0)))&&(this.length=t+(i?i.length:0)+(this.length-e),!0)}become(t){return t instanceof WidgetView&&t.side==this.side&&this.widget.constructor==t.widget.constructor&&(this.widget.compare(t.widget)||this.markDirty(!0),this.dom&&!this.prevWidget&&(this.prevWidget=this.widget),this.widget=t.widget,this.length=t.length,!0)}ignoreMutation(){return!0}ignoreEvent(t){return this.widget.ignoreEvent(t)}get overrideDOMText(){if(0==this.length)return l.xv.empty;let t=this;for(;t.parent;)t=t.parent;let{view:e}=t,i=e&&e.state.doc,o=this.posAtStart;return i?i.slice(o,o+this.length):l.xv.empty}domAtPos(t){return(this.length?0==t:this.side>0)?DOMPos.before(this.dom):DOMPos.after(this.dom,t==this.length)}domBoundsAround(){return null}coordsAt(t,e){let i=this.widget.coordsAt(this.dom,t,e);if(i)return i;let o=this.dom.getClientRects(),s=null;if(!o.length)return null;let n=this.side?this.side<0:t>0;for(let e=n?o.length-1:0;s=o[e],t>0?0!=e:e!=o.length-1&&!(s.top<s.bottom);e+=n?-1:1);return flattenRect(s,!n)}get isEditable(){return!1}get isWidget(){return!0}get isHidden(){return this.widget.isHidden}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}};let WidgetBufferView=class WidgetBufferView extends ContentView{constructor(t){super(),this.side=t}get length(){return 0}merge(){return!1}become(t){return t instanceof WidgetBufferView&&t.side==this.side}split(){return new WidgetBufferView(this.side)}sync(){if(!this.dom){let t=document.createElement("img");t.className="cm-widgetBuffer",t.setAttribute("aria-hidden","true"),this.setDOM(t)}}getSide(){return this.side}domAtPos(t){return this.side>0?DOMPos.before(this.dom):DOMPos.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(t){return this.dom.getBoundingClientRect()}get overrideDOMText(){return l.xv.empty}get isHidden(){return!0}};function inlineDOMAtPos(t,e){let i=t.dom,{children:o}=t,s=0;for(let t=0;s<o.length;s++){let n=o[s],r=t+n.length;if(!(r==t&&0>=n.getSide())){if(e>t&&e<r&&n.dom.parentNode==i)return n.domAtPos(e-t);if(e<=t)break;t=r}}for(let t=s;t>0;t--){let e=o[t-1];if(e.dom.parentNode==i)return e.domAtPos(e.length)}for(let t=s;t<o.length;t++){let e=o[t];if(e.dom.parentNode==i)return e.domAtPos(0)}return new DOMPos(i,0)}function joinInlineInto(t,e,i){let o,{children:s}=t;i>0&&e instanceof MarkView&&s.length&&(o=s[s.length-1])instanceof MarkView&&o.mark.eq(e.mark)?joinInlineInto(o,e.children[0],i-1):(s.push(e),e.setParent(t)),t.length+=e.length}function coordsInChildren(t,e,i){let o=null,s=-1,n=null,r=-1;function scan(t,e){for(let l=0,a=0;l<t.children.length&&a<=e;l++){let h=t.children[l],c=a+h.length;c>=e&&(h.children.length?scan(h,e-a):(!n||n.isHidden&&i>0)&&(c>e||a==c&&h.getSide()>0)?(n=h,r=e-a):(a<e||a==c&&0>h.getSide()&&!h.isHidden)&&(o=h,s=e-a)),a=c}}scan(t,e);let l=(i<0?o:n)||o||n;return l?l.coordsAt(Math.max(0,l==o?s:r),i):fallbackRect(t)}function fallbackRect(t){let e=t.dom.lastChild;if(!e)return t.dom.getBoundingClientRect();let i=clientRectsFor(e);return i[i.length-1]||null}function combineAttrs(t,e){for(let i in t)"class"==i&&e.class?e.class+=" "+t.class:"style"==i&&e.style?e.style+=";"+t.style:e[i]=t[i];return e}TextView.prototype.children=WidgetView.prototype.children=WidgetBufferView.prototype.children=d;let C=Object.create(null);function attrsEq(t,e,i){if(t==e)return!0;t||(t=C),e||(e=C);let o=Object.keys(t),s=Object.keys(e);if(o.length-(i&&o.indexOf(i)>-1?1:0)!=s.length-(i&&s.indexOf(i)>-1?1:0))return!1;for(let n of o)if(n!=i&&(-1==s.indexOf(n)||t[n]!==e[n]))return!1;return!0}function updateAttrs(t,e,i){let o=!1;if(e)for(let s in e)i&&s in i||(o=!0,"style"==s?t.style.cssText="":t.removeAttribute(s));if(i)for(let s in i)e&&e[s]==i[s]||(o=!0,"style"==s?t.style.cssText=i[s]:t.setAttribute(s,i[s]));return o}function getAttrs(t){let e=Object.create(null);for(let i=0;i<t.attributes.length;i++){let o=t.attributes[i];e[o.name]=o.value}return e}let LineView=class LineView extends ContentView{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(t,e,i,o,s,n){if(i){if(!(i instanceof LineView))return!1;this.dom||i.transferDOM(this)}return o&&this.setDeco(i?i.attrs:null),mergeChildrenInto(this,t,e,i?i.children.slice():[],s,n),!0}split(t){let e=new LineView;if(e.breakAfter=this.breakAfter,0==this.length)return e;let{i,off:o}=this.childPos(t);o&&(e.append(this.children[i].split(o),0),this.children[i].merge(o,this.children[i].length,null,!1,0,0),i++);for(let t=i;t<this.children.length;t++)e.append(this.children[t],0);for(;i>0&&0==this.children[i-1].length;)this.children[--i].destroy();return this.children.length=i,this.markDirty(),this.length=t,e}transferDOM(t){this.dom&&(this.markDirty(),t.setDOM(this.dom),t.prevAttrs=void 0===this.prevAttrs?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(t){attrsEq(this.attrs,t)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=t)}append(t,e){joinInlineInto(this,t,e)}addLineDeco(t){let e=t.spec.attributes,i=t.spec.class;e&&(this.attrs=combineAttrs(e,this.attrs||{})),i&&(this.attrs=combineAttrs({class:i},this.attrs||{}))}domAtPos(t){return inlineDOMAtPos(this,t)}reuseDOM(t){"DIV"==t.nodeName&&(this.setDOM(t),this.flags|=6)}sync(t,e){var i;this.dom?4&this.flags&&(clearAttributes(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),void 0!==this.prevAttrs&&(updateAttrs(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(t,e);let o=this.dom.lastChild;for(;o&&ContentView.get(o) instanceof MarkView;)o=o.lastChild;if(!o||!this.length||"BR"!=o.nodeName&&(null===(i=ContentView.get(o))||void 0===i?void 0:i.isEditable)==!1&&(!x.ios||!this.children.some(t=>t instanceof TextView))){let t=document.createElement("BR");t.cmIgnore=!0,this.dom.appendChild(t)}}measureTextSize(){if(0==this.children.length||this.length>20)return null;let t=0,e;for(let i of this.children){if(!(i instanceof TextView)||/[^ -~]/.test(i.text))return null;let o=clientRectsFor(i.dom);if(1!=o.length)return null;t+=o[0].width,e=o[0].height}return t?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:t/this.length,textHeight:e}:null}coordsAt(t,e){let i=coordsInChildren(this,t,e);if(!this.children.length&&i&&this.parent){let{heightOracle:t}=this.parent.view.viewState,e=i.bottom-i.top;if(2>Math.abs(e-t.lineHeight)&&t.textHeight<e){let o=(e-t.textHeight)/2;return{top:i.top+o,bottom:i.bottom-o,left:i.left,right:i.left}}}return i}become(t){return!1}covers(){return!0}static find(t,e){for(let i=0,o=0;i<t.children.length;i++){let s=t.children[i],n=o+s.length;if(n>=e){if(s instanceof LineView)return s;if(n>e)break}o=n+s.breakAfter}return null}};let BlockWidgetView=class BlockWidgetView extends ContentView{constructor(t,e,i){super(),this.widget=t,this.length=e,this.deco=i,this.breakAfter=0,this.prevWidget=null}merge(t,e,i,o,s,n){return(!i||i instanceof BlockWidgetView&&!!this.widget.compare(i.widget)&&(!(t>0)||!(s<=0))&&(!(e<this.length)||!(n<=0)))&&(this.length=t+(i?i.length:0)+(this.length-e),!0)}domAtPos(t){return 0==t?DOMPos.before(this.dom):DOMPos.after(this.dom,t==this.length)}split(t){let e=this.length-t;this.length=t;let i=new BlockWidgetView(this.widget,e,this.deco);return i.breakAfter=this.breakAfter,i}get children(){return d}sync(t){this.dom&&this.widget.updateDOM(this.dom,t)||(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(t)),this.dom.contentEditable="false")}get overrideDOMText(){return this.parent?this.parent.view.state.doc.slice(this.posAtStart,this.posAtEnd):l.xv.empty}domBoundsAround(){return null}become(t){return t instanceof BlockWidgetView&&t.widget.constructor==this.widget.constructor&&(t.widget.compare(this.widget)||this.markDirty(!0),this.dom&&!this.prevWidget&&(this.prevWidget=this.widget),this.widget=t.widget,this.length=t.length,this.deco=t.deco,this.breakAfter=t.breakAfter,!0)}ignoreMutation(){return!0}ignoreEvent(t){return this.widget.ignoreEvent(t)}get isEditable(){return!1}get isWidget(){return!0}coordsAt(t,e){return this.widget.coordsAt(this.dom,t,e)}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}covers(t){let{startSide:e,endSide:i}=this.deco;return e!=i&&(t<0?e<0:i>0)}};let WidgetType=class WidgetType{eq(t){return!1}updateDOM(t,e){return!1}compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}get estimatedHeight(){return -1}get lineBreaks(){return 0}ignoreEvent(t){return!0}coordsAt(t,e,i){return null}get isHidden(){return!1}destroy(t){}};var k=((s=k||(k={}))[s.Text=0]="Text",s[s.WidgetBefore=1]="WidgetBefore",s[s.WidgetAfter=2]="WidgetAfter",s[s.WidgetRange=3]="WidgetRange",s);let Decoration=class Decoration extends l.uU{constructor(t,e,i,o){super(),this.startSide=t,this.endSide=e,this.widget=i,this.spec=o}get heightRelevant(){return!1}static mark(t){return new MarkDecoration(t)}static widget(t){let e=Math.max(-1e4,Math.min(1e4,t.side||0)),i=!!t.block;return e+=i&&!t.inlineOrder?e>0?3e8:-4e8:e>0?1e8:-1e8,new PointDecoration(t,e,e,i,t.widget||null,!1)}static replace(t){let e=!!t.block,i,o;if(t.isBlockGap)i=-5e8,o=4e8;else{let{start:s,end:n}=getInclusive(t,e);i=(s?e?-3e8:-1:5e8)-1,o=(n?e?2e8:1:-6e8)+1}return new PointDecoration(t,i,o,e,t.widget||null,!0)}static line(t){return new LineDecoration(t)}static set(t,e=!1){return l.Xs.of(t,e)}hasHeight(){return!!this.widget&&this.widget.estimatedHeight>-1}};Decoration.none=l.Xs.empty;let MarkDecoration=class MarkDecoration extends Decoration{constructor(t){let{start:e,end:i}=getInclusive(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.class=t.class||"",this.attrs=t.attributes||null}eq(t){var e,i;return this==t||t instanceof MarkDecoration&&this.tagName==t.tagName&&(this.class||(null===(e=this.attrs)||void 0===e?void 0:e.class))==(t.class||(null===(i=t.attrs)||void 0===i?void 0:i.class))&&attrsEq(this.attrs,t.attrs,"class")}range(t,e=t){if(t>=e)throw RangeError("Mark decorations may not be empty");return super.range(t,e)}};MarkDecoration.prototype.point=!1;let LineDecoration=class LineDecoration extends Decoration{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof LineDecoration&&this.spec.class==t.spec.class&&attrsEq(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}};LineDecoration.prototype.mapMode=l.gc.TrackBefore,LineDecoration.prototype.point=!0;let PointDecoration=class PointDecoration extends Decoration{constructor(t,e,i,o,s,n){super(e,i,s,t),this.block=o,this.isReplace=n,this.mapMode=o?e<=0?l.gc.TrackBefore:l.gc.TrackAfter:l.gc.TrackDel}get type(){return this.startSide!=this.endSide?k.WidgetRange:this.startSide<=0?k.WidgetBefore:k.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof PointDecoration&&widgetsEq(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}};function getInclusive(t,e=!1){let{inclusiveStart:i,inclusiveEnd:o}=t;return null==i&&(i=t.inclusive),null==o&&(o=t.inclusive),{start:null!=i?i:e,end:null!=o?o:e}}function widgetsEq(t,e){return t==e||!!(t&&e&&t.compare(e))}function addRange(t,e,i,o=0){let s=i.length-1;s>=0&&i[s]+o>=t?i[s]=Math.max(i[s],e):i.push(t,e)}PointDecoration.prototype.point=!0;let ContentBuilder=class ContentBuilder{constructor(t,e,i,o){this.doc=t,this.pos=e,this.end=i,this.disallowBlockEffectsFor=o,this.content=[],this.curLine=null,this.breakAtStart=0,this.pendingBuffer=0,this.bufferMarks=[],this.atCursorPos=!0,this.openStart=-1,this.openEnd=-1,this.text="",this.textOff=0,this.cursor=t.iter(),this.skip=e}posCovered(){if(0==this.content.length)return!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos;let t=this.content[this.content.length-1];return!(t.breakAfter||t instanceof BlockWidgetView&&t.deco.endSide<0)}getLine(){return this.curLine||(this.content.push(this.curLine=new LineView),this.atCursorPos=!0),this.curLine}flushBuffer(t=this.bufferMarks){this.pendingBuffer&&(this.curLine.append(wrapMarks(new WidgetBufferView(-1),t),t.length),this.pendingBuffer=0)}addBlockWidget(t){this.flushBuffer(),this.curLine=null,this.content.push(t)}finish(t){this.pendingBuffer&&t<=this.bufferMarks.length?this.flushBuffer():this.pendingBuffer=0,this.posCovered()||t&&this.content.length&&this.content[this.content.length-1]instanceof BlockWidgetView||this.getLine()}buildText(t,e,i){for(;t>0;){if(this.textOff==this.text.length){let{value:e,lineBreak:i,done:o}=this.cursor.next(this.skip);if(this.skip=0,o)throw Error("Ran out of text content when drawing inline views");if(i){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,t--;continue}this.text=e,this.textOff=0}let o=Math.min(this.text.length-this.textOff,t,512);this.flushBuffer(e.slice(e.length-i)),this.getLine().append(wrapMarks(new TextView(this.text.slice(this.textOff,this.textOff+o)),e),i),this.atCursorPos=!0,this.textOff+=o,t-=o,i=0}}span(t,e,i,o){this.buildText(e-t,i,o),this.pos=e,this.openStart<0&&(this.openStart=o)}point(t,e,i,o,s,n){if(this.disallowBlockEffectsFor[n]&&i instanceof PointDecoration){if(i.block)throw RangeError("Block decorations may not be specified via plugins");if(e>this.doc.lineAt(this.pos).to)throw RangeError("Decorations that replace line breaks may not be specified via plugins")}let r=e-t;if(i instanceof PointDecoration){if(i.block)i.startSide>0&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new BlockWidgetView(i.widget||new NullWidget("div"),r,i));else{let n=WidgetView.create(i.widget||new NullWidget("span"),r,r?0:i.startSide),l=this.atCursorPos&&!n.isEditable&&s<=o.length&&(t<e||i.startSide>0),a=!n.isEditable&&(t<e||s>o.length||i.startSide<=0),h=this.getLine();2!=this.pendingBuffer||l||n.isEditable||(this.pendingBuffer=0),this.flushBuffer(o),l&&(h.append(wrapMarks(new WidgetBufferView(1),o),s),s=o.length+Math.max(0,s-o.length)),h.append(wrapMarks(n,o),s),this.atCursorPos=a,this.pendingBuffer=a?t<e||s>o.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=o.slice())}}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(i);r&&(this.textOff+r<=this.text.length?this.textOff+=r:(this.skip+=r-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=e),this.openStart<0&&(this.openStart=s)}static build(t,e,i,o,s){let n=new ContentBuilder(t,e,i,s);return n.openEnd=l.Xs.spans(o,e,i,n),n.openStart<0&&(n.openStart=n.openEnd),n.finish(n.openEnd),n}};function wrapMarks(t,e){for(let i of e)t=new MarkView(i,[t],t.length);return t}let NullWidget=class NullWidget extends WidgetType{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};let T=l.r$.define(),A=l.r$.define(),D=l.r$.define(),O=l.r$.define(),V=l.r$.define(),R=l.r$.define(),E=l.r$.define(),B=l.r$.define({combine:t=>t.some(t=>t)}),P=l.r$.define({combine:t=>t.some(t=>t)});let ScrollTarget=class ScrollTarget{constructor(t,e="nearest",i="nearest",o=5,s=5,n=!1){this.range=t,this.y=e,this.x=i,this.yMargin=o,this.xMargin=s,this.isSnapshot=n}map(t){return t.empty?this:new ScrollTarget(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new ScrollTarget(l.jT.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}};let L=l.Py.define({map:(t,e)=>t.map(e)});function logException(t,e,i){let o=t.facet(O);o.length?o[0](e):window.onerror?window.onerror(String(e),i,void 0,void 0,e):i?console.error(i+":",e):console.error(e)}let H=l.r$.define({combine:t=>!t.length||t[0]}),N=0,W=l.r$.define();let ViewPlugin=class ViewPlugin{constructor(t,e,i,o,s){this.id=t,this.create=e,this.domEventHandlers=i,this.domEventObservers=o,this.extension=s(this)}static define(t,e){let{eventHandlers:i,eventObservers:o,provide:s,decorations:n}=e||{};return new ViewPlugin(N++,t,i,o,t=>{let e=[W.of(t)];return n&&e.push(z.of(e=>{let i=e.plugin(t);return i?n(i):Decoration.none})),s&&e.push(s(t)),e})}static fromClass(t,e){return ViewPlugin.define(e=>new t(e),e)}};let PluginInstance=class PluginInstance{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}update(t){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(e){if(logException(t.state,e,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch(t){}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.create(t)}catch(e){logException(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(null===(e=this.value)||void 0===e?void 0:e.destroy)try{this.value.destroy()}catch(e){logException(t.state,e,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}};let F=l.r$.define(),I=l.r$.define(),z=l.r$.define(),G=l.r$.define(),q=l.r$.define();function getIsolatedRanges(t,e,i){let o=t.state.facet(q);if(!o.length)return o;let s=o.map(e=>e instanceof Function?e(t):e),n=[];return l.Xs.spans(s,e,i,{point(){},span(t,e,i,o){let s=n;for(let n=i.length-1;n>=0;n--,o--){let r=i[n].spec.bidiIsolate,l;if(null!=r){if(o>0&&s.length&&(l=s[s.length-1]).to==t&&l.direction==r)l.to=e,s=l.inner;else{let i={from:t,to:e,direction:r,inner:[]};s.push(i),s=i.inner}}}}}),n}let K=l.r$.define();function getScrollMargins(t){let e=0,i=0,o=0,s=0;for(let n of t.state.facet(K)){let r=n(t);r&&(null!=r.left&&(e=Math.max(e,r.left)),null!=r.right&&(i=Math.max(i,r.right)),null!=r.top&&(o=Math.max(o,r.top)),null!=r.bottom&&(s=Math.max(s,r.bottom)))}return{left:e,right:i,top:o,bottom:s}}let j=l.r$.define();let ChangedRange=class ChangedRange{constructor(t,e,i,o){this.fromA=t,this.toA=e,this.fromB=i,this.toB=o}join(t){return new ChangedRange(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let o=t[e-1];if(!(o.fromA>i.toA)){if(o.toA<i.fromA)break;i=i.join(o),t.splice(e-1,1)}}return t.splice(e,0,i),t}static extendWithRanges(t,e){if(0==e.length)return t;let i=[];for(let o=0,s=0,n=0,r=0;;o++){let l=o==t.length?null:t[o],a=n-r,h=l?l.fromB:1e9;for(;s<e.length&&e[s]<h;){let t=e[s],o=e[s+1],n=Math.max(r,t),l=Math.min(h,o);if(n<=l&&new ChangedRange(n+a,l+a,n,l).addToSet(i),o>h)break;s+=2}if(!l)return i;new ChangedRange(l.fromA,l.toA,l.fromB,l.toB).addToSet(i),n=l.toA,r=l.toB}}};let ViewUpdate=class ViewUpdate{constructor(t,e,i){for(let o of(this.view=t,this.state=e,this.transactions=i,this.flags=0,this.startState=t.state,this.changes=l.as.empty(this.startState.doc.length),i))this.changes=this.changes.compose(o.changes);let o=[];this.changes.iterChangedRanges((t,e,i,s)=>o.push(new ChangedRange(t,e,i,s))),this.changedRanges=o}static create(t,e,i){return new ViewUpdate(t,e,i)}get viewportChanged(){return(4&this.flags)>0}get heightChanged(){return(2&this.flags)>0}get geometryChanged(){return this.docChanged||(10&this.flags)>0}get focusChanged(){return(1&this.flags)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return 0==this.flags&&0==this.transactions.length}};var $=((n=$||($={}))[n.LTR=0]="LTR",n[n.RTL=1]="RTL",n);let X=$.LTR,Y=$.RTL;function dec(t){let e=[];for(let i=0;i<t.length;i++)e.push(1<<+t[i]);return e}let _=dec("88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008"),U=dec("4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333"),Q=Object.create(null),Z=[];for(let t of["()","[]","{}"]){let e=t.charCodeAt(0),i=t.charCodeAt(1);Q[e]=i,Q[i]=-e}function charType(t){return t<=247?_[t]:1424<=t&&t<=1524?2:1536<=t&&t<=1785?U[t-1536]:1774<=t&&t<=2220?4:8192<=t&&t<=8204?256:64336<=t&&t<=65023?4:1}let J=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\ufb50-\ufdff]/;let BidiSpan=class BidiSpan{get dir(){return this.level%2?Y:X}constructor(t,e,i){this.from=t,this.to=e,this.level=i}side(t,e){return this.dir==e==t?this.to:this.from}static find(t,e,i,o){let s=-1;for(let n=0;n<t.length;n++){let r=t[n];if(r.from<=e&&r.to>=e){if(r.level==i)return n;(s<0||(0!=o?o<0?r.from<e:r.to>e:t[s].level>r.level))&&(s=n)}}if(s<0)throw RangeError("Index out of range");return s}};function isolatesEq(t,e){if(t.length!=e.length)return!1;for(let i=0;i<t.length;i++){let o=t[i],s=e[i];if(o.from!=s.from||o.to!=s.to||o.direction!=s.direction||!isolatesEq(o.inner,s.inner))return!1}return!0}let tt=[];function computeCharTypes(t,e,i,o,s){for(let n=0;n<=o.length;n++){let r=n?o[n-1].to:e,l=n<o.length?o[n].from:i,a=n?256:s;for(let e=r,i=a,o=a;e<l;e++){let s=charType(t.charCodeAt(e));512==s?s=i:8==s&&4==o&&(s=16),tt[e]=4==s?2:s,7&s&&(o=s),i=s}for(let t=r,e=a,o=a;t<l;t++){let s=tt[t];if(128==s)t<l-1&&e==tt[t+1]&&24&e?s=tt[t]=e:tt[t]=256;else if(64==s){let s=t+1;for(;s<l&&64==tt[s];)s++;let n=t&&8==e||s<i&&8==tt[s]?1==o?1:8:256;for(let e=t;e<s;e++)tt[e]=n;t=s-1}else 8==s&&1==o&&(tt[t]=1);e=s,7&s&&(o=s)}}}function processBracketPairs(t,e,i,o,s){let n=1==s?2:1;for(let r=0,l=0,a=0;r<=o.length;r++){let h=r?o[r-1].to:e,c=r<o.length?o[r].from:i;for(let e=h,i,o,r;e<c;e++)if(o=Q[i=t.charCodeAt(e)]){if(o<0){for(let t=l-3;t>=0;t-=3)if(Z[t+1]==-o){let i=Z[t+2],o=2&i?s:4&i?1&i?n:s:0;o&&(tt[e]=tt[Z[t]]=o),l=t;break}}else if(189==Z.length)break;else Z[l++]=e,Z[l++]=i,Z[l++]=a}else if(2==(r=tt[e])||1==r){let t=r==s;a=t?0:1;for(let e=l-3;e>=0;e-=3){let i=Z[e+2];if(2&i)break;if(t)Z[e+2]|=2;else{if(4&i)break;Z[e+2]|=4}}}}}function processNeutrals(t,e,i,o){for(let s=0,n=o;s<=i.length;s++){let r=s?i[s-1].to:t,l=s<i.length?i[s].from:e;for(let a=r;a<l;){let r=tt[a];if(256==r){let r=a+1;for(;;)if(r==l){if(s==i.length)break;r=i[s++].to,l=s<i.length?i[s].from:e}else if(256==tt[r])r++;else break;let h=1==n,c=h==((r<e?tt[r]:o)==1)?h?1:2:o;for(let e=r,o=s,n=o?i[o-1].to:t;e>a;)e==n&&(e=i[--o].from,n=o?i[o-1].to:t),tt[--e]=c;a=r}else n=r,a++}}}function emitSpans(t,e,i,o,s,n,r){let l=o%2?2:1;if(o%2==s%2)for(let a=e,h=0;a<i;){let e=!0,c=!1;if(h==n.length||a<n[h].from){let t=tt[a];t!=l&&(e=!1,c=16==t)}let d=e||1!=l?null:[],u=e?o:o+1,f=a;t:for(;;)if(h<n.length&&f==n[h].from){if(c)break;let p=n[h];if(!e)for(let t=p.to,e=h+1;;){if(t==i)break t;if(e<n.length&&n[e].from==t)t=n[e++].to;else if(tt[t]==l)break t;else break}h++,d?d.push(p):(p.from>a&&r.push(new BidiSpan(a,p.from,u)),computeSectionOrder(t,p.direction==X!=!(u%2)?o+1:o,s,p.inner,p.from,p.to,r),a=p.to),f=p.to}else if(f==i||(e?tt[f]!=l:tt[f]==l))break;else f++;d?emitSpans(t,a,f,o+1,s,d,r):a<f&&r.push(new BidiSpan(a,f,u)),a=f}else for(let a=i,h=n.length;a>e;){let i=!0,c=!1;if(!h||a>n[h-1].to){let t=tt[a-1];t!=l&&(i=!1,c=16==t)}let d=i||1!=l?null:[],u=i?o:o+1,f=a;t:for(;;)if(h&&f==n[h-1].to){if(c)break;let p=n[--h];if(!i)for(let t=p.from,i=h;;){if(t==e)break t;if(i&&n[i-1].to==t)t=n[--i].from;else if(tt[t-1]==l)break t;else break}d?d.push(p):(p.to<a&&r.push(new BidiSpan(p.to,a,u)),computeSectionOrder(t,p.direction==X!=!(u%2)?o+1:o,s,p.inner,p.from,p.to,r),a=p.from),f=p.from}else if(f==e||(i?tt[f-1]!=l:tt[f-1]==l))break;else f--;d?emitSpans(t,f,a,o+1,s,d,r):f<a&&r.push(new BidiSpan(f,a,u)),a=f}}function computeSectionOrder(t,e,i,o,s,n,r){let l=e%2?2:1;computeCharTypes(t,s,n,o,l),processBracketPairs(t,s,n,o,l),processNeutrals(s,n,o,l),emitSpans(t,s,n,e,i,o,r)}function computeOrder(t,e,i){if(!t)return[new BidiSpan(0,0,e==Y?1:0)];if(e==X&&!i.length&&!J.test(t))return trivialOrder(t.length);if(i.length)for(;t.length>tt.length;)tt[tt.length]=256;let o=[],s=e==X?0:1;return computeSectionOrder(t,s,s,i,0,t.length,o),o}function trivialOrder(t){return[new BidiSpan(0,t,0)]}let te="";function moveVisually(t,e,i,o,s){var n;let r=o.head-t.from,a=-1;if(0==r){if(!s||!t.length)return null;e[0].level!=i&&(r=e[0].side(!1,i),a=0)}else if(r==t.length){if(s)return null;let t=e[e.length-1];t.level!=i&&(r=t.side(!0,i),a=e.length-1)}a<0&&(a=BidiSpan.find(e,r,null!==(n=o.bidiLevel)&&void 0!==n?n:-1,o.assoc));let h=e[a];r==h.side(s,i)&&(r=(h=e[a+=s?1:-1]).side(!s,i));let c=s==(h.dir==i),d=(0,l.cp)(t.text,r,c);if(te=t.text.slice(Math.min(r,d),Math.max(r,d)),d>h.from&&d<h.to)return l.jT.cursor(d+t.from,c?-1:1,h.level);let u=a==(s?e.length-1:0)?null:e[a+(s?1:-1)];return u||h.level==i?u&&u.level<h.level?l.jT.cursor(u.side(!s,i)+t.from,s?1:-1,u.level):l.jT.cursor(d+t.from,s?-1:1,h.level):l.jT.cursor(s?t.to:t.from,s?-1:1,i)}let DocView=class DocView extends ContentView{get length(){return this.view.state.doc.length}constructor(t){super(),this.view=t,this.decorations=[],this.dynamicDecorationMap=[],this.domChanged=null,this.hasComposition=null,this.markedForComposition=new Set,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(t.contentDOM),this.children=[new LineView],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new ChangedRange(0,0,0,t.state.doc.length)],0,null)}update(t){var e;let i=t.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:t,toA:e})=>e<this.minWidthFrom||t>this.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0);let o=-1;!(this.view.inputState.composing>=0)||((null===(e=this.domChanged)||void 0===e?void 0:e.newSel)?o=this.domChanged.newSel.head:touchesComposition(t.changes,this.hasComposition)||t.selectionSet||(o=t.state.selection.main.head));let s=o>-1?findCompositionRange(this.view,t.changes,o):null;if(this.domChanged=null,this.hasComposition){this.markedForComposition.clear();let{from:e,to:o}=this.hasComposition;i=new ChangedRange(e,o,t.changes.mapPos(e,-1),t.changes.mapPos(o,1)).addToSet(i.slice())}this.hasComposition=s?{from:s.range.fromB,to:s.range.toB}:null,(x.ie||x.chrome)&&!s&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let n=findChangedDeco(this.decorations,this.updateDeco(),t.changes);return i=ChangedRange.extendWithRanges(i,n),(!!(7&this.flags)||0!=i.length)&&(this.updateInner(i,t.startState.doc.length,s),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e,i){this.view.viewState.mustMeasureContent=!0,this.updateChildren(t,e,i);let{observer:o}=this.view;o.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let t=x.chrome||x.ios?{node:o.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,t),this.flags&=-8,t&&(t.written||o.selectionRange.focusNode!=t.node)&&(this.forceSelection=!0),this.dom.style.height=""}),this.markedForComposition.forEach(t=>t.flags&=-9);let s=[];if(this.view.viewport.from||this.view.viewport.to<this.view.state.doc.length)for(let t of this.children)t instanceof BlockWidgetView&&t.widget instanceof BlockGapWidget&&s.push(t.dom);o.updateGaps(s)}updateChildren(t,e,i){let o=i?i.range.addToSet(t.slice()):t,s=this.childCursor(e);for(let t=o.length-1;;t--){let e=t>=0?o[t]:null;if(!e)break;let{fromA:n,toA:r,fromB:l,toB:a}=e,h,c,d,u;if(i&&i.range.fromB<a&&i.range.toB>l){let t=ContentBuilder.build(this.view.state.doc,l,i.range.fromB,this.decorations,this.dynamicDecorationMap),e=ContentBuilder.build(this.view.state.doc,i.range.toB,a,this.decorations,this.dynamicDecorationMap);c=t.breakAtStart,d=t.openStart,u=e.openEnd;let o=this.compositionView(i);e.breakAtStart?o.breakAfter=1:e.content.length&&o.merge(o.length,o.length,e.content[0],!1,e.openStart,0)&&(o.breakAfter=e.content[0].breakAfter,e.content.shift()),t.content.length&&o.merge(0,0,t.content[t.content.length-1],!0,0,t.openEnd)&&t.content.pop(),h=t.content.concat(o).concat(e.content)}else({content:h,breakAtStart:c,openStart:d,openEnd:u}=ContentBuilder.build(this.view.state.doc,l,a,this.decorations,this.dynamicDecorationMap));let{i:f,off:p}=s.findPos(r,1),{i:g,off:m}=s.findPos(n,-1);replaceRange(this,g,m,f,p,h,c,d,u)}i&&this.fixCompositionDOM(i)}compositionView(t){let e=new TextView(t.text.nodeValue);for(let{deco:i}of(e.flags|=8,t.marks))e=new MarkView(i,[e],e.length);let i=new LineView;return i.append(e,0),i}fixCompositionDOM(t){let fix=(t,e)=>{e.flags|=8|(e.children.some(t=>7&t.flags)?1:0),this.markedForComposition.add(e);let i=ContentView.get(t);i&&i!=e&&(i.dom=null),e.setDOM(t)},e=this.childPos(t.range.fromB,1),i=this.children[e.i];fix(t.line,i);for(let o=t.marks.length-1;o>=-1;o--)e=i.childPos(e.off,1),i=i.children[e.i],fix(o>=0?t.marks[o].node:t.text,i)}updateSelection(t=!1,e=!1){(t||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let i=this.view.root.activeElement,o=i==this.dom,s=!o&&hasSelection(this.dom,this.view.observer.selectionRange)&&!(i&&this.dom.contains(i));if(!(o||e||s))return;let n=this.forceSelection;this.forceSelection=!1;let r=this.view.state.selection.main,l=this.moveToLine(this.domAtPos(r.anchor)),a=r.empty?l:this.moveToLine(this.domAtPos(r.head));if(x.gecko&&r.empty&&!this.hasComposition&&betweenUneditable(l)){let t=document.createTextNode("");this.view.observer.ignore(()=>l.node.insertBefore(t,l.node.childNodes[l.offset]||null)),l=a=new DOMPos(t,0),n=!0}let h=this.view.observer.selectionRange;!n&&h.focusNode&&isEquivalentPosition(l.node,l.offset,h.anchorNode,h.anchorOffset)&&isEquivalentPosition(a.node,a.offset,h.focusNode,h.focusOffset)||(this.view.observer.ignore(()=>{x.android&&x.chrome&&this.dom.contains(h.focusNode)&&inUneditable(h.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let t=getSelection(this.view.root);if(t){if(r.empty){if(x.gecko){let t=nextToUneditable(l.node,l.offset);if(t&&3!=t){let e=nearbyTextNode(l.node,l.offset,1==t?1:-1);e&&(l=new DOMPos(e.node,e.offset))}}t.collapse(l.node,l.offset),null!=r.bidiLevel&&void 0!==t.caretBidiLevel&&(t.caretBidiLevel=r.bidiLevel)}else if(t.extend){t.collapse(l.node,l.offset);try{t.extend(a.node,a.offset)}catch(t){}}else{let e=document.createRange();r.anchor>r.head&&([l,a]=[a,l]),e.setEnd(a.node,a.offset),e.setStart(l.node,l.offset),t.removeAllRanges(),t.addRange(e)}}s&&this.view.root.activeElement==this.dom&&(this.dom.blur(),i&&i.focus())}),this.view.observer.setSelectionRange(l,a)),this.impreciseAnchor=l.precise?null:new DOMPos(h.anchorNode,h.anchorOffset),this.impreciseHead=a.precise?null:new DOMPos(h.focusNode,h.focusOffset)}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=getSelection(t.root),{anchorNode:o,anchorOffset:s}=t.observer.selectionRange;if(!i||!e.empty||!e.assoc||!i.modify)return;let n=LineView.find(this,e.head);if(!n)return;let r=n.posAtStart;if(e.head==r||e.head==r+n.length)return;let l=this.coordsAt(e.head,-1),a=this.coordsAt(e.head,1);if(!l||!a||l.bottom>a.top)return;let h=this.domAtPos(e.head+e.assoc);i.collapse(h.node,h.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(o,s)}moveToLine(t){let e=this.dom,i;if(t.node!=e)return t;for(let o=t.offset;!i&&o<e.childNodes.length;o++){let t=ContentView.get(e.childNodes[o]);t instanceof LineView&&(i=t.domAtPos(0))}for(let o=t.offset-1;!i&&o>=0;o--){let t=ContentView.get(e.childNodes[o]);t instanceof LineView&&(i=t.domAtPos(t.length))}return i?new DOMPos(i.node,i.offset,!0):t}nearest(t){for(let e=t;e;){let t=ContentView.get(e);if(t&&t.rootView==this)return t;e=e.parentNode}return null}posFromDOM(t,e){let i=this.nearest(t);if(!i)throw RangeError("Trying to find position for a DOM position outside of the document");return i.localPosFromDOM(t,e)+i.posAtStart}domAtPos(t){let{i:e,off:i}=this.childCursor().findPos(t,-1);for(;e<this.children.length-1;){let t=this.children[e];if(i<t.length||t instanceof LineView)break;e++,i=0}return this.children[e].domAtPos(i)}coordsAt(t,e){let i=null,o=0;for(let s=this.length,n=this.children.length-1;n>=0;n--){let r=this.children[n],l=s-r.breakAfter,a=l-r.length;if(l<t)break;a<=t&&(a<t||r.covers(-1))&&(l>t||r.covers(1))&&(!i||r instanceof LineView&&!(i instanceof LineView&&e>=0))&&(i=r,o=a),s=a}return i?i.coordsAt(t-o,e):null}coordsForChar(t){let{i:e,off:i}=this.childPos(t,1),o=this.children[e];if(!(o instanceof LineView))return null;for(;o.children.length;){let{i:t,off:e}=o.childPos(i,1);for(;;t++){if(t==o.children.length)return null;if((o=o.children[t]).length)break}i=e}if(!(o instanceof TextView))return null;let s=(0,l.cp)(o.text,i);if(s==i)return null;let n=textRange(o.dom,i,s).getClientRects();for(let t=0;t<n.length;t++){let e=n[t];if(t==n.length-1||e.top<e.bottom&&e.left<e.right)return e}return null}measureVisibleLineHeights(t){let e=[],{from:i,to:o}=t,s=this.view.contentDOM.clientWidth,n=s>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,r=-1,l=this.view.textDirection==$.LTR;for(let t=0,a=0;a<this.children.length;a++){let h=this.children[a],c=t+h.length;if(c>o)break;if(t>=i){let i=h.dom.getBoundingClientRect();if(e.push(i.height),n){let e=h.dom.lastChild,o=e?clientRectsFor(e):[];if(o.length){let e=o[o.length-1],n=l?e.right-i.left:i.right-e.left;n>r&&(r=n,this.minWidth=s,this.minWidthFrom=t,this.minWidthTo=c)}}}t=c+h.breakAfter}return e}textDirectionAt(t){let{i:e}=this.childPos(t,1);return"rtl"==getComputedStyle(this.children[e].dom).direction?$.RTL:$.LTR}measureTextSize(){for(let t of this.children)if(t instanceof LineView){let e=t.measureTextSize();if(e)return e}let t=document.createElement("div"),e,i,o;return t.className="cm-line",t.style.width="99999px",t.style.position="absolute",t.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(t);let s=clientRectsFor(t.firstChild)[0];e=t.getBoundingClientRect().height,i=s?s.width/27:7,o=s?s.height:e,t.remove()}),{lineHeight:e,charWidth:i,textHeight:o}}childCursor(t=this.length){let e=this.children.length;return e&&(t-=this.children[--e].length),new ChildCursor(this.children,t,e)}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,o=0;;o++){let s=o==e.viewports.length?null:e.viewports[o],n=s?s.from-1:this.length;if(n>i){let o=(e.lineBlockAt(n).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(Decoration.replace({widget:new BlockGapWidget(o),block:!0,inclusive:!0,isBlockGap:!0}).range(i,n))}if(!s)break;i=s.to+1}return Decoration.set(t)}updateDeco(){let t=this.view.state.facet(z).map((t,e)=>(this.dynamicDecorationMap[e]="function"==typeof t)?t(this.view):t);for(let e=t.length;e<t.length+3;e++)this.dynamicDecorationMap[e]=!1;return this.decorations=[...t,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco]}scrollIntoView(t){if(t.isSnapshot){let e=this.view.viewState.lineBlockAt(t.range.head);this.view.scrollDOM.scrollTop=e.top-t.yMargin,this.view.scrollDOM.scrollLeft=t.xMargin;return}let{range:e}=t,i=this.coordsAt(e.head,e.empty?e.assoc:e.head>e.anchor?-1:1),o;if(!i)return;!e.empty&&(o=this.coordsAt(e.anchor,e.anchor>e.head?-1:1))&&(i={left:Math.min(i.left,o.left),top:Math.min(i.top,o.top),right:Math.max(i.right,o.right),bottom:Math.max(i.bottom,o.bottom)});let s=getScrollMargins(this.view),n={left:i.left-s.left,top:i.top-s.top,right:i.right+s.right,bottom:i.bottom+s.bottom},{offsetWidth:r,offsetHeight:l}=this.view.scrollDOM;scrollRectIntoView(this.view.scrollDOM,n,e.head<e.anchor?-1:1,t.x,t.y,Math.max(Math.min(t.xMargin,r),-r),Math.max(Math.min(t.yMargin,l),-l),this.view.textDirection==$.LTR)}};function betweenUneditable(t){return 1==t.node.nodeType&&t.node.firstChild&&(0==t.offset||"false"==t.node.childNodes[t.offset-1].contentEditable)&&(t.offset==t.node.childNodes.length||"false"==t.node.childNodes[t.offset].contentEditable)}let BlockGapWidget=class BlockGapWidget extends WidgetType{constructor(t){super(),this.height=t}toDOM(){let t=document.createElement("div");return this.updateDOM(t),t}eq(t){return t.height==this.height}updateDOM(t){return t.style.height=this.height+"px",!0}get estimatedHeight(){return this.height}};function findCompositionNode(t,e){let i=t.observer.selectionRange,o=i.focusNode&&nearbyTextNode(i.focusNode,i.focusOffset,0);if(!o)return null;let s=e-o.offset;return{from:s,to:s+o.node.nodeValue.length,node:o.node}}function findCompositionRange(t,e,i){let o=findCompositionNode(t,i);if(!o)return null;let{node:s,from:n,to:r}=o,l=s.nodeValue;if(/[\n\r]/.test(l)||t.state.doc.sliceString(o.from,o.to)!=l)return null;let a=e.invertedDesc,h=new ChangedRange(a.mapPos(n),a.mapPos(r),n,r),c=[];for(let e=s.parentNode;;e=e.parentNode){let i=ContentView.get(e);if(i instanceof MarkView)c.push({node:e,deco:i.mark});else{if(i instanceof LineView||"DIV"==e.nodeName&&e.parentNode==t.contentDOM)return{range:h,text:s,marks:c,line:e};if(e==t.contentDOM)return null;c.push({node:e,deco:new MarkDecoration({inclusive:!0,attributes:getAttrs(e),tagName:e.tagName.toLowerCase()})})}}}function nearbyTextNode(t,e,i){if(i<=0)for(let i=t,o=e;;){if(3==i.nodeType)return{node:i,offset:o};if(1==i.nodeType&&o>0)o=maxOffset(i=i.childNodes[o-1]);else break}if(i>=0)for(let o=t,s=e;;){if(3==o.nodeType)return{node:o,offset:s};if(1==o.nodeType&&s<o.childNodes.length&&i>=0)o=o.childNodes[s],s=0;else break}return null}function nextToUneditable(t,e){return 1!=t.nodeType?0:(e&&"false"==t.childNodes[e-1].contentEditable?1:0)|(e<t.childNodes.length&&"false"==t.childNodes[e].contentEditable?2:0)}let ti=class{constructor(){this.changes=[]}compareRange(t,e){addRange(t,e,this.changes)}comparePoint(t,e){addRange(t,e,this.changes)}};function findChangedDeco(t,e,i){let o=new ti;return l.Xs.compare(t,e,i,o),o.changes}function inUneditable(t,e){for(let i=t;i&&i!=e;i=i.assignedSlot||i.parentNode)if(1==i.nodeType&&"false"==i.contentEditable)return!0;return!1}function touchesComposition(t,e){let i=!1;return e&&t.iterChangedRanges((t,o)=>{t<e.to&&o>e.from&&(i=!0)}),i}function groupAt(t,e,i=1){let o=t.charCategorizer(e),s=t.doc.lineAt(e),n=e-s.from;if(0==s.length)return l.jT.cursor(e);0==n?i=1:n==s.length&&(i=-1);let r=n,a=n;i<0?r=(0,l.cp)(s.text,n,!1):a=(0,l.cp)(s.text,n);let h=o(s.text.slice(r,a));for(;r>0;){let t=(0,l.cp)(s.text,r,!1);if(o(s.text.slice(t,r))!=h)break;r=t}for(;a<s.length;){let t=(0,l.cp)(s.text,a);if(o(s.text.slice(a,t))!=h)break;a=t}return l.jT.range(r+s.from,a+s.from)}function getdx(t,e){return e.left>t?e.left-t:Math.max(0,t-e.right)}function getdy(t,e){return e.top>t?e.top-t:Math.max(0,t-e.bottom)}function yOverlap(t,e){return t.top<e.bottom-1&&t.bottom>e.top+1}function upTop(t,e){return e<t.top?{top:e,left:t.left,right:t.right,bottom:t.bottom}:t}function upBot(t,e){return e>t.bottom?{top:t.top,left:t.left,right:t.right,bottom:e}:t}function domPosAtCoords(t,e,i){let o,s,n,r,l,a,h,c,d=!1;for(let u=t.firstChild;u;u=u.nextSibling){let t=clientRectsFor(u);for(let f=0;f<t.length;f++){let p=t[f];a&&yOverlap(a,p)&&(p=upTop(upBot(p,a.bottom),a.top));let g=getdx(e,p),m=getdy(i,p);if(0==g&&0==m)return 3==u.nodeType?domPosInText(u,e,i):domPosAtCoords(u,e,i);if(!l||c>m||c==m&&h>g){l=u,a=p,h=g,c=m;let o=m?i<p.top?-1:1:g?e<p.left?-1:1:0;d=!o||(o>0?f<t.length-1:f>0)}0==g?i>p.bottom&&(!n||n.bottom<p.bottom)?(o=u,n=p):i<p.top&&(!r||r.top>p.top)&&(s=u,r=p):n&&yOverlap(n,p)?n=upBot(n,p.bottom):r&&yOverlap(r,p)&&(r=upTop(r,p.top))}}if(n&&n.bottom>=i?(l=o,a=n):r&&r.top<=i&&(l=s,a=r),!l)return{node:t,offset:0};let u=Math.max(a.left,Math.min(a.right,e));if(3==l.nodeType)return domPosInText(l,u,i);if(d&&"false"!=l.contentEditable)return domPosAtCoords(l,u,i);let f=Array.prototype.indexOf.call(t.childNodes,l)+(e>=(a.left+a.right)/2?1:0);return{node:t,offset:f}}function domPosInText(t,e,i){let o=t.nodeValue.length,s=-1,n=1e9,r=0;for(let l=0;l<o;l++){let o=textRange(t,l,l+1).getClientRects();for(let a=0;a<o.length;a++){let h=o[a];if(h.top==h.bottom)continue;r||(r=e-h.left);let c=(h.top>i?h.top-i:i-h.bottom)-1;if(h.left-1<=e&&h.right+1>=e&&c<n){let i=e>=(h.left+h.right)/2,o=i;if((x.chrome||x.gecko)&&textRange(t,l).getBoundingClientRect().left==h.right&&(o=!i),c<=0)return{node:t,offset:l+(o?1:0)};s=l+(o?1:0),n=c}}}return{node:t,offset:s>-1?s:r>0?t.nodeValue.length:0}}function posAtCoords(t,e,i,o=-1){var s,n;let r=t.contentDOM.getBoundingClientRect(),l=r.top+t.viewState.paddingTop,a,{docHeight:h}=t.viewState,{x:c,y:d}=e,u=d-l;if(u<0)return 0;if(u>h)return t.state.doc.length;for(let e=t.viewState.heightOracle.textHeight/2,s=!1;(a=t.elementAtHeight(u)).type!=k.Text;)for(;!((u=o>0?a.bottom+e:a.top-e)>=0)||!(u<=h);){if(s)return i?null:0;s=!0,o=-o}d=l+u;let f=a.from;if(f<t.viewport.from)return 0==t.viewport.from?0:i?null:posAtCoordsImprecise(t,r,a,c,d);if(f>t.viewport.to)return t.viewport.to==t.state.doc.length?t.state.doc.length:i?null:posAtCoordsImprecise(t,r,a,c,d);let p=t.dom.ownerDocument,g=t.root.elementFromPoint?t.root:p,m=g.elementFromPoint(c,d);m&&!t.contentDOM.contains(m)&&(m=null),!m&&(c=Math.max(r.left+1,Math.min(r.right-1,c)),(m=g.elementFromPoint(c,d))&&!t.contentDOM.contains(m)&&(m=null));let w,v=-1;if(m&&(null===(s=t.docView.nearest(m))||void 0===s?void 0:s.isEditable)!=!1){if(p.caretPositionFromPoint){let t=p.caretPositionFromPoint(c,d);t&&({offsetNode:w,offset:v}=t)}else if(p.caretRangeFromPoint){let e=p.caretRangeFromPoint(c,d);e&&({startContainer:w,startOffset:v}=e,(!t.contentDOM.contains(w)||x.safari&&isSuspiciousSafariCaretResult(w,v,c)||x.chrome&&isSuspiciousChromeCaretResult(w,v,c))&&(w=void 0))}}if(!w||!t.docView.dom.contains(w)){let e=LineView.find(t.docView,f);if(!e)return u>a.top+a.height/2?a.to:a.from;({node:w,offset:v}=domPosAtCoords(e.dom,c,d))}let b=t.docView.nearest(w);if(!b)return null;if(!b.isWidget||(null===(n=b.dom)||void 0===n?void 0:n.nodeType)!=1)return b.localPosFromDOM(w,v)+b.posAtStart;{let t=b.dom.getBoundingClientRect();return e.y<t.top||e.y<=t.bottom&&e.x<=(t.left+t.right)/2?b.posAtStart:b.posAtEnd}}function posAtCoordsImprecise(t,e,i,o,s){let n=Math.round((o-e.left)*t.defaultCharacterWidth);if(t.lineWrapping&&i.height>1.5*t.defaultLineHeight){let e=t.viewState.heightOracle.textHeight;n+=Math.floor((s-i.top-(t.defaultLineHeight-e)*.5)/e)*t.viewState.heightOracle.lineLength}let r=t.state.sliceDoc(i.from,i.to);return i.from+(0,l.Gz)(r,n,t.state.tabSize)}function isSuspiciousSafariCaretResult(t,e,i){let o;if(3!=t.nodeType||e!=(o=t.nodeValue.length))return!1;for(let e=t.nextSibling;e;e=e.nextSibling)if(1!=e.nodeType||"BR"!=e.nodeName)return!1;return textRange(t,o-1,o).getBoundingClientRect().left>i}function isSuspiciousChromeCaretResult(t,e,i){if(0!=e)return!1;for(let e=t;;){let t=e.parentNode;if(!t||1!=t.nodeType||t.firstChild!=e)return!1;if(t.classList.contains("cm-line"))break;e=t}return i-(1==t.nodeType?t.getBoundingClientRect():textRange(t,0,Math.max(t.nodeValue.length,1)).getBoundingClientRect()).left>5}function blockAt(t,e){let i=t.lineBlockAt(e);if(Array.isArray(i.type)){for(let t of i.type)if(t.to>e||t.to==e&&(t.to==i.to||t.type==k.Text))return t}return i}function moveToLineBoundary(t,e,i,o){let s=blockAt(t,e.head),n=o&&s.type==k.Text&&(t.lineWrapping||s.widgetLineBreaks)?t.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head):null;if(n){let e=t.dom.getBoundingClientRect(),o=t.textDirectionAt(s.from),r=t.posAtCoords({x:i==(o==$.LTR)?e.right-1:e.left+1,y:(n.top+n.bottom)/2});if(null!=r)return l.jT.cursor(r,i?-1:1)}return l.jT.cursor(i?s.to:s.from,i?-1:1)}function moveByChar(t,e,i,o){let s=t.state.doc.lineAt(e.head),n=t.bidiSpans(s),r=t.textDirectionAt(s.from);for(let a=e,h=null;;){let e=moveVisually(s,n,r,a,i),c=te;if(!e){if(s.number==(i?t.state.doc.lines:1))return a;c="\n",s=t.state.doc.line(s.number+(i?1:-1)),n=t.bidiSpans(s),e=l.jT.cursor(i?s.from:s.to)}if(h){if(!h(c))return a}else{if(!o)return e;h=o(c)}a=e}}function byGroup(t,e,i){let o=t.state.charCategorizer(e),s=o(i);return t=>{let e=o(t);return s==l.D0.Space&&(s=e),s==e}}function moveVertically(t,e,i,o){let s=e.head,n=i?1:-1;if(s==(i?t.state.doc.length:0))return l.jT.cursor(s,e.assoc);let r=e.goalColumn,a,h=t.contentDOM.getBoundingClientRect(),c=t.coordsAtPos(s,e.assoc||-1),d=t.documentTop;if(c)null==r&&(r=c.left-h.left),a=n<0?c.top:c.bottom;else{let e=t.viewState.lineBlockAt(s);null==r&&(r=Math.min(h.right-h.left,t.defaultCharacterWidth*(s-e.from))),a=(n<0?e.top:e.bottom)+d}let u=h.left+r,f=null!=o?o:t.viewState.heightOracle.textHeight>>1;for(let e=0;;e+=10){let i=a+(f+e)*n,o=posAtCoords(t,{x:u,y:i},!1,n);if(i<h.top||i>h.bottom||(n<0?o<s:o>s)){let e=t.docView.coordsForChar(o),s=!e||i<e.top?-1:1;return l.jT.cursor(o,s,void 0,r)}}}function skipAtomicRanges(t,e,i){for(;;){let o=0;for(let s of t)s.between(e-1,e+1,(t,s,n)=>{if(e>t&&e<s){let n=o||i||(e-t<s-e?-1:1);e=n<0?t:s,o=n}});if(!o)return e}}function skipAtoms(t,e,i){let o=skipAtomicRanges(t.state.facet(G).map(e=>e(t)),i.from,e.head>i.from?-1:1);return o==i.from?i:l.jT.cursor(o,o<i.from?1:-1)}let InputState=class InputState{setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTime=Date.now()}constructor(t){this.view=t,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastEscPress=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=t.hasFocus,x.safari&&t.contentDOM.addEventListener("input",()=>null),x.gecko&&firefoxCopyCutHack(t.contentDOM.ownerDocument)}handleEvent(t){!(!eventBelongsToEditor(this.view,t)||this.ignoreDuringComposition(t))&&("keydown"==t.type&&this.keydown(t)||this.runHandlers(t.type,t))}runHandlers(t,e){let i=this.handlers[t];if(i){for(let t of i.observers)t(this.view,e);for(let t of i.handlers){if(e.defaultPrevented)break;if(t(this.view,e)){e.preventDefault();break}}}}ensureHandlers(t){let e=computeHandlers(t),i=this.handlers,o=this.view.contentDOM;for(let t in e)if("scroll"!=t){let s=!e[t].handlers.length,n=i[t];n&&!n.handlers.length!=s&&(o.removeEventListener(t,this.handleEvent),n=null),n||o.addEventListener(t,this.handleEvent,{passive:s})}for(let t in i)"scroll"==t||e[t]||o.removeEventListener(t,this.handleEvent);this.handlers=e}keydown(t){let e;return this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),!!(9==t.keyCode&&Date.now()<this.lastEscPress+2e3)||((27!=t.keyCode&&0>tn.indexOf(t.keyCode)&&(this.view.inputState.lastEscPress=0),x.android&&x.chrome&&!t.synthetic&&(13==t.keyCode||8==t.keyCode))?(this.view.observer.delayAndroidKey(t.key,t.keyCode),!0):x.ios&&!t.synthetic&&!t.altKey&&!t.metaKey&&((e=to.find(e=>e.keyCode==t.keyCode))&&!t.ctrlKey||ts.indexOf(t.key)>-1&&t.ctrlKey&&!t.shiftKey)?(this.pendingIOSKey=e||t,setTimeout(()=>this.flushIOSKey(),250),!0):(229!=t.keyCode&&this.view.observer.forceFlush(),!1))}flushIOSKey(){let t=this.pendingIOSKey;return!!t&&(this.pendingIOSKey=void 0,dispatchKey(this.view.contentDOM,t.key,t.keyCode))}ignoreDuringComposition(t){return!!/^key/.test(t.type)&&(this.composing>0||!!(x.safari&&!x.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100)&&(this.compositionPendingKey=!1,!0))}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.mouseSelection&&this.mouseSelection.update(t),this.draggedContent&&t.docChanged&&(this.draggedContent=this.draggedContent.map(t.changes)),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function bindHandler(t,e){return(i,o)=>{try{return e.call(t,o,i)}catch(t){logException(i.state,t)}}}function computeHandlers(t){let e=Object.create(null);function record(t){return e[t]||(e[t]={observers:[],handlers:[]})}for(let e of t){let t=e.spec;if(t&&t.domEventHandlers)for(let i in t.domEventHandlers){let o=t.domEventHandlers[i];o&&record(i).handlers.push(bindHandler(e.value,o))}if(t&&t.domEventObservers)for(let i in t.domEventObservers){let o=t.domEventObservers[i];o&&record(i).observers.push(bindHandler(e.value,o))}}for(let t in tr)record(t).handlers.push(tr[t]);for(let t in tl)record(t).observers.push(tl[t]);return e}let to=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],ts="dthko",tn=[16,17,18,20,91,92,224,225];function dragScrollSpeed(t){return .7*Math.max(0,t)+8}function dist(t,e){return Math.max(Math.abs(t.clientX-e.clientX),Math.abs(t.clientY-e.clientY))}let MouseSelection=class MouseSelection{constructor(t,e,i,o){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=o,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParent=scrollableParent(t.contentDOM),this.atoms=t.state.facet(G).map(e=>e(t));let s=t.contentDOM.ownerDocument;s.addEventListener("mousemove",this.move=this.move.bind(this)),s.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet(l.yy.allowMultipleSelections)&&addsSelectionRange(t,e),this.dragging=!!isInPrimarySelection(t,e)&&1==getClickType(e)&&null}start(t){!1===this.dragging&&this.select(t)}move(t){var e;if(0==t.buttons)return this.destroy();if(this.dragging||null==this.dragging&&10>dist(this.startEvent,t))return;this.select(this.lastEvent=t);let i=0,o=0,s=(null===(e=this.scrollParent)||void 0===e?void 0:e.getBoundingClientRect())||{left:0,top:0,right:this.view.win.innerWidth,bottom:this.view.win.innerHeight},n=getScrollMargins(this.view);t.clientX-n.left<=s.left+6?i=-dragScrollSpeed(s.left-t.clientX):t.clientX+n.right>=s.right-6&&(i=dragScrollSpeed(t.clientX-s.right)),t.clientY-n.top<=s.top+6?o=-dragScrollSpeed(s.top-t.clientY):t.clientY+n.bottom>=s.bottom-6&&(o=dragScrollSpeed(t.clientY-s.bottom)),this.setScrollSpeed(i,o)}up(t){null==this.dragging&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){this.scrollParent?(this.scrollParent.scrollLeft+=this.scrollSpeed.x,this.scrollParent.scrollTop+=this.scrollSpeed.y):this.view.win.scrollBy(this.scrollSpeed.x,this.scrollSpeed.y),!1===this.dragging&&this.select(this.lastEvent)}skipAtoms(t){let e=null;for(let i=0;i<t.ranges.length;i++){let o=t.ranges[i],s=null;if(o.empty){let t=skipAtomicRanges(this.atoms,o.from,0);t!=o.from&&(s=l.jT.cursor(t,-1))}else{let t=skipAtomicRanges(this.atoms,o.from,-1),e=skipAtomicRanges(this.atoms,o.to,1);(t!=o.from||e!=o.to)&&(s=l.jT.range(o.from==o.anchor?t:e,o.from==o.head?t:e))}s&&(e||(e=t.ranges.slice()),e[i]=s)}return e?l.jT.create(e,t.mainIndex):t}select(t){let{view:e}=this,i=this.skipAtoms(this.style.get(t,this.extend,this.multiple));(this.mustSelect||!i.eq(e.state.selection)||i.main.assoc!=e.state.selection.main.assoc&&!1===this.dragging)&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(t){this.style.update(t)&&setTimeout(()=>this.select(this.lastEvent),20)}};function addsSelectionRange(t,e){let i=t.state.facet(T);return i.length?i[0](e):x.mac?e.metaKey:e.ctrlKey}function dragMovesSelection(t,e){let i=t.state.facet(A);return i.length?i[0](e):x.mac?!e.altKey:!e.ctrlKey}function isInPrimarySelection(t,e){let{main:i}=t.state.selection;if(i.empty)return!1;let o=getSelection(t.root);if(!o||0==o.rangeCount)return!0;let s=o.getRangeAt(0).getClientRects();for(let t=0;t<s.length;t++){let i=s[t];if(i.left<=e.clientX&&i.right>=e.clientX&&i.top<=e.clientY&&i.bottom>=e.clientY)return!0}return!1}function eventBelongsToEditor(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let i=e.target,o;i!=t.contentDOM;i=i.parentNode)if(!i||11==i.nodeType||(o=ContentView.get(i))&&o.ignoreEvent(e))return!1;return!0}let tr=Object.create(null),tl=Object.create(null),ta=x.ie&&x.ie_version<15||x.ios&&x.webkit_version<604;function capturePaste(t){let e=t.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.focus(),setTimeout(()=>{t.focus(),i.remove(),doPaste(t,i.value)},50)}function doPaste(t,e){let{state:i}=t,o,s=1,n=i.toText(e),r=n.lines==i.selection.ranges.length;if(null!=tf&&i.selection.ranges.every(t=>t.empty)&&tf==n.toString()){let t=-1;o=i.changeByRange(o=>{let a=i.doc.lineAt(o.from);if(a.from==t)return{range:o};t=a.from;let h=i.toText((r?n.line(s++).text:e)+i.lineBreak);return{changes:{from:a.from,insert:h},range:l.jT.cursor(o.from+h.length)}})}else o=r?i.changeByRange(t=>{let e=n.line(s++);return{changes:{from:t.from,to:t.to,insert:e.text},range:l.jT.cursor(t.from+e.length)}}):i.replaceSelection(n);t.dispatch(o,{userEvent:"input.paste",scrollIntoView:!0})}function rangeForClick(t,e,i,o){if(1==o)return l.jT.cursor(e,i);if(2==o)return groupAt(t.state,e,i);{let i=LineView.find(t.docView,e),o=t.state.doc.lineAt(i?i.posAtEnd:e),s=i?i.posAtStart:o.from,n=i?i.posAtEnd:o.to;return n<t.state.doc.length&&n==o.to&&n++,l.jT.range(s,n)}}tl.scroll=t=>{t.inputState.lastScrollTop=t.scrollDOM.scrollTop,t.inputState.lastScrollLeft=t.scrollDOM.scrollLeft},tr.keydown=(t,e)=>(t.inputState.setSelectionOrigin("select"),27==e.keyCode&&(t.inputState.lastEscPress=Date.now()),!1),tl.touchstart=(t,e)=>{t.inputState.lastTouchTime=Date.now(),t.inputState.setSelectionOrigin("select.pointer")},tl.touchmove=t=>{t.inputState.setSelectionOrigin("select.pointer")},tr.mousedown=(t,e)=>{if(t.observer.flush(),t.inputState.lastTouchTime>Date.now()-2e3)return!1;let i=null;for(let o of t.state.facet(D))if(i=o(t,e))break;if(i||0!=e.button||(i=basicMouseSelection(t,e)),i){let o=!t.hasFocus;t.inputState.startMouseSelection(new MouseSelection(t,e,i,o)),o&&t.observer.ignore(()=>focusPreventScroll(t.contentDOM));let s=t.inputState.mouseSelection;if(s)return s.start(e),!1===s.dragging}return!1};let insideY=(t,e)=>t>=e.top&&t<=e.bottom,inside=(t,e,i)=>insideY(e,i)&&t>=i.left&&t<=i.right;function findPositionSide(t,e,i,o){let s=LineView.find(t.docView,e);if(!s)return 1;let n=e-s.posAtStart;if(0==n)return 1;if(n==s.length)return -1;let r=s.coordsAt(n,-1);if(r&&inside(i,o,r))return -1;let l=s.coordsAt(n,1);return l&&inside(i,o,l)?1:r&&insideY(o,r)?-1:1}function queryPos(t,e){let i=t.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:i,bias:findPositionSide(t,i,e.clientX,e.clientY)}}let th=x.ie&&x.ie_version<=11,tc=null,td=0,tu=0;function getClickType(t){if(!th)return t.detail;let e=tc,i=tu;return tc=t,tu=Date.now(),td=!e||i>Date.now()-400&&2>Math.abs(e.clientX-t.clientX)&&2>Math.abs(e.clientY-t.clientY)?(td+1)%3:1}function basicMouseSelection(t,e){let i=queryPos(t,e),o=getClickType(e),s=t.state.selection;return{update(t){t.docChanged&&(i.pos=t.changes.mapPos(i.pos),s=s.map(t.changes))},get(e,n,r){let a=queryPos(t,e),h,c=rangeForClick(t,a.pos,a.bias,o);if(i.pos!=a.pos&&!n){let e=rangeForClick(t,i.pos,i.bias,o),s=Math.min(e.from,c.from),n=Math.max(e.to,c.to);c=s<c.from?l.jT.range(s,n):l.jT.range(n,s)}return n?s.replaceRange(s.main.extend(c.from,c.to)):r&&1==o&&s.ranges.length>1&&(h=removeRangeAround(s,a.pos))?h:r?s.addRange(c):l.jT.create([c])}}}function removeRangeAround(t,e){for(let i=0;i<t.ranges.length;i++){let{from:o,to:s}=t.ranges[i];if(o<=e&&s>=e)return l.jT.create(t.ranges.slice(0,i).concat(t.ranges.slice(i+1)),t.mainIndex==i?0:t.mainIndex-(t.mainIndex>i?1:0))}return null}function dropText(t,e,i,o){if(!i)return;let s=t.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:n}=t.inputState,r=o&&n&&dragMovesSelection(t,e)?{from:n.from,to:n.to}:null,l={from:s,insert:i},a=t.state.changes(r?[r,l]:l);t.focus(),t.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:r?"move.drop":"input.drop"}),t.inputState.draggedContent=null}function captureCopy(t,e){let i=t.dom.parentNode;if(!i)return;let o=i.appendChild(document.createElement("textarea"));o.style.cssText="position: fixed; left: -10000px; top: 10px",o.value=e,o.focus(),o.selectionEnd=e.length,o.selectionStart=0,setTimeout(()=>{o.remove(),t.focus()},50)}function copiedRange(t){let e=[],i=[],o=!1;for(let o of t.selection.ranges)o.empty||(e.push(t.sliceDoc(o.from,o.to)),i.push(o));if(!e.length){let s=-1;for(let{from:o}of t.selection.ranges){let n=t.doc.lineAt(o);n.number>s&&(e.push(n.text),i.push({from:n.from,to:Math.min(t.doc.length,n.to+1)})),s=n.number}o=!0}return{text:e.join(t.lineBreak),ranges:i,linewise:o}}tr.dragstart=(t,e)=>{let{selection:{main:i}}=t.state;if(e.target.draggable){let o=t.docView.nearest(e.target);if(o&&o.isWidget){let t=o.posAtStart,e=t+o.length;(t>=i.to||e<=i.from)&&(i=l.jT.range(t,e))}}let{inputState:o}=t;return o.mouseSelection&&(o.mouseSelection.dragging=!0),o.draggedContent=i,e.dataTransfer&&(e.dataTransfer.setData("Text",t.state.sliceDoc(i.from,i.to)),e.dataTransfer.effectAllowed="copyMove"),!1},tr.dragend=t=>(t.inputState.draggedContent=null,!1),tr.drop=(t,e)=>{if(!e.dataTransfer)return!1;if(t.state.readOnly)return!0;let i=e.dataTransfer.files;if(i&&i.length){let o=Array(i.length),s=0,finishFile=()=>{++s==i.length&&dropText(t,e,o.filter(t=>null!=t).join(t.state.lineBreak),!1)};for(let t=0;t<i.length;t++){let e=new FileReader;e.onerror=finishFile,e.onload=()=>{/[\x00-\x08\x0e-\x1f]{2}/.test(e.result)||(o[t]=e.result),finishFile()},e.readAsText(i[t])}return!0}{let i=e.dataTransfer.getData("Text");if(i)return dropText(t,e,i,!0),!0}return!1},tr.paste=(t,e)=>{if(t.state.readOnly)return!0;t.observer.flush();let i=ta?null:e.clipboardData;return i?(doPaste(t,i.getData("text/plain")||i.getData("text/uri-text")),!0):(capturePaste(t),!1)};let tf=null;tr.copy=tr.cut=(t,e)=>{let{text:i,ranges:o,linewise:s}=copiedRange(t.state);if(!i&&!s)return!1;tf=s?i:null,"cut"!=e.type||t.state.readOnly||t.dispatch({changes:o,scrollIntoView:!0,userEvent:"delete.cut"});let n=ta?null:e.clipboardData;return n?(n.clearData(),n.setData("text/plain",i),!0):(captureCopy(t,i),!1)};let tp=l.q6.define();function focusChangeTransaction(t,e){let i=[];for(let o of t.facet(E)){let s=o(t,e);s&&i.push(s)}return i?t.update({effects:i,annotations:tp.of(!0)}):null}function updateForFocusChange(t){setTimeout(()=>{let e=t.hasFocus;if(e!=t.inputState.notifiedFocused){let i=focusChangeTransaction(t.state,e);i?t.dispatch(i):t.update([])}},10)}tl.focus=t=>{t.inputState.lastFocusTime=Date.now(),!t.scrollDOM.scrollTop&&(t.inputState.lastScrollTop||t.inputState.lastScrollLeft)&&(t.scrollDOM.scrollTop=t.inputState.lastScrollTop,t.scrollDOM.scrollLeft=t.inputState.lastScrollLeft),updateForFocusChange(t)},tl.blur=t=>{t.observer.clearSelectionRange(),updateForFocusChange(t)},tl.compositionstart=tl.compositionupdate=t=>{null==t.inputState.compositionFirstChange&&(t.inputState.compositionFirstChange=!0),t.inputState.composing<0&&(t.inputState.composing=0)},tl.compositionend=t=>{t.inputState.composing=-1,t.inputState.compositionEndedAt=Date.now(),t.inputState.compositionPendingKey=!0,t.inputState.compositionPendingChange=t.observer.pendingRecords().length>0,t.inputState.compositionFirstChange=null,x.chrome&&x.android?t.observer.flushSoon():t.inputState.compositionPendingChange?Promise.resolve().then(()=>t.observer.flush()):setTimeout(()=>{t.inputState.composing<0&&t.docView.hasComposition&&t.update([])},50)},tl.contextmenu=t=>{t.inputState.lastContextMenu=Date.now()},tr.beforeinput=(t,e)=>{var i;let o;if(x.chrome&&x.android&&(o=to.find(t=>t.inputType==e.inputType))&&(t.observer.delayAndroidKey(o.key,o.keyCode),"Backspace"==o.key||"Delete"==o.key)){let e=(null===(i=window.visualViewport)||void 0===i?void 0:i.height)||0;setTimeout(()=>{var i;((null===(i=window.visualViewport)||void 0===i?void 0:i.height)||0)>e+10&&t.hasFocus&&(t.contentDOM.blur(),t.focus())},100)}return!1};let tg=new Set;function firefoxCopyCutHack(t){tg.has(t)||(tg.add(t),t.addEventListener("copy",()=>{}),t.addEventListener("cut",()=>{}))}let tm=["pre-wrap","normal","pre-line","break-spaces"];let HeightOracle=class HeightOracle{constructor(t){this.lineWrapping=t,this.doc=l.xv.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30,this.heightChanged=!1}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/(this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return tm.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i<t.length;i++){let o=t[i];o<0?i++:this.heightSamples[Math.floor(10*o)]||(e=!0,this.heightSamples[Math.floor(10*o)]=!0)}return e}refresh(t,e,i,o,s,n){let r=tm.indexOf(t)>-1,l=Math.round(e)!=Math.round(this.lineHeight)||this.lineWrapping!=r;if(this.lineWrapping=r,this.lineHeight=e,this.charWidth=i,this.textHeight=o,this.lineLength=s,l){this.heightSamples={};for(let t=0;t<n.length;t++){let e=n[t];e<0?t++:this.heightSamples[Math.floor(10*e)]=!0}}return l}};let MeasuredHeights=class MeasuredHeights{constructor(t,e){this.from=t,this.heights=e,this.index=0}get more(){return this.index<this.heights.length}};let BlockInfo=class BlockInfo{constructor(t,e,i,o,s){this.from=t,this.length=e,this.top=i,this.height=o,this._content=s}get type(){return"number"==typeof this._content?k.Text:Array.isArray(this._content)?this._content:this._content.type}get to(){return this.from+this.length}get bottom(){return this.top+this.height}get widget(){return this._content instanceof PointDecoration?this._content.widget:null}get widgetLineBreaks(){return"number"==typeof this._content?this._content:0}join(t){let e=(Array.isArray(this._content)?this._content:[this]).concat(Array.isArray(t._content)?t._content:[t]);return new BlockInfo(this.from,this.length+t.length,this.top,this.height+t.height,e)}};var tw=((r=tw||(tw={}))[r.ByPos=0]="ByPos",r[r.ByHeight=1]="ByHeight",r[r.ByPosNoHeight=2]="ByPosNoHeight",r);let HeightMap=class HeightMap{constructor(t,e,i=2){this.length=t,this.height=e,this.flags=i}get outdated(){return(2&this.flags)>0}set outdated(t){this.flags=(t?2:0)|-3&this.flags}setHeight(t,e){this.height!=e&&(Math.abs(this.height-e)>.001&&(t.heightChanged=!0),this.height=e)}replace(t,e,i){return HeightMap.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,o){let s=this,n=i.doc;for(let r=o.length-1;r>=0;r--){let{fromA:l,toA:a,fromB:h,toB:c}=o[r],d=s.lineAt(l,tw.ByPosNoHeight,i.setDoc(e),0,0),u=d.to>=a?d:s.lineAt(a,tw.ByPosNoHeight,i,0,0);for(c+=u.to-a,a=u.to;r>0&&d.from<=o[r-1].toA;)l=o[r-1].fromA,h=o[r-1].fromB,r--,l<d.from&&(d=s.lineAt(l,tw.ByPosNoHeight,i,0,0));h+=d.from-l,l=d.from;let f=NodeBuilder.build(i.setDoc(n),t,h,c);s=s.replace(l,a,f)}return s.updateHeight(i,0)}static empty(){return new HeightMapText(0,0)}static of(t){if(1==t.length)return t[0];let e=0,i=t.length,o=0,s=0;for(;;)if(e==i){if(o>2*s){let s=t[e-1];s.break?t.splice(--e,1,s.left,null,s.right):t.splice(--e,1,s.left,s.right),i+=1+s.break,o-=s.size}else if(s>2*o){let e=t[i];e.break?t.splice(i,1,e.left,null,e.right):t.splice(i,1,e.left,e.right),i+=2+e.break,s-=e.size}else break}else if(o<s){let i=t[e++];i&&(o+=i.size)}else{let e=t[--i];e&&(s+=e.size)}let n=0;return null==t[e-1]?(n=1,e--):null==t[e]&&(n=1,i++),new HeightMapBranch(HeightMap.of(t.slice(0,e)),n,HeightMap.of(t.slice(i)))}};HeightMap.prototype.size=1;let HeightMapBlock=class HeightMapBlock extends HeightMap{constructor(t,e,i){super(t,e),this.deco=i}blockAt(t,e,i,o){return new BlockInfo(o,this.length,i,this.height,this.deco||0)}lineAt(t,e,i,o,s){return this.blockAt(0,i,o,s)}forEachLine(t,e,i,o,s,n){t<=s+this.length&&e>=s&&n(this.blockAt(0,i,o,s))}updateHeight(t,e=0,i=!1,o){return o&&o.from<=e&&o.more&&this.setHeight(t,o.heights[o.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}};let HeightMapText=class HeightMapText extends HeightMapBlock{constructor(t,e){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(t,e,i,o){return new BlockInfo(o,this.length,i,this.height,this.breaks)}replace(t,e,i){let o=i[0];return 1==i.length&&(o instanceof HeightMapText||o instanceof HeightMapGap&&4&o.flags)&&10>Math.abs(this.length-o.length)?(o instanceof HeightMapGap?o=new HeightMapText(o.length,this.height):o.height=this.height,this.outdated||(o.outdated=!1),o):HeightMap.of(i)}updateHeight(t,e=0,i=!1,o){return o&&o.from<=e&&o.more?this.setHeight(t,o.heights[o.index++]):(i||this.outdated)&&this.setHeight(t,Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}};let HeightMapGap=class HeightMapGap extends HeightMap{constructor(t){super(t,0)}heightMetrics(t,e){let i=t.doc.lineAt(e).number,o=t.doc.lineAt(e+this.length).number,s=o-i+1,n,r=0;if(t.lineWrapping){let e=Math.min(this.height,t.lineHeight*s);n=e/s,this.length>s+1&&(r=(this.height-e)/(this.length-s-1))}else n=this.height/s;return{firstLine:i,lastLine:o,perLine:n,perChar:r}}blockAt(t,e,i,o){let{firstLine:s,lastLine:n,perLine:r,perChar:l}=this.heightMetrics(e,o);if(e.lineWrapping){let s=o+Math.round(Math.max(0,Math.min(1,(t-i)/this.height))*this.length),n=e.doc.lineAt(s),a=r+n.length*l,h=Math.max(i,t-a/2);return new BlockInfo(n.from,n.length,h,a,0)}{let o=Math.max(0,Math.min(n-s,Math.floor((t-i)/r))),{from:l,length:a}=e.doc.line(s+o);return new BlockInfo(l,a,i+r*o,r,0)}}lineAt(t,e,i,o,s){if(e==tw.ByHeight)return this.blockAt(t,i,o,s);if(e==tw.ByPosNoHeight){let{from:e,to:o}=i.doc.lineAt(t);return new BlockInfo(e,o-e,0,0,0)}let{firstLine:n,perLine:r,perChar:l}=this.heightMetrics(i,s),a=i.doc.lineAt(t),h=r+a.length*l,c=a.number-n,d=o+r*c+l*(a.from-s-c);return new BlockInfo(a.from,a.length,Math.max(o,Math.min(d,o+this.height-h)),h,0)}forEachLine(t,e,i,o,s,n){t=Math.max(t,s),e=Math.min(e,s+this.length);let{firstLine:r,perLine:l,perChar:a}=this.heightMetrics(i,s);for(let h=t,c=o;h<=e;){let e=i.doc.lineAt(h);if(h==t){let i=e.number-r;c+=l*i+a*(t-s-i)}let o=l+a*e.length;n(new BlockInfo(e.from,e.length,c,o,0)),c+=o,h=e.to+1}}replace(t,e,i){let o=this.length-e;if(o>0){let t=i[i.length-1];t instanceof HeightMapGap?i[i.length-1]=new HeightMapGap(t.length+o):i.push(null,new HeightMapGap(o-1))}if(t>0){let e=i[0];e instanceof HeightMapGap?i[0]=new HeightMapGap(t+e.length):i.unshift(new HeightMapGap(t-1),null)}return HeightMap.of(i)}decomposeLeft(t,e){e.push(new HeightMapGap(t-1),null)}decomposeRight(t,e){e.push(null,new HeightMapGap(this.length-t-1))}updateHeight(t,e=0,i=!1,o){let s=e+this.length;if(o&&o.from<=e+this.length&&o.more){let i=[],n=Math.max(e,o.from),r=-1;for(o.from>e&&i.push(new HeightMapGap(o.from-e-1).updateHeight(t,e));n<=s&&o.more;){let e=t.doc.lineAt(n).length;i.length&&i.push(null);let s=o.heights[o.index++];-1==r?r=s:Math.abs(s-r)>=.001&&(r=-2);let l=new HeightMapText(e,s);l.outdated=!1,i.push(l),n+=e+1}n<=s&&i.push(null,new HeightMapGap(s-n).updateHeight(t,n));let l=HeightMap.of(i);return(r<0||Math.abs(l.height-this.height)>=.001||Math.abs(r-this.heightMetrics(t,e).perLine)>=.001)&&(t.heightChanged=!0),l}return(i||this.outdated)&&(this.setHeight(t,t.heightForGap(e,e+this.length)),this.outdated=!1),this}toString(){return`gap(${this.length})`}};let HeightMapBranch=class HeightMapBranch extends HeightMap{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return 1&this.flags}blockAt(t,e,i,o){let s=i+this.left.height;return t<s?this.left.blockAt(t,e,i,o):this.right.blockAt(t,e,s,o+this.left.length+this.break)}lineAt(t,e,i,o,s){let n=o+this.left.height,r=s+this.left.length+this.break,l=e==tw.ByHeight?t<n:t<r,a=l?this.left.lineAt(t,e,i,o,s):this.right.lineAt(t,e,i,n,r);if(this.break||(l?a.to<r:a.from>r))return a;let h=e==tw.ByPosNoHeight?tw.ByPosNoHeight:tw.ByPos;return l?a.join(this.right.lineAt(r,h,i,n,r)):this.left.lineAt(r,h,i,o,s).join(a)}forEachLine(t,e,i,o,s,n){let r=o+this.left.height,l=s+this.left.length+this.break;if(this.break)t<l&&this.left.forEachLine(t,e,i,o,s,n),e>=l&&this.right.forEachLine(t,e,i,r,l,n);else{let a=this.lineAt(l,tw.ByPos,i,o,s);t<a.from&&this.left.forEachLine(t,a.from-1,i,o,s,n),a.to>=t&&a.from<=e&&n(a),e>a.to&&this.right.forEachLine(a.to+1,e,i,r,l,n)}}replace(t,e,i){let o=this.left.length+this.break;if(e<o)return this.balanced(this.left.replace(t,e,i),this.right);if(t>this.left.length)return this.balanced(this.left,this.right.replace(t-o,e-o,i));let s=[];t>0&&this.decomposeLeft(t,s);let n=s.length;for(let t of i)s.push(t);if(t>0&&mergeGaps(s,n-1),e<this.length){let t=s.length;this.decomposeRight(e,s),mergeGaps(s,t)}return HeightMap.of(s)}decomposeLeft(t,e){let i=this.left.length;if(t<=i)return this.left.decomposeLeft(t,e);e.push(this.left),this.break&&t>=++i&&e.push(null),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,o=i+this.break;if(t>=o)return this.right.decomposeRight(t-o,e);t<i&&this.left.decomposeRight(t,e),this.break&&t<o&&e.push(null),e.push(this.right)}balanced(t,e){return t.size>2*e.size||e.size>2*t.size?HeightMap.of(this.break?[t,null,e]:[t,e]):(this.left=t,this.right=e,this.height=t.height+e.height,this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,o){let{left:s,right:n}=this,r=e+s.length+this.break,l=null;return(o&&o.from<=e+s.length&&o.more?l=s=s.updateHeight(t,e,i,o):s.updateHeight(t,e,i),o&&o.from<=r+n.length&&o.more?l=n=n.updateHeight(t,r,i,o):n.updateHeight(t,r,i),l)?this.balanced(s,n):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function mergeGaps(t,e){let i,o;null==t[e]&&(i=t[e-1])instanceof HeightMapGap&&(o=t[e+1])instanceof HeightMapGap&&t.splice(e-1,3,new HeightMapGap(i.length+1+o.length))}let NodeBuilder=class NodeBuilder{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let t=Math.min(e,this.lineEnd),i=this.nodes[this.nodes.length-1];i instanceof HeightMapText?i.length+=t-this.pos:(t>this.pos||!this.isCovered)&&this.nodes.push(new HeightMapText(t-this.pos,-1)),this.writtenTo=t,e>t&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t<e||i.heightRelevant){let o=i.widget?i.widget.estimatedHeight:0,s=i.widget?i.widget.lineBreaks:0;o<0&&(o=this.oracle.lineHeight);let n=e-t;i.block?this.addBlock(new HeightMapBlock(n,o,i)):(n||s||o>=5)&&this.addLineDeco(o,s,n)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd<this.pos&&(this.lineEnd=this.oracle.doc.lineAt(this.pos).to)}enterLine(){if(this.lineStart>-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTo<t&&((this.writtenTo<t-1||null==this.nodes[this.nodes.length-1])&&this.nodes.push(this.blankContent(this.writtenTo,t-1)),this.nodes.push(null)),this.pos>t&&this.nodes.push(new HeightMapText(this.pos-t,-1)),this.writtenTo=this.pos}blankContent(t,e){let i=new HeightMapGap(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof HeightMapText)return t;let e=new HeightMapText(0,-1);return this.nodes.push(e),e}addBlock(t){this.enterLine();let e=t.deco;e&&e.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,e&&e.endSide>0&&(this.covering=t)}addLineDeco(t,e,i){let o=this.ensureLine();o.length+=i,o.collapsed+=i,o.widgetHeight=Math.max(o.widgetHeight,t),o.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=0==this.nodes.length?null:this.nodes[this.nodes.length-1];!(this.lineStart>-1)||e instanceof HeightMapText||this.isCovered?(this.writtenTo<this.pos||null==e)&&this.nodes.push(this.blankContent(this.writtenTo,this.pos)):this.nodes.push(new HeightMapText(0,-1));let i=t;for(let t of this.nodes)t instanceof HeightMapText&&t.updateHeight(this.oracle,i),i+=t?t.length:1;return this.nodes}static build(t,e,i,o){let s=new NodeBuilder(i,t);return l.Xs.spans(e,i,o,s,0),s.finish(i)}};function heightRelevantDecoChanges(t,e,i){let o=new DecorationComparator;return l.Xs.compare(t,e,i,o,0),o.changes}let DecorationComparator=class DecorationComparator{constructor(){this.changes=[]}compareRange(){}comparePoint(t,e,i,o){(t<e||i&&i.heightRelevant||o&&o.heightRelevant)&&addRange(t,e,this.changes,5)}};function visiblePixelRange(t,e){let i=t.getBoundingClientRect(),o=t.ownerDocument,s=o.defaultView||window,n=Math.max(0,i.left),r=Math.min(s.innerWidth,i.right),l=Math.max(0,i.top),a=Math.min(s.innerHeight,i.bottom);for(let e=t.parentNode;e&&e!=o.body;)if(1==e.nodeType){let i=e,o=window.getComputedStyle(i);if((i.scrollHeight>i.clientHeight||i.scrollWidth>i.clientWidth)&&"visible"!=o.overflow){let o=i.getBoundingClientRect();n=Math.max(n,o.left),r=Math.min(r,o.right),l=Math.max(l,o.top),a=e==t.parentNode?o.bottom:Math.min(a,o.bottom)}e="absolute"==o.position||"fixed"==o.position?i.offsetParent:i.parentNode}else if(11==e.nodeType)e=e.host;else break;return{left:n-i.left,right:Math.max(n,r)-i.left,top:l-(i.top+e),bottom:Math.max(l,a)-(i.top+e)}}function fullPixelRange(t,e){let i=t.getBoundingClientRect();return{left:0,right:i.right-i.left,top:e,bottom:i.bottom-(i.top+e)}}let LineGap=class LineGap{constructor(t,e,i){this.from=t,this.to=e,this.size=i}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;i<t.length;i++){let o=t[i],s=e[i];if(o.from!=s.from||o.to!=s.to||o.size!=s.size)return!1}return!0}draw(t,e){return Decoration.replace({widget:new LineGapWidget(this.size*(e?t.scaleY:t.scaleX),e)}).range(this.from,this.to)}};let LineGapWidget=class LineGapWidget extends WidgetType{constructor(t,e){super(),this.size=t,this.vertical=e}eq(t){return t.size==this.size&&t.vertical==this.vertical}toDOM(){let t=document.createElement("div");return this.vertical?t.style.height=this.size+"px":(t.style.width=this.size+"px",t.style.height="2px",t.style.display="inline-block"),t}get estimatedHeight(){return this.vertical?this.size:-1}};let ViewState=class ViewState{constructor(t){this.state=t,this.pixelViewport={left:0,right:window.innerWidth,top:0,bottom:0},this.inView=!0,this.paddingTop=0,this.paddingBottom=0,this.contentDOMWidth=0,this.contentDOMHeight=0,this.editorHeight=0,this.editorWidth=0,this.scrollTop=0,this.scrolledToBottom=!0,this.scaleX=1,this.scaleY=1,this.scrollAnchorPos=0,this.scrollAnchorHeight=-1,this.scaler=tv,this.scrollTarget=null,this.printing=!1,this.mustMeasureContent=!0,this.defaultTextDirection=$.LTR,this.visibleRanges=[],this.mustEnforceCursorAssoc=!1;let e=t.facet(I).some(t=>"function"!=typeof t&&"cm-lineWrapping"==t.class);this.heightOracle=new HeightOracle(e),this.stateDeco=t.facet(z).filter(t=>"function"!=typeof t),this.heightMap=HeightMap.empty().applyChanges(this.stateDeco,l.xv.empty,this.heightOracle.setDoc(t.doc),[new ChangedRange(0,0,0,t.doc.length)]),this.viewport=this.getViewport(0,null),this.updateViewportLines(),this.updateForViewport(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=Decoration.set(this.lineGaps.map(t=>t.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let o=i?e.head:e.anchor;if(!t.some(({from:t,to:e})=>o>=t&&o<=e)){let{from:e,to:i}=this.lineBlockAt(o);t.push(new Viewport(e,i))}}this.viewports=t.sort((t,e)=>t.from-e.from),this.scaler=this.heightMap.height<=7e6?tv:new BigScaler(this.heightOracle,this.heightMap,this.viewports)}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(1==this.scaler.scale?t:scaleBlock(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=this.state.facet(z).filter(t=>"function"!=typeof t);let o=t.changedRanges,s=ChangedRange.extendWithRanges(o,heightRelevantDecoChanges(i,this.stateDeco,t?t.changes:l.as.empty(this.state.doc.length))),n=this.heightMap.height,r=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),s),this.heightMap.height!=n&&(t.flags|=2),r?(this.scrollAnchorPos=t.changes.mapPos(r.from,-1),this.scrollAnchorHeight=r.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=this.heightMap.height);let a=s.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.head<a.from||e.range.head>a.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,e));let h=!t.changes.empty||2&t.flags||a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,this.updateForViewport(),h&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&t.selectionSet&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(P)&&(this.mustEnforceCursorAssoc=!0)}measure(t){let e=t.contentDOM,i=window.getComputedStyle(e),o=this.heightOracle,s=i.whiteSpace;this.defaultTextDirection="rtl"==i.direction?$.RTL:$.LTR;let n=this.heightOracle.mustRefreshForWrapping(s),r=e.getBoundingClientRect(),a=n||this.mustMeasureContent||this.contentDOMHeight!=r.height;this.contentDOMHeight=r.height,this.mustMeasureContent=!1;let h=0,c=0;if(r.width&&r.height){let{scaleX:t,scaleY:i}=getScale(e,r);(this.scaleX!=t||this.scaleY!=i)&&(this.scaleX=t,this.scaleY=i,h|=8,n=a=!0)}let d=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=d||this.paddingBottom!=u)&&(this.paddingTop=d,this.paddingBottom=u,h|=10),this.editorWidth!=t.scrollDOM.clientWidth&&(o.lineWrapping&&(a=!0),this.editorWidth=t.scrollDOM.clientWidth,h|=8);let f=t.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=f&&(this.scrollAnchorHeight=-1,this.scrollTop=f),this.scrolledToBottom=isScrolledToBottom(t.scrollDOM);let p=(this.printing?fullPixelRange:visiblePixelRange)(e,this.paddingTop),g=p.top-this.pixelViewport.top,m=p.bottom-this.pixelViewport.bottom;this.pixelViewport=p;let w=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(w!=this.inView&&(this.inView=w,w&&(a=!0)),!this.inView&&!this.scrollTarget)return 0;let v=r.width;if((this.contentDOMWidth!=v||this.editorHeight!=t.scrollDOM.clientHeight)&&(this.contentDOMWidth=r.width,this.editorHeight=t.scrollDOM.clientHeight,h|=8),a){let e=t.docView.measureVisibleLineHeights(this.viewport);if(o.mustRefreshForHeights(e)&&(n=!0),n||o.lineWrapping&&Math.abs(v-this.contentDOMWidth)>o.charWidth){let{lineHeight:i,charWidth:r,textHeight:l}=t.docView.measureTextSize();(n=i>0&&o.refresh(s,i,r,l,v/r,e))&&(t.docView.minWidth=0,h|=8)}for(let i of(g>0&&m>0?c=Math.max(g,m):g<0&&m<0&&(c=Math.min(g,m)),o.heightChanged=!1,this.viewports)){let s=i.from==this.viewport.from?e:t.docView.measureVisibleLineHeights(i);this.heightMap=(n?HeightMap.empty().applyChanges(this.stateDeco,l.xv.empty,this.heightOracle,[new ChangedRange(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(o,0,n,new MeasuredHeights(i.from,s))}o.heightChanged&&(h|=2)}let b=!this.viewportIsAppropriate(this.viewport,c)||this.scrollTarget&&(this.scrollTarget.range.head<this.viewport.from||this.scrollTarget.range.head>this.viewport.to);return b&&(this.viewport=this.getViewport(c,this.scrollTarget)),this.updateForViewport(),(2&h||b)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(n?[]:this.lineGaps,t)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),o=this.heightMap,s=this.heightOracle,{visibleTop:n,visibleBottom:r}=this,l=new Viewport(o.lineAt(n-1e3*i,tw.ByHeight,s,0,0).from,o.lineAt(r+(1-i)*1e3,tw.ByHeight,s,0,0).to);if(e){let{head:t}=e.range;if(t<l.from||t>l.to){let i=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),n=o.lineAt(t,tw.ByPos,s,0,0),r;r="center"==e.y?(n.top+n.bottom)/2-i/2:"start"==e.y||"nearest"==e.y&&t<l.from?n.top:n.bottom-i,l=new Viewport(o.lineAt(r-500,tw.ByHeight,s,0,0).from,o.lineAt(r+i+500,tw.ByHeight,s,0,0).to)}}return l}mapViewport(t,e){let i=e.mapPos(t.from,-1),o=e.mapPos(t.to,1);return new Viewport(this.heightMap.lineAt(i,tw.ByPos,this.heightOracle,0,0).from,this.heightMap.lineAt(o,tw.ByPos,this.heightOracle,0,0).to)}viewportIsAppropriate({from:t,to:e},i=0){if(!this.inView)return!0;let{top:o}=this.heightMap.lineAt(t,tw.ByPos,this.heightOracle,0,0),{bottom:s}=this.heightMap.lineAt(e,tw.ByPos,this.heightOracle,0,0),{visibleTop:n,visibleBottom:r}=this;return(0==t||o<=n-Math.max(10,Math.min(-i,250)))&&(e==this.state.doc.length||s>=r+Math.max(10,Math.min(i,250)))&&o>n-2e3&&s<r+2e3}mapLineGaps(t,e){if(!t.length||e.empty)return t;let i=[];for(let o of t)e.touchesRange(o.from,o.to)||i.push(new LineGap(e.mapPos(o.from),e.mapPos(o.to),o.size));return i}ensureLineGaps(t,e){let i=this.heightOracle.lineWrapping,o=i?1e4:2e3,s=o>>1,n=o<<1;if(this.defaultTextDirection!=$.LTR&&!i)return[];let r=[],addGap=(o,n,a,h)=>{if(n-o<s)return;let c=this.state.selection.main,d=[c.from];for(let t of(c.empty||d.push(c.to),d))if(t>o&&t<n){addGap(o,t-10,a,h),addGap(t+10,n,a,h);return}let u=find(t,t=>t.from>=a.from&&t.to<=a.to&&Math.abs(t.from-o)<s&&Math.abs(t.to-n)<s&&!d.some(e=>t.from<e&&t.to>e));if(!u){if(n<a.to&&e&&i&&e.visibleRanges.some(t=>t.from<=n&&t.to>=n)){let t=e.moveToLineBoundary(l.jT.cursor(n),!1,!0).head;t>o&&(n=t)}u=new LineGap(o,n,this.gapSize(a,o,n,h))}r.push(u)};for(let t of this.viewportLines){let e,s;if(t.length<n)continue;let r=lineStructure(t.from,t.to,this.stateDeco);if(r.total<n)continue;let l=this.scrollTarget?this.scrollTarget.range.head:null;if(i){let i,n,a=o/this.heightOracle.lineLength*this.heightOracle.lineHeight;if(null!=l){let e=findFraction(r,l),o=((this.visibleBottom-this.visibleTop)/2+a)/t.height;i=e-o,n=e+o}else i=(this.visibleTop-t.top-a)/t.height,n=(this.visibleBottom-t.top+a)/t.height;e=findPosition(r,i),s=findPosition(r,n)}else{let t,i,n=r.total*this.heightOracle.charWidth,a=o*this.heightOracle.charWidth;if(null!=l){let e=findFraction(r,l),o=((this.pixelViewport.right-this.pixelViewport.left)/2+a)/n;t=e-o,i=e+o}else t=(this.pixelViewport.left-a)/n,i=(this.pixelViewport.right+a)/n;e=findPosition(r,t),s=findPosition(r,i)}e>t.from&&addGap(t.from,e,t,r),s<t.to&&addGap(s,t.to,t,r)}return r}gapSize(t,e,i,o){let s=findFraction(o,i)-findFraction(o,e);return this.heightOracle.lineWrapping?t.height*s:o.total*this.heightOracle.charWidth*s}updateLineGaps(t){LineGap.same(t,this.lineGaps)||(this.lineGaps=t,this.lineGapDeco=Decoration.set(t.map(t=>t.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let e=[];l.Xs.spans(t,this.viewport.from,this.viewport.to,{span(t,i){e.push({from:t,to:i})},point(){}},20);let i=e.length!=this.visibleRanges.length||this.visibleRanges.some((t,i)=>t.from!=e[i].from||t.to!=e[i].to);return this.visibleRanges=e,i?4:0}lineBlockAt(t){return t>=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||scaleBlock(this.heightMap.lineAt(t,tw.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return scaleBlock(this.heightMap.lineAt(this.scaler.fromDOM(t),tw.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return scaleBlock(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}};let Viewport=class Viewport{constructor(t,e){this.from=t,this.to=e}};function lineStructure(t,e,i){let o=[],s=t,n=0;return l.Xs.spans(i,t,e,{span(){},point(t,e){t>s&&(o.push({from:s,to:t}),n+=t-s),s=e}},20),s<e&&(o.push({from:s,to:e}),n+=e-s),{total:n,ranges:o}}function findPosition({total:t,ranges:e},i){if(i<=0)return e[0].from;if(i>=1)return e[e.length-1].to;let o=Math.floor(t*i);for(let t=0;;t++){let{from:i,to:s}=e[t],n=s-i;if(o<=n)return i+o;o-=n}}function findFraction(t,e){let i=0;for(let{from:o,to:s}of t.ranges){if(e<=s){i+=e-o;break}i+=s-o}return i/t.total}function find(t,e){for(let i of t)if(e(i))return i}let tv={toDOM:t=>t,fromDOM:t=>t,scale:1};let BigScaler=class BigScaler{constructor(t,e,i){let o=0,s=0,n=0;for(let r of(this.viewports=i.map(({from:i,to:s})=>{let n=e.lineAt(i,tw.ByPos,t,0,0).top,r=e.lineAt(s,tw.ByPos,t,0,0).bottom;return o+=r-n,{from:i,to:s,top:n,bottom:r,domTop:0,domBottom:0}}),this.scale=(7e6-o)/(e.height-o),this.viewports))r.domTop=n+(r.top-s)*this.scale,n=r.domBottom=r.domTop+(r.bottom-r.top),s=r.bottom}toDOM(t){for(let e=0,i=0,o=0;;e++){let s=e<this.viewports.length?this.viewports[e]:null;if(!s||t<s.top)return o+(t-i)*this.scale;if(t<=s.bottom)return s.domTop+(t-s.top);i=s.bottom,o=s.domBottom}}fromDOM(t){for(let e=0,i=0,o=0;;e++){let s=e<this.viewports.length?this.viewports[e]:null;if(!s||t<s.domTop)return i+(t-o)/this.scale;if(t<=s.domBottom)return s.top+(t-s.domTop);i=s.bottom,o=s.domBottom}}};function scaleBlock(t,e){if(1==e.scale)return t;let i=e.toDOM(t.top),o=e.toDOM(t.bottom);return new BlockInfo(t.from,t.length,i,o-i,Array.isArray(t._content)?t._content.map(t=>scaleBlock(t,e)):t._content)}let tb=l.r$.define({combine:t=>t.join(" ")}),ty=l.r$.define({combine:t=>t.indexOf(!0)>-1}),tS=a.V.newName(),tM=a.V.newName(),tx=a.V.newName(),tC={"&light":"."+tM,"&dark":"."+tx};function buildTheme(t,e,i){return new a.V(e,{finish:e=>/&/.test(e)?e.replace(/&\w*/,e=>{if("&"==e)return t;if(!i||!i[e])throw RangeError(`Unsupported selector: ${e}`);return i[e]}):t+" "+e})}let tk=buildTheme("."+tS,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#444"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",insetInlineStart:0,zIndex:200},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",borderRight:"1px solid #ddd"},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top"},".cm-highlightSpace:before":{content:"attr(data-display)",position:"absolute",pointerEvents:"none",color:"#888"},".cm-highlightTab":{backgroundImage:'url(\'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="200" height="20"><path stroke="%23888" stroke-width="1" fill="none" d="M1 10H196L190 5M190 15L196 10M197 4L197 16"/></svg>\')',backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},tC);let DOMReader=class DOMReader{constructor(t,e){this.points=t,this.text="",this.lineSeparator=e.facet(l.yy.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+="￿"}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let o=t;;){this.findPointBefore(i,o);let t=this.text.length;this.readNode(o);let s=o.nextSibling;if(s==e)break;let n=ContentView.get(o),r=ContentView.get(s);(n&&r?n.breakAfter:(n?n.breakAfter:isBlockElement(o))||isBlockElement(s)&&("BR"!=o.nodeName||o.cmIgnore)&&this.text.length>t)&&this.lineBreak(),o=s}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,o=this.lineSeparator?null:/\r\n?|\n/g;;){let s=-1,n=1,r;if(this.lineSeparator?(s=e.indexOf(this.lineSeparator,i),n=this.lineSeparator.length):(r=o.exec(e))&&(s=r.index,n=r[0].length),this.append(e.slice(i,s<0?e.length:s)),s<0)break;if(this.lineBreak(),n>1)for(let e of this.points)e.node==t&&e.pos>this.text.length&&(e.pos-=n-1);i=s+n}}readNode(t){if(t.cmIgnore)return;let e=ContentView.get(t),i=e&&e.overrideDOMText;if(null!=i){this.findPointInside(t,i.length);for(let t=i.iter();!t.next().done;)t.lineBreak?this.lineBreak():this.append(t.value)}else 3==t.nodeType?this.readTextNode(t):"BR"==t.nodeName?t.nextSibling&&this.lineBreak():1==t.nodeType&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(3==t.nodeType?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+(isAtEnd(t,i.node,i.offset)?e:0))}};function isAtEnd(t,e,i){for(;;){if(!e||i<maxOffset(e))return!1;if(e==t)return!0;i=domIndex(e)+1,e=e.parentNode}}function isBlockElement(t){return 1==t.nodeType&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(t.nodeName)}let DOMPoint=class DOMPoint{constructor(t,e){this.node=t,this.offset=e,this.pos=-1}};let DOMChange=class DOMChange{constructor(t,e,i,o){this.typeOver=o,this.bounds=null,this.text="";let{impreciseHead:s,impreciseAnchor:n}=t.docView;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=t.docView.domBoundsAround(e,i,0))){let e=s||n?[]:selectionPoints(t),i=new DOMReader(e,t.state);i.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=i.text,this.newSel=selectionFromPoints(e,this.bounds.from)}else{let e=t.observer.selectionRange,i=s&&s.node==e.focusNode&&s.offset==e.focusOffset||!contains(t.contentDOM,e.focusNode)?t.state.selection.main.head:t.docView.posFromDOM(e.focusNode,e.focusOffset),o=n&&n.node==e.anchorNode&&n.offset==e.anchorOffset||!contains(t.contentDOM,e.anchorNode)?t.state.selection.main.anchor:t.docView.posFromDOM(e.anchorNode,e.anchorOffset);this.newSel=l.jT.single(o,i)}}};function applyDOMChange(t,e){let i;let{newSel:o}=e,s=t.state.selection.main,n=t.inputState.lastKeyTime>Date.now()-100?t.inputState.lastKeyCode:-1;if(e.bounds){let{from:o,to:r}=e.bounds,a=s.from,h=null;(8===n||x.android&&e.text.length<r-o)&&(a=s.to,h="end");let c=findDiff(t.state.doc.sliceString(o,r,"￿"),e.text,a-o,h);c&&(x.chrome&&13==n&&c.toB==c.from+2&&"￿￿"==e.text.slice(c.from,c.toB)&&c.toB--,i={from:o+c.from,to:o+c.toA,insert:l.xv.of(e.text.slice(c.from,c.toB).split("￿"))})}else o&&(!t.hasFocus&&t.state.facet(H)||o.main.eq(s))&&(o=null);if(!i&&!o)return!1;if(!i&&e.typeOver&&!s.empty&&o&&o.main.empty?i={from:s.from,to:s.to,insert:t.state.doc.slice(s.from,s.to)}:i&&i.from>=s.from&&i.to<=s.to&&(i.from!=s.from||i.to!=s.to)&&s.to-s.from-(i.to-i.from)<=4?i={from:s.from,to:s.to,insert:t.state.doc.slice(s.from,i.from).append(i.insert).append(t.state.doc.slice(i.to,s.to))}:(x.mac||x.android)&&i&&i.from==i.to&&i.from==s.head-1&&/^\. ?$/.test(i.insert.toString())&&"off"==t.contentDOM.getAttribute("autocorrect")?(o&&2==i.insert.length&&(o=l.jT.single(o.main.anchor-1,o.main.head-1)),i={from:s.from,to:s.to,insert:l.xv.of([" "])}):x.chrome&&i&&i.from==i.to&&i.from==s.head&&"\n "==i.insert.toString()&&t.lineWrapping&&(o&&(o=l.jT.single(o.main.anchor-1,o.main.head-1)),i={from:s.from,to:s.to,insert:l.xv.of([" "])}),i){let e;if(x.ios&&t.inputState.flushIOSKey()||x.android&&(i.from==s.from&&i.to==s.to&&1==i.insert.length&&2==i.insert.lines&&dispatchKey(t.contentDOM,"Enter",13)||(i.from==s.from-1&&i.to==s.to&&0==i.insert.length||8==n&&i.insert.length<i.to-i.from&&i.to>s.head)&&dispatchKey(t.contentDOM,"Backspace",8)||i.from==s.from&&i.to==s.to+1&&0==i.insert.length&&dispatchKey(t.contentDOM,"Delete",46)))return!0;let r=i.insert.toString();t.inputState.composing>=0&&t.inputState.composing++;let defaultInsert=()=>e||(e=applyDefaultInsert(t,i,o));return t.state.facet(R).some(e=>e(t,i.from,i.to,r,defaultInsert))||t.dispatch(defaultInsert()),!0}if(!o||o.main.eq(s))return!1;{let e=!1,i="select";return t.inputState.lastSelectionTime>Date.now()-50&&("select"==t.inputState.lastSelectionOrigin&&(e=!0),i=t.inputState.lastSelectionOrigin),t.dispatch({selection:o,scrollIntoView:e,userEvent:i}),!0}}function applyDefaultInsert(t,e,i){let o,s=t.state,n=s.selection.main;if(e.from>=n.from&&e.to<=n.to&&e.to-e.from>=(n.to-n.from)/3&&(!i||i.main.empty&&i.main.from==e.from+e.insert.length)&&t.inputState.composing<0){let i=n.from<e.from?s.sliceDoc(n.from,e.from):"",r=n.to>e.to?s.sliceDoc(e.to,n.to):"";o=s.replaceSelection(t.state.toText(i+e.insert.sliceString(0,void 0,t.state.lineBreak)+r))}else{let r=s.changes(e),a=i&&i.main.to<=r.newLength?i.main:void 0;if(s.selection.ranges.length>1&&t.inputState.composing>=0&&e.to<=n.to&&e.to>=n.to-10){let h=t.state.sliceDoc(e.from,e.to),c,d=i&&findCompositionNode(t,i.main.head);if(d){let t=e.insert.length-(e.to-e.from);c={from:d.from,to:d.to-t}}else c=t.state.doc.lineAt(n.head);let u=n.to-e.to,f=n.to-n.from;o=s.changeByRange(i=>{if(i.from==n.from&&i.to==n.to)return{changes:r,range:a||i.map(r)};let o=i.to-u,d=o-h.length;if(i.to-i.from!=f||t.state.sliceDoc(d,o)!=h||i.to>=c.from&&i.from<=c.to)return{range:i};let p=s.changes({from:d,to:o,insert:e.insert}),g=i.to-n.to;return{changes:p,range:a?l.jT.range(Math.max(0,a.anchor+g),Math.max(0,a.head+g)):i.map(p)}})}else o={changes:r,selection:a&&s.selection.replaceRange(a)}}let r="input.type";return(t.composing||t.inputState.compositionPendingChange&&t.inputState.compositionEndedAt>Date.now()-50)&&(t.inputState.compositionPendingChange=!1,r+=".compose",t.inputState.compositionFirstChange&&(r+=".start",t.inputState.compositionFirstChange=!1)),s.update(o,{userEvent:r,scrollIntoView:!0})}function findDiff(t,e,i,o){let s=Math.min(t.length,e.length),n=0;for(;n<s&&t.charCodeAt(n)==e.charCodeAt(n);)n++;if(n==s&&t.length==e.length)return null;let r=t.length,l=e.length;for(;r>0&&l>0&&t.charCodeAt(r-1)==e.charCodeAt(l-1);)r--,l--;if("end"==o){let t=Math.max(0,n-Math.min(r,l));i-=r+t-n}if(r<n&&t.length<e.length){let t=i<=n&&i>=r?n-i:0;n-=t,l=n+(l-r),r=n}else if(l<n){let t=i<=n&&i>=l?n-i:0;n-=t,r=n+(r-l),l=n}return{from:n,toA:r,toB:l}}function selectionPoints(t){let e=[];if(t.root.activeElement!=t.contentDOM)return e;let{anchorNode:i,anchorOffset:o,focusNode:s,focusOffset:n}=t.observer.selectionRange;return i&&(e.push(new DOMPoint(i,o)),(s!=i||n!=o)&&e.push(new DOMPoint(s,n))),e}function selectionFromPoints(t,e){if(0==t.length)return null;let i=t[0].pos,o=2==t.length?t[1].pos:i;return i>-1&&o>-1?l.jT.single(i+e,o+e):null}let tT={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},tA=x.ie&&x.ie_version<=11;let DOMObserver=class DOMObserver{constructor(t){this.view=t,this.active=!1,this.selectionRange=new DOMSelectionState,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let t of e)this.queue.push(t);(x.ie&&x.ie_version<=11||x.ios&&t.composing)&&e.some(t=>"childList"==t.type&&t.removedNodes.length||"characterData"==t.type&&t.oldValue.length>t.target.nodeValue.length)?this.flushSoon():this.flush()}),tA&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),"function"==typeof ResizeObserver&&(this.resizeScroll=new ResizeObserver(()=>{var t;(null===(t=this.view.docView)||void 0===t?void 0:t.lastUpdate)<Date.now()-75&&this.onResize()}),this.resizeScroll.observe(t.scrollDOM)),this.addWindowListeners(this.win=t.win),this.start(),"function"==typeof IntersectionObserver&&(this.intersection=new IntersectionObserver(t=>{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runHandlers("scroll",t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(){this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500)}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){for(let e of(this.gapIntersection.disconnect(),t))this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,o=this.selectionRange;if(i.state.facet(H)?i.root.activeElement!=this.dom:!hasSelection(i.dom,o))return;let s=o.anchorNode&&i.docView.nearest(o.anchorNode);if(s&&s.ignoreEvent(t)){e||(this.selectionChanged=!1);return}(x.ie&&x.ie_version<=11||x.android&&x.chrome)&&!i.state.selection.main.empty&&o.focusNode&&isEquivalentPosition(o.focusNode,o.focusOffset,o.anchorNode,o.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=x.safari&&11==t.root.nodeType&&deepActiveElement(this.dom.ownerDocument)==this.dom&&safariSelectionRangeHack(this.view)||getSelection(t.root);if(!e||this.selectionRange.eq(e))return!1;let i=hasSelection(this.dom,e);return i&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime<Date.now()-300&&atElementStart(this.dom,e)?(this.view.inputState.lastFocusTime=0,t.docView.updateSelection(),!1):(this.selectionRange.setRange(e),i&&(this.selectionChanged=!0),!0)}setSelectionRange(t,e){this.selectionRange.set(t.node,t.offset,e.node,e.offset),this.selectionChanged=!1}clearSelectionRange(){this.selectionRange.set(null,0,null,0)}listenForScroll(){this.parentCheck=-1;let t=0,e=null;for(let i=this.dom;i;)if(1==i.nodeType)!e&&t<this.scrollTargets.length&&this.scrollTargets[t]==i?t++:e||(e=this.scrollTargets.slice(0,t)),e&&e.push(i),i=i.assignedSlot||i.parentNode;else if(11==i.nodeType)i=i.host;else break;if(t<this.scrollTargets.length&&!e&&(e=this.scrollTargets.slice(0,t)),e){for(let t of this.scrollTargets)t.removeEventListener("scroll",this.onScroll);for(let t of this.scrollTargets=e)t.addEventListener("scroll",this.onScroll)}}ignore(t){if(!this.active)return t();try{return this.stop(),t()}finally{this.start(),this.clear()}}start(){this.active||(this.observer.observe(this.dom,tT),tA&&this.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.active=!0)}stop(){this.active&&(this.active=!1,this.observer.disconnect(),tA&&this.dom.removeEventListener("DOMCharacterDataModified",this.onCharData))}clear(){this.processRecords(),this.queue.length=0,this.selectionChanged=!1}delayAndroidKey(t,e){var i;this.delayedAndroidKey||(this.flushingAndroidKey=this.view.win.requestAnimationFrame(()=>{let t=this.delayedAndroidKey;t&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=t.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&t.force&&dispatchKey(this.dom,t.key,t.keyCode))})),this.delayedAndroidKey&&"Enter"!=t||(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange<Date.now()-50||!!(null===(i=this.delayedAndroidKey)||void 0===i?void 0:i.force)})}clearDelayedAndroidKey(){this.win.cancelAnimationFrame(this.flushingAndroidKey),this.delayedAndroidKey=null,this.flushingAndroidKey=-1}flushSoon(){this.delayedFlush<0&&(this.delayedFlush=this.view.win.requestAnimationFrame(()=>{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,o=!1;for(let s of t){let t=this.readMutation(s);t&&(t.typeOver&&(o=!0),-1==e?{from:e,to:i}=t:(e=Math.min(t.from,e),i=Math.max(t.to,i)))}return{from:e,to:i,typeOver:o}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),o=this.selectionChanged&&hasSelection(this.dom,this.selectionRange);if(t<0&&!o)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let s=new DOMChange(this.view,t,e,i);return this.view.docView.domChanged={newSel:s.newSel?s.newSel.main:null},s}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return this.view.requestMeasure(),!1;let i=this.view.state,o=applyDOMChange(this.view,e);return this.view.state==i&&this.view.update([]),o}readMutation(t){let e=this.view.docView.nearest(t.target);if(!e||e.ignoreMutation(t))return null;if(e.markDirty("attributes"==t.type),"attributes"==t.type&&(e.flags|=4),"childList"==t.type){let i=findChild(e,t.previousSibling||t.target.previousSibling,-1),o=findChild(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:o?e.posBefore(o):e.posAtEnd,typeOver:!1}}return"characterData"==t.type?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}destroy(){var t,e,i;for(let o of(this.stop(),null===(t=this.intersection)||void 0===t||t.disconnect(),null===(e=this.gapIntersection)||void 0===e||e.disconnect(),null===(i=this.resizeScroll)||void 0===i||i.disconnect(),this.scrollTargets))o.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey)}};function findChild(t,e,i){for(;e;){let o=ContentView.get(e);if(o&&o.parent==t)return o;let s=e.parentNode;e=s!=t.dom?s:i>0?e.nextSibling:e.previousSibling}return null}function safariSelectionRangeHack(t){let e=null;function read(t){t.preventDefault(),t.stopImmediatePropagation(),e=t.getTargetRanges()[0]}if(t.contentDOM.addEventListener("beforeinput",read,!0),t.dom.ownerDocument.execCommand("indent"),t.contentDOM.removeEventListener("beforeinput",read,!0),!e)return null;let i=e.startContainer,o=e.startOffset,s=e.endContainer,n=e.endOffset,r=t.docView.domAtPos(t.state.selection.main.anchor);return isEquivalentPosition(r.node,r.offset,s,n)&&([i,o,s,n]=[s,n,i,o]),{anchorNode:i,anchorOffset:o,focusNode:s,focusOffset:n}}let EditorView=class EditorView{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return this.inputState.composing>0}get compositionStarted(){return this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:e}=t;for(let i of(this.dispatchTransactions=t.dispatchTransactions||e&&(t=>t.forEach(t=>e(t,this)))||(t=>this.update(t)),this.dispatch=this.dispatch.bind(this),this._root=t.root||getRoot(t.parent)||document,this.viewState=new ViewState(t.state||l.yy.create(t)),t.scrollTo&&t.scrollTo.is(L)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(W).map(t=>new PluginInstance(t)),this.plugins))i.update(this);this.observer=new DOMObserver(this),this.inputState=new InputState(this),this.inputState.ensureHandlers(this.plugins),this.docView=new DocView(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure()}dispatch(...t){let e=1==t.length&&t[0]instanceof l.YW?t:1==t.length&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(0!=this.updateState)throw Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,o,s=this.state;for(let e of t){if(e.startState!=s)throw RangeError("Trying to update state with a transaction that doesn't start from the previous state.");s=e.state}if(this.destroyed){this.viewState.state=s;return}let n=this.hasFocus,r=0,a=null;t.some(t=>t.annotation(tp))?(this.inputState.notifiedFocused=n,r=1):n==this.inputState.notifiedFocused||(this.inputState.notifiedFocused=n,(a=focusChangeTransaction(s,n))||(r=1));let h=this.observer.delayedAndroidKey,c=null;if(h?(this.observer.clearDelayedAndroidKey(),((c=this.observer.readChange())&&!this.state.doc.eq(s.doc)||!this.state.selection.eq(s.selection))&&(c=null)):this.observer.clear(),s.facet(l.yy.phrases)!=this.state.facet(l.yy.phrases))return this.setState(s);o=ViewUpdate.create(this,s,t),o.flags|=r;let d=this.viewState.scrollTarget;try{for(let e of(this.updateState=2,t)){if(d&&(d=d.map(e.changes)),e.scrollIntoView){let{main:t}=e.state.selection;d=new ScrollTarget(t.empty?t:l.jT.cursor(t.head,t.head>t.anchor?-1:1))}for(let t of e.effects)t.is(L)&&(d=t.value.clip(this.state))}this.viewState.update(o,d),this.bidiCache=CachedOrder.update(this.bidiCache,o.changes),o.empty||(this.updatePlugins(o),this.inputState.update(o)),e=this.docView.update(o),this.state.facet(j)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(t=>t.isUserEvent("select.pointer")))}finally{this.updateState=0}if(o.startState.facet(tb)!=o.state.facet(tb)&&(this.viewState.mustMeasureContent=!0),(e||i||d||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),!o.empty)for(let t of this.state.facet(V))try{t(o)}catch(t){logException(this.state,t,"update listener")}(a||c)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),c&&!applyDOMChange(this,c)&&h.force&&dispatchKey(this.contentDOM,h.key,h.keyCode)})}setState(t){if(0!=this.updateState)throw Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let t of this.plugins)t.destroy(this);for(let e of(this.viewState=new ViewState(t),this.plugins=t.facet(W).map(t=>new PluginInstance(t)),this.pluginMap.clear(),this.plugins))e.update(this);this.docView.destroy(),this.docView=new DocView(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(W),i=t.state.facet(W);if(e!=i){let o=[];for(let s of i){let i=e.indexOf(s);if(i<0)o.push(new PluginInstance(s));else{let e=this.plugins[i];e.mustUpdate=t,o.push(e)}}for(let e of this.plugins)e.mustUpdate!=t&&e.destroy(this);this.plugins=o,this.pluginMap.clear()}else for(let e of this.plugins)e.mustUpdate=t;for(let t=0;t<this.plugins.length;t++)this.plugins[t].update(this);e!=i&&this.inputState.ensureHandlers(this.plugins)}measure(t=!0){if(this.destroyed)return;if(this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.scrollDOM,o=i.scrollTop*this.scaleY,{scrollAnchorPos:s,scrollAnchorHeight:n}=this.viewState;Math.abs(o-this.viewState.scrollTop)>1&&(n=-1),this.viewState.scrollAnchorHeight=-1;try{for(let t=0;;t++){if(n<0){if(isScrolledToBottom(i))s=-1,n=this.viewState.heightMap.height;else{let t=this.viewState.scrollAnchorAt(o);s=t.from,n=t.top}}this.updateState=1;let r=this.viewState.measure(this);if(!r&&!this.measureRequests.length&&null==this.viewState.scrollTarget)break;if(t>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let l=[];4&r||([this.measureRequests,l]=[l,this.measureRequests]);let a=l.map(t=>{try{return t.read(this)}catch(t){return logException(this.state,t),tO}}),h=ViewUpdate.create(this,this.state,[]),c=!1;h.flags|=r,e?e.flags|=r:e=h,this.updateState=2,h.empty||(this.updatePlugins(h),this.inputState.update(h),this.updateAttrs(),c=this.docView.update(h));for(let t=0;t<l.length;t++)if(a[t]!=tO)try{let e=l[t];e.write&&e.write(a[t],this)}catch(t){logException(this.state,t)}if(c&&this.docView.updateSelection(!0),!h.viewportChanged&&0==this.measureRequests.length){if(this.viewState.editorHeight){if(this.viewState.scrollTarget){this.docView.scrollIntoView(this.viewState.scrollTarget),this.viewState.scrollTarget=null,n=-1;continue}{let t=(s<0?this.viewState.heightMap.height:this.viewState.lineBlockAt(s).top)-n;if(t>1||t<-1){o+=t,i.scrollTop=o/this.scaleY,n=-1;continue}}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let t of this.state.facet(V))t(e)}get themeClasses(){return tS+" "+(this.state.facet(ty)?tx:tM)+" "+this.state.facet(tb)}updateAttrs(){let t=attrsFromFacet(this,F,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",translate:"no",contenteditable:this.state.facet(H)?"true":"false",class:"cm-content",style:`${x.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),attrsFromFacet(this,I,e);let i=this.observer.ignore(()=>{let i=updateAttrs(this.contentDOM,this.contentAttrs,e),o=updateAttrs(this.dom,this.editorAttrs,t);return i||o});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let t of i.effects)t.is(EditorView.announce)&&(e&&(this.announceDOM.textContent=""),e=!1,this.announceDOM.appendChild(document.createElement("div")).textContent=t.value)}mountStyles(){this.styleModules=this.state.facet(j);let t=this.state.facet(EditorView.cspNonce);a.V.mount(this.root,this.styleModules.concat(tk).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(2==this.updateState)throw Error("Reading the editor layout isn't allowed during an update");0==this.updateState&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t&&!(this.measureRequests.indexOf(t)>-1)){if(null!=t.key){for(let e=0;e<this.measureRequests.length;e++)if(this.measureRequests[e].key===t.key){this.measureRequests[e]=t;return}}this.measureRequests.push(t)}}plugin(t){let e=this.pluginMap.get(t);return(void 0===e||e&&e.spec!=t)&&this.pluginMap.set(t,e=this.plugins.find(e=>e.spec==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return skipAtoms(this,t,moveByChar(this,t,e,i))}moveByGroup(t,e){return skipAtoms(this,t,moveByChar(this,t,e,e=>byGroup(this,t.head,e)))}moveToLineBoundary(t,e,i=!0){return moveToLineBoundary(this,t,e,i)}moveVertically(t,e,i){return skipAtoms(this,t,moveVertically(this,t,e,i))}domAtPos(t){return this.docView.domAtPos(t)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){return this.readMeasured(),posAtCoords(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let o=this.state.doc.lineAt(t),s=this.bidiSpans(o);return flattenRect(i,s[BidiSpan.find(s,t-o.from,-1,e)].dir==$.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(B)||t<this.viewport.from||t>this.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>tD)return trivialOrder(t.length);let e=this.textDirectionAt(t.from),i;for(let o of this.bidiCache)if(o.from==t.from&&o.dir==e&&(o.fresh||isolatesEq(o.isolates,i=getIsolatedRanges(this,t.from,t.to))))return o.order;i||(i=getIsolatedRanges(this,t.from,t.to));let o=computeOrder(t.text,e,i);return this.bidiCache.push(new CachedOrder(t.from,t.to,e,i,!0,o)),o}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||x.safari&&(null===(t=this.inputState)||void 0===t?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{focusPreventScroll(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((9==t.nodeType?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){return L.of(new ScrollTarget("number"==typeof t?l.jT.cursor(t):t,e.y,e.x,e.yMargin,e.xMargin))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return L.of(new ScrollTarget(l.jT.cursor(i.from),"start","start",i.top-t,e,!0))}static domEventHandlers(t){return ViewPlugin.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return ViewPlugin.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=a.V.newName(),o=[tb.of(i),j.of(buildTheme(`.${i}`,t))];return e&&e.dark&&o.push(ty.of(!0)),o}static baseTheme(t){return l.Wl.lowest(j.of(buildTheme("."+tS,t,tC)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),o=i&&ContentView.get(i)||ContentView.get(t);return(null===(e=null==o?void 0:o.rootView)||void 0===e?void 0:e.view)||null}};EditorView.styleModule=j,EditorView.inputHandler=R,EditorView.focusChangeEffect=E,EditorView.perLineTextDirection=B,EditorView.exceptionSink=O,EditorView.updateListener=V,EditorView.editable=H,EditorView.mouseSelectionStyle=D,EditorView.dragMovesSelection=A,EditorView.clickAddsSelectionRange=T,EditorView.decorations=z,EditorView.atomicRanges=G,EditorView.bidiIsolatedRanges=q,EditorView.scrollMargins=K,EditorView.darkTheme=ty,EditorView.cspNonce=l.r$.define({combine:t=>t.length?t[0]:""}),EditorView.contentAttributes=I,EditorView.editorAttributes=F,EditorView.lineWrapping=EditorView.contentAttributes.of({class:"cm-lineWrapping"}),EditorView.announce=l.Py.define();let tD=4096,tO={};let CachedOrder=class CachedOrder{constructor(t,e,i,o,s,n){this.from=t,this.to=e,this.dir=i,this.isolates=o,this.fresh=s,this.order=n}static update(t,e){if(e.empty&&!t.some(t=>t.fresh))return t;let i=[],o=t.length?t[t.length-1].dir:$.LTR;for(let s=Math.max(0,t.length-10);s<t.length;s++){let n=t[s];n.dir!=o||e.touchesRange(n.from,n.to)||i.push(new CachedOrder(e.mapPos(n.from,1),e.mapPos(n.to,-1),n.dir,n.isolates,!1,n.order))}return i}};function attrsFromFacet(t,e,i){for(let o=t.state.facet(e),s=o.length-1;s>=0;s--){let e=o[s],n="function"==typeof e?e(t):e;n&&combineAttrs(n,i)}return i}let tV=x.mac?"mac":x.windows?"win":x.linux?"linux":"key";function normalizeKeyName(t,e){let i,o,s,n;let r=t.split(/-(?!$)/),l=r[r.length-1];"Space"==l&&(l=" ");for(let t=0;t<r.length-1;++t){let l=r[t];if(/^(cmd|meta|m)$/i.test(l))n=!0;else if(/^a(lt)?$/i.test(l))i=!0;else if(/^(c|ctrl|control)$/i.test(l))o=!0;else if(/^s(hift)?$/i.test(l))s=!0;else if(/^mod$/i.test(l))"mac"==e?n=!0:o=!0;else throw Error("Unrecognized modifier name: "+l)}return i&&(l="Alt-"+l),o&&(l="Ctrl-"+l),n&&(l="Meta-"+l),s&&(l="Shift-"+l),l}function modifiers(t,e,i){return e.altKey&&(t="Alt-"+t),e.ctrlKey&&(t="Ctrl-"+t),e.metaKey&&(t="Meta-"+t),!1!==i&&e.shiftKey&&(t="Shift-"+t),t}let tR=l.Wl.default(EditorView.domEventHandlers({keydown:(t,e)=>runHandlers(getKeymap(e.state),t,e,"editor")})),tE=l.r$.define({enables:tR}),tB=new WeakMap;function getKeymap(t){let e=t.facet(tE),i=tB.get(e);return i||tB.set(e,i=buildKeymap(e.reduce((t,e)=>t.concat(e),[]))),i}function runScopeHandlers(t,e,i){return runHandlers(getKeymap(t.state),e,t,i)}let tP=null;function buildKeymap(t,e=tV){let i=Object.create(null),o=Object.create(null),checkPrefix=(t,e)=>{let i=o[t];if(null==i)o[t]=e;else if(i!=e)throw Error("Key binding "+t+" is used both as a regular binding and as a multi-stroke prefix")},add=(t,o,s,n,r)=>{var l,a;let h=i[t]||(i[t]=Object.create(null)),c=o.split(/ (?!$)/).map(t=>normalizeKeyName(t,e));for(let e=1;e<c.length;e++){let i=c.slice(0,e).join(" ");checkPrefix(i,!0),h[i]||(h[i]={preventDefault:!0,stopPropagation:!1,run:[e=>{let o=tP={view:e,prefix:i,scope:t};return setTimeout(()=>{tP==o&&(tP=null)},4e3),!0}]})}let d=c.join(" ");checkPrefix(d,!1);let u=h[d]||(h[d]={preventDefault:!1,stopPropagation:!1,run:(null===(a=null===(l=h._any)||void 0===l?void 0:l.run)||void 0===a?void 0:a.slice())||[]});s&&u.run.push(s),n&&(u.preventDefault=!0),r&&(u.stopPropagation=!0)};for(let o of t){let t=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let e of t){let t=i[e]||(i[e]=Object.create(null));for(let e in t._any||(t._any={preventDefault:!1,stopPropagation:!1,run:[]}),t)t[e].run.push(o.any)}let s=o[e]||o.key;if(s)for(let e of t)add(e,s,o.run,o.preventDefault,o.stopPropagation),o.shift&&add(e,"Shift-"+s,o.shift,o.preventDefault,o.stopPropagation)}return i}function runHandlers(t,e,i,o){let s=(0,h.YG)(e),n=(0,l.gm)(s,0),r=(0,l.nZ)(n)==s.length&&" "!=s,a="",c=!1,d=!1,u=!1;tP&&tP.view==i&&tP.scope==o&&(a=tP.prefix+" ",0>tn.indexOf(e.keyCode)&&(d=!0,tP=null));let f=new Set,runFor=t=>{if(t){for(let o of t.run)if(!f.has(o)&&(f.add(o),o(i,e)))return t.stopPropagation&&(u=!0),!0;t.preventDefault&&(t.stopPropagation&&(u=!0),d=!0)}return!1},p=t[o],g,m;return p&&(runFor(p[a+modifiers(s,e,!r)])?c=!0:r&&(e.altKey||e.metaKey||e.ctrlKey)&&!(x.windows&&e.ctrlKey&&e.altKey)&&(g=h.ue[e.keyCode])&&g!=s?runFor(p[a+modifiers(g,e,!0)])?c=!0:e.shiftKey&&(m=h.uY[e.keyCode])!=s&&m!=g&&runFor(p[a+modifiers(m,e,!1)])&&(c=!0):r&&e.shiftKey&&runFor(p[a+modifiers(s,e,!0)])&&(c=!0),!c&&runFor(p._any)&&(c=!0)),d&&(c=!0),c&&u&&e.stopPropagation(),c}let RectangleMarker=class RectangleMarker{constructor(t,e,i,o,s){this.className=t,this.left=e,this.top=i,this.width=o,this.height=s}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className==this.className&&(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",null!=this.width&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(!i.empty)return rectanglesForRange(t,e,i);{let o=t.coordsAtPos(i.head,i.assoc||1);if(!o)return[];let s=getBase(t);return[new RectangleMarker(e,o.left-s.left,o.top-s.top,null,o.bottom-o.top)]}}};function getBase(t){let e=t.scrollDOM.getBoundingClientRect();return{left:(t.textDirection==$.LTR?e.left:e.right-t.scrollDOM.clientWidth*t.scaleX)-t.scrollDOM.scrollLeft*t.scaleX,top:e.top-t.scrollDOM.scrollTop*t.scaleY}}function wrappedLine(t,e,i){let o=l.jT.cursor(e);return{from:Math.max(i.from,t.moveToLineBoundary(o,!1,!0).from),to:Math.min(i.to,t.moveToLineBoundary(o,!0,!0).from),type:k.Text}}function rectanglesForRange(t,e,i){if(i.to<=t.viewport.from||i.from>=t.viewport.to)return[];let o=Math.max(i.from,t.viewport.from),s=Math.min(i.to,t.viewport.to),n=t.textDirection==$.LTR,r=t.contentDOM,l=r.getBoundingClientRect(),a=getBase(t),h=r.querySelector(".cm-line"),c=h&&window.getComputedStyle(h),d=l.left+(c?parseInt(c.paddingLeft)+Math.min(0,parseInt(c.textIndent)):0),u=l.right-(c?parseInt(c.paddingRight):0),f=blockAt(t,o),p=blockAt(t,s),g=f.type==k.Text?f:null,m=p.type==k.Text?p:null;if(g&&(t.lineWrapping||f.widgetLineBreaks)&&(g=wrappedLine(t,o,g)),m&&(t.lineWrapping||p.widgetLineBreaks)&&(m=wrappedLine(t,s,m)),g&&m&&g.from==m.from)return pieces(drawForLine(i.from,i.to,g));{let e=g?drawForLine(i.from,null,g):drawForWidget(f,!1),o=m?drawForLine(null,i.to,m):drawForWidget(p,!0),s=[];return(g||f).to<(m||p).from-(g&&m?1:0)||f.widgetLineBreaks>1&&e.bottom+t.defaultLineHeight/2<o.top?s.push(piece(d,e.bottom,u,o.top)):e.bottom<o.top&&t.elementAtHeight((e.bottom+o.top)/2).type==k.Text&&(e.bottom=o.top=(e.bottom+o.top)/2),pieces(e).concat(s).concat(pieces(o))}function piece(t,i,o,s){return new RectangleMarker(e,t-a.left,i-a.top-.01,o-t,s-i+.01)}function pieces({top:t,bottom:e,horizontal:i}){let o=[];for(let s=0;s<i.length;s+=2)o.push(piece(i[s],t,i[s+1],e));return o}function drawForLine(e,i,o){let s=1e9,r=-1e9,l=[];function addSpan(e,i,a,h,c){let f=t.coordsAtPos(e,e==o.to?-2:2),p=t.coordsAtPos(a,a==o.from?2:-2);f&&p&&(s=Math.min(f.top,p.top,s),r=Math.max(f.bottom,p.bottom,r),c==$.LTR?l.push(n&&i?d:f.left,n&&h?u:p.right):l.push(!n&&h?d:p.left,!n&&i?u:f.right))}let a=null!=e?e:o.from,h=null!=i?i:o.to;for(let o of t.visibleRanges)if(o.to>a&&o.from<h)for(let s=Math.max(o.from,a),n=Math.min(o.to,h);;){let o=t.state.doc.lineAt(s);for(let r of t.bidiSpans(o)){let t=r.from+o.from,l=r.to+o.from;if(t>=n)break;l>s&&addSpan(Math.max(t,s),null==e&&t<=a,Math.min(l,n),null==i&&l>=h,r.dir)}if((s=o.to+1)>=n)break}return 0==l.length&&addSpan(a,null==e,h,null==i,t.textDirection),{top:s,bottom:r,horizontal:l}}function drawForWidget(t,e){let i=l.top+(e?t.top:t.bottom);return{top:i,bottom:i,horizontal:[]}}}function sameMarker(t,e){return t.constructor==e.constructor&&t.eq(e)}let LayerView=class LayerView{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(tL)!=t.state.facet(tL)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}setOrder(t){let e=0,i=t.facet(tL);for(;e<i.length&&i[e]!=this.layer;)e++;this.dom.style.zIndex=String((this.layer.above?150:-1)-e)}measure(){return this.layer.markers(this.view)}scale(){let{scaleX:t,scaleY:e}=this.view;(t!=this.scaleX||e!=this.scaleY)&&(this.scaleX=t,this.scaleY=e,this.dom.style.transform=`scale(${1/t}, ${1/e})`)}draw(t){if(t.length!=this.drawn.length||t.some((t,e)=>!sameMarker(t,this.drawn[e]))){let e=this.dom.firstChild,i=0;for(let o of t)o.update&&e&&o.constructor&&this.drawn[i].constructor&&o.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(o.draw(),e);for(;e;){let t=e.nextSibling;e.remove(),e=t}this.drawn=t}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}};let tL=l.r$.define();function layer(t){return[ViewPlugin.define(e=>new LayerView(e,t)),tL.of(t)]}let tH=!x.ios,tN=l.r$.define({combine:t=>(0,l.BO)(t,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})});function drawSelection(t={}){return[tN.of(t),tW,tF,tz,P.of(!0)]}function configChanged(t){return t.startState.facet(tN)!=t.state.facet(tN)}let tW=layer({above:!0,markers(t){let{state:e}=t,i=e.facet(tN),o=[];for(let s of e.selection.ranges){let n=s==e.selection.main;if(s.empty?!n||tH:i.drawRangeCursor){let e=n?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",i=s.empty?s:l.jT.cursor(s.head,s.head>s.anchor?-1:1);for(let s of RectangleMarker.forRange(t,e,i))o.push(s)}}return o},update(t,e){t.transactions.some(t=>t.selection)&&(e.style.animationName="cm-blink"==e.style.animationName?"cm-blink2":"cm-blink");let i=configChanged(t);return i&&setBlinkRate(t.state,e),t.docChanged||t.selectionSet||i},mount(t,e){setBlinkRate(e.state,t)},class:"cm-cursorLayer"});function setBlinkRate(t,e){e.style.animationDuration=t.facet(tN).cursorBlinkRate+"ms"}let tF=layer({above:!1,markers:t=>t.state.selection.ranges.map(e=>e.empty?[]:RectangleMarker.forRange(t,"cm-selectionBackground",e)).reduce((t,e)=>t.concat(e)),update:(t,e)=>t.docChanged||t.selectionSet||t.viewportChanged||configChanged(t),class:"cm-selectionLayer"}),tI={".cm-line":{"& ::selection":{backgroundColor:"transparent !important"},"&::selection":{backgroundColor:"transparent !important"}}};tH&&(tI[".cm-line"].caretColor="transparent !important",tI[".cm-content"]={caretColor:"transparent !important"});let tz=l.Wl.highest(EditorView.theme(tI)),tG=l.Py.define({map:(t,e)=>null==t?null:e.mapPos(t)}),tq=l.QQ.define({create:()=>null,update:(t,e)=>(null!=t&&(t=e.changes.mapPos(t)),e.effects.reduce((t,e)=>e.is(tG)?e.value:t,t))}),tK=ViewPlugin.fromClass(class{constructor(t){this.view=t,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(t){var e;let i=t.state.field(tq);null==i?null!=this.cursor&&(null===(e=this.cursor)||void 0===e||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(t.startState.field(tq)!=i||t.docChanged||t.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:t}=this,e=t.state.field(tq),i=null!=e&&t.coordsAtPos(e);if(!i)return null;let o=t.scrollDOM.getBoundingClientRect();return{left:i.left-o.left+t.scrollDOM.scrollLeft*t.scaleX,top:i.top-o.top+t.scrollDOM.scrollTop*t.scaleY,height:i.bottom-i.top}}drawCursor(t){if(this.cursor){let{scaleX:e,scaleY:i}=this.view;t?(this.cursor.style.left=t.left/e+"px",this.cursor.style.top=t.top/i+"px",this.cursor.style.height=t.height/i+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(t){this.view.state.field(tq)!=t&&this.view.dispatch({effects:tG.of(t)})}},{eventObservers:{dragover(t){this.setDropPos(this.view.posAtCoords({x:t.clientX,y:t.clientY}))},dragleave(t){t.target!=this.view.contentDOM&&this.view.contentDOM.contains(t.relatedTarget)||this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function dropCursor(){return[tq,tK]}function iterMatches(t,e,i,o,s){e.lastIndex=0;for(let n=t.iterRange(i,o),r=i,l;!n.next().done;r+=n.value.length)if(!n.lineBreak)for(;l=e.exec(n.value);)s(r+l.index,l)}function matchRanges(t,e){let i=t.visibleRanges;if(1==i.length&&i[0].from==t.viewport.from&&i[0].to==t.viewport.to)return i;let o=[];for(let{from:s,to:n}of i)s=Math.max(t.state.doc.lineAt(s).from,s-e),n=Math.min(t.state.doc.lineAt(n).to,n+e),o.length&&o[o.length-1].to>=s?o[o.length-1].to=n:o.push({from:s,to:n});return o}let MatchDecorator=class MatchDecorator{constructor(t){let{regexp:e,decoration:i,decorate:o,boundary:s,maxLength:n=1e3}=t;if(!e.global)throw RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=e,o)this.addMatch=(t,e,i,s)=>o(s,i,i+t[0].length,t,e);else if("function"==typeof i)this.addMatch=(t,e,o,s)=>{let n=i(t,e,o);n&&s(o,o+t[0].length,n)};else if(i)this.addMatch=(t,e,o,s)=>s(o,o+t[0].length,i);else throw RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=s,this.maxLength=n}createDeco(t){let e=new l.f_,i=e.add.bind(e);for(let{from:e,to:o}of matchRanges(t,this.maxLength))iterMatches(t.state.doc,this.regexp,e,o,(e,o)=>this.addMatch(o,t,e,i));return e.finish()}updateDeco(t,e){let i=1e9,o=-1;return(t.docChanged&&t.changes.iterChanges((e,s,n,r)=>{r>t.view.viewport.from&&n<t.view.viewport.to&&(i=Math.min(n,i),o=Math.max(r,o))}),t.viewportChanged||o-i>1e3)?this.createDeco(t.view):o>-1?this.updateRange(t.view,e.map(t.changes),i,o):e}updateRange(t,e,i,o){for(let s of t.visibleRanges){let n=Math.max(s.from,i),r=Math.min(s.to,o);if(r>n){let i=t.state.doc.lineAt(n),o=i.to<r?t.state.doc.lineAt(r):i,l=Math.max(s.from,i.from),a=Math.min(s.to,o.to);if(this.boundary){for(;n>i.from;n--)if(this.boundary.test(i.text[n-1-i.from])){l=n;break}for(;r<o.to;r++)if(this.boundary.test(o.text[r-o.from])){a=r;break}}let h=[],c,add=(t,e,i)=>h.push(i.range(t,e));if(i==o)for(this.regexp.lastIndex=l-i.from;(c=this.regexp.exec(i.text))&&c.index<a-i.from;)this.addMatch(c,t,c.index+i.from,add);else iterMatches(t.state.doc,this.regexp,l,a,(e,i)=>this.addMatch(i,t,e,add));e=e.update({filterFrom:l,filterTo:a,filter:(t,e)=>t<l||e>a,add:h})}}return e}};let tj=null!=/x/.unicode?"gu":"g",t$=RegExp("[\x00-\b\n-\x1f\x7f-\x9f\xad؜\u2028\u2029\uFEFF-]",tj),tX={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"},tY=null;function supportsTabSize(){var t;if(null==tY&&"undefined"!=typeof document&&document.body){let e=document.body.style;tY=(null!==(t=e.tabSize)&&void 0!==t?t:e.MozTabSize)!=null}return tY||!1}let t_=l.r$.define({combine(t){let e=(0,l.BO)(t,{render:null,specialChars:t$,addSpecialChars:null});return(e.replaceTabs=!supportsTabSize())&&(e.specialChars=RegExp(" |"+e.specialChars.source,tj)),e.addSpecialChars&&(e.specialChars=RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,tj)),e}});function highlightSpecialChars(t={}){return[t_.of(t),specialCharPlugin()]}let tU=null;function specialCharPlugin(){return tU||(tU=ViewPlugin.fromClass(class{constructor(t){this.view=t,this.decorations=Decoration.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(t.state.facet(t_)),this.decorations=this.decorator.createDeco(t)}makeDecorator(t){return new MatchDecorator({regexp:t.specialChars,decoration:(e,i,o)=>{let{doc:s}=i.state,n=(0,l.gm)(e[0],0);if(9==n){let t=s.lineAt(o),e=i.state.tabSize,n=(0,l.IS)(t.text,e,o-t.from);return Decoration.replace({widget:new TabWidget((e-n%e)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[n]||(this.decorationCache[n]=Decoration.replace({widget:new SpecialCharWidget(t,n)}))},boundary:t.replaceTabs?void 0:/[^]/})}update(t){let e=t.state.facet(t_);t.startState.facet(t_)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(t.view)):this.decorations=this.decorator.updateDeco(t,this.decorations)}},{decorations:t=>t.decorations}))}function placeholder$1(t){return t>=32?"":10==t?"":String.fromCharCode(9216+t)}let SpecialCharWidget=class SpecialCharWidget extends WidgetType{constructor(t,e){super(),this.options=t,this.code=e}eq(t){return t.code==this.code}toDOM(t){let e=placeholder$1(this.code),i=t.state.phrase("Control character")+" "+(tX[this.code]||"0x"+this.code.toString(16)),o=this.options.render&&this.options.render(this.code,i,e);if(o)return o;let s=document.createElement("span");return s.textContent=e,s.title=i,s.setAttribute("aria-label",i),s.className="cm-specialChar",s}ignoreEvent(){return!1}};let TabWidget=class TabWidget extends WidgetType{constructor(t){super(),this.width=t}eq(t){return t.width==this.width}toDOM(){let t=document.createElement("span");return t.textContent=" ",t.className="cm-tab",t.style.width=this.width+"px",t}ignoreEvent(){return!1}};function highlightActiveLine(){return tZ}let tQ=Decoration.line({class:"cm-activeLine"}),tZ=ViewPlugin.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.docChanged||t.selectionSet)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=-1,i=[];for(let o of t.state.selection.ranges){let s=t.lineBlockAt(o.head);s.from>e&&(i.push(tQ.range(s.from)),e=s.from)}return Decoration.set(i)}},{decorations:t=>t.decorations});let Placeholder=class Placeholder extends WidgetType{constructor(t){super(),this.content=t}toDOM(){let t=document.createElement("span");return t.className="cm-placeholder",t.style.pointerEvents="none",t.appendChild("string"==typeof this.content?document.createTextNode(this.content):this.content),"string"==typeof this.content?t.setAttribute("aria-label","placeholder "+this.content):t.setAttribute("aria-hidden","true"),t}coordsAt(t){let e=t.firstChild?clientRectsFor(t.firstChild):[];if(!e.length)return null;let i=window.getComputedStyle(t.parentNode),o=flattenRect(e[0],"rtl"!=i.direction),s=parseInt(i.lineHeight);return o.bottom-o.top>1.5*s?{left:o.left,right:o.right,top:o.top,bottom:o.top+s}:o}ignoreEvent(){return!1}};function placeholder(t){return ViewPlugin.fromClass(class{constructor(e){this.view=e,this.placeholder=t?Decoration.set([Decoration.widget({widget:new Placeholder(t),side:1}).range(0)]):Decoration.none}get decorations(){return this.view.state.doc.length?Decoration.none:this.placeholder}},{decorations:t=>t.decorations})}function rectangleFor(t,e,i){let o=Math.min(e.line,i.line),s=Math.max(e.line,i.line),n=[];if(e.off>2e3||i.off>2e3||e.col<0||i.col<0){let r=Math.min(e.off,i.off),a=Math.max(e.off,i.off);for(let e=o;e<=s;e++){let i=t.doc.line(e);i.length<=a&&n.push(l.jT.range(i.from+r,i.to+a))}}else{let r=Math.min(e.col,i.col),a=Math.max(e.col,i.col);for(let e=o;e<=s;e++){let i=t.doc.line(e),o=(0,l.Gz)(i.text,r,t.tabSize,!0);if(o<0)n.push(l.jT.cursor(i.to));else{let e=(0,l.Gz)(i.text,a,t.tabSize);n.push(l.jT.range(i.from+o,i.from+e))}}}return n}function absoluteColumn(t,e){let i=t.coordsAtPos(t.viewport.from);return i?Math.round(Math.abs((i.left-e)/t.defaultCharacterWidth)):-1}function getPos(t,e){let i=t.posAtCoords({x:e.clientX,y:e.clientY},!1),o=t.state.doc.lineAt(i),s=i-o.from,n=s>2e3?-1:s==o.length?absoluteColumn(t,e.clientX):(0,l.IS)(o.text,t.state.tabSize,i-o.from);return{line:o.number,col:n,off:s}}function rectangleSelectionStyle(t,e){let i=getPos(t,e),o=t.state.selection;return i?{update(t){if(t.docChanged){let e=t.changes.mapPos(t.startState.doc.line(i.line).from),s=t.state.doc.lineAt(e);i={line:s.number,col:i.col,off:Math.min(i.off,s.length)},o=o.map(t.changes)}},get(e,s,n){let r=getPos(t,e);if(!r)return o;let a=rectangleFor(t.state,i,r);return a.length?n?l.jT.create(a.concat(o.ranges)):l.jT.create(a):o}}:null}function rectangularSelection(t){let e=(null==t?void 0:t.eventFilter)||(t=>t.altKey&&0==t.button);return EditorView.mouseSelectionStyle.of((t,i)=>e(i)?rectangleSelectionStyle(t,i):null)}let tJ={Alt:[18,t=>!!t.altKey],Control:[17,t=>!!t.ctrlKey],Shift:[16,t=>!!t.shiftKey],Meta:[91,t=>!!t.metaKey]},t0={style:"cursor: crosshair"};function crosshairCursor(t={}){let[e,i]=tJ[t.key||"Alt"],o=ViewPlugin.fromClass(class{constructor(t){this.view=t,this.isDown=!1}set(t){this.isDown!=t&&(this.isDown=t,this.view.update([]))}},{eventObservers:{keydown(t){this.set(t.keyCode==e||i(t))},keyup(t){t.keyCode!=e&&i(t)||this.set(!1)},mousemove(t){this.set(i(t))}}});return[o,EditorView.contentAttributes.of(t=>{var e;return(null===(e=t.plugin(o))||void 0===e?void 0:e.isDown)?t0:null})]}let t1="-10000px";let TooltipViewManager=class TooltipViewManager{constructor(t,e,i){this.facet=e,this.createTooltipView=i,this.input=t.state.facet(e),this.tooltips=this.input.filter(t=>t),this.tooltipViews=this.tooltips.map(i)}update(t,e){var i;let o=t.state.facet(this.facet),s=o.filter(t=>t);if(o===this.input){for(let e of this.tooltipViews)e.update&&e.update(t);return!1}let n=[],r=e?[]:null;for(let i=0;i<s.length;i++){let o=s[i],l=-1;if(o){for(let t=0;t<this.tooltips.length;t++){let e=this.tooltips[t];e&&e.create==o.create&&(l=t)}if(l<0)n[i]=this.createTooltipView(o),r&&(r[i]=!!o.above);else{let o=n[i]=this.tooltipViews[l];r&&(r[i]=e[l]),o.update&&o.update(t)}}}for(let t of this.tooltipViews)0>n.indexOf(t)&&(t.dom.remove(),null===(i=t.destroy)||void 0===i||i.call(t));return e&&(r.forEach((t,i)=>e[i]=t),e.length=r.length),this.input=o,this.tooltips=s,this.tooltipViews=n,!0}};function windowSpace(t){let{win:e}=t;return{top:0,left:0,bottom:e.innerHeight,right:e.innerWidth}}let t2=l.r$.define({combine:t=>{var e,i,o;return{position:x.ios?"absolute":(null===(e=t.find(t=>t.position))||void 0===e?void 0:e.position)||"fixed",parent:(null===(i=t.find(t=>t.parent))||void 0===i?void 0:i.parent)||null,tooltipSpace:(null===(o=t.find(t=>t.tooltipSpace))||void 0===o?void 0:o.tooltipSpace)||windowSpace}}}),t8=new WeakMap,t3=ViewPlugin.fromClass(class{constructor(t){this.view=t,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=t.state.facet(t2);this.position=e.position,this.parent=e.parent,this.classes=t.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.manager=new TooltipViewManager(t,t4,t=>this.createTooltip(t)),this.intersectionObserver="function"==typeof IntersectionObserver?new IntersectionObserver(t=>{Date.now()>this.lastTransaction-50&&t.length>0&&t[t.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),t.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver)for(let t of(this.intersectionObserver.disconnect(),this.manager.tooltipViews))this.intersectionObserver.observe(t.dom)}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(t){t.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(t,this.above);e&&this.observeIntersection();let i=e||t.geometryChanged,o=t.state.facet(t2);if(o.position!=this.position&&!this.madeAbsolute){for(let t of(this.position=o.position,this.manager.tooltipViews))t.dom.style.position=this.position;i=!0}if(o.parent!=this.parent){for(let t of(this.parent&&this.container.remove(),this.parent=o.parent,this.createContainer(),this.manager.tooltipViews))this.container.appendChild(t.dom);i=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);i&&this.maybeMeasure()}createTooltip(t){let e=t.create(this.view);if(e.dom.classList.add("cm-tooltip"),t.arrow&&!e.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let t=document.createElement("div");t.className="cm-tooltip-arrow",e.dom.appendChild(t)}return e.dom.style.position=this.position,e.dom.style.top=t1,e.dom.style.left="0px",this.container.appendChild(e.dom),e.mount&&e.mount(this.view),e}destroy(){var t,e;for(let e of(this.view.win.removeEventListener("resize",this.measureSoon),this.manager.tooltipViews))e.dom.remove(),null===(t=e.destroy)||void 0===t||t.call(e);this.parent&&this.container.remove(),null===(e=this.intersectionObserver)||void 0===e||e.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let t=this.view.dom.getBoundingClientRect(),e=1,i=1,o=!1;if("fixed"==this.position&&this.manager.tooltipViews.length){let{dom:t}=this.manager.tooltipViews[0];if(x.gecko)o=t.offsetParent!=this.container.ownerDocument.body;else if(t.style.top==t1&&"0px"==t.style.left){let e=t.getBoundingClientRect();o=Math.abs(e.top+1e4)>1||Math.abs(e.left)>1}}if(o||"absolute"==this.position){if(this.parent){let t=this.parent.getBoundingClientRect();t.width&&t.height&&(e=t.width/this.parent.offsetWidth,i=t.height/this.parent.offsetHeight)}else({scaleX:e,scaleY:i}=this.view.viewState)}return{editor:t,parent:this.parent?this.container.getBoundingClientRect():t,pos:this.manager.tooltips.map((t,e)=>{let i=this.manager.tooltipViews[e];return i.getCoords?i.getCoords(t.pos):this.view.coordsAtPos(t.pos)}),size:this.manager.tooltipViews.map(({dom:t})=>t.getBoundingClientRect()),space:this.view.state.facet(t2).tooltipSpace(this.view),scaleX:e,scaleY:i,makeAbsolute:o}}writeMeasure(t){var e;if(t.makeAbsolute)for(let t of(this.madeAbsolute=!0,this.position="absolute",this.manager.tooltipViews))t.dom.style.position="absolute";let{editor:i,space:o,scaleX:s,scaleY:n}=t,r=[];for(let l=0;l<this.manager.tooltips.length;l++){let a=this.manager.tooltips[l],h=this.manager.tooltipViews[l],{dom:c}=h,d=t.pos[l],u=t.size[l];if(!d||d.bottom<=Math.max(i.top,o.top)||d.top>=Math.min(i.bottom,o.bottom)||d.right<Math.max(i.left,o.left)-.1||d.left>Math.min(i.right,o.right)+.1){c.style.top=t1;continue}let f=a.arrow?h.dom.querySelector(".cm-tooltip-arrow"):null,p=f?7:0,g=u.right-u.left,m=null!==(e=t8.get(h))&&void 0!==e?e:u.bottom-u.top,w=h.offset||t5,v=this.view.textDirection==$.LTR,b=u.width>o.right-o.left?v?o.left:o.right-u.width:v?Math.min(d.left-(f?14:0)+w.x,o.right-g):Math.max(o.left,d.left-g+(f?14:0)-w.x),y=this.above[l];!a.strictSide&&(y?d.top-(u.bottom-u.top)-w.y<o.top:d.bottom+(u.bottom-u.top)+w.y>o.bottom)&&y==o.bottom-d.bottom>d.top-o.top&&(y=this.above[l]=!y);let S=(y?d.top-o.top:o.bottom-d.bottom)-p;if(S<m&&!1!==h.resize){if(S<this.view.defaultLineHeight){c.style.top=t1;continue}t8.set(h,m),c.style.height=(m=S)/n+"px"}else c.style.height&&(c.style.height="");let M=y?d.top-m-p-w.y:d.bottom+p+w.y,x=b+g;if(!0!==h.overlap)for(let t of r)t.left<x&&t.right>b&&t.top<M+m&&t.bottom>M&&(M=y?t.top-m-2-p:t.bottom+p+2);if("absolute"==this.position?(c.style.top=(M-t.parent.top)/n+"px",c.style.left=(b-t.parent.left)/s+"px"):(c.style.top=M/n+"px",c.style.left=b/s+"px"),f){let t=d.left+(v?w.x:-w.x)-(b+14-7);f.style.left=t/s+"px"}!0!==h.overlap&&r.push({left:b,top:M,right:x,bottom:M+m}),c.classList.toggle("cm-tooltip-above",y),c.classList.toggle("cm-tooltip-below",!y),h.positioned&&h.positioned(t.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let t of this.manager.tooltipViews)t.dom.style.top=t1}},{eventObservers:{scroll(){this.maybeMeasure()}}}),t9=EditorView.baseTheme({".cm-tooltip":{zIndex:100,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),t5={x:0,y:0},t4=l.r$.define({enables:[t3,t9]}),t6=l.r$.define();let HoverTooltipHost=class HoverTooltipHost{static create(t){return new HoverTooltipHost(t)}constructor(t){this.view=t,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new TooltipViewManager(t,t6,t=>this.createHostedView(t))}createHostedView(t){let e=t.create(this.view);return e.dom.classList.add("cm-tooltip-section"),this.dom.appendChild(e.dom),this.mounted&&e.mount&&e.mount(this.view),e}mount(t){for(let e of this.manager.tooltipViews)e.mount&&e.mount(t);this.mounted=!0}positioned(t){for(let e of this.manager.tooltipViews)e.positioned&&e.positioned(t)}update(t){this.manager.update(t)}destroy(){var t;for(let e of this.manager.tooltipViews)null===(t=e.destroy)||void 0===t||t.call(e)}passProp(t){let e;for(let i of this.manager.tooltipViews){let o=i[t];if(void 0!==o){if(void 0===e)e=o;else if(e!==o)return}}return e}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}};let t7=t4.compute([t6],t=>{let e=t.facet(t6).filter(t=>t);return 0===e.length?null:{pos:Math.min(...e.map(t=>t.pos)),end:Math.max(...e.map(t=>{var e;return null!==(e=t.end)&&void 0!==e?e:t.pos})),create:HoverTooltipHost.create,above:e[0].above,arrow:e.some(t=>t.arrow)}});let HoverPlugin=class HoverPlugin{constructor(t,e,i,o,s){this.view=t,this.source=e,this.field=i,this.setHover=o,this.hoverTime=s,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:t.dom,time:0},this.checkHover=this.checkHover.bind(this),t.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),t.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active)return;let t=Date.now()-this.lastMove.time;t<this.hoverTime?this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime-t):this.startHover()}startHover(){clearTimeout(this.restartTimeout);let{view:t,lastMove:e}=this,i=t.docView.nearest(e.target);if(!i)return;let o,s=1;if(i instanceof WidgetView)o=i.posAtStart;else{if(null==(o=t.posAtCoords(e)))return;let i=t.coordsAtPos(o);if(!i||e.y<i.top||e.y>i.bottom||e.x<i.left-t.defaultCharacterWidth||e.x>i.right+t.defaultCharacterWidth)return;let n=t.bidiSpans(t.state.doc.lineAt(o)).find(t=>t.from<=o&&t.to>=o),r=n&&n.dir==$.RTL?-1:1;s=e.x<i.left?-r:r}let n=this.source(t,o,s);if(null==n?void 0:n.then){let e=this.pending={pos:o};n.then(i=>{this.pending==e&&(this.pending=null,i&&t.dispatch({effects:this.setHover.of(i)}))},e=>logException(t.state,e,"hover tooltip"))}else n&&t.dispatch({effects:this.setHover.of(n)})}get tooltip(){let t=this.view.plugin(t3),e=t?t.manager.tooltips.findIndex(t=>t.create==HoverTooltipHost.create):-1;return e>-1?t.manager.tooltipViews[e]:null}mousemove(t){var e;this.lastMove={x:t.clientX,y:t.clientY,target:t.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:i,tooltip:o}=this;if(i&&o&&!isInTooltip(o.dom,t)||this.pending){let{pos:o}=i||this.pending,s=null!==(e=null==i?void 0:i.end)&&void 0!==e?e:o;(o==s?this.view.posAtCoords(this.lastMove)==o:isOverRange(this.view,o,s,t.clientX,t.clientY))||(this.view.dispatch({effects:this.setHover.of(null)}),this.pending=null)}}mouseleave(t){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:e}=this;if(e){let{tooltip:e}=this;e&&e.dom.contains(t.relatedTarget)?this.watchTooltipLeave(e.dom):this.view.dispatch({effects:this.setHover.of(null)})}}watchTooltipLeave(t){let watch=e=>{t.removeEventListener("mouseleave",watch),this.active&&!this.view.dom.contains(e.relatedTarget)&&this.view.dispatch({effects:this.setHover.of(null)})};t.addEventListener("mouseleave",watch)}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}};function isInTooltip(t,e){let i=t.getBoundingClientRect();return e.clientX>=i.left-4&&e.clientX<=i.right+4&&e.clientY>=i.top-4&&e.clientY<=i.bottom+4}function isOverRange(t,e,i,o,s,n){let r=t.scrollDOM.getBoundingClientRect(),l=t.documentTop+t.documentPadding.top+t.contentHeight;if(r.left>o||r.right<o||r.top>s||Math.min(r.bottom,l)<s)return!1;let a=t.posAtCoords({x:o,y:s},!1);return a>=e&&a<=i}function hoverTooltip(t,e={}){let i=l.Py.define(),o=l.QQ.define({create:()=>null,update(t,o){if(t&&(e.hideOnChange&&(o.docChanged||o.selection)||e.hideOn&&e.hideOn(o,t)))return null;if(t&&o.docChanged){let e=o.changes.mapPos(t.pos,-1,l.gc.TrackDel);if(null==e)return null;let i=Object.assign(Object.create(null),t);i.pos=e,null!=t.end&&(i.end=o.changes.mapPos(t.end)),t=i}for(let e of o.effects)e.is(i)&&(t=e.value),e.is(et)&&(t=null);return t},provide:t=>t6.from(t)});return[o,ViewPlugin.define(s=>new HoverPlugin(s,t,o,i,e.hoverTime||300)),t7]}function getTooltip(t,e){let i=t.plugin(t3);if(!i)return null;let o=i.manager.tooltips.indexOf(e);return o<0?null:i.manager.tooltipViews[o]}let et=l.Py.define(),ee=l.r$.define({combine(t){let e,i;for(let o of t)e=e||o.topContainer,i=i||o.bottomContainer;return{topContainer:e,bottomContainer:i}}});function getPanel(t,e){let i=t.plugin(ei),o=i?i.specs.indexOf(e):-1;return o>-1?i.panels[o]:null}let ei=ViewPlugin.fromClass(class{constructor(t){this.input=t.state.facet(eo),this.specs=this.input.filter(t=>t),this.panels=this.specs.map(e=>e(t));let e=t.state.facet(ee);for(let i of(this.top=new PanelGroup(t,!0,e.topContainer),this.bottom=new PanelGroup(t,!1,e.bottomContainer),this.top.sync(this.panels.filter(t=>t.top)),this.bottom.sync(this.panels.filter(t=>!t.top)),this.panels))i.dom.classList.add("cm-panel"),i.mount&&i.mount()}update(t){let e=t.state.facet(ee);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new PanelGroup(t.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new PanelGroup(t.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let i=t.state.facet(eo);if(i!=this.input){let e=i.filter(t=>t),o=[],s=[],n=[],r=[];for(let i of e){let e=this.specs.indexOf(i),l;e<0?(l=i(t.view),r.push(l)):(l=this.panels[e]).update&&l.update(t),o.push(l),(l.top?s:n).push(l)}for(let t of(this.specs=e,this.panels=o,this.top.sync(s),this.bottom.sync(n),r))t.dom.classList.add("cm-panel"),t.mount&&t.mount()}else for(let e of this.panels)e.update&&e.update(t)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:t=>EditorView.scrollMargins.of(e=>{let i=e.plugin(t);return i&&{top:i.top.scrollMargin(),bottom:i.bottom.scrollMargin()}})});let PanelGroup=class PanelGroup{constructor(t,e,i){this.view=t,this.top=e,this.container=i,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(t){for(let e of this.panels)e.destroy&&0>t.indexOf(e)&&e.destroy();this.panels=t,this.syncDOM()}syncDOM(){if(0==this.panels.length){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let t=this.container||this.view.dom;t.insertBefore(this.dom,this.top?t.firstChild:null)}let t=this.dom.firstChild;for(let e of this.panels)if(e.dom.parentNode==this.dom){for(;t!=e.dom;)t=rm(t);t=t.nextSibling}else this.dom.insertBefore(e.dom,t);for(;t;)t=rm(t)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(this.container&&this.classes!=this.view.themeClasses){for(let t of this.classes.split(" "))t&&this.container.classList.remove(t);for(let t of(this.classes=this.view.themeClasses).split(" "))t&&this.container.classList.add(t)}}};function rm(t){let e=t.nextSibling;return t.remove(),e}let eo=l.r$.define({enables:ei});let GutterMarker=class GutterMarker extends l.uU{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}};GutterMarker.prototype.elementClass="",GutterMarker.prototype.toDOM=void 0,GutterMarker.prototype.mapMode=l.gc.TrackBefore,GutterMarker.prototype.startSide=GutterMarker.prototype.endSide=-1,GutterMarker.prototype.point=!0;let es=l.r$.define(),en={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>l.Xs.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{}},er=l.r$.define();function gutter(t){return[gutters(),er.of(Object.assign(Object.assign({},en),t))]}let el=l.r$.define({combine:t=>t.some(t=>t)});function gutters(t){let e=[ea];return t&&!1===t.fixed&&e.push(el.of(!0)),e}let ea=ViewPlugin.fromClass(class{constructor(t){for(let e of(this.view=t,this.prevViewport=t.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=t.state.facet(er).map(e=>new SingleGutterView(t,e)),this.gutters))this.dom.appendChild(e.dom);this.fixed=!t.state.facet(el),this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),t.scrollDOM.insertBefore(this.dom,t.contentDOM)}update(t){if(this.updateGutters(t)){let e=this.prevViewport,i=t.view.viewport,o=Math.min(e.to,i.to)-Math.max(e.from,i.from);this.syncGutters(o<(i.to-i.from)*.8)}t.geometryChanged&&(this.dom.style.minHeight=this.view.contentHeight+"px"),this.view.state.facet(el)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":""),this.prevViewport=t.view.viewport}syncGutters(t){let e=this.dom.nextSibling;t&&this.dom.remove();let i=l.Xs.iter(this.view.state.facet(es),this.view.viewport.from),o=[],s=this.gutters.map(t=>new UpdateContext(t,this.view.viewport,-this.view.documentPadding.top));for(let t of this.view.viewportLineBlocks)if(o.length&&(o=[]),Array.isArray(t.type)){let e=!0;for(let n of t.type)if(n.type==k.Text&&e){for(let t of(advanceCursor(i,o,n.from),s))t.line(this.view,n,o);e=!1}else if(n.widget)for(let t of s)t.widget(this.view,n)}else if(t.type==k.Text)for(let e of(advanceCursor(i,o,t.from),s))e.line(this.view,t,o);else if(t.widget)for(let e of s)e.widget(this.view,t);for(let t of s)t.finish();t&&this.view.scrollDOM.insertBefore(this.dom,e)}updateGutters(t){let e=t.startState.facet(er),i=t.state.facet(er),o=t.docChanged||t.heightChanged||t.viewportChanged||!l.Xs.eq(t.startState.facet(es),t.state.facet(es),t.view.viewport.from,t.view.viewport.to);if(e==i)for(let e of this.gutters)e.update(t)&&(o=!0);else{o=!0;let s=[];for(let o of i){let i=e.indexOf(o);i<0?s.push(new SingleGutterView(this.view,o)):(this.gutters[i].update(t),s.push(this.gutters[i]))}for(let t of this.gutters)t.dom.remove(),0>s.indexOf(t)&&t.destroy();for(let t of s)this.dom.appendChild(t.dom);this.gutters=s}return o}destroy(){for(let t of this.gutters)t.destroy();this.dom.remove()}},{provide:t=>EditorView.scrollMargins.of(e=>{let i=e.plugin(t);return i&&0!=i.gutters.length&&i.fixed?e.textDirection==$.LTR?{left:i.dom.offsetWidth*e.scaleX}:{right:i.dom.offsetWidth*e.scaleX}:null})});function asArray(t){return Array.isArray(t)?t:[t]}function advanceCursor(t,e,i){for(;t.value&&t.from<=i;)t.from==i&&e.push(t.value),t.next()}let UpdateContext=class UpdateContext{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=l.Xs.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:o}=this,s=(e.top-this.height)/t.scaleY,n=e.height/t.scaleY;if(this.i==o.elements.length){let e=new GutterElement(t,n,s,i);o.elements.push(e),o.dom.appendChild(e.dom)}else o.elements[this.i].update(t,n,s,i);this.height=e.bottom,this.i++}line(t,e,i){let o=[];advanceCursor(this.cursor,o,e.from),i.length&&(o=o.concat(i));let s=this.gutter.config.lineMarker(t,e,o);s&&o.unshift(s);let n=this.gutter;(0!=o.length||n.config.renderEmptyElements)&&this.addElement(t,e,o)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e);i&&this.addElement(t,e,[i])}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}};let SingleGutterView=class SingleGutterView{constructor(t,e){for(let i in this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:""),e.domEventHandlers)this.dom.addEventListener(i,o=>{let s=o.target,n;if(s!=this.dom&&this.dom.contains(s)){for(;s.parentNode!=this.dom;)s=s.parentNode;let t=s.getBoundingClientRect();n=(t.top+t.bottom)/2}else n=o.clientY;let r=t.lineBlockAtHeight(n-t.documentTop);e.domEventHandlers[i](t,r,o)&&o.preventDefault()});this.markers=asArray(e.markers(t)),e.initialSpacer&&(this.spacer=new GutterElement(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=asArray(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let e=this.config.updateSpacer(this.spacer.markers[0],t);e!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[e])}let i=t.view.viewport;return!l.Xs.eq(this.markers,e,i.from,i.to)||!!this.config.lineMarkerChange&&this.config.lineMarkerChange(t)}destroy(){for(let t of this.elements)t.destroy()}};let GutterElement=class GutterElement{constructor(t,e,i,o){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,o)}update(t,e,i,o){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),sameMarkers(this.markers,o)||this.setMarkers(t,o)}setMarkers(t,e){let i="cm-gutterElement",o=this.dom.firstChild;for(let s=0,n=0;;){let r=n,l=s<e.length?e[s++]:null,a=!1;if(l){let t=l.elementClass;t&&(i+=" "+t);for(let t=n;t<this.markers.length;t++)if(this.markers[t].compare(l)){r=t,a=!0;break}}else r=this.markers.length;for(;n<r;){let t=this.markers[n++];if(t.toDOM){t.destroy(o);let e=o.nextSibling;o.remove(),o=e}}if(!l)break;l.toDOM&&(a?o=o.nextSibling:this.dom.insertBefore(l.toDOM(t),o)),a&&n++}this.dom.className=i,this.markers=e}destroy(){this.setMarkers(null,[])}};function sameMarkers(t,e){if(t.length!=e.length)return!1;for(let i=0;i<t.length;i++)if(!t[i].compare(e[i]))return!1;return!0}let eh=l.r$.define(),ec=l.r$.define({combine:t=>(0,l.BO)(t,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(t,e){let i=Object.assign({},t);for(let t in e){let o=i[t],s=e[t];i[t]=o?(t,e,i)=>o(t,e,i)||s(t,e,i):s}return i}})});let NumberMarker=class NumberMarker extends GutterMarker{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}};function formatNumber(t,e){return t.state.facet(ec).formatNumber(e,t.state)}let ed=er.compute([ec],t=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers:t=>t.state.facet(eh),lineMarker:(t,e,i)=>i.some(t=>t.toDOM)?null:new NumberMarker(formatNumber(t,t.state.doc.lineAt(e.from).number)),widgetMarker:()=>null,lineMarkerChange:t=>t.startState.facet(ec)!=t.state.facet(ec),initialSpacer:t=>new NumberMarker(formatNumber(t,maxLineNumber(t.state.doc.lines))),updateSpacer(t,e){let i=formatNumber(e.view,maxLineNumber(e.view.state.doc.lines));return i==t.number?t:new NumberMarker(i)},domEventHandlers:t.facet(ec).domEventHandlers}));function lineNumbers(t={}){return[ec.of(t),gutters(),ed]}function maxLineNumber(t){let e=9;for(;e<t;)e=10*e+9;return e}let eu=new class extends GutterMarker{constructor(){super(...arguments),this.elementClass="cm-activeLineGutter"}},ef=es.compute(["selection"],t=>{let e=[],i=-1;for(let o of t.selection.ranges){let s=t.doc.lineAt(o.head).from;s>i&&(i=s,e.push(eu.range(s)))}return l.Xs.of(e)});function highlightActiveLineGutter(){return ef}}}]);